Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3f8f650 authored by Richard Purdie's avatar Richard Purdie
Browse files

backlight: Convert corgi backlight driver into a more generic driver



Convert the corgi backlight driver to a more generic version
so it can be reused by other code rather than being Zaurus/PXA
specific.

Signed-off-by: default avatarRichard Purdie <rpurdie@rpsys.net>
parent 18f65c79
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <linux/interrupt.h>
#include <linux/mmc/host.h>
#include <linux/pm.h>
#include <linux/backlight.h>

#include <asm/setup.h>
#include <asm/memory.h>
@@ -142,15 +143,28 @@ struct corgissp_machinfo corgi_ssp_machinfo = {
/*
 * Corgi Backlight Device
 */
static struct corgibl_machinfo corgi_bl_machinfo = {
static void corgi_bl_kick_battery(void)
{
	void (*kick_batt)(void);

	kick_batt = symbol_get(sharpsl_battery_kick);
	if (kick_batt) {
		kick_batt();
		symbol_put(sharpsl_battery_kick);
	}
}

static struct generic_bl_info corgi_bl_machinfo = {
	.name = "corgi-bl",
	.max_intensity = 0x2f,
	.default_intensity = 0x1f,
	.limit_mask = 0x0b,
	.set_bl_intensity = corgi_bl_set_intensity,
	.kick_battery = corgi_bl_kick_battery,
};

static struct platform_device corgibl_device = {
	.name		= "corgi-bl",
	.name		= "generic-bl",
	.dev		= {
 		.parent = &corgifb_device.dev,
		.platform_data	= &corgi_bl_machinfo,
+16 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
#include <linux/interrupt.h>
#include <linux/mmc/host.h>
#include <linux/pm.h>
#include <linux/backlight.h>

#include <asm/setup.h>
#include <asm/memory.h>
@@ -222,14 +223,27 @@ struct corgissp_machinfo spitz_ssp_machinfo = {
/*
 * Spitz Backlight Device
 */
static struct corgibl_machinfo spitz_bl_machinfo = {
static void spitz_bl_kick_battery(void)
{
	void (*kick_batt)(void);

	kick_batt = symbol_get(sharpsl_battery_kick);
	if (kick_batt) {
		kick_batt();
		symbol_put(sharpsl_battery_kick);
	}
}

static struct generic_bl_info spitz_bl_machinfo = {
	.name = "corgi-bl",
	.default_intensity = 0x1f,
	.limit_mask = 0x0b,
	.max_intensity = 0x2f,
	.kick_battery = spitz_bl_kick_battery,
};

static struct platform_device spitzbl_device = {
	.name		= "corgi-bl",
	.name		= "generic-bl",
	.dev		= {
 		.platform_data	= &spitz_bl_machinfo,
	},
+6 −5
Original line number Diff line number Diff line
@@ -51,12 +51,13 @@ config BACKLIGHT_CLASS_DEVICE
	  select the proper drivers which depend on this option.

config BACKLIGHT_CORGI
	tristate "Sharp Corgi Backlight Driver (SL Series)"
	depends on BACKLIGHT_CLASS_DEVICE && PXA_SHARPSL
	default y
	tristate "Generic (aka Sharp Corgi) Backlight Driver"
	depends on BACKLIGHT_CLASS_DEVICE
	default n
	help
	  If you have a Sharp Zaurus SL-C7xx, SL-Cxx00 or SL-6000x say y to enable the
	  backlight driver.
	  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. Most users can say n.

config BACKLIGHT_LOCOMO
	tristate "Sharp LOCOMO LCD/Backlight Driver"
+10 −12
Original line number Diff line number Diff line
@@ -18,13 +18,11 @@
#include <linux/mutex.h>
#include <linux/fb.h>
#include <linux/backlight.h>
#include <asm/arch/sharpsl.h>
#include <asm/hardware/sharpsl_pm.h>

static int corgibl_intensity;
static struct backlight_properties corgibl_data;
static struct backlight_device *corgi_backlight_device;
static struct corgibl_machinfo *bl_machinfo;
static struct generic_bl_info *bl_machinfo;

static unsigned long corgibl_flags;
#define CORGIBL_SUSPENDED     0x01
@@ -32,7 +30,6 @@ static unsigned long corgibl_flags;

static int corgibl_send_intensity(struct backlight_device *bd)
{
	void (*corgi_kick_batt)(void);
	int intensity = bd->props.brightness;

	if (bd->props.power != FB_BLANK_UNBLANK)
@@ -48,11 +45,8 @@ static int corgibl_send_intensity(struct backlight_device *bd)

	corgibl_intensity = intensity;

 	corgi_kick_batt = symbol_get(sharpsl_battery_kick);
 	if (corgi_kick_batt) {
 		corgi_kick_batt();
 		symbol_put(sharpsl_battery_kick);
 	}
	if (bl_machinfo->kick_battery)
		bl_machinfo->kick_battery();

	return 0;
}
@@ -107,13 +101,17 @@ static struct backlight_ops corgibl_ops = {

static int corgibl_probe(struct platform_device *pdev)
{
	struct corgibl_machinfo *machinfo = pdev->dev.platform_data;
	struct generic_bl_info *machinfo = pdev->dev.platform_data;
	const char *name = "generic-bl";

	bl_machinfo = machinfo;
	if (!machinfo->limit_mask)
		machinfo->limit_mask = -1;

	corgi_backlight_device = backlight_device_register ("corgi-bl",
	if (machinfo->name)
		name = machinfo->name;

	corgi_backlight_device = backlight_device_register (name,
		&pdev->dev, NULL, &corgibl_ops);
	if (IS_ERR (corgi_backlight_device))
		return PTR_ERR (corgi_backlight_device);
@@ -149,7 +147,7 @@ static struct platform_driver corgibl_driver = {
	.suspend	= corgibl_suspend,
	.resume		= corgibl_resume,
	.driver		= {
		.name	= "corgi-bl",
		.name	= "generic-bl",
	},
};

+0 −6
Original line number Diff line number Diff line
@@ -25,12 +25,6 @@ struct corgits_machinfo {
/*
 * SharpSL Backlight
 */
struct corgibl_machinfo {
	int max_intensity;
	int default_intensity;
	int limit_mask;
	void (*set_bl_intensity)(int intensity);
};
extern void corgibl_limit_intensity(int limit);


Loading