[oe-commits] org.oe.dev linux-2.6.23: improve LEDs support on mpc8313e-rdb

jeremy_laine commit openembedded-commits at lists.openembedded.org
Mon Dec 17 16:45:37 UTC 2007


linux-2.6.23: improve LEDs support on mpc8313e-rdb
* improve LEDs patch to support all LEDs on mpc8313e-rdb board
* build LEDs support into mpc8313e-rdb / mpc8323e-rdb kernels

Author: jeremy_laine at openembedded.org
Branch: org.openembedded.dev
Revision: 1d90679b945127361a4677733c372c992d2034f9
ViewMTN: http://monotone.openembedded.org/revision/info/1d90679b945127361a4677733c372c992d2034f9
Files:
1
packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch
packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig
packages/linux/linux_2.6.23.bb
Diffs:

#
# mt diff -r8d821e33f66e7cc2362c568bc38078500510e6a0 -r1d90679b945127361a4677733c372c992d2034f9
#
# 
# 
# patch "packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig"
#  from [cf4a868ba0d67c665cbdb50b00aad66a166e803a]
#    to [cf9f8cb9fd5be055814a58a31b7eafe2772a8658]
# 
# patch "packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch"
#  from [bc9b6320d36d6556339ca6526a84f192b7c3f86f]
#    to [f9f0f5550a035d11532343bcf6adeddd9141aacb]
# 
# patch "packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig"
#  from [27678d7ecddb52724e52d1e6d8bdc0be12b8b32a]
#    to [32e0eac7c402ef21b388fc096e69ea47f3ea5d3e]
# 
# patch "packages/linux/linux_2.6.23.bb"
#  from [46f4e7136cce3c8d26a3f7dbc5a80a07611c6e03]
#    to [2281487e8d175d81a3be60da3addf3d79106de70]
# 
============================================================
--- packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig	cf4a868ba0d67c665cbdb50b00aad66a166e803a
+++ packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig	cf9f8cb9fd5be055814a58a31b7eafe2772a8658
@@ -1454,12 +1454,12 @@ CONFIG_NEW_LEDS=y
 # CONFIG_MMC_WBSD is not set
 # CONFIG_MMC_TIFM_SD is not set
 CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
+CONFIG_LEDS_CLASS=y
 
 #
 # LED drivers
 #
-CONFIG_LEDS_MPC8313E_RDB=m
+CONFIG_LEDS_MPC8313E_RDB=y
 
 #
 # LED Triggers
============================================================
--- packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch	bc9b6320d36d6556339ca6526a84f192b7c3f86f
+++ packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch	f9f0f5550a035d11532343bcf6adeddd9141aacb
@@ -1,6 +1,6 @@ diff -urN linux-2.6.23.orig/drivers/leds
 diff -urN linux-2.6.23.orig/drivers/leds/Kconfig linux-2.6.23/drivers/leds/Kconfig
 --- linux-2.6.23.orig/drivers/leds/Kconfig	2007-10-09 22:31:38.000000000 +0200
-+++ linux-2.6.23/drivers/leds/Kconfig	2007-12-03 11:08:06.000000000 +0100
++++ linux-2.6.23/drivers/leds/Kconfig	2007-12-14 15:32:37.000000000 +0100
 @@ -101,6 +101,12 @@
  	  outputs. To be useful the particular board must have LEDs
  	  and they must be connected to the GPIO lines.
@@ -16,8 +16,8 @@ diff -urN linux-2.6.23.orig/drivers/leds
  config LEDS_TRIGGERS
 diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/drivers/leds/leds-mpc8313e-rdb.c
 --- linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.23/drivers/leds/leds-mpc8313e-rdb.c	2007-12-03 11:08:36.000000000 +0100
-@@ -0,0 +1,127 @@
++++ linux-2.6.23/drivers/leds/leds-mpc8313e-rdb.c	2007-12-14 15:32:55.000000000 +0100
+@@ -0,0 +1,171 @@
 +/*
 + * drivers/leds/leds-mpc8313e-rdb.c
 + * Copyright (C) 2007 Leon Woestenberg <leon at sidebranch.com>
@@ -41,73 +41,115 @@ diff -urN linux-2.6.23.orig/drivers/leds
 +#define LEDS_BASE 0xfa000000
 +#define LEDS_SIZE 0x2
 +
-+static struct platform_dev *leds_pdev = NULL;
++static struct platform_device *leds_pdev = NULL;
 +static struct resource *led_mem = NULL;
 +static void *led_io = NULL;
-+static u8 led_state = 0;
++static u8 led_state = 0xff;
 +
-+static void mpc8313leds_green_set(struct led_classdev *led_cdev, enum led_brightness value)
-+{
-+	led_state = value ? led_state&~32 : led_state|32;
-+	iowrite8(led_state, led_io);
-+}
-+
-+static struct led_classdev mpc8313_green_led = {
-+	.name                   = "mpc8313:green",
-+	.brightness_set         = mpc8313leds_green_set,
++struct mpc8313_led {
++	struct led_classdev cdev;
++	u8 bitmask;
 +};
 +
-+static void mpc8313leds_yellow_set(struct led_classdev *led_cdev, enum led_brightness value)
++static void mpc8313leds_set(struct led_classdev *led_cdev, enum led_brightness value)
 +{
-+	led_state = value ? led_state&~64 : led_state|64;
++	struct mpc8313_led *led_dev = container_of(led_cdev, struct mpc8313_led, cdev);
++	if (value)
++		led_state &= ~led_dev->bitmask;
++	else
++		led_state |= led_dev->bitmask;
 +	iowrite8(led_state, led_io);
 +}
 +
-+static struct led_classdev mpc8313_yellow_led = {
-+	.name                   = "mpc8313:yellow",
-+	.brightness_set         = mpc8313leds_yellow_set,
++static struct mpc8313_led mpc8313_leds[] = {
++	{
++		.cdev = {
++			.name		= "mpc8313:led0",
++			.brightness_set	= mpc8313leds_set,
++		},
++		.bitmask	= 1,
++	},
++	{
++		.cdev = {
++			.name		= "mpc8313:led1",
++			.brightness_set	= mpc8313leds_set,
++		},
++		.bitmask	= 2,
++	},
++	{
++		.cdev = {
++			.name		= "mpc8313:led2",
++			.brightness_set	= mpc8313leds_set,
++		},
++		.bitmask	= 4,
++	},
++	{
++		.cdev = {
++			.name		= "mpc8313:led3",
++			.brightness_set	= mpc8313leds_set,
++		},
++		.bitmask	= 8,
++	},
++	{
++		.cdev = {
++			.name		= "mpc8313:led4",
++			.brightness_set	= mpc8313leds_set,
++		},
++		.bitmask	= 16,
++	},
++	{
++		.cdev = {
++			.name		= "mpc8313:green",
++			.brightness_set	= mpc8313leds_set,
++		},
++		.bitmask	= 32,
++	},
++	{
++		.cdev = {
++			.name		= "mpc8313:yellow",
++			.brightness_set	= mpc8313leds_set,
++		},
++		.bitmask	= 64,
++	},
++	{
++		.cdev = {
++			.name		= "mpc8313:red",
++			.brightness_set	= mpc8313leds_set,
++		},
++		.bitmask	= 128,
++	},
 +};
 +
-+static void mpc8313leds_red_set(struct led_classdev *led_cdev, enum led_brightness value)
-+{
-+	led_state = value ? led_state&~128 : led_state|128;
-+	iowrite8(led_state, led_io);
-+}
-+
-+static struct led_classdev mpc8313_red_led = {
-+	.name                   = "mpc8313:red",
-+	.brightness_set         = mpc8313leds_red_set,
-+};
-+
 +static int mpc8313leds_probe(struct platform_device *pdev)
 +{
++	int i;
 +	int ret;
-+        
-+	ret = led_classdev_register(&pdev->dev, &mpc8313_green_led);
-+	if (ret < 0)
-+		return ret;
++       
++	for (i = ret = 0; ret >= 0 && i < ARRAY_SIZE(mpc8313_leds); i++) {
++		ret = led_classdev_register(&pdev->dev,
++			&mpc8313_leds[i].cdev);
++	}
 +
-+	ret = led_classdev_register(&pdev->dev, &mpc8313_yellow_led);
-+	if (ret < 0)
-+		return ret;
++	if (ret < 0 && i > 1) {
++		for (i = i - 2; i >= 0; i--)
++			led_classdev_unregister(&mpc8313_leds[i].cdev);
++	}
 +	
-+	ret = led_classdev_register(&pdev->dev, &mpc8313_red_led);
-+	if (ret < 0)
-+		return ret;
-+	
 +	return ret;
 +}
 +
 +static int mpc8313leds_remove(struct platform_device *pdev)
 +{
-+	led_classdev_unregister(&mpc8313_green_led);
-+	led_classdev_unregister(&mpc8313_yellow_led);
-+	led_classdev_unregister(&mpc8313_red_led);
++	int i;
++
++	for (i = ARRAY_SIZE(mpc8313_leds) - 1; i >= 0; i--)
++		led_classdev_unregister(&mpc8313_leds[i].cdev);
++	
 +	return 0;
 +}
 +
 +static struct platform_driver mpc8313leds_driver = {
-+      .driver         = {
++	.driver         = {
 +		.name   = "mpc8313-leds",
 +		.owner  = THIS_MODULE,
 +	},
@@ -125,6 +167,8 @@ diff -urN linux-2.6.23.orig/drivers/leds
 +		led_mem = NULL;
 +		return -ENOMEM;
 +	}
++	iowrite8(led_state, led_io);
++
 +	leds_pdev = platform_device_register_simple("mpc8313-leds", -1, NULL, 0);
 +
 +	return platform_driver_register(&mpc8313leds_driver);
@@ -147,7 +191,7 @@ diff -urN linux-2.6.23.orig/drivers/leds
 +MODULE_LICENSE("GPL");
 diff -urN linux-2.6.23.orig/drivers/leds/Makefile linux-2.6.23/drivers/leds/Makefile
 --- linux-2.6.23.orig/drivers/leds/Makefile	2007-10-09 22:31:38.000000000 +0200
-+++ linux-2.6.23/drivers/leds/Makefile	2007-12-03 11:08:06.000000000 +0100
++++ linux-2.6.23/drivers/leds/Makefile	2007-12-14 15:32:37.000000000 +0100
 @@ -17,6 +17,7 @@
  obj-$(CONFIG_LEDS_H1940)		+= leds-h1940.o
  obj-$(CONFIG_LEDS_COBALT)		+= leds-cobalt.o
============================================================
--- packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig	27678d7ecddb52724e52d1e6d8bdc0be12b8b32a
+++ packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig	32e0eac7c402ef21b388fc096e69ea47f3ea5d3e
@@ -1413,12 +1413,12 @@ CONFIG_NEW_LEDS=y
 # CONFIG_MMC_WBSD is not set
 # CONFIG_MMC_TIFM_SD is not set
 CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
+CONFIG_LEDS_CLASS=y
 
 #
 # LED drivers
 #
-CONFIG_LEDS_MPC832X=m
+CONFIG_LEDS_MPC832X=y
 
 #
 # LED Triggers
============================================================
--- packages/linux/linux_2.6.23.bb	46f4e7136cce3c8d26a3f7dbc5a80a07611c6e03
+++ packages/linux/linux_2.6.23.bb	2281487e8d175d81a3be60da3addf3d79106de70
@@ -9,7 +9,7 @@ DEPENDS_append_mpc8323e-rdb = " dtc-nati
 DEPENDS_append_mpc8313e-rdb = " dtc-native"
 DEPENDS_append_mpc8323e-rdb = " dtc-native"
 
-PR = "r7"
+PR = "r8"
 
 SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
 	   file://binutils-buildid-arm.patch;patch=1 \






More information about the Openembedded-commits mailing list