Merge tag 'drivers_soc_for_4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone into next/drivers
soc: driver soc update for v4.20 - Enable host-id as an optional dt property - Fix minor typo in knav driver * tag 'drivers_soc_for_4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone: soc: ti: fix spelling mistake "instace" -> "instance" firmware: ti_sci: Provide host-id as an optional dt parameter Documentation: dt: keystone: ti-sci: Add optional host-id parameter Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
@@ -45,11 +45,15 @@ Optional Properties:
|
|||||||
debug_messages - Map the Debug message region
|
debug_messages - Map the Debug message region
|
||||||
- reg: register space corresponding to the debug_messages
|
- reg: register space corresponding to the debug_messages
|
||||||
- ti,system-reboot-controller: If system reboot can be triggered by SoC reboot
|
- ti,system-reboot-controller: If system reboot can be triggered by SoC reboot
|
||||||
|
- ti,host-id: Integer value corresponding to the host ID assigned by Firmware
|
||||||
|
for identification of host processing entities such as virtual
|
||||||
|
machines
|
||||||
|
|
||||||
Example (K2G):
|
Example (K2G):
|
||||||
-------------
|
-------------
|
||||||
pmmc: pmmc {
|
pmmc: pmmc {
|
||||||
compatible = "ti,k2g-sci";
|
compatible = "ti,k2g-sci";
|
||||||
|
ti,host-id = <2>;
|
||||||
mbox-names = "rx", "tx";
|
mbox-names = "rx", "tx";
|
||||||
mboxes= <&msgmgr &msgmgr_proxy_pmmc_rx>,
|
mboxes= <&msgmgr &msgmgr_proxy_pmmc_rx>,
|
||||||
<&msgmgr &msgmgr_proxy_pmmc_tx>;
|
<&msgmgr &msgmgr_proxy_pmmc_tx>;
|
||||||
|
@@ -66,14 +66,14 @@ struct ti_sci_xfers_info {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ti_sci_desc - Description of SoC integration
|
* struct ti_sci_desc - Description of SoC integration
|
||||||
* @host_id: Host identifier representing the compute entity
|
* @default_host_id: Host identifier representing the compute entity
|
||||||
* @max_rx_timeout_ms: Timeout for communication with SoC (in Milliseconds)
|
* @max_rx_timeout_ms: Timeout for communication with SoC (in Milliseconds)
|
||||||
* @max_msgs: Maximum number of messages that can be pending
|
* @max_msgs: Maximum number of messages that can be pending
|
||||||
* simultaneously in the system
|
* simultaneously in the system
|
||||||
* @max_msg_size: Maximum size of data per message that can be handled.
|
* @max_msg_size: Maximum size of data per message that can be handled.
|
||||||
*/
|
*/
|
||||||
struct ti_sci_desc {
|
struct ti_sci_desc {
|
||||||
u8 host_id;
|
u8 default_host_id;
|
||||||
int max_rx_timeout_ms;
|
int max_rx_timeout_ms;
|
||||||
int max_msgs;
|
int max_msgs;
|
||||||
int max_msg_size;
|
int max_msg_size;
|
||||||
@@ -94,6 +94,7 @@ struct ti_sci_desc {
|
|||||||
* @chan_rx: Receive mailbox channel
|
* @chan_rx: Receive mailbox channel
|
||||||
* @minfo: Message info
|
* @minfo: Message info
|
||||||
* @node: list head
|
* @node: list head
|
||||||
|
* @host_id: Host ID
|
||||||
* @users: Number of users of this instance
|
* @users: Number of users of this instance
|
||||||
*/
|
*/
|
||||||
struct ti_sci_info {
|
struct ti_sci_info {
|
||||||
@@ -110,6 +111,7 @@ struct ti_sci_info {
|
|||||||
struct mbox_chan *chan_rx;
|
struct mbox_chan *chan_rx;
|
||||||
struct ti_sci_xfers_info minfo;
|
struct ti_sci_xfers_info minfo;
|
||||||
struct list_head node;
|
struct list_head node;
|
||||||
|
u8 host_id;
|
||||||
/* protected by ti_sci_list_mutex */
|
/* protected by ti_sci_list_mutex */
|
||||||
int users;
|
int users;
|
||||||
|
|
||||||
@@ -370,7 +372,7 @@ static struct ti_sci_xfer *ti_sci_get_one_xfer(struct ti_sci_info *info,
|
|||||||
|
|
||||||
hdr->seq = xfer_id;
|
hdr->seq = xfer_id;
|
||||||
hdr->type = msg_type;
|
hdr->type = msg_type;
|
||||||
hdr->host = info->desc->host_id;
|
hdr->host = info->host_id;
|
||||||
hdr->flags = msg_flags;
|
hdr->flags = msg_flags;
|
||||||
|
|
||||||
return xfer;
|
return xfer;
|
||||||
@@ -1793,7 +1795,7 @@ static int tisci_reboot_handler(struct notifier_block *nb, unsigned long mode,
|
|||||||
|
|
||||||
/* Description for K2G */
|
/* Description for K2G */
|
||||||
static const struct ti_sci_desc ti_sci_pmmc_k2g_desc = {
|
static const struct ti_sci_desc ti_sci_pmmc_k2g_desc = {
|
||||||
.host_id = 2,
|
.default_host_id = 2,
|
||||||
/* Conservative duration */
|
/* Conservative duration */
|
||||||
.max_rx_timeout_ms = 1000,
|
.max_rx_timeout_ms = 1000,
|
||||||
/* Limited by MBOX_TX_QUEUE_LEN. K2G can handle upto 128 messages! */
|
/* Limited by MBOX_TX_QUEUE_LEN. K2G can handle upto 128 messages! */
|
||||||
@@ -1819,6 +1821,7 @@ static int ti_sci_probe(struct platform_device *pdev)
|
|||||||
int ret = -EINVAL;
|
int ret = -EINVAL;
|
||||||
int i;
|
int i;
|
||||||
int reboot = 0;
|
int reboot = 0;
|
||||||
|
u32 h_id;
|
||||||
|
|
||||||
of_id = of_match_device(ti_sci_of_match, dev);
|
of_id = of_match_device(ti_sci_of_match, dev);
|
||||||
if (!of_id) {
|
if (!of_id) {
|
||||||
@@ -1833,6 +1836,19 @@ static int ti_sci_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
info->dev = dev;
|
info->dev = dev;
|
||||||
info->desc = desc;
|
info->desc = desc;
|
||||||
|
ret = of_property_read_u32(dev->of_node, "ti,host-id", &h_id);
|
||||||
|
/* if the property is not present in DT, use a default from desc */
|
||||||
|
if (ret < 0) {
|
||||||
|
info->host_id = info->desc->default_host_id;
|
||||||
|
} else {
|
||||||
|
if (!h_id) {
|
||||||
|
dev_warn(dev, "Host ID 0 is reserved for firmware\n");
|
||||||
|
info->host_id = info->desc->default_host_id;
|
||||||
|
} else {
|
||||||
|
info->host_id = h_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
reboot = of_property_read_bool(dev->of_node,
|
reboot = of_property_read_bool(dev->of_node,
|
||||||
"ti,system-reboot-controller");
|
"ti,system-reboot-controller");
|
||||||
INIT_LIST_HEAD(&info->node);
|
INIT_LIST_HEAD(&info->node);
|
||||||
|
@@ -438,7 +438,7 @@ void *knav_dma_open_channel(struct device *dev, const char *name,
|
|||||||
|
|
||||||
chan_num = of_channel_match_helper(dev->of_node, name, &instance);
|
chan_num = of_channel_match_helper(dev->of_node, name, &instance);
|
||||||
if (chan_num < 0) {
|
if (chan_num < 0) {
|
||||||
dev_err(kdev->dev, "No DMA instace with name %s\n", name);
|
dev_err(kdev->dev, "No DMA instance with name %s\n", name);
|
||||||
return (void *)-EINVAL;
|
return (void *)-EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,7 +461,7 @@ void *knav_dma_open_channel(struct device *dev, const char *name,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found) {
|
if (!found) {
|
||||||
dev_err(kdev->dev, "No DMA instace with name %s\n", instance);
|
dev_err(kdev->dev, "No DMA instance with name %s\n", instance);
|
||||||
return (void *)-EINVAL;
|
return (void *)-EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -240,14 +240,14 @@ struct knav_pool {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct knav_queue_inst: qmss queue instace properties
|
* struct knav_queue_inst: qmss queue instance properties
|
||||||
* @descs: descriptor pointer
|
* @descs: descriptor pointer
|
||||||
* @desc_head, desc_tail, desc_count: descriptor counters
|
* @desc_head, desc_tail, desc_count: descriptor counters
|
||||||
* @acc: accumulator channel pointer
|
* @acc: accumulator channel pointer
|
||||||
* @kdev: qmss device pointer
|
* @kdev: qmss device pointer
|
||||||
* @range: range info
|
* @range: range info
|
||||||
* @qmgr: queue manager info
|
* @qmgr: queue manager info
|
||||||
* @id: queue instace id
|
* @id: queue instance id
|
||||||
* @irq_num: irq line number
|
* @irq_num: irq line number
|
||||||
* @notify_needed: notifier needed based on queue type
|
* @notify_needed: notifier needed based on queue type
|
||||||
* @num_notifiers: total notifiers
|
* @num_notifiers: total notifiers
|
||||||
@@ -274,7 +274,7 @@ struct knav_queue_inst {
|
|||||||
/**
|
/**
|
||||||
* struct knav_queue: qmss queue properties
|
* struct knav_queue: qmss queue properties
|
||||||
* @reg_push, reg_pop, reg_peek: push, pop queue registers
|
* @reg_push, reg_pop, reg_peek: push, pop queue registers
|
||||||
* @inst: qmss queue instace properties
|
* @inst: qmss queue instance properties
|
||||||
* @notifier_fn: notifier function
|
* @notifier_fn: notifier function
|
||||||
* @notifier_fn_arg: notifier function argument
|
* @notifier_fn_arg: notifier function argument
|
||||||
* @notifier_enabled: notier enabled for a give queue
|
* @notifier_enabled: notier enabled for a give queue
|
||||||
|
Reference in New Issue
Block a user