On 7/16/2025 6:58 PM, Ling Xu wrote: > Currently the domain ids are added for each instance of domains, this is > totally not scalable approach. Clean this mess and create domain ids for > only domains not its instances. > > Co-developed-by: Srinivas Kandagatla <srinivas.kandaga...@linaro.org> > Signed-off-by: Srinivas Kandagatla <srinivas.kandaga...@linaro.org> > Signed-off-by: Ling Xu <quic_l...@quicinc.com> > --- > drivers/misc/fastrpc.c | 36 ++++++++++++++++++++---------------- > 1 file changed, 20 insertions(+), 16 deletions(-) > > diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c > index 495ac47e7f90..85b6eb16b616 100644 > --- a/drivers/misc/fastrpc.c > +++ b/drivers/misc/fastrpc.c > @@ -27,8 +27,6 @@ > #define MDSP_DOMAIN_ID (1) > #define SDSP_DOMAIN_ID (2) > #define CDSP_DOMAIN_ID (3) > -#define CDSP1_DOMAIN_ID (4) > -#define FASTRPC_DEV_MAX 5 /* adsp, mdsp, slpi, cdsp, cdsp1 */ > #define FASTRPC_MAX_SESSIONS 14 > #define FASTRPC_MAX_VMIDS 16 > #define FASTRPC_ALIGN 128 > @@ -106,8 +104,6 @@ > > #define miscdev_to_fdevice(d) container_of(d, struct fastrpc_device, miscdev) > > -static const char *domains[FASTRPC_DEV_MAX] = { "adsp", "mdsp", > - "sdsp", "cdsp", "cdsp1" }; > struct fastrpc_phy_page { > u64 addr; /* physical address */ > u64 size; /* size of contiguous region */ > @@ -2243,6 +2239,20 @@ static int fastrpc_device_register(struct device *dev, > struct fastrpc_channel_ct > return err; > } > > +static int fastrpc_get_domain_id(const char *domain) > +{ > + if (!strncmp(domain, "adsp", 4)) > + return ADSP_DOMAIN_ID; > + else if (!strncmp(domain, "cdsp", 4)) > + return CDSP_DOMAIN_ID; > + else if (!strncmp(domain, "mdsp", 4)) > + return MDSP_DOMAIN_ID; > + else if (!strncmp(domain, "sdsp", 4)) > + return SDSP_DOMAIN_ID; > + > + return -EINVAL; > +} > + > static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev) > { > struct device *rdev = &rpdev->dev; > @@ -2260,15 +2270,10 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device > *rpdev) > return err; > } > > - for (i = 0; i < FASTRPC_DEV_MAX; i++) { > - if (!strcmp(domains[i], domain)) { > - domain_id = i; > - break; > - } > - } > + domain_id = fastrpc_get_domain_id(domain); > > if (domain_id < 0) { > - dev_info(rdev, "FastRPC Invalid Domain ID %d\n", domain_id); > + dev_info(rdev, "FastRPC Domain %s not supported\n", domain); > return -EINVAL; > } > > @@ -2318,21 +2323,20 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device > *rpdev) > case ADSP_DOMAIN_ID: > case MDSP_DOMAIN_ID: > case SDSP_DOMAIN_ID: > - /* Unsigned PD offloading is only supported on CDSP and CDSP1 */ > + /* Unsigned PD offloading is only supported on CDSP */ > data->unsigned_support = false; > - err = fastrpc_device_register(rdev, data, secure_dsp, > domains[domain_id]); > + err = fastrpc_device_register(rdev, data, secure_dsp, domain); > if (err) > goto err_free_data; > break; > case CDSP_DOMAIN_ID: > - case CDSP1_DOMAIN_ID: > data->unsigned_support = true; > /* Create both device nodes so that we can allow both Signed > and Unsigned PD */ > - err = fastrpc_device_register(rdev, data, true, > domains[domain_id]); > + err = fastrpc_device_register(rdev, data, true, domain); > if (err) > goto err_free_data; > > - err = fastrpc_device_register(rdev, data, false, > domains[domain_id]); > + err = fastrpc_device_register(rdev, data, false, domain); > if (err) > goto err_deregister_fdev; > break; Reviewed-by: Ekansh Gupta <ekansh.gu...@oss.qualcomm.com>