linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] Add pcf50633 backlight driver
@ 2010-05-12  0:44 Lars-Peter Clausen
  2010-05-12  0:44 ` [PATCH 1/3] backlight: " Lars-Peter Clausen
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Lars-Peter Clausen @ 2010-05-12  0:44 UTC (permalink / raw)
  To: rpurdie; +Cc: sameo, linux-kernel, Lars-Peter Clausen

Hi

This patch series adds a backlight driver for the pcf50633.
The first patch adds the backlight driver, the second patch registers the
backlight driver in the pcf50633 core driver and the third patch replaces the
platform backlight driver in mach-gta02 with the pcf50633 backlight driver.

- Lars

Lars-Peter Clausen (3):
  backlight/mfd: Add pcf50633 backlight driver
  pcf50633: Register a pcf50633-backlight device in pcf50633 core
    driver.
  gta02: Use pcf50633 backlight driver instead of platform backlight
    driver.

 arch/arm/mach-s3c2440/mach-gta02.c           |   76 ++---------
 drivers/mfd/pcf50633-core.c                  |    3 +
 drivers/video/backlight/Kconfig              |    7 +
 drivers/video/backlight/Makefile             |    1 +
 drivers/video/backlight/pcf50633-backlight.c |  190 ++++++++++++++++++++++++++
 include/linux/mfd/pcf50633/backlight.h       |   51 +++++++
 include/linux/mfd/pcf50633/core.h            |    4 +
 7 files changed, 265 insertions(+), 67 deletions(-)
 create mode 100644 drivers/video/backlight/pcf50633-backlight.c
 create mode 100644 include/linux/mfd/pcf50633/backlight.h


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/3] backlight: Add pcf50633 backlight driver
  2010-05-12  0:44 [PATCH 0/3] Add pcf50633 backlight driver Lars-Peter Clausen
@ 2010-05-12  0:44 ` Lars-Peter Clausen
  2010-05-12  0:44 ` [PATCH 2/3] MFD: pcf50633: Register a pcf50633-backlight device in pcf50633 core driver Lars-Peter Clausen
  2010-05-12  0:44 ` [PATCH 3/3] gta02: Use pcf50633 backlight driver instead of platform backlight driver Lars-Peter Clausen
  2 siblings, 0 replies; 8+ messages in thread
From: Lars-Peter Clausen @ 2010-05-12  0:44 UTC (permalink / raw)
  To: rpurdie; +Cc: sameo, linux-kernel, Lars-Peter Clausen

This patch adds a backlight driver for controlling the pcf50633 LED module.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 drivers/video/backlight/Kconfig              |    7 +
 drivers/video/backlight/Makefile             |    1 +
 drivers/video/backlight/pcf50633-backlight.c |  190 ++++++++++++++++++++++++++
 include/linux/mfd/pcf50633/backlight.h       |   51 +++++++
 4 files changed, 249 insertions(+), 0 deletions(-)
 create mode 100644 drivers/video/backlight/pcf50633-backlight.c
 create mode 100644 include/linux/mfd/pcf50633/backlight.h

diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
index 4dfb5f4..3e8e7f7 100644
--- a/drivers/video/backlight/Kconfig
+++ b/drivers/video/backlight/Kconfig
@@ -270,6 +270,13 @@ config BACKLIGHT_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.
+
 endif # BACKLIGHT_CLASS_DEVICE
 
 endif # BACKLIGHT_LCD_SUPPORT
diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
index 09d1f14..8b714c1 100644
--- a/drivers/video/backlight/Makefile
+++ b/drivers/video/backlight/Makefile
@@ -31,4 +31,5 @@ obj-$(CONFIG_BACKLIGHT_WM831X)	+= wm831x_bl.o
 obj-$(CONFIG_BACKLIGHT_ADX)    += adx_bl.o
 obj-$(CONFIG_BACKLIGHT_ADP5520)	+= adp5520_bl.o
 obj-$(CONFIG_BACKLIGHT_88PM860X) += 88pm860x_bl.o
+obj-$(CONFIG_BACKLIGHT_PCF50633)	+= pcf50633-backlight.o
 
diff --git a/drivers/video/backlight/pcf50633-backlight.c b/drivers/video/backlight/pcf50633-backlight.c
new file mode 100644
index 0000000..3c424f7
--- /dev/null
+++ b/drivers/video/backlight/pcf50633-backlight.c
@@ -0,0 +1,190 @@
+/*
+ *  Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
+ *      PCF50633 backlight device driver
+ *
+ *  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.
+ *
+ *  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.,
+ *  675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+#include <linux/platform_device.h>
+
+#include <linux/backlight.h>
+#include <linux/fb.h>
+
+#include <linux/mfd/pcf50633/core.h>
+#include <linux/mfd/pcf50633/backlight.h>
+
+struct pcf50633_bl {
+	struct pcf50633 *pcf;
+	struct backlight_device *bl;
+
+	unsigned int brightness;
+	unsigned int brightness_limit;
+};
+
+/*
+ * pcf50633_bl_set_brightness_limit
+ *
+ * Update the brightness limit for the pc50633 backlight. The actual brightness
+ * will not go above the limit. This is useful to limit power drain for example
+ * on low battery.
+ *
+ * @dev: Pointer to a pcf50633 device
+ * @limit: The brightness limit. Valid values are 0-63
+ */
+int pcf50633_bl_set_brightness_limit(struct pcf50633 *pcf, unsigned int limit)
+{
+	struct pcf50633_bl *pcf_bl = platform_get_drvdata(pcf->bl_pdev);
+
+	if (!pcf_bl)
+		return -ENODEV;
+
+	pcf_bl->brightness_limit = limit & 0x3f;
+	backlight_update_status(pcf_bl->bl);
+
+    return 0;
+}
+
+static int pcf50633_bl_update_status(struct backlight_device *bl)
+{
+	struct pcf50633_bl *pcf_bl = bl_get_data(bl);
+	unsigned int new_brightness;
+
+
+	if (bl->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK) ||
+		bl->props.power != FB_BLANK_UNBLANK)
+		new_brightness = 0;
+	else if (bl->props.brightness < pcf_bl->brightness_limit)
+		new_brightness = bl->props.brightness;
+	else
+		new_brightness = pcf_bl->brightness_limit;
+
+
+	if (pcf_bl->brightness == new_brightness)
+		return 0;
+
+	if (new_brightness) {
+		pcf50633_reg_write(pcf_bl->pcf, PCF50633_REG_LEDOUT,
+					new_brightness);
+		if (!pcf_bl->brightness)
+			pcf50633_reg_write(pcf_bl->pcf, PCF50633_REG_LEDENA, 1);
+	} else {
+		pcf50633_reg_write(pcf_bl->pcf, PCF50633_REG_LEDENA, 0);
+	}
+
+	pcf_bl->brightness = new_brightness;
+
+	return 0;
+}
+
+static int pcf50633_bl_get_brightness(struct backlight_device *bl)
+{
+	struct pcf50633_bl *pcf_bl = bl_get_data(bl);
+	return pcf_bl->brightness;
+}
+
+static const struct backlight_ops pcf50633_bl_ops = {
+	.get_brightness = pcf50633_bl_get_brightness,
+	.update_status	= pcf50633_bl_update_status,
+	.options	= BL_CORE_SUSPENDRESUME,
+};
+
+static int __devinit pcf50633_bl_probe(struct platform_device *pdev)
+{
+	int ret;
+	struct pcf50633_bl *pcf_bl;
+	struct device *parent = pdev->dev.parent;
+	struct pcf50633_platform_data *pcf50633_data = parent->platform_data;
+	struct pcf50633_bl_platform_data *pdata = pcf50633_data->backlight_data;
+	struct backlight_properties bl_props;
+
+	pcf_bl = kzalloc(sizeof(*pcf_bl), GFP_KERNEL);
+	if (!pcf_bl)
+		return -ENOMEM;
+
+	bl_props.max_brightness = 0x3f;
+	bl_props.power = FB_BLANK_UNBLANK;
+
+	if (pdata) {
+		bl_props.brightness = pdata->default_brightness;
+		pcf_bl->brightness_limit = pdata->default_brightness_limit;
+	} else {
+		bl_props.brightness = 0x3f;
+		pcf_bl->brightness_limit = 0x3f;
+	}
+
+	pcf_bl->pcf = dev_to_pcf50633(pdev->dev.parent);
+
+	pcf_bl->bl = backlight_device_register(pdev->name, &pdev->dev, pcf_bl,
+						&pcf50633_bl_ops, &bl_props);
+
+	if (IS_ERR(pcf_bl->bl)) {
+		ret = PTR_ERR(pcf_bl->bl);
+		goto err_free;
+	}
+
+	platform_set_drvdata(pdev, pcf_bl);
+
+	pcf50633_reg_write(pcf_bl->pcf, PCF50633_REG_LEDDIM, pdata->ramp_time);
+
+	/* Should be different from bl_props.brightness, so we do not exit
+	 * update_status early the first time it's called */
+	pcf_bl->brightness = pcf_bl->bl->props.brightness + 1;
+
+	backlight_update_status(pcf_bl->bl);
+
+	return 0;
+
+err_free:
+	kfree(pcf_bl);
+
+	return ret;
+}
+
+static int __devexit pcf50633_bl_remove(struct platform_device *pdev)
+{
+	struct pcf50633_bl *pcf_bl = platform_get_drvdata(pdev);
+
+	backlight_device_unregister(pcf_bl->bl);
+
+	platform_set_drvdata(pdev, NULL);
+
+	kfree(pcf_bl);
+
+	return 0;
+}
+
+static struct platform_driver pcf50633_bl_driver = {
+	.probe =	pcf50633_bl_probe,
+	.remove =	__devexit_p(pcf50633_bl_remove),
+	.driver = {
+		.name = "pcf50633-backlight",
+	},
+};
+
+static int __init pcf50633_bl_init(void)
+{
+	return platform_driver_register(&pcf50633_bl_driver);
+}
+module_init(pcf50633_bl_init);
+
+static void __exit pcf50633_bl_exit(void)
+{
+	platform_driver_unregister(&pcf50633_bl_driver);
+}
+module_exit(pcf50633_bl_exit);
+
+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
+MODULE_DESCRIPTION("PCF50633 backlight driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:pcf50633-backlight");
diff --git a/include/linux/mfd/pcf50633/backlight.h b/include/linux/mfd/pcf50633/backlight.h
new file mode 100644
index 0000000..83747e2
--- /dev/null
+++ b/include/linux/mfd/pcf50633/backlight.h
@@ -0,0 +1,51 @@
+/*
+ *  Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
+ *      PCF50633 backlight device driver
+ *
+ *  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.
+ *
+ *  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.,
+ *  675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#ifndef __LINUX_MFD_PCF50633_BACKLIGHT
+#define __LINUX_MFD_PCF50633_BACKLIGHT
+
+/*
+* @default_brightness: Backlight brightness is initialized to this value
+*
+* Brightness to be used after the driver has been probed.
+* Valid range 0-63.
+*
+* @default_brightness_limit: The actual brightness is limited by this value
+*
+* Brightness limit to be used after the driver has been probed. This is useful
+* when it is not known how much power is available for the backlight during
+* probe.
+* Valid range 0-63. Can be changed later with pcf50633_bl_set_brightness_limit.
+*
+* @ramp_time: Display ramp time when changing brightness
+*
+* When changing the backlights brightness the change is not instant, instead
+* it fades smooth from one state to another. This value specifies how long
+* the fade should take. The lower the value the higher the fade time.
+* Valid range 0-255
+*/
+struct pcf50633_bl_platform_data {
+	unsigned int	default_brightness;
+	unsigned int	default_brightness_limit;
+	uint8_t		ramp_time;
+};
+
+
+struct pcf50633;
+
+int pcf50633_bl_set_brightness_limit(struct pcf50633 *pcf, unsigned int limit);
+
+#endif
+
-- 
1.5.6.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] MFD: pcf50633: Register a pcf50633-backlight device in pcf50633 core driver.
  2010-05-12  0:44 [PATCH 0/3] Add pcf50633 backlight driver Lars-Peter Clausen
  2010-05-12  0:44 ` [PATCH 1/3] backlight: " Lars-Peter Clausen
@ 2010-05-12  0:44 ` Lars-Peter Clausen
  2010-05-12  0:44 ` [PATCH 3/3] gta02: Use pcf50633 backlight driver instead of platform backlight driver Lars-Peter Clausen
  2 siblings, 0 replies; 8+ messages in thread
From: Lars-Peter Clausen @ 2010-05-12  0:44 UTC (permalink / raw)
  To: rpurdie; +Cc: sameo, linux-kernel, Lars-Peter Clausen

Register a device newly added pcf50633-backlight driver as a child device in
the pcf50633 core driver.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Cc: Samuel Ortiz <sameo@linux.intel.com>
---
 drivers/mfd/pcf50633-core.c       |    3 +++
 include/linux/mfd/pcf50633/core.h |    4 ++++
 2 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633-core.c
index e1ee046..704736e 100644
--- a/drivers/mfd/pcf50633-core.c
+++ b/drivers/mfd/pcf50633-core.c
@@ -305,6 +305,9 @@ static int __devinit pcf50633_probe(struct i2c_client *client,
 						&pcf->mbc_pdev);
 	pcf50633_client_dev_register(pcf, "pcf50633-adc",
 						&pcf->adc_pdev);
+	pcf50633_client_dev_register(pcf, "pcf50633-backlight",
+						&pcf->bl_pdev);
+
 
 	for (i = 0; i < PCF50633_NUM_REGULATORS; i++) {
 		struct platform_device *pdev;
diff --git a/include/linux/mfd/pcf50633/core.h b/include/linux/mfd/pcf50633/core.h
index 3398bd9..ad411a7 100644
--- a/include/linux/mfd/pcf50633/core.h
+++ b/include/linux/mfd/pcf50633/core.h
@@ -18,6 +18,7 @@
 #include <linux/regulator/driver.h>
 #include <linux/regulator/machine.h>
 #include <linux/power_supply.h>
+#include <linux/mfd/pcf50633/backlight.h>
 
 struct pcf50633;
 
@@ -43,6 +44,8 @@ struct pcf50633_platform_data {
 	void (*force_shutdown)(struct pcf50633 *);
 
 	u8 resumers[5];
+
+	struct pcf50633_bl_platform_data *backlight_data;
 };
 
 struct pcf50633_irq {
@@ -152,6 +155,7 @@ struct pcf50633 {
 	struct platform_device *mbc_pdev;
 	struct platform_device *adc_pdev;
 	struct platform_device *input_pdev;
+	struct platform_device *bl_pdev;
 	struct platform_device *regulator_pdev[PCF50633_NUM_REGULATORS];
 };
 
-- 
1.5.6.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] gta02: Use pcf50633 backlight driver instead of platform backlight driver.
  2010-05-12  0:44 [PATCH 0/3] Add pcf50633 backlight driver Lars-Peter Clausen
  2010-05-12  0:44 ` [PATCH 1/3] backlight: " Lars-Peter Clausen
  2010-05-12  0:44 ` [PATCH 2/3] MFD: pcf50633: Register a pcf50633-backlight device in pcf50633 core driver Lars-Peter Clausen
@ 2010-05-12  0:44 ` Lars-Peter Clausen
  2010-05-12  1:02   ` Ben Dooks
  2 siblings, 1 reply; 8+ messages in thread
From: Lars-Peter Clausen @ 2010-05-12  0:44 UTC (permalink / raw)
  To: rpurdie; +Cc: sameo, linux-kernel, Lars-Peter Clausen, Ben Dooks

Use the pcf50633 backlight driver instead of the platform backlight driver.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Cc: Ben Dooks <ben-linux@fluff.org>
---
 arch/arm/mach-s3c2440/mach-gta02.c |   76 ++++-------------------------------
 1 files changed, 9 insertions(+), 67 deletions(-)

diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
index 45799c6..120a26f 100644
--- a/arch/arm/mach-s3c2440/mach-gta02.c
+++ b/arch/arm/mach-s3c2440/mach-gta02.c
@@ -49,7 +49,6 @@
 #include <linux/io.h>
 
 #include <linux/i2c.h>
-#include <linux/backlight.h>
 #include <linux/regulator/machine.h>
 
 #include <linux/mfd/pcf50633/core.h>
@@ -57,6 +56,7 @@
 #include <linux/mfd/pcf50633/adc.h>
 #include <linux/mfd/pcf50633/gpio.h>
 #include <linux/mfd/pcf50633/pmic.h>
+#include <linux/mfd/pcf50633/backlight.h>
 
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
@@ -254,6 +254,12 @@ static char *gta02_batteries[] = {
 	"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 = {
 	.resumers = {
 		[0] =	PCF50633_INT1_USBINS |
@@ -271,6 +277,8 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
 
 	.charger_reference_current_ma = 1000,
 
+	.backlight_data = &gta02_backlight_data,
+
 	.reg_init_data = {
 		[PCF50633_REGULATOR_AUTO] = {
 			.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 = &gta02_bl_info,
-	},
-};
-
-
-
 /* USB */
 static struct s3c2410_hcd_info gta02_usb_info __initdata = {
 	.port[0]	= {
@@ -579,7 +522,6 @@ static struct platform_device *gta02_devices[] __initdata = {
 /* These guys DO need to be children of PMU. */
 
 static struct platform_device *gta02_devices_pmu_children[] = {
-	&gta02_bl_dev,
 };
 
 
-- 
1.5.6.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] gta02: Use pcf50633 backlight driver instead of platform backlight driver.
  2010-05-12  0:44 ` [PATCH 3/3] gta02: Use pcf50633 backlight driver instead of platform backlight driver Lars-Peter Clausen
@ 2010-05-12  1:02   ` Ben Dooks
  2010-05-13 14:25     ` Richard Purdie
  0 siblings, 1 reply; 8+ messages in thread
From: Ben Dooks @ 2010-05-12  1:02 UTC (permalink / raw)
  To: Lars-Peter Clausen; +Cc: rpurdie, sameo, linux-kernel, Ben Dooks

On Wed, May 12, 2010 at 02:44:34AM +0200, Lars-Peter Clausen wrote:
> Use the pcf50633 backlight driver instead of the platform backlight driver.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> Cc: Ben Dooks <ben-linux@fluff.org>

ok, does anyone else have a comment on this?

 ---
>  arch/arm/mach-s3c2440/mach-gta02.c |   76 ++++-------------------------------
>  1 files changed, 9 insertions(+), 67 deletions(-)
> 
> diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
> index 45799c6..120a26f 100644
> --- a/arch/arm/mach-s3c2440/mach-gta02.c
> +++ b/arch/arm/mach-s3c2440/mach-gta02.c
> @@ -49,7 +49,6 @@
>  #include <linux/io.h>
>  
>  #include <linux/i2c.h>
> -#include <linux/backlight.h>
>  #include <linux/regulator/machine.h>
>  
>  #include <linux/mfd/pcf50633/core.h>
> @@ -57,6 +56,7 @@
>  #include <linux/mfd/pcf50633/adc.h>
>  #include <linux/mfd/pcf50633/gpio.h>
>  #include <linux/mfd/pcf50633/pmic.h>
> +#include <linux/mfd/pcf50633/backlight.h>
>  
>  #include <asm/mach/arch.h>
>  #include <asm/mach/map.h>
> @@ -254,6 +254,12 @@ static char *gta02_batteries[] = {
>  	"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 = {
>  	.resumers = {
>  		[0] =	PCF50633_INT1_USBINS |
> @@ -271,6 +277,8 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
>  
>  	.charger_reference_current_ma = 1000,
>  
> +	.backlight_data = &gta02_backlight_data,
> +
>  	.reg_init_data = {
>  		[PCF50633_REGULATOR_AUTO] = {
>  			.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 = &gta02_bl_info,
> -	},
> -};
> -
> -
> -
>  /* USB */
>  static struct s3c2410_hcd_info gta02_usb_info __initdata = {
>  	.port[0]	= {
> @@ -579,7 +522,6 @@ static struct platform_device *gta02_devices[] __initdata = {
>  /* These guys DO need to be children of PMU. */
>  
>  static struct platform_device *gta02_devices_pmu_children[] = {
> -	&gta02_bl_dev,
>  };
>  
>  
> -- 
> 1.5.6.5
> 

-- 
-- 
Ben

Q:      What's a light-year?
A:      One-third less calories than a regular year.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] gta02: Use pcf50633 backlight driver instead of platform backlight driver.
  2010-05-12  1:02   ` Ben Dooks
@ 2010-05-13 14:25     ` Richard Purdie
  2010-05-16 22:00       ` Samuel Ortiz
  0 siblings, 1 reply; 8+ messages in thread
From: Richard Purdie @ 2010-05-13 14:25 UTC (permalink / raw)
  To: Ben Dooks; +Cc: Lars-Peter Clausen, sameo, linux-kernel

On Wed, 2010-05-12 at 02:02 +0100, Ben Dooks wrote:
> On Wed, May 12, 2010 at 02:44:34AM +0200, Lars-Peter Clausen wrote:
> > Use the pcf50633 backlight driver instead of the platform backlight driver.
> > 
> > Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> > Cc: Ben Dooks <ben-linux@fluff.org>
> 
> ok, does anyone else have a comment on this?

Looks like a sensible idea to me but I'm travelling and don't have time
to properly review the patches right now.

The main question is who takes which patches. I can take the main new
backlight one, the other two I need opinions from the mfd (Samuel) and
gta02 (?) maintainers...

Cheers,

Richard




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] gta02: Use pcf50633 backlight driver instead of platform backlight driver.
  2010-05-13 14:25     ` Richard Purdie
@ 2010-05-16 22:00       ` Samuel Ortiz
  2010-05-26 11:57         ` Richard Purdie
  0 siblings, 1 reply; 8+ messages in thread
From: Samuel Ortiz @ 2010-05-16 22:00 UTC (permalink / raw)
  To: Richard Purdie; +Cc: Ben Dooks, Lars-Peter Clausen, linux-kernel

Hi Richard,

On Thu, May 13, 2010 at 10:25:05PM +0800, Richard Purdie wrote:
> On Wed, 2010-05-12 at 02:02 +0100, Ben Dooks wrote:
> > On Wed, May 12, 2010 at 02:44:34AM +0200, Lars-Peter Clausen wrote:
> > > Use the pcf50633 backlight driver instead of the platform backlight driver.
> > > 
> > > Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> > > Cc: Ben Dooks <ben-linux@fluff.org>
> > 
> > ok, does anyone else have a comment on this?
> 
> Looks like a sensible idea to me but I'm travelling and don't have time
> to properly review the patches right now.
> 
> The main question is who takes which patches. I can take the main new
> backlight one, the other two I need opinions from the mfd (Samuel) and
> gta02 (?) maintainers...
The MFD patch looks good to me, you can add my:
Acked-by: Samuel Ortiz <sameo@linux.intel.com>

Cheers,
Samuel.


> Cheers,
> 
> Richard
> 
> 
> 

-- 
Intel Open Source Technology Centre
http://oss.intel.com/

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] gta02: Use pcf50633 backlight driver instead of platform backlight driver.
  2010-05-16 22:00       ` Samuel Ortiz
@ 2010-05-26 11:57         ` Richard Purdie
  0 siblings, 0 replies; 8+ messages in thread
From: Richard Purdie @ 2010-05-26 11:57 UTC (permalink / raw)
  To: Samuel Ortiz; +Cc: Ben Dooks, Lars-Peter Clausen, linux-kernel

On Mon, 2010-05-17 at 00:00 +0200, Samuel Ortiz wrote:
> On Thu, May 13, 2010 at 10:25:05PM +0800, Richard Purdie wrote:
> > On Wed, 2010-05-12 at 02:02 +0100, Ben Dooks wrote:
> > > On Wed, May 12, 2010 at 02:44:34AM +0200, Lars-Peter Clausen wrote:
> > > > Use the pcf50633 backlight driver instead of the platform backlight driver.
> > > > 
> > > > Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> > > > Cc: Ben Dooks <ben-linux@fluff.org>
> > > 
> > > ok, does anyone else have a comment on this?
> > 
> > Looks like a sensible idea to me but I'm travelling and don't have time
> > to properly review the patches right now.
> > 
> > The main question is who takes which patches. I can take the main new
> > backlight one, the other two I need opinions from the mfd (Samuel) and
> > gta02 (?) maintainers...
> The MFD patch looks good to me, you can add my:
> Acked-by: Samuel Ortiz <sameo@linux.intel.com>

Thanks, I've queued these in the backlight tree.

Cheers,

Richard


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-05-26 11:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-12  0:44 [PATCH 0/3] Add pcf50633 backlight driver Lars-Peter Clausen
2010-05-12  0:44 ` [PATCH 1/3] backlight: " Lars-Peter Clausen
2010-05-12  0:44 ` [PATCH 2/3] MFD: pcf50633: Register a pcf50633-backlight device in pcf50633 core driver Lars-Peter Clausen
2010-05-12  0:44 ` [PATCH 3/3] gta02: Use pcf50633 backlight driver instead of platform backlight driver Lars-Peter Clausen
2010-05-12  1:02   ` Ben Dooks
2010-05-13 14:25     ` Richard Purdie
2010-05-16 22:00       ` Samuel Ortiz
2010-05-26 11:57         ` Richard Purdie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).