diff --git a/drm/nouveau/nouveau_backlight.c b/drm/nouveau/nouveau_backlight.c index 89eb460..03ecc21 100644 --- a/drm/nouveau/nouveau_backlight.c +++ b/drm/nouveau/nouveau_backlight.c @@ -36,6 +36,8 @@ #include "nouveau_reg.h" #include "nouveau_encoder.h" +static unsigned int bl_interface_nbs = 0u; + static int nv40_get_intensity(struct backlight_device *bd) { @@ -182,6 +194,7 @@ nv50_backlight_init(struct drm_connector *connector) struct backlight_properties props; struct backlight_device *bd; const struct backlight_ops *ops; + char* backlight_name = (char*)kmalloc(sizeof(char[13]), GFP_KERNEL); nv_encoder = find_encoder(connector, DCB_OUTPUT_LVDS); if (!nv_encoder) { @@ -203,12 +216,20 @@ nv50_backlight_init(struct drm_connector *connector) memset(&props, 0, sizeof(struct backlight_properties)); props.type = BACKLIGHT_RAW; props.max_brightness = 100; - bd = backlight_device_register("nv_backlight", connector->kdev, + printk(KERN_INFO "bl_interface_nbs: %u\n", bl_interface_nbs); + if (bl_interface_nbs == 0u) + sprintf(backlight_name, "nv_backlight"); + else + sprintf(backlight_name, "nv_backlight%u", bl_interface_nbs); + printk(KERN_INFO "backlight_name: %s\n", backlight_name); + bd = backlight_device_register(backlight_name, connector->kdev, nv_encoder, ops, &props); - if (IS_ERR(bd)) + if (IS_ERR(bd)) { + kfree(backlight_name); return PTR_ERR(bd); - + } drm->backlight = bd; + ++bl_interface_nbs; bd->props.brightness = bd->ops->get_brightness(bd); backlight_update_status(bd); return 0;