Commit 0e81158b authored by Vignesh Raghavendra's avatar Vignesh Raghavendra Committed by Lokesh Vutla
Browse files

firmware: ti_sci: Implement GET_RANGE with static data



In case of R5 SPL, GET_RANGE API service is not available (as DM
services are not yet up), therefore service such calls locally using
per SoC static data.
Signed-off-by: default avatarVignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Lokesh Vutla's avatarLokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210607141753.28796-3-vigneshr@ti.com
parent 5d80f1be
......@@ -23,6 +23,7 @@
#include <linux/soc/ti/ti_sci_protocol.h>
#include "ti_sci.h"
#include "ti_sci_static_data.h"
/* List of all TI SCI devices active in system */
static LIST_HEAD(ti_sci_list);
......@@ -1668,6 +1669,33 @@ fail:
return ret;
}
static int __maybe_unused
ti_sci_get_resource_range_static(u32 dev_id, u8 subtype, u16 *range_start,
u16 *range_num)
{
struct ti_sci_resource_static_data *data;
int i = 0;
while (1) {
data = &rm_static_data[i];
if (!data->dev_id)
return -EINVAL;
if (data->dev_id != dev_id || data->subtype != subtype) {
i++;
continue;
}
*range_start = data->range_start;
*range_num = data->range_num;
return 0;
}
return -EINVAL;
}
/**
* ti_sci_cmd_get_resource_range - Get a range of resources assigned to host
* that is same as ti sci interface host.
......@@ -1684,6 +1712,11 @@ 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);
......@@ -1707,6 +1740,9 @@ 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);
}
......
/* SPDX-License-Identifier: BSD-3-Clause */
/*
* Copyright (C) 2021 Texas Instruments Incorporated - http://www.ti.com/
*
*/
#ifndef __TI_SCI_STATIC_DATA_H
#define __TI_SCI_STATIC_DATA_H
struct ti_sci_resource_static_data {
u32 dev_id;
u16 range_start;
u16 range_num;
u8 subtype;
};
#if IS_ENABLED(CONFIG_K3_DM_FW)
#if IS_ENABLED(CONFIG_TARGET_J721E_R5_EVM)
static struct ti_sci_resource_static_data rm_static_data[] = {
/* Free rings */
{
.dev_id = 235,
.subtype = 1,
.range_start = 124,
.range_num = 32,
},
/* TX channels */
{
.dev_id = 236,
.subtype = 13,
.range_start = 6,
.range_num = 2,
},
/* RX channels */
{
.dev_id = 236,
.subtype = 10,
.range_start = 6,
.range_num = 2,
},
/* RX Free flows */
{
.dev_id = 236,
.subtype = 0,
.range_start = 60,
.range_num = 8,
},
{ },
};
#endif /* CONFIG_TARGET_J721E_R5_EVM */
#if IS_ENABLED(CONFIG_TARGET_J7200_R5_EVM)
static struct ti_sci_resource_static_data rm_static_data[] = {
/* Free rings */
{
.dev_id = 235,
.subtype = 1,
.range_start = 144,
.range_num = 32,
},
/* TX channels */
{
.dev_id = 236,
.subtype = 13,
.range_start = 7,
.range_num = 2,
},
/* RX channels */
{
.dev_id = 236,
.subtype = 10,
.range_start = 7,
.range_num = 2,
},
/* RX Free flows */
{
.dev_id = 236,
.subtype = 0,
.range_start = 60,
.range_num = 8,
},
{ },
};
#endif /* CONFIG_TARGET_J7200_R5_EVM */
#else
static struct ti_sci_resource_static_data rm_static_data[] = {
{ },
};
#endif /* CONFIG_K3_DM_FW */
#endif /* __TI_SCI_STATIC_DATA_H */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment