From 871480933a1c28f8a9fed4c4d34d06c439a7a422 Mon Sep 17 00:00:00 2001 From: Srikant Patnaik Date: Sun, 11 Jan 2015 12:28:04 +0530 Subject: Moved, renamed, and deleted files The original directory structure was scattered and unorganized. Changes are basically to make it look like kernel structure. --- .../drivers/video/backlight/88pm860x_bl.c | 281 ------ ANDROID_3.4.5/drivers/video/backlight/Kconfig | 366 -------- ANDROID_3.4.5/drivers/video/backlight/Makefile | 46 - ANDROID_3.4.5/drivers/video/backlight/aat2870_bl.c | 245 ----- ANDROID_3.4.5/drivers/video/backlight/adp5520_bl.c | 388 -------- ANDROID_3.4.5/drivers/video/backlight/adp8860_bl.c | 827 ----------------- ANDROID_3.4.5/drivers/video/backlight/adp8870_bl.c | 999 --------------------- ANDROID_3.4.5/drivers/video/backlight/ams369fg06.c | 636 ------------- ANDROID_3.4.5/drivers/video/backlight/apple_bl.c | 260 ------ .../drivers/video/backlight/atmel-pwm-bl.c | 248 ----- ANDROID_3.4.5/drivers/video/backlight/backlight.c | 401 --------- ANDROID_3.4.5/drivers/video/backlight/corgi_lcd.c | 637 ------------- ANDROID_3.4.5/drivers/video/backlight/cr_bllcd.c | 289 ------ ANDROID_3.4.5/drivers/video/backlight/da903x_bl.c | 204 ----- ANDROID_3.4.5/drivers/video/backlight/da9052_bl.c | 187 ---- ANDROID_3.4.5/drivers/video/backlight/ep93xx_bl.c | 154 ---- ANDROID_3.4.5/drivers/video/backlight/generic_bl.c | 139 --- ANDROID_3.4.5/drivers/video/backlight/hp680_bl.c | 179 ---- ANDROID_3.4.5/drivers/video/backlight/ili9320.c | 331 ------- ANDROID_3.4.5/drivers/video/backlight/ili9320.h | 80 -- .../drivers/video/backlight/jornada720_bl.c | 154 ---- .../drivers/video/backlight/jornada720_lcd.c | 142 --- ANDROID_3.4.5/drivers/video/backlight/kb3886_bl.c | 209 ----- .../drivers/video/backlight/l4f00242t03.c | 281 ------ ANDROID_3.4.5/drivers/video/backlight/lcd.c | 274 ------ ANDROID_3.4.5/drivers/video/backlight/ld9040.c | 863 ------------------ .../drivers/video/backlight/ld9040_gamma.h | 200 ----- ANDROID_3.4.5/drivers/video/backlight/lms283gf05.c | 233 ----- ANDROID_3.4.5/drivers/video/backlight/locomolcd.c | 245 ----- ANDROID_3.4.5/drivers/video/backlight/lp855x_bl.c | 331 ------- ANDROID_3.4.5/drivers/video/backlight/ltv350qv.c | 329 ------- ANDROID_3.4.5/drivers/video/backlight/ltv350qv.h | 95 -- ANDROID_3.4.5/drivers/video/backlight/max8925_bl.c | 193 ---- ANDROID_3.4.5/drivers/video/backlight/omap1_bl.c | 199 ---- ANDROID_3.4.5/drivers/video/backlight/ot200_bl.c | 175 ---- ANDROID_3.4.5/drivers/video/backlight/pandora_bl.c | 171 ---- .../drivers/video/backlight/pcf50633-backlight.c | 171 ---- .../drivers/video/backlight/platform_lcd.c | 164 ---- ANDROID_3.4.5/drivers/video/backlight/progear_bl.c | 160 ---- ANDROID_3.4.5/drivers/video/backlight/pwm_bl.c | 394 -------- ANDROID_3.4.5/drivers/video/backlight/s6e63m0.c | 917 ------------------- .../drivers/video/backlight/s6e63m0_gamma.h | 266 ------ ANDROID_3.4.5/drivers/video/backlight/tdo24m.c | 467 ---------- ANDROID_3.4.5/drivers/video/backlight/tosa_bl.c | 189 ---- ANDROID_3.4.5/drivers/video/backlight/tosa_lcd.c | 293 ------ ANDROID_3.4.5/drivers/video/backlight/vgg2432a4.c | 270 ------ ANDROID_3.4.5/drivers/video/backlight/wm831x_bl.c | 240 ----- ANDROID_3.4.5/drivers/video/backlight/wmt_bl.c | 191 ---- ANDROID_3.4.5/drivers/video/backlight/wmt_bl.h | 12 - 49 files changed, 14725 deletions(-) delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/88pm860x_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/Kconfig delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/Makefile delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/aat2870_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/adp5520_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/adp8860_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/adp8870_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/ams369fg06.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/apple_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/atmel-pwm-bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/backlight.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/corgi_lcd.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/cr_bllcd.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/da903x_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/da9052_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/ep93xx_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/generic_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/hp680_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/ili9320.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/ili9320.h delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/jornada720_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/jornada720_lcd.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/kb3886_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/l4f00242t03.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/lcd.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/ld9040.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/ld9040_gamma.h delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/lms283gf05.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/locomolcd.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/lp855x_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/ltv350qv.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/ltv350qv.h delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/max8925_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/omap1_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/ot200_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/pandora_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/pcf50633-backlight.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/platform_lcd.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/progear_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/pwm_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/s6e63m0.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/s6e63m0_gamma.h delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/tdo24m.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/tosa_bl.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/tosa_lcd.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/vgg2432a4.c delete mode 100644 ANDROID_3.4.5/drivers/video/backlight/wm831x_bl.c delete mode 100755 ANDROID_3.4.5/drivers/video/backlight/wmt_bl.c delete mode 100755 ANDROID_3.4.5/drivers/video/backlight/wmt_bl.h (limited to 'ANDROID_3.4.5/drivers/video/backlight') diff --git a/ANDROID_3.4.5/drivers/video/backlight/88pm860x_bl.c b/ANDROID_3.4.5/drivers/video/backlight/88pm860x_bl.c deleted file mode 100644 index f49181c7..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/88pm860x_bl.c +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Backlight driver for Marvell Semiconductor 88PM8606 - * - * Copyright (C) 2009 Marvell International Ltd. - * Haojian Zhuang - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include - -#define MAX_BRIGHTNESS (0xFF) -#define MIN_BRIGHTNESS (0) - -#define CURRENT_BITMASK (0x1F << 1) - -struct pm860x_backlight_data { - struct pm860x_chip *chip; - struct i2c_client *i2c; - int current_brightness; - int port; - int pwm; - int iset; -}; - -static inline int wled_a(int port) -{ - int ret; - - ret = ((port - PM8606_BACKLIGHT1) << 1) + 2; - return ret; -} - -static inline int wled_b(int port) -{ - int ret; - - ret = ((port - PM8606_BACKLIGHT1) << 1) + 3; - return ret; -} - -/* WLED2 & WLED3 share the same IDC */ -static inline int wled_idc(int port) -{ - int ret; - - switch (port) { - case PM8606_BACKLIGHT1: - case PM8606_BACKLIGHT2: - ret = ((port - PM8606_BACKLIGHT1) << 1) + 3; - break; - case PM8606_BACKLIGHT3: - default: - ret = ((port - PM8606_BACKLIGHT2) << 1) + 3; - break; - } - return ret; -} - -static int backlight_power_set(struct pm860x_chip *chip, int port, - int on) -{ - int ret = -EINVAL; - - switch (port) { - case PM8606_BACKLIGHT1: - ret = on ? pm8606_osc_enable(chip, WLED1_DUTY) : - pm8606_osc_disable(chip, WLED1_DUTY); - break; - case PM8606_BACKLIGHT2: - ret = on ? pm8606_osc_enable(chip, WLED2_DUTY) : - pm8606_osc_disable(chip, WLED2_DUTY); - break; - case PM8606_BACKLIGHT3: - ret = on ? pm8606_osc_enable(chip, WLED3_DUTY) : - pm8606_osc_disable(chip, WLED3_DUTY); - break; - } - return ret; -} - -static int pm860x_backlight_set(struct backlight_device *bl, int brightness) -{ - struct pm860x_backlight_data *data = bl_get_data(bl); - struct pm860x_chip *chip = data->chip; - unsigned char value; - int ret; - - if (brightness > MAX_BRIGHTNESS) - value = MAX_BRIGHTNESS; - else - value = brightness; - - if (brightness) - backlight_power_set(chip, data->port, 1); - - ret = pm860x_reg_write(data->i2c, wled_a(data->port), value); - if (ret < 0) - goto out; - - if ((data->current_brightness == 0) && brightness) { - if (data->iset) { - ret = pm860x_set_bits(data->i2c, wled_idc(data->port), - CURRENT_BITMASK, data->iset); - if (ret < 0) - goto out; - } - if (data->pwm) { - ret = pm860x_set_bits(data->i2c, PM8606_PWM, - PM8606_PWM_FREQ_MASK, data->pwm); - if (ret < 0) - goto out; - } - if (brightness == MAX_BRIGHTNESS) { - /* set WLED_ON bit as 100% */ - ret = pm860x_set_bits(data->i2c, wled_b(data->port), - PM8606_WLED_ON, PM8606_WLED_ON); - } - } else { - if (brightness == MAX_BRIGHTNESS) { - /* set WLED_ON bit as 100% */ - ret = pm860x_set_bits(data->i2c, wled_b(data->port), - PM8606_WLED_ON, PM8606_WLED_ON); - } else { - /* clear WLED_ON bit since it's not 100% */ - ret = pm860x_set_bits(data->i2c, wled_b(data->port), - PM8606_WLED_ON, 0); - } - } - if (ret < 0) - goto out; - - if (brightness == 0) - backlight_power_set(chip, data->port, 0); - - dev_dbg(chip->dev, "set brightness %d\n", value); - data->current_brightness = value; - return 0; -out: - dev_dbg(chip->dev, "set brightness %d failure with return " - "value:%d\n", value, ret); - return ret; -} - -static int pm860x_backlight_update_status(struct backlight_device *bl) -{ - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - return pm860x_backlight_set(bl, brightness); -} - -static int pm860x_backlight_get_brightness(struct backlight_device *bl) -{ - struct pm860x_backlight_data *data = bl_get_data(bl); - struct pm860x_chip *chip = data->chip; - int ret; - - ret = pm860x_reg_read(data->i2c, wled_a(data->port)); - if (ret < 0) - goto out; - data->current_brightness = ret; - dev_dbg(chip->dev, "get brightness %d\n", data->current_brightness); - return data->current_brightness; -out: - return -EINVAL; -} - -static const struct backlight_ops pm860x_backlight_ops = { - .options = BL_CORE_SUSPENDRESUME, - .update_status = pm860x_backlight_update_status, - .get_brightness = pm860x_backlight_get_brightness, -}; - -static int pm860x_backlight_probe(struct platform_device *pdev) -{ - struct pm860x_chip *chip = dev_get_drvdata(pdev->dev.parent); - struct pm860x_backlight_pdata *pdata = NULL; - struct pm860x_backlight_data *data; - struct backlight_device *bl; - struct resource *res; - struct backlight_properties props; - char name[MFD_NAME_SIZE]; - int ret; - - res = platform_get_resource(pdev, IORESOURCE_IO, 0); - if (res == NULL) { - dev_err(&pdev->dev, "No I/O resource!\n"); - return -EINVAL; - } - - pdata = pdev->dev.platform_data; - if (pdata == NULL) { - dev_err(&pdev->dev, "platform data isn't assigned to " - "backlight\n"); - return -EINVAL; - } - - data = devm_kzalloc(&pdev->dev, sizeof(struct pm860x_backlight_data), - GFP_KERNEL); - if (data == NULL) - return -ENOMEM; - strncpy(name, res->name, MFD_NAME_SIZE); - data->chip = chip; - data->i2c = (chip->id == CHIP_PM8606) ? chip->client \ - : chip->companion; - data->current_brightness = MAX_BRIGHTNESS; - data->pwm = pdata->pwm; - data->iset = pdata->iset; - data->port = pdata->flags; - if (data->port < 0) { - dev_err(&pdev->dev, "wrong platform data is assigned"); - return -EINVAL; - } - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_RAW; - props.max_brightness = MAX_BRIGHTNESS; - bl = backlight_device_register(name, &pdev->dev, data, - &pm860x_backlight_ops, &props); - if (IS_ERR(bl)) { - dev_err(&pdev->dev, "failed to register backlight\n"); - return PTR_ERR(bl); - } - bl->props.brightness = MAX_BRIGHTNESS; - - platform_set_drvdata(pdev, bl); - - /* read current backlight */ - ret = pm860x_backlight_get_brightness(bl); - if (ret < 0) - goto out; - - backlight_update_status(bl); - return 0; -out: - backlight_device_unregister(bl); - return ret; -} - -static int pm860x_backlight_remove(struct platform_device *pdev) -{ - struct backlight_device *bl = platform_get_drvdata(pdev); - - backlight_device_unregister(bl); - return 0; -} - -static struct platform_driver pm860x_backlight_driver = { - .driver = { - .name = "88pm860x-backlight", - .owner = THIS_MODULE, - }, - .probe = pm860x_backlight_probe, - .remove = pm860x_backlight_remove, -}; - -module_platform_driver(pm860x_backlight_driver); - -MODULE_DESCRIPTION("Backlight Driver for Marvell Semiconductor 88PM8606"); -MODULE_AUTHOR("Haojian Zhuang "); -MODULE_LICENSE("GPL"); -MODULE_ALIAS("platform:88pm860x-backlight"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/Kconfig b/ANDROID_3.4.5/drivers/video/backlight/Kconfig deleted file mode 100644 index af168844..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/Kconfig +++ /dev/null @@ -1,366 +0,0 @@ -# -# Backlight & LCD drivers configuration -# - -menuconfig BACKLIGHT_LCD_SUPPORT - bool "Backlight & LCD device support" - help - Enable this to be able to choose the drivers for controlling the - backlight and the LCD panel on some platforms, for example on PDAs. - -if BACKLIGHT_LCD_SUPPORT - -# -# LCD -# -config LCD_CLASS_DEVICE - tristate "Lowlevel LCD controls" - default m - help - This framework adds support for low-level control of LCD. - Some framebuffer devices connect to platform-specific LCD modules - in order to have a platform-specific way to control the flat panel - (contrast and applying power to the LCD (not to the backlight!)). - - To have support for your specific LCD panel you will have to - select the proper drivers which depend on this option. - -if LCD_CLASS_DEVICE - -config LCD_CORGI - tristate "LCD Panel support for SHARP corgi/spitz model" - depends on SPI_MASTER && PXA_SHARPSL - help - Say y here to support the LCD panels usually found on SHARP - corgi (C7x0) and spitz (Cxx00) models. - -config LCD_L4F00242T03 - tristate "Epson L4F00242T03 LCD" - depends on SPI_MASTER && GENERIC_GPIO - help - SPI driver for Epson L4F00242T03. This provides basic support - for init and powering the LCD up/down through a sysfs interface. - -config LCD_LMS283GF05 - tristate "Samsung LMS283GF05 LCD" - depends on SPI_MASTER && GENERIC_GPIO - help - SPI driver for Samsung LMS283GF05. This provides basic support - for powering the LCD up/down through a sysfs interface. - -config LCD_LTV350QV - tristate "Samsung LTV350QV LCD Panel" - depends on SPI_MASTER - help - If you have a Samsung LTV350QV LCD panel, say y to include a - power control driver for it. The panel starts up in power - off state, so you need this driver in order to see any - output. - - The LTV350QV panel is present on all ATSTK1000 boards. - -config LCD_ILI9320 - tristate - help - If you have a panel based on the ILI9320 controller chip - then say y to include a power driver for it. - -config LCD_TDO24M - tristate "Toppoly TDO24M and TDO35S LCD Panels support" - depends on SPI_MASTER - help - If you have a Toppoly TDO24M/TDO35S series LCD panel, say y here to - include the support for it. - -config LCD_VGG2432A4 - tristate "VGG2432A4 LCM device support" - depends on SPI_MASTER - select LCD_ILI9320 - help - If you have a VGG2432A4 panel based on the ILI9320 controller chip - then say y to include a power driver for it. - -config LCD_PLATFORM - tristate "Platform LCD controls" - help - This driver provides a platform-device registered LCD power - control interface. - -config LCD_TOSA - tristate "Sharp SL-6000 LCD Driver" - depends on SPI && MACH_TOSA - help - If you have an Sharp SL-6000 Zaurus say Y to enable a driver - for its LCD. - -config LCD_HP700 - tristate "HP Jornada 700 series LCD Driver" - depends on SA1100_JORNADA720_SSP && !PREEMPT - default y - help - If you have an HP Jornada 700 series handheld (710/720/728) - say Y to enable LCD control driver. - -config LCD_S6E63M0 - tristate "S6E63M0 AMOLED LCD Driver" - depends on SPI && BACKLIGHT_CLASS_DEVICE - default n - help - If you have an S6E63M0 LCD Panel, say Y to enable its - LCD control driver. - -config LCD_LD9040 - tristate "LD9040 AMOLED LCD Driver" - depends on SPI && BACKLIGHT_CLASS_DEVICE - default n - help - If you have an LD9040 Panel, say Y to enable its - control driver. - -config LCD_AMS369FG06 - tristate "AMS369FG06 AMOLED LCD Driver" - depends on SPI && BACKLIGHT_CLASS_DEVICE - default n - help - If you have an AMS369FG06 AMOLED Panel, say Y to enable its - LCD control driver. - -endif # LCD_CLASS_DEVICE - -# -# Backlight -# -config BACKLIGHT_CLASS_DEVICE - tristate "Lowlevel Backlight controls" - default m - help - This framework adds support for low-level control of the LCD - backlight. This includes support for brightness and power. - - To have support for your specific LCD panel you will have to - select the proper drivers which depend on this option. - -if BACKLIGHT_CLASS_DEVICE - -config BACKLIGHT_ATMEL_LCDC - bool "Atmel LCDC Contrast-as-Backlight control" - depends on FB_ATMEL - default y if MACH_SAM9261EK || MACH_SAM9G10EK || MACH_SAM9263EK - help - This provides a backlight control internal to the Atmel LCDC - driver. If the LCD "contrast control" on your board is wired - so it controls the backlight brightness, select this option to - export this as a PWM-based backlight control. - - If in doubt, it's safe to enable this option; it doesn't kick - in unless the board's description says it's wired that way. - -config BACKLIGHT_ATMEL_PWM - tristate "Atmel PWM backlight control" - depends on ATMEL_PWM - help - Say Y here if you want to use the PWM peripheral in Atmel AT91 and - AVR32 devices. This driver will need additional platform data to know - which PWM instance to use and how to configure it. - - To compile this driver as a module, choose M here: the module will be - called atmel-pwm-bl. - -config BACKLIGHT_EP93XX - tristate "Cirrus EP93xx Backlight Driver" - depends on FB_EP93XX - help - If you have a LCD backlight connected to the BRIGHT output of - the EP93xx, say Y here to enable this driver. - - To compile this driver as a module, choose M here: the module will - be called ep93xx_bl. - -config BACKLIGHT_GENERIC - tristate "Generic (aka Sharp Corgi) Backlight Driver" - default y - help - Say y to enable the generic platform backlight driver previously - known as the Corgi backlight driver. If you have a Sharp Zaurus - SL-C7xx, SL-Cxx00 or SL-6000x say y. - -config BACKLIGHT_LOCOMO - tristate "Sharp LOCOMO LCD/Backlight Driver" - depends on SHARP_LOCOMO - default y - help - If you have a Sharp Zaurus SL-5500 (Collie) or SL-5600 (Poodle) say y to - enable the LCD/backlight driver. - -config BACKLIGHT_OMAP1 - tristate "OMAP1 PWL-based LCD Backlight" - depends on ARCH_OMAP1 - default y - help - This driver controls the LCD backlight level and power for - the PWL module of OMAP1 processors. Say Y if your board - uses this hardware. - -config BACKLIGHT_HP680 - tristate "HP Jornada 680 Backlight Driver" - depends on SH_HP6XX - default y - help - If you have a HP Jornada 680, say y to enable the - backlight driver. - -config BACKLIGHT_HP700 - tristate "HP Jornada 700 series Backlight Driver" - depends on SA1100_JORNADA720_SSP && !PREEMPT - default y - help - If you have an HP Jornada 700 series, - say Y to include backlight control driver. - -config BACKLIGHT_PROGEAR - tristate "Frontpath ProGear Backlight Driver" - depends on PCI && X86 - help - If you have a Frontpath ProGear say Y to enable the - backlight driver. - -config BACKLIGHT_CARILLO_RANCH - tristate "Intel Carillo Ranch Backlight Driver" - depends on LCD_CLASS_DEVICE && PCI && X86 && FB_LE80578 - help - If you have a Intel LE80578 (Carillo Ranch) say Y to enable the - backlight driver. - -config BACKLIGHT_PWM - tristate "Generic PWM based Backlight Driver" - depends on HAVE_PWM - help - If you have a LCD backlight adjustable by PWM, say Y to enable - this driver. - -config BACKLIGHT_DA903X - tristate "Backlight Driver for DA9030/DA9034 using WLED" - depends on PMIC_DA903X - help - If you have a LCD backlight connected to the WLED output of DA9030 - or DA9034 WLED output, say Y here to enable this driver. - -config BACKLIGHT_DA9052 - tristate "Dialog DA9052/DA9053 WLED" - depends on PMIC_DA9052 - help - Enable the Backlight Driver for DA9052-BC and DA9053-AA/Bx PMICs. - -config BACKLIGHT_MAX8925 - tristate "Backlight driver for MAX8925" - depends on MFD_MAX8925 - help - If you have a LCD backlight connected to the WLED output of MAX8925 - WLED output, say Y here to enable this driver. - -config BACKLIGHT_APPLE - tristate "Apple Backlight Driver" - depends on X86 && ACPI - help - If you have an Intel-based Apple say Y to enable a driver for its - backlight. - -config BACKLIGHT_TOSA - tristate "Sharp SL-6000 Backlight Driver" - depends on I2C && MACH_TOSA && LCD_TOSA - help - If you have an Sharp SL-6000 Zaurus say Y to enable a driver - for its backlight - -config BACKLIGHT_SAHARA - tristate "Tabletkiosk Sahara Touch-iT Backlight Driver" - depends on X86 - help - If you have a Tabletkiosk Sahara Touch-iT, say y to enable the - backlight driver. - -config BACKLIGHT_WM831X - tristate "WM831x PMIC Backlight Driver" - depends on MFD_WM831X - help - If you have a backlight driven by the ISINK and DCDC of a - WM831x PMIC say y to enable the backlight driver for it. - -config BACKLIGHT_ADP5520 - tristate "Backlight Driver for ADP5520/ADP5501 using WLED" - depends on PMIC_ADP5520 - help - If you have a LCD backlight connected to the BST/BL_SNK output of - ADP5520 or ADP5501, say Y here to enable this driver. - - To compile this driver as a module, choose M here: the module will - be called adp5520_bl. - -config BACKLIGHT_ADP8860 - tristate "Backlight Driver for ADP8860/ADP8861/ADP8863 using WLED" - depends on BACKLIGHT_CLASS_DEVICE && I2C - select NEW_LEDS - select LEDS_CLASS - help - If you have a LCD backlight connected to the ADP8860, ADP8861 or - ADP8863 say Y here to enable this driver. - - To compile this driver as a module, choose M here: the module will - be called adp8860_bl. - -config BACKLIGHT_ADP8870 - tristate "Backlight Driver for ADP8870 using WLED" - depends on BACKLIGHT_CLASS_DEVICE && I2C - select NEW_LEDS - select LEDS_CLASS - help - If you have a LCD backlight connected to the ADP8870, - say Y here to enable this driver. - - To compile this driver as a module, choose M here: the module will - be called adp8870_bl. - -config BACKLIGHT_88PM860X - tristate "Backlight Driver for 88PM8606 using WLED" - depends on MFD_88PM860X - help - Say Y to enable the backlight driver for Marvell 88PM8606. - -config BACKLIGHT_PCF50633 - tristate "Backlight driver for NXP PCF50633 MFD" - depends on BACKLIGHT_CLASS_DEVICE && MFD_PCF50633 - help - If you have a backlight driven by a NXP PCF50633 MFD, say Y here to - enable its driver. - -config BACKLIGHT_AAT2870 - tristate "AnalogicTech AAT2870 Backlight" - depends on BACKLIGHT_CLASS_DEVICE && MFD_AAT2870_CORE - help - If you have a AnalogicTech AAT2870 say Y to enable the - backlight driver. - -config BACKLIGHT_LP855X - tristate "Backlight driver for TI LP855X" - depends on BACKLIGHT_CLASS_DEVICE && I2C - help - This supports TI LP8550, LP8551, LP8552, LP8553 and LP8556 - backlight driver. - -config BACKLIGHT_OT200 - tristate "Backlight driver for ot200 visualisation device" - depends on BACKLIGHT_CLASS_DEVICE && CS5535_MFGPT && GPIO_CS5535 - help - To compile this driver as a module, choose M here: the module will be - called ot200_bl. - -config BACKLIGHT_PANDORA - tristate "Backlight driver for Pandora console" - depends on TWL4030_CORE - help - If you have a Pandora console, say Y to enable the - backlight driver. - -endif # BACKLIGHT_CLASS_DEVICE - -endif # BACKLIGHT_LCD_SUPPORT diff --git a/ANDROID_3.4.5/drivers/video/backlight/Makefile b/ANDROID_3.4.5/drivers/video/backlight/Makefile deleted file mode 100644 index 622f0008..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -# Backlight & LCD drivers - -obj-$(CONFIG_LCD_CLASS_DEVICE) += lcd.o -obj-$(CONFIG_LCD_CORGI) += corgi_lcd.o -obj-$(CONFIG_LCD_HP700) += jornada720_lcd.o -obj-$(CONFIG_LCD_L4F00242T03) += l4f00242t03.o -obj-$(CONFIG_LCD_LMS283GF05) += lms283gf05.o -obj-$(CONFIG_LCD_LTV350QV) += ltv350qv.o -obj-$(CONFIG_LCD_ILI9320) += ili9320.o -obj-$(CONFIG_LCD_PLATFORM) += platform_lcd.o -obj-$(CONFIG_LCD_VGG2432A4) += vgg2432a4.o -obj-$(CONFIG_LCD_TDO24M) += tdo24m.o -obj-$(CONFIG_LCD_TOSA) += tosa_lcd.o -obj-$(CONFIG_LCD_S6E63M0) += s6e63m0.o -obj-$(CONFIG_LCD_LD9040) += ld9040.o -obj-$(CONFIG_LCD_AMS369FG06) += ams369fg06.o - -obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE) += backlight.o -obj-$(CONFIG_BACKLIGHT_ATMEL_PWM) += atmel-pwm-bl.o -obj-$(CONFIG_BACKLIGHT_EP93XX) += ep93xx_bl.o -obj-$(CONFIG_BACKLIGHT_GENERIC) += generic_bl.o -obj-$(CONFIG_BACKLIGHT_HP700) += jornada720_bl.o -obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o -obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o -obj-$(CONFIG_BACKLIGHT_LP855X) += lp855x_bl.o -obj-$(CONFIG_BACKLIGHT_OMAP1) += omap1_bl.o -obj-$(CONFIG_BACKLIGHT_PANDORA) += pandora_bl.o -obj-$(CONFIG_BACKLIGHT_PROGEAR) += progear_bl.o -obj-$(CONFIG_BACKLIGHT_CARILLO_RANCH) += cr_bllcd.o -obj-$(CONFIG_BACKLIGHT_PWM) += pwm_bl.o -obj-$(CONFIG_BACKLIGHT_DA903X) += da903x_bl.o -obj-$(CONFIG_BACKLIGHT_DA9052) += da9052_bl.o -obj-$(CONFIG_BACKLIGHT_MAX8925) += max8925_bl.o -obj-$(CONFIG_BACKLIGHT_APPLE) += apple_bl.o -obj-$(CONFIG_BACKLIGHT_TOSA) += tosa_bl.o -obj-$(CONFIG_BACKLIGHT_SAHARA) += kb3886_bl.o -obj-$(CONFIG_BACKLIGHT_WM831X) += wm831x_bl.o -obj-$(CONFIG_BACKLIGHT_ADP5520) += adp5520_bl.o -obj-$(CONFIG_BACKLIGHT_ADP8860) += adp8860_bl.o -obj-$(CONFIG_BACKLIGHT_ADP8870) += adp8870_bl.o -obj-$(CONFIG_BACKLIGHT_88PM860X) += 88pm860x_bl.o -obj-$(CONFIG_BACKLIGHT_PCF50633) += pcf50633-backlight.o -obj-$(CONFIG_BACKLIGHT_AAT2870) += aat2870_bl.o -obj-$(CONFIG_BACKLIGHT_OT200) += ot200_bl.o -#obj-$(CONFIG_BACKLIGHT_WMT) += wmt_bl.o -obj-y += wmt_bl.o diff --git a/ANDROID_3.4.5/drivers/video/backlight/aat2870_bl.c b/ANDROID_3.4.5/drivers/video/backlight/aat2870_bl.c deleted file mode 100644 index 7ff75228..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/aat2870_bl.c +++ /dev/null @@ -1,245 +0,0 @@ -/* - * linux/drivers/video/backlight/aat2870_bl.c - * - * Copyright (c) 2011, NVIDIA Corporation. - * Author: Jin Park - * - * 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. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct aat2870_bl_driver_data { - struct platform_device *pdev; - struct backlight_device *bd; - - int channels; - int max_current; - int brightness; /* current brightness */ -}; - -static inline int aat2870_brightness(struct aat2870_bl_driver_data *aat2870_bl, - int brightness) -{ - struct backlight_device *bd = aat2870_bl->bd; - int val; - - val = brightness * (aat2870_bl->max_current - 1); - val /= bd->props.max_brightness; - - return val; -} - -static inline int aat2870_bl_enable(struct aat2870_bl_driver_data *aat2870_bl) -{ - struct aat2870_data *aat2870 - = dev_get_drvdata(aat2870_bl->pdev->dev.parent); - - return aat2870->write(aat2870, AAT2870_BL_CH_EN, - (u8)aat2870_bl->channels); -} - -static inline int aat2870_bl_disable(struct aat2870_bl_driver_data *aat2870_bl) -{ - struct aat2870_data *aat2870 - = dev_get_drvdata(aat2870_bl->pdev->dev.parent); - - return aat2870->write(aat2870, AAT2870_BL_CH_EN, 0x0); -} - -static int aat2870_bl_get_brightness(struct backlight_device *bd) -{ - return bd->props.brightness; -} - -static int aat2870_bl_update_status(struct backlight_device *bd) -{ - struct aat2870_bl_driver_data *aat2870_bl = dev_get_drvdata(&bd->dev); - struct aat2870_data *aat2870 = - dev_get_drvdata(aat2870_bl->pdev->dev.parent); - int brightness = bd->props.brightness; - int ret; - - if ((brightness < 0) || (bd->props.max_brightness < brightness)) { - dev_err(&bd->dev, "invalid brightness, %d\n", brightness); - return -EINVAL; - } - - dev_dbg(&bd->dev, "brightness=%d, power=%d, state=%d\n", - bd->props.brightness, bd->props.power, bd->props.state); - - if ((bd->props.power != FB_BLANK_UNBLANK) || - (bd->props.state & BL_CORE_FBBLANK) || - (bd->props.state & BL_CORE_SUSPENDED)) - brightness = 0; - - ret = aat2870->write(aat2870, AAT2870_BLM, - (u8)aat2870_brightness(aat2870_bl, brightness)); - if (ret < 0) - return ret; - - if (brightness == 0) { - ret = aat2870_bl_disable(aat2870_bl); - if (ret < 0) - return ret; - } else if (aat2870_bl->brightness == 0) { - ret = aat2870_bl_enable(aat2870_bl); - if (ret < 0) - return ret; - } - - aat2870_bl->brightness = brightness; - - return 0; -} - -static int aat2870_bl_check_fb(struct backlight_device *bd, struct fb_info *fi) -{ - return 1; -} - -static const struct backlight_ops aat2870_bl_ops = { - .options = BL_CORE_SUSPENDRESUME, - .get_brightness = aat2870_bl_get_brightness, - .update_status = aat2870_bl_update_status, - .check_fb = aat2870_bl_check_fb, -}; - -static int aat2870_bl_probe(struct platform_device *pdev) -{ - struct aat2870_bl_platform_data *pdata = pdev->dev.platform_data; - struct aat2870_bl_driver_data *aat2870_bl; - struct backlight_device *bd; - struct backlight_properties props; - int ret = 0; - - if (!pdata) { - dev_err(&pdev->dev, "No platform data\n"); - ret = -ENXIO; - goto out; - } - - if (pdev->id != AAT2870_ID_BL) { - dev_err(&pdev->dev, "Invalid device ID, %d\n", pdev->id); - ret = -EINVAL; - goto out; - } - - aat2870_bl = devm_kzalloc(&pdev->dev, - sizeof(struct aat2870_bl_driver_data), - GFP_KERNEL); - if (!aat2870_bl) { - dev_err(&pdev->dev, - "Failed to allocate memory for aat2870 backlight\n"); - ret = -ENOMEM; - goto out; - } - - memset(&props, 0, sizeof(struct backlight_properties)); - - props.type = BACKLIGHT_RAW; - bd = backlight_device_register("aat2870-backlight", &pdev->dev, - aat2870_bl, &aat2870_bl_ops, &props); - if (IS_ERR(bd)) { - dev_err(&pdev->dev, - "Failed allocate memory for backlight device\n"); - ret = PTR_ERR(bd); - goto out; - } - - aat2870_bl->pdev = pdev; - platform_set_drvdata(pdev, aat2870_bl); - - aat2870_bl->bd = bd; - - if (pdata->channels > 0) - aat2870_bl->channels = pdata->channels; - else - aat2870_bl->channels = AAT2870_BL_CH_ALL; - - if (pdata->max_current > 0) - aat2870_bl->max_current = pdata->max_current; - else - aat2870_bl->max_current = AAT2870_CURRENT_27_9; - - if (pdata->max_brightness > 0) - bd->props.max_brightness = pdata->max_brightness; - else - bd->props.max_brightness = 255; - - aat2870_bl->brightness = 0; - bd->props.power = FB_BLANK_UNBLANK; - bd->props.brightness = bd->props.max_brightness; - - ret = aat2870_bl_update_status(bd); - if (ret < 0) { - dev_err(&pdev->dev, "Failed to initialize\n"); - goto out_bl_dev_unregister; - } - - return 0; - -out_bl_dev_unregister: - backlight_device_unregister(bd); -out: - return ret; -} - -static int aat2870_bl_remove(struct platform_device *pdev) -{ - struct aat2870_bl_driver_data *aat2870_bl = platform_get_drvdata(pdev); - struct backlight_device *bd = aat2870_bl->bd; - - bd->props.power = FB_BLANK_POWERDOWN; - bd->props.brightness = 0; - backlight_update_status(bd); - - backlight_device_unregister(bd); - - return 0; -} - -static struct platform_driver aat2870_bl_driver = { - .driver = { - .name = "aat2870-backlight", - .owner = THIS_MODULE, - }, - .probe = aat2870_bl_probe, - .remove = aat2870_bl_remove, -}; - -static int __init aat2870_bl_init(void) -{ - return platform_driver_register(&aat2870_bl_driver); -} -subsys_initcall(aat2870_bl_init); - -static void __exit aat2870_bl_exit(void) -{ - platform_driver_unregister(&aat2870_bl_driver); -} -module_exit(aat2870_bl_exit); - -MODULE_DESCRIPTION("AnalogicTech AAT2870 Backlight"); -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Jin Park "); diff --git a/ANDROID_3.4.5/drivers/video/backlight/adp5520_bl.c b/ANDROID_3.4.5/drivers/video/backlight/adp5520_bl.c deleted file mode 100644 index 4911ea79..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/adp5520_bl.c +++ /dev/null @@ -1,388 +0,0 @@ -/* - * Backlight driver for Analog Devices ADP5520/ADP5501 MFD PMICs - * - * Copyright 2009 Analog Devices Inc. - * - * Licensed under the GPL-2 or later. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -struct adp5520_bl { - struct device *master; - struct adp5520_backlight_platform_data *pdata; - struct mutex lock; - unsigned long cached_daylight_max; - int id; - int current_brightness; -}; - -static int adp5520_bl_set(struct backlight_device *bl, int brightness) -{ - struct adp5520_bl *data = bl_get_data(bl); - struct device *master = data->master; - int ret = 0; - - if (data->pdata->en_ambl_sens) { - if ((brightness > 0) && (brightness < ADP5020_MAX_BRIGHTNESS)) { - /* Disable Ambient Light auto adjust */ - ret |= adp5520_clr_bits(master, ADP5520_BL_CONTROL, - ADP5520_BL_AUTO_ADJ); - ret |= adp5520_write(master, ADP5520_DAYLIGHT_MAX, - brightness); - } else { - /* - * MAX_BRIGHTNESS -> Enable Ambient Light auto adjust - * restore daylight l3 sysfs brightness - */ - ret |= adp5520_write(master, ADP5520_DAYLIGHT_MAX, - data->cached_daylight_max); - ret |= adp5520_set_bits(master, ADP5520_BL_CONTROL, - ADP5520_BL_AUTO_ADJ); - } - } else { - ret |= adp5520_write(master, ADP5520_DAYLIGHT_MAX, brightness); - } - - if (data->current_brightness && brightness == 0) - ret |= adp5520_set_bits(master, - ADP5520_MODE_STATUS, ADP5520_DIM_EN); - else if (data->current_brightness == 0 && brightness) - ret |= adp5520_clr_bits(master, - ADP5520_MODE_STATUS, ADP5520_DIM_EN); - - if (!ret) - data->current_brightness = brightness; - - return ret; -} - -static int adp5520_bl_update_status(struct backlight_device *bl) -{ - int brightness = bl->props.brightness; - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return adp5520_bl_set(bl, brightness); -} - -static int adp5520_bl_get_brightness(struct backlight_device *bl) -{ - struct adp5520_bl *data = bl_get_data(bl); - int error; - uint8_t reg_val; - - error = adp5520_read(data->master, ADP5520_BL_VALUE, ®_val); - - return error ? data->current_brightness : reg_val; -} - -static const struct backlight_ops adp5520_bl_ops = { - .update_status = adp5520_bl_update_status, - .get_brightness = adp5520_bl_get_brightness, -}; - -static int adp5520_bl_setup(struct backlight_device *bl) -{ - struct adp5520_bl *data = bl_get_data(bl); - struct device *master = data->master; - struct adp5520_backlight_platform_data *pdata = data->pdata; - int ret = 0; - - ret |= adp5520_write(master, ADP5520_DAYLIGHT_MAX, - pdata->l1_daylight_max); - ret |= adp5520_write(master, ADP5520_DAYLIGHT_DIM, - pdata->l1_daylight_dim); - - if (pdata->en_ambl_sens) { - data->cached_daylight_max = pdata->l1_daylight_max; - ret |= adp5520_write(master, ADP5520_OFFICE_MAX, - pdata->l2_office_max); - ret |= adp5520_write(master, ADP5520_OFFICE_DIM, - pdata->l2_office_dim); - ret |= adp5520_write(master, ADP5520_DARK_MAX, - pdata->l3_dark_max); - ret |= adp5520_write(master, ADP5520_DARK_DIM, - pdata->l3_dark_dim); - ret |= adp5520_write(master, ADP5520_L2_TRIP, - pdata->l2_trip); - ret |= adp5520_write(master, ADP5520_L2_HYS, - pdata->l2_hyst); - ret |= adp5520_write(master, ADP5520_L3_TRIP, - pdata->l3_trip); - ret |= adp5520_write(master, ADP5520_L3_HYS, - pdata->l3_hyst); - ret |= adp5520_write(master, ADP5520_ALS_CMPR_CFG, - ALS_CMPR_CFG_VAL(pdata->abml_filt, - ADP5520_L3_EN)); - } - - ret |= adp5520_write(master, ADP5520_BL_CONTROL, - BL_CTRL_VAL(pdata->fade_led_law, - pdata->en_ambl_sens)); - - ret |= adp5520_write(master, ADP5520_BL_FADE, FADE_VAL(pdata->fade_in, - pdata->fade_out)); - - ret |= adp5520_set_bits(master, ADP5520_MODE_STATUS, - ADP5520_BL_EN | ADP5520_DIM_EN); - - return ret; -} - -static ssize_t adp5520_show(struct device *dev, char *buf, int reg) -{ - struct adp5520_bl *data = dev_get_drvdata(dev); - int error; - uint8_t reg_val; - - mutex_lock(&data->lock); - error = adp5520_read(data->master, reg, ®_val); - mutex_unlock(&data->lock); - - return sprintf(buf, "%u\n", reg_val); -} - -static ssize_t adp5520_store(struct device *dev, const char *buf, - size_t count, int reg) -{ - struct adp5520_bl *data = dev_get_drvdata(dev); - unsigned long val; - int ret; - - ret = strict_strtoul(buf, 10, &val); - if (ret) - return ret; - - mutex_lock(&data->lock); - adp5520_write(data->master, reg, val); - mutex_unlock(&data->lock); - - return count; -} - -static ssize_t adp5520_bl_dark_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp5520_show(dev, buf, ADP5520_DARK_MAX); -} - -static ssize_t adp5520_bl_dark_max_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp5520_store(dev, buf, count, ADP5520_DARK_MAX); -} -static DEVICE_ATTR(dark_max, 0664, adp5520_bl_dark_max_show, - adp5520_bl_dark_max_store); - -static ssize_t adp5520_bl_office_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp5520_show(dev, buf, ADP5520_OFFICE_MAX); -} - -static ssize_t adp5520_bl_office_max_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp5520_store(dev, buf, count, ADP5520_OFFICE_MAX); -} -static DEVICE_ATTR(office_max, 0664, adp5520_bl_office_max_show, - adp5520_bl_office_max_store); - -static ssize_t adp5520_bl_daylight_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp5520_show(dev, buf, ADP5520_DAYLIGHT_MAX); -} - -static ssize_t adp5520_bl_daylight_max_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - struct adp5520_bl *data = dev_get_drvdata(dev); - int ret; - - ret = strict_strtoul(buf, 10, &data->cached_daylight_max); - if (ret < 0) - return ret; - - return adp5520_store(dev, buf, count, ADP5520_DAYLIGHT_MAX); -} -static DEVICE_ATTR(daylight_max, 0664, adp5520_bl_daylight_max_show, - adp5520_bl_daylight_max_store); - -static ssize_t adp5520_bl_dark_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp5520_show(dev, buf, ADP5520_DARK_DIM); -} - -static ssize_t adp5520_bl_dark_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp5520_store(dev, buf, count, ADP5520_DARK_DIM); -} -static DEVICE_ATTR(dark_dim, 0664, adp5520_bl_dark_dim_show, - adp5520_bl_dark_dim_store); - -static ssize_t adp5520_bl_office_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp5520_show(dev, buf, ADP5520_OFFICE_DIM); -} - -static ssize_t adp5520_bl_office_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp5520_store(dev, buf, count, ADP5520_OFFICE_DIM); -} -static DEVICE_ATTR(office_dim, 0664, adp5520_bl_office_dim_show, - adp5520_bl_office_dim_store); - -static ssize_t adp5520_bl_daylight_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp5520_show(dev, buf, ADP5520_DAYLIGHT_DIM); -} - -static ssize_t adp5520_bl_daylight_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp5520_store(dev, buf, count, ADP5520_DAYLIGHT_DIM); -} -static DEVICE_ATTR(daylight_dim, 0664, adp5520_bl_daylight_dim_show, - adp5520_bl_daylight_dim_store); - -static struct attribute *adp5520_bl_attributes[] = { - &dev_attr_dark_max.attr, - &dev_attr_dark_dim.attr, - &dev_attr_office_max.attr, - &dev_attr_office_dim.attr, - &dev_attr_daylight_max.attr, - &dev_attr_daylight_dim.attr, - NULL -}; - -static const struct attribute_group adp5520_bl_attr_group = { - .attrs = adp5520_bl_attributes, -}; - -static int __devinit adp5520_bl_probe(struct platform_device *pdev) -{ - struct backlight_properties props; - struct backlight_device *bl; - struct adp5520_bl *data; - int ret = 0; - - data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); - if (data == NULL) - return -ENOMEM; - - data->master = pdev->dev.parent; - data->pdata = pdev->dev.platform_data; - - if (data->pdata == NULL) { - dev_err(&pdev->dev, "missing platform data\n"); - return -ENODEV; - } - - data->id = pdev->id; - data->current_brightness = 0; - - mutex_init(&data->lock); - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_RAW; - props.max_brightness = ADP5020_MAX_BRIGHTNESS; - bl = backlight_device_register(pdev->name, data->master, data, - &adp5520_bl_ops, &props); - if (IS_ERR(bl)) { - dev_err(&pdev->dev, "failed to register backlight\n"); - return PTR_ERR(bl); - } - - bl->props.brightness = ADP5020_MAX_BRIGHTNESS; - if (data->pdata->en_ambl_sens) - ret = sysfs_create_group(&bl->dev.kobj, - &adp5520_bl_attr_group); - - if (ret) { - dev_err(&pdev->dev, "failed to register sysfs\n"); - backlight_device_unregister(bl); - } - - platform_set_drvdata(pdev, bl); - ret |= adp5520_bl_setup(bl); - backlight_update_status(bl); - - return ret; -} - -static int __devexit adp5520_bl_remove(struct platform_device *pdev) -{ - struct backlight_device *bl = platform_get_drvdata(pdev); - struct adp5520_bl *data = bl_get_data(bl); - - adp5520_clr_bits(data->master, ADP5520_MODE_STATUS, ADP5520_BL_EN); - - if (data->pdata->en_ambl_sens) - sysfs_remove_group(&bl->dev.kobj, - &adp5520_bl_attr_group); - - backlight_device_unregister(bl); - - return 0; -} - -#ifdef CONFIG_PM -static int adp5520_bl_suspend(struct platform_device *pdev, - pm_message_t state) -{ - struct backlight_device *bl = platform_get_drvdata(pdev); - return adp5520_bl_set(bl, 0); -} - -static int adp5520_bl_resume(struct platform_device *pdev) -{ - struct backlight_device *bl = platform_get_drvdata(pdev); - - backlight_update_status(bl); - return 0; -} -#else -#define adp5520_bl_suspend NULL -#define adp5520_bl_resume NULL -#endif - -static struct platform_driver adp5520_bl_driver = { - .driver = { - .name = "adp5520-backlight", - .owner = THIS_MODULE, - }, - .probe = adp5520_bl_probe, - .remove = __devexit_p(adp5520_bl_remove), - .suspend = adp5520_bl_suspend, - .resume = adp5520_bl_resume, -}; - -module_platform_driver(adp5520_bl_driver); - -MODULE_AUTHOR("Michael Hennerich "); -MODULE_DESCRIPTION("ADP5520(01) Backlight Driver"); -MODULE_LICENSE("GPL"); -MODULE_ALIAS("platform:adp5520-backlight"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/adp8860_bl.c b/ANDROID_3.4.5/drivers/video/backlight/adp8860_bl.c deleted file mode 100644 index 550dbf0b..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/adp8860_bl.c +++ /dev/null @@ -1,827 +0,0 @@ -/* - * Backlight driver for Analog Devices ADP8860 Backlight Devices - * - * Copyright 2009-2010 Analog Devices Inc. - * - * Licensed under the GPL-2 or later. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#define ADP8860_EXT_FEATURES -#define ADP8860_USE_LEDS - -#define ADP8860_MFDVID 0x00 /* Manufacturer and device ID */ -#define ADP8860_MDCR 0x01 /* Device mode and status */ -#define ADP8860_MDCR2 0x02 /* Device mode and Status Register 2 */ -#define ADP8860_INTR_EN 0x03 /* Interrupts enable */ -#define ADP8860_CFGR 0x04 /* Configuration register */ -#define ADP8860_BLSEN 0x05 /* Sink enable backlight or independent */ -#define ADP8860_BLOFF 0x06 /* Backlight off timeout */ -#define ADP8860_BLDIM 0x07 /* Backlight dim timeout */ -#define ADP8860_BLFR 0x08 /* Backlight fade in and out rates */ -#define ADP8860_BLMX1 0x09 /* Backlight (Brightness Level 1-daylight) maximum current */ -#define ADP8860_BLDM1 0x0A /* Backlight (Brightness Level 1-daylight) dim current */ -#define ADP8860_BLMX2 0x0B /* Backlight (Brightness Level 2-office) maximum current */ -#define ADP8860_BLDM2 0x0C /* Backlight (Brightness Level 2-office) dim current */ -#define ADP8860_BLMX3 0x0D /* Backlight (Brightness Level 3-dark) maximum current */ -#define ADP8860_BLDM3 0x0E /* Backlight (Brightness Level 3-dark) dim current */ -#define ADP8860_ISCFR 0x0F /* Independent sink current fade control register */ -#define ADP8860_ISCC 0x10 /* Independent sink current control register */ -#define ADP8860_ISCT1 0x11 /* Independent Sink Current Timer Register LED[7:5] */ -#define ADP8860_ISCT2 0x12 /* Independent Sink Current Timer Register LED[4:1] */ -#define ADP8860_ISCF 0x13 /* Independent sink current fade register */ -#define ADP8860_ISC7 0x14 /* Independent Sink Current LED7 */ -#define ADP8860_ISC6 0x15 /* Independent Sink Current LED6 */ -#define ADP8860_ISC5 0x16 /* Independent Sink Current LED5 */ -#define ADP8860_ISC4 0x17 /* Independent Sink Current LED4 */ -#define ADP8860_ISC3 0x18 /* Independent Sink Current LED3 */ -#define ADP8860_ISC2 0x19 /* Independent Sink Current LED2 */ -#define ADP8860_ISC1 0x1A /* Independent Sink Current LED1 */ -#define ADP8860_CCFG 0x1B /* Comparator configuration */ -#define ADP8860_CCFG2 0x1C /* Second comparator configuration */ -#define ADP8860_L2_TRP 0x1D /* L2 comparator reference */ -#define ADP8860_L2_HYS 0x1E /* L2 hysteresis */ -#define ADP8860_L3_TRP 0x1F /* L3 comparator reference */ -#define ADP8860_L3_HYS 0x20 /* L3 hysteresis */ -#define ADP8860_PH1LEVL 0x21 /* First phototransistor ambient light level-low byte register */ -#define ADP8860_PH1LEVH 0x22 /* First phototransistor ambient light level-high byte register */ -#define ADP8860_PH2LEVL 0x23 /* Second phototransistor ambient light level-low byte register */ -#define ADP8860_PH2LEVH 0x24 /* Second phototransistor ambient light level-high byte register */ - -#define ADP8860_MANUFID 0x0 /* Analog Devices ADP8860 Manufacturer ID */ -#define ADP8861_MANUFID 0x4 /* Analog Devices ADP8861 Manufacturer ID */ -#define ADP8863_MANUFID 0x2 /* Analog Devices ADP8863 Manufacturer ID */ - -#define ADP8860_DEVID(x) ((x) & 0xF) -#define ADP8860_MANID(x) ((x) >> 4) - -/* MDCR Device mode and status */ -#define INT_CFG (1 << 6) -#define NSTBY (1 << 5) -#define DIM_EN (1 << 4) -#define GDWN_DIS (1 << 3) -#define SIS_EN (1 << 2) -#define CMP_AUTOEN (1 << 1) -#define BLEN (1 << 0) - -/* ADP8860_CCFG Main ALS comparator level enable */ -#define L3_EN (1 << 1) -#define L2_EN (1 << 0) - -#define CFGR_BLV_SHIFT 3 -#define CFGR_BLV_MASK 0x3 -#define ADP8860_FLAG_LED_MASK 0xFF - -#define FADE_VAL(in, out) ((0xF & (in)) | ((0xF & (out)) << 4)) -#define BL_CFGR_VAL(law, blv) ((((blv) & CFGR_BLV_MASK) << CFGR_BLV_SHIFT) | ((0x3 & (law)) << 1)) -#define ALS_CCFG_VAL(filt) ((0x7 & filt) << 5) - -enum { - adp8860, - adp8861, - adp8863 -}; - -struct adp8860_led { - struct led_classdev cdev; - struct work_struct work; - struct i2c_client *client; - enum led_brightness new_brightness; - int id; - int flags; -}; - -struct adp8860_bl { - struct i2c_client *client; - struct backlight_device *bl; - struct adp8860_led *led; - struct adp8860_backlight_platform_data *pdata; - struct mutex lock; - unsigned long cached_daylight_max; - int id; - int revid; - int current_brightness; - unsigned en_ambl_sens:1; - unsigned gdwn_dis:1; -}; - -static int adp8860_read(struct i2c_client *client, int reg, uint8_t *val) -{ - int ret; - - ret = i2c_smbus_read_byte_data(client, reg); - if (ret < 0) { - dev_err(&client->dev, "failed reading at 0x%02x\n", reg); - return ret; - } - - *val = (uint8_t)ret; - return 0; -} - -static int adp8860_write(struct i2c_client *client, u8 reg, u8 val) -{ - return i2c_smbus_write_byte_data(client, reg, val); -} - -static int adp8860_set_bits(struct i2c_client *client, int reg, uint8_t bit_mask) -{ - struct adp8860_bl *data = i2c_get_clientdata(client); - uint8_t reg_val; - int ret; - - mutex_lock(&data->lock); - - ret = adp8860_read(client, reg, ®_val); - - if (!ret && ((reg_val & bit_mask) != bit_mask)) { - reg_val |= bit_mask; - ret = adp8860_write(client, reg, reg_val); - } - - mutex_unlock(&data->lock); - return ret; -} - -static int adp8860_clr_bits(struct i2c_client *client, int reg, uint8_t bit_mask) -{ - struct adp8860_bl *data = i2c_get_clientdata(client); - uint8_t reg_val; - int ret; - - mutex_lock(&data->lock); - - ret = adp8860_read(client, reg, ®_val); - - if (!ret && (reg_val & bit_mask)) { - reg_val &= ~bit_mask; - ret = adp8860_write(client, reg, reg_val); - } - - mutex_unlock(&data->lock); - return ret; -} - -/* - * Independent sink / LED - */ -#if defined(ADP8860_USE_LEDS) -static void adp8860_led_work(struct work_struct *work) -{ - struct adp8860_led *led = container_of(work, struct adp8860_led, work); - adp8860_write(led->client, ADP8860_ISC1 - led->id + 1, - led->new_brightness >> 1); -} - -static void adp8860_led_set(struct led_classdev *led_cdev, - enum led_brightness value) -{ - struct adp8860_led *led; - - led = container_of(led_cdev, struct adp8860_led, cdev); - led->new_brightness = value; - schedule_work(&led->work); -} - -static int adp8860_led_setup(struct adp8860_led *led) -{ - struct i2c_client *client = led->client; - int ret = 0; - - ret = adp8860_write(client, ADP8860_ISC1 - led->id + 1, 0); - ret |= adp8860_set_bits(client, ADP8860_ISCC, 1 << (led->id - 1)); - - if (led->id > 4) - ret |= adp8860_set_bits(client, ADP8860_ISCT1, - (led->flags & 0x3) << ((led->id - 5) * 2)); - else - ret |= adp8860_set_bits(client, ADP8860_ISCT2, - (led->flags & 0x3) << ((led->id - 1) * 2)); - - return ret; -} - -static int __devinit adp8860_led_probe(struct i2c_client *client) -{ - struct adp8860_backlight_platform_data *pdata = - client->dev.platform_data; - struct adp8860_bl *data = i2c_get_clientdata(client); - struct adp8860_led *led, *led_dat; - struct led_info *cur_led; - int ret, i; - - led = kzalloc(sizeof(*led) * pdata->num_leds, GFP_KERNEL); - if (led == NULL) { - dev_err(&client->dev, "failed to alloc memory\n"); - return -ENOMEM; - } - - ret = adp8860_write(client, ADP8860_ISCFR, pdata->led_fade_law); - ret = adp8860_write(client, ADP8860_ISCT1, - (pdata->led_on_time & 0x3) << 6); - ret |= adp8860_write(client, ADP8860_ISCF, - FADE_VAL(pdata->led_fade_in, pdata->led_fade_out)); - - if (ret) { - dev_err(&client->dev, "failed to write\n"); - goto err_free; - } - - for (i = 0; i < pdata->num_leds; ++i) { - cur_led = &pdata->leds[i]; - led_dat = &led[i]; - - led_dat->id = cur_led->flags & ADP8860_FLAG_LED_MASK; - - if (led_dat->id > 7 || led_dat->id < 1) { - dev_err(&client->dev, "Invalid LED ID %d\n", - led_dat->id); - goto err; - } - - if (pdata->bl_led_assign & (1 << (led_dat->id - 1))) { - dev_err(&client->dev, "LED %d used by Backlight\n", - led_dat->id); - goto err; - } - - led_dat->cdev.name = cur_led->name; - led_dat->cdev.default_trigger = cur_led->default_trigger; - led_dat->cdev.brightness_set = adp8860_led_set; - led_dat->cdev.brightness = LED_OFF; - led_dat->flags = cur_led->flags >> FLAG_OFFT_SHIFT; - led_dat->client = client; - led_dat->new_brightness = LED_OFF; - INIT_WORK(&led_dat->work, adp8860_led_work); - - ret = led_classdev_register(&client->dev, &led_dat->cdev); - if (ret) { - dev_err(&client->dev, "failed to register LED %d\n", - led_dat->id); - goto err; - } - - ret = adp8860_led_setup(led_dat); - if (ret) { - dev_err(&client->dev, "failed to write\n"); - i++; - goto err; - } - } - - data->led = led; - - return 0; - - err: - for (i = i - 1; i >= 0; --i) { - led_classdev_unregister(&led[i].cdev); - cancel_work_sync(&led[i].work); - } - - err_free: - kfree(led); - - return ret; -} - -static int __devexit adp8860_led_remove(struct i2c_client *client) -{ - struct adp8860_backlight_platform_data *pdata = - client->dev.platform_data; - struct adp8860_bl *data = i2c_get_clientdata(client); - int i; - - for (i = 0; i < pdata->num_leds; i++) { - led_classdev_unregister(&data->led[i].cdev); - cancel_work_sync(&data->led[i].work); - } - - kfree(data->led); - return 0; -} -#else -static int __devinit adp8860_led_probe(struct i2c_client *client) -{ - return 0; -} - -static int __devexit adp8860_led_remove(struct i2c_client *client) -{ - return 0; -} -#endif - -static int adp8860_bl_set(struct backlight_device *bl, int brightness) -{ - struct adp8860_bl *data = bl_get_data(bl); - struct i2c_client *client = data->client; - int ret = 0; - - if (data->en_ambl_sens) { - if ((brightness > 0) && (brightness < ADP8860_MAX_BRIGHTNESS)) { - /* Disable Ambient Light auto adjust */ - ret |= adp8860_clr_bits(client, ADP8860_MDCR, - CMP_AUTOEN); - ret |= adp8860_write(client, ADP8860_BLMX1, brightness); - } else { - /* - * MAX_BRIGHTNESS -> Enable Ambient Light auto adjust - * restore daylight l1 sysfs brightness - */ - ret |= adp8860_write(client, ADP8860_BLMX1, - data->cached_daylight_max); - ret |= adp8860_set_bits(client, ADP8860_MDCR, - CMP_AUTOEN); - } - } else - ret |= adp8860_write(client, ADP8860_BLMX1, brightness); - - if (data->current_brightness && brightness == 0) - ret |= adp8860_set_bits(client, - ADP8860_MDCR, DIM_EN); - else if (data->current_brightness == 0 && brightness) - ret |= adp8860_clr_bits(client, - ADP8860_MDCR, DIM_EN); - - if (!ret) - data->current_brightness = brightness; - - return ret; -} - -static int adp8860_bl_update_status(struct backlight_device *bl) -{ - int brightness = bl->props.brightness; - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return adp8860_bl_set(bl, brightness); -} - -static int adp8860_bl_get_brightness(struct backlight_device *bl) -{ - struct adp8860_bl *data = bl_get_data(bl); - - return data->current_brightness; -} - -static const struct backlight_ops adp8860_bl_ops = { - .update_status = adp8860_bl_update_status, - .get_brightness = adp8860_bl_get_brightness, -}; - -static int adp8860_bl_setup(struct backlight_device *bl) -{ - struct adp8860_bl *data = bl_get_data(bl); - struct i2c_client *client = data->client; - struct adp8860_backlight_platform_data *pdata = data->pdata; - int ret = 0; - - ret |= adp8860_write(client, ADP8860_BLSEN, ~pdata->bl_led_assign); - ret |= adp8860_write(client, ADP8860_BLMX1, pdata->l1_daylight_max); - ret |= adp8860_write(client, ADP8860_BLDM1, pdata->l1_daylight_dim); - - if (data->en_ambl_sens) { - data->cached_daylight_max = pdata->l1_daylight_max; - ret |= adp8860_write(client, ADP8860_BLMX2, - pdata->l2_office_max); - ret |= adp8860_write(client, ADP8860_BLDM2, - pdata->l2_office_dim); - ret |= adp8860_write(client, ADP8860_BLMX3, - pdata->l3_dark_max); - ret |= adp8860_write(client, ADP8860_BLDM3, - pdata->l3_dark_dim); - - ret |= adp8860_write(client, ADP8860_L2_TRP, pdata->l2_trip); - ret |= adp8860_write(client, ADP8860_L2_HYS, pdata->l2_hyst); - ret |= adp8860_write(client, ADP8860_L3_TRP, pdata->l3_trip); - ret |= adp8860_write(client, ADP8860_L3_HYS, pdata->l3_hyst); - ret |= adp8860_write(client, ADP8860_CCFG, L2_EN | L3_EN | - ALS_CCFG_VAL(pdata->abml_filt)); - } - - ret |= adp8860_write(client, ADP8860_CFGR, - BL_CFGR_VAL(pdata->bl_fade_law, 0)); - - ret |= adp8860_write(client, ADP8860_BLFR, FADE_VAL(pdata->bl_fade_in, - pdata->bl_fade_out)); - - ret |= adp8860_set_bits(client, ADP8860_MDCR, BLEN | DIM_EN | NSTBY | - (data->gdwn_dis ? GDWN_DIS : 0)); - - return ret; -} - -static ssize_t adp8860_show(struct device *dev, char *buf, int reg) -{ - struct adp8860_bl *data = dev_get_drvdata(dev); - int error; - uint8_t reg_val; - - mutex_lock(&data->lock); - error = adp8860_read(data->client, reg, ®_val); - mutex_unlock(&data->lock); - - if (error < 0) - return error; - - return sprintf(buf, "%u\n", reg_val); -} - -static ssize_t adp8860_store(struct device *dev, const char *buf, - size_t count, int reg) -{ - struct adp8860_bl *data = dev_get_drvdata(dev); - unsigned long val; - int ret; - - ret = strict_strtoul(buf, 10, &val); - if (ret) - return ret; - - mutex_lock(&data->lock); - adp8860_write(data->client, reg, val); - mutex_unlock(&data->lock); - - return count; -} - -static ssize_t adp8860_bl_l3_dark_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8860_show(dev, buf, ADP8860_BLMX3); -} - -static ssize_t adp8860_bl_l3_dark_max_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) -{ - return adp8860_store(dev, buf, count, ADP8860_BLMX3); -} - -static DEVICE_ATTR(l3_dark_max, 0664, adp8860_bl_l3_dark_max_show, - adp8860_bl_l3_dark_max_store); - -static ssize_t adp8860_bl_l2_office_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8860_show(dev, buf, ADP8860_BLMX2); -} - -static ssize_t adp8860_bl_l2_office_max_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) -{ - return adp8860_store(dev, buf, count, ADP8860_BLMX2); -} -static DEVICE_ATTR(l2_office_max, 0664, adp8860_bl_l2_office_max_show, - adp8860_bl_l2_office_max_store); - -static ssize_t adp8860_bl_l1_daylight_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8860_show(dev, buf, ADP8860_BLMX1); -} - -static ssize_t adp8860_bl_l1_daylight_max_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) -{ - struct adp8860_bl *data = dev_get_drvdata(dev); - int ret = strict_strtoul(buf, 10, &data->cached_daylight_max); - if (ret) - return ret; - - return adp8860_store(dev, buf, count, ADP8860_BLMX1); -} -static DEVICE_ATTR(l1_daylight_max, 0664, adp8860_bl_l1_daylight_max_show, - adp8860_bl_l1_daylight_max_store); - -static ssize_t adp8860_bl_l3_dark_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8860_show(dev, buf, ADP8860_BLDM3); -} - -static ssize_t adp8860_bl_l3_dark_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp8860_store(dev, buf, count, ADP8860_BLDM3); -} -static DEVICE_ATTR(l3_dark_dim, 0664, adp8860_bl_l3_dark_dim_show, - adp8860_bl_l3_dark_dim_store); - -static ssize_t adp8860_bl_l2_office_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8860_show(dev, buf, ADP8860_BLDM2); -} - -static ssize_t adp8860_bl_l2_office_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp8860_store(dev, buf, count, ADP8860_BLDM2); -} -static DEVICE_ATTR(l2_office_dim, 0664, adp8860_bl_l2_office_dim_show, - adp8860_bl_l2_office_dim_store); - -static ssize_t adp8860_bl_l1_daylight_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8860_show(dev, buf, ADP8860_BLDM1); -} - -static ssize_t adp8860_bl_l1_daylight_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp8860_store(dev, buf, count, ADP8860_BLDM1); -} -static DEVICE_ATTR(l1_daylight_dim, 0664, adp8860_bl_l1_daylight_dim_show, - adp8860_bl_l1_daylight_dim_store); - -#ifdef ADP8860_EXT_FEATURES -static ssize_t adp8860_bl_ambient_light_level_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct adp8860_bl *data = dev_get_drvdata(dev); - int error; - uint8_t reg_val; - uint16_t ret_val; - - mutex_lock(&data->lock); - error = adp8860_read(data->client, ADP8860_PH1LEVL, ®_val); - ret_val = reg_val; - error |= adp8860_read(data->client, ADP8860_PH1LEVH, ®_val); - mutex_unlock(&data->lock); - - if (error < 0) - return error; - - /* Return 13-bit conversion value for the first light sensor */ - ret_val += (reg_val & 0x1F) << 8; - - return sprintf(buf, "%u\n", ret_val); -} -static DEVICE_ATTR(ambient_light_level, 0444, - adp8860_bl_ambient_light_level_show, NULL); - -static ssize_t adp8860_bl_ambient_light_zone_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct adp8860_bl *data = dev_get_drvdata(dev); - int error; - uint8_t reg_val; - - mutex_lock(&data->lock); - error = adp8860_read(data->client, ADP8860_CFGR, ®_val); - mutex_unlock(&data->lock); - - if (error < 0) - return error; - - return sprintf(buf, "%u\n", - ((reg_val >> CFGR_BLV_SHIFT) & CFGR_BLV_MASK) + 1); -} - -static ssize_t adp8860_bl_ambient_light_zone_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - struct adp8860_bl *data = dev_get_drvdata(dev); - unsigned long val; - uint8_t reg_val; - int ret; - - ret = strict_strtoul(buf, 10, &val); - if (ret) - return ret; - - if (val == 0) { - /* Enable automatic ambient light sensing */ - adp8860_set_bits(data->client, ADP8860_MDCR, CMP_AUTOEN); - } else if ((val > 0) && (val <= 3)) { - /* Disable automatic ambient light sensing */ - adp8860_clr_bits(data->client, ADP8860_MDCR, CMP_AUTOEN); - - /* Set user supplied ambient light zone */ - mutex_lock(&data->lock); - adp8860_read(data->client, ADP8860_CFGR, ®_val); - reg_val &= ~(CFGR_BLV_MASK << CFGR_BLV_SHIFT); - reg_val |= (val - 1) << CFGR_BLV_SHIFT; - adp8860_write(data->client, ADP8860_CFGR, reg_val); - mutex_unlock(&data->lock); - } - - return count; -} -static DEVICE_ATTR(ambient_light_zone, 0664, - adp8860_bl_ambient_light_zone_show, - adp8860_bl_ambient_light_zone_store); -#endif - -static struct attribute *adp8860_bl_attributes[] = { - &dev_attr_l3_dark_max.attr, - &dev_attr_l3_dark_dim.attr, - &dev_attr_l2_office_max.attr, - &dev_attr_l2_office_dim.attr, - &dev_attr_l1_daylight_max.attr, - &dev_attr_l1_daylight_dim.attr, -#ifdef ADP8860_EXT_FEATURES - &dev_attr_ambient_light_level.attr, - &dev_attr_ambient_light_zone.attr, -#endif - NULL -}; - -static const struct attribute_group adp8860_bl_attr_group = { - .attrs = adp8860_bl_attributes, -}; - -static int __devinit adp8860_probe(struct i2c_client *client, - const struct i2c_device_id *id) -{ - struct backlight_device *bl; - struct adp8860_bl *data; - struct adp8860_backlight_platform_data *pdata = - client->dev.platform_data; - struct backlight_properties props; - uint8_t reg_val; - int ret; - - if (!i2c_check_functionality(client->adapter, - I2C_FUNC_SMBUS_BYTE_DATA)) { - dev_err(&client->dev, "SMBUS Byte Data not Supported\n"); - return -EIO; - } - - if (!pdata) { - dev_err(&client->dev, "no platform data?\n"); - return -EINVAL; - } - - data = kzalloc(sizeof(*data), GFP_KERNEL); - if (data == NULL) - return -ENOMEM; - - ret = adp8860_read(client, ADP8860_MFDVID, ®_val); - if (ret < 0) - goto out2; - - switch (ADP8860_MANID(reg_val)) { - case ADP8863_MANUFID: - data->gdwn_dis = !!pdata->gdwn_dis; - case ADP8860_MANUFID: - data->en_ambl_sens = !!pdata->en_ambl_sens; - break; - case ADP8861_MANUFID: - data->gdwn_dis = !!pdata->gdwn_dis; - break; - default: - dev_err(&client->dev, "failed to probe\n"); - ret = -ENODEV; - goto out2; - } - - /* It's confirmed that the DEVID field is actually a REVID */ - - data->revid = ADP8860_DEVID(reg_val); - data->client = client; - data->pdata = pdata; - data->id = id->driver_data; - data->current_brightness = 0; - i2c_set_clientdata(client, data); - - memset(&props, 0, sizeof(props)); - props.type = BACKLIGHT_RAW; - props.max_brightness = ADP8860_MAX_BRIGHTNESS; - - mutex_init(&data->lock); - - bl = backlight_device_register(dev_driver_string(&client->dev), - &client->dev, data, &adp8860_bl_ops, &props); - if (IS_ERR(bl)) { - dev_err(&client->dev, "failed to register backlight\n"); - ret = PTR_ERR(bl); - goto out2; - } - - bl->props.brightness = ADP8860_MAX_BRIGHTNESS; - - data->bl = bl; - - if (data->en_ambl_sens) - ret = sysfs_create_group(&bl->dev.kobj, - &adp8860_bl_attr_group); - - if (ret) { - dev_err(&client->dev, "failed to register sysfs\n"); - goto out1; - } - - ret = adp8860_bl_setup(bl); - if (ret) { - ret = -EIO; - goto out; - } - - backlight_update_status(bl); - - dev_info(&client->dev, "%s Rev.%d Backlight\n", - client->name, data->revid); - - if (pdata->num_leds) - adp8860_led_probe(client); - - return 0; - -out: - if (data->en_ambl_sens) - sysfs_remove_group(&data->bl->dev.kobj, - &adp8860_bl_attr_group); -out1: - backlight_device_unregister(bl); -out2: - kfree(data); - - return ret; -} - -static int __devexit adp8860_remove(struct i2c_client *client) -{ - struct adp8860_bl *data = i2c_get_clientdata(client); - - adp8860_clr_bits(client, ADP8860_MDCR, NSTBY); - - if (data->led) - adp8860_led_remove(client); - - if (data->en_ambl_sens) - sysfs_remove_group(&data->bl->dev.kobj, - &adp8860_bl_attr_group); - - backlight_device_unregister(data->bl); - kfree(data); - - return 0; -} - -#ifdef CONFIG_PM -static int adp8860_i2c_suspend(struct i2c_client *client, pm_message_t message) -{ - adp8860_clr_bits(client, ADP8860_MDCR, NSTBY); - - return 0; -} - -static int adp8860_i2c_resume(struct i2c_client *client) -{ - adp8860_set_bits(client, ADP8860_MDCR, NSTBY); - - return 0; -} -#else -#define adp8860_i2c_suspend NULL -#define adp8860_i2c_resume NULL -#endif - -static const struct i2c_device_id adp8860_id[] = { - { "adp8860", adp8860 }, - { "adp8861", adp8861 }, - { "adp8863", adp8863 }, - { } -}; -MODULE_DEVICE_TABLE(i2c, adp8860_id); - -static struct i2c_driver adp8860_driver = { - .driver = { - .name = KBUILD_MODNAME, - }, - .probe = adp8860_probe, - .remove = __devexit_p(adp8860_remove), - .suspend = adp8860_i2c_suspend, - .resume = adp8860_i2c_resume, - .id_table = adp8860_id, -}; - -module_i2c_driver(adp8860_driver); - -MODULE_LICENSE("GPL v2"); -MODULE_AUTHOR("Michael Hennerich "); -MODULE_DESCRIPTION("ADP8860 Backlight driver"); -MODULE_ALIAS("i2c:adp8860-backlight"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/adp8870_bl.c b/ANDROID_3.4.5/drivers/video/backlight/adp8870_bl.c deleted file mode 100644 index 9be58c6f..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/adp8870_bl.c +++ /dev/null @@ -1,999 +0,0 @@ -/* - * Backlight driver for Analog Devices ADP8870 Backlight Devices - * - * Copyright 2009-2011 Analog Devices Inc. - * - * Licensed under the GPL-2 or later. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#define ADP8870_EXT_FEATURES -#define ADP8870_USE_LEDS - - -#define ADP8870_MFDVID 0x00 /* Manufacturer and device ID */ -#define ADP8870_MDCR 0x01 /* Device mode and status */ -#define ADP8870_INT_STAT 0x02 /* Interrupts status */ -#define ADP8870_INT_EN 0x03 /* Interrupts enable */ -#define ADP8870_CFGR 0x04 /* Configuration register */ -#define ADP8870_BLSEL 0x05 /* Sink enable backlight or independent */ -#define ADP8870_PWMLED 0x06 /* PWM Enable Selection Register */ -#define ADP8870_BLOFF 0x07 /* Backlight off timeout */ -#define ADP8870_BLDIM 0x08 /* Backlight dim timeout */ -#define ADP8870_BLFR 0x09 /* Backlight fade in and out rates */ -#define ADP8870_BLMX1 0x0A /* Backlight (Brightness Level 1-daylight) maximum current */ -#define ADP8870_BLDM1 0x0B /* Backlight (Brightness Level 1-daylight) dim current */ -#define ADP8870_BLMX2 0x0C /* Backlight (Brightness Level 2-bright) maximum current */ -#define ADP8870_BLDM2 0x0D /* Backlight (Brightness Level 2-bright) dim current */ -#define ADP8870_BLMX3 0x0E /* Backlight (Brightness Level 3-office) maximum current */ -#define ADP8870_BLDM3 0x0F /* Backlight (Brightness Level 3-office) dim current */ -#define ADP8870_BLMX4 0x10 /* Backlight (Brightness Level 4-indoor) maximum current */ -#define ADP8870_BLDM4 0x11 /* Backlight (Brightness Level 4-indoor) dim current */ -#define ADP8870_BLMX5 0x12 /* Backlight (Brightness Level 5-dark) maximum current */ -#define ADP8870_BLDM5 0x13 /* Backlight (Brightness Level 5-dark) dim current */ -#define ADP8870_ISCLAW 0x1A /* Independent sink current fade law register */ -#define ADP8870_ISCC 0x1B /* Independent sink current control register */ -#define ADP8870_ISCT1 0x1C /* Independent Sink Current Timer Register LED[7:5] */ -#define ADP8870_ISCT2 0x1D /* Independent Sink Current Timer Register LED[4:1] */ -#define ADP8870_ISCF 0x1E /* Independent sink current fade register */ -#define ADP8870_ISC1 0x1F /* Independent Sink Current LED1 */ -#define ADP8870_ISC2 0x20 /* Independent Sink Current LED2 */ -#define ADP8870_ISC3 0x21 /* Independent Sink Current LED3 */ -#define ADP8870_ISC4 0x22 /* Independent Sink Current LED4 */ -#define ADP8870_ISC5 0x23 /* Independent Sink Current LED5 */ -#define ADP8870_ISC6 0x24 /* Independent Sink Current LED6 */ -#define ADP8870_ISC7 0x25 /* Independent Sink Current LED7 (Brightness Level 1-daylight) */ -#define ADP8870_ISC7_L2 0x26 /* Independent Sink Current LED7 (Brightness Level 2-bright) */ -#define ADP8870_ISC7_L3 0x27 /* Independent Sink Current LED7 (Brightness Level 3-office) */ -#define ADP8870_ISC7_L4 0x28 /* Independent Sink Current LED7 (Brightness Level 4-indoor) */ -#define ADP8870_ISC7_L5 0x29 /* Independent Sink Current LED7 (Brightness Level 5-dark) */ -#define ADP8870_CMP_CTL 0x2D /* ALS Comparator Control Register */ -#define ADP8870_ALS1_EN 0x2E /* Main ALS comparator level enable */ -#define ADP8870_ALS2_EN 0x2F /* Second ALS comparator level enable */ -#define ADP8870_ALS1_STAT 0x30 /* Main ALS Comparator Status Register */ -#define ADP8870_ALS2_STAT 0x31 /* Second ALS Comparator Status Register */ -#define ADP8870_L2TRP 0x32 /* L2 comparator reference */ -#define ADP8870_L2HYS 0x33 /* L2 hysteresis */ -#define ADP8870_L3TRP 0x34 /* L3 comparator reference */ -#define ADP8870_L3HYS 0x35 /* L3 hysteresis */ -#define ADP8870_L4TRP 0x36 /* L4 comparator reference */ -#define ADP8870_L4HYS 0x37 /* L4 hysteresis */ -#define ADP8870_L5TRP 0x38 /* L5 comparator reference */ -#define ADP8870_L5HYS 0x39 /* L5 hysteresis */ -#define ADP8870_PH1LEVL 0x40 /* First phototransistor ambient light level-low byte register */ -#define ADP8870_PH1LEVH 0x41 /* First phototransistor ambient light level-high byte register */ -#define ADP8870_PH2LEVL 0x42 /* Second phototransistor ambient light level-low byte register */ -#define ADP8870_PH2LEVH 0x43 /* Second phototransistor ambient light level-high byte register */ - -#define ADP8870_MANUFID 0x3 /* Analog Devices AD8870 Manufacturer and device ID */ -#define ADP8870_DEVID(x) ((x) & 0xF) -#define ADP8870_MANID(x) ((x) >> 4) - -/* MDCR Device mode and status */ -#define D7ALSEN (1 << 7) -#define INT_CFG (1 << 6) -#define NSTBY (1 << 5) -#define DIM_EN (1 << 4) -#define GDWN_DIS (1 << 3) -#define SIS_EN (1 << 2) -#define CMP_AUTOEN (1 << 1) -#define BLEN (1 << 0) - -/* ADP8870_ALS1_EN Main ALS comparator level enable */ -#define L5_EN (1 << 3) -#define L4_EN (1 << 2) -#define L3_EN (1 << 1) -#define L2_EN (1 << 0) - -#define CFGR_BLV_SHIFT 3 -#define CFGR_BLV_MASK 0x7 -#define ADP8870_FLAG_LED_MASK 0xFF - -#define FADE_VAL(in, out) ((0xF & (in)) | ((0xF & (out)) << 4)) -#define BL_CFGR_VAL(law, blv) ((((blv) & CFGR_BLV_MASK) << CFGR_BLV_SHIFT) | ((0x3 & (law)) << 1)) -#define ALS_CMPR_CFG_VAL(filt) ((0x7 & (filt)) << 1) - -struct adp8870_bl { - struct i2c_client *client; - struct backlight_device *bl; - struct adp8870_led *led; - struct adp8870_backlight_platform_data *pdata; - struct mutex lock; - unsigned long cached_daylight_max; - int id; - int revid; - int current_brightness; -}; - -struct adp8870_led { - struct led_classdev cdev; - struct work_struct work; - struct i2c_client *client; - enum led_brightness new_brightness; - int id; - int flags; -}; - -static int adp8870_read(struct i2c_client *client, int reg, uint8_t *val) -{ - int ret; - - ret = i2c_smbus_read_byte_data(client, reg); - if (ret < 0) { - dev_err(&client->dev, "failed reading at 0x%02x\n", reg); - return ret; - } - - *val = ret; - return 0; -} - - -static int adp8870_write(struct i2c_client *client, u8 reg, u8 val) -{ - int ret = i2c_smbus_write_byte_data(client, reg, val); - if (ret) - dev_err(&client->dev, "failed to write\n"); - - return ret; -} - -static int adp8870_set_bits(struct i2c_client *client, int reg, uint8_t bit_mask) -{ - struct adp8870_bl *data = i2c_get_clientdata(client); - uint8_t reg_val; - int ret; - - mutex_lock(&data->lock); - - ret = adp8870_read(client, reg, ®_val); - - if (!ret && ((reg_val & bit_mask) != bit_mask)) { - reg_val |= bit_mask; - ret = adp8870_write(client, reg, reg_val); - } - - mutex_unlock(&data->lock); - return ret; -} - -static int adp8870_clr_bits(struct i2c_client *client, int reg, uint8_t bit_mask) -{ - struct adp8870_bl *data = i2c_get_clientdata(client); - uint8_t reg_val; - int ret; - - mutex_lock(&data->lock); - - ret = adp8870_read(client, reg, ®_val); - - if (!ret && (reg_val & bit_mask)) { - reg_val &= ~bit_mask; - ret = adp8870_write(client, reg, reg_val); - } - - mutex_unlock(&data->lock); - return ret; -} - -/* - * Independent sink / LED - */ -#if defined(ADP8870_USE_LEDS) -static void adp8870_led_work(struct work_struct *work) -{ - struct adp8870_led *led = container_of(work, struct adp8870_led, work); - adp8870_write(led->client, ADP8870_ISC1 + led->id - 1, - led->new_brightness >> 1); -} - -static void adp8870_led_set(struct led_classdev *led_cdev, - enum led_brightness value) -{ - struct adp8870_led *led; - - led = container_of(led_cdev, struct adp8870_led, cdev); - led->new_brightness = value; - /* - * Use workqueue for IO since I2C operations can sleep. - */ - schedule_work(&led->work); -} - -static int adp8870_led_setup(struct adp8870_led *led) -{ - struct i2c_client *client = led->client; - int ret = 0; - - ret = adp8870_write(client, ADP8870_ISC1 + led->id - 1, 0); - if (ret) - return ret; - - ret = adp8870_set_bits(client, ADP8870_ISCC, 1 << (led->id - 1)); - if (ret) - return ret; - - if (led->id > 4) - ret = adp8870_set_bits(client, ADP8870_ISCT1, - (led->flags & 0x3) << ((led->id - 5) * 2)); - else - ret = adp8870_set_bits(client, ADP8870_ISCT2, - (led->flags & 0x3) << ((led->id - 1) * 2)); - - return ret; -} - -static int __devinit adp8870_led_probe(struct i2c_client *client) -{ - struct adp8870_backlight_platform_data *pdata = - client->dev.platform_data; - struct adp8870_bl *data = i2c_get_clientdata(client); - struct adp8870_led *led, *led_dat; - struct led_info *cur_led; - int ret, i; - - - led = kcalloc(pdata->num_leds, sizeof(*led), GFP_KERNEL); - if (led == NULL) { - dev_err(&client->dev, "failed to alloc memory\n"); - return -ENOMEM; - } - - ret = adp8870_write(client, ADP8870_ISCLAW, pdata->led_fade_law); - if (ret) - goto err_free; - - ret = adp8870_write(client, ADP8870_ISCT1, - (pdata->led_on_time & 0x3) << 6); - if (ret) - goto err_free; - - ret = adp8870_write(client, ADP8870_ISCF, - FADE_VAL(pdata->led_fade_in, pdata->led_fade_out)); - if (ret) - goto err_free; - - for (i = 0; i < pdata->num_leds; ++i) { - cur_led = &pdata->leds[i]; - led_dat = &led[i]; - - led_dat->id = cur_led->flags & ADP8870_FLAG_LED_MASK; - - if (led_dat->id > 7 || led_dat->id < 1) { - dev_err(&client->dev, "Invalid LED ID %d\n", - led_dat->id); - goto err; - } - - if (pdata->bl_led_assign & (1 << (led_dat->id - 1))) { - dev_err(&client->dev, "LED %d used by Backlight\n", - led_dat->id); - goto err; - } - - led_dat->cdev.name = cur_led->name; - led_dat->cdev.default_trigger = cur_led->default_trigger; - led_dat->cdev.brightness_set = adp8870_led_set; - led_dat->cdev.brightness = LED_OFF; - led_dat->flags = cur_led->flags >> FLAG_OFFT_SHIFT; - led_dat->client = client; - led_dat->new_brightness = LED_OFF; - INIT_WORK(&led_dat->work, adp8870_led_work); - - ret = led_classdev_register(&client->dev, &led_dat->cdev); - if (ret) { - dev_err(&client->dev, "failed to register LED %d\n", - led_dat->id); - goto err; - } - - ret = adp8870_led_setup(led_dat); - if (ret) { - dev_err(&client->dev, "failed to write\n"); - i++; - goto err; - } - } - - data->led = led; - - return 0; - - err: - for (i = i - 1; i >= 0; --i) { - led_classdev_unregister(&led[i].cdev); - cancel_work_sync(&led[i].work); - } - - err_free: - kfree(led); - - return ret; -} - -static int __devexit adp8870_led_remove(struct i2c_client *client) -{ - struct adp8870_backlight_platform_data *pdata = - client->dev.platform_data; - struct adp8870_bl *data = i2c_get_clientdata(client); - int i; - - for (i = 0; i < pdata->num_leds; i++) { - led_classdev_unregister(&data->led[i].cdev); - cancel_work_sync(&data->led[i].work); - } - - kfree(data->led); - return 0; -} -#else -static int __devinit adp8870_led_probe(struct i2c_client *client) -{ - return 0; -} - -static int __devexit adp8870_led_remove(struct i2c_client *client) -{ - return 0; -} -#endif - -static int adp8870_bl_set(struct backlight_device *bl, int brightness) -{ - struct adp8870_bl *data = bl_get_data(bl); - struct i2c_client *client = data->client; - int ret = 0; - - if (data->pdata->en_ambl_sens) { - if ((brightness > 0) && (brightness < ADP8870_MAX_BRIGHTNESS)) { - /* Disable Ambient Light auto adjust */ - ret = adp8870_clr_bits(client, ADP8870_MDCR, - CMP_AUTOEN); - if (ret) - return ret; - ret = adp8870_write(client, ADP8870_BLMX1, brightness); - if (ret) - return ret; - } else { - /* - * MAX_BRIGHTNESS -> Enable Ambient Light auto adjust - * restore daylight l1 sysfs brightness - */ - ret = adp8870_write(client, ADP8870_BLMX1, - data->cached_daylight_max); - if (ret) - return ret; - - ret = adp8870_set_bits(client, ADP8870_MDCR, - CMP_AUTOEN); - if (ret) - return ret; - } - } else { - ret = adp8870_write(client, ADP8870_BLMX1, brightness); - if (ret) - return ret; - } - - if (data->current_brightness && brightness == 0) - ret = adp8870_set_bits(client, - ADP8870_MDCR, DIM_EN); - else if (data->current_brightness == 0 && brightness) - ret = adp8870_clr_bits(client, - ADP8870_MDCR, DIM_EN); - - if (!ret) - data->current_brightness = brightness; - - return ret; -} - -static int adp8870_bl_update_status(struct backlight_device *bl) -{ - int brightness = bl->props.brightness; - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return adp8870_bl_set(bl, brightness); -} - -static int adp8870_bl_get_brightness(struct backlight_device *bl) -{ - struct adp8870_bl *data = bl_get_data(bl); - - return data->current_brightness; -} - -static const struct backlight_ops adp8870_bl_ops = { - .update_status = adp8870_bl_update_status, - .get_brightness = adp8870_bl_get_brightness, -}; - -static int adp8870_bl_setup(struct backlight_device *bl) -{ - struct adp8870_bl *data = bl_get_data(bl); - struct i2c_client *client = data->client; - struct adp8870_backlight_platform_data *pdata = data->pdata; - int ret = 0; - - ret = adp8870_write(client, ADP8870_BLSEL, ~pdata->bl_led_assign); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_PWMLED, pdata->pwm_assign); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_BLMX1, pdata->l1_daylight_max); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_BLDM1, pdata->l1_daylight_dim); - if (ret) - return ret; - - if (pdata->en_ambl_sens) { - data->cached_daylight_max = pdata->l1_daylight_max; - ret = adp8870_write(client, ADP8870_BLMX2, - pdata->l2_bright_max); - if (ret) - return ret; - ret = adp8870_write(client, ADP8870_BLDM2, - pdata->l2_bright_dim); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_BLMX3, - pdata->l3_office_max); - if (ret) - return ret; - ret = adp8870_write(client, ADP8870_BLDM3, - pdata->l3_office_dim); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_BLMX4, - pdata->l4_indoor_max); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_BLDM4, - pdata->l4_indor_dim); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_BLMX5, - pdata->l5_dark_max); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_BLDM5, - pdata->l5_dark_dim); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_L2TRP, pdata->l2_trip); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_L2HYS, pdata->l2_hyst); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_L3TRP, pdata->l3_trip); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_L3HYS, pdata->l3_hyst); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_L4TRP, pdata->l4_trip); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_L4HYS, pdata->l4_hyst); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_L5TRP, pdata->l5_trip); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_L5HYS, pdata->l5_hyst); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_ALS1_EN, L5_EN | L4_EN | - L3_EN | L2_EN); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_CMP_CTL, - ALS_CMPR_CFG_VAL(pdata->abml_filt)); - if (ret) - return ret; - } - - ret = adp8870_write(client, ADP8870_CFGR, - BL_CFGR_VAL(pdata->bl_fade_law, 0)); - if (ret) - return ret; - - ret = adp8870_write(client, ADP8870_BLFR, FADE_VAL(pdata->bl_fade_in, - pdata->bl_fade_out)); - if (ret) - return ret; - /* - * ADP8870 Rev0 requires GDWN_DIS bit set - */ - - ret = adp8870_set_bits(client, ADP8870_MDCR, BLEN | DIM_EN | NSTBY | - (data->revid == 0 ? GDWN_DIS : 0)); - - return ret; -} - -static ssize_t adp8870_show(struct device *dev, char *buf, int reg) -{ - struct adp8870_bl *data = dev_get_drvdata(dev); - int error; - uint8_t reg_val; - - mutex_lock(&data->lock); - error = adp8870_read(data->client, reg, ®_val); - mutex_unlock(&data->lock); - - if (error < 0) - return error; - - return sprintf(buf, "%u\n", reg_val); -} - -static ssize_t adp8870_store(struct device *dev, const char *buf, - size_t count, int reg) -{ - struct adp8870_bl *data = dev_get_drvdata(dev); - unsigned long val; - int ret; - - ret = strict_strtoul(buf, 10, &val); - if (ret) - return ret; - - mutex_lock(&data->lock); - adp8870_write(data->client, reg, val); - mutex_unlock(&data->lock); - - return count; -} - -static ssize_t adp8870_bl_l5_dark_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8870_show(dev, buf, ADP8870_BLMX5); -} - -static ssize_t adp8870_bl_l5_dark_max_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) -{ - return adp8870_store(dev, buf, count, ADP8870_BLMX5); -} -static DEVICE_ATTR(l5_dark_max, 0664, adp8870_bl_l5_dark_max_show, - adp8870_bl_l5_dark_max_store); - - -static ssize_t adp8870_bl_l4_indoor_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8870_show(dev, buf, ADP8870_BLMX4); -} - -static ssize_t adp8870_bl_l4_indoor_max_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) -{ - return adp8870_store(dev, buf, count, ADP8870_BLMX4); -} -static DEVICE_ATTR(l4_indoor_max, 0664, adp8870_bl_l4_indoor_max_show, - adp8870_bl_l4_indoor_max_store); - - -static ssize_t adp8870_bl_l3_office_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8870_show(dev, buf, ADP8870_BLMX3); -} - -static ssize_t adp8870_bl_l3_office_max_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) -{ - return adp8870_store(dev, buf, count, ADP8870_BLMX3); -} - -static DEVICE_ATTR(l3_office_max, 0664, adp8870_bl_l3_office_max_show, - adp8870_bl_l3_office_max_store); - -static ssize_t adp8870_bl_l2_bright_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8870_show(dev, buf, ADP8870_BLMX2); -} - -static ssize_t adp8870_bl_l2_bright_max_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) -{ - return adp8870_store(dev, buf, count, ADP8870_BLMX2); -} -static DEVICE_ATTR(l2_bright_max, 0664, adp8870_bl_l2_bright_max_show, - adp8870_bl_l2_bright_max_store); - -static ssize_t adp8870_bl_l1_daylight_max_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8870_show(dev, buf, ADP8870_BLMX1); -} - -static ssize_t adp8870_bl_l1_daylight_max_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) -{ - struct adp8870_bl *data = dev_get_drvdata(dev); - int ret = strict_strtoul(buf, 10, &data->cached_daylight_max); - if (ret) - return ret; - - return adp8870_store(dev, buf, count, ADP8870_BLMX1); -} -static DEVICE_ATTR(l1_daylight_max, 0664, adp8870_bl_l1_daylight_max_show, - adp8870_bl_l1_daylight_max_store); - -static ssize_t adp8870_bl_l5_dark_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8870_show(dev, buf, ADP8870_BLDM5); -} - -static ssize_t adp8870_bl_l5_dark_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp8870_store(dev, buf, count, ADP8870_BLDM5); -} -static DEVICE_ATTR(l5_dark_dim, 0664, adp8870_bl_l5_dark_dim_show, - adp8870_bl_l5_dark_dim_store); - -static ssize_t adp8870_bl_l4_indoor_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8870_show(dev, buf, ADP8870_BLDM4); -} - -static ssize_t adp8870_bl_l4_indoor_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp8870_store(dev, buf, count, ADP8870_BLDM4); -} -static DEVICE_ATTR(l4_indoor_dim, 0664, adp8870_bl_l4_indoor_dim_show, - adp8870_bl_l4_indoor_dim_store); - - -static ssize_t adp8870_bl_l3_office_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8870_show(dev, buf, ADP8870_BLDM3); -} - -static ssize_t adp8870_bl_l3_office_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp8870_store(dev, buf, count, ADP8870_BLDM3); -} -static DEVICE_ATTR(l3_office_dim, 0664, adp8870_bl_l3_office_dim_show, - adp8870_bl_l3_office_dim_store); - -static ssize_t adp8870_bl_l2_bright_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8870_show(dev, buf, ADP8870_BLDM2); -} - -static ssize_t adp8870_bl_l2_bright_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp8870_store(dev, buf, count, ADP8870_BLDM2); -} -static DEVICE_ATTR(l2_bright_dim, 0664, adp8870_bl_l2_bright_dim_show, - adp8870_bl_l2_bright_dim_store); - -static ssize_t adp8870_bl_l1_daylight_dim_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - return adp8870_show(dev, buf, ADP8870_BLDM1); -} - -static ssize_t adp8870_bl_l1_daylight_dim_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - return adp8870_store(dev, buf, count, ADP8870_BLDM1); -} -static DEVICE_ATTR(l1_daylight_dim, 0664, adp8870_bl_l1_daylight_dim_show, - adp8870_bl_l1_daylight_dim_store); - -#ifdef ADP8870_EXT_FEATURES -static ssize_t adp8870_bl_ambient_light_level_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct adp8870_bl *data = dev_get_drvdata(dev); - int error; - uint8_t reg_val; - uint16_t ret_val; - - mutex_lock(&data->lock); - error = adp8870_read(data->client, ADP8870_PH1LEVL, ®_val); - if (error < 0) { - mutex_unlock(&data->lock); - return error; - } - ret_val = reg_val; - error = adp8870_read(data->client, ADP8870_PH1LEVH, ®_val); - mutex_unlock(&data->lock); - - if (error < 0) - return error; - - /* Return 13-bit conversion value for the first light sensor */ - ret_val += (reg_val & 0x1F) << 8; - - return sprintf(buf, "%u\n", ret_val); -} -static DEVICE_ATTR(ambient_light_level, 0444, - adp8870_bl_ambient_light_level_show, NULL); - -static ssize_t adp8870_bl_ambient_light_zone_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct adp8870_bl *data = dev_get_drvdata(dev); - int error; - uint8_t reg_val; - - mutex_lock(&data->lock); - error = adp8870_read(data->client, ADP8870_CFGR, ®_val); - mutex_unlock(&data->lock); - - if (error < 0) - return error; - - return sprintf(buf, "%u\n", - ((reg_val >> CFGR_BLV_SHIFT) & CFGR_BLV_MASK) + 1); -} - -static ssize_t adp8870_bl_ambient_light_zone_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - struct adp8870_bl *data = dev_get_drvdata(dev); - unsigned long val; - uint8_t reg_val; - int ret; - - ret = strict_strtoul(buf, 10, &val); - if (ret) - return ret; - - if (val == 0) { - /* Enable automatic ambient light sensing */ - adp8870_set_bits(data->client, ADP8870_MDCR, CMP_AUTOEN); - } else if ((val > 0) && (val < 6)) { - /* Disable automatic ambient light sensing */ - adp8870_clr_bits(data->client, ADP8870_MDCR, CMP_AUTOEN); - - /* Set user supplied ambient light zone */ - mutex_lock(&data->lock); - adp8870_read(data->client, ADP8870_CFGR, ®_val); - reg_val &= ~(CFGR_BLV_MASK << CFGR_BLV_SHIFT); - reg_val |= (val - 1) << CFGR_BLV_SHIFT; - adp8870_write(data->client, ADP8870_CFGR, reg_val); - mutex_unlock(&data->lock); - } - - return count; -} -static DEVICE_ATTR(ambient_light_zone, 0664, - adp8870_bl_ambient_light_zone_show, - adp8870_bl_ambient_light_zone_store); -#endif - -static struct attribute *adp8870_bl_attributes[] = { - &dev_attr_l5_dark_max.attr, - &dev_attr_l5_dark_dim.attr, - &dev_attr_l4_indoor_max.attr, - &dev_attr_l4_indoor_dim.attr, - &dev_attr_l3_office_max.attr, - &dev_attr_l3_office_dim.attr, - &dev_attr_l2_bright_max.attr, - &dev_attr_l2_bright_dim.attr, - &dev_attr_l1_daylight_max.attr, - &dev_attr_l1_daylight_dim.attr, -#ifdef ADP8870_EXT_FEATURES - &dev_attr_ambient_light_level.attr, - &dev_attr_ambient_light_zone.attr, -#endif - NULL -}; - -static const struct attribute_group adp8870_bl_attr_group = { - .attrs = adp8870_bl_attributes, -}; - -static int __devinit adp8870_probe(struct i2c_client *client, - const struct i2c_device_id *id) -{ - struct backlight_properties props; - struct backlight_device *bl; - struct adp8870_bl *data; - struct adp8870_backlight_platform_data *pdata = - client->dev.platform_data; - uint8_t reg_val; - int ret; - - if (!i2c_check_functionality(client->adapter, - I2C_FUNC_SMBUS_BYTE_DATA)) { - dev_err(&client->dev, "SMBUS Byte Data not Supported\n"); - return -EIO; - } - - if (!pdata) { - dev_err(&client->dev, "no platform data?\n"); - return -EINVAL; - } - - ret = adp8870_read(client, ADP8870_MFDVID, ®_val); - if (ret < 0) - return -EIO; - - if (ADP8870_MANID(reg_val) != ADP8870_MANUFID) { - dev_err(&client->dev, "failed to probe\n"); - return -ENODEV; - } - - data = kzalloc(sizeof(*data), GFP_KERNEL); - if (data == NULL) - return -ENOMEM; - - data->revid = ADP8870_DEVID(reg_val); - data->client = client; - data->pdata = pdata; - data->id = id->driver_data; - data->current_brightness = 0; - i2c_set_clientdata(client, data); - - mutex_init(&data->lock); - - memset(&props, 0, sizeof(props)); - props.type = BACKLIGHT_RAW; - props.max_brightness = props.brightness = ADP8870_MAX_BRIGHTNESS; - bl = backlight_device_register(dev_driver_string(&client->dev), - &client->dev, data, &adp8870_bl_ops, &props); - if (IS_ERR(bl)) { - dev_err(&client->dev, "failed to register backlight\n"); - ret = PTR_ERR(bl); - goto out2; - } - - data->bl = bl; - - if (pdata->en_ambl_sens) - ret = sysfs_create_group(&bl->dev.kobj, - &adp8870_bl_attr_group); - - if (ret) { - dev_err(&client->dev, "failed to register sysfs\n"); - goto out1; - } - - ret = adp8870_bl_setup(bl); - if (ret) { - ret = -EIO; - goto out; - } - - backlight_update_status(bl); - - dev_info(&client->dev, "Rev.%d Backlight\n", data->revid); - - if (pdata->num_leds) - adp8870_led_probe(client); - - return 0; - -out: - if (data->pdata->en_ambl_sens) - sysfs_remove_group(&data->bl->dev.kobj, - &adp8870_bl_attr_group); -out1: - backlight_device_unregister(bl); -out2: - kfree(data); - - return ret; -} - -static int __devexit adp8870_remove(struct i2c_client *client) -{ - struct adp8870_bl *data = i2c_get_clientdata(client); - - adp8870_clr_bits(client, ADP8870_MDCR, NSTBY); - - if (data->led) - adp8870_led_remove(client); - - if (data->pdata->en_ambl_sens) - sysfs_remove_group(&data->bl->dev.kobj, - &adp8870_bl_attr_group); - - backlight_device_unregister(data->bl); - kfree(data); - - return 0; -} - -#ifdef CONFIG_PM -static int adp8870_i2c_suspend(struct i2c_client *client, pm_message_t message) -{ - adp8870_clr_bits(client, ADP8870_MDCR, NSTBY); - - return 0; -} - -static int adp8870_i2c_resume(struct i2c_client *client) -{ - adp8870_set_bits(client, ADP8870_MDCR, NSTBY); - - return 0; -} -#else -#define adp8870_i2c_suspend NULL -#define adp8870_i2c_resume NULL -#endif - -static const struct i2c_device_id adp8870_id[] = { - { "adp8870", 0 }, - { } -}; -MODULE_DEVICE_TABLE(i2c, adp8870_id); - -static struct i2c_driver adp8870_driver = { - .driver = { - .name = KBUILD_MODNAME, - }, - .probe = adp8870_probe, - .remove = __devexit_p(adp8870_remove), - .suspend = adp8870_i2c_suspend, - .resume = adp8870_i2c_resume, - .id_table = adp8870_id, -}; - -module_i2c_driver(adp8870_driver); - -MODULE_LICENSE("GPL v2"); -MODULE_AUTHOR("Michael Hennerich "); -MODULE_DESCRIPTION("ADP8870 Backlight driver"); -MODULE_ALIAS("i2c:adp8870-backlight"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/ams369fg06.c b/ANDROID_3.4.5/drivers/video/backlight/ams369fg06.c deleted file mode 100644 index 7bdadc79..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/ams369fg06.c +++ /dev/null @@ -1,636 +0,0 @@ -/* - * ams369fg06 AMOLED LCD panel driver. - * - * Copyright (c) 2011 Samsung Electronics Co., Ltd. - * Author: Jingoo Han - * - * Derived from drivers/video/s6e63m0.c - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#define SLEEPMSEC 0x1000 -#define ENDDEF 0x2000 -#define DEFMASK 0xFF00 -#define COMMAND_ONLY 0xFE -#define DATA_ONLY 0xFF - -#define MAX_GAMMA_LEVEL 5 -#define GAMMA_TABLE_COUNT 21 - -#define MIN_BRIGHTNESS 0 -#define MAX_BRIGHTNESS 255 -#define DEFAULT_BRIGHTNESS 150 - -struct ams369fg06 { - struct device *dev; - struct spi_device *spi; - unsigned int power; - struct lcd_device *ld; - struct backlight_device *bd; - struct lcd_platform_data *lcd_pd; -}; - -static const unsigned short seq_display_on[] = { - 0x14, 0x03, - ENDDEF, 0x0000 -}; - -static const unsigned short seq_display_off[] = { - 0x14, 0x00, - ENDDEF, 0x0000 -}; - -static const unsigned short seq_stand_by_on[] = { - 0x1D, 0xA1, - SLEEPMSEC, 200, - ENDDEF, 0x0000 -}; - -static const unsigned short seq_stand_by_off[] = { - 0x1D, 0xA0, - SLEEPMSEC, 250, - ENDDEF, 0x0000 -}; - -static const unsigned short seq_setting[] = { - 0x31, 0x08, - 0x32, 0x14, - 0x30, 0x02, - 0x27, 0x01, - 0x12, 0x08, - 0x13, 0x08, - 0x15, 0x00, - 0x16, 0x00, - - 0xef, 0xd0, - DATA_ONLY, 0xe8, - - 0x39, 0x44, - 0x40, 0x00, - 0x41, 0x3f, - 0x42, 0x2a, - 0x43, 0x27, - 0x44, 0x27, - 0x45, 0x1f, - 0x46, 0x44, - 0x50, 0x00, - 0x51, 0x00, - 0x52, 0x17, - 0x53, 0x24, - 0x54, 0x26, - 0x55, 0x1f, - 0x56, 0x43, - 0x60, 0x00, - 0x61, 0x3f, - 0x62, 0x2a, - 0x63, 0x25, - 0x64, 0x24, - 0x65, 0x1b, - 0x66, 0x5c, - - 0x17, 0x22, - 0x18, 0x33, - 0x19, 0x03, - 0x1a, 0x01, - 0x22, 0xa4, - 0x23, 0x00, - 0x26, 0xa0, - - 0x1d, 0xa0, - SLEEPMSEC, 300, - - 0x14, 0x03, - - ENDDEF, 0x0000 -}; - -/* gamma value: 2.2 */ -static const unsigned int ams369fg06_22_250[] = { - 0x00, 0x3f, 0x2a, 0x27, 0x27, 0x1f, 0x44, - 0x00, 0x00, 0x17, 0x24, 0x26, 0x1f, 0x43, - 0x00, 0x3f, 0x2a, 0x25, 0x24, 0x1b, 0x5c, -}; - -static const unsigned int ams369fg06_22_200[] = { - 0x00, 0x3f, 0x28, 0x29, 0x27, 0x21, 0x3e, - 0x00, 0x00, 0x10, 0x25, 0x27, 0x20, 0x3d, - 0x00, 0x3f, 0x28, 0x27, 0x25, 0x1d, 0x53, -}; - -static const unsigned int ams369fg06_22_150[] = { - 0x00, 0x3f, 0x2d, 0x29, 0x28, 0x23, 0x37, - 0x00, 0x00, 0x0b, 0x25, 0x28, 0x22, 0x36, - 0x00, 0x3f, 0x2b, 0x28, 0x26, 0x1f, 0x4a, -}; - -static const unsigned int ams369fg06_22_100[] = { - 0x00, 0x3f, 0x30, 0x2a, 0x2b, 0x24, 0x2f, - 0x00, 0x00, 0x00, 0x25, 0x29, 0x24, 0x2e, - 0x00, 0x3f, 0x2f, 0x29, 0x29, 0x21, 0x3f, -}; - -static const unsigned int ams369fg06_22_50[] = { - 0x00, 0x3f, 0x3c, 0x2c, 0x2d, 0x27, 0x24, - 0x00, 0x00, 0x00, 0x22, 0x2a, 0x27, 0x23, - 0x00, 0x3f, 0x3b, 0x2c, 0x2b, 0x24, 0x31, -}; - -struct ams369fg06_gamma { - unsigned int *gamma_22_table[MAX_GAMMA_LEVEL]; -}; - -static struct ams369fg06_gamma gamma_table = { - .gamma_22_table[0] = (unsigned int *)&ams369fg06_22_50, - .gamma_22_table[1] = (unsigned int *)&ams369fg06_22_100, - .gamma_22_table[2] = (unsigned int *)&ams369fg06_22_150, - .gamma_22_table[3] = (unsigned int *)&ams369fg06_22_200, - .gamma_22_table[4] = (unsigned int *)&ams369fg06_22_250, -}; - -static int ams369fg06_spi_write_byte(struct ams369fg06 *lcd, int addr, int data) -{ - u16 buf[1]; - struct spi_message msg; - - struct spi_transfer xfer = { - .len = 2, - .tx_buf = buf, - }; - - buf[0] = (addr << 8) | data; - - spi_message_init(&msg); - spi_message_add_tail(&xfer, &msg); - - return spi_sync(lcd->spi, &msg); -} - -static int ams369fg06_spi_write(struct ams369fg06 *lcd, unsigned char address, - unsigned char command) -{ - int ret = 0; - - if (address != DATA_ONLY) - ret = ams369fg06_spi_write_byte(lcd, 0x70, address); - if (command != COMMAND_ONLY) - ret = ams369fg06_spi_write_byte(lcd, 0x72, command); - - return ret; -} - -static int ams369fg06_panel_send_sequence(struct ams369fg06 *lcd, - const unsigned short *wbuf) -{ - int ret = 0, i = 0; - - while ((wbuf[i] & DEFMASK) != ENDDEF) { - if ((wbuf[i] & DEFMASK) != SLEEPMSEC) { - ret = ams369fg06_spi_write(lcd, wbuf[i], wbuf[i+1]); - if (ret) - break; - } else - mdelay(wbuf[i+1]); - i += 2; - } - - return ret; -} - -static int _ams369fg06_gamma_ctl(struct ams369fg06 *lcd, - const unsigned int *gamma) -{ - unsigned int i = 0; - int ret = 0; - - for (i = 0 ; i < GAMMA_TABLE_COUNT / 3; i++) { - ret = ams369fg06_spi_write(lcd, 0x40 + i, gamma[i]); - ret = ams369fg06_spi_write(lcd, 0x50 + i, gamma[i+7*1]); - ret = ams369fg06_spi_write(lcd, 0x60 + i, gamma[i+7*2]); - if (ret) { - dev_err(lcd->dev, "failed to set gamma table.\n"); - goto gamma_err; - } - } - -gamma_err: - return ret; -} - -static int ams369fg06_gamma_ctl(struct ams369fg06 *lcd, int brightness) -{ - int ret = 0; - int gamma = 0; - - if ((brightness >= 0) && (brightness <= 50)) - gamma = 0; - else if ((brightness > 50) && (brightness <= 100)) - gamma = 1; - else if ((brightness > 100) && (brightness <= 150)) - gamma = 2; - else if ((brightness > 150) && (brightness <= 200)) - gamma = 3; - else if ((brightness > 200) && (brightness <= 255)) - gamma = 4; - - ret = _ams369fg06_gamma_ctl(lcd, gamma_table.gamma_22_table[gamma]); - - return ret; -} - -static int ams369fg06_ldi_init(struct ams369fg06 *lcd) -{ - int ret, i; - static const unsigned short *init_seq[] = { - seq_setting, - seq_stand_by_off, - }; - - for (i = 0; i < ARRAY_SIZE(init_seq); i++) { - ret = ams369fg06_panel_send_sequence(lcd, init_seq[i]); - if (ret) - break; - } - - return ret; -} - -static int ams369fg06_ldi_enable(struct ams369fg06 *lcd) -{ - int ret, i; - static const unsigned short *init_seq[] = { - seq_stand_by_off, - seq_display_on, - }; - - for (i = 0; i < ARRAY_SIZE(init_seq); i++) { - ret = ams369fg06_panel_send_sequence(lcd, init_seq[i]); - if (ret) - break; - } - - return ret; -} - -static int ams369fg06_ldi_disable(struct ams369fg06 *lcd) -{ - int ret, i; - - static const unsigned short *init_seq[] = { - seq_display_off, - seq_stand_by_on, - }; - - for (i = 0; i < ARRAY_SIZE(init_seq); i++) { - ret = ams369fg06_panel_send_sequence(lcd, init_seq[i]); - if (ret) - break; - } - - return ret; -} - -static int ams369fg06_power_is_on(int power) -{ - return ((power) <= FB_BLANK_NORMAL); -} - -static int ams369fg06_power_on(struct ams369fg06 *lcd) -{ - int ret = 0; - struct lcd_platform_data *pd = NULL; - struct backlight_device *bd = NULL; - - pd = lcd->lcd_pd; - if (!pd) { - dev_err(lcd->dev, "platform data is NULL.\n"); - return -EFAULT; - } - - bd = lcd->bd; - if (!bd) { - dev_err(lcd->dev, "backlight device is NULL.\n"); - return -EFAULT; - } - - if (!pd->power_on) { - dev_err(lcd->dev, "power_on is NULL.\n"); - return -EFAULT; - } else { - pd->power_on(lcd->ld, 1); - mdelay(pd->power_on_delay); - } - - if (!pd->reset) { - dev_err(lcd->dev, "reset is NULL.\n"); - return -EFAULT; - } else { - pd->reset(lcd->ld); - mdelay(pd->reset_delay); - } - - ret = ams369fg06_ldi_init(lcd); - if (ret) { - dev_err(lcd->dev, "failed to initialize ldi.\n"); - return ret; - } - - ret = ams369fg06_ldi_enable(lcd); - if (ret) { - dev_err(lcd->dev, "failed to enable ldi.\n"); - return ret; - } - - /* set brightness to current value after power on or resume. */ - ret = ams369fg06_gamma_ctl(lcd, bd->props.brightness); - if (ret) { - dev_err(lcd->dev, "lcd gamma setting failed.\n"); - return ret; - } - - return 0; -} - -static int ams369fg06_power_off(struct ams369fg06 *lcd) -{ - int ret = 0; - struct lcd_platform_data *pd = NULL; - - pd = lcd->lcd_pd; - if (!pd) { - dev_err(lcd->dev, "platform data is NULL\n"); - return -EFAULT; - } - - ret = ams369fg06_ldi_disable(lcd); - if (ret) { - dev_err(lcd->dev, "lcd setting failed.\n"); - return -EIO; - } - - mdelay(pd->power_off_delay); - - if (!pd->power_on) { - dev_err(lcd->dev, "power_on is NULL.\n"); - return -EFAULT; - } else - pd->power_on(lcd->ld, 0); - - return 0; -} - -static int ams369fg06_power(struct ams369fg06 *lcd, int power) -{ - int ret = 0; - - if (ams369fg06_power_is_on(power) && - !ams369fg06_power_is_on(lcd->power)) - ret = ams369fg06_power_on(lcd); - else if (!ams369fg06_power_is_on(power) && - ams369fg06_power_is_on(lcd->power)) - ret = ams369fg06_power_off(lcd); - - if (!ret) - lcd->power = power; - - return ret; -} - -static int ams369fg06_get_power(struct lcd_device *ld) -{ - struct ams369fg06 *lcd = lcd_get_data(ld); - - return lcd->power; -} - -static int ams369fg06_set_power(struct lcd_device *ld, int power) -{ - struct ams369fg06 *lcd = lcd_get_data(ld); - - if (power != FB_BLANK_UNBLANK && power != FB_BLANK_POWERDOWN && - power != FB_BLANK_NORMAL) { - dev_err(lcd->dev, "power value should be 0, 1 or 4.\n"); - return -EINVAL; - } - - return ams369fg06_power(lcd, power); -} - -static int ams369fg06_get_brightness(struct backlight_device *bd) -{ - return bd->props.brightness; -} - -static int ams369fg06_set_brightness(struct backlight_device *bd) -{ - int ret = 0; - int brightness = bd->props.brightness; - struct ams369fg06 *lcd = dev_get_drvdata(&bd->dev); - - if (brightness < MIN_BRIGHTNESS || - brightness > bd->props.max_brightness) { - dev_err(&bd->dev, "lcd brightness should be %d to %d.\n", - MIN_BRIGHTNESS, MAX_BRIGHTNESS); - return -EINVAL; - } - - ret = ams369fg06_gamma_ctl(lcd, bd->props.brightness); - if (ret) { - dev_err(&bd->dev, "lcd brightness setting failed.\n"); - return -EIO; - } - - return ret; -} - -static struct lcd_ops ams369fg06_lcd_ops = { - .get_power = ams369fg06_get_power, - .set_power = ams369fg06_set_power, -}; - -static const struct backlight_ops ams369fg06_backlight_ops = { - .get_brightness = ams369fg06_get_brightness, - .update_status = ams369fg06_set_brightness, -}; - -static int __devinit ams369fg06_probe(struct spi_device *spi) -{ - int ret = 0; - struct ams369fg06 *lcd = NULL; - struct lcd_device *ld = NULL; - struct backlight_device *bd = NULL; - struct backlight_properties props; - - lcd = kzalloc(sizeof(struct ams369fg06), GFP_KERNEL); - if (!lcd) - return -ENOMEM; - - /* ams369fg06 lcd panel uses 3-wire 16bits SPI Mode. */ - spi->bits_per_word = 16; - - ret = spi_setup(spi); - if (ret < 0) { - dev_err(&spi->dev, "spi setup failed.\n"); - goto out_free_lcd; - } - - lcd->spi = spi; - lcd->dev = &spi->dev; - - lcd->lcd_pd = spi->dev.platform_data; - if (!lcd->lcd_pd) { - dev_err(&spi->dev, "platform data is NULL\n"); - goto out_free_lcd; - } - - ld = lcd_device_register("ams369fg06", &spi->dev, lcd, - &ams369fg06_lcd_ops); - if (IS_ERR(ld)) { - ret = PTR_ERR(ld); - goto out_free_lcd; - } - - lcd->ld = ld; - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_RAW; - props.max_brightness = MAX_BRIGHTNESS; - - bd = backlight_device_register("ams369fg06-bl", &spi->dev, lcd, - &ams369fg06_backlight_ops, &props); - if (IS_ERR(bd)) { - ret = PTR_ERR(bd); - goto out_lcd_unregister; - } - - bd->props.brightness = DEFAULT_BRIGHTNESS; - lcd->bd = bd; - - if (!lcd->lcd_pd->lcd_enabled) { - /* - * if lcd panel was off from bootloader then - * current lcd status is powerdown and then - * it enables lcd panel. - */ - lcd->power = FB_BLANK_POWERDOWN; - - ams369fg06_power(lcd, FB_BLANK_UNBLANK); - } else - lcd->power = FB_BLANK_UNBLANK; - - dev_set_drvdata(&spi->dev, lcd); - - dev_info(&spi->dev, "ams369fg06 panel driver has been probed.\n"); - - return 0; - -out_lcd_unregister: - lcd_device_unregister(ld); -out_free_lcd: - kfree(lcd); - return ret; -} - -static int __devexit ams369fg06_remove(struct spi_device *spi) -{ - struct ams369fg06 *lcd = dev_get_drvdata(&spi->dev); - - ams369fg06_power(lcd, FB_BLANK_POWERDOWN); - backlight_device_unregister(lcd->bd); - lcd_device_unregister(lcd->ld); - kfree(lcd); - - return 0; -} - -#if defined(CONFIG_PM) -static unsigned int before_power; - -static int ams369fg06_suspend(struct spi_device *spi, pm_message_t mesg) -{ - int ret = 0; - struct ams369fg06 *lcd = dev_get_drvdata(&spi->dev); - - dev_dbg(&spi->dev, "lcd->power = %d\n", lcd->power); - - before_power = lcd->power; - - /* - * when lcd panel is suspend, lcd panel becomes off - * regardless of status. - */ - ret = ams369fg06_power(lcd, FB_BLANK_POWERDOWN); - - return ret; -} - -static int ams369fg06_resume(struct spi_device *spi) -{ - int ret = 0; - struct ams369fg06 *lcd = dev_get_drvdata(&spi->dev); - - /* - * after suspended, if lcd panel status is FB_BLANK_UNBLANK - * (at that time, before_power is FB_BLANK_UNBLANK) then - * it changes that status to FB_BLANK_POWERDOWN to get lcd on. - */ - if (before_power == FB_BLANK_UNBLANK) - lcd->power = FB_BLANK_POWERDOWN; - - dev_dbg(&spi->dev, "before_power = %d\n", before_power); - - ret = ams369fg06_power(lcd, before_power); - - return ret; -} -#else -#define ams369fg06_suspend NULL -#define ams369fg06_resume NULL -#endif - -static void ams369fg06_shutdown(struct spi_device *spi) -{ - struct ams369fg06 *lcd = dev_get_drvdata(&spi->dev); - - ams369fg06_power(lcd, FB_BLANK_POWERDOWN); -} - -static struct spi_driver ams369fg06_driver = { - .driver = { - .name = "ams369fg06", - .bus = &spi_bus_type, - .owner = THIS_MODULE, - }, - .probe = ams369fg06_probe, - .remove = __devexit_p(ams369fg06_remove), - .shutdown = ams369fg06_shutdown, - .suspend = ams369fg06_suspend, - .resume = ams369fg06_resume, -}; - -module_spi_driver(ams369fg06_driver); - -MODULE_AUTHOR("Jingoo Han "); -MODULE_DESCRIPTION("ams369fg06 LCD Driver"); -MODULE_LICENSE("GPL"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/apple_bl.c b/ANDROID_3.4.5/drivers/video/backlight/apple_bl.c deleted file mode 100644 index a523b255..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/apple_bl.c +++ /dev/null @@ -1,260 +0,0 @@ -/* - * Backlight Driver for Intel-based Apples - * - * Copyright (c) Red Hat - * Based on code from Pommed: - * Copyright (C) 2006 Nicolas Boichat - * Copyright (C) 2006 Felipe Alfaro Solana - * Copyright (C) 2007 Julien BLACHE - * - * 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. - * - * This driver triggers SMIs which cause the firmware to change the - * backlight brightness. This is icky in many ways, but it's impractical to - * get at the firmware code in order to figure out what it's actually doing. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static struct backlight_device *apple_backlight_device; - -struct hw_data { - /* I/O resource to allocate. */ - unsigned long iostart; - unsigned long iolen; - /* Backlight operations structure. */ - const struct backlight_ops backlight_ops; - void (*set_brightness)(int); -}; - -static const struct hw_data *hw_data; - -#define DRIVER "apple_backlight: " - -/* Module parameters. */ -static int debug; -module_param_named(debug, debug, int, 0644); -MODULE_PARM_DESC(debug, "Set to one to enable debugging messages."); - -/* - * Implementation for machines with Intel chipset. - */ -static void intel_chipset_set_brightness(int intensity) -{ - outb(0x04 | (intensity << 4), 0xb3); - outb(0xbf, 0xb2); -} - -static int intel_chipset_send_intensity(struct backlight_device *bd) -{ - int intensity = bd->props.brightness; - - if (debug) - printk(KERN_DEBUG DRIVER "setting brightness to %d\n", - intensity); - - intel_chipset_set_brightness(intensity); - return 0; -} - -static int intel_chipset_get_intensity(struct backlight_device *bd) -{ - int intensity; - - outb(0x03, 0xb3); - outb(0xbf, 0xb2); - intensity = inb(0xb3) >> 4; - - if (debug) - printk(KERN_DEBUG DRIVER "read brightness of %d\n", - intensity); - - return intensity; -} - -static const struct hw_data intel_chipset_data = { - .iostart = 0xb2, - .iolen = 2, - .backlight_ops = { - .options = BL_CORE_SUSPENDRESUME, - .get_brightness = intel_chipset_get_intensity, - .update_status = intel_chipset_send_intensity, - }, - .set_brightness = intel_chipset_set_brightness, -}; - -/* - * Implementation for machines with Nvidia chipset. - */ -static void nvidia_chipset_set_brightness(int intensity) -{ - outb(0x04 | (intensity << 4), 0x52f); - outb(0xbf, 0x52e); -} - -static int nvidia_chipset_send_intensity(struct backlight_device *bd) -{ - int intensity = bd->props.brightness; - - if (debug) - printk(KERN_DEBUG DRIVER "setting brightness to %d\n", - intensity); - - nvidia_chipset_set_brightness(intensity); - return 0; -} - -static int nvidia_chipset_get_intensity(struct backlight_device *bd) -{ - int intensity; - - outb(0x03, 0x52f); - outb(0xbf, 0x52e); - intensity = inb(0x52f) >> 4; - - if (debug) - printk(KERN_DEBUG DRIVER "read brightness of %d\n", - intensity); - - return intensity; -} - -static const struct hw_data nvidia_chipset_data = { - .iostart = 0x52e, - .iolen = 2, - .backlight_ops = { - .options = BL_CORE_SUSPENDRESUME, - .get_brightness = nvidia_chipset_get_intensity, - .update_status = nvidia_chipset_send_intensity - }, - .set_brightness = nvidia_chipset_set_brightness, -}; - -static int __devinit apple_bl_add(struct acpi_device *dev) -{ - struct backlight_properties props; - struct pci_dev *host; - int intensity; - - host = pci_get_bus_and_slot(0, 0); - - if (!host) { - printk(KERN_ERR DRIVER "unable to find PCI host\n"); - return -ENODEV; - } - - if (host->vendor == PCI_VENDOR_ID_INTEL) - hw_data = &intel_chipset_data; - else if (host->vendor == PCI_VENDOR_ID_NVIDIA) - hw_data = &nvidia_chipset_data; - - pci_dev_put(host); - - if (!hw_data) { - printk(KERN_ERR DRIVER "unknown hardware\n"); - return -ENODEV; - } - - /* Check that the hardware responds - this may not work under EFI */ - - intensity = hw_data->backlight_ops.get_brightness(NULL); - - if (!intensity) { - hw_data->set_brightness(1); - if (!hw_data->backlight_ops.get_brightness(NULL)) - return -ENODEV; - - hw_data->set_brightness(0); - } - - if (!request_region(hw_data->iostart, hw_data->iolen, - "Apple backlight")) - return -ENXIO; - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_PLATFORM; - props.max_brightness = 15; - apple_backlight_device = backlight_device_register("apple_backlight", - NULL, NULL, &hw_data->backlight_ops, &props); - - if (IS_ERR(apple_backlight_device)) { - release_region(hw_data->iostart, hw_data->iolen); - return PTR_ERR(apple_backlight_device); - } - - apple_backlight_device->props.brightness = - hw_data->backlight_ops.get_brightness(apple_backlight_device); - backlight_update_status(apple_backlight_device); - - return 0; -} - -static int __devexit apple_bl_remove(struct acpi_device *dev, int type) -{ - backlight_device_unregister(apple_backlight_device); - - release_region(hw_data->iostart, hw_data->iolen); - hw_data = NULL; - return 0; -} - -static const struct acpi_device_id apple_bl_ids[] = { - {"APP0002", 0}, - {"", 0}, -}; - -static struct acpi_driver apple_bl_driver = { - .name = "Apple backlight", - .ids = apple_bl_ids, - .ops = { - .add = apple_bl_add, - .remove = apple_bl_remove, - }, -}; - -static atomic_t apple_bl_registered = ATOMIC_INIT(0); - -int apple_bl_register(void) -{ - if (atomic_xchg(&apple_bl_registered, 1) == 0) - return acpi_bus_register_driver(&apple_bl_driver); - - return 0; -} -EXPORT_SYMBOL_GPL(apple_bl_register); - -void apple_bl_unregister(void) -{ - if (atomic_xchg(&apple_bl_registered, 0) == 1) - acpi_bus_unregister_driver(&apple_bl_driver); -} -EXPORT_SYMBOL_GPL(apple_bl_unregister); - -static int __init apple_bl_init(void) -{ - return apple_bl_register(); -} - -static void __exit apple_bl_exit(void) -{ - apple_bl_unregister(); -} - -module_init(apple_bl_init); -module_exit(apple_bl_exit); - -MODULE_AUTHOR("Matthew Garrett "); -MODULE_DESCRIPTION("Apple Backlight Driver"); -MODULE_LICENSE("GPL"); -MODULE_DEVICE_TABLE(acpi, apple_bl_ids); -MODULE_ALIAS("mbp_nvidia_bl"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/atmel-pwm-bl.c b/ANDROID_3.4.5/drivers/video/backlight/atmel-pwm-bl.c deleted file mode 100644 index 0443a4f7..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/atmel-pwm-bl.c +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright (C) 2008 Atmel Corporation - * - * Backlight driver using Atmel PWM peripheral. - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct atmel_pwm_bl { - const struct atmel_pwm_bl_platform_data *pdata; - struct backlight_device *bldev; - struct platform_device *pdev; - struct pwm_channel pwmc; - int gpio_on; -}; - -static int atmel_pwm_bl_set_intensity(struct backlight_device *bd) -{ - struct atmel_pwm_bl *pwmbl = bl_get_data(bd); - int intensity = bd->props.brightness; - int pwm_duty; - - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; - - if (pwmbl->pdata->pwm_active_low) - pwm_duty = pwmbl->pdata->pwm_duty_min + intensity; - else - pwm_duty = pwmbl->pdata->pwm_duty_max - intensity; - - if (pwm_duty > pwmbl->pdata->pwm_duty_max) - pwm_duty = pwmbl->pdata->pwm_duty_max; - if (pwm_duty < pwmbl->pdata->pwm_duty_min) - pwm_duty = pwmbl->pdata->pwm_duty_min; - - if (!intensity) { - if (pwmbl->gpio_on != -1) { - gpio_set_value(pwmbl->gpio_on, - 0 ^ pwmbl->pdata->on_active_low); - } - pwm_channel_writel(&pwmbl->pwmc, PWM_CUPD, pwm_duty); - pwm_channel_disable(&pwmbl->pwmc); - } else { - pwm_channel_enable(&pwmbl->pwmc); - pwm_channel_writel(&pwmbl->pwmc, PWM_CUPD, pwm_duty); - if (pwmbl->gpio_on != -1) { - gpio_set_value(pwmbl->gpio_on, - 1 ^ pwmbl->pdata->on_active_low); - } - } - - return 0; -} - -static int atmel_pwm_bl_get_intensity(struct backlight_device *bd) -{ - struct atmel_pwm_bl *pwmbl = bl_get_data(bd); - u8 intensity; - - if (pwmbl->pdata->pwm_active_low) { - intensity = pwm_channel_readl(&pwmbl->pwmc, PWM_CDTY) - - pwmbl->pdata->pwm_duty_min; - } else { - intensity = pwmbl->pdata->pwm_duty_max - - pwm_channel_readl(&pwmbl->pwmc, PWM_CDTY); - } - - return intensity; -} - -static int atmel_pwm_bl_init_pwm(struct atmel_pwm_bl *pwmbl) -{ - unsigned long pwm_rate = pwmbl->pwmc.mck; - unsigned long prescale = DIV_ROUND_UP(pwm_rate, - (pwmbl->pdata->pwm_frequency * - pwmbl->pdata->pwm_compare_max)) - 1; - - /* - * Prescale must be power of two and maximum 0xf in size because of - * hardware limit. PWM speed will be: - * PWM module clock speed / (2 ^ prescale). - */ - prescale = fls(prescale); - if (prescale > 0xf) - prescale = 0xf; - - pwm_channel_writel(&pwmbl->pwmc, PWM_CMR, prescale); - pwm_channel_writel(&pwmbl->pwmc, PWM_CDTY, - pwmbl->pdata->pwm_duty_min + - pwmbl->bldev->props.brightness); - pwm_channel_writel(&pwmbl->pwmc, PWM_CPRD, - pwmbl->pdata->pwm_compare_max); - - dev_info(&pwmbl->pdev->dev, "Atmel PWM backlight driver " - "(%lu Hz)\n", pwmbl->pwmc.mck / - pwmbl->pdata->pwm_compare_max / - (1 << prescale)); - - return pwm_channel_enable(&pwmbl->pwmc); -} - -static const struct backlight_ops atmel_pwm_bl_ops = { - .get_brightness = atmel_pwm_bl_get_intensity, - .update_status = atmel_pwm_bl_set_intensity, -}; - -static int atmel_pwm_bl_probe(struct platform_device *pdev) -{ - struct backlight_properties props; - const struct atmel_pwm_bl_platform_data *pdata; - struct backlight_device *bldev; - struct atmel_pwm_bl *pwmbl; - int retval; - - pwmbl = kzalloc(sizeof(struct atmel_pwm_bl), GFP_KERNEL); - if (!pwmbl) - return -ENOMEM; - - pwmbl->pdev = pdev; - - pdata = pdev->dev.platform_data; - if (!pdata) { - retval = -ENODEV; - goto err_free_mem; - } - - if (pdata->pwm_compare_max < pdata->pwm_duty_max || - pdata->pwm_duty_min > pdata->pwm_duty_max || - pdata->pwm_frequency == 0) { - retval = -EINVAL; - goto err_free_mem; - } - - pwmbl->pdata = pdata; - pwmbl->gpio_on = pdata->gpio_on; - - retval = pwm_channel_alloc(pdata->pwm_channel, &pwmbl->pwmc); - if (retval) - goto err_free_mem; - - if (pwmbl->gpio_on != -1) { - retval = gpio_request(pwmbl->gpio_on, "gpio_atmel_pwm_bl"); - if (retval) { - pwmbl->gpio_on = -1; - goto err_free_pwm; - } - - /* Turn display off by default. */ - retval = gpio_direction_output(pwmbl->gpio_on, - 0 ^ pdata->on_active_low); - if (retval) - goto err_free_gpio; - } - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_RAW; - props.max_brightness = pdata->pwm_duty_max - pdata->pwm_duty_min; - bldev = backlight_device_register("atmel-pwm-bl", &pdev->dev, pwmbl, - &atmel_pwm_bl_ops, &props); - if (IS_ERR(bldev)) { - retval = PTR_ERR(bldev); - goto err_free_gpio; - } - - pwmbl->bldev = bldev; - - platform_set_drvdata(pdev, pwmbl); - - /* Power up the backlight by default at middle intesity. */ - bldev->props.power = FB_BLANK_UNBLANK; - bldev->props.brightness = bldev->props.max_brightness / 2; - - retval = atmel_pwm_bl_init_pwm(pwmbl); - if (retval) - goto err_free_bl_dev; - - atmel_pwm_bl_set_intensity(bldev); - - return 0; - -err_free_bl_dev: - platform_set_drvdata(pdev, NULL); - backlight_device_unregister(bldev); -err_free_gpio: - if (pwmbl->gpio_on != -1) - gpio_free(pwmbl->gpio_on); -err_free_pwm: - pwm_channel_free(&pwmbl->pwmc); -err_free_mem: - kfree(pwmbl); - return retval; -} - -static int __exit atmel_pwm_bl_remove(struct platform_device *pdev) -{ - struct atmel_pwm_bl *pwmbl = platform_get_drvdata(pdev); - - if (pwmbl->gpio_on != -1) { - gpio_set_value(pwmbl->gpio_on, 0); - gpio_free(pwmbl->gpio_on); - } - pwm_channel_disable(&pwmbl->pwmc); - pwm_channel_free(&pwmbl->pwmc); - backlight_device_unregister(pwmbl->bldev); - platform_set_drvdata(pdev, NULL); - kfree(pwmbl); - - return 0; -} - -static struct platform_driver atmel_pwm_bl_driver = { - .driver = { - .name = "atmel-pwm-bl", - }, - /* REVISIT add suspend() and resume() */ - .remove = __exit_p(atmel_pwm_bl_remove), -}; - -static int __init atmel_pwm_bl_init(void) -{ - return platform_driver_probe(&atmel_pwm_bl_driver, atmel_pwm_bl_probe); -} -module_init(atmel_pwm_bl_init); - -static void __exit atmel_pwm_bl_exit(void) -{ - platform_driver_unregister(&atmel_pwm_bl_driver); -} -module_exit(atmel_pwm_bl_exit); - -MODULE_AUTHOR("Hans-Christian egtvedt "); -MODULE_DESCRIPTION("Atmel PWM backlight driver"); -MODULE_LICENSE("GPL"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/backlight.c b/ANDROID_3.4.5/drivers/video/backlight/backlight.c deleted file mode 100644 index bf5b1ece..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/backlight.c +++ /dev/null @@ -1,401 +0,0 @@ -/* - * Backlight Lowlevel Control Abstraction - * - * Copyright (C) 2003,2004 Hewlett-Packard Company - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef CONFIG_PMAC_BACKLIGHT -#include -#endif - -static const char *const backlight_types[] = { - [BACKLIGHT_RAW] = "raw", - [BACKLIGHT_PLATFORM] = "platform", - [BACKLIGHT_FIRMWARE] = "firmware", -}; - -#if defined(CONFIG_FB) || (defined(CONFIG_FB_MODULE) && \ - defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)) -/* This callback gets called when something important happens inside a - * framebuffer driver. We're looking if that important event is blanking, - * and if it is, we're switching backlight power as well ... - */ -static int fb_notifier_callback(struct notifier_block *self, - unsigned long event, void *data) -{ - struct backlight_device *bd; - struct fb_event *evdata = data; - - /* If we aren't interested in this event, skip it immediately ... */ - if (event != FB_EVENT_BLANK && event != FB_EVENT_CONBLANK) - return 0; - - bd = container_of(self, struct backlight_device, fb_notif); - mutex_lock(&bd->ops_lock); - if (bd->ops) - if (!bd->ops->check_fb || - bd->ops->check_fb(bd, evdata->info)) { - bd->props.fb_blank = *(int *)evdata->data; - if (bd->props.fb_blank == FB_BLANK_UNBLANK) - bd->props.state &= ~BL_CORE_FBBLANK; - else - bd->props.state |= BL_CORE_FBBLANK; - backlight_update_status(bd); - } - mutex_unlock(&bd->ops_lock); - return 0; -} - -static int backlight_register_fb(struct backlight_device *bd) -{ - memset(&bd->fb_notif, 0, sizeof(bd->fb_notif)); - bd->fb_notif.notifier_call = fb_notifier_callback; - - return fb_register_client(&bd->fb_notif); -} - -static void backlight_unregister_fb(struct backlight_device *bd) -{ - fb_unregister_client(&bd->fb_notif); -} -#else -static inline int backlight_register_fb(struct backlight_device *bd) -{ - return 0; -} - -static inline void backlight_unregister_fb(struct backlight_device *bd) -{ -} -#endif /* CONFIG_FB */ - -static void backlight_generate_event(struct backlight_device *bd, - enum backlight_update_reason reason) -{ - char *envp[2]; - - switch (reason) { - case BACKLIGHT_UPDATE_SYSFS: - envp[0] = "SOURCE=sysfs"; - break; - case BACKLIGHT_UPDATE_HOTKEY: - envp[0] = "SOURCE=hotkey"; - break; - default: - envp[0] = "SOURCE=unknown"; - break; - } - envp[1] = NULL; - kobject_uevent_env(&bd->dev.kobj, KOBJ_CHANGE, envp); - sysfs_notify(&bd->dev.kobj, NULL, "actual_brightness"); -} - -static ssize_t backlight_show_power(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct backlight_device *bd = to_backlight_device(dev); - - return sprintf(buf, "%d\n", bd->props.power); -} - -static ssize_t backlight_store_power(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) -{ - int rc; - struct backlight_device *bd = to_backlight_device(dev); - unsigned long power; - - rc = kstrtoul(buf, 0, &power); - if (rc) - return rc; - - rc = -ENXIO; - mutex_lock(&bd->ops_lock); - if (bd->ops) { - pr_debug("backlight: set power to %lu\n", power); - if (bd->props.power != power) { - bd->props.power = power; - backlight_update_status(bd); - } - rc = count; - } - mutex_unlock(&bd->ops_lock); - - return rc; -} - -static ssize_t backlight_show_brightness(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct backlight_device *bd = to_backlight_device(dev); - - return sprintf(buf, "%d\n", bd->props.brightness); -} - -static ssize_t backlight_store_brightness(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) -{ - int rc; - struct backlight_device *bd = to_backlight_device(dev); - unsigned long brightness; - - rc = kstrtoul(buf, 0, &brightness); - if (rc) - return rc; - - rc = -ENXIO; - - mutex_lock(&bd->ops_lock); - if (bd->ops) { - if (brightness > bd->props.max_brightness) - rc = -EINVAL; - else { - pr_debug("backlight: set brightness to %lu\n", - brightness); - bd->props.brightness = brightness; - backlight_update_status(bd); - rc = count; - } - } - mutex_unlock(&bd->ops_lock); - - backlight_generate_event(bd, BACKLIGHT_UPDATE_SYSFS); - - return rc; -} - -static ssize_t backlight_show_type(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct backlight_device *bd = to_backlight_device(dev); - - return sprintf(buf, "%s\n", backlight_types[bd->props.type]); -} - -static ssize_t backlight_show_max_brightness(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct backlight_device *bd = to_backlight_device(dev); - - return sprintf(buf, "%d\n", bd->props.max_brightness); -} - -static ssize_t backlight_show_actual_brightness(struct device *dev, - struct device_attribute *attr, char *buf) -{ - int rc = -ENXIO; - struct backlight_device *bd = to_backlight_device(dev); - - mutex_lock(&bd->ops_lock); - if (bd->ops && bd->ops->get_brightness) - rc = sprintf(buf, "%d\n", bd->ops->get_brightness(bd)); - mutex_unlock(&bd->ops_lock); - - return rc; -} - -static struct class *backlight_class; - -static int backlight_suspend(struct device *dev, pm_message_t state) -{ - struct backlight_device *bd = to_backlight_device(dev); - - mutex_lock(&bd->ops_lock); - if (bd->ops && bd->ops->options & BL_CORE_SUSPENDRESUME) { - bd->props.state |= BL_CORE_SUSPENDED; - backlight_update_status(bd); - } - mutex_unlock(&bd->ops_lock); - - return 0; -} - -static int backlight_resume(struct device *dev) -{ - struct backlight_device *bd = to_backlight_device(dev); - - mutex_lock(&bd->ops_lock); - if (bd->ops && bd->ops->options & BL_CORE_SUSPENDRESUME) { - bd->props.state &= ~BL_CORE_SUSPENDED; - backlight_update_status(bd); - } - mutex_unlock(&bd->ops_lock); - - return 0; -} - -static void bl_device_release(struct device *dev) -{ - struct backlight_device *bd = to_backlight_device(dev); - kfree(bd); -} - -static struct device_attribute bl_device_attributes[] = { - __ATTR(bl_power, 0644, backlight_show_power, backlight_store_power), - __ATTR(brightness, 0644, backlight_show_brightness, - backlight_store_brightness), - __ATTR(actual_brightness, 0444, backlight_show_actual_brightness, - NULL), - __ATTR(max_brightness, 0444, backlight_show_max_brightness, NULL), - __ATTR(type, 0444, backlight_show_type, NULL), - __ATTR_NULL, -}; - -/** - * backlight_force_update - tell the backlight subsystem that hardware state - * has changed - * @bd: the backlight device to update - * - * Updates the internal state of the backlight in response to a hardware event, - * and generate a uevent to notify userspace - */ -void backlight_force_update(struct backlight_device *bd, - enum backlight_update_reason reason) -{ - mutex_lock(&bd->ops_lock); - if (bd->ops && bd->ops->get_brightness) - bd->props.brightness = bd->ops->get_brightness(bd); - mutex_unlock(&bd->ops_lock); - backlight_generate_event(bd, reason); -} -EXPORT_SYMBOL(backlight_force_update); - -/** - * backlight_device_register - create and register a new object of - * backlight_device class. - * @name: the name of the new object(must be the same as the name of the - * respective framebuffer device). - * @parent: a pointer to the parent device - * @devdata: an optional pointer to be stored for private driver use. The - * methods may retrieve it by using bl_get_data(bd). - * @ops: the backlight operations structure. - * - * Creates and registers new backlight device. Returns either an - * ERR_PTR() or a pointer to the newly allocated device. - */ -struct backlight_device *backlight_device_register(const char *name, - struct device *parent, void *devdata, const struct backlight_ops *ops, - const struct backlight_properties *props) -{ - struct backlight_device *new_bd; - int rc; - - pr_debug("backlight_device_register: name=%s\n", name); - - new_bd = kzalloc(sizeof(struct backlight_device), GFP_KERNEL); - if (!new_bd) - return ERR_PTR(-ENOMEM); - - mutex_init(&new_bd->update_lock); - mutex_init(&new_bd->ops_lock); - - new_bd->dev.class = backlight_class; - new_bd->dev.parent = parent; - new_bd->dev.release = bl_device_release; - dev_set_name(&new_bd->dev, name); - dev_set_drvdata(&new_bd->dev, devdata); - - /* Set default properties */ - if (props) { - memcpy(&new_bd->props, props, - sizeof(struct backlight_properties)); - if (props->type <= 0 || props->type >= BACKLIGHT_TYPE_MAX) { - WARN(1, "%s: invalid backlight type", name); - new_bd->props.type = BACKLIGHT_RAW; - } - } else { - new_bd->props.type = BACKLIGHT_RAW; - } - - rc = device_register(&new_bd->dev); - if (rc) { - kfree(new_bd); - return ERR_PTR(rc); - } - - rc = backlight_register_fb(new_bd); - if (rc) { - device_unregister(&new_bd->dev); - return ERR_PTR(rc); - } - - new_bd->ops = ops; - -#ifdef CONFIG_PMAC_BACKLIGHT - mutex_lock(&pmac_backlight_mutex); - if (!pmac_backlight) - pmac_backlight = new_bd; - mutex_unlock(&pmac_backlight_mutex); -#endif - - return new_bd; -} -EXPORT_SYMBOL(backlight_device_register); - -/** - * backlight_device_unregister - unregisters a backlight device object. - * @bd: the backlight device object to be unregistered and freed. - * - * Unregisters a previously registered via backlight_device_register object. - */ -void backlight_device_unregister(struct backlight_device *bd) -{ - if (!bd) - return; - -#ifdef CONFIG_PMAC_BACKLIGHT - mutex_lock(&pmac_backlight_mutex); - if (pmac_backlight == bd) - pmac_backlight = NULL; - mutex_unlock(&pmac_backlight_mutex); -#endif - mutex_lock(&bd->ops_lock); - bd->ops = NULL; - mutex_unlock(&bd->ops_lock); - - backlight_unregister_fb(bd); - device_unregister(&bd->dev); -} -EXPORT_SYMBOL(backlight_device_unregister); - -static void __exit backlight_class_exit(void) -{ - class_destroy(backlight_class); -} - -static int __init backlight_class_init(void) -{ - backlight_class = class_create(THIS_MODULE, "backlight"); - if (IS_ERR(backlight_class)) { - printk(KERN_WARNING "Unable to create backlight class; errno = %ld\n", - PTR_ERR(backlight_class)); - return PTR_ERR(backlight_class); - } - - backlight_class->dev_attrs = bl_device_attributes; - backlight_class->suspend = backlight_suspend; - backlight_class->resume = backlight_resume; - return 0; -} - -/* - * if this is compiled into the kernel, we need to ensure that the - * class is registered before users of the class try to register lcd's - */ -postcore_initcall(backlight_class_init); -module_exit(backlight_class_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Jamey Hicks , Andrew Zabolotny "); -MODULE_DESCRIPTION("Backlight Lowlevel Control Abstraction"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/corgi_lcd.c b/ANDROID_3.4.5/drivers/video/backlight/corgi_lcd.c deleted file mode 100644 index 6dab13fe..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/corgi_lcd.c +++ /dev/null @@ -1,637 +0,0 @@ -/* - * LCD/Backlight Driver for Sharp Zaurus Handhelds (various models) - * - * Copyright (c) 2004-2006 Richard Purdie - * - * Based on Sharp's 2.4 Backlight Driver - * - * Copyright (c) 2008 Marvell International Ltd. - * Converted to SPI device based LCD/Backlight device driver - * by Eric Miao - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL) - -/* Register Addresses */ -#define RESCTL_ADRS 0x00 -#define PHACTRL_ADRS 0x01 -#define DUTYCTRL_ADRS 0x02 -#define POWERREG0_ADRS 0x03 -#define POWERREG1_ADRS 0x04 -#define GPOR3_ADRS 0x05 -#define PICTRL_ADRS 0x06 -#define POLCTRL_ADRS 0x07 - -/* Register Bit Definitions */ -#define RESCTL_QVGA 0x01 -#define RESCTL_VGA 0x00 - -#define POWER1_VW_ON 0x01 /* VW Supply FET ON */ -#define POWER1_GVSS_ON 0x02 /* GVSS(-8V) Power Supply ON */ -#define POWER1_VDD_ON 0x04 /* VDD(8V),SVSS(-4V) Power Supply ON */ - -#define POWER1_VW_OFF 0x00 /* VW Supply FET OFF */ -#define POWER1_GVSS_OFF 0x00 /* GVSS(-8V) Power Supply OFF */ -#define POWER1_VDD_OFF 0x00 /* VDD(8V),SVSS(-4V) Power Supply OFF */ - -#define POWER0_COM_DCLK 0x01 /* COM Voltage DC Bias DAC Serial Data Clock */ -#define POWER0_COM_DOUT 0x02 /* COM Voltage DC Bias DAC Serial Data Out */ -#define POWER0_DAC_ON 0x04 /* DAC Power Supply ON */ -#define POWER0_COM_ON 0x08 /* COM Power Supply ON */ -#define POWER0_VCC5_ON 0x10 /* VCC5 Power Supply ON */ - -#define POWER0_DAC_OFF 0x00 /* DAC Power Supply OFF */ -#define POWER0_COM_OFF 0x00 /* COM Power Supply OFF */ -#define POWER0_VCC5_OFF 0x00 /* VCC5 Power Supply OFF */ - -#define PICTRL_INIT_STATE 0x01 -#define PICTRL_INIOFF 0x02 -#define PICTRL_POWER_DOWN 0x04 -#define PICTRL_COM_SIGNAL_OFF 0x08 -#define PICTRL_DAC_SIGNAL_OFF 0x10 - -#define POLCTRL_SYNC_POL_FALL 0x01 -#define POLCTRL_EN_POL_FALL 0x02 -#define POLCTRL_DATA_POL_FALL 0x04 -#define POLCTRL_SYNC_ACT_H 0x08 -#define POLCTRL_EN_ACT_L 0x10 - -#define POLCTRL_SYNC_POL_RISE 0x00 -#define POLCTRL_EN_POL_RISE 0x00 -#define POLCTRL_DATA_POL_RISE 0x00 -#define POLCTRL_SYNC_ACT_L 0x00 -#define POLCTRL_EN_ACT_H 0x00 - -#define PHACTRL_PHASE_MANUAL 0x01 -#define DEFAULT_PHAD_QVGA (9) -#define DEFAULT_COMADJ (125) - -struct corgi_lcd { - struct spi_device *spi_dev; - struct lcd_device *lcd_dev; - struct backlight_device *bl_dev; - - int limit_mask; - int intensity; - int power; - int mode; - char buf[2]; - - int gpio_backlight_on; - int gpio_backlight_cont; - int gpio_backlight_cont_inverted; - - void (*kick_battery)(void); -}; - -static int corgi_ssp_lcdtg_send(struct corgi_lcd *lcd, int reg, uint8_t val); - -static struct corgi_lcd *the_corgi_lcd; -static unsigned long corgibl_flags; -#define CORGIBL_SUSPENDED 0x01 -#define CORGIBL_BATTLOW 0x02 - -/* - * This is only a pseudo I2C interface. We can't use the standard kernel - * routines as the interface is write only. We just assume the data is acked... - */ -static void lcdtg_ssp_i2c_send(struct corgi_lcd *lcd, uint8_t data) -{ - corgi_ssp_lcdtg_send(lcd, POWERREG0_ADRS, data); - udelay(10); -} - -static void lcdtg_i2c_send_bit(struct corgi_lcd *lcd, uint8_t data) -{ - lcdtg_ssp_i2c_send(lcd, data); - lcdtg_ssp_i2c_send(lcd, data | POWER0_COM_DCLK); - lcdtg_ssp_i2c_send(lcd, data); -} - -static void lcdtg_i2c_send_start(struct corgi_lcd *lcd, uint8_t base) -{ - lcdtg_ssp_i2c_send(lcd, base | POWER0_COM_DCLK | POWER0_COM_DOUT); - lcdtg_ssp_i2c_send(lcd, base | POWER0_COM_DCLK); - lcdtg_ssp_i2c_send(lcd, base); -} - -static void lcdtg_i2c_send_stop(struct corgi_lcd *lcd, uint8_t base) -{ - lcdtg_ssp_i2c_send(lcd, base); - lcdtg_ssp_i2c_send(lcd, base | POWER0_COM_DCLK); - lcdtg_ssp_i2c_send(lcd, base | POWER0_COM_DCLK | POWER0_COM_DOUT); -} - -static void lcdtg_i2c_send_byte(struct corgi_lcd *lcd, - uint8_t base, uint8_t data) -{ - int i; - for (i = 0; i < 8; i++) { - if (data & 0x80) - lcdtg_i2c_send_bit(lcd, base | POWER0_COM_DOUT); - else - lcdtg_i2c_send_bit(lcd, base); - data <<= 1; - } -} - -static void lcdtg_i2c_wait_ack(struct corgi_lcd *lcd, uint8_t base) -{ - lcdtg_i2c_send_bit(lcd, base); -} - -static void lcdtg_set_common_voltage(struct corgi_lcd *lcd, - uint8_t base_data, uint8_t data) -{ - /* Set Common Voltage to M62332FP via I2C */ - lcdtg_i2c_send_start(lcd, base_data); - lcdtg_i2c_send_byte(lcd, base_data, 0x9c); - lcdtg_i2c_wait_ack(lcd, base_data); - lcdtg_i2c_send_byte(lcd, base_data, 0x00); - lcdtg_i2c_wait_ack(lcd, base_data); - lcdtg_i2c_send_byte(lcd, base_data, data); - lcdtg_i2c_wait_ack(lcd, base_data); - lcdtg_i2c_send_stop(lcd, base_data); -} - -static int corgi_ssp_lcdtg_send(struct corgi_lcd *lcd, int adrs, uint8_t data) -{ - struct spi_message msg; - struct spi_transfer xfer = { - .len = 1, - .cs_change = 1, - .tx_buf = lcd->buf, - }; - - lcd->buf[0] = ((adrs & 0x07) << 5) | (data & 0x1f); - spi_message_init(&msg); - spi_message_add_tail(&xfer, &msg); - - return spi_sync(lcd->spi_dev, &msg); -} - -/* Set Phase Adjust */ -static void lcdtg_set_phadadj(struct corgi_lcd *lcd, int mode) -{ - int adj; - - switch(mode) { - case CORGI_LCD_MODE_VGA: - /* Setting for VGA */ - adj = sharpsl_param.phadadj; - adj = (adj < 0) ? PHACTRL_PHASE_MANUAL : - PHACTRL_PHASE_MANUAL | ((adj & 0xf) << 1); - break; - case CORGI_LCD_MODE_QVGA: - default: - /* Setting for QVGA */ - adj = (DEFAULT_PHAD_QVGA << 1) | PHACTRL_PHASE_MANUAL; - break; - } - - corgi_ssp_lcdtg_send(lcd, PHACTRL_ADRS, adj); -} - -static void corgi_lcd_power_on(struct corgi_lcd *lcd) -{ - int comadj; - - /* Initialize Internal Logic & Port */ - corgi_ssp_lcdtg_send(lcd, PICTRL_ADRS, - PICTRL_POWER_DOWN | PICTRL_INIOFF | - PICTRL_INIT_STATE | PICTRL_COM_SIGNAL_OFF | - PICTRL_DAC_SIGNAL_OFF); - - corgi_ssp_lcdtg_send(lcd, POWERREG0_ADRS, - POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_OFF | - POWER0_COM_OFF | POWER0_VCC5_OFF); - - corgi_ssp_lcdtg_send(lcd, POWERREG1_ADRS, - POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_OFF); - - /* VDD(+8V), SVSS(-4V) ON */ - corgi_ssp_lcdtg_send(lcd, POWERREG1_ADRS, - POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_ON); - mdelay(3); - - /* DAC ON */ - corgi_ssp_lcdtg_send(lcd, POWERREG0_ADRS, - POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON | - POWER0_COM_OFF | POWER0_VCC5_OFF); - - /* INIB = H, INI = L */ - /* PICTL[0] = H , PICTL[1] = PICTL[2] = PICTL[4] = L */ - corgi_ssp_lcdtg_send(lcd, PICTRL_ADRS, - PICTRL_INIT_STATE | PICTRL_COM_SIGNAL_OFF); - - /* Set Common Voltage */ - comadj = sharpsl_param.comadj; - if (comadj < 0) - comadj = DEFAULT_COMADJ; - - lcdtg_set_common_voltage(lcd, POWER0_DAC_ON | POWER0_COM_OFF | - POWER0_VCC5_OFF, comadj); - - /* VCC5 ON, DAC ON */ - corgi_ssp_lcdtg_send(lcd, POWERREG0_ADRS, - POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON | - POWER0_COM_OFF | POWER0_VCC5_ON); - - /* GVSS(-8V) ON, VDD ON */ - corgi_ssp_lcdtg_send(lcd, POWERREG1_ADRS, - POWER1_VW_OFF | POWER1_GVSS_ON | POWER1_VDD_ON); - mdelay(2); - - /* COM SIGNAL ON (PICTL[3] = L) */ - corgi_ssp_lcdtg_send(lcd, PICTRL_ADRS, PICTRL_INIT_STATE); - - /* COM ON, DAC ON, VCC5_ON */ - corgi_ssp_lcdtg_send(lcd, POWERREG0_ADRS, - POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON | - POWER0_COM_ON | POWER0_VCC5_ON); - - /* VW ON, GVSS ON, VDD ON */ - corgi_ssp_lcdtg_send(lcd, POWERREG1_ADRS, - POWER1_VW_ON | POWER1_GVSS_ON | POWER1_VDD_ON); - - /* Signals output enable */ - corgi_ssp_lcdtg_send(lcd, PICTRL_ADRS, 0); - - /* Set Phase Adjust */ - lcdtg_set_phadadj(lcd, lcd->mode); - - /* Initialize for Input Signals from ATI */ - corgi_ssp_lcdtg_send(lcd, POLCTRL_ADRS, - POLCTRL_SYNC_POL_RISE | POLCTRL_EN_POL_RISE | - POLCTRL_DATA_POL_RISE | POLCTRL_SYNC_ACT_L | - POLCTRL_EN_ACT_H); - udelay(1000); - - switch (lcd->mode) { - case CORGI_LCD_MODE_VGA: - corgi_ssp_lcdtg_send(lcd, RESCTL_ADRS, RESCTL_VGA); - break; - case CORGI_LCD_MODE_QVGA: - default: - corgi_ssp_lcdtg_send(lcd, RESCTL_ADRS, RESCTL_QVGA); - break; - } -} - -static void corgi_lcd_power_off(struct corgi_lcd *lcd) -{ - /* 60Hz x 2 frame = 16.7msec x 2 = 33.4 msec */ - msleep(34); - - /* (1)VW OFF */ - corgi_ssp_lcdtg_send(lcd, POWERREG1_ADRS, - POWER1_VW_OFF | POWER1_GVSS_ON | POWER1_VDD_ON); - - /* (2)COM OFF */ - corgi_ssp_lcdtg_send(lcd, PICTRL_ADRS, PICTRL_COM_SIGNAL_OFF); - corgi_ssp_lcdtg_send(lcd, POWERREG0_ADRS, - POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_ON); - - /* (3)Set Common Voltage Bias 0V */ - lcdtg_set_common_voltage(lcd, POWER0_DAC_ON | POWER0_COM_OFF | - POWER0_VCC5_ON, 0); - - /* (4)GVSS OFF */ - corgi_ssp_lcdtg_send(lcd, POWERREG1_ADRS, - POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_ON); - - /* (5)VCC5 OFF */ - corgi_ssp_lcdtg_send(lcd, POWERREG0_ADRS, - POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_OFF); - - /* (6)Set PDWN, INIOFF, DACOFF */ - corgi_ssp_lcdtg_send(lcd, PICTRL_ADRS, - PICTRL_INIOFF | PICTRL_DAC_SIGNAL_OFF | - PICTRL_POWER_DOWN | PICTRL_COM_SIGNAL_OFF); - - /* (7)DAC OFF */ - corgi_ssp_lcdtg_send(lcd, POWERREG0_ADRS, - POWER0_DAC_OFF | POWER0_COM_OFF | POWER0_VCC5_OFF); - - /* (8)VDD OFF */ - corgi_ssp_lcdtg_send(lcd, POWERREG1_ADRS, - POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_OFF); -} - -static int corgi_lcd_set_mode(struct lcd_device *ld, struct fb_videomode *m) -{ - struct corgi_lcd *lcd = dev_get_drvdata(&ld->dev); - int mode = CORGI_LCD_MODE_QVGA; - - if (m->xres == 640 || m->xres == 480) - mode = CORGI_LCD_MODE_VGA; - - if (lcd->mode == mode) - return 0; - - lcdtg_set_phadadj(lcd, mode); - - switch (mode) { - case CORGI_LCD_MODE_VGA: - corgi_ssp_lcdtg_send(lcd, RESCTL_ADRS, RESCTL_VGA); - break; - case CORGI_LCD_MODE_QVGA: - default: - corgi_ssp_lcdtg_send(lcd, RESCTL_ADRS, RESCTL_QVGA); - break; - } - - lcd->mode = mode; - return 0; -} - -static int corgi_lcd_set_power(struct lcd_device *ld, int power) -{ - struct corgi_lcd *lcd = dev_get_drvdata(&ld->dev); - - if (POWER_IS_ON(power) && !POWER_IS_ON(lcd->power)) - corgi_lcd_power_on(lcd); - - if (!POWER_IS_ON(power) && POWER_IS_ON(lcd->power)) - corgi_lcd_power_off(lcd); - - lcd->power = power; - return 0; -} - -static int corgi_lcd_get_power(struct lcd_device *ld) -{ - struct corgi_lcd *lcd = dev_get_drvdata(&ld->dev); - - return lcd->power; -} - -static struct lcd_ops corgi_lcd_ops = { - .get_power = corgi_lcd_get_power, - .set_power = corgi_lcd_set_power, - .set_mode = corgi_lcd_set_mode, -}; - -static int corgi_bl_get_intensity(struct backlight_device *bd) -{ - struct corgi_lcd *lcd = dev_get_drvdata(&bd->dev); - - return lcd->intensity; -} - -static int corgi_bl_set_intensity(struct corgi_lcd *lcd, int intensity) -{ - int cont; - - if (intensity > 0x10) - intensity += 0x10; - - corgi_ssp_lcdtg_send(lcd, DUTYCTRL_ADRS, intensity); - - /* Bit 5 via GPIO_BACKLIGHT_CONT */ - cont = !!(intensity & 0x20) ^ lcd->gpio_backlight_cont_inverted; - - if (gpio_is_valid(lcd->gpio_backlight_cont)) - gpio_set_value(lcd->gpio_backlight_cont, cont); - - if (gpio_is_valid(lcd->gpio_backlight_on)) - gpio_set_value(lcd->gpio_backlight_on, intensity); - - if (lcd->kick_battery) - lcd->kick_battery(); - - lcd->intensity = intensity; - return 0; -} - -static int corgi_bl_update_status(struct backlight_device *bd) -{ - struct corgi_lcd *lcd = dev_get_drvdata(&bd->dev); - int intensity = bd->props.brightness; - - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; - - if (corgibl_flags & CORGIBL_SUSPENDED) - intensity = 0; - - if ((corgibl_flags & CORGIBL_BATTLOW) && intensity > lcd->limit_mask) - intensity = lcd->limit_mask; - - return corgi_bl_set_intensity(lcd, intensity); -} - -void corgi_lcd_limit_intensity(int limit) -{ - if (limit) - corgibl_flags |= CORGIBL_BATTLOW; - else - corgibl_flags &= ~CORGIBL_BATTLOW; - - backlight_update_status(the_corgi_lcd->bl_dev); -} -EXPORT_SYMBOL(corgi_lcd_limit_intensity); - -static const struct backlight_ops corgi_bl_ops = { - .get_brightness = corgi_bl_get_intensity, - .update_status = corgi_bl_update_status, -}; - -#ifdef CONFIG_PM -static int corgi_lcd_suspend(struct spi_device *spi, pm_message_t state) -{ - struct corgi_lcd *lcd = dev_get_drvdata(&spi->dev); - - corgibl_flags |= CORGIBL_SUSPENDED; - corgi_bl_set_intensity(lcd, 0); - corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_POWERDOWN); - return 0; -} - -static int corgi_lcd_resume(struct spi_device *spi) -{ - struct corgi_lcd *lcd = dev_get_drvdata(&spi->dev); - - corgibl_flags &= ~CORGIBL_SUSPENDED; - corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_UNBLANK); - backlight_update_status(lcd->bl_dev); - return 0; -} -#else -#define corgi_lcd_suspend NULL -#define corgi_lcd_resume NULL -#endif - -static int setup_gpio_backlight(struct corgi_lcd *lcd, - struct corgi_lcd_platform_data *pdata) -{ - struct spi_device *spi = lcd->spi_dev; - int err; - - lcd->gpio_backlight_on = -1; - lcd->gpio_backlight_cont = -1; - - if (gpio_is_valid(pdata->gpio_backlight_on)) { - err = gpio_request(pdata->gpio_backlight_on, "BL_ON"); - if (err) { - dev_err(&spi->dev, "failed to request GPIO%d for " - "backlight_on\n", pdata->gpio_backlight_on); - return err; - } - - lcd->gpio_backlight_on = pdata->gpio_backlight_on; - gpio_direction_output(lcd->gpio_backlight_on, 0); - } - - if (gpio_is_valid(pdata->gpio_backlight_cont)) { - err = gpio_request(pdata->gpio_backlight_cont, "BL_CONT"); - if (err) { - dev_err(&spi->dev, "failed to request GPIO%d for " - "backlight_cont\n", pdata->gpio_backlight_cont); - goto err_free_backlight_on; - } - - lcd->gpio_backlight_cont = pdata->gpio_backlight_cont; - - /* spitz and akita use both GPIOs for backlight, and - * have inverted polarity of GPIO_BACKLIGHT_CONT - */ - if (gpio_is_valid(lcd->gpio_backlight_on)) { - lcd->gpio_backlight_cont_inverted = 1; - gpio_direction_output(lcd->gpio_backlight_cont, 1); - } else { - lcd->gpio_backlight_cont_inverted = 0; - gpio_direction_output(lcd->gpio_backlight_cont, 0); - } - } - return 0; - -err_free_backlight_on: - if (gpio_is_valid(lcd->gpio_backlight_on)) - gpio_free(lcd->gpio_backlight_on); - return err; -} - -static int __devinit corgi_lcd_probe(struct spi_device *spi) -{ - struct backlight_properties props; - struct corgi_lcd_platform_data *pdata = spi->dev.platform_data; - struct corgi_lcd *lcd; - int ret = 0; - - if (pdata == NULL) { - dev_err(&spi->dev, "platform data not available\n"); - return -EINVAL; - } - - lcd = kzalloc(sizeof(struct corgi_lcd), GFP_KERNEL); - if (!lcd) { - dev_err(&spi->dev, "failed to allocate memory\n"); - return -ENOMEM; - } - - lcd->spi_dev = spi; - - lcd->lcd_dev = lcd_device_register("corgi_lcd", &spi->dev, - lcd, &corgi_lcd_ops); - if (IS_ERR(lcd->lcd_dev)) { - ret = PTR_ERR(lcd->lcd_dev); - goto err_free_lcd; - } - lcd->power = FB_BLANK_POWERDOWN; - lcd->mode = (pdata) ? pdata->init_mode : CORGI_LCD_MODE_VGA; - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_RAW; - props.max_brightness = pdata->max_intensity; - lcd->bl_dev = backlight_device_register("corgi_bl", &spi->dev, lcd, - &corgi_bl_ops, &props); - if (IS_ERR(lcd->bl_dev)) { - ret = PTR_ERR(lcd->bl_dev); - goto err_unregister_lcd; - } - lcd->bl_dev->props.brightness = pdata->default_intensity; - lcd->bl_dev->props.power = FB_BLANK_UNBLANK; - - ret = setup_gpio_backlight(lcd, pdata); - if (ret) - goto err_unregister_bl; - - lcd->kick_battery = pdata->kick_battery; - - dev_set_drvdata(&spi->dev, lcd); - corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_UNBLANK); - backlight_update_status(lcd->bl_dev); - - lcd->limit_mask = pdata->limit_mask; - the_corgi_lcd = lcd; - return 0; - -err_unregister_bl: - backlight_device_unregister(lcd->bl_dev); -err_unregister_lcd: - lcd_device_unregister(lcd->lcd_dev); -err_free_lcd: - kfree(lcd); - return ret; -} - -static int __devexit corgi_lcd_remove(struct spi_device *spi) -{ - struct corgi_lcd *lcd = dev_get_drvdata(&spi->dev); - - lcd->bl_dev->props.power = FB_BLANK_UNBLANK; - lcd->bl_dev->props.brightness = 0; - backlight_update_status(lcd->bl_dev); - backlight_device_unregister(lcd->bl_dev); - - if (gpio_is_valid(lcd->gpio_backlight_on)) - gpio_free(lcd->gpio_backlight_on); - - if (gpio_is_valid(lcd->gpio_backlight_cont)) - gpio_free(lcd->gpio_backlight_cont); - - corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_POWERDOWN); - lcd_device_unregister(lcd->lcd_dev); - kfree(lcd); - - return 0; -} - -static struct spi_driver corgi_lcd_driver = { - .driver = { - .name = "corgi-lcd", - .owner = THIS_MODULE, - }, - .probe = corgi_lcd_probe, - .remove = __devexit_p(corgi_lcd_remove), - .suspend = corgi_lcd_suspend, - .resume = corgi_lcd_resume, -}; - -module_spi_driver(corgi_lcd_driver); - -MODULE_DESCRIPTION("LCD and backlight driver for SHARP C7x0/Cxx00"); -MODULE_AUTHOR("Eric Miao "); -MODULE_LICENSE("GPL"); -MODULE_ALIAS("spi:corgi-lcd"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/cr_bllcd.c b/ANDROID_3.4.5/drivers/video/backlight/cr_bllcd.c deleted file mode 100644 index 22489eb5..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/cr_bllcd.c +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright (c) Intel Corp. 2007. - * All Rights Reserved. - * - * Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to - * develop this driver. - * - * This file is part of the Carillo Ranch video subsystem driver. - * The Carillo Ranch video subsystem driver is free software; - * you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * The Carillo Ranch video subsystem driver is distributed - * in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Authors: - * Thomas Hellstrom - * Alan Hourihane - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* The LVDS- and panel power controls sits on the - * GPIO port of the ISA bridge. - */ - -#define CRVML_DEVICE_LPC 0x27B8 -#define CRVML_REG_GPIOBAR 0x48 -#define CRVML_REG_GPIOEN 0x4C -#define CRVML_GPIOEN_BIT (1 << 4) -#define CRVML_PANEL_PORT 0x38 -#define CRVML_LVDS_ON 0x00000001 -#define CRVML_PANEL_ON 0x00000002 -#define CRVML_BACKLIGHT_OFF 0x00000004 - -/* The PLL Clock register sits on Host bridge */ -#define CRVML_DEVICE_MCH 0x5001 -#define CRVML_REG_MCHBAR 0x44 -#define CRVML_REG_MCHEN 0x54 -#define CRVML_MCHEN_BIT (1 << 28) -#define CRVML_MCHMAP_SIZE 4096 -#define CRVML_REG_CLOCK 0xc3c -#define CRVML_CLOCK_SHIFT 8 -#define CRVML_CLOCK_MASK 0x00000f00 - -static struct pci_dev *lpc_dev; -static u32 gpio_bar; - -struct cr_panel { - struct backlight_device *cr_backlight_device; - struct lcd_device *cr_lcd_device; -}; - -static int cr_backlight_set_intensity(struct backlight_device *bd) -{ - int intensity = bd->props.brightness; - u32 addr = gpio_bar + CRVML_PANEL_PORT; - u32 cur = inl(addr); - - if (bd->props.power == FB_BLANK_UNBLANK) - intensity = FB_BLANK_UNBLANK; - if (bd->props.fb_blank == FB_BLANK_UNBLANK) - intensity = FB_BLANK_UNBLANK; - if (bd->props.power == FB_BLANK_POWERDOWN) - intensity = FB_BLANK_POWERDOWN; - if (bd->props.fb_blank == FB_BLANK_POWERDOWN) - intensity = FB_BLANK_POWERDOWN; - - if (intensity == FB_BLANK_UNBLANK) { /* FULL ON */ - cur &= ~CRVML_BACKLIGHT_OFF; - outl(cur, addr); - } else if (intensity == FB_BLANK_POWERDOWN) { /* OFF */ - cur |= CRVML_BACKLIGHT_OFF; - outl(cur, addr); - } /* anything else, don't bother */ - - return 0; -} - -static int cr_backlight_get_intensity(struct backlight_device *bd) -{ - u32 addr = gpio_bar + CRVML_PANEL_PORT; - u32 cur = inl(addr); - u8 intensity; - - if (cur & CRVML_BACKLIGHT_OFF) - intensity = FB_BLANK_POWERDOWN; - else - intensity = FB_BLANK_UNBLANK; - - return intensity; -} - -static const struct backlight_ops cr_backlight_ops = { - .get_brightness = cr_backlight_get_intensity, - .update_status = cr_backlight_set_intensity, -}; - -static void cr_panel_on(void) -{ - u32 addr = gpio_bar + CRVML_PANEL_PORT; - u32 cur = inl(addr); - - if (!(cur & CRVML_PANEL_ON)) { - /* Make sure LVDS controller is down. */ - if (cur & 0x00000001) { - cur &= ~CRVML_LVDS_ON; - outl(cur, addr); - } - /* Power up Panel */ - schedule_timeout(HZ / 10); - cur |= CRVML_PANEL_ON; - outl(cur, addr); - } - - /* Power up LVDS controller */ - - if (!(cur & CRVML_LVDS_ON)) { - schedule_timeout(HZ / 10); - outl(cur | CRVML_LVDS_ON, addr); - } -} - -static void cr_panel_off(void) -{ - u32 addr = gpio_bar + CRVML_PANEL_PORT; - u32 cur = inl(addr); - - /* Power down LVDS controller first to avoid high currents */ - if (cur & CRVML_LVDS_ON) { - cur &= ~CRVML_LVDS_ON; - outl(cur, addr); - } - if (cur & CRVML_PANEL_ON) { - schedule_timeout(HZ / 10); - outl(cur & ~CRVML_PANEL_ON, addr); - } -} - -static int cr_lcd_set_power(struct lcd_device *ld, int power) -{ - if (power == FB_BLANK_UNBLANK) - cr_panel_on(); - if (power == FB_BLANK_POWERDOWN) - cr_panel_off(); - - return 0; -} - -static struct lcd_ops cr_lcd_ops = { - .set_power = cr_lcd_set_power, -}; - -static int cr_backlight_probe(struct platform_device *pdev) -{ - struct backlight_properties props; - struct backlight_device *bdp; - struct lcd_device *ldp; - struct cr_panel *crp; - u8 dev_en; - - lpc_dev = pci_get_device(PCI_VENDOR_ID_INTEL, - CRVML_DEVICE_LPC, NULL); - if (!lpc_dev) { - printk("INTEL CARILLO RANCH LPC not found.\n"); - return -ENODEV; - } - - pci_read_config_byte(lpc_dev, CRVML_REG_GPIOEN, &dev_en); - if (!(dev_en & CRVML_GPIOEN_BIT)) { - printk(KERN_ERR - "Carillo Ranch GPIO device was not enabled.\n"); - pci_dev_put(lpc_dev); - return -ENODEV; - } - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_RAW; - bdp = backlight_device_register("cr-backlight", &pdev->dev, NULL, - &cr_backlight_ops, &props); - if (IS_ERR(bdp)) { - pci_dev_put(lpc_dev); - return PTR_ERR(bdp); - } - - ldp = lcd_device_register("cr-lcd", &pdev->dev, NULL, &cr_lcd_ops); - if (IS_ERR(ldp)) { - backlight_device_unregister(bdp); - pci_dev_put(lpc_dev); - return PTR_ERR(ldp); - } - - pci_read_config_dword(lpc_dev, CRVML_REG_GPIOBAR, - &gpio_bar); - gpio_bar &= ~0x3F; - - crp = devm_kzalloc(&pdev->dev, sizeof(*crp), GFP_KERNEL); - if (!crp) { - lcd_device_unregister(ldp); - backlight_device_unregister(bdp); - pci_dev_put(lpc_dev); - return -ENOMEM; - } - - crp->cr_backlight_device = bdp; - crp->cr_lcd_device = ldp; - crp->cr_backlight_device->props.power = FB_BLANK_UNBLANK; - crp->cr_backlight_device->props.brightness = 0; - cr_backlight_set_intensity(crp->cr_backlight_device); - cr_lcd_set_power(crp->cr_lcd_device, FB_BLANK_UNBLANK); - - platform_set_drvdata(pdev, crp); - - return 0; -} - -static int cr_backlight_remove(struct platform_device *pdev) -{ - struct cr_panel *crp = platform_get_drvdata(pdev); - crp->cr_backlight_device->props.power = FB_BLANK_POWERDOWN; - crp->cr_backlight_device->props.brightness = 0; - crp->cr_backlight_device->props.max_brightness = 0; - cr_backlight_set_intensity(crp->cr_backlight_device); - cr_lcd_set_power(crp->cr_lcd_device, FB_BLANK_POWERDOWN); - backlight_device_unregister(crp->cr_backlight_device); - lcd_device_unregister(crp->cr_lcd_device); - pci_dev_put(lpc_dev); - - return 0; -} - -static struct platform_driver cr_backlight_driver = { - .probe = cr_backlight_probe, - .remove = cr_backlight_remove, - .driver = { - .name = "cr_backlight", - }, -}; - -static struct platform_device *crp; - -static int __init cr_backlight_init(void) -{ - int ret = platform_driver_register(&cr_backlight_driver); - - if (ret) - return ret; - - crp = platform_device_register_simple("cr_backlight", -1, NULL, 0); - if (IS_ERR(crp)) { - platform_driver_unregister(&cr_backlight_driver); - return PTR_ERR(crp); - } - - printk("Carillo Ranch Backlight Driver Initialized.\n"); - - return 0; -} - -static void __exit cr_backlight_exit(void) -{ - platform_device_unregister(crp); - platform_driver_unregister(&cr_backlight_driver); -} - -module_init(cr_backlight_init); -module_exit(cr_backlight_exit); - -MODULE_AUTHOR("Tungsten Graphics Inc."); -MODULE_DESCRIPTION("Carillo Ranch Backlight Driver"); -MODULE_LICENSE("GPL"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/da903x_bl.c b/ANDROID_3.4.5/drivers/video/backlight/da903x_bl.c deleted file mode 100644 index 30e19681..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/da903x_bl.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Backlight driver for Dialog Semiconductor DA9030/DA9034 - * - * Copyright (C) 2008 Compulab, Ltd. - * Mike Rapoport - * - * Copyright (C) 2006-2008 Marvell International Ltd. - * Eric Miao - * - * 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 -#include -#include -#include -#include -#include -#include -#include - -#define DA9030_WLED_CONTROL 0x25 -#define DA9030_WLED_CP_EN (1 << 6) -#define DA9030_WLED_TRIM(x) ((x) & 0x7) - -#define DA9034_WLED_CONTROL1 0x3C -#define DA9034_WLED_CONTROL2 0x3D -#define DA9034_WLED_ISET(x) ((x) & 0x1f) - -#define DA9034_WLED_BOOST_EN (1 << 5) - -#define DA9030_MAX_BRIGHTNESS 7 -#define DA9034_MAX_BRIGHTNESS 0x7f - -struct da903x_backlight_data { - struct device *da903x_dev; - int id; - int current_brightness; -}; - -static int da903x_backlight_set(struct backlight_device *bl, int brightness) -{ - struct da903x_backlight_data *data = bl_get_data(bl); - struct device *dev = data->da903x_dev; - uint8_t val; - int ret = 0; - - switch (data->id) { - case DA9034_ID_WLED: - ret = da903x_update(dev, DA9034_WLED_CONTROL1, - brightness, 0x7f); - if (ret) - return ret; - - if (data->current_brightness && brightness == 0) - ret = da903x_clr_bits(dev, - DA9034_WLED_CONTROL2, - DA9034_WLED_BOOST_EN); - - if (data->current_brightness == 0 && brightness) - ret = da903x_set_bits(dev, - DA9034_WLED_CONTROL2, - DA9034_WLED_BOOST_EN); - break; - case DA9030_ID_WLED: - val = DA9030_WLED_TRIM(brightness); - val |= brightness ? DA9030_WLED_CP_EN : 0; - ret = da903x_write(dev, DA9030_WLED_CONTROL, val); - break; - } - - if (ret) - return ret; - - data->current_brightness = brightness; - return 0; -} - -static int da903x_backlight_update_status(struct backlight_device *bl) -{ - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return da903x_backlight_set(bl, brightness); -} - -static int da903x_backlight_get_brightness(struct backlight_device *bl) -{ - struct da903x_backlight_data *data = bl_get_data(bl); - return data->current_brightness; -} - -static const struct backlight_ops da903x_backlight_ops = { - .update_status = da903x_backlight_update_status, - .get_brightness = da903x_backlight_get_brightness, -}; - -static int da903x_backlight_probe(struct platform_device *pdev) -{ - struct da9034_backlight_pdata *pdata = pdev->dev.platform_data; - struct da903x_backlight_data *data; - struct backlight_device *bl; - struct backlight_properties props; - int max_brightness; - - data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); - if (data == NULL) - return -ENOMEM; - - switch (pdev->id) { - case DA9030_ID_WLED: - max_brightness = DA9030_MAX_BRIGHTNESS; - break; - case DA9034_ID_WLED: - max_brightness = DA9034_MAX_BRIGHTNESS; - break; - default: - dev_err(&pdev->dev, "invalid backlight device ID(%d)\n", - pdev->id); - return -EINVAL; - } - - data->id = pdev->id; - data->da903x_dev = pdev->dev.parent; - data->current_brightness = 0; - - /* adjust the WLED output current */ - if (pdata) - da903x_write(data->da903x_dev, DA9034_WLED_CONTROL2, - DA9034_WLED_ISET(pdata->output_current)); - - props.type = BACKLIGHT_RAW; - props.max_brightness = max_brightness; - bl = backlight_device_register(pdev->name, data->da903x_dev, data, - &da903x_backlight_ops, &props); - if (IS_ERR(bl)) { - dev_err(&pdev->dev, "failed to register backlight\n"); - return PTR_ERR(bl); - } - - bl->props.brightness = max_brightness; - - platform_set_drvdata(pdev, bl); - backlight_update_status(bl); - return 0; -} - -static int da903x_backlight_remove(struct platform_device *pdev) -{ - struct backlight_device *bl = platform_get_drvdata(pdev); - - backlight_device_unregister(bl); - return 0; -} - -#ifdef CONFIG_PM -static int da903x_backlight_suspend(struct device *dev) -{ - struct platform_device *pdev = to_platform_device(dev); - struct backlight_device *bl = platform_get_drvdata(pdev); - return da903x_backlight_set(bl, 0); -} - -static int da903x_backlight_resume(struct device *dev) -{ - struct platform_device *pdev = to_platform_device(dev); - struct backlight_device *bl = platform_get_drvdata(pdev); - - backlight_update_status(bl); - return 0; -} - -static const struct dev_pm_ops da903x_backlight_pm_ops = { - .suspend = da903x_backlight_suspend, - .resume = da903x_backlight_resume, -}; -#endif - -static struct platform_driver da903x_backlight_driver = { - .driver = { - .name = "da903x-backlight", - .owner = THIS_MODULE, -#ifdef CONFIG_PM - .pm = &da903x_backlight_pm_ops, -#endif - }, - .probe = da903x_backlight_probe, - .remove = da903x_backlight_remove, -}; - -module_platform_driver(da903x_backlight_driver); - -MODULE_DESCRIPTION("Backlight Driver for Dialog Semiconductor DA9030/DA9034"); -MODULE_AUTHOR("Eric Miao " - "Mike Rapoport "); -MODULE_LICENSE("GPL"); -MODULE_ALIAS("platform:da903x-backlight"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/da9052_bl.c b/ANDROID_3.4.5/drivers/video/backlight/da9052_bl.c deleted file mode 100644 index b628d68f..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/da9052_bl.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Backlight Driver for Dialog DA9052 PMICs - * - * Copyright(c) 2012 Dialog Semiconductor Ltd. - * - * Author: David Dajun Chen - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - */ - -#include -#include -#include -#include -#include - -#include -#include - -#define DA9052_MAX_BRIGHTNESS 0xFF - -enum { - DA9052_WLEDS_OFF, - DA9052_WLEDS_ON, -}; - -enum { - DA9052_TYPE_WLED1, - DA9052_TYPE_WLED2, - DA9052_TYPE_WLED3, -}; - -static unsigned char wled_bank[] = { - DA9052_LED1_CONF_REG, - DA9052_LED2_CONF_REG, - DA9052_LED3_CONF_REG, -}; - -struct da9052_bl { - struct da9052 *da9052; - uint brightness; - uint state; - uint led_reg; -}; - -static int da9052_adjust_wled_brightness(struct da9052_bl *wleds) -{ - unsigned char boost_en; - unsigned char i_sink; - int ret; - - boost_en = 0x3F; - i_sink = 0xFF; - if (wleds->state == DA9052_WLEDS_OFF) { - boost_en = 0x00; - i_sink = 0x00; - } - - ret = da9052_reg_write(wleds->da9052, DA9052_BOOST_REG, boost_en); - if (ret < 0) - return ret; - - ret = da9052_reg_write(wleds->da9052, DA9052_LED_CONT_REG, i_sink); - if (ret < 0) - return ret; - - ret = da9052_reg_write(wleds->da9052, wled_bank[wleds->led_reg], 0x0); - if (ret < 0) - return ret; - - msleep(10); - - if (wleds->brightness) { - ret = da9052_reg_write(wleds->da9052, wled_bank[wleds->led_reg], - wleds->brightness); - if (ret < 0) - return ret; - } - - return 0; -} - -static int da9052_backlight_update_status(struct backlight_device *bl) -{ - int brightness = bl->props.brightness; - struct da9052_bl *wleds = bl_get_data(bl); - - wleds->brightness = brightness; - wleds->state = DA9052_WLEDS_ON; - - return da9052_adjust_wled_brightness(wleds); -} - -static int da9052_backlight_get_brightness(struct backlight_device *bl) -{ - struct da9052_bl *wleds = bl_get_data(bl); - - return wleds->brightness; -} - -static const struct backlight_ops da9052_backlight_ops = { - .update_status = da9052_backlight_update_status, - .get_brightness = da9052_backlight_get_brightness, -}; - -static int da9052_backlight_probe(struct platform_device *pdev) -{ - struct backlight_device *bl; - struct backlight_properties props; - struct da9052_bl *wleds; - - wleds = devm_kzalloc(&pdev->dev, sizeof(struct da9052_bl), GFP_KERNEL); - if (!wleds) - return -ENOMEM; - - wleds->da9052 = dev_get_drvdata(pdev->dev.parent); - wleds->brightness = 0; - wleds->led_reg = platform_get_device_id(pdev)->driver_data; - wleds->state = DA9052_WLEDS_OFF; - - props.type = BACKLIGHT_RAW; - props.max_brightness = DA9052_MAX_BRIGHTNESS; - - bl = backlight_device_register(pdev->name, wleds->da9052->dev, wleds, - &da9052_backlight_ops, &props); - if (IS_ERR(bl)) { - dev_err(&pdev->dev, "Failed to register backlight\n"); - devm_kfree(&pdev->dev, wleds); - return PTR_ERR(bl); - } - - bl->props.max_brightness = DA9052_MAX_BRIGHTNESS; - bl->props.brightness = 0; - platform_set_drvdata(pdev, bl); - - return da9052_adjust_wled_brightness(wleds); -} - -static int da9052_backlight_remove(struct platform_device *pdev) -{ - struct backlight_device *bl = platform_get_drvdata(pdev); - struct da9052_bl *wleds = bl_get_data(bl); - - wleds->brightness = 0; - wleds->state = DA9052_WLEDS_OFF; - da9052_adjust_wled_brightness(wleds); - backlight_device_unregister(bl); - devm_kfree(&pdev->dev, wleds); - - return 0; -} - -static struct platform_device_id da9052_wled_ids[] = { - { - .name = "da9052-wled1", - .driver_data = DA9052_TYPE_WLED1, - }, - { - .name = "da9052-wled2", - .driver_data = DA9052_TYPE_WLED2, - }, - { - .name = "da9052-wled3", - .driver_data = DA9052_TYPE_WLED3, - }, -}; - -static struct platform_driver da9052_wled_driver = { - .probe = da9052_backlight_probe, - .remove = da9052_backlight_remove, - .id_table = da9052_wled_ids, - .driver = { - .name = "da9052-wled", - .owner = THIS_MODULE, - }, -}; - -module_platform_driver(da9052_wled_driver); - -MODULE_AUTHOR("David Dajun Chen "); -MODULE_DESCRIPTION("Backlight driver for DA9052 PMIC"); -MODULE_LICENSE("GPL"); -MODULE_ALIAS("platform:da9052-backlight"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/ep93xx_bl.c b/ANDROID_3.4.5/drivers/video/backlight/ep93xx_bl.c deleted file mode 100644 index 08214e1f..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/ep93xx_bl.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Driver for the Cirrus EP93xx lcd backlight - * - * Copyright (c) 2010 H Hartley Sweeten - * - * 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. - * - * This driver controls the pulse width modulated brightness control output, - * BRIGHT, on the Cirrus EP9307, EP9312, and EP9315 processors. - */ - -#include -#include -#include -#include -#include - -#define EP93XX_MAX_COUNT 255 -#define EP93XX_MAX_BRIGHT 255 -#define EP93XX_DEF_BRIGHT 128 - -struct ep93xxbl { - void __iomem *mmio; - int brightness; -}; - -static int ep93xxbl_set(struct backlight_device *bl, int brightness) -{ - struct ep93xxbl *ep93xxbl = bl_get_data(bl); - - writel((brightness << 8) | EP93XX_MAX_COUNT, ep93xxbl->mmio); - - ep93xxbl->brightness = brightness; - - return 0; -} - -static int ep93xxbl_update_status(struct backlight_device *bl) -{ - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK || - bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return ep93xxbl_set(bl, brightness); -} - -static int ep93xxbl_get_brightness(struct backlight_device *bl) -{ - struct ep93xxbl *ep93xxbl = bl_get_data(bl); - - return ep93xxbl->brightness; -} - -static const struct backlight_ops ep93xxbl_ops = { - .update_status = ep93xxbl_update_status, - .get_brightness = ep93xxbl_get_brightness, -}; - -static int __init ep93xxbl_probe(struct platform_device *dev) -{ - struct ep93xxbl *ep93xxbl; - struct backlight_device *bl; - struct backlight_properties props; - struct resource *res; - - ep93xxbl = devm_kzalloc(&dev->dev, sizeof(*ep93xxbl), GFP_KERNEL); - if (!ep93xxbl) - return -ENOMEM; - - res = platform_get_resource(dev, IORESOURCE_MEM, 0); - if (!res) - return -ENXIO; - - /* - * FIXME - We don't do a request_mem_region here because we are - * sharing the register space with the framebuffer driver (see - * drivers/video/ep93xx-fb.c) and doing so will cause the second - * loaded driver to return -EBUSY. - * - * NOTE: No locking is required; the framebuffer does not touch - * this register. - */ - ep93xxbl->mmio = devm_ioremap(&dev->dev, res->start, - resource_size(res)); - if (!ep93xxbl->mmio) - return -ENXIO; - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_RAW; - props.max_brightness = EP93XX_MAX_BRIGHT; - bl = backlight_device_register(dev->name, &dev->dev, ep93xxbl, - &ep93xxbl_ops, &props); - if (IS_ERR(bl)) - return PTR_ERR(bl); - - bl->props.brightness = EP93XX_DEF_BRIGHT; - - platform_set_drvdata(dev, bl); - - ep93xxbl_update_status(bl); - - return 0; -} - -static int ep93xxbl_remove(struct platform_device *dev) -{ - struct backlight_device *bl = platform_get_drvdata(dev); - - backlight_device_unregister(bl); - platform_set_drvdata(dev, NULL); - return 0; -} - -#ifdef CONFIG_PM -static int ep93xxbl_suspend(struct platform_device *dev, pm_message_t state) -{ - struct backlight_device *bl = platform_get_drvdata(dev); - - return ep93xxbl_set(bl, 0); -} - -static int ep93xxbl_resume(struct platform_device *dev) -{ - struct backlight_device *bl = platform_get_drvdata(dev); - - backlight_update_status(bl); - return 0; -} -#else -#define ep93xxbl_suspend NULL -#define ep93xxbl_resume NULL -#endif - -static struct platform_driver ep93xxbl_driver = { - .driver = { - .name = "ep93xx-bl", - .owner = THIS_MODULE, - }, - .probe = ep93xxbl_probe, - .remove = __devexit_p(ep93xxbl_remove), - .suspend = ep93xxbl_suspend, - .resume = ep93xxbl_resume, -}; - -module_platform_driver(ep93xxbl_driver); - -MODULE_DESCRIPTION("EP93xx Backlight Driver"); -MODULE_AUTHOR("H Hartley Sweeten "); -MODULE_LICENSE("GPL"); -MODULE_ALIAS("platform:ep93xx-bl"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/generic_bl.c b/ANDROID_3.4.5/drivers/video/backlight/generic_bl.c deleted file mode 100644 index 9ce6170c..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/generic_bl.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generic Backlight Driver - * - * Copyright (c) 2004-2008 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 -#include -#include -#include -#include -#include -#include - -static int genericbl_intensity; -static struct backlight_device *generic_backlight_device; -static struct generic_bl_info *bl_machinfo; - -/* Flag to signal when the battery is low */ -#define GENERICBL_BATTLOW BL_CORE_DRIVER1 - -static int genericbl_send_intensity(struct backlight_device *bd) -{ - int intensity = bd->props.brightness; - - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - if (bd->props.state & BL_CORE_FBBLANK) - intensity = 0; - if (bd->props.state & BL_CORE_SUSPENDED) - intensity = 0; - if (bd->props.state & GENERICBL_BATTLOW) - intensity &= bl_machinfo->limit_mask; - - bl_machinfo->set_bl_intensity(intensity); - - genericbl_intensity = intensity; - - if (bl_machinfo->kick_battery) - bl_machinfo->kick_battery(); - - return 0; -} - -static int genericbl_get_intensity(struct backlight_device *bd) -{ - return genericbl_intensity; -} - -/* - * Called when the battery is low to limit the backlight intensity. - * If limit==0 clear any limit, otherwise limit the intensity - */ -void genericbl_limit_intensity(int limit) -{ - struct backlight_device *bd = generic_backlight_device; - - mutex_lock(&bd->ops_lock); - if (limit) - bd->props.state |= GENERICBL_BATTLOW; - else - bd->props.state &= ~GENERICBL_BATTLOW; - backlight_update_status(generic_backlight_device); - mutex_unlock(&bd->ops_lock); -} -EXPORT_SYMBOL(genericbl_limit_intensity); - -static const struct backlight_ops genericbl_ops = { - .options = BL_CORE_SUSPENDRESUME, - .get_brightness = genericbl_get_intensity, - .update_status = genericbl_send_intensity, -}; - -static int genericbl_probe(struct platform_device *pdev) -{ - struct backlight_properties props; - struct generic_bl_info *machinfo = pdev->dev.platform_data; - const char *name = "generic-bl"; - struct backlight_device *bd; - - bl_machinfo = machinfo; - if (!machinfo->limit_mask) - machinfo->limit_mask = -1; - - if (machinfo->name) - name = machinfo->name; - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_RAW; - props.max_brightness = machinfo->max_intensity; - bd = backlight_device_register(name, &pdev->dev, NULL, &genericbl_ops, - &props); - if (IS_ERR (bd)) - return PTR_ERR (bd); - - platform_set_drvdata(pdev, bd); - - bd->props.power = FB_BLANK_UNBLANK; - bd->props.brightness = machinfo->default_intensity; - backlight_update_status(bd); - - generic_backlight_device = bd; - - printk("Generic Backlight Driver Initialized.\n"); - return 0; -} - -static int genericbl_remove(struct platform_device *pdev) -{ - struct backlight_device *bd = platform_get_drvdata(pdev); - - bd->props.power = 0; - bd->props.brightness = 0; - backlight_update_status(bd); - - backlight_device_unregister(bd); - - printk("Generic Backlight Driver Unloaded\n"); - return 0; -} - -static struct platform_driver genericbl_driver = { - .probe = genericbl_probe, - .remove = genericbl_remove, - .driver = { - .name = "generic-bl", - }, -}; - -module_platform_driver(genericbl_driver); - -MODULE_AUTHOR("Richard Purdie "); -MODULE_DESCRIPTION("Generic Backlight Driver"); -MODULE_LICENSE("GPL"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/hp680_bl.c b/ANDROID_3.4.5/drivers/video/backlight/hp680_bl.c deleted file mode 100644 index 38aa0027..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/hp680_bl.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Backlight Driver for HP Jornada 680 - * - * Copyright (c) 2005 Andriy Skulysh - * - * Based on Sharp's Corgi Backlight Driver - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#define HP680_MAX_INTENSITY 255 -#define HP680_DEFAULT_INTENSITY 10 - -static int hp680bl_suspended; -static int current_intensity = 0; -static DEFINE_SPINLOCK(bl_lock); - -static void hp680bl_send_intensity(struct backlight_device *bd) -{ - unsigned long flags; - u16 v; - int intensity = bd->props.brightness; - - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; - if (hp680bl_suspended) - intensity = 0; - - spin_lock_irqsave(&bl_lock, flags); - if (intensity && current_intensity == 0) { - sh_dac_enable(DAC_LCD_BRIGHTNESS); - v = inw(HD64461_GPBDR); - v &= ~HD64461_GPBDR_LCDOFF; - outw(v, HD64461_GPBDR); - sh_dac_output(255-(u8)intensity, DAC_LCD_BRIGHTNESS); - } else if (intensity == 0 && current_intensity != 0) { - sh_dac_output(255-(u8)intensity, DAC_LCD_BRIGHTNESS); - sh_dac_disable(DAC_LCD_BRIGHTNESS); - v = inw(HD64461_GPBDR); - v |= HD64461_GPBDR_LCDOFF; - outw(v, HD64461_GPBDR); - } else if (intensity) { - sh_dac_output(255-(u8)intensity, DAC_LCD_BRIGHTNESS); - } - spin_unlock_irqrestore(&bl_lock, flags); - - current_intensity = intensity; -} - - -#ifdef CONFIG_PM -static int hp680bl_suspend(struct platform_device *pdev, pm_message_t state) -{ - struct backlight_device *bd = platform_get_drvdata(pdev); - - hp680bl_suspended = 1; - hp680bl_send_intensity(bd); - return 0; -} - -static int hp680bl_resume(struct platform_device *pdev) -{ - struct backlight_device *bd = platform_get_drvdata(pdev); - - hp680bl_suspended = 0; - hp680bl_send_intensity(bd); - return 0; -} -#else -#define hp680bl_suspend NULL -#define hp680bl_resume NULL -#endif - -static int hp680bl_set_intensity(struct backlight_device *bd) -{ - hp680bl_send_intensity(bd); - return 0; -} - -static int hp680bl_get_intensity(struct backlight_device *bd) -{ - return current_intensity; -} - -static const struct backlight_ops hp680bl_ops = { - .get_brightness = hp680bl_get_intensity, - .update_status = hp680bl_set_intensity, -}; - -static int __devinit hp680bl_probe(struct platform_device *pdev) -{ - struct backlight_properties props; - struct backlight_device *bd; - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_RAW; - props.max_brightness = HP680_MAX_INTENSITY; - bd = backlight_device_register("hp680-bl", &pdev->dev, NULL, - &hp680bl_ops, &props); - if (IS_ERR(bd)) - return PTR_ERR(bd); - - platform_set_drvdata(pdev, bd); - - bd->props.brightness = HP680_DEFAULT_INTENSITY; - hp680bl_send_intensity(bd); - - return 0; -} - -static int hp680bl_remove(struct platform_device *pdev) -{ - struct backlight_device *bd = platform_get_drvdata(pdev); - - bd->props.brightness = 0; - bd->props.power = 0; - hp680bl_send_intensity(bd); - - backlight_device_unregister(bd); - - return 0; -} - -static struct platform_driver hp680bl_driver = { - .probe = hp680bl_probe, - .remove = hp680bl_remove, - .suspend = hp680bl_suspend, - .resume = hp680bl_resume, - .driver = { - .name = "hp680-bl", - }, -}; - -static struct platform_device *hp680bl_device; - -static int __init hp680bl_init(void) -{ - int ret; - - ret = platform_driver_register(&hp680bl_driver); - if (ret) - return ret; - hp680bl_device = platform_device_register_simple("hp680-bl", -1, - NULL, 0); - if (IS_ERR(hp680bl_device)) { - platform_driver_unregister(&hp680bl_driver); - return PTR_ERR(hp680bl_device); - } - return 0; -} - -static void __exit hp680bl_exit(void) -{ - platform_device_unregister(hp680bl_device); - platform_driver_unregister(&hp680bl_driver); -} - -module_init(hp680bl_init); -module_exit(hp680bl_exit); - -MODULE_AUTHOR("Andriy Skulysh "); -MODULE_DESCRIPTION("HP Jornada 680 Backlight Driver"); -MODULE_LICENSE("GPL"); diff --git a/ANDROID_3.4.5/drivers/video/backlight/ili9320.c b/ANDROID_3.4.5/drivers/video/backlight/ili9320.c deleted file mode 100644 index 5118a9f0..00000000 --- a/ANDROID_3.4.5/drivers/video/backlight/ili9320.c +++ /dev/null @@ -1,331 +0,0 @@ -/* drivers/video/backlight/ili9320.c - * - * ILI9320 LCD controller driver core. - * - * Copyright 2007 Simtec Electronics - * http://armlinux.simtec.co.uk/ - * Ben Dooks - * - * 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 -#include -#include -#include -#include -#include -#include - -#include - -#include