]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-linux/linux.git/commitdiff
Merge branch 'for-arm-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney...
authorArnd Bergmann <arnd@arndb.de>
Mon, 13 Aug 2012 14:45:48 +0000 (16:45 +0200)
committerArnd Bergmann <arnd@arndb.de>
Mon, 13 Aug 2012 14:45:48 +0000 (16:45 +0200)
From Bryan Wu <bryan.wu@canonical.com>:

Based on Linus Walleij's ARM LED consolidation work, this patchset introduce a
new generic led trigger for CPU not only for ARM but also for others.

For enabling CPU idle event, CPU arch code should call ledtrig_cpu() stub to
trigger idle start or idle end event.

These patches convert old style LED driver in arch/arm to gpio_led or new led
driver interface. Against 3.5 release and build successfully for all the machines.

Test ledtrig-cpu driver on OMAP4 Panda board.

v9 --> v10
 * fix compiling issue on versatile_defconfig reported by Russell King
 * rebase to 3.5 kernel and move patches to new git tree

v8 --> v9:
 * use mutex to replace rw_sema pointed out by Tim Gardner
 * add a new struct led_trigger_cpu
 * add lock_is_inited to record mutex lock initialization

v6 --> v7:
 * add a patch to unify the led-trigger name
 * fix some typo pointed
 * use BUG_ON to detect CPU numbers during building stage

v5 --> v6:
 * replace  __get_cpu_var() to per_cpu()
 * remove smp_processor_id() which is wrong with for_each_possible_cpu()
 * test on real OMAP4 Panda board
 * add comments about CPU hotplug in the CPU LED trigger driver

v4 --> v5:
 * rebase all the patches on top of latest linux-next
 * replace on_each_cpu() with for_each_possible_cpu()
 * add some description of ledtrig_cpu() API
 * remove old leds code from driver nwflash.c, which should use a new led trigger then
 * this trigger driver can be built as module now

v3 --> v4:
 * fix a typo pointed by Jochen Friedrich
 * fix some building errors
 * add Reviewed-by and Tested-by into patch log

v2 --> v3:
 * almost rewrote the whole ledtrig-cpu driver, which is more simple
 * every CPU will have a per-CPU trigger
 * cpu trigger can be assigned to any leds
 * fix a lockdep issue in led-trigger common code
 * other fix according to review

v1 --> v2:
 * remove select operations in Kconfig of every machines
 * add back supporting of led in core module of mach-integrator
 * solidate name scheme in ledtrig-cpu.c
 * add comments of CPU_LED_* cpu led events
 * fold patches of RealView and Versatile together
 * add machine_is_ check during assabet led driver init
 * add some Acked-by in patch logs
 * remove code for simpad machine in machine-sa11000, since Jochen Friedrich
   introduced gpiolib and gpio-led driver for simpad
 * on Assabet and Netwinder machine, LED operations is reversed like:
   setting bit means turn off leds
   clearing bit means turn on leds
 * add a new function to read CM_CTRL register for led driver

* 'for-arm-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds:
  ARM: use new LEDS CPU trigger stub to replace old one
  ARM: mach-sa1100: retire custom LED code
  ARM: mach-omap1: retire custom LED code
  ARM: mach-pnx4008: remove including old leds event API header file
  ARM: plat-samsung: remove including old leds event API header file
  ARM: mach-pxa: retire custom LED code
  char: nwflash: remove old led event code
  ARM: mach-footbridge: retire custom LED code
  ARM: mach-ebsa110: retire custom LED code
  ARM: mach-clps711x: retire custom LED code of P720T machine
  ARM: mach-integrator: retire custom LED code
  ARM: mach-integrator: move CM_CTRL to header file for accessing by other functions
  ARM: mach-orion5x: convert custom LED code to gpio_led and LED CPU trigger
  ARM: mach-shark: retire custom LED code
  ARM: mach-ks8695: remove leds driver, since nobody use it
  ARM: mach-realview and mach-versatile: retire custom LED code
  ARM: at91: convert old leds drivers to gpio_led and led_trigger drivers
  led-triggers: create a trigger for CPU activity

Conflicts:
arch/arm/mach-clps711x/p720t.c
arch/arm/mach-sa1100/leds-cerf.c
arch/arm/mach-sa1100/leds-lart.c

Let's hope this is the last time we pull this and it doesn't cause
more trouble. I have verified that version 10 causes no build
warnings or errors any more, and the patches still look good.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
26 files changed:
1  2 
arch/arm/Kconfig
arch/arm/kernel/process.c
arch/arm/mach-at91/board-csb337.c
arch/arm/mach-at91/board-ecbat91.c
arch/arm/mach-at91/board-eco920.c
arch/arm/mach-at91/board-kafa.c
arch/arm/mach-at91/board-kb9202.c
arch/arm/mach-at91/board-rm9200dk.c
arch/arm/mach-at91/board-rm9200ek.c
arch/arm/mach-at91/board-rsi-ews.c
arch/arm/mach-at91/board-sam9-l9260.c
arch/arm/mach-at91/board-sam9261ek.c
arch/arm/mach-at91/board-yl-9200.c
arch/arm/mach-clps711x/common.c
arch/arm/mach-clps711x/p720t.c
arch/arm/mach-integrator/core.c
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-sa1100/assabet.c
arch/arm/plat-omap/Kconfig
arch/arm/plat-versatile/Kconfig
drivers/leds/Kconfig
drivers/leds/Makefile
include/linux/leds.h

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index f266d90b9efc0e8a4cc79b92b8ece9214c31c2e7,09113a94114535536f89675b56e47b1351b389e1..b752b586fc2fd2c822677dd8009bd6256a998863
@@@ -101,19 -115,70 +105,77 @@@ static void __init p720t_init_early(voi
        PLD_CODEC = 0;
        PLD_TCH   = 0;
        PLD_SPI   = 0;
 -#ifndef CONFIG_DEBUG_LL
 -      PLD_COM2  = 0;
 -      PLD_COM1  = 0;
 -#endif
 -
 -      return 0;
 +      if (!IS_ENABLED(CONFIG_DEBUG_LL)) {
 +              PLD_COM2 = 0;
 +              PLD_COM1 = 0;
 +      }
  }
  
 -__initcall(p720t_hw_init);
 -
+ /*
+  * LED controled by CPLD
+  */
+ #if defined(CONFIG_NEW_LEDS) && defined(CONFIG_LEDS_CLASS)
+ static void p720t_led_set(struct led_classdev *cdev,
+                             enum led_brightness b)
+ {
+       u8 reg = clps_readb(PDDR);
+       if (b != LED_OFF)
+               reg |= 0x1;
+       else
+               reg &= ~0x1;
+       clps_writeb(reg, PDDR);
+ }
+ static enum led_brightness p720t_led_get(struct led_classdev *cdev)
+ {
+       u8 reg = clps_readb(PDDR);
+       return (reg & 0x1) ? LED_FULL : LED_OFF;
+ }
+ static int __init p720t_leds_init(void)
+ {
+       struct led_classdev *cdev;
+       int ret;
+       if (!machine_is_p720t())
+               return -ENODEV;
+       cdev = kzalloc(sizeof(*cdev), GFP_KERNEL);
+       if (!cdev)
+               return -ENOMEM;
+       cdev->name = "p720t:0";
+       cdev->brightness_set = p720t_led_set;
+       cdev->brightness_get = p720t_led_get;
+       cdev->default_trigger = "heartbeat";
+       ret = led_classdev_register(NULL, cdev);
+       if (ret < 0) {
+               kfree(cdev);
+               return ret;
+       }
+       return 0;
+ }
+ /*
+  * Since we may have triggers on any subsystem, defer registration
+  * until after subsystem_init.
+  */
+ fs_initcall(p720t_leds_init);
+ #endif
++
 +MACHINE_START(P720T, "ARM-Prospector720T")
 +      /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
 +      .atag_offset    = 0x100,
 +      .fixup          = fixup_p720t,
 +      .init_early     = p720t_init_early,
 +      .map_io         = p720t_map_io,
 +      .init_irq       = clps711x_init_irq,
 +      .timer          = &clps711x_timer,
 +      .restart        = clps711x_restart,
 +MACHINE_END
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index dd36eba9506c85877d91e57d2d95894343199d7d,aa8e66857edd5ae49f799bd7f78a071beb77b380..13910baae2282cdabd2f3f0d9704533664d8fa15
@@@ -41,27 -41,27 +41,26 @@@ config OMAP_DEBUG_DEVICE
          For debug cards on TI reference boards.
  
  config OMAP_DEBUG_LEDS
-       bool
+       def_bool y if NEW_LEDS
        depends on OMAP_DEBUG_DEVICES
-       default y if LEDS_CLASS
  
 -config OMAP_SMARTREFLEX
 -      bool "SmartReflex support"
 -      depends on (ARCH_OMAP3 || ARCH_OMAP4) && PM
 +config POWER_AVS_OMAP
 +      bool "AVS(Adaptive Voltage Scaling) support for OMAP IP versions 1&2"
 +      depends on POWER_AVS && (ARCH_OMAP3 || ARCH_OMAP4) && PM
        help
 -        Say Y if you want to enable SmartReflex.
 -
 -        SmartReflex can perform continuous dynamic voltage
 -        scaling around the nominal operating point voltage
 -        according to silicon characteristics and operating
 -        conditions. Enabling SmartReflex reduces power
 -        consumption.
 +        Say Y to enable AVS(Adaptive Voltage Scaling)
 +        support on OMAP containing the version 1 or
 +        version 2 of the SmartReflex IP.
 +        V1 is the 65nm version used in OMAP3430.
 +        V2 is the update for the 45nm version of the IP used in OMAP3630
 +        and OMAP4430
  
          Please note, that by default SmartReflex is only
 -        initialized. To enable the automatic voltage
 -        compensation for vdd mpu  and vdd core from user space,
 +        initialized and not enabled. To enable the automatic voltage
 +        compensation for vdd mpu and vdd core from user space,
          user must write 1 to
 -              /debug/voltage/vdd_<X>/smartreflex/autocomp,
 -        where X is mpu or core for OMAP3.
 +              /debug/smartreflex/sr_<X>/autocomp,
 +        where X is mpu_iva or core for OMAP3.
          Optionally autocompensation can be enabled in the kernel
          by default during system init via the enable_on_init flag
          which an be passed as platform data to the smartreflex driver.
Simple merge
Simple merge
Simple merge
Simple merge