lkml.org 
[lkml]   [2006]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] [RESEND] Add Dell laptop backlight brightness display
    On Mon, Feb 06, 2006 at 10:37:55PM -0500, Dmitry Torokhov wrote:

    > This is not gonna work - dellbl_* vs hpbl_*

    Good point. Third time's the charm?

    --
    Matthew Garrett | mjg59@srcf.ucam.org
    diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
    index e4f84eb..0f83183 100644
    --- a/drivers/video/backlight/Kconfig
    +++ b/drivers/video/backlight/Kconfig
    @@ -56,4 +56,12 @@ config BACKLIGHT_HP
    default n
    help
    Allows userspace applications to read the current screen brightness
    - on HP laptops
    \ No newline at end of file
    + on HP laptops
    +
    +config BACKLIGHT_DELL
    + tristate "Dell Laptop Backlight Driver"
    + depends on BACKLIGHT_DEVICE && X86
    + default n
    + help
    + Allows userspace applications to read the current screen brightness
    + on Dell laptops
    \ No newline at end of file
    diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
    index 93ac108..f337f01 100644
    --- a/drivers/video/backlight/Makefile
    +++ b/drivers/video/backlight/Makefile
    @@ -4,4 +4,5 @@ obj-$(CONFIG_LCD_CLASS_DEVICE) += lc
    obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE) += backlight.o
    obj-$(CONFIG_BACKLIGHT_CORGI) += corgi_bl.o
    obj-$(CONFIG_SHARP_LOCOMO) += locomolcd.o
    -obj-$(CONFIG_BACKLIGHT_HP) += hp_bl.o
    \ No newline at end of file
    +obj-$(CONFIG_BACKLIGHT_HP) += hp_bl.o
    +obj-$(CONFIG_BACKLIGHT_DELL) += dell_bl.o
    \ No newline at end of file
    diff --git a/drivers/video/backlight/dell_bl.c b/drivers/video/backlight/dell_bl.c
    new file mode 100644
    index 0000000..a97a4b8
    --- /dev/null
    +++ b/drivers/video/backlight/dell_bl.c
    @@ -0,0 +1,92 @@
    +/*
    + * Backlight Driver for Dell laptops
    + *
    + * Copyright (c) 2006 Matthew Garrett
    + *
    + * Based on corgi_bl.c, Copyright (c) 2004-2005 Richard Purdie
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License version 2 as
    + * published by the Free Software Foundation.
    + *
    + */
    +
    +#include <linux/module.h>
    +#include <linux/kernel.h>
    +#include <linux/init.h>
    +#include <linux/fb.h>
    +#include <linux/backlight.h>
    +#include <linux/dmi.h>
    +#include <linux/nvram.h>
    +
    +static struct backlight_properties dellbl_data;
    +
    +static struct dmi_system_id __initdata delllcd_device_table[] = {
    + {
    + .ident = "Dell",
    + .matches = {
    + DMI_MATCH(DMI_BOARD_VENDOR, "Dell Inc."),
    + DMI_MATCH(DMI_CHASSIS_TYPE, "Portable"),
    + },
    + },
    + { }
    +};
    +
    +
    +static int dellbl_get_intensity(struct backlight_device *bd)
    +{
    + /* The backlight interface doesn't give us a means of providing
    + more than one brightness value, so we put the AC value in the
    + top bits of the brightness and the DC value in the bottom bits */
    +
    + int value;
    + int combined;
    +
    + value = nvram_read_byte(0x53);
    +
    + value &= 0xf0; // Brightness is in the upper 4 bits
    + combined = value << 12;
    +
    + value = nvram_read_byte(0x16);
    +
    + outb(0x99, 0x72);
    + value = inb(0x73);
    +
    + value &= 0x0f; // Brightness is in the lower 4 bits
    + combined |= value;
    +
    + return combined;
    +}
    +
    +static struct backlight_properties dellbl_data = {
    + .owner = THIS_MODULE,
    + .get_brightness = dellbl_get_intensity,
    + .max_brightness = 0xe,
    +};
    +
    +static struct backlight_device *dell_backlight_device;
    +
    +static int __init dellbl_init(void)
    +{
    + if (!dmi_check_system(delllcd_device_table))
    + return -ENODEV;
    +
    + dell_backlight_device = backlight_device_register ("dell-bl",
    + NULL, &dellbl_data);
    + if (IS_ERR (dell_backlight_device))
    + return PTR_ERR (dell_backlight_device);
    +
    + return 0;
    +}
    +
    +static void __exit dellbl_exit(void)
    +{
    + backlight_device_unregister(dell_backlight_device);
    +}
    +
    +module_init(dellbl_init);
    +module_exit(dellbl_exit);
    +
    +MODULE_AUTHOR("Matthew Garrett <mjg59@srcf.ucam.org>");
    +MODULE_DESCRIPTION("Dell Backlight Driver");
    +MODULE_LICENSE("GPL");
    \
     
     \ /
      Last update: 2006-02-07 13:34    [W:0.027 / U:33.724 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site