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@xxxxxxxxxxxxxxxx > https://lists.ozlabs.org/listinfo/linuxppc-dev > -- To unsubscribe from this list: send the line "unsubscribe linux-leds" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html