[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