ASoC: cs35l35: Add missing return in probe
Subsystems (4)
PATCH 1/5 ASoC: cs35l35: Add missing return in probe
A return statement is missing just before the error paths at the end of probe. This causes us to fall straight into the error path and disable the supplies and re-enable reset, as these are only controlled during probe this causes the part to no longer function.
--- sound/soc/codecs/cs35l35.c | 2 ++ 1 file changed, 2 insertions(+)
sound/soc/codecs/cs35l35.c +2 -0
@@ -1509,6 +1509,8 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, goto err; } +return 0 ; + err:regulator_bulk_disable (cs35l35->num_supplies, cs35l35->supplies);
Signature · 6 lines
2.1.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 2/5 ASoC: cs35l35: Add device tree binding for I2S drive configuration
Add a binding for setting how the I2S pins are driven in unused slots, currently the chip will just use the default of drive 0, however this causes issues when multiple devices are attached to the same bus.
--- Documentation/devicetree/bindings/sound/cs35l35.txt | 5 +++++ 1 file changed, 5 insertions(+)
Documentation/devicetree/bindings/sound/cs35l35.txt +5 -0
@@ -37,6 +37,11 @@ Optional properties: Table 3-10 of the datasheet lists drive-strength specifications 0 = 1x (Default) 1 = .5x + - cirrus,sp-drv-unused : Determines how unused slots should be driven on the + Serial Port. + 0 - Hi-Z + 2 - Drive 0's (Default) + 3 - Drive 1's - cirrus,bst-pdn-fet-on : Boolean to determine if the Boost PDN control powers down with a rectification FET On or Off. If VSPK is supplied
Signature · 1 line
2.1.4
A message that is not in the archive (sent off-list or not yet received): 1488991371-22513-2-git-send-email-ckeepax-yzvPICuk2AATkU/[email protected]
Applied "ASoC: cs35l35: Add device tree binding for I2S drive configuration" to the asoc tree
The patch
ASoC: cs35l35: Add device tree binding for I2S drive configuration
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
45114c364d476ba0bbc294d63955f49fbf378779Mon Sep 17 00:00:00 2001
From: Charles Keepax <ckeepax-yzvPICuk2AATkU/[email protected]>
Date: Wed, 8 Mar 2017 16:42:48 +0000
Subject: [PATCH] ASoC: cs35l35: Add device tree binding for I2S drive
configuration
Add a binding for setting how the I2S pins are driven in unused slots, currently the chip will just use the default of drive 0, however this causes issues when multiple devices are attached to the same bus.
--- Documentation/devicetree/bindings/sound/cs35l35.txt | 5 +++++ 1 file changed, 5 insertions(+)
Documentation/devicetree/bindings/sound/cs35l35.txt +5 -0
@@ -37,6 +37,11 @@ Optional properties: Table 3-10 of the datasheet lists drive-strength specifications 0 = 1x (Default) 1 = .5x + - cirrus,sp-drv-unused : Determines how unused slots should be driven on the + Serial Port. + 0 - Hi-Z + 2 - Drive 0's (Default) + 3 - Drive 1's - cirrus,bst-pdn-fet-on : Boolean to determine if the Boost PDN control powers down with a rectification FET On or Off. If VSPK is supplied
Signature · 6 lines
2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 3/5 ASoC: cs35l35: Add for configuring drive mode in unused slots
In reply to Charles KeepaxAdd support for setting how the I2S pins are driven in unused slots, currently the chip will just use the default of drive 0, however this causes issues when multiple devices are attached to the same bus.
--- include/sound/cs35l35.h | 2 ++ sound/soc/codecs/cs35l35.c | 7 +++++++ sound/soc/codecs/cs35l35.h | 4 ++++ 3 files changed, 13 insertions(+)
include/sound/cs35l35.h +2 -0
@@ -80,6 +80,8 @@ struct cs35l35_platform_data {bool stereo;/* serial port drive strength */ int sp_drv_str; +/* serial port drive in unused slots */ +int sp_drv_unused;/* Boost Power Down with FET */ bool bst_pdn_fet_on;/* Boost Voltage : used if ClassH Algo Enabled */
sound/soc/codecs/cs35l35.c +7 -0
@@ -789,6 +789,11 @@ static int cs35l35_codec_probe(struct snd_soc_codec *codec)CS35L35_SP_DRV_MASK , cs35l35->pdata.sp_drv_str << CS35L35_SP_DRV_SHIFT); +if (cs35l35->pdata.sp_drv_unused) +regmap_update_bits (cs35l35->regmap,CS35L35_SP_FMT_CTL3 , +CS35L35_SP_I2S_DRV_MASK , + cs35l35->pdata.sp_drv_unused << +CS35L35_SP_I2S_DRV_SHIFT );if (classh->classh_algo_enable) {if (classh->classh_bst_override)
@@ -1169,6 +1174,8 @@ static int cs35l35_handle_of_data(struct i2c_client *i2c_client,if (of_property_read_u32 (np,"cirrus,sp-drv-strength" , &val32) >=0 ) pdata->sp_drv_str = val32; +if (of_property_read_u32 (np,"cirrus,sp-drv-unused" , &val32) >=0 ) + pdata->sp_drv_unused = val32 |CS35L35_VALID_PDATA ; pdata->stereo =of_property_read_bool (np,"cirrus,stereo-config" );
sound/soc/codecs/cs35l35.h +4 -0
@@ -190,6 +190,10 @@#define CS35L35_AMP_GAIN_ZC_MASK 0x10#define CS35L35_AMP_GAIN_ZC_SHIFT 4 +/* CS35L35_SP_FMT_CTL3 */ +#define CS35L35_SP_I2S_DRV_MASK 0x03 +#define CS35L35_SP_I2S_DRV_SHIFT 0 +/* Class H Algorithm Control */ #define CS35L35_CH_STEREO_MASK 0x40#define CS35L35_CH_STEREO_SHIFT 6
Signature · 1 line
2.1.4
A message that is not in the archive (sent off-list or not yet received): 1488991371-22513-3-git-send-email-ckeepax-yzvPICuk2AATkU/[email protected]
Applied "ASoC: cs35l35: Add for configuring drive mode in unused slots" to the asoc tree
The patch
ASoC: cs35l35: Add for configuring drive mode in unused slots
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
8d45f2d23864ae1582d095c54605540cd3640169Mon Sep 17 00:00:00 2001
From: Charles Keepax <ckeepax-yzvPICuk2AATkU/[email protected]>
Date: Wed, 8 Mar 2017 16:42:49 +0000
Subject: [PATCH] ASoC: cs35l35: Add for configuring drive mode in unused slots
Add support for setting how the I2S pins are driven in unused slots, currently the chip will just use the default of drive 0, however this causes issues when multiple devices are attached to the same bus.
--- include/sound/cs35l35.h | 2 ++ sound/soc/codecs/cs35l35.c | 7 +++++++ sound/soc/codecs/cs35l35.h | 4 ++++ 3 files changed, 13 insertions(+)
include/sound/cs35l35.h +2 -0
@@ -80,6 +80,8 @@ struct cs35l35_platform_data {bool stereo;/* serial port drive strength */ int sp_drv_str; +/* serial port drive in unused slots */ +int sp_drv_unused;/* Boost Power Down with FET */ bool bst_pdn_fet_on;/* Boost Voltage : used if ClassH Algo Enabled */
sound/soc/codecs/cs35l35.c +7 -0
@@ -789,6 +789,11 @@ static int cs35l35_codec_probe(struct snd_soc_codec *codec)CS35L35_SP_DRV_MASK , cs35l35->pdata.sp_drv_str << CS35L35_SP_DRV_SHIFT); +if (cs35l35->pdata.sp_drv_unused) +regmap_update_bits (cs35l35->regmap,CS35L35_SP_FMT_CTL3 , +CS35L35_SP_I2S_DRV_MASK , + cs35l35->pdata.sp_drv_unused << +CS35L35_SP_I2S_DRV_SHIFT );if (classh->classh_algo_enable) {if (classh->classh_bst_override)
@@ -1169,6 +1174,8 @@ static int cs35l35_handle_of_data(struct i2c_client *i2c_client,if (of_property_read_u32 (np,"cirrus,sp-drv-strength" , &val32) >=0 ) pdata->sp_drv_str = val32; +if (of_property_read_u32 (np,"cirrus,sp-drv-unused" , &val32) >=0 ) + pdata->sp_drv_unused = val32 |CS35L35_VALID_PDATA ; pdata->stereo =of_property_read_bool (np,"cirrus,stereo-config" );
sound/soc/codecs/cs35l35.h +4 -0
@@ -190,6 +190,10 @@#define CS35L35_AMP_GAIN_ZC_MASK 0x10#define CS35L35_AMP_GAIN_ZC_SHIFT 4 +/* CS35L35_SP_FMT_CTL3 */ +#define CS35L35_SP_I2S_DRV_MASK 0x03 +#define CS35L35_SP_I2S_DRV_SHIFT 0 +/* Class H Algorithm Control */ #define CS35L35_CH_STEREO_MASK 0x40#define CS35L35_CH_STEREO_SHIFT 6
Signature · 6 lines
2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 4/5 ASoC: cs35l35: Add local variable for dev in probe
In reply to Charles KeepaxTidy up the code a little by adding a local variable for i2c_client->dev rather than referring to it explicitly everytime.
--- sound/soc/codecs/cs35l35.c | 66 ++++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 40 deletions(-)
sound/soc/codecs/cs35l35.c +26 -40
@@ -1354,16 +1354,14 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, const struct i2c_device_id *id) {struct cs35l35_private *cs35l35; -struct cs35l35_platform_data *pdata = -dev_get_platdata (&i2c_client->dev); +struct device *dev = &i2c_client->dev; +struct cs35l35_platform_data *pdata =dev_get_platdata (dev);int i;int ret;unsigned int devid =0 ;unsigned int reg; - cs35l35 =devm_kzalloc (&i2c_client->dev, -sizeof (struct cs35l35_private ), -GFP_KERNEL ); + cs35l35 =devm_kzalloc (dev,sizeof (struct cs35l35_private ),GFP_KERNEL );if (!cs35l35)return -ENOMEM ;
@@ -1371,7 +1369,7 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, cs35l35->regmap =devm_regmap_init_i2c (i2c_client, &cs35l35_regmap);if (IS_ERR (cs35l35->regmap)) { ret =PTR_ERR (cs35l35->regmap); -dev_err (&i2c_client->dev,"regmap_init() failed: %d\n" , ret); +dev_err (dev,"regmap_init() failed: %d\n" , ret); goto err; }
@@ -1379,22 +1377,18 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, cs35l35->supplies[i].supply = cs35l35_supplies[i]; cs35l35->num_supplies =ARRAY_SIZE (cs35l35_supplies); - ret =devm_regulator_bulk_get (&i2c_client->dev, - cs35l35->num_supplies, - cs35l35->supplies); + ret =devm_regulator_bulk_get (dev, cs35l35->num_supplies, + cs35l35->supplies);if (ret !=0 ) { -dev_err (&i2c_client->dev, -"Failed to request core supplies: %d\n" , - ret); +dev_err (dev,"Failed to request core supplies: %d\n" , ret);return ret; }if (pdata) { cs35l35->pdata = *pdata; }else { - pdata =devm_kzalloc (&i2c_client->dev, -sizeof (struct cs35l35_platform_data ), -GFP_KERNEL ); + pdata =devm_kzalloc (dev,sizeof (struct cs35l35_platform_data ), +GFP_KERNEL );if (!pdata)return -ENOMEM ;if (i2c_client->dev.of_node) {
@@ -1409,24 +1403,21 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, ret =regulator_bulk_enable (cs35l35->num_supplies, cs35l35->supplies);if (ret !=0 ) { -dev_err (&i2c_client->dev, -"Failed to enable core supplies: %d\n" , - ret); +dev_err (dev,"Failed to enable core supplies: %d\n" , ret);return ret; }/* returning NULL can be valid if in stereo mode */ - cs35l35->reset_gpio =devm_gpiod_get_optional (&i2c_client->dev, -"reset" ,GPIOD_OUT_LOW ); + cs35l35->reset_gpio =devm_gpiod_get_optional (dev,"reset" , +GPIOD_OUT_LOW );if (IS_ERR (cs35l35->reset_gpio)) { ret =PTR_ERR (cs35l35->reset_gpio);if (ret == -EBUSY ) { -dev_info (&i2c_client->dev, +dev_info (dev,"Reset line busy, assuming shared reset\n" ); cs35l35->reset_gpio =NULL ; }else { -dev_err (&i2c_client->dev, -"Failed to get reset GPIO: %d\n" , ret); +dev_err (dev,"Failed to get reset GPIO: %d\n" , ret); goto err; } }
@@ -1435,11 +1426,11 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client,init_completion (&cs35l35->pdn_done); - ret =devm_request_threaded_irq (&i2c_client->dev, i2c_client->irq,NULL , - cs35l35_irq,IRQF_ONESHOT |IRQF_TRIGGER_LOW , -"cs35l35" , cs35l35); + ret =devm_request_threaded_irq (dev, i2c_client->irq,NULL , cs35l35_irq, +IRQF_ONESHOT |IRQF_TRIGGER_LOW , +"cs35l35" , cs35l35);if (ret !=0 ) { -dev_err (&i2c_client->dev,"Failed to request IRQ: %d\n" , ret); +dev_err (dev,"Failed to request IRQ: %d\n" , ret); goto err; }/* initialize codec */
@@ -1452,8 +1443,7 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, devid |= (reg &0xF0 ) >>4 ;if (devid !=CS35L35_CHIP_ID ) { -dev_err (&i2c_client->dev, -"CS35L35 Device ID (%X). Expected ID %X\n" , +dev_err (dev,"CS35L35 Device ID (%X). Expected ID %X\n" , devid,CS35L35_CHIP_ID ); ret = -ENODEV ; goto err;
@@ -1461,21 +1451,19 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, ret =regmap_read (cs35l35->regmap,CS35L35_REV_ID , ®);if (ret <0 ) { -dev_err (&i2c_client->dev,"Get Revision ID failed: %d\n" , ret); +dev_err (dev,"Get Revision ID failed: %d\n" , ret); goto err; } ret =regmap_register_patch (cs35l35->regmap, cs35l35_errata_patch,ARRAY_SIZE (cs35l35_errata_patch));if (ret <0 ) { -dev_err (&i2c_client->dev,"Failed to apply errata patch: %d\n" , - ret); +dev_err (dev,"Failed to apply errata patch: %d\n" , ret); goto err; } -dev_info (&i2c_client->dev, -"Cirrus Logic CS35L35 (%x), Revision: %02X\n" , devid, - ret &0xFF ); +dev_info (dev,"Cirrus Logic CS35L35 (%x), Revision: %02X\n" , + devid, ret &0xFF );/* Set the INT Masks for critical errors */ regmap_write(cs35l35->regmap, CS35L35_INT_MASK_1,
@@ -1507,12 +1495,10 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client,regmap_update_bits (cs35l35->regmap,CS35L35_PROTECT_CTL ,CS35L35_AMP_MUTE_MASK ,1 <<CS35L35_AMP_MUTE_SHIFT ); - ret =snd_soc_register_codec (&i2c_client->dev, - &soc_codec_dev_cs35l35, cs35l35_dai, -ARRAY_SIZE (cs35l35_dai)); + ret =snd_soc_register_codec (dev, &soc_codec_dev_cs35l35, cs35l35_dai, +ARRAY_SIZE (cs35l35_dai));if (ret <0 ) { -dev_err (&i2c_client->dev, -"Failed to register codec: %d\n" , ret); +dev_err (dev,"Failed to register codec: %d\n" , ret); goto err; }
Signature · 1 line
2.1.4
A message that is not in the archive (sent off-list or not yet received): 1488991371-22513-4-git-send-email-ckeepax-yzvPICuk2AATkU/[email protected]
Applied "ASoC: cs35l35: Add local variable for dev in probe" to the asoc tree
The patch
ASoC: cs35l35: Add local variable for dev in probe
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
1f758cd9da61a1ae2202405746d259ba640d1e8aMon Sep 17 00:00:00 2001
From: Charles Keepax <ckeepax-yzvPICuk2AATkU/[email protected]>
Date: Wed, 8 Mar 2017 16:42:50 +0000
Subject: [PATCH] ASoC: cs35l35: Add local variable for dev in probe
Tidy up the code a little by adding a local variable for i2c_client->dev rather than referring to it explicitly everytime.
--- sound/soc/codecs/cs35l35.c | 66 ++++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 40 deletions(-)
sound/soc/codecs/cs35l35.c +26 -40
@@ -1354,16 +1354,14 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, const struct i2c_device_id *id) {struct cs35l35_private *cs35l35; -struct cs35l35_platform_data *pdata = -dev_get_platdata (&i2c_client->dev); +struct device *dev = &i2c_client->dev; +struct cs35l35_platform_data *pdata =dev_get_platdata (dev);int i;int ret;unsigned int devid =0 ;unsigned int reg; - cs35l35 =devm_kzalloc (&i2c_client->dev, -sizeof (struct cs35l35_private ), -GFP_KERNEL ); + cs35l35 =devm_kzalloc (dev,sizeof (struct cs35l35_private ),GFP_KERNEL );if (!cs35l35)return -ENOMEM ;
@@ -1371,7 +1369,7 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, cs35l35->regmap =devm_regmap_init_i2c (i2c_client, &cs35l35_regmap);if (IS_ERR (cs35l35->regmap)) { ret =PTR_ERR (cs35l35->regmap); -dev_err (&i2c_client->dev,"regmap_init() failed: %d\n" , ret); +dev_err (dev,"regmap_init() failed: %d\n" , ret); goto err; }
@@ -1379,22 +1377,18 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, cs35l35->supplies[i].supply = cs35l35_supplies[i]; cs35l35->num_supplies =ARRAY_SIZE (cs35l35_supplies); - ret =devm_regulator_bulk_get (&i2c_client->dev, - cs35l35->num_supplies, - cs35l35->supplies); + ret =devm_regulator_bulk_get (dev, cs35l35->num_supplies, + cs35l35->supplies);if (ret !=0 ) { -dev_err (&i2c_client->dev, -"Failed to request core supplies: %d\n" , - ret); +dev_err (dev,"Failed to request core supplies: %d\n" , ret);return ret; }if (pdata) { cs35l35->pdata = *pdata; }else { - pdata =devm_kzalloc (&i2c_client->dev, -sizeof (struct cs35l35_platform_data ), -GFP_KERNEL ); + pdata =devm_kzalloc (dev,sizeof (struct cs35l35_platform_data ), +GFP_KERNEL );if (!pdata)return -ENOMEM ;if (i2c_client->dev.of_node) {
@@ -1409,24 +1403,21 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, ret =regulator_bulk_enable (cs35l35->num_supplies, cs35l35->supplies);if (ret !=0 ) { -dev_err (&i2c_client->dev, -"Failed to enable core supplies: %d\n" , - ret); +dev_err (dev,"Failed to enable core supplies: %d\n" , ret);return ret; }/* returning NULL can be valid if in stereo mode */ - cs35l35->reset_gpio =devm_gpiod_get_optional (&i2c_client->dev, -"reset" ,GPIOD_OUT_LOW ); + cs35l35->reset_gpio =devm_gpiod_get_optional (dev,"reset" , +GPIOD_OUT_LOW );if (IS_ERR (cs35l35->reset_gpio)) { ret =PTR_ERR (cs35l35->reset_gpio);if (ret == -EBUSY ) { -dev_info (&i2c_client->dev, +dev_info (dev,"Reset line busy, assuming shared reset\n" ); cs35l35->reset_gpio =NULL ; }else { -dev_err (&i2c_client->dev, -"Failed to get reset GPIO: %d\n" , ret); +dev_err (dev,"Failed to get reset GPIO: %d\n" , ret); goto err; } }
@@ -1435,11 +1426,11 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client,init_completion (&cs35l35->pdn_done); - ret =devm_request_threaded_irq (&i2c_client->dev, i2c_client->irq,NULL , - cs35l35_irq,IRQF_ONESHOT |IRQF_TRIGGER_LOW , -"cs35l35" , cs35l35); + ret =devm_request_threaded_irq (dev, i2c_client->irq,NULL , cs35l35_irq, +IRQF_ONESHOT |IRQF_TRIGGER_LOW , +"cs35l35" , cs35l35);if (ret !=0 ) { -dev_err (&i2c_client->dev,"Failed to request IRQ: %d\n" , ret); +dev_err (dev,"Failed to request IRQ: %d\n" , ret); goto err; }/* initialize codec */
@@ -1452,8 +1443,7 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, devid |= (reg &0xF0 ) >>4 ;if (devid !=CS35L35_CHIP_ID ) { -dev_err (&i2c_client->dev, -"CS35L35 Device ID (%X). Expected ID %X\n" , +dev_err (dev,"CS35L35 Device ID (%X). Expected ID %X\n" , devid,CS35L35_CHIP_ID ); ret = -ENODEV ; goto err;
@@ -1461,21 +1451,19 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, ret =regmap_read (cs35l35->regmap,CS35L35_REV_ID , ®);if (ret <0 ) { -dev_err (&i2c_client->dev,"Get Revision ID failed: %d\n" , ret); +dev_err (dev,"Get Revision ID failed: %d\n" , ret); goto err; } ret =regmap_register_patch (cs35l35->regmap, cs35l35_errata_patch,ARRAY_SIZE (cs35l35_errata_patch));if (ret <0 ) { -dev_err (&i2c_client->dev,"Failed to apply errata patch: %d\n" , - ret); +dev_err (dev,"Failed to apply errata patch: %d\n" , ret); goto err; } -dev_info (&i2c_client->dev, -"Cirrus Logic CS35L35 (%x), Revision: %02X\n" , devid, - ret &0xFF ); +dev_info (dev,"Cirrus Logic CS35L35 (%x), Revision: %02X\n" , + devid, ret &0xFF );/* Set the INT Masks for critical errors */ regmap_write(cs35l35->regmap, CS35L35_INT_MASK_1,
@@ -1507,12 +1495,10 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client,regmap_update_bits (cs35l35->regmap,CS35L35_PROTECT_CTL ,CS35L35_AMP_MUTE_MASK ,1 <<CS35L35_AMP_MUTE_SHIFT ); - ret =snd_soc_register_codec (&i2c_client->dev, - &soc_codec_dev_cs35l35, cs35l35_dai, -ARRAY_SIZE (cs35l35_dai)); + ret =snd_soc_register_codec (dev, &soc_codec_dev_cs35l35, cs35l35_dai, +ARRAY_SIZE (cs35l35_dai));if (ret <0 ) { -dev_err (&i2c_client->dev, -"Failed to register codec: %d\n" , ret); +dev_err (dev,"Failed to register codec: %d\n" , ret); goto err; }
Signature · 6 lines
2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 5/5 ASoC: cs35l35: Add IRQF_SHARED to IRQ flags
In reply to Charles KeepaxAs it is quite common to use a stereo pair of amps but share the IRQ line between them both add the IRQF_SHARED flag whilst requesting cs35l35's IRQ.
--- sound/soc/codecs/cs35l35.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/cs35l35.c +2 -2
@@ -1427,8 +1427,8 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client,init_completion (&cs35l35->pdn_done); ret =devm_request_threaded_irq (dev, i2c_client->irq,NULL , cs35l35_irq, -IRQF_ONESHOT |IRQF_TRIGGER_LOW , -"cs35l35" , cs35l35); +IRQF_ONESHOT |IRQF_TRIGGER_LOW | +IRQF_SHARED ,"cs35l35" , cs35l35);if (ret !=0 ) {dev_err (dev,"Failed to request IRQ: %d\n" , ret); goto err;
Signature · 1 line
2.1.4
A message that is not in the archive (sent off-list or not yet received): 1488991371-22513-5-git-send-email-ckeepax-yzvPICuk2AATkU/[email protected]
Applied "ASoC: cs35l35: Add IRQF_SHARED to IRQ flags" to the asoc tree
The patch
ASoC: cs35l35: Add IRQF_SHARED to IRQ flags
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
bf5043d69c9bf33696f9151552175f1203f8c9d9Mon Sep 17 00:00:00 2001
From: Charles Keepax <ckeepax-yzvPICuk2AATkU/[email protected]>
Date: Wed, 8 Mar 2017 16:42:51 +0000
Subject: [PATCH] ASoC: cs35l35: Add IRQF_SHARED to IRQ flags
As it is quite common to use a stereo pair of amps but share the IRQ line between them both add the IRQF_SHARED flag whilst requesting cs35l35's IRQ.
--- sound/soc/codecs/cs35l35.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/cs35l35.c +2 -2
@@ -1427,8 +1427,8 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client,init_completion (&cs35l35->pdn_done); ret =devm_request_threaded_irq (dev, i2c_client->irq,NULL , cs35l35_irq, -IRQF_ONESHOT |IRQF_TRIGGER_LOW , -"cs35l35" , cs35l35); +IRQF_ONESHOT |IRQF_TRIGGER_LOW | +IRQF_SHARED ,"cs35l35" , cs35l35);if (ret !=0 ) {dev_err (dev,"Failed to request IRQ: %d\n" , ret); goto err;
Signature · 6 lines
2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 7 lines · On 3/8/17, 10:42 AM, "[email protected] on behalf of Charles…
A return statement is missing just before the error paths at the end of probe. This causes us to fall straight into the error path and disable the supplies and re-enable reset, as these are only controlled during probe this causes the part to no longer function.
Signed-off-by Charles Keepax <[email protected]>---
For the series
A message that is not in the archive (sent off-list or not yet received): 1488991371-22513-1-git-send-email-ckeepax-yzvPICuk2AATkU/[email protected]
Applied "ASoC: cs35l35: Add missing return in probe" to the asoc tree
The patch
ASoC: cs35l35: Add missing return in probe
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
1bb06ada038548b4e2449159e80badf106bb779fMon Sep 17 00:00:00 2001
From: Charles Keepax <ckeepax-yzvPICuk2AATkU/[email protected]>
Date: Wed, 8 Mar 2017 16:42:47 +0000
Subject: [PATCH] ASoC: cs35l35: Add missing return in probe
A return statement is missing just before the error paths at the end of probe. This causes us to fall straight into the error path and disable the supplies and re-enable reset, as these are only controlled during probe this causes the part to no longer function.
--- sound/soc/codecs/cs35l35.c | 2 ++ 1 file changed, 2 insertions(+)
sound/soc/codecs/cs35l35.c +2 -0
@@ -1509,6 +1509,8 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, goto err; } +return 0 ; + err:regulator_bulk_disable (cs35l35->num_supplies, cs35l35->supplies);
Signature · 6 lines
2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html