drm/i915: Match bitmask size to types in intel_fb_initial_config()
smatch complains of: drivers/gpu/drm/i915/intel_fbdev.c:403 intel_fb_initial_config() warn: should '1 << i' be a 64 bit type? drivers/gpu/drm/i915/intel_fbdev.c:422 intel_fb_initial_config() warn: should '1 << i' be a 64 bit type? drivers/gpu/drm/i915/intel_fbdev.c:501 intel_fb_initial_config() warn: should '1 << i' be a 64 bit type? We are prepared to iterate over a u64 but don't limit the number of connectors we try to configure to a maximum of 64. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Link: http://patchwork.freedesktop.org/patch/msgid/1467470166-31717-5-git-send-email-chris@chris-wilson.co.uk Reviewed-by: Matthew Auld <matthew.auld@intel.com>
This commit is contained in:
parent
a98b7e58e9
commit
86f40bb655
|
@ -362,23 +362,24 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
|
|||
bool *enabled, int width, int height)
|
||||
{
|
||||
struct drm_device *dev = fb_helper->dev;
|
||||
unsigned long conn_configured, mask;
|
||||
unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG);
|
||||
int i, j;
|
||||
bool *save_enabled;
|
||||
bool fallback = true;
|
||||
int num_connectors_enabled = 0;
|
||||
int num_connectors_detected = 0;
|
||||
uint64_t conn_configured = 0, mask;
|
||||
int pass = 0;
|
||||
|
||||
save_enabled = kcalloc(fb_helper->connector_count, sizeof(bool),
|
||||
GFP_KERNEL);
|
||||
save_enabled = kcalloc(count, sizeof(bool), GFP_KERNEL);
|
||||
if (!save_enabled)
|
||||
return false;
|
||||
|
||||
memcpy(save_enabled, enabled, fb_helper->connector_count);
|
||||
mask = (1 << fb_helper->connector_count) - 1;
|
||||
memcpy(save_enabled, enabled, count);
|
||||
mask = BIT(count) - 1;
|
||||
conn_configured = 0;
|
||||
retry:
|
||||
for (i = 0; i < fb_helper->connector_count; i++) {
|
||||
for (i = 0; i < count; i++) {
|
||||
struct drm_fb_helper_connector *fb_conn;
|
||||
struct drm_connector *connector;
|
||||
struct drm_encoder *encoder;
|
||||
|
@ -388,7 +389,7 @@ retry:
|
|||
fb_conn = fb_helper->connector_info[i];
|
||||
connector = fb_conn->connector;
|
||||
|
||||
if (conn_configured & (1 << i))
|
||||
if (conn_configured & BIT(i))
|
||||
continue;
|
||||
|
||||
if (pass == 0 && !connector->has_tile)
|
||||
|
@ -400,7 +401,7 @@ retry:
|
|||
if (!enabled[i]) {
|
||||
DRM_DEBUG_KMS("connector %s not enabled, skipping\n",
|
||||
connector->name);
|
||||
conn_configured |= (1 << i);
|
||||
conn_configured |= BIT(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -419,7 +420,7 @@ retry:
|
|||
DRM_DEBUG_KMS("connector %s has no encoder or crtc, skipping\n",
|
||||
connector->name);
|
||||
enabled[i] = false;
|
||||
conn_configured |= (1 << i);
|
||||
conn_configured |= BIT(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -432,14 +433,15 @@ retry:
|
|||
intel_crtc->lut_b[j] = j;
|
||||
}
|
||||
|
||||
new_crtc = intel_fb_helper_crtc(fb_helper, connector->state->crtc);
|
||||
new_crtc = intel_fb_helper_crtc(fb_helper,
|
||||
connector->state->crtc);
|
||||
|
||||
/*
|
||||
* Make sure we're not trying to drive multiple connectors
|
||||
* with a single CRTC, since our cloning support may not
|
||||
* match the BIOS.
|
||||
*/
|
||||
for (j = 0; j < fb_helper->connector_count; j++) {
|
||||
for (j = 0; j < count; j++) {
|
||||
if (crtcs[j] == new_crtc) {
|
||||
DRM_DEBUG_KMS("fallback: cloned configuration\n");
|
||||
goto bail;
|
||||
|
@ -498,7 +500,7 @@ retry:
|
|||
modes[i]->flags & DRM_MODE_FLAG_INTERLACE ? "i" :"");
|
||||
|
||||
fallback = false;
|
||||
conn_configured |= (1 << i);
|
||||
conn_configured |= BIT(i);
|
||||
}
|
||||
|
||||
if ((conn_configured & mask) != mask) {
|
||||
|
@ -522,7 +524,7 @@ retry:
|
|||
if (fallback) {
|
||||
bail:
|
||||
DRM_DEBUG_KMS("Not using firmware configuration\n");
|
||||
memcpy(enabled, save_enabled, fb_helper->connector_count);
|
||||
memcpy(enabled, save_enabled, count);
|
||||
kfree(save_enabled);
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue