drm/edid: add config option of edid function
rv1126 does not support display interface which need to read and parse edid, such as hdmi and dp, so add config option to reduce memory usage. ./ksize.sh drivers/gpu/drm/ before ksize: 380303 Bytes after kszie: 325509 Bytes save about: 54794 Bytes Signed-off-by: Algea Cao <algea.cao@rock-chips.com> Change-Id: I0c3813711cfdb4a38ec66136569ca826c94c6c58
This commit is contained in:
@@ -31,6 +31,13 @@ config DRM_MIPI_DBI
|
||||
tristate
|
||||
depends on DRM
|
||||
|
||||
config DRM_EDID
|
||||
bool "EDID function for DRM"
|
||||
depends on DRM
|
||||
default y if !CPU_RV1106 && !CPU_RV1126
|
||||
help
|
||||
DRM EDID read and parse function.
|
||||
|
||||
config DRM_IGNORE_IOTCL_PERMIT
|
||||
bool "Ignore drm ioctl permission"
|
||||
depends on DRM && ANDROID && NO_GKI
|
||||
|
||||
@@ -7,7 +7,7 @@ drm-y := drm_auth.o drm_cache.o \
|
||||
drm_file.o drm_gem.o drm_ioctl.o drm_irq.o \
|
||||
drm_memory.o drm_drv.o \
|
||||
drm_sysfs.o drm_hashtab.o drm_mm.o \
|
||||
drm_crtc.o drm_fourcc.o drm_modes.o drm_edid.o \
|
||||
drm_crtc.o drm_fourcc.o drm_modes.o \
|
||||
drm_encoder_slave.o \
|
||||
drm_trace_points.o drm_prime.o \
|
||||
drm_rect.o drm_vma_manager.o drm_flip_work.o \
|
||||
@@ -20,6 +20,7 @@ drm-y := drm_auth.o drm_cache.o \
|
||||
drm_client_modeset.o drm_atomic_uapi.o drm_hdcp.o \
|
||||
drm_managed.o drm_vblank_work.o
|
||||
|
||||
drm-$(CONFIG_DRM_EDID) += drm_edid.o
|
||||
drm-$(CONFIG_DRM_LEGACY) += drm_legacy_misc.o drm_bufs.o drm_context.o drm_dma.o drm_scatter.o drm_lock.o
|
||||
drm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o
|
||||
drm-$(CONFIG_DRM_VM) += drm_vm.o
|
||||
|
||||
@@ -276,7 +276,29 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
|
||||
void *data, struct drm_file *file_priv);
|
||||
|
||||
/* drm_edid.c */
|
||||
#ifdef CONFIG_DRM_EDID
|
||||
void drm_mode_fixup_1366x768(struct drm_display_mode *mode);
|
||||
void drm_reset_display_info(struct drm_connector *connector);
|
||||
u32 drm_add_display_info(struct drm_connector *connector, const struct edid *edid);
|
||||
void drm_update_tile_info(struct drm_connector *connector, const struct edid *edid);
|
||||
#else
|
||||
static inline void drm_mode_fixup_1366x768(struct drm_display_mode *mode)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void drm_reset_display_info(struct drm_connector *connector)
|
||||
{
|
||||
}
|
||||
|
||||
static inline u32 drm_add_display_info(struct drm_connector *connector,
|
||||
const struct edid *edid)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u32 drm_update_tile_info(struct drm_connector *connector,
|
||||
const struct edid *edid)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
+79
-17
@@ -391,8 +391,6 @@ drm_load_edid_firmware(struct drm_connector *connector)
|
||||
}
|
||||
#endif
|
||||
|
||||
bool drm_edid_are_equal(const struct edid *edid1, const struct edid *edid2);
|
||||
|
||||
int
|
||||
drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame,
|
||||
const struct drm_connector *connector,
|
||||
@@ -515,35 +513,99 @@ struct edid *drm_do_get_edid(struct drm_connector *connector,
|
||||
int (*get_edid_block)(void *data, u8 *buf, unsigned int block,
|
||||
size_t len),
|
||||
void *data);
|
||||
struct edid *drm_get_edid(struct drm_connector *connector,
|
||||
struct i2c_adapter *adapter);
|
||||
struct edid *drm_get_edid_switcheroo(struct drm_connector *connector,
|
||||
struct i2c_adapter *adapter);
|
||||
struct edid *drm_edid_duplicate(const struct edid *edid);
|
||||
int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid);
|
||||
int drm_add_override_edid_modes(struct drm_connector *connector);
|
||||
|
||||
u8 drm_match_cea_mode(const struct drm_display_mode *to_match);
|
||||
bool drm_detect_hdmi_monitor(struct edid *edid);
|
||||
bool drm_detect_monitor_audio(struct edid *edid);
|
||||
enum hdmi_quantization_range
|
||||
drm_default_rgb_quant_range(const struct drm_display_mode *mode);
|
||||
int drm_add_modes_noedid(struct drm_connector *connector,
|
||||
int hdisplay, int vdisplay);
|
||||
void drm_set_preferred_mode(struct drm_connector *connector,
|
||||
int hpref, int vpref);
|
||||
|
||||
int drm_edid_header_is_valid(const u8 *raw_edid);
|
||||
bool drm_edid_block_valid(u8 *raw_edid, int block, bool print_bad_edid,
|
||||
bool *edid_corrupt);
|
||||
bool drm_edid_is_valid(struct edid *edid);
|
||||
void drm_edid_get_monitor_name(struct edid *edid, char *name,
|
||||
int buflen);
|
||||
struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev,
|
||||
int hsize, int vsize, int fresh,
|
||||
bool rb);
|
||||
struct drm_display_mode *
|
||||
drm_display_mode_from_cea_vic(struct drm_device *dev,
|
||||
u8 video_code);
|
||||
|
||||
#ifdef CONFIG_DRM_EDID
|
||||
struct edid *drm_get_edid(struct drm_connector *connector,
|
||||
struct i2c_adapter *adapter);
|
||||
struct edid *drm_edid_duplicate(const struct edid *edid);
|
||||
int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid);
|
||||
int drm_add_override_edid_modes(struct drm_connector *connector);
|
||||
u8 drm_match_cea_mode(const struct drm_display_mode *to_match);
|
||||
int drm_add_modes_noedid(struct drm_connector *connector,
|
||||
int hdisplay, int vdisplay);
|
||||
bool drm_detect_monitor_audio(struct edid *edid);
|
||||
void drm_edid_get_monitor_name(struct edid *edid, char *name,
|
||||
int buflen);
|
||||
bool drm_edid_is_valid(struct edid *edid);
|
||||
bool drm_edid_are_equal(const struct edid *edid1, const struct edid *edid2);
|
||||
struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev,
|
||||
int hsize, int vsize, int fresh,
|
||||
bool rb);
|
||||
#else
|
||||
static inline struct edid *drm_get_edid(struct drm_connector *connector,
|
||||
struct i2c_adapter *adapter)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline struct edid *drm_edid_duplicate(const struct edid *edid)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline int drm_add_edid_modes(struct drm_connector *connector,
|
||||
struct edid *edid)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int drm_add_override_edid_modes(struct drm_connector *connector)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u8 drm_match_cea_mode(const struct drm_display_mode *to_match)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int drm_add_modes_noedid(struct drm_connector *connector,
|
||||
int hdisplay, int vdisplay)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline bool drm_detect_monitor_audio(struct edid *edid)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline void drm_edid_get_monitor_name(struct edid *edid, char *name,
|
||||
int buflen)
|
||||
{
|
||||
}
|
||||
|
||||
static inline bool drm_edid_is_valid(struct edid *edid)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool drm_edid_are_equal(const struct edid *edid1, const struct edid *edid2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev,
|
||||
int hsize, int vsize, int fresh,
|
||||
bool rb)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __DRM_EDID_H__ */
|
||||
|
||||
Reference in New Issue
Block a user