Re: [PATCH] soc: qcom: geni: shield ICC calls for ACPI boot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon 28 Dec 07:56 CST 2020, Shawn Guo wrote:

> Currently, GENI devices like i2c-qcom-geni fails to probe in ACPI boot,
> if interconnect support is enabled.  That's because interconnect driver
> only supports DT right now.  As interconnect is not necessarily required
> for basic function of GENI devices, let's shield those ICC calls to get
> GENI devices probe for ACPI boot.
> 
> Signed-off-by: Shawn Guo <shawn.guo@xxxxxxxxxx>
> ---
>  drivers/soc/qcom/qcom-geni-se.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-se.c
> index f42954e2c98e..9feb1d78a5df 100644
> --- a/drivers/soc/qcom/qcom-geni-se.c
> +++ b/drivers/soc/qcom/qcom-geni-se.c
> @@ -760,6 +760,9 @@ int geni_icc_get(struct geni_se *se, const char *icc_ddr)
>  	int i, err;
>  	const char *icc_names[] = {"qup-core", "qup-config", icc_ddr};
>  
> +	if (has_acpi_companion(se->dev))
> +		return 0;
> +
>  	for (i = 0; i < ARRAY_SIZE(se->icc_paths); i++) {
>  		if (!icc_names[i])
>  			continue;
> @@ -785,6 +788,9 @@ int geni_icc_set_bw(struct geni_se *se)
>  {
>  	int i, ret;
>  
> +	if (has_acpi_companion(se->dev))

Can't we simply rely on the fact that icc_set_bw(), icc_enable() and
icc_disable() all return successfully when passed a path of NULL?

That would reduce this patch to only modifying geni_icc_get(), which
presumably would be the place the modify once there is a mechanism to
acquire paths in ACPI (if that ends up look anything like the of-based
case).

Regards,
Bjorn

> +		return 0;
> +
>  	for (i = 0; i < ARRAY_SIZE(se->icc_paths); i++) {
>  		ret = icc_set_bw(se->icc_paths[i].path,
>  			se->icc_paths[i].avg_bw, se->icc_paths[i].avg_bw);
> @@ -803,6 +809,9 @@ void geni_icc_set_tag(struct geni_se *se, u32 tag)
>  {
>  	int i;
>  
> +	if (has_acpi_companion(se->dev))
> +		return;
> +
>  	for (i = 0; i < ARRAY_SIZE(se->icc_paths); i++)
>  		icc_set_tag(se->icc_paths[i].path, tag);
>  }
> @@ -813,6 +822,9 @@ int geni_icc_enable(struct geni_se *se)
>  {
>  	int i, ret;
>  
> +	if (has_acpi_companion(se->dev))
> +		return 0;
> +
>  	for (i = 0; i < ARRAY_SIZE(se->icc_paths); i++) {
>  		ret = icc_enable(se->icc_paths[i].path);
>  		if (ret) {
> @@ -830,6 +842,9 @@ int geni_icc_disable(struct geni_se *se)
>  {
>  	int i, ret;
>  
> +	if (has_acpi_companion(se->dev))
> +		return 0;
> +
>  	for (i = 0; i < ARRAY_SIZE(se->icc_paths); i++) {
>  		ret = icc_disable(se->icc_paths[i].path);
>  		if (ret) {
> -- 
> 2.17.1
> 



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux