diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-08-02 06:45:35 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-09-20 02:10:02 -0400 |
commit | 09461459e12019375dbda88f81d1fe8926ce139c (patch) | |
tree | ec928627b3fd291c12afc1da244176c63f2acad1 /drivers/gpu/drm/nouveau/nouveau_backlight.c | |
parent | 10b461e40a5a5522fe996805a0625c9cd4e5c1a7 (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.c | 10 |
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 | ||
107 | static int | 110 | static 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)) |