[V2,1/4] ASoC: amd: ps: implement api to retrieve acp device config

Message ID 20221221112611.1373278-1-Vijendar.Mukunda@amd.com
State New
Headers
Series [V2,1/4] ASoC: amd: ps: implement api to retrieve acp device config |

Commit Message

Mukunda,Vijendar Dec. 21, 2022, 11:26 a.m. UTC
  Implement API to retrieve acp device config and calculate platform
device count and dev mask for platform device node creation.

Currently for DMIC configuration, mask and dev count are calculated.
Same api will be used to extend support for different ACP device
configurations.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
v1->v2:
    - used ACP_DMIC_DEV macro instead of hard coded value
    - changed is_dmic_dev variable initialization
    - changed debug level

 sound/soc/amd/ps/acp63.h  |  7 +++++++
 sound/soc/amd/ps/pci-ps.c | 37 +++++++++++++++++++++++++++++++++++--
 2 files changed, 42 insertions(+), 2 deletions(-)
  

Comments

Mukunda,Vijendar Dec. 21, 2022, 12:30 p.m. UTC | #1
On 21/12/22 16:56, Vijendar Mukunda wrote:
> Implement API to retrieve acp device config and calculate platform
> device count and dev mask for platform device node creation.
>
> Currently for DMIC configuration, mask and dev count are calculated.
> Same api will be used to extend support for different ACP device
> configurations.

By mistake, patch series was sent as V2 instead of V1.
>
> Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
> ---
> v1->v2:
>     - used ACP_DMIC_DEV macro instead of hard coded value
>     - changed is_dmic_dev variable initialization
>     - changed debug level
>
>  sound/soc/amd/ps/acp63.h  |  7 +++++++
>  sound/soc/amd/ps/pci-ps.c | 37 +++++++++++++++++++++++++++++++++++--
>  2 files changed, 42 insertions(+), 2 deletions(-)
>
> diff --git a/sound/soc/amd/ps/acp63.h b/sound/soc/amd/ps/acp63.h
> index 5e7f9c1c1b0e..b015e845e5fa 100644
> --- a/sound/soc/amd/ps/acp63.h
> +++ b/sound/soc/amd/ps/acp63.h
> @@ -54,6 +54,11 @@
>  /* time in ms for runtime suspend delay */
>  #define ACP_SUSPEND_DELAY_MS	2000
>  
> +#define ACP63_DMIC_ADDR		2
> +#define ACP63_PDM_MODE_DEVS		3
> +#define ACP63_PDM_DEV_MASK		1
> +#define ACP_DMIC_DEV	2
> +
>  enum acp_config {
>  	ACP_CONFIG_0 = 0,
>  	ACP_CONFIG_1,
> @@ -102,4 +107,6 @@ struct acp63_dev_data {
>  	struct resource *res;
>  	bool acp63_audio_mode;
>  	struct platform_device *pdev[ACP63_DEVS];
> +	u16 pdev_mask;
> +	u16 pdev_count;
>  };
> diff --git a/sound/soc/amd/ps/pci-ps.c b/sound/soc/amd/ps/pci-ps.c
> index 489f01a20699..9066a625e501 100644
> --- a/sound/soc/amd/ps/pci-ps.c
> +++ b/sound/soc/amd/ps/pci-ps.c
> @@ -132,6 +132,38 @@ static irqreturn_t acp63_irq_handler(int irq, void *dev_id)
>  	return IRQ_NONE;
>  }
>  
> +void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
> +{
> +	struct acpi_device *dmic_dev;
> +	const union acpi_object *obj;
> +	bool is_dmic_dev = false;
> +
> +	dmic_dev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP63_DMIC_ADDR, 0);
> +	if (dmic_dev) {
> +		if (!acpi_dev_get_property(dmic_dev, "acp-audio-device-type",
> +					   ACPI_TYPE_INTEGER, &obj) &&
> +					   obj->integer.value == ACP_DMIC_DEV)
> +			is_dmic_dev = true;
> +	}
> +
> +	switch (config) {
> +	case ACP_CONFIG_0:
> +	case ACP_CONFIG_1:
> +	case ACP_CONFIG_2:
> +	case ACP_CONFIG_3:
> +	case ACP_CONFIG_9:
> +	case ACP_CONFIG_15:
> +		dev_dbg(&pci->dev, "Audio Mode %d\n", config);
> +		break;
> +	default:
> +		if (is_dmic_dev) {
> +			acp_data->pdev_mask = ACP63_PDM_DEV_MASK;
> +			acp_data->pdev_count = ACP63_PDM_MODE_DEVS;
> +		}
> +		break;
> +	}
> +}
> +
>  static int snd_acp63_probe(struct pci_dev *pci,
>  			   const struct pci_device_id *pci_id)
>  {
> @@ -183,6 +215,7 @@ static int snd_acp63_probe(struct pci_dev *pci,
>  	if (ret)
>  		goto release_regions;
>  	val = acp63_readl(adata->acp63_base + ACP_PIN_CONFIG);
> +	get_acp63_device_config(val, pci, adata);
>  	switch (val) {
>  	case ACP_CONFIG_0:
>  	case ACP_CONFIG_1:
> @@ -195,14 +228,14 @@ static int snd_acp63_probe(struct pci_dev *pci,
>  	default:
>  
>  		/* Checking DMIC hardware*/
> -		adev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), 0x02, 0);
> +		adev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP_DMIC_ADDR, 0);
>  
>  		if (!adev)
>  			break;
>  
>  		if (!acpi_dev_get_property(adev, "acp-audio-device-type",
>  					   ACPI_TYPE_INTEGER, &obj) &&
> -					   obj->integer.value == 2) {
> +					   obj->integer.value == ACP_DMIC_DEV) {
>  			adata->res = devm_kzalloc(&pci->dev, sizeof(struct resource), GFP_KERNEL);
>  			if (!adata->res) {
>  				ret = -ENOMEM;
  
kernel test robot Dec. 21, 2022, 4:40 p.m. UTC | #2
Hi Vijendar,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on broonie-sound/for-next]
[also build test WARNING on linus/master next-20221220]
[cannot apply to v6.1]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Vijendar-Mukunda/ASoC-amd-ps-implement-api-to-retrieve-acp-device-config/20221221-192703
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
patch link:    https://lore.kernel.org/r/20221221112611.1373278-1-Vijendar.Mukunda%40amd.com
patch subject: [PATCH V2 1/4] ASoC: amd: ps: implement api to retrieve acp device config
config: x86_64-randconfig-a015-20221219
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/a47d6a455ff7716688a8c7efaae89f07cebf118d
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Vijendar-Mukunda/ASoC-amd-ps-implement-api-to-retrieve-acp-device-config/20221221-192703
        git checkout a47d6a455ff7716688a8c7efaae89f07cebf118d
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash sound/soc/amd/ps/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> sound/soc/amd/ps/pci-ps.c:135:6: warning: no previous prototype for function 'get_acp63_device_config' [-Wmissing-prototypes]
   void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
        ^
   sound/soc/amd/ps/pci-ps.c:135:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
   ^
   static 
   sound/soc/amd/ps/pci-ps.c:231:60: error: use of undeclared identifier 'ACP_DMIC_ADDR'
                   adev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP_DMIC_ADDR, 0);
                                                                            ^
   1 warning and 1 error generated.


vim +/get_acp63_device_config +135 sound/soc/amd/ps/pci-ps.c

   134	
 > 135	void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
   136	{
   137		struct acpi_device *dmic_dev;
   138		const union acpi_object *obj;
   139		bool is_dmic_dev = false;
   140	
   141		dmic_dev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP63_DMIC_ADDR, 0);
   142		if (dmic_dev) {
   143			if (!acpi_dev_get_property(dmic_dev, "acp-audio-device-type",
   144						   ACPI_TYPE_INTEGER, &obj) &&
   145						   obj->integer.value == ACP_DMIC_DEV)
   146				is_dmic_dev = true;
   147		}
   148	
   149		switch (config) {
   150		case ACP_CONFIG_0:
   151		case ACP_CONFIG_1:
   152		case ACP_CONFIG_2:
   153		case ACP_CONFIG_3:
   154		case ACP_CONFIG_9:
   155		case ACP_CONFIG_15:
   156			dev_dbg(&pci->dev, "Audio Mode %d\n", config);
   157			break;
   158		default:
   159			if (is_dmic_dev) {
   160				acp_data->pdev_mask = ACP63_PDM_DEV_MASK;
   161				acp_data->pdev_count = ACP63_PDM_MODE_DEVS;
   162			}
   163			break;
   164		}
   165	}
   166
  
Mukunda,Vijendar Dec. 21, 2022, 4:55 p.m. UTC | #3
On 21/12/22 22:10, kernel test robot wrote:
> Hi Vijendar,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on broonie-sound/for-next]
> [also build test WARNING on linus/master next-20221220]
> [cannot apply to v6.1]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit-scm.com%2Fdocs%2Fgit-format-patch%23_base_tree_information&data=05%7C01%7CVijendar.Mukunda%40amd.com%7Cf724439b0cd34a8d51da08dae3722149%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072376572895135%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=SgBlnpPN56oK62ky0JU8azh3nuEXn6tMz3xZbOejY5Q%3D&reserved=0]
>
> url:    https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fintel-lab-lkp%2Flinux%2Fcommits%2FVijendar-Mukunda%2FASoC-amd-ps-implement-api-to-retrieve-acp-device-config%2F20221221-192703&data=05%7C01%7CVijendar.Mukunda%40amd.com%7Cf724439b0cd34a8d51da08dae3722149%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072376572895135%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=UGJ84JSzprAvXAfmo2OXhrWT3CBFgJ12CzIArUgBEfM%3D&reserved=0
> base:   https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fbroonie%2Fsound.git&data=05%7C01%7CVijendar.Mukunda%40amd.com%7Cf724439b0cd34a8d51da08dae3722149%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072376573051377%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=4LZbNCMAz%2BCGrAgM%2FsBDxgRx7ose4EyopgsQkM4W8NU%3D&reserved=0 for-next
> patch link:    https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fr%2F20221221112611.1373278-1-Vijendar.Mukunda%2540amd.com&data=05%7C01%7CVijendar.Mukunda%40amd.com%7Cf724439b0cd34a8d51da08dae3722149%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072376573051377%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=o%2B9ZhXvww%2FKDjm2sfVskOK0pNibVP%2BMO4sJnv6%2FAwRI%3D&reserved=0
> patch subject: [PATCH V2 1/4] ASoC: amd: ps: implement api to retrieve acp device config
> config: x86_64-randconfig-a015-20221219
> compiler: clang version 14.0.6 (https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fllvm%2Fllvm-project&data=05%7C01%7CVijendar.Mukunda%40amd.com%7Cf724439b0cd34a8d51da08dae3722149%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072376573051377%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=4xoUOqgeepbVj6xehXIOmWaRcR6FhKKmlHnxO0l1HBU%3D&reserved=0 f28c006a5895fc0e329fe15fead81e37457cb1d1)
> reproduce (this is a W=1 build):
>         wget https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintel%2Flkp-tests%2Fmaster%2Fsbin%2Fmake.cross&data=05%7C01%7CVijendar.Mukunda%40amd.com%7Cf724439b0cd34a8d51da08dae3722149%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072376573051377%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=65DwVdNjRWKIxNSxqtpFyF0%2FFldAeix1%2FTnZGYSj6L4%3D&reserved=0 -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fintel-lab-lkp%2Flinux%2Fcommit%2Fa47d6a455ff7716688a8c7efaae89f07cebf118d&data=05%7C01%7CVijendar.Mukunda%40amd.com%7Cf724439b0cd34a8d51da08dae3722149%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072376573051377%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=U9Ko4HNfl%2FfQTaPrCPVH7R%2FG5MIXydh5xtoNbyDNX8Q%3D&reserved=0
>         git remote add linux-review https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fintel-lab-lkp%2Flinux&data=05%7C01%7CVijendar.Mukunda%40amd.com%7Cf724439b0cd34a8d51da08dae3722149%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072376573051377%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=pEWhdrTN6tbqt22WvlgMAlVJKo43ont0s9fIuFaav0M%3D&reserved=0
>         git fetch --no-tags linux-review Vijendar-Mukunda/ASoC-amd-ps-implement-api-to-retrieve-acp-device-config/20221221-192703
>         git checkout a47d6a455ff7716688a8c7efaae89f07cebf118d
>         # save the config file
>         mkdir build_dir && cp config build_dir/.config
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash sound/soc/amd/ps/
>
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@intel.com>
>
> All warnings (new ones prefixed by >>):
>
>>> sound/soc/amd/ps/pci-ps.c:135:6: warning: no previous prototype for function 'get_acp63_device_config' [-Wmissing-prototypes]
>    void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
>         ^
>    sound/soc/amd/ps/pci-ps.c:135:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
>    ^
>    static 
>    sound/soc/amd/ps/pci-ps.c:231:60: error: use of undeclared identifier 'ACP_DMIC_ADDR'
>                    adev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP_DMIC_ADDR, 0);
>                                                                             ^
>    1 warning and 1 error generated.
>
> will fix it and respin the patch series.

> vim +/get_acp63_device_config +135 sound/soc/amd/ps/pci-ps.c
>
>    134	
>  > 135	void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
>    136	{
>    137		struct acpi_device *dmic_dev;
>    138		const union acpi_object *obj;
>    139		bool is_dmic_dev = false;
>    140	
>    141		dmic_dev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP63_DMIC_ADDR, 0);
>    142		if (dmic_dev) {
>    143			if (!acpi_dev_get_property(dmic_dev, "acp-audio-device-type",
>    144						   ACPI_TYPE_INTEGER, &obj) &&
>    145						   obj->integer.value == ACP_DMIC_DEV)
>    146				is_dmic_dev = true;
>    147		}
>    148	
>    149		switch (config) {
>    150		case ACP_CONFIG_0:
>    151		case ACP_CONFIG_1:
>    152		case ACP_CONFIG_2:
>    153		case ACP_CONFIG_3:
>    154		case ACP_CONFIG_9:
>    155		case ACP_CONFIG_15:
>    156			dev_dbg(&pci->dev, "Audio Mode %d\n", config);
>    157			break;
>    158		default:
>    159			if (is_dmic_dev) {
>    160				acp_data->pdev_mask = ACP63_PDM_DEV_MASK;
>    161				acp_data->pdev_count = ACP63_PDM_MODE_DEVS;
>    162			}
>    163			break;
>    164		}
>    165	}
>    166	
>
  
kernel test robot Dec. 21, 2022, 5:40 p.m. UTC | #4
Hi Vijendar,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on broonie-sound/for-next]
[also build test WARNING on linus/master next-20221220]
[cannot apply to v6.1]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Vijendar-Mukunda/ASoC-amd-ps-implement-api-to-retrieve-acp-device-config/20221221-192703
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
patch link:    https://lore.kernel.org/r/20221221112611.1373278-1-Vijendar.Mukunda%40amd.com
patch subject: [PATCH V2 1/4] ASoC: amd: ps: implement api to retrieve acp device config
config: i386-allyesconfig
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/a47d6a455ff7716688a8c7efaae89f07cebf118d
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Vijendar-Mukunda/ASoC-amd-ps-implement-api-to-retrieve-acp-device-config/20221221-192703
        git checkout a47d6a455ff7716688a8c7efaae89f07cebf118d
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=i386 olddefconfig
        make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash sound/soc/amd/ps/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> sound/soc/amd/ps/pci-ps.c:135:6: warning: no previous prototype for 'get_acp63_device_config' [-Wmissing-prototypes]
     135 | void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
         |      ^~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/amd/ps/pci-ps.c: In function 'snd_acp63_probe':
   sound/soc/amd/ps/pci-ps.c:231:74: error: 'ACP_DMIC_ADDR' undeclared (first use in this function); did you mean 'ACP63_DMIC_ADDR'?
     231 |                 adev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP_DMIC_ADDR, 0);
         |                                                                          ^~~~~~~~~~~~~
         |                                                                          ACP63_DMIC_ADDR
   sound/soc/amd/ps/pci-ps.c:231:74: note: each undeclared identifier is reported only once for each function it appears in


vim +/get_acp63_device_config +135 sound/soc/amd/ps/pci-ps.c

   134	
 > 135	void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
   136	{
   137		struct acpi_device *dmic_dev;
   138		const union acpi_object *obj;
   139		bool is_dmic_dev = false;
   140	
   141		dmic_dev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP63_DMIC_ADDR, 0);
   142		if (dmic_dev) {
   143			if (!acpi_dev_get_property(dmic_dev, "acp-audio-device-type",
   144						   ACPI_TYPE_INTEGER, &obj) &&
   145						   obj->integer.value == ACP_DMIC_DEV)
   146				is_dmic_dev = true;
   147		}
   148	
   149		switch (config) {
   150		case ACP_CONFIG_0:
   151		case ACP_CONFIG_1:
   152		case ACP_CONFIG_2:
   153		case ACP_CONFIG_3:
   154		case ACP_CONFIG_9:
   155		case ACP_CONFIG_15:
   156			dev_dbg(&pci->dev, "Audio Mode %d\n", config);
   157			break;
   158		default:
   159			if (is_dmic_dev) {
   160				acp_data->pdev_mask = ACP63_PDM_DEV_MASK;
   161				acp_data->pdev_count = ACP63_PDM_MODE_DEVS;
   162			}
   163			break;
   164		}
   165	}
   166
  
Mukunda,Vijendar Dec. 21, 2022, 7:45 p.m. UTC | #5
On 21/12/22 23:10, kernel test robot wrote:
> Hi Vijendar,
>
> Thank you for the patch! Perhaps something to improve:
Issue is already fixed and updated patch series as V2 version.
Because of version mismatch , test robot picked older patch series.

--
Vijendar
> [auto build test WARNING on broonie-sound/for-next]
> [also build test WARNING on linus/master next-20221220]
> [cannot apply to v6.1]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit-scm.com%2Fdocs%2Fgit-format-patch%23_base_tree_information&data=05%7C01%7CVijendar.Mukunda%40amd.com%7C77e7d774bd4b4dd1165308dae37aa5a1%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072413166143017%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=pREy1cj%2FssW267IS2cjwj1HM%2Fz%2FtFwMuFFAPsyEojso%3D&reserved=0]
>
> url:    https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fintel-lab-lkp%2Flinux%2Fcommits%2FVijendar-Mukunda%2FASoC-amd-ps-implement-api-to-retrieve-acp-device-config%2F20221221-192703&data=05%7C01%7CVijendar.Mukunda%40amd.com%7C77e7d774bd4b4dd1165308dae37aa5a1%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072413166143017%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=FsiiH4axp%2FR%2F2SoClKiyisUtDb3kR18d%2BnsgjYhjUiA%3D&reserved=0
> base:   https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fbroonie%2Fsound.git&data=05%7C01%7CVijendar.Mukunda%40amd.com%7C77e7d774bd4b4dd1165308dae37aa5a1%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072413166143017%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=mhxTUjZwUkE6qSX2E%2FFdeNkvcxeUUGGLa0TiawEKcUA%3D&reserved=0 for-next
> patch link:    https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fr%2F20221221112611.1373278-1-Vijendar.Mukunda%2540amd.com&data=05%7C01%7CVijendar.Mukunda%40amd.com%7C77e7d774bd4b4dd1165308dae37aa5a1%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072413166143017%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=ITTW3FXkEw0X7GdiqzG1dvdrS4VcemqldLWkFJah%2FU8%3D&reserved=0
> patch subject: [PATCH V2 1/4] ASoC: amd: ps: implement api to retrieve acp device config
> config: i386-allyesconfig
> compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
> reproduce (this is a W=1 build):
>         # https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fintel-lab-lkp%2Flinux%2Fcommit%2Fa47d6a455ff7716688a8c7efaae89f07cebf118d&data=05%7C01%7CVijendar.Mukunda%40amd.com%7C77e7d774bd4b4dd1165308dae37aa5a1%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072413166143017%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=WP%2FmbWI4Ry4pbUBfh6lx%2B4PxXz1TpjaXf6YIx7J71Nk%3D&reserved=0
>         git remote add linux-review https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fintel-lab-lkp%2Flinux&data=05%7C01%7CVijendar.Mukunda%40amd.com%7C77e7d774bd4b4dd1165308dae37aa5a1%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638072413166143017%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=koa4GqupLUfcvkCsQ2MD%2FUNkkF7vhYoBXMYzKg8k%2Bus%3D&reserved=0
>         git fetch --no-tags linux-review Vijendar-Mukunda/ASoC-amd-ps-implement-api-to-retrieve-acp-device-config/20221221-192703
>         git checkout a47d6a455ff7716688a8c7efaae89f07cebf118d
>         # save the config file
>         mkdir build_dir && cp config build_dir/.config
>         make W=1 O=build_dir ARCH=i386 olddefconfig
>         make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash sound/soc/amd/ps/
>
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@intel.com>
>
> All warnings (new ones prefixed by >>):
>
>>> sound/soc/amd/ps/pci-ps.c:135:6: warning: no previous prototype for 'get_acp63_device_config' [-Wmissing-prototypes]
>      135 | void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
>          |      ^~~~~~~~~~~~~~~~~~~~~~~
>    sound/soc/amd/ps/pci-ps.c: In function 'snd_acp63_probe':
>    sound/soc/amd/ps/pci-ps.c:231:74: error: 'ACP_DMIC_ADDR' undeclared (first use in this function); did you mean 'ACP63_DMIC_ADDR'?
>      231 |                 adev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP_DMIC_ADDR, 0);
>          |                                                                          ^~~~~~~~~~~~~
>          |                                                                          ACP63_DMIC_ADDR
>    sound/soc/amd/ps/pci-ps.c:231:74: note: each undeclared identifier is reported only once for each function it appears in
>
>
> vim +/get_acp63_device_config +135 sound/soc/amd/ps/pci-ps.c
>
>    134	
>  > 135	void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
>    136	{
>    137		struct acpi_device *dmic_dev;
>    138		const union acpi_object *obj;
>    139		bool is_dmic_dev = false;
>    140	
>    141		dmic_dev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP63_DMIC_ADDR, 0);
>    142		if (dmic_dev) {
>    143			if (!acpi_dev_get_property(dmic_dev, "acp-audio-device-type",
>    144						   ACPI_TYPE_INTEGER, &obj) &&
>    145						   obj->integer.value == ACP_DMIC_DEV)
>    146				is_dmic_dev = true;
>    147		}
>    148	
>    149		switch (config) {
>    150		case ACP_CONFIG_0:
>    151		case ACP_CONFIG_1:
>    152		case ACP_CONFIG_2:
>    153		case ACP_CONFIG_3:
>    154		case ACP_CONFIG_9:
>    155		case ACP_CONFIG_15:
>    156			dev_dbg(&pci->dev, "Audio Mode %d\n", config);
>    157			break;
>    158		default:
>    159			if (is_dmic_dev) {
>    160				acp_data->pdev_mask = ACP63_PDM_DEV_MASK;
>    161				acp_data->pdev_count = ACP63_PDM_MODE_DEVS;
>    162			}
>    163			break;
>    164		}
>    165	}
>    166	
>
  

Patch

diff --git a/sound/soc/amd/ps/acp63.h b/sound/soc/amd/ps/acp63.h
index 5e7f9c1c1b0e..b015e845e5fa 100644
--- a/sound/soc/amd/ps/acp63.h
+++ b/sound/soc/amd/ps/acp63.h
@@ -54,6 +54,11 @@ 
 /* time in ms for runtime suspend delay */
 #define ACP_SUSPEND_DELAY_MS	2000
 
+#define ACP63_DMIC_ADDR		2
+#define ACP63_PDM_MODE_DEVS		3
+#define ACP63_PDM_DEV_MASK		1
+#define ACP_DMIC_DEV	2
+
 enum acp_config {
 	ACP_CONFIG_0 = 0,
 	ACP_CONFIG_1,
@@ -102,4 +107,6 @@  struct acp63_dev_data {
 	struct resource *res;
 	bool acp63_audio_mode;
 	struct platform_device *pdev[ACP63_DEVS];
+	u16 pdev_mask;
+	u16 pdev_count;
 };
diff --git a/sound/soc/amd/ps/pci-ps.c b/sound/soc/amd/ps/pci-ps.c
index 489f01a20699..9066a625e501 100644
--- a/sound/soc/amd/ps/pci-ps.c
+++ b/sound/soc/amd/ps/pci-ps.c
@@ -132,6 +132,38 @@  static irqreturn_t acp63_irq_handler(int irq, void *dev_id)
 	return IRQ_NONE;
 }
 
+void get_acp63_device_config(u32 config, struct pci_dev *pci, struct acp63_dev_data *acp_data)
+{
+	struct acpi_device *dmic_dev;
+	const union acpi_object *obj;
+	bool is_dmic_dev = false;
+
+	dmic_dev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP63_DMIC_ADDR, 0);
+	if (dmic_dev) {
+		if (!acpi_dev_get_property(dmic_dev, "acp-audio-device-type",
+					   ACPI_TYPE_INTEGER, &obj) &&
+					   obj->integer.value == ACP_DMIC_DEV)
+			is_dmic_dev = true;
+	}
+
+	switch (config) {
+	case ACP_CONFIG_0:
+	case ACP_CONFIG_1:
+	case ACP_CONFIG_2:
+	case ACP_CONFIG_3:
+	case ACP_CONFIG_9:
+	case ACP_CONFIG_15:
+		dev_dbg(&pci->dev, "Audio Mode %d\n", config);
+		break;
+	default:
+		if (is_dmic_dev) {
+			acp_data->pdev_mask = ACP63_PDM_DEV_MASK;
+			acp_data->pdev_count = ACP63_PDM_MODE_DEVS;
+		}
+		break;
+	}
+}
+
 static int snd_acp63_probe(struct pci_dev *pci,
 			   const struct pci_device_id *pci_id)
 {
@@ -183,6 +215,7 @@  static int snd_acp63_probe(struct pci_dev *pci,
 	if (ret)
 		goto release_regions;
 	val = acp63_readl(adata->acp63_base + ACP_PIN_CONFIG);
+	get_acp63_device_config(val, pci, adata);
 	switch (val) {
 	case ACP_CONFIG_0:
 	case ACP_CONFIG_1:
@@ -195,14 +228,14 @@  static int snd_acp63_probe(struct pci_dev *pci,
 	default:
 
 		/* Checking DMIC hardware*/
-		adev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), 0x02, 0);
+		adev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), ACP_DMIC_ADDR, 0);
 
 		if (!adev)
 			break;
 
 		if (!acpi_dev_get_property(adev, "acp-audio-device-type",
 					   ACPI_TYPE_INTEGER, &obj) &&
-					   obj->integer.value == 2) {
+					   obj->integer.value == ACP_DMIC_DEV) {
 			adata->res = devm_kzalloc(&pci->dev, sizeof(struct resource), GFP_KERNEL);
 			if (!adata->res) {
 				ret = -ENOMEM;