• Magnus Damm's avatar
    leds: Renesas TPU LED driver · f59b6f9f
    Magnus Damm authored
    Add V2 of the LED driver for a single timer channel for the TPU hardware
    block commonly found in Renesas SoCs.
    
    The driver has been written with optimal Power Management in mind, so to
    save power the LED is driven as a regular GPIO pin in case of maximum
    brightness and power off which allows the TPU hardware to be idle and
    which in turn allows the clocks to be stopped and the power domain to be
    turned off transparently.
    
    Any other brightness level requires use of the TPU hardware in PWM mode.
    TPU hardware device clocks and power are managed through Runtime PM.
    System suspend and resume is known to be working - during suspend the LED
    is set to off by the generic LED code.
    
    The TPU hardware timer is equipeed with a 16-bit counter together with an
    up-to-divide-by-64 prescaler which makes the hardware suitable for
    brightness control.  Hardware blink is unsupported.
    
    The LED PWM waveform has been verified with a Fluke 123 Scope meter on a
    sh7372 Mackerel board.  Tested with experimental sh7372 A3SP power domain
    patches.  Platform device bind/unbind tested ok.
    
    V2 has been tested on the DS2 LED of the sh73a0-based AG5EVM.
    
    [axel.lin@gmail.com: include linux/module.h]
    Signed-off-by: default avatarMagnus Damm <damm@opensource.se>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Cc: Richard Purdie <rpurdie@rpsys.net>
    Cc: Grant Likely <grant.likely@secretlab.ca>
    Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f59b6f9f
leds-renesas-tpu.c 8.72 KB