forked from luck/tmp_suning_uos_patched
drm: Mark constant arrays of drm_display_mode const
... and fixup some methods to accept the constant argument. Now that constant module arrays are loaded into read-only memory, using const appropriately has some benefits beyond warning the programmer about likely mistakes. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
60b212f8dd
commit
b1f559ecdc
@ -449,12 +449,11 @@ static void edid_fixup_preferred(struct drm_connector *connector,
|
|||||||
struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev,
|
struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev,
|
||||||
int hsize, int vsize, int fresh)
|
int hsize, int vsize, int fresh)
|
||||||
{
|
{
|
||||||
|
struct drm_display_mode *mode = NULL;
|
||||||
int i;
|
int i;
|
||||||
struct drm_display_mode *ptr, *mode;
|
|
||||||
|
|
||||||
mode = NULL;
|
|
||||||
for (i = 0; i < drm_num_dmt_modes; i++) {
|
for (i = 0; i < drm_num_dmt_modes; i++) {
|
||||||
ptr = &drm_dmt_modes[i];
|
const struct drm_display_mode *ptr = &drm_dmt_modes[i];
|
||||||
if (hsize == ptr->hdisplay &&
|
if (hsize == ptr->hdisplay &&
|
||||||
vsize == ptr->vdisplay &&
|
vsize == ptr->vdisplay &&
|
||||||
fresh == drm_mode_vrefresh(ptr)) {
|
fresh == drm_mode_vrefresh(ptr)) {
|
||||||
@ -885,7 +884,7 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
mode_is_rb(struct drm_display_mode *mode)
|
mode_is_rb(const struct drm_display_mode *mode)
|
||||||
{
|
{
|
||||||
return (mode->htotal - mode->hdisplay == 160) &&
|
return (mode->htotal - mode->hdisplay == 160) &&
|
||||||
(mode->hsync_end - mode->hdisplay == 80) &&
|
(mode->hsync_end - mode->hdisplay == 80) &&
|
||||||
@ -894,7 +893,8 @@ mode_is_rb(struct drm_display_mode *mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
mode_in_hsync_range(struct drm_display_mode *mode, struct edid *edid, u8 *t)
|
mode_in_hsync_range(const struct drm_display_mode *mode,
|
||||||
|
struct edid *edid, u8 *t)
|
||||||
{
|
{
|
||||||
int hsync, hmin, hmax;
|
int hsync, hmin, hmax;
|
||||||
|
|
||||||
@ -910,7 +910,8 @@ mode_in_hsync_range(struct drm_display_mode *mode, struct edid *edid, u8 *t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
mode_in_vsync_range(struct drm_display_mode *mode, struct edid *edid, u8 *t)
|
mode_in_vsync_range(const struct drm_display_mode *mode,
|
||||||
|
struct edid *edid, u8 *t)
|
||||||
{
|
{
|
||||||
int vsync, vmin, vmax;
|
int vsync, vmin, vmax;
|
||||||
|
|
||||||
@ -941,7 +942,7 @@ range_pixel_clock(struct edid *edid, u8 *t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
mode_in_range(struct drm_display_mode *mode, struct edid *edid,
|
mode_in_range(const struct drm_display_mode *mode, struct edid *edid,
|
||||||
struct detailed_timing *timing)
|
struct detailed_timing *timing)
|
||||||
{
|
{
|
||||||
u32 max_clock;
|
u32 max_clock;
|
||||||
@ -1472,7 +1473,7 @@ int drm_add_modes_noedid(struct drm_connector *connector,
|
|||||||
int hdisplay, int vdisplay)
|
int hdisplay, int vdisplay)
|
||||||
{
|
{
|
||||||
int i, count, num_modes = 0;
|
int i, count, num_modes = 0;
|
||||||
struct drm_display_mode *mode, *ptr;
|
struct drm_display_mode *mode;
|
||||||
struct drm_device *dev = connector->dev;
|
struct drm_device *dev = connector->dev;
|
||||||
|
|
||||||
count = sizeof(drm_dmt_modes) / sizeof(struct drm_display_mode);
|
count = sizeof(drm_dmt_modes) / sizeof(struct drm_display_mode);
|
||||||
@ -1482,7 +1483,7 @@ int drm_add_modes_noedid(struct drm_connector *connector,
|
|||||||
vdisplay = 0;
|
vdisplay = 0;
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
ptr = &drm_dmt_modes[i];
|
const struct drm_display_mode *ptr = &drm_dmt_modes[i];
|
||||||
if (hdisplay && vdisplay) {
|
if (hdisplay && vdisplay) {
|
||||||
/*
|
/*
|
||||||
* Only when two are valid, they will be used to check
|
* Only when two are valid, they will be used to check
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
* This table is copied from xfree86/modes/xf86EdidModes.c.
|
* This table is copied from xfree86/modes/xf86EdidModes.c.
|
||||||
* But the mode with Reduced blank feature is deleted.
|
* But the mode with Reduced blank feature is deleted.
|
||||||
*/
|
*/
|
||||||
static struct drm_display_mode drm_dmt_modes[] = {
|
static const struct drm_display_mode drm_dmt_modes[] = {
|
||||||
/* 640x350@85Hz */
|
/* 640x350@85Hz */
|
||||||
{ DRM_MODE("640x350", DRM_MODE_TYPE_DRIVER, 31500, 640, 672,
|
{ DRM_MODE("640x350", DRM_MODE_TYPE_DRIVER, 31500, 640, 672,
|
||||||
736, 832, 0, 350, 382, 385, 445, 0,
|
736, 832, 0, 350, 382, 385, 445, 0,
|
||||||
@ -266,7 +266,7 @@ static struct drm_display_mode drm_dmt_modes[] = {
|
|||||||
static const int drm_num_dmt_modes =
|
static const int drm_num_dmt_modes =
|
||||||
sizeof(drm_dmt_modes) / sizeof(struct drm_display_mode);
|
sizeof(drm_dmt_modes) / sizeof(struct drm_display_mode);
|
||||||
|
|
||||||
static struct drm_display_mode edid_est_modes[] = {
|
static const struct drm_display_mode edid_est_modes[] = {
|
||||||
{ DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 40000, 800, 840,
|
{ DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 40000, 800, 840,
|
||||||
968, 1056, 0, 600, 601, 605, 628, 0,
|
968, 1056, 0, 600, 601, 605, 628, 0,
|
||||||
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 800x600@60Hz */
|
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 800x600@60Hz */
|
||||||
|
@ -593,7 +593,7 @@ EXPORT_SYMBOL(drm_mode_height);
|
|||||||
*
|
*
|
||||||
* Return @modes's hsync rate in kHz, rounded to the nearest int.
|
* Return @modes's hsync rate in kHz, rounded to the nearest int.
|
||||||
*/
|
*/
|
||||||
int drm_mode_hsync(struct drm_display_mode *mode)
|
int drm_mode_hsync(const struct drm_display_mode *mode)
|
||||||
{
|
{
|
||||||
unsigned int calc_val;
|
unsigned int calc_val;
|
||||||
|
|
||||||
@ -627,7 +627,7 @@ EXPORT_SYMBOL(drm_mode_hsync);
|
|||||||
* If it is 70.288, it will return 70Hz.
|
* If it is 70.288, it will return 70Hz.
|
||||||
* If it is 59.6, it will return 60Hz.
|
* If it is 59.6, it will return 60Hz.
|
||||||
*/
|
*/
|
||||||
int drm_mode_vrefresh(struct drm_display_mode *mode)
|
int drm_mode_vrefresh(const struct drm_display_mode *mode)
|
||||||
{
|
{
|
||||||
int refresh = 0;
|
int refresh = 0;
|
||||||
unsigned int calc_val;
|
unsigned int calc_val;
|
||||||
@ -725,7 +725,7 @@ EXPORT_SYMBOL(drm_mode_set_crtcinfo);
|
|||||||
* a pointer to it. Used to create new instances of established modes.
|
* a pointer to it. Used to create new instances of established modes.
|
||||||
*/
|
*/
|
||||||
struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev,
|
struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev,
|
||||||
struct drm_display_mode *mode)
|
const struct drm_display_mode *mode)
|
||||||
{
|
{
|
||||||
struct drm_display_mode *nmode;
|
struct drm_display_mode *nmode;
|
||||||
int new_id;
|
int new_id;
|
||||||
|
@ -1460,7 +1460,7 @@ static void intel_sdvo_get_ddc_modes(struct drm_connector *connector)
|
|||||||
* Note! This is in reply order (see loop in get_tv_modes).
|
* Note! This is in reply order (see loop in get_tv_modes).
|
||||||
* XXX: all 60Hz refresh?
|
* XXX: all 60Hz refresh?
|
||||||
*/
|
*/
|
||||||
struct drm_display_mode sdvo_tv_modes[] = {
|
static const struct drm_display_mode sdvo_tv_modes[] = {
|
||||||
{ DRM_MODE("320x200", DRM_MODE_TYPE_DRIVER, 5815, 320, 321, 384,
|
{ DRM_MODE("320x200", DRM_MODE_TYPE_DRIVER, 5815, 320, 321, 384,
|
||||||
416, 0, 200, 201, 232, 233, 0,
|
416, 0, 200, 201, 232, 233, 0,
|
||||||
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||||
|
@ -197,10 +197,12 @@ static int nv17_tv_get_ld_modes(struct drm_encoder *encoder,
|
|||||||
struct drm_connector *connector)
|
struct drm_connector *connector)
|
||||||
{
|
{
|
||||||
struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
|
struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
|
||||||
struct drm_display_mode *mode, *tv_mode;
|
const struct drm_display_mode *tv_mode;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
|
||||||
for (tv_mode = nv17_tv_modes; tv_mode->hdisplay; tv_mode++) {
|
for (tv_mode = nv17_tv_modes; tv_mode->hdisplay; tv_mode++) {
|
||||||
|
struct drm_display_mode *mode;
|
||||||
|
|
||||||
mode = drm_mode_duplicate(encoder->dev, tv_mode);
|
mode = drm_mode_duplicate(encoder->dev, tv_mode);
|
||||||
|
|
||||||
mode->clock = tv_norm->tv_enc_mode.vrefresh *
|
mode->clock = tv_norm->tv_enc_mode.vrefresh *
|
||||||
|
@ -112,7 +112,7 @@ extern struct nv17_tv_norm_params {
|
|||||||
} nv17_tv_norms[NUM_TV_NORMS];
|
} nv17_tv_norms[NUM_TV_NORMS];
|
||||||
#define get_tv_norm(enc) (&nv17_tv_norms[to_tv_enc(enc)->tv_norm])
|
#define get_tv_norm(enc) (&nv17_tv_norms[to_tv_enc(enc)->tv_norm])
|
||||||
|
|
||||||
extern struct drm_display_mode nv17_tv_modes[];
|
extern const struct drm_display_mode nv17_tv_modes[];
|
||||||
|
|
||||||
static inline int interpolate(int y0, int y1, int y2, int x)
|
static inline int interpolate(int y0, int y1, int y2, int x)
|
||||||
{
|
{
|
||||||
|
@ -438,7 +438,7 @@ void nv17_tv_state_load(struct drm_device *dev, struct nv17_tv_state *state)
|
|||||||
|
|
||||||
/* Timings similar to the ones the blob sets */
|
/* Timings similar to the ones the blob sets */
|
||||||
|
|
||||||
struct drm_display_mode nv17_tv_modes[] = {
|
const struct drm_display_mode nv17_tv_modes[] = {
|
||||||
{ DRM_MODE("320x200", DRM_MODE_TYPE_DRIVER, 0,
|
{ DRM_MODE("320x200", DRM_MODE_TYPE_DRIVER, 0,
|
||||||
320, 344, 392, 560, 0, 200, 200, 202, 220, 0,
|
320, 344, 392, 560, 0, 200, 200, 202, 220, 0,
|
||||||
DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC
|
DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC
|
||||||
|
@ -345,7 +345,7 @@ static enum drm_connector_status
|
|||||||
return connector_status_disconnected;
|
return connector_status_disconnected;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct drm_display_mode vmw_ldu_connector_builtin[] = {
|
static const struct drm_display_mode vmw_ldu_connector_builtin[] = {
|
||||||
/* 640x480@60Hz */
|
/* 640x480@60Hz */
|
||||||
{ DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656,
|
{ DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656,
|
||||||
752, 800, 0, 480, 489, 492, 525, 0,
|
752, 800, 0, 480, 489, 492, 525, 0,
|
||||||
@ -429,7 +429,6 @@ static int vmw_ldu_connector_fill_modes(struct drm_connector *connector,
|
|||||||
struct drm_device *dev = connector->dev;
|
struct drm_device *dev = connector->dev;
|
||||||
struct vmw_private *dev_priv = vmw_priv(dev);
|
struct vmw_private *dev_priv = vmw_priv(dev);
|
||||||
struct drm_display_mode *mode = NULL;
|
struct drm_display_mode *mode = NULL;
|
||||||
struct drm_display_mode *bmode;
|
|
||||||
struct drm_display_mode prefmode = { DRM_MODE("preferred",
|
struct drm_display_mode prefmode = { DRM_MODE("preferred",
|
||||||
DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
|
DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
@ -459,6 +458,8 @@ static int vmw_ldu_connector_fill_modes(struct drm_connector *connector,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; vmw_ldu_connector_builtin[i].type != 0; i++) {
|
for (i = 0; vmw_ldu_connector_builtin[i].type != 0; i++) {
|
||||||
|
const struct drm_display_mode *bmode;
|
||||||
|
|
||||||
bmode = &vmw_ldu_connector_builtin[i];
|
bmode = &vmw_ldu_connector_builtin[i];
|
||||||
if (bmode->hdisplay > max_width ||
|
if (bmode->hdisplay > max_width ||
|
||||||
bmode->vdisplay > max_height)
|
bmode->vdisplay > max_height)
|
||||||
|
@ -659,7 +659,7 @@ extern int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid
|
|||||||
extern void drm_mode_probed_add(struct drm_connector *connector, struct drm_display_mode *mode);
|
extern void drm_mode_probed_add(struct drm_connector *connector, struct drm_display_mode *mode);
|
||||||
extern void drm_mode_remove(struct drm_connector *connector, struct drm_display_mode *mode);
|
extern void drm_mode_remove(struct drm_connector *connector, struct drm_display_mode *mode);
|
||||||
extern struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev,
|
extern struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev,
|
||||||
struct drm_display_mode *mode);
|
const struct drm_display_mode *mode);
|
||||||
extern void drm_mode_debug_printmodeline(struct drm_display_mode *mode);
|
extern void drm_mode_debug_printmodeline(struct drm_display_mode *mode);
|
||||||
extern void drm_mode_config_init(struct drm_device *dev);
|
extern void drm_mode_config_init(struct drm_device *dev);
|
||||||
extern void drm_mode_config_reset(struct drm_device *dev);
|
extern void drm_mode_config_reset(struct drm_device *dev);
|
||||||
@ -685,8 +685,8 @@ extern void drm_mode_validate_size(struct drm_device *dev,
|
|||||||
extern void drm_mode_prune_invalid(struct drm_device *dev,
|
extern void drm_mode_prune_invalid(struct drm_device *dev,
|
||||||
struct list_head *mode_list, bool verbose);
|
struct list_head *mode_list, bool verbose);
|
||||||
extern void drm_mode_sort(struct list_head *mode_list);
|
extern void drm_mode_sort(struct list_head *mode_list);
|
||||||
extern int drm_mode_hsync(struct drm_display_mode *mode);
|
extern int drm_mode_hsync(const struct drm_display_mode *mode);
|
||||||
extern int drm_mode_vrefresh(struct drm_display_mode *mode);
|
extern int drm_mode_vrefresh(const struct drm_display_mode *mode);
|
||||||
extern void drm_mode_set_crtcinfo(struct drm_display_mode *p,
|
extern void drm_mode_set_crtcinfo(struct drm_display_mode *p,
|
||||||
int adjust_flags);
|
int adjust_flags);
|
||||||
extern void drm_mode_connector_list_update(struct drm_connector *connector);
|
extern void drm_mode_connector_list_update(struct drm_connector *connector);
|
||||||
|
Loading…
Reference in New Issue
Block a user