firmware: ti_sci: Parse all resource ranges even if some is not available
Do not fail if any of the requested subtypes are not availabe, but set the number of resources to 0 and continue parsing the resource ranges. Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Tero Kristo <t-kristo@ti.com> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
This commit is contained in:
parent
1e407f337f
commit
fa42da11b2
|
@ -3180,6 +3180,7 @@ devm_ti_sci_get_of_resource(const struct ti_sci_handle *handle,
|
||||||
struct device *dev, u32 dev_id, char *of_prop)
|
struct device *dev, u32 dev_id, char *of_prop)
|
||||||
{
|
{
|
||||||
struct ti_sci_resource *res;
|
struct ti_sci_resource *res;
|
||||||
|
bool valid_set = false;
|
||||||
u32 resource_subtype;
|
u32 resource_subtype;
|
||||||
int i, ret;
|
int i, ret;
|
||||||
|
|
||||||
|
@ -3210,15 +3211,18 @@ devm_ti_sci_get_of_resource(const struct ti_sci_handle *handle,
|
||||||
&res->desc[i].start,
|
&res->desc[i].start,
|
||||||
&res->desc[i].num);
|
&res->desc[i].num);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(dev, "dev = %d subtype %d not allocated for this host\n",
|
dev_dbg(dev, "dev = %d subtype %d not allocated for this host\n",
|
||||||
dev_id, resource_subtype);
|
dev_id, resource_subtype);
|
||||||
return ERR_PTR(ret);
|
res->desc[i].start = 0;
|
||||||
|
res->desc[i].num = 0;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_dbg(dev, "dev = %d, subtype = %d, start = %d, num = %d\n",
|
dev_dbg(dev, "dev = %d, subtype = %d, start = %d, num = %d\n",
|
||||||
dev_id, resource_subtype, res->desc[i].start,
|
dev_id, resource_subtype, res->desc[i].start,
|
||||||
res->desc[i].num);
|
res->desc[i].num);
|
||||||
|
|
||||||
|
valid_set = true;
|
||||||
res->desc[i].res_map =
|
res->desc[i].res_map =
|
||||||
devm_kzalloc(dev, BITS_TO_LONGS(res->desc[i].num) *
|
devm_kzalloc(dev, BITS_TO_LONGS(res->desc[i].num) *
|
||||||
sizeof(*res->desc[i].res_map), GFP_KERNEL);
|
sizeof(*res->desc[i].res_map), GFP_KERNEL);
|
||||||
|
@ -3227,7 +3231,10 @@ devm_ti_sci_get_of_resource(const struct ti_sci_handle *handle,
|
||||||
}
|
}
|
||||||
raw_spin_lock_init(&res->lock);
|
raw_spin_lock_init(&res->lock);
|
||||||
|
|
||||||
return res;
|
if (valid_set)
|
||||||
|
return res;
|
||||||
|
|
||||||
|
return ERR_PTR(-EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tisci_reboot_handler(struct notifier_block *nb, unsigned long mode,
|
static int tisci_reboot_handler(struct notifier_block *nb, unsigned long mode,
|
||||||
|
|
Loading…
Reference in New Issue