|
@@ -1670,8 +1670,9 @@ fail:
|
|
|
}
|
|
|
|
|
|
static int __maybe_unused
|
|
|
-ti_sci_get_resource_range_static(u32 dev_id, u8 subtype, u16 *range_start,
|
|
|
- u16 *range_num)
|
|
|
+ti_sci_cmd_get_resource_range_static(const struct ti_sci_handle *handle,
|
|
|
+ u32 dev_id, u8 subtype,
|
|
|
+ u16 *range_start, u16 *range_num)
|
|
|
{
|
|
|
struct ti_sci_resource_static_data *data;
|
|
|
int i = 0;
|
|
@@ -1712,11 +1713,6 @@ static int ti_sci_cmd_get_resource_range(const struct ti_sci_handle *handle,
|
|
|
u32 dev_id, u8 subtype,
|
|
|
u16 *range_start, u16 *range_num)
|
|
|
{
|
|
|
- if (CONFIG_IS_ENABLED(TI_K3_RAW_RM))
|
|
|
- return ti_sci_get_resource_range_static(dev_id, subtype,
|
|
|
- range_start,
|
|
|
- range_num);
|
|
|
-
|
|
|
return ti_sci_get_resource_range(handle, dev_id, subtype,
|
|
|
TI_SCI_IRQ_SECONDARY_HOST_INVALID,
|
|
|
range_start, range_num);
|
|
@@ -1740,9 +1736,6 @@ int ti_sci_cmd_get_resource_range_from_shost(const struct ti_sci_handle *handle,
|
|
|
u32 dev_id, u8 subtype, u8 s_host,
|
|
|
u16 *range_start, u16 *range_num)
|
|
|
{
|
|
|
- if (CONFIG_IS_ENABLED(TI_K3_RAW_RM))
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
return ti_sci_get_resource_range(handle, dev_id, subtype, s_host,
|
|
|
range_start, range_num);
|
|
|
}
|
|
@@ -3052,6 +3045,58 @@ static int ti_sci_probe(struct udevice *dev)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * ti_sci_dm_probe() - Basic probe for DM to TIFS SCI
|
|
|
+ * @dev: corresponding system controller interface device
|
|
|
+ *
|
|
|
+ * Return: 0 if all goes good, else appropriate error message.
|
|
|
+ */
|
|
|
+static __maybe_unused int ti_sci_dm_probe(struct udevice *dev)
|
|
|
+{
|
|
|
+ struct ti_sci_rm_core_ops *rm_core_ops;
|
|
|
+ struct ti_sci_rm_udmap_ops *udmap_ops;
|
|
|
+ struct ti_sci_rm_ringacc_ops *rops;
|
|
|
+ struct ti_sci_rm_psil_ops *psilops;
|
|
|
+ struct ti_sci_ops *ops;
|
|
|
+ struct ti_sci_info *info;
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ debug("%s(dev=%p)\n", __func__, dev);
|
|
|
+
|
|
|
+ info = dev_get_priv(dev);
|
|
|
+ info->desc = (void *)dev_get_driver_data(dev);
|
|
|
+
|
|
|
+ ret = ti_sci_of_to_info(dev, info);
|
|
|
+ if (ret) {
|
|
|
+ dev_err(dev, "%s: Probe failed with error %d\n", __func__, ret);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ info->dev = dev;
|
|
|
+ info->seq = 0xA;
|
|
|
+
|
|
|
+ list_add_tail(&info->list, &ti_sci_list);
|
|
|
+
|
|
|
+ ops = &info->handle.ops;
|
|
|
+
|
|
|
+ rm_core_ops = &ops->rm_core_ops;
|
|
|
+ rm_core_ops->get_range = ti_sci_cmd_get_resource_range_static;
|
|
|
+
|
|
|
+ rops = &ops->rm_ring_ops;
|
|
|
+ rops->config = ti_sci_cmd_ring_config;
|
|
|
+
|
|
|
+ psilops = &ops->rm_psil_ops;
|
|
|
+ psilops->pair = ti_sci_cmd_rm_psil_pair;
|
|
|
+ psilops->unpair = ti_sci_cmd_rm_psil_unpair;
|
|
|
+
|
|
|
+ udmap_ops = &ops->rm_udmap_ops;
|
|
|
+ udmap_ops->tx_ch_cfg = ti_sci_cmd_rm_udmap_tx_ch_cfg;
|
|
|
+ udmap_ops->rx_ch_cfg = ti_sci_cmd_rm_udmap_rx_ch_cfg;
|
|
|
+ udmap_ops->rx_flow_cfg = ti_sci_cmd_rm_udmap_rx_flow_cfg;
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* ti_sci_get_free_resource() - Get a free resource from TISCI resource.
|
|
|
* @res: Pointer to the TISCI resource
|
|
@@ -3189,6 +3234,14 @@ static const struct ti_sci_desc ti_sci_pmmc_am654_desc = {
|
|
|
.max_msg_size = 60,
|
|
|
};
|
|
|
|
|
|
+/* Description for J721e DM to DMSC communication */
|
|
|
+static const struct ti_sci_desc ti_sci_dm_j721e_desc = {
|
|
|
+ .default_host_id = 3,
|
|
|
+ .max_rx_timeout_ms = 10000,
|
|
|
+ .max_msgs = 20,
|
|
|
+ .max_msg_size = 60,
|
|
|
+};
|
|
|
+
|
|
|
static const struct udevice_id ti_sci_ids[] = {
|
|
|
{
|
|
|
.compatible = "ti,k2g-sci",
|
|
@@ -3201,6 +3254,14 @@ static const struct udevice_id ti_sci_ids[] = {
|
|
|
{ /* Sentinel */ },
|
|
|
};
|
|
|
|
|
|
+static __maybe_unused const struct udevice_id ti_sci_dm_ids[] = {
|
|
|
+ {
|
|
|
+ .compatible = "ti,j721e-dm-sci",
|
|
|
+ .data = (ulong)&ti_sci_dm_j721e_desc
|
|
|
+ },
|
|
|
+ { /* Sentinel */ },
|
|
|
+};
|
|
|
+
|
|
|
U_BOOT_DRIVER(ti_sci) = {
|
|
|
.name = "ti_sci",
|
|
|
.id = UCLASS_FIRMWARE,
|
|
@@ -3208,3 +3269,13 @@ U_BOOT_DRIVER(ti_sci) = {
|
|
|
.probe = ti_sci_probe,
|
|
|
.priv_auto = sizeof(struct ti_sci_info),
|
|
|
};
|
|
|
+
|
|
|
+#if IS_ENABLED(CONFIG_K3_DM_FW)
|
|
|
+U_BOOT_DRIVER(ti_sci_dm) = {
|
|
|
+ .name = "ti_sci_dm",
|
|
|
+ .id = UCLASS_FIRMWARE,
|
|
|
+ .of_match = ti_sci_dm_ids,
|
|
|
+ .probe = ti_sci_dm_probe,
|
|
|
+ .priv_auto = sizeof(struct ti_sci_info),
|
|
|
+};
|
|
|
+#endif
|