aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_backlight.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_backlight.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_backlight.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_backlight.c b/drivers/gpu/drm/nouveau/nouveau_backlight.c
index d3a9c6e02477..00a55dfdba82 100644
--- a/drivers/gpu/drm/nouveau/nouveau_backlight.c
+++ b/drivers/gpu/drm/nouveau/nouveau_backlight.c
@@ -88,18 +88,20 @@ static const struct backlight_ops nv50_bl_ops = {
88 .update_status = nv50_set_intensity, 88 .update_status = nv50_set_intensity,
89}; 89};
90 90
91static int nouveau_nv40_backlight_init(struct drm_device *dev) 91static int nouveau_nv40_backlight_init(struct drm_connector *connector)
92{ 92{
93 struct backlight_properties props; 93 struct drm_device *dev = connector->dev;
94 struct drm_nouveau_private *dev_priv = dev->dev_private; 94 struct drm_nouveau_private *dev_priv = dev->dev_private;
95 struct backlight_properties props;
95 struct backlight_device *bd; 96 struct backlight_device *bd;
96 97
97 if (!(nv_rd32(dev, NV40_PMC_BACKLIGHT) & NV40_PMC_BACKLIGHT_MASK)) 98 if (!(nv_rd32(dev, NV40_PMC_BACKLIGHT) & NV40_PMC_BACKLIGHT_MASK))
98 return 0; 99 return 0;
99 100
100 memset(&props, 0, sizeof(struct backlight_properties)); 101 memset(&props, 0, sizeof(struct backlight_properties));
102 props.type = BACKLIGHT_RAW;
101 props.max_brightness = 31; 103 props.max_brightness = 31;
102 bd = backlight_device_register("nv_backlight", &dev->pdev->dev, dev, 104 bd = backlight_device_register("nv_backlight", &connector->kdev, dev,
103 &nv40_bl_ops, &props); 105 &nv40_bl_ops, &props);
104 if (IS_ERR(bd)) 106 if (IS_ERR(bd))
105 return PTR_ERR(bd); 107 return PTR_ERR(bd);
@@ -111,18 +113,20 @@ static int nouveau_nv40_backlight_init(struct drm_device *dev)
111 return 0; 113 return 0;
112} 114}
113 115
114static int nouveau_nv50_backlight_init(struct drm_device *dev) 116static int nouveau_nv50_backlight_init(struct drm_connector *connector)
115{ 117{
116 struct backlight_properties props; 118 struct drm_device *dev = connector->dev;
117 struct drm_nouveau_private *dev_priv = dev->dev_private; 119 struct drm_nouveau_private *dev_priv = dev->dev_private;
120 struct backlight_properties props;
118 struct backlight_device *bd; 121 struct backlight_device *bd;
119 122
120 if (!nv_rd32(dev, NV50_PDISPLAY_SOR_BACKLIGHT)) 123 if (!nv_rd32(dev, NV50_PDISPLAY_SOR_BACKLIGHT))
121 return 0; 124 return 0;
122 125
123 memset(&props, 0, sizeof(struct backlight_properties)); 126 memset(&props, 0, sizeof(struct backlight_properties));
127 props.type = BACKLIGHT_RAW;
124 props.max_brightness = 1025; 128 props.max_brightness = 1025;
125 bd = backlight_device_register("nv_backlight", &dev->pdev->dev, dev, 129 bd = backlight_device_register("nv_backlight", &connector->kdev, dev,
126 &nv50_bl_ops, &props); 130 &nv50_bl_ops, &props);
127 if (IS_ERR(bd)) 131 if (IS_ERR(bd))
128 return PTR_ERR(bd); 132 return PTR_ERR(bd);
@@ -133,8 +137,9 @@ static int nouveau_nv50_backlight_init(struct drm_device *dev)
133 return 0; 137 return 0;
134} 138}
135 139
136int nouveau_backlight_init(struct drm_device *dev) 140int nouveau_backlight_init(struct drm_connector *connector)
137{ 141{
142 struct drm_device *dev = connector->dev;
138 struct drm_nouveau_private *dev_priv = dev->dev_private; 143 struct drm_nouveau_private *dev_priv = dev->dev_private;
139 144
140#ifdef CONFIG_ACPI 145#ifdef CONFIG_ACPI
@@ -147,9 +152,9 @@ int nouveau_backlight_init(struct drm_device *dev)
147 152
148 switch (dev_priv->card_type) { 153 switch (dev_priv->card_type) {
149 case NV_40: 154 case NV_40:
150 return nouveau_nv40_backlight_init(dev); 155 return nouveau_nv40_backlight_init(connector);
151 case NV_50: 156 case NV_50:
152 return nouveau_nv50_backlight_init(dev); 157 return nouveau_nv50_backlight_init(connector);
153 default: 158 default:
154 break; 159 break;
155 } 160 }
@@ -157,8 +162,9 @@ int nouveau_backlight_init(struct drm_device *dev)
157 return 0; 162 return 0;
158} 163}
159 164
160void nouveau_backlight_exit(struct drm_device *dev) 165void nouveau_backlight_exit(struct drm_connector *connector)
161{ 166{
167 struct drm_device *dev = connector->dev;
162 struct drm_nouveau_private *dev_priv = dev->dev_private; 168 struct drm_nouveau_private *dev_priv = dev->dev_private;
163 169
164 if (dev_priv->backlight) { 170 if (dev_priv->backlight) {