Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
[sfrench/cifs-2.6.git] / drivers / firmware / ti_sci.h
index adbeeefaca92fe93c744d31f4f46bef8e497edb3..414e0ced5409e4ca0b34a3de27070aa5d0bbe241 100644 (file)
@@ -202,7 +202,8 @@ struct ti_sci_msg_req_set_device_resets {
  * @dev_id:    Device identifier this request is for
  * @clk_id:    Clock identifier for the device for this request.
  *             Each device has it's own set of clock inputs. This indexes
- *             which clock input to modify.
+ *             which clock input to modify. Set to 255 if clock ID is
+ *             greater than or equal to 255.
  * @request_state: Request the state for the clock to be set to.
  *             MSG_CLOCK_SW_STATE_UNREQ: The IP does not require this clock,
  *             it can be disabled, regardless of the state of the device
@@ -213,6 +214,9 @@ struct ti_sci_msg_req_set_device_resets {
  *             being required by the device.(default)
  *             MSG_CLOCK_SW_STATE_REQ:  Configure the clock to be enabled,
  *             regardless of the state of the device.
+ * @clk_id_32: Clock identifier for the device for this request.
+ *             Only to be used if the clock ID is greater than or equal to
+ *             255.
  *
  * Normally, all required clocks are managed by TISCI entity, this is used
  * only for specific control *IF* required. Auto managed state is
@@ -234,6 +238,7 @@ struct ti_sci_msg_req_set_clock_state {
 #define MSG_CLOCK_SW_STATE_AUTO                1
 #define MSG_CLOCK_SW_STATE_REQ         2
        u8 request_state;
+       u32 clk_id_32;
 } __packed;
 
 /**
@@ -242,7 +247,11 @@ struct ti_sci_msg_req_set_clock_state {
  * @dev_id:    Device identifier this request is for
  * @clk_id:    Clock identifier for the device for this request.
  *             Each device has it's own set of clock inputs. This indexes
- *             which clock input to get state of.
+ *             which clock input to get state of. Set to 255 if the clock
+ *             ID is greater than or equal to 255.
+ * @clk_id_32: Clock identifier for the device for the request.
+ *             Only to be used if the clock ID is greater than or equal to
+ *             255.
  *
  * Request type is TI_SCI_MSG_GET_CLOCK_STATE, response is state
  * of the clock
@@ -251,6 +260,7 @@ struct ti_sci_msg_req_get_clock_state {
        struct ti_sci_msg_hdr hdr;
        u32 dev_id;
        u8 clk_id;
+       u32 clk_id_32;
 } __packed;
 
 /**
@@ -278,9 +288,13 @@ struct ti_sci_msg_resp_get_clock_state {
  * @dev_id:    Device identifier this request is for
  * @clk_id:    Clock identifier for the device for this request.
  *             Each device has it's own set of clock inputs. This indexes
- *             which clock input to modify.
+ *             which clock input to modify. Set to 255 if clock ID is
+ *             greater than or equal to 255.
  * @parent_id: The new clock parent is selectable by an index via this
- *             parameter.
+ *             parameter. Set to 255 if clock ID is greater than or
+ *             equal to 255.
+ * @clk_id_32: Clock identifier if @clk_id field is 255.
+ * @parent_id_32:      Parent identifier if @parent_id is 255.
  *
  * Request type is TI_SCI_MSG_SET_CLOCK_PARENT, response is generic
  * ACK / NACK message.
@@ -290,6 +304,8 @@ struct ti_sci_msg_req_set_clock_parent {
        u32 dev_id;
        u8 clk_id;
        u8 parent_id;
+       u32 clk_id_32;
+       u32 parent_id_32;
 } __packed;
 
 /**
@@ -298,7 +314,10 @@ struct ti_sci_msg_req_set_clock_parent {
  * @dev_id:    Device identifier this request is for
  * @clk_id:    Clock identifier for the device for this request.
  *             Each device has it's own set of clock inputs. This indexes
- *             which clock input to get the parent for.
+ *             which clock input to get the parent for. If this field
+ *             contains 255, the actual clock identifier is stored in
+ *             @clk_id_32.
+ * @clk_id_32: Clock identifier if the @clk_id field contains 255.
  *
  * Request type is TI_SCI_MSG_GET_CLOCK_PARENT, response is parent information
  */
@@ -306,25 +325,32 @@ struct ti_sci_msg_req_get_clock_parent {
        struct ti_sci_msg_hdr hdr;
        u32 dev_id;
        u8 clk_id;
+       u32 clk_id_32;
 } __packed;
 
 /**
  * struct ti_sci_msg_resp_get_clock_parent - Response with clock parent
  * @hdr:       Generic Header
- * @parent_id: The current clock parent
+ * @parent_id: The current clock parent. If set to 255, the current parent
+ *             ID can be found from the @parent_id_32 field.
+ * @parent_id_32:      Current clock parent if @parent_id field is set to
+ *                     255.
  *
  * Response to TI_SCI_MSG_GET_CLOCK_PARENT.
  */
 struct ti_sci_msg_resp_get_clock_parent {
        struct ti_sci_msg_hdr hdr;
        u8 parent_id;
+       u32 parent_id_32;
 } __packed;
 
 /**
  * struct ti_sci_msg_req_get_clock_num_parents - Request to get clock parents
  * @hdr:       Generic header
  * @dev_id:    Device identifier this request is for
- * @clk_id:    Clock identifier for the device for this request.
+ * @clk_id:    Clock identifier for the device for this request. Set to
+ *             255 if clock ID is greater than or equal to 255.
+ * @clk_id_32: Clock identifier if the @clk_id field contains 255.
  *
  * This request provides information about how many clock parent options
  * are available for a given clock to a device. This is typically used
@@ -337,18 +363,24 @@ struct ti_sci_msg_req_get_clock_num_parents {
        struct ti_sci_msg_hdr hdr;
        u32 dev_id;
        u8 clk_id;
+       u32 clk_id_32;
 } __packed;
 
 /**
  * struct ti_sci_msg_resp_get_clock_num_parents - Response for get clk parents
  * @hdr:               Generic header
- * @num_parents:       Number of clock parents
+ * @num_parents:       Number of clock parents. If set to 255, the actual
+ *                     number of parents is stored into @num_parents_32
+ *                     field instead.
+ * @num_parents_32:    Number of clock parents if @num_parents field is
+ *                     set to 255.
  *
  * Response to TI_SCI_MSG_GET_NUM_CLOCK_PARENTS
  */
 struct ti_sci_msg_resp_get_clock_num_parents {
        struct ti_sci_msg_hdr hdr;
        u8 num_parents;
+       u32 num_parents_32;
 } __packed;
 
 /**
@@ -363,7 +395,9 @@ struct ti_sci_msg_resp_get_clock_num_parents {
  * @max_freq_hz: The maximum allowable frequency in Hz. This is the maximum
  *             allowable programmed frequency and does not account for clock
  *             tolerances and jitter.
- * @clk_id:    Clock identifier for the device for this request.
+ * @clk_id:    Clock identifier for the device for this request. Set to
+ *             255 if clock identifier is greater than or equal to 255.
+ * @clk_id_32: Clock identifier if @clk_id is set to 255.
  *
  * NOTE: Normally clock frequency management is automatically done by TISCI
  * entity. In case of specific requests, TISCI evaluates capability to achieve
@@ -380,6 +414,7 @@ struct ti_sci_msg_req_query_clock_freq {
        u64 target_freq_hz;
        u64 max_freq_hz;
        u8 clk_id;
+       u32 clk_id_32;
 } __packed;
 
 /**
@@ -407,7 +442,9 @@ struct ti_sci_msg_resp_query_clock_freq {
  * @max_freq_hz: The maximum allowable frequency in Hz. This is the maximum
  *             allowable programmed frequency and does not account for clock
  *             tolerances and jitter.
- * @clk_id:    Clock identifier for the device for this request.
+ * @clk_id:    Clock identifier for the device for this request. Set to
+ *             255 if clock ID is greater than or equal to 255.
+ * @clk_id_32: Clock identifier if @clk_id field is set to 255.
  *
  * NOTE: Normally clock frequency management is automatically done by TISCI
  * entity. In case of specific requests, TISCI evaluates capability to achieve
@@ -436,13 +473,16 @@ struct ti_sci_msg_req_set_clock_freq {
        u64 target_freq_hz;
        u64 max_freq_hz;
        u8 clk_id;
+       u32 clk_id_32;
 } __packed;
 
 /**
  * struct ti_sci_msg_req_get_clock_freq - Request to get the clock frequency
  * @hdr:       Generic Header
  * @dev_id:    Device identifier this request is for
- * @clk_id:    Clock identifier for the device for this request.
+ * @clk_id:    Clock identifier for the device for this request. Set to
+ *             255 if clock ID is greater than or equal to 255.
+ * @clk_id_32: Clock identifier if @clk_id field is set to 255.
  *
  * NOTE: Normally clock frequency management is automatically done by TISCI
  * entity. In some cases, clock frequencies are configured by host.
@@ -454,6 +494,7 @@ struct ti_sci_msg_req_get_clock_freq {
        struct ti_sci_msg_hdr hdr;
        u32 dev_id;
        u8 clk_id;
+       u32 clk_id_32;
 } __packed;
 
 /**