Re: [PATCH v4 1/3] powerpc/powernv: Add OPAL interfaces for accessing and modifying system LED states

2015-06-24 Thread Benjamin Herrenschmidt
On Tue, 2015-04-28 at 15:39 +0530, Vasant Hegde wrote:
 From: Anshuman Khandual khand...@linux.vnet.ibm.com
 
 This patch registers the following two new OPAL interfaces calls
 for the platform LED subsystem. With the help of these new OPAL calls,
 the kernel will be able to get or set the state of various individual
 LEDs on the system at any given location code which is passed through
 the LED specific device tree nodes.
 
   (1) OPAL_LEDS_GET_INDICATOR opal_leds_get_ind
   (2) OPAL_LEDS_SET_INDICATOR opal_leds_set_ind
 
 Signed-off-by: Anshuman Khandual khand...@linux.vnet.ibm.com
 Signed-off-by: Vasant Hegde hegdevas...@linux.vnet.ibm.com
 Acked-by: Stewart Smith stew...@linux.vnet.ibm.com
 Tested-by: Stewart Smith stew...@linux.vnet.ibm.com

Acked-by: Benjamin Herrenschmidt b...@kernel.crashing.org

 ---
 Changes in v4:
   - Updated macros to reflect platform.
 
  arch/powerpc/include/asm/opal-api.h|   29 
 +++-
  arch/powerpc/include/asm/opal.h|5 
  arch/powerpc/platforms/powernv/opal-wrappers.S |2 ++
  3 files changed, 35 insertions(+), 1 deletion(-)
 
 diff --git a/arch/powerpc/include/asm/opal-api.h 
 b/arch/powerpc/include/asm/opal-api.h
 index 0321a90..ff85397 100644
 --- a/arch/powerpc/include/asm/opal-api.h
 +++ b/arch/powerpc/include/asm/opal-api.h
 @@ -153,7 +153,9 @@
  #define OPAL_FLASH_READ  110
  #define OPAL_FLASH_WRITE 111
  #define OPAL_FLASH_ERASE 112
 -#define OPAL_LAST112
 +#define OPAL_LEDS_GET_INDICATOR  114
 +#define OPAL_LEDS_SET_INDICATOR  115
 +#define OPAL_LAST115
  
  /* Device tree flags */
  
 @@ -730,6 +732,31 @@ struct opal_i2c_request {
   __be64 buffer_ra;   /* Buffer real address */
  };
  
 +/* LED Mode */
 +#define POWERNV_LED_MODE_LIGHT_PATH  lightpath
 +#define POWERNV_LED_MODE_GUIDING_LIGHT   guidinglight
 +
 +/* LED type */
 +#define POWERNV_LED_TYPE_IDENTIFYidentify
 +#define POWERNV_LED_TYPE_FAULT   fault
 +#define POWERNV_LED_TYPE_ATTENTION   attention
 +
 +/* LED location */
 +#define POWERNV_LED_LOC_ENCLOSUREenclosure
 +#define POWERNV_LED_LOC_DESCENDENT   descendent
 +
 +enum OpalSlotLedType {
 + OPAL_SLOT_LED_TYPE_ID = 0,  /* IDENTIFY LED */
 + OPAL_SLOT_LED_TYPE_FAULT = 1,   /* FAULT LED */
 + OPAL_SLOT_LED_TYPE_ATTN = 2,/* System Attention LED */
 + OPAL_SLOT_LED_TYPE_MAX = 3
 +};
 +
 +enum OpalSlotLedState {
 + OPAL_SLOT_LED_STATE_OFF = 0,/* LED is OFF */
 + OPAL_SLOT_LED_STATE_ON = 1  /* LED is ON */
 +};
 +
  #endif /* __ASSEMBLY__ */
  
  #endif /* __OPAL_API_H */
 diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
 index 042af1a..e06dc7e 100644
 --- a/arch/powerpc/include/asm/opal.h
 +++ b/arch/powerpc/include/asm/opal.h
 @@ -193,6 +193,11 @@ int64_t opal_ipmi_recv(uint64_t interface, struct 
 opal_ipmi_msg *msg,
   uint64_t *msg_len);
  int64_t opal_i2c_request(uint64_t async_token, uint32_t bus_id,
struct opal_i2c_request *oreq);
 +int64_t opal_leds_get_ind(char *loc_code, u64 *led_mask,
 +   u64 *led_value, u64 *max_led_type);
 +int64_t opal_leds_set_ind(uint64_t token, char *loc_code, const u64 led_mask,
 +   const u64 led_value, u64 *max_led_type);
 +
  
  int64_t opal_flash_read(uint64_t id, uint64_t offset, uint64_t buf,
   uint64_t size, uint64_t token);
 diff --git a/arch/powerpc/platforms/powernv/opal-wrappers.S 
 b/arch/powerpc/platforms/powernv/opal-wrappers.S
 index 4e74037..20d4da4 100644
 --- a/arch/powerpc/platforms/powernv/opal-wrappers.S
 +++ b/arch/powerpc/platforms/powernv/opal-wrappers.S
 @@ -295,3 +295,5 @@ OPAL_CALL(opal_i2c_request,   
 OPAL_I2C_REQUEST);
  OPAL_CALL(opal_flash_read,   OPAL_FLASH_READ);
  OPAL_CALL(opal_flash_write,  OPAL_FLASH_WRITE);
  OPAL_CALL(opal_flash_erase,  OPAL_FLASH_ERASE);
 +OPAL_CALL(opal_leds_get_ind, OPAL_LEDS_GET_INDICATOR);
 +OPAL_CALL(opal_leds_set_ind, OPAL_LEDS_SET_INDICATOR);


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

[PATCH v4 1/3] powerpc/powernv: Add OPAL interfaces for accessing and modifying system LED states

2015-04-28 Thread Vasant Hegde
From: Anshuman Khandual khand...@linux.vnet.ibm.com

This patch registers the following two new OPAL interfaces calls
for the platform LED subsystem. With the help of these new OPAL calls,
the kernel will be able to get or set the state of various individual
LEDs on the system at any given location code which is passed through
the LED specific device tree nodes.

(1) OPAL_LEDS_GET_INDICATOR opal_leds_get_ind
(2) OPAL_LEDS_SET_INDICATOR opal_leds_set_ind

Signed-off-by: Anshuman Khandual khand...@linux.vnet.ibm.com
Signed-off-by: Vasant Hegde hegdevas...@linux.vnet.ibm.com
Acked-by: Stewart Smith stew...@linux.vnet.ibm.com
Tested-by: Stewart Smith stew...@linux.vnet.ibm.com

---
Changes in v4:
  - Updated macros to reflect platform.

 arch/powerpc/include/asm/opal-api.h|   29 +++-
 arch/powerpc/include/asm/opal.h|5 
 arch/powerpc/platforms/powernv/opal-wrappers.S |2 ++
 3 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/include/asm/opal-api.h 
b/arch/powerpc/include/asm/opal-api.h
index 0321a90..ff85397 100644
--- a/arch/powerpc/include/asm/opal-api.h
+++ b/arch/powerpc/include/asm/opal-api.h
@@ -153,7 +153,9 @@
 #define OPAL_FLASH_READ110
 #define OPAL_FLASH_WRITE   111
 #define OPAL_FLASH_ERASE   112
-#define OPAL_LAST  112
+#define OPAL_LEDS_GET_INDICATOR114
+#define OPAL_LEDS_SET_INDICATOR115
+#define OPAL_LAST  115
 
 /* Device tree flags */
 
@@ -730,6 +732,31 @@ struct opal_i2c_request {
__be64 buffer_ra;   /* Buffer real address */
 };
 
+/* LED Mode */
+#define POWERNV_LED_MODE_LIGHT_PATHlightpath
+#define POWERNV_LED_MODE_GUIDING_LIGHT guidinglight
+
+/* LED type */
+#define POWERNV_LED_TYPE_IDENTIFY  identify
+#define POWERNV_LED_TYPE_FAULT fault
+#define POWERNV_LED_TYPE_ATTENTION attention
+
+/* LED location */
+#define POWERNV_LED_LOC_ENCLOSURE  enclosure
+#define POWERNV_LED_LOC_DESCENDENT descendent
+
+enum OpalSlotLedType {
+   OPAL_SLOT_LED_TYPE_ID = 0,  /* IDENTIFY LED */
+   OPAL_SLOT_LED_TYPE_FAULT = 1,   /* FAULT LED */
+   OPAL_SLOT_LED_TYPE_ATTN = 2,/* System Attention LED */
+   OPAL_SLOT_LED_TYPE_MAX = 3
+};
+
+enum OpalSlotLedState {
+   OPAL_SLOT_LED_STATE_OFF = 0,/* LED is OFF */
+   OPAL_SLOT_LED_STATE_ON = 1  /* LED is ON */
+};
+
 #endif /* __ASSEMBLY__ */
 
 #endif /* __OPAL_API_H */
diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
index 042af1a..e06dc7e 100644
--- a/arch/powerpc/include/asm/opal.h
+++ b/arch/powerpc/include/asm/opal.h
@@ -193,6 +193,11 @@ int64_t opal_ipmi_recv(uint64_t interface, struct 
opal_ipmi_msg *msg,
uint64_t *msg_len);
 int64_t opal_i2c_request(uint64_t async_token, uint32_t bus_id,
 struct opal_i2c_request *oreq);
+int64_t opal_leds_get_ind(char *loc_code, u64 *led_mask,
+ u64 *led_value, u64 *max_led_type);
+int64_t opal_leds_set_ind(uint64_t token, char *loc_code, const u64 led_mask,
+ const u64 led_value, u64 *max_led_type);
+
 
 int64_t opal_flash_read(uint64_t id, uint64_t offset, uint64_t buf,
uint64_t size, uint64_t token);
diff --git a/arch/powerpc/platforms/powernv/opal-wrappers.S 
b/arch/powerpc/platforms/powernv/opal-wrappers.S
index 4e74037..20d4da4 100644
--- a/arch/powerpc/platforms/powernv/opal-wrappers.S
+++ b/arch/powerpc/platforms/powernv/opal-wrappers.S
@@ -295,3 +295,5 @@ OPAL_CALL(opal_i2c_request, 
OPAL_I2C_REQUEST);
 OPAL_CALL(opal_flash_read, OPAL_FLASH_READ);
 OPAL_CALL(opal_flash_write,OPAL_FLASH_WRITE);
 OPAL_CALL(opal_flash_erase,OPAL_FLASH_ERASE);
+OPAL_CALL(opal_leds_get_ind,   OPAL_LEDS_GET_INDICATOR);
+OPAL_CALL(opal_leds_set_ind,   OPAL_LEDS_SET_INDICATOR);

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev