summaryrefslogtreecommitdiff
path: root/arch/arm/mach-omap2/board-omap3beagle.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-02-21 15:33:45 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2013-02-21 15:33:45 -0800
commit6c5096e5538b455bc3bea2b02588c380f070d8c6 (patch)
treea2d08974a0c6a6fd19dff90bd3ab1827c23a5764 /arch/arm/mach-omap2/board-omap3beagle.c
parentbab588fcfb6335c767d811a8955979f5440328e0 (diff)
parentf628e3d92465303792d52c98fb0c95bef558f936 (diff)
Merge tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC board specific changes from Arnd Bergmann: "These updates are all for board specific code, including - defconfig updates for shmobile, davinci, bcm2835, imx, omap and tegra - SD/MMC and I2C support on bcm2835 (Raspberry PI) - minor updates for PXA - shmobile updates to GPIO usage in board files - More things in OMAP board files are moved over to device tree probing - Better support for audio devices on some OMAP platforms" * tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (55 commits) ARM: imx_v4_v5_defconfig: Add VPU support ARM: imx: configs: enable netfilter support ARM: OMAP2+: Fix twl section warnings related to omap_twl4030_audio_init ARM: OMAP2+: omap2plus_defconfig: enable omap1 rtc RX-51: Register twl4030-madc device RX-51: Add leds lp5523 names from Maemo 5 2.6.28 kernel ARM: OMAP2+: AM33XX: omap2plus_defconfig: Add support for few drivers ARM: OMAP1: nokia770: enable CBUS/Retu ARM: OMAP2+: omap2plus_defconfig: enable CMA allocator ARM: OMAP2+: omap2plus_defconfig: enable TFP410 chip support ARM: OMAP3: igep0020: simplify GPIO LEDs dependencies ARM: OMAP2+: craneboard: support the TPS65910 PMU ARM: OMAP2+: craneboard: support NAND device ARM: OMAP3: cm-t3517: add MMC support ARM: OMAP2+: Remove apollon board support ARM: shmobile: armadillo800eva: set clock rates before timer init ARM: tegra: defconfig updates ARM: shmobile: mackerel: Use gpio_request_one() ARM: shmobile: kzm9g: Use gpio_request_one() ARM: shmobile: bonito: Use gpio_request_one() ...
Diffstat (limited to 'arch/arm/mach-omap2/board-omap3beagle.c')
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c41
1 files changed, 32 insertions, 9 deletions
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 70bc1fc808c8..c3558f93d42c 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -20,6 +20,8 @@
#include <linux/clk.h>
#include <linux/io.h>
#include <linux/leds.h>
+#include <linux/pwm.h>
+#include <linux/leds_pwm.h>
#include <linux/gpio.h>
#include <linux/input.h>
#include <linux/gpio_keys.h>
@@ -56,6 +58,32 @@
#define NAND_CS 0
+static struct pwm_lookup pwm_lookup[] = {
+ /* LEDB -> PMU_STAT */
+ PWM_LOOKUP("twl-pwmled", 1, "leds_pwm", "beagleboard::pmu_stat"),
+};
+
+static struct led_pwm pwm_leds[] = {
+ {
+ .name = "beagleboard::pmu_stat",
+ .max_brightness = 127,
+ .pwm_period_ns = 7812500,
+ },
+};
+
+static struct led_pwm_platform_data pwm_data = {
+ .num_leds = ARRAY_SIZE(pwm_leds),
+ .leds = pwm_leds,
+};
+
+static struct platform_device leds_pwm = {
+ .name = "leds_pwm",
+ .id = -1,
+ .dev = {
+ .platform_data = &pwm_data,
+ },
+};
+
/*
* OMAP3 Beagle revision
* Run time detection of Beagle revision is done by reading GPIO.
@@ -293,9 +321,6 @@ static int beagle_twl_gpio_setup(struct device *dev,
gpio_request_one(gpio + TWL4030_GPIO_MAX, beagle_config.usb_pwr_level,
"nEN_USB_PWR");
- /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
- gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
-
return 0;
}
@@ -377,11 +402,6 @@ static struct gpio_led gpio_leds[] = {
.default_trigger = "mmc0",
.gpio = 149,
},
- {
- .name = "beagleboard::pmu_stat",
- .gpio = -EINVAL, /* gets replaced */
- .active_low = true,
- },
};
static struct gpio_led_platform_data gpio_led_info = {
@@ -429,6 +449,7 @@ static struct platform_device *omap3_beagle_devices[] __initdata = {
&leds_gpio,
&keys_gpio,
&madc_hwmon,
+ &leds_pwm,
};
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
@@ -526,7 +547,7 @@ static void __init omap3_beagle_init(void)
board_nand_init(omap3beagle_nand_partitions,
ARRAY_SIZE(omap3beagle_nand_partitions), NAND_CS,
NAND_BUSWIDTH_16, NULL);
- omap_twl4030_audio_init("omap3beagle");
+ omap_twl4030_audio_init("omap3beagle", NULL);
/* Ensure msecure is mux'd to be able to set the RTC. */
omap_mux_init_signal("sys_drm_msecure", OMAP_PIN_OFF_OUTPUT_HIGH);
@@ -534,6 +555,8 @@ static void __init omap3_beagle_init(void)
/* Ensure SDRC pins are mux'd for self-refresh */
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
+
+ pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
}
MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")