All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Raphael-Xu <13691752556@139.com>, broonie@kernel.org
Cc: alsa-devel@alsa-project.org, kbuild-all@lists.01.org,
	llvm@lists.linux.dev, shenghao-ding@ti.com, navada@ti.com,
	raphael-xu@ti.com, Raphael-Xu <13691752556@139.com>
Subject: Re: [PATCH v5 4/4] update tas27xx.c to support either TAS2764 or TAS2780
Date: Thu, 31 Mar 2022 02:36:18 +0800	[thread overview]
Message-ID: <202203310255.mwJuw0DH-lkp@intel.com> (raw)
In-Reply-To: <20220330144526.498-4-13691752556@139.com>

Hi Raphael-Xu,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on broonie-sound/for-next]
[also build test ERROR on v5.17 next-20220330]
[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]

url:    https://github.com/intel-lab-lkp/linux/commits/Raphael-Xu/rename-tas2764-to-tas27xx/20220330-224947
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
config: arm-randconfig-r012-20220330 (https://download.01.org/0day-ci/archive/20220331/202203310255.mwJuw0DH-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0f6d9501cf49ce02937099350d08f20c4af86f3d)
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
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/intel-lab-lkp/linux/commit/5e87128eec39d187eaf11069178b39d935600c2e
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Raphael-Xu/rename-tas2764-to-tas27xx/20220330-224947
        git checkout 5e87128eec39d187eaf11069178b39d935600c2e
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash sound/soc/codecs/

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

All errors (new ones prefixed by >>):

>> sound/soc/codecs/tas27xx.c:624:4: error: field designator 'symmetric_rates' does not refer to any field in type 'struct snd_soc_dai_driver'; did you mean 'symmetric_rate'?
                   .symmetric_rates = 1,
                    ^~~~~~~~~~~~~~~
                    symmetric_rate
   include/sound/soc-dai.h:411:15: note: 'symmetric_rate' declared here
           unsigned int symmetric_rate:1;
                        ^
>> sound/soc/codecs/tas27xx.c:819:3: error: invalid application of 'sizeof' to an incomplete type 'struct snd_soc_dai_driver[]'
                   ARRAY_SIZE(tas27xx_dai_driver));
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:55:32: note: expanded from macro 'ARRAY_SIZE'
   #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
                                  ^~~~~
   2 errors generated.


vim +624 sound/soc/codecs/tas27xx.c

   598	
   599	#define TAS27XX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
   600				 SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
   601	
   602	#define TAS27XX_RATES (SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
   603			       SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_88200)
   604	
   605	static struct snd_soc_dai_driver tas27xx_dai_driver[] = {
   606		{
   607			.name = "tas27xx ASI1",
   608			.id = 0,
   609			.playback = {
   610				.stream_name    = "ASI1 Playback",
   611				.channels_min   = 2,
   612				.channels_max   = 2,
   613				.rates      = TAS27XX_RATES,
   614				.formats    = TAS27XX_FORMATS,
   615			},
   616			.capture = {
   617				.stream_name    = "ASI1 Capture",
   618				.channels_min   = 1,
   619				.channels_max   = 2,
   620				.rates = TAS27XX_RATES,
   621				.formats = TAS27XX_FORMATS,
   622			},
   623			.ops = &tas27xx_dai_ops,
 > 624			.symmetric_rates = 1,
   625		},
   626	};
   627	
   628	static int tas27xx_codec_probe(struct snd_soc_component *component)
   629	{
   630		struct tas27xx_priv *tas27xx = 
   631			snd_soc_component_get_drvdata(component);
   632		int ret = 0;
   633	
   634		tas27xx->component = component;
   635	
   636		if (tas27xx->sdz_gpio)
   637			gpiod_set_value_cansleep(tas27xx->sdz_gpio, 1);
   638	
   639		tas27xx_reset(tas27xx);
   640	
   641		ret = snd_soc_component_update_bits(component, TAS27XX_TDM_CFG5,
   642						    TAS27XX_TDM_CFG5_VSNS_ENABLE, 0);
   643		if (ret < 0) {
   644			dev_err(tas27xx->dev, "%s:%u: Failed to enable vSNS\n",
   645				__func__, __LINE__);
   646			goto EXIT;
   647		}
   648		ret = snd_soc_component_update_bits(component, TAS27XX_TDM_CFG6,
   649						    TAS27XX_TDM_CFG6_ISNS_ENABLE, 0);
   650		if (ret < 0) {
   651			dev_err(tas27xx->dev, "%s:%u: Failed to enable iSNS\n",
   652				__func__, __LINE__);
   653			goto EXIT;
   654		}
   655		ret = snd_soc_component_update_bits(component, TAS27XX_PWR_CTRL,
   656						    TAS27XX_PWR_CTRL_MASK,
   657						    TAS27XX_PWR_CTRL_MUTE);
   658		if (ret < 0) {
   659			dev_err(tas27xx->dev, "%s:%u: Failed to PWR_CTRL_MUTE\n",
   660				__func__, __LINE__);
   661			goto EXIT;
   662		}
   663	
   664		ret = snd_soc_component_write(component, TAS27XX_PWR_CTRL, 0x02);
   665	
   666		if (ret < 0) {
   667			dev_err(tas27xx->dev, "%s:%u: Failed to initial active\n",
   668				__func__, __LINE__);
   669			goto EXIT;
   670		}
   671		ret = 0;
   672	EXIT:
   673		return ret;
   674	}
   675	
   676	static DECLARE_TLV_DB_SCALE(tas27xx_digital_tlv, 1100, 50, 0);
   677	static DECLARE_TLV_DB_SCALE(tas27xx_playback_volume, -10000, 50, 0);
   678	
   679	static const struct snd_kcontrol_new tas27xx_snd_controls[] = {
   680		SOC_SINGLE_TLV("Speaker Volume", TAS27XX_DVC, 0,
   681			       TAS27XX_DVC_MAX, 1, tas27xx_playback_volume),
   682		SOC_SINGLE_TLV("Amp Gain Volume", TAS27XX_CHNL_0, 0, 0x14, 0,
   683			       tas27xx_digital_tlv),
   684	};
   685	
   686	static const struct snd_soc_component_driver soc_component_driver_tas27xx = {
   687		.probe			= tas27xx_codec_probe,
   688	#ifdef CONFIG_PM
   689		.suspend		= tas27xx_codec_suspend,
   690		.resume			= tas27xx_codec_resume,
   691	#endif
   692		.set_bias_level		= tas27xx_set_bias_level,
   693		.controls		= tas27xx_snd_controls,
   694		.num_controls		= ARRAY_SIZE(tas27xx_snd_controls),
   695		.dapm_widgets		= tas27xx_dapm_widgets,
   696		.num_dapm_widgets	= ARRAY_SIZE(tas27xx_dapm_widgets),
   697		.dapm_routes		= tas27xx_audio_map,
   698		.num_dapm_routes	= ARRAY_SIZE(tas27xx_audio_map),
   699		.idle_bias_on		= 1,
   700		.endianness		= 1,
   701		.non_legacy_dai_naming	= 1,
   702	};
   703	
   704	static const struct reg_default tas27xx_reg_defaults[] = {
   705		{ TAS27XX_PAGE, 0x00 },
   706		{ TAS27XX_SW_RST, 0x00 },
   707		{ TAS27XX_PWR_CTRL, 0x1a },
   708		{ TAS27XX_DVC, 0x00 },
   709		{ TAS27XX_CHNL_0, 0x00 },
   710		{ TAS27XX_TDM_CFG0, 0x09 },
   711		{ TAS27XX_TDM_CFG1, 0x02 },
   712		{ TAS27XX_TDM_CFG2, 0x0a },
   713		{ TAS27XX_TDM_CFG3, 0x10 },
   714		{ TAS27XX_TDM_CFG5, 0x42 },
   715	};
   716	
   717	static const struct regmap_range_cfg tas27xx_regmap_ranges[] = {
   718		{
   719			.range_min = 0,
   720			.range_max = 1 * 128,
   721			.selector_reg = TAS27XX_PAGE,
   722			.selector_mask = 0xff,
   723			.selector_shift = 0,
   724			.window_start = 0,
   725			.window_len = 128,
   726		},
   727	};
   728	
   729	static bool tas27xx_volatile(struct device *dev,
   730		unsigned int reg)
   731	{
   732			return true;
   733	}
   734	
   735	static const struct regmap_config tas27xx_i2c_regmap = {
   736		.reg_bits = 8,
   737		.val_bits = 8,
   738		.reg_defaults = tas27xx_reg_defaults,
   739		.num_reg_defaults = ARRAY_SIZE(tas27xx_reg_defaults),
   740		.cache_type = REGCACHE_RBTREE,
   741		.ranges = tas27xx_regmap_ranges,
   742		.num_ranges = ARRAY_SIZE(tas27xx_regmap_ranges),
   743		.max_register = 1 * 128,
   744		.volatile_reg = tas27xx_volatile,
   745	};
   746	
   747	static int tas27xx_parse_dt(struct device *dev, struct tas27xx_priv *tas27xx)
   748	{
   749		int ret = 0;
   750	
   751		tas27xx->reset_gpio = devm_gpiod_get_optional(tas27xx->dev, "reset",
   752							      GPIOD_OUT_HIGH);
   753		if (IS_ERR(tas27xx->reset_gpio)) {
   754			if (PTR_ERR(tas27xx->reset_gpio) == -EPROBE_DEFER) {
   755				tas27xx->reset_gpio = NULL;
   756				return -EPROBE_DEFER;
   757			}
   758		}
   759	
   760		tas27xx->sdz_gpio = devm_gpiod_get_optional(dev, "shutdown", 
   761			GPIOD_OUT_HIGH);
   762		if (IS_ERR(tas27xx->sdz_gpio)) {
   763			if (PTR_ERR(tas27xx->sdz_gpio) == -EPROBE_DEFER)
   764				return -EPROBE_DEFER;
   765	
   766			tas27xx->sdz_gpio = NULL;
   767		}
   768	
   769		ret = fwnode_property_read_u32(dev->fwnode, "ti,imon-slot-no",
   770					       &tas27xx->i_sense_slot);
   771		if (ret)
   772			tas27xx->i_sense_slot = 0;
   773	
   774		ret = fwnode_property_read_u32(dev->fwnode, "ti,vmon-slot-no",
   775					       &tas27xx->v_sense_slot);
   776		if (ret)
   777			tas27xx->v_sense_slot = 2;
   778	
   779		return 0;
   780	}
   781	
   782	static int tas27xx_i2c_probe(struct i2c_client *client,
   783				const struct i2c_device_id *id)
   784	{
   785		struct tas27xx_priv *tas27xx;
   786		int result;
   787	
   788		tas27xx = devm_kzalloc(&client->dev, sizeof(struct tas27xx_priv),
   789				       GFP_KERNEL);
   790		if (!tas27xx)
   791			return -ENOMEM;
   792		mutex_init(&tas27xx->codec_lock);
   793		tas27xx->dev = &client->dev;
   794		i2c_set_clientdata(client, tas27xx);
   795		dev_set_drvdata(&client->dev, tas27xx);
   796	
   797		tas27xx->regmap = devm_regmap_init_i2c(client, &tas27xx_i2c_regmap);
   798		if (IS_ERR(tas27xx->regmap)) {
   799			result = PTR_ERR(tas27xx->regmap);
   800			dev_err(&client->dev, "Failed to allocate register map: %d\n",
   801						result);
   802			return result;
   803		}
   804	
   805		if (client->dev.of_node) {
   806			result = tas27xx_parse_dt(&client->dev, tas27xx);
   807			if (result) {
   808				dev_err(tas27xx->dev, 
   809					"%s: Failed to parse devicetree\n", __func__);
   810				return result;
   811			}
   812		}
   813	
   814		tas27xx->device_id = id->driver_data;
   815		dev_info(tas27xx->dev, "chip_id: %u\n", tas27xx->device_id);
   816	
   817		return devm_snd_soc_register_component(tas27xx->dev,
   818			&soc_component_driver_tas27xx, tas27xx_dai_driver,
 > 819			ARRAY_SIZE(tas27xx_dai_driver));
   820	}
   821	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Raphael-Xu <13691752556@139.com>, broonie@kernel.org
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org, navada@ti.com,
	alsa-devel@alsa-project.org, shenghao-ding@ti.com,
	raphael-xu@ti.com, Raphael-Xu <13691752556@139.com>
Subject: Re: [PATCH v5 4/4] update tas27xx.c to support either TAS2764 or TAS2780
Date: Thu, 31 Mar 2022 02:36:18 +0800	[thread overview]
Message-ID: <202203310255.mwJuw0DH-lkp@intel.com> (raw)
In-Reply-To: <20220330144526.498-4-13691752556@139.com>

Hi Raphael-Xu,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on broonie-sound/for-next]
[also build test ERROR on v5.17 next-20220330]
[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]

url:    https://github.com/intel-lab-lkp/linux/commits/Raphael-Xu/rename-tas2764-to-tas27xx/20220330-224947
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
config: arm-randconfig-r012-20220330 (https://download.01.org/0day-ci/archive/20220331/202203310255.mwJuw0DH-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0f6d9501cf49ce02937099350d08f20c4af86f3d)
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
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/intel-lab-lkp/linux/commit/5e87128eec39d187eaf11069178b39d935600c2e
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Raphael-Xu/rename-tas2764-to-tas27xx/20220330-224947
        git checkout 5e87128eec39d187eaf11069178b39d935600c2e
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash sound/soc/codecs/

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

All errors (new ones prefixed by >>):

>> sound/soc/codecs/tas27xx.c:624:4: error: field designator 'symmetric_rates' does not refer to any field in type 'struct snd_soc_dai_driver'; did you mean 'symmetric_rate'?
                   .symmetric_rates = 1,
                    ^~~~~~~~~~~~~~~
                    symmetric_rate
   include/sound/soc-dai.h:411:15: note: 'symmetric_rate' declared here
           unsigned int symmetric_rate:1;
                        ^
>> sound/soc/codecs/tas27xx.c:819:3: error: invalid application of 'sizeof' to an incomplete type 'struct snd_soc_dai_driver[]'
                   ARRAY_SIZE(tas27xx_dai_driver));
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:55:32: note: expanded from macro 'ARRAY_SIZE'
   #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
                                  ^~~~~
   2 errors generated.


vim +624 sound/soc/codecs/tas27xx.c

   598	
   599	#define TAS27XX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
   600				 SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
   601	
   602	#define TAS27XX_RATES (SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
   603			       SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_88200)
   604	
   605	static struct snd_soc_dai_driver tas27xx_dai_driver[] = {
   606		{
   607			.name = "tas27xx ASI1",
   608			.id = 0,
   609			.playback = {
   610				.stream_name    = "ASI1 Playback",
   611				.channels_min   = 2,
   612				.channels_max   = 2,
   613				.rates      = TAS27XX_RATES,
   614				.formats    = TAS27XX_FORMATS,
   615			},
   616			.capture = {
   617				.stream_name    = "ASI1 Capture",
   618				.channels_min   = 1,
   619				.channels_max   = 2,
   620				.rates = TAS27XX_RATES,
   621				.formats = TAS27XX_FORMATS,
   622			},
   623			.ops = &tas27xx_dai_ops,
 > 624			.symmetric_rates = 1,
   625		},
   626	};
   627	
   628	static int tas27xx_codec_probe(struct snd_soc_component *component)
   629	{
   630		struct tas27xx_priv *tas27xx = 
   631			snd_soc_component_get_drvdata(component);
   632		int ret = 0;
   633	
   634		tas27xx->component = component;
   635	
   636		if (tas27xx->sdz_gpio)
   637			gpiod_set_value_cansleep(tas27xx->sdz_gpio, 1);
   638	
   639		tas27xx_reset(tas27xx);
   640	
   641		ret = snd_soc_component_update_bits(component, TAS27XX_TDM_CFG5,
   642						    TAS27XX_TDM_CFG5_VSNS_ENABLE, 0);
   643		if (ret < 0) {
   644			dev_err(tas27xx->dev, "%s:%u: Failed to enable vSNS\n",
   645				__func__, __LINE__);
   646			goto EXIT;
   647		}
   648		ret = snd_soc_component_update_bits(component, TAS27XX_TDM_CFG6,
   649						    TAS27XX_TDM_CFG6_ISNS_ENABLE, 0);
   650		if (ret < 0) {
   651			dev_err(tas27xx->dev, "%s:%u: Failed to enable iSNS\n",
   652				__func__, __LINE__);
   653			goto EXIT;
   654		}
   655		ret = snd_soc_component_update_bits(component, TAS27XX_PWR_CTRL,
   656						    TAS27XX_PWR_CTRL_MASK,
   657						    TAS27XX_PWR_CTRL_MUTE);
   658		if (ret < 0) {
   659			dev_err(tas27xx->dev, "%s:%u: Failed to PWR_CTRL_MUTE\n",
   660				__func__, __LINE__);
   661			goto EXIT;
   662		}
   663	
   664		ret = snd_soc_component_write(component, TAS27XX_PWR_CTRL, 0x02);
   665	
   666		if (ret < 0) {
   667			dev_err(tas27xx->dev, "%s:%u: Failed to initial active\n",
   668				__func__, __LINE__);
   669			goto EXIT;
   670		}
   671		ret = 0;
   672	EXIT:
   673		return ret;
   674	}
   675	
   676	static DECLARE_TLV_DB_SCALE(tas27xx_digital_tlv, 1100, 50, 0);
   677	static DECLARE_TLV_DB_SCALE(tas27xx_playback_volume, -10000, 50, 0);
   678	
   679	static const struct snd_kcontrol_new tas27xx_snd_controls[] = {
   680		SOC_SINGLE_TLV("Speaker Volume", TAS27XX_DVC, 0,
   681			       TAS27XX_DVC_MAX, 1, tas27xx_playback_volume),
   682		SOC_SINGLE_TLV("Amp Gain Volume", TAS27XX_CHNL_0, 0, 0x14, 0,
   683			       tas27xx_digital_tlv),
   684	};
   685	
   686	static const struct snd_soc_component_driver soc_component_driver_tas27xx = {
   687		.probe			= tas27xx_codec_probe,
   688	#ifdef CONFIG_PM
   689		.suspend		= tas27xx_codec_suspend,
   690		.resume			= tas27xx_codec_resume,
   691	#endif
   692		.set_bias_level		= tas27xx_set_bias_level,
   693		.controls		= tas27xx_snd_controls,
   694		.num_controls		= ARRAY_SIZE(tas27xx_snd_controls),
   695		.dapm_widgets		= tas27xx_dapm_widgets,
   696		.num_dapm_widgets	= ARRAY_SIZE(tas27xx_dapm_widgets),
   697		.dapm_routes		= tas27xx_audio_map,
   698		.num_dapm_routes	= ARRAY_SIZE(tas27xx_audio_map),
   699		.idle_bias_on		= 1,
   700		.endianness		= 1,
   701		.non_legacy_dai_naming	= 1,
   702	};
   703	
   704	static const struct reg_default tas27xx_reg_defaults[] = {
   705		{ TAS27XX_PAGE, 0x00 },
   706		{ TAS27XX_SW_RST, 0x00 },
   707		{ TAS27XX_PWR_CTRL, 0x1a },
   708		{ TAS27XX_DVC, 0x00 },
   709		{ TAS27XX_CHNL_0, 0x00 },
   710		{ TAS27XX_TDM_CFG0, 0x09 },
   711		{ TAS27XX_TDM_CFG1, 0x02 },
   712		{ TAS27XX_TDM_CFG2, 0x0a },
   713		{ TAS27XX_TDM_CFG3, 0x10 },
   714		{ TAS27XX_TDM_CFG5, 0x42 },
   715	};
   716	
   717	static const struct regmap_range_cfg tas27xx_regmap_ranges[] = {
   718		{
   719			.range_min = 0,
   720			.range_max = 1 * 128,
   721			.selector_reg = TAS27XX_PAGE,
   722			.selector_mask = 0xff,
   723			.selector_shift = 0,
   724			.window_start = 0,
   725			.window_len = 128,
   726		},
   727	};
   728	
   729	static bool tas27xx_volatile(struct device *dev,
   730		unsigned int reg)
   731	{
   732			return true;
   733	}
   734	
   735	static const struct regmap_config tas27xx_i2c_regmap = {
   736		.reg_bits = 8,
   737		.val_bits = 8,
   738		.reg_defaults = tas27xx_reg_defaults,
   739		.num_reg_defaults = ARRAY_SIZE(tas27xx_reg_defaults),
   740		.cache_type = REGCACHE_RBTREE,
   741		.ranges = tas27xx_regmap_ranges,
   742		.num_ranges = ARRAY_SIZE(tas27xx_regmap_ranges),
   743		.max_register = 1 * 128,
   744		.volatile_reg = tas27xx_volatile,
   745	};
   746	
   747	static int tas27xx_parse_dt(struct device *dev, struct tas27xx_priv *tas27xx)
   748	{
   749		int ret = 0;
   750	
   751		tas27xx->reset_gpio = devm_gpiod_get_optional(tas27xx->dev, "reset",
   752							      GPIOD_OUT_HIGH);
   753		if (IS_ERR(tas27xx->reset_gpio)) {
   754			if (PTR_ERR(tas27xx->reset_gpio) == -EPROBE_DEFER) {
   755				tas27xx->reset_gpio = NULL;
   756				return -EPROBE_DEFER;
   757			}
   758		}
   759	
   760		tas27xx->sdz_gpio = devm_gpiod_get_optional(dev, "shutdown", 
   761			GPIOD_OUT_HIGH);
   762		if (IS_ERR(tas27xx->sdz_gpio)) {
   763			if (PTR_ERR(tas27xx->sdz_gpio) == -EPROBE_DEFER)
   764				return -EPROBE_DEFER;
   765	
   766			tas27xx->sdz_gpio = NULL;
   767		}
   768	
   769		ret = fwnode_property_read_u32(dev->fwnode, "ti,imon-slot-no",
   770					       &tas27xx->i_sense_slot);
   771		if (ret)
   772			tas27xx->i_sense_slot = 0;
   773	
   774		ret = fwnode_property_read_u32(dev->fwnode, "ti,vmon-slot-no",
   775					       &tas27xx->v_sense_slot);
   776		if (ret)
   777			tas27xx->v_sense_slot = 2;
   778	
   779		return 0;
   780	}
   781	
   782	static int tas27xx_i2c_probe(struct i2c_client *client,
   783				const struct i2c_device_id *id)
   784	{
   785		struct tas27xx_priv *tas27xx;
   786		int result;
   787	
   788		tas27xx = devm_kzalloc(&client->dev, sizeof(struct tas27xx_priv),
   789				       GFP_KERNEL);
   790		if (!tas27xx)
   791			return -ENOMEM;
   792		mutex_init(&tas27xx->codec_lock);
   793		tas27xx->dev = &client->dev;
   794		i2c_set_clientdata(client, tas27xx);
   795		dev_set_drvdata(&client->dev, tas27xx);
   796	
   797		tas27xx->regmap = devm_regmap_init_i2c(client, &tas27xx_i2c_regmap);
   798		if (IS_ERR(tas27xx->regmap)) {
   799			result = PTR_ERR(tas27xx->regmap);
   800			dev_err(&client->dev, "Failed to allocate register map: %d\n",
   801						result);
   802			return result;
   803		}
   804	
   805		if (client->dev.of_node) {
   806			result = tas27xx_parse_dt(&client->dev, tas27xx);
   807			if (result) {
   808				dev_err(tas27xx->dev, 
   809					"%s: Failed to parse devicetree\n", __func__);
   810				return result;
   811			}
   812		}
   813	
   814		tas27xx->device_id = id->driver_data;
   815		dev_info(tas27xx->dev, "chip_id: %u\n", tas27xx->device_id);
   816	
   817		return devm_snd_soc_register_component(tas27xx->dev,
   818			&soc_component_driver_tas27xx, tas27xx_dai_driver,
 > 819			ARRAY_SIZE(tas27xx_dai_driver));
   820	}
   821	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

  parent reply	other threads:[~2022-03-30 18:37 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-30 14:45 [PATCH v5 1/4] rename tas2764 to tas27xx Raphael-Xu
2022-03-30 14:45 ` [PATCH v5 2/4] update tas27xx.h to support either TAS2764 or TAS2780 Raphael-Xu
2022-03-31 12:12   ` Mark Brown
2022-03-30 14:45 ` [PATCH v5 3/4] rename variables from tas2764 to tas27xx Raphael-Xu
2022-03-30 14:45 ` [PATCH v5 4/4] update tas27xx.c to support either TAS2764 or TAS2780 Raphael-Xu
2022-03-30 17:25   ` Amadeusz Sławiński
2022-03-30 17:35   ` kernel test robot
2022-03-30 18:36   ` kernel test robot [this message]
2022-03-30 18:36     ` kernel test robot
2022-03-31  3:59   ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202203310255.mwJuw0DH-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=13691752556@139.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=kbuild-all@lists.01.org \
    --cc=llvm@lists.linux.dev \
    --cc=navada@ti.com \
    --cc=raphael-xu@ti.com \
    --cc=shenghao-ding@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.