[PATCH v4 0/3] LED interface for PowerNV platform
Vasant Hegde
hegdevasant at linux.vnet.ibm.com
Thu Jun 11 16:33:23 AEST 2015
On 04/28/2015 03:39 PM, Vasant Hegde wrote:
> The following series implements LED driver for PowerNV platform.
Ben, Michael,
Can you please review/ACK this patchset?
-Vasant
>
> PowerNV platform has below type of LEDs:
> - System attention
> Indicates there is a problem with the system that needs attention.
> - Identify
> Helps the user locate/identify a particular FRU or resource in the
> system.
> - Fault
> Indicates there is a problem with the FRU or resource at the
> location with which the indicator is associated.
>
> On PowerNV (Non Virtualized) platform OPAL firmware provides LED information
> to host via device tree (location code and LED type). During init we check
> for 'ibm,opal/led' node in device tree to enable LED driver. And we use
> OPAL API's to get/set LEDs.
>
> Note that on PowerNV platform firmware can activate fault LED, if it can isolate
> the problem. Also one can modify the LEDs using service processor interface. None
> of these involes kernel. Hence we retain LED state in unload path.
>
> Sample LED device tree output:
> ------------------------------
> led {
> compatible = "ibm,opal-v3-led";
> phandle = <0x1000006b>;
> linux,phandle = <0x1000006b>;
> led-mode = "lightpath";
>
> U78C9.001.RST0027-P1-C1 {
> led-types = "identify", "fault";
> led-loc = "descendent";
> phandle = <0x1000006f>;
> linux,phandle = <0x1000006f>;
> };
> ...
> ...
> }
>
> Sample sysfs output:
> --------------------
> .
> ├── U78CB.001.WZS008R-A1:fault
> │ ├── brightness
> │ ├── device -> ../../../opal_led
> │ ├── max_brightness
> │ ├── power
> │ │ ├── async
> │ │ ├── autosuspend_delay_ms
> │ │ ├── control
> │ │ ├── runtime_active_kids
> │ │ ├── runtime_active_time
> │ │ ├── runtime_enabled
> │ │ ├── runtime_status
> │ │ ├── runtime_suspended_time
> │ │ └── runtime_usage
> │ ├── subsystem -> ../../../../../class/leds
> │ ├── trigger
> │ └── uevent
> ├── U78CB.001.WZS008R-A1:identify
> │ ├── brightness
> │ ├── device -> ../../../opal_led
> │ ├── max_brightness
> │ ├── power
> │ │ ├── async
> │ │ ├── autosuspend_delay_ms
> │ │ ├── control
> │ │ ├── runtime_active_kids
> │ │ ├── runtime_active_time
> │ │ ├── runtime_enabled
> │ │ ├── runtime_status
> │ │ ├── runtime_suspended_time
> │ │ └── runtime_usage
> │ ├── subsystem -> ../../../../../class/leds
> │ ├── trigger
> │ └── uevent
> ....
> ....
> ....
>
> patch 1/2: PowerNV architecture specific code. This adds necessary
> OPAL APIs.
> patch 2/2: Create LED platform device and export OPAL symbols
> patch 3/3: Actual LED driver implemenation for PowerNV platform.
>
> This patchset is based on top of mpe's next branch:
> https://git.kernel.org/cgit/linux/kernel/git/mpe/linux.git/log/?h=next
>
> Previous patchset:
> v3: https://lists.ozlabs.org/pipermail/linuxppc-dev/2015-April/127702.html
> v2: https://lists.ozlabs.org/pipermail/linuxppc-dev/2015-March/126301.html
> v1: https://lists.ozlabs.org/pipermail/linuxppc-dev/2015-March/125705.html
>
> Changes in v4:
> - Updated macros to reflect platform.
> - s/u64/__be64/g for big endian data we get from firmware
> - Addressed review comments from Jacek. Major once are:
> Removed list in powernv_led_data structure
> s/kzalloc/devm_kzalloc/
> Removed compatible property from documentation
> s/powernv_led_set_queue/powernv_brightness_set/
> - Removed LED specific brightness_set/get function. Instead this version
> uses single function to queue all LED set/get requests. Later we use
> LED name to detect LED type and value.
> - Removed hardcoded LED type used in previous version. Instead we use
> led-types property to form LED classdev.
>
> Changes in v3:
> - Addressed review comments from Jacek. Major once are:
> Replaced spin lock and mutex and removed redundant structures
> Replaced pr_* with dev_*
> Moved OPAL platform sepcific part to separate patch
> Moved repteated code to common function
> Added device tree documentation for LEDs
>
> Changes in v2:
> - Rebased patches on top of mpe's next branch
> https://git.kernel.org/cgit/linux/kernel/git/mpe/linux.git/log/?h=next
> - Added System Attention Indicator support
> - Removed redundant code in leds-powernv.c file
>
>
> ---
>
> Anshuman Khandual (1):
> powerpc/powernv: Add OPAL interfaces for accessing and modifying system LED states
>
> Vasant Hegde (2):
> powerpc/powernv: Create LED platform device
> leds/powernv: Add driver for PowerNV platform
>
>
> .../devicetree/bindings/leds/leds-powernv.txt | 29 +
> arch/powerpc/include/asm/opal-api.h | 29 +
> arch/powerpc/include/asm/opal.h | 5
> arch/powerpc/platforms/powernv/opal-wrappers.S | 2
> arch/powerpc/platforms/powernv/opal.c | 12 -
> drivers/leds/Kconfig | 11
> drivers/leds/Makefile | 1
> drivers/leds/leds-powernv.c | 472 ++++++++++++++++++++
> 8 files changed, 559 insertions(+), 2 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/leds/leds-powernv.txt
> create mode 100644 drivers/leds/leds-powernv.c
>
> --
> Vasant
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>
More information about the Linuxppc-dev
mailing list