gta02: Use pcf50633 backlight driver instead of platform backlight driver.
Use the pcf50633 backlight driver instead of the platform backlight driver. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
parent
f5bf403a9d
commit
67e67df8da
|
@ -49,7 +49,6 @@
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
|
||||||
#include <linux/i2c.h>
|
#include <linux/i2c.h>
|
||||||
#include <linux/backlight.h>
|
|
||||||
#include <linux/regulator/machine.h>
|
#include <linux/regulator/machine.h>
|
||||||
|
|
||||||
#include <linux/mfd/pcf50633/core.h>
|
#include <linux/mfd/pcf50633/core.h>
|
||||||
|
@ -57,6 +56,7 @@
|
||||||
#include <linux/mfd/pcf50633/adc.h>
|
#include <linux/mfd/pcf50633/adc.h>
|
||||||
#include <linux/mfd/pcf50633/gpio.h>
|
#include <linux/mfd/pcf50633/gpio.h>
|
||||||
#include <linux/mfd/pcf50633/pmic.h>
|
#include <linux/mfd/pcf50633/pmic.h>
|
||||||
|
#include <linux/mfd/pcf50633/backlight.h>
|
||||||
|
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
|
@ -254,6 +254,12 @@ static char *gta02_batteries[] = {
|
||||||
"battery",
|
"battery",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct pcf50633_bl_platform_data gta02_backlight_data = {
|
||||||
|
.default_brightness = 0x3f,
|
||||||
|
.default_brightness_limit = 0,
|
||||||
|
.ramp_time = 5,
|
||||||
|
};
|
||||||
|
|
||||||
struct pcf50633_platform_data gta02_pcf_pdata = {
|
struct pcf50633_platform_data gta02_pcf_pdata = {
|
||||||
.resumers = {
|
.resumers = {
|
||||||
[0] = PCF50633_INT1_USBINS |
|
[0] = PCF50633_INT1_USBINS |
|
||||||
|
@ -271,6 +277,8 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
|
||||||
|
|
||||||
.charger_reference_current_ma = 1000,
|
.charger_reference_current_ma = 1000,
|
||||||
|
|
||||||
|
.backlight_data = >a02_backlight_data,
|
||||||
|
|
||||||
.reg_init_data = {
|
.reg_init_data = {
|
||||||
[PCF50633_REGULATOR_AUTO] = {
|
[PCF50633_REGULATOR_AUTO] = {
|
||||||
.constraints = {
|
.constraints = {
|
||||||
|
@ -478,71 +486,6 @@ static struct s3c2410_udc_mach_info gta02_udc_cfg = {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void gta02_bl_set_intensity(int intensity)
|
|
||||||
{
|
|
||||||
struct pcf50633 *pcf = gta02_pcf;
|
|
||||||
int old_intensity = pcf50633_reg_read(pcf, PCF50633_REG_LEDOUT);
|
|
||||||
|
|
||||||
/* We map 8-bit intensity to 6-bit intensity in hardware. */
|
|
||||||
intensity >>= 2;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This can happen during, eg, print of panic on blanked console,
|
|
||||||
* but we can't service i2c without interrupts active, so abort.
|
|
||||||
*/
|
|
||||||
if (in_atomic()) {
|
|
||||||
printk(KERN_ERR "gta02_bl_set_intensity called while atomic\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
old_intensity = pcf50633_reg_read(pcf, PCF50633_REG_LEDOUT);
|
|
||||||
if (intensity == old_intensity)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* We can't do this anywhere else. */
|
|
||||||
pcf50633_reg_write(pcf, PCF50633_REG_LEDDIM, 5);
|
|
||||||
|
|
||||||
if (!(pcf50633_reg_read(pcf, PCF50633_REG_LEDENA) & 3))
|
|
||||||
old_intensity = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The PCF50633 cannot handle LEDOUT = 0 (datasheet p60)
|
|
||||||
* if seen, you have to re-enable the LED unit.
|
|
||||||
*/
|
|
||||||
if (!intensity || !old_intensity)
|
|
||||||
pcf50633_reg_write(pcf, PCF50633_REG_LEDENA, 0);
|
|
||||||
|
|
||||||
/* Illegal to set LEDOUT to 0. */
|
|
||||||
if (!intensity)
|
|
||||||
pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_LEDOUT, 0x3f, 2);
|
|
||||||
else
|
|
||||||
pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_LEDOUT, 0x3f,
|
|
||||||
intensity);
|
|
||||||
|
|
||||||
if (intensity)
|
|
||||||
pcf50633_reg_write(pcf, PCF50633_REG_LEDENA, 2);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct generic_bl_info gta02_bl_info = {
|
|
||||||
.name = "gta02-bl",
|
|
||||||
.max_intensity = 0xff,
|
|
||||||
.default_intensity = 0xff,
|
|
||||||
.set_bl_intensity = gta02_bl_set_intensity,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device gta02_bl_dev = {
|
|
||||||
.name = "generic-bl",
|
|
||||||
.id = 1,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = >a02_bl_info,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* USB */
|
/* USB */
|
||||||
static struct s3c2410_hcd_info gta02_usb_info __initdata = {
|
static struct s3c2410_hcd_info gta02_usb_info __initdata = {
|
||||||
.port[0] = {
|
.port[0] = {
|
||||||
|
@ -579,7 +522,6 @@ static struct platform_device *gta02_devices[] __initdata = {
|
||||||
/* These guys DO need to be children of PMU. */
|
/* These guys DO need to be children of PMU. */
|
||||||
|
|
||||||
static struct platform_device *gta02_devices_pmu_children[] = {
|
static struct platform_device *gta02_devices_pmu_children[] = {
|
||||||
>a02_bl_dev,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue