aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_backlight.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2011-08-02 06:45:35 -0400
committerBen Skeggs <bskeggs@redhat.com>2011-09-20 02:10:02 -0400
commit09461459e12019375dbda88f81d1fe8926ce139c (patch)
treeec928627b3fd291c12afc1da244176c63f2acad1 /drivers/gpu/drm/nouveau/nouveau_backlight.c
parent10b461e40a5a5522fe996805a0625c9cd4e5c1a7 (diff)
drm/nv50/backlight: express brightness level in percent
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_backlight.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_backlight.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_backlight.c b/drivers/gpu/drm/nouveau/nouveau_backlight.c
index 4f3d1ff3e472..757a6f87edf2 100644
--- a/drivers/gpu/drm/nouveau/nouveau_backlight.c
+++ b/drivers/gpu/drm/nouveau/nouveau_backlight.c
@@ -100,8 +100,11 @@ nv50_get_intensity(struct backlight_device *bd)
100 struct nouveau_encoder *nv_encoder = bl_get_data(bd); 100 struct nouveau_encoder *nv_encoder = bl_get_data(bd);
101 struct drm_device *dev = nv_encoder->base.base.dev; 101 struct drm_device *dev = nv_encoder->base.base.dev;
102 int or = nv_encoder->or; 102 int or = nv_encoder->or;
103 u32 div = 1025;
104 u32 val;
103 105
104 return nv_rd32(dev, NV50_PDISPLAY_SOR_BACKLIGHT + (or * 0x800)); 106 val = nv_rd32(dev, NV50_PDISPLAY_SOR_BACKLIGHT + (or * 0x800));
107 return ((val * 100) + (div / 2)) / div;
105} 108}
106 109
107static int 110static int
@@ -109,8 +112,9 @@ nv50_set_intensity(struct backlight_device *bd)
109{ 112{
110 struct nouveau_encoder *nv_encoder = bl_get_data(bd); 113 struct nouveau_encoder *nv_encoder = bl_get_data(bd);
111 struct drm_device *dev = nv_encoder->base.base.dev; 114 struct drm_device *dev = nv_encoder->base.base.dev;
112 int val = bd->props.brightness;
113 int or = nv_encoder->or; 115 int or = nv_encoder->or;
116 u32 div = 1025;
117 u32 val = (bd->props.brightness * div) / 100;
114 118
115 nv_wr32(dev, NV50_PDISPLAY_SOR_BACKLIGHT + (or * 0x800), 119 nv_wr32(dev, NV50_PDISPLAY_SOR_BACKLIGHT + (or * 0x800),
116 val | NV50_PDISPLAY_SOR_BACKLIGHT_ENABLE); 120 val | NV50_PDISPLAY_SOR_BACKLIGHT_ENABLE);
@@ -147,7 +151,7 @@ nv50_backlight_init(struct drm_connector *connector)
147 151
148 memset(&props, 0, sizeof(struct backlight_properties)); 152 memset(&props, 0, sizeof(struct backlight_properties));
149 props.type = BACKLIGHT_RAW; 153 props.type = BACKLIGHT_RAW;
150 props.max_brightness = 1025; 154 props.max_brightness = 100;
151 bd = backlight_device_register("nv_backlight", &connector->kdev, 155 bd = backlight_device_register("nv_backlight", &connector->kdev,
152 nv_encoder, &nv50_bl_ops, &props); 156 nv_encoder, &nv50_bl_ops, &props);
153 if (IS_ERR(bd)) 157 if (IS_ERR(bd))