lkml.org 
[lkml]   [2012]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH v10 00/18] Introduce a led trigger for CPU activity and consolidate LED driver in ARM
    Date
    On Monday 13 August 2012, Bryan Wu wrote:
    > 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.
    >
    > Please find these patches here:
    > git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds.git for-arm-soc
    >

    Pulled into the next/drivers branch again, and I verified that there
    are no new build warnings or errors against v3.6-rc1 that are introduced
    by this series. I got one simple merge conflict, see below for the
    resolution.

    Thanks for your persistence!

    Arnd

    commit 19e4ab54e7f5fe46a3c931afa7e786f11d57b558
    Merge: 0d7614f fa8bbb1
    Author: Arnd Bergmann <arnd@arndb.de>
    Date: Mon Aug 13 16:45:48 2012 +0200

    Merge branch 'for-arm-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds into next/drivers

    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>

    diff --cc arch/arm/mach-clps711x/p720t.c
    index f266d90,09113a9..b752b58
    --- a/arch/arm/mach-clps711x/p720t.c
    +++ b/arch/arm/mach-clps711x/p720t.c
    @@@ -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


    \
     
     \ /
      Last update: 2012-08-13 17:43    [W:0.037 / U:126.108 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site