[oe-commits] org.oe.dev linux-2.6.23: add LEDs driver for MPC8323E-RDB boards

jeremy_laine commit openembedded-commits at lists.openembedded.org
Sat Nov 17 13:51:44 UTC 2007


linux-2.6.23: add LEDs driver for MPC8323E-RDB boards

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

#
# mt diff -r7b1dd96801f47207bea137bdc1cda343863a75ce -ra1d56e481ec69ff77b7fdd13cc367cb58d64396e
#
# 
# 
# add_file "packages/linux/linux-2.6.23/mpc8323e-rdb/mpc832x-leds.patch"
#  content [25f5f43e76ffd4542e4a8f2e9ac797d44344f834]
# 
# patch "packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig"
#  from [1ab95eabf6a3c2f25c8a38107cfdefdba748aa0a]
#    to [27678d7ecddb52724e52d1e6d8bdc0be12b8b32a]
# 
# patch "packages/linux/linux_2.6.23.bb"
#  from [3a43d1090a78823d2ddda0478a27d8a7712f0106]
#    to [00a00d10df9de70b87c4f01ef218370ab40cc076]
# 
============================================================
--- packages/linux/linux-2.6.23/mpc8323e-rdb/mpc832x-leds.patch	25f5f43e76ffd4542e4a8f2e9ac797d44344f834
+++ packages/linux/linux-2.6.23/mpc8323e-rdb/mpc832x-leds.patch	25f5f43e76ffd4542e4a8f2e9ac797d44344f834
@@ -0,0 +1,150 @@
+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-11-09 18:15:03.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.
+ 
++config LEDS_MPC832X
++	tristate "LED Support for MPC832x LEDs"
++	depends on LEDS_CLASS && PPC_83xx
++	help
++	  This option enables support for the LEDs on MPC832x boards.
++
+ comment "LED Triggers"
+ 
+ config LEDS_TRIGGERS
+diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc832x.c linux-2.6.23/drivers/leds/leds-mpc832x.c
+--- linux-2.6.23.orig/drivers/leds/leds-mpc832x.c	1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.23/drivers/leds/leds-mpc832x.c	2007-11-09 18:15:19.000000000 +0100
+@@ -0,0 +1,119 @@
++/*
++ * drivers/leds/leds-mpc832x.c
++ * Copyright (c) Jeremy Laine <jeremy.laine at bolloretelecom.eu>
++ *
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License.  See the file COPYING in the main directory of this archive for
++ * more details.
++ *
++ * MPC832x leds driver
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <linux/err.h>
++#include <asm/io.h>
++#include <asm/qe.h>
++
++int par_io_config_pin(u8 port, u8 pin, int dir, int open_drain,
++                      int assignment, int has_irq);
++int par_io_data_set(u8 port, u8 pin, u8 val);
++
++static struct platform_dev *leds_pdev = NULL;
++
++#define LED_PORT    3
++#define GREEN_PIN   18
++#define YELLOW_PIN  17
++#define RED_PIN     16
++
++static void mpc832xleds_green_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++	par_io_data_set(LED_PORT, GREEN_PIN, !value);
++}
++
++static struct led_classdev mpc832x_green_led = {
++	.name                   = "mpc832x:green",
++	.brightness_set         = mpc832xleds_green_set,
++};
++
++static void mpc832xleds_yellow_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++	par_io_data_set(LED_PORT, YELLOW_PIN, !value);
++}
++
++static struct led_classdev mpc832x_yellow_led = {
++	.name                   = "mpc832x:yellow",
++	.brightness_set         = mpc832xleds_yellow_set,
++};
++
++static void mpc832xleds_red_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++	par_io_data_set(LED_PORT, RED_PIN, !value);
++}
++
++static struct led_classdev mpc832x_red_led = {
++	.name                   = "mpc832x:red",
++	.brightness_set         = mpc832xleds_red_set,
++};
++
++static int mpc832xleds_probe(struct platform_device *pdev)
++{
++	int ret;
++        
++	ret = led_classdev_register(&pdev->dev, &mpc832x_green_led);
++	if (ret < 0)
++		return ret;
++	par_io_config_pin(LED_PORT, GREEN_PIN, 1, 0, 0, 0);
++
++	ret = led_classdev_register(&pdev->dev, &mpc832x_yellow_led);
++	if (ret < 0)
++		return ret;
++	par_io_config_pin(LED_PORT, YELLOW_PIN, 1, 0, 0, 0);
++	
++	ret = led_classdev_register(&pdev->dev, &mpc832x_red_led);
++	if (ret < 0)
++		return ret;
++	par_io_config_pin(LED_PORT, RED_PIN, 1, 0, 0, 0);
++	
++	return ret;
++}
++
++static int mpc832xleds_remove(struct platform_device *pdev)
++{
++	led_classdev_unregister(&mpc832x_green_led);
++	led_classdev_unregister(&mpc832x_yellow_led);
++	led_classdev_unregister(&mpc832x_red_led);
++	return 0;
++}
++
++static struct platform_driver mpc832xleds_driver = {
++      .driver         = {
++		.name   = "mpc832x-leds",
++		.owner  = THIS_MODULE,
++	},
++	.probe          = mpc832xleds_probe,
++	.remove         = mpc832xleds_remove,
++};
++
++static int __init mpc832xleds_init(void)
++{
++	leds_pdev = platform_device_register_simple("mpc832x-leds", -1, NULL, 0);
++
++	return platform_driver_register(&mpc832xleds_driver);
++}
++
++static void __exit mpc832xleds_exit(void)
++{
++	platform_driver_unregister(&mpc832xleds_driver);
++
++	platform_device_unregister(leds_pdev);
++}
++
++module_init(mpc832xleds_init);
++module_exit(mpc832xleds_exit);
++
++MODULE_AUTHOR("Jeremy Laine <jeremy.laine at bolloretelecom.eu>");
++MODULE_DESCRIPTION("MPC832X GPIO LED driver");
++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-11-09 18:15:03.000000000 +0100
+@@ -17,6 +17,7 @@
+ obj-$(CONFIG_LEDS_H1940)		+= leds-h1940.o
+ obj-$(CONFIG_LEDS_COBALT)		+= leds-cobalt.o
+ obj-$(CONFIG_LEDS_GPIO)			+= leds-gpio.o
++obj-$(CONFIG_LEDS_MPC832X)		+= leds-mpc832x.o
+ 
+ # LED Triggers
+ obj-$(CONFIG_LEDS_TRIGGER_TIMER)	+= ledtrig-timer.o
============================================================
--- packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig	1ab95eabf6a3c2f25c8a38107cfdefdba748aa0a
+++ packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig	27678d7ecddb52724e52d1e6d8bdc0be12b8b32a
@@ -545,6 +545,7 @@ CONFIG_MAC80211=m
 CONFIG_CFG80211=y
 CONFIG_WIRELESS_EXT=y
 CONFIG_MAC80211=m
+# CONFIG_MAC80211_LEDS is not set
 # CONFIG_MAC80211_DEBUG is not set
 CONFIG_IEEE80211=m
 # CONFIG_IEEE80211_DEBUG is not set
@@ -1411,7 +1412,20 @@ CONFIG_MMC_BLOCK_BOUNCE=y
 # CONFIG_MMC_SDHCI is not set
 # CONFIG_MMC_WBSD is not set
 # CONFIG_MMC_TIFM_SD is not set
-# CONFIG_NEW_LEDS is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_MPC832X=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 # CONFIG_INFINIBAND is not set
 # CONFIG_EDAC is not set
 # CONFIG_RTC_CLASS is not set
============================================================
--- packages/linux/linux_2.6.23.bb	3a43d1090a78823d2ddda0478a27d8a7712f0106
+++ packages/linux/linux_2.6.23.bb	00a00d10df9de70b87c4f01ef218370ab40cc076
@@ -6,7 +6,7 @@ DEFAULT_PREFERENCE_mpc8323e-rdb = "1"
 DEFAULT_PREFERENCE_mpc8313e-rdb = "1"
 DEFAULT_PREFERENCE_mpc8323e-rdb = "1"
 
-PR = "r3"
+PR = "r4"
 
 SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
 	   file://binutils-buildid-arm.patch;patch=1 \
@@ -23,6 +23,9 @@ SRC_URI_append_cm-x270 = "\
 	file://0007-mmcsd_large_cards-r0.patch;patch=1 \
 	file://0008-cm-x270-nand-simplify-name.patch;patch=1"
 
+SRC_URI_append_mpc8323e-rdb = "\
+	file://mpc832x-leds.patch;patch=1" 
+
 CMDLINE_cm-x270 = "console=${CMX270_CONSOLE_SERIAL_PORT},38400 monitor=8 bpp=16 mem=64M mtdparts=physmap-flash.0:256k(boot)ro,0x180000(kernel),-(root);cm-x270-nand:64m(app),-(data) rdinit=/sbin/init root=mtd3 rootfstype=jffs2"
 
 FILES_kernel-image_cm-x270 = ""






More information about the Openembedded-commits mailing list