diff options
| -rw-r--r-- | drivers/i2c/muxes/i2c-mux-reg.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/i2c/muxes/i2c-mux-reg.c b/drivers/i2c/muxes/i2c-mux-reg.c index 406d5059072c..11974e3cd1e5 100644 --- a/drivers/i2c/muxes/i2c-mux-reg.c +++ b/drivers/i2c/muxes/i2c-mux-reg.c | |||
| @@ -196,20 +196,25 @@ static int i2c_mux_reg_probe(struct platform_device *pdev) | |||
| 196 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 196 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 197 | mux->data.reg_size = resource_size(res); | 197 | mux->data.reg_size = resource_size(res); |
| 198 | mux->data.reg = devm_ioremap_resource(&pdev->dev, res); | 198 | mux->data.reg = devm_ioremap_resource(&pdev->dev, res); |
| 199 | if (IS_ERR(mux->data.reg)) | 199 | if (IS_ERR(mux->data.reg)) { |
| 200 | return PTR_ERR(mux->data.reg); | 200 | ret = PTR_ERR(mux->data.reg); |
| 201 | goto err_put_parent; | ||
| 202 | } | ||
| 201 | } | 203 | } |
| 202 | 204 | ||
| 203 | if (mux->data.reg_size != 4 && mux->data.reg_size != 2 && | 205 | if (mux->data.reg_size != 4 && mux->data.reg_size != 2 && |
| 204 | mux->data.reg_size != 1) { | 206 | mux->data.reg_size != 1) { |
| 205 | dev_err(&pdev->dev, "Invalid register size\n"); | 207 | dev_err(&pdev->dev, "Invalid register size\n"); |
| 206 | return -EINVAL; | 208 | ret = -EINVAL; |
| 209 | goto err_put_parent; | ||
| 207 | } | 210 | } |
| 208 | 211 | ||
| 209 | muxc = i2c_mux_alloc(parent, &pdev->dev, mux->data.n_values, 0, 0, | 212 | muxc = i2c_mux_alloc(parent, &pdev->dev, mux->data.n_values, 0, 0, |
| 210 | i2c_mux_reg_select, NULL); | 213 | i2c_mux_reg_select, NULL); |
| 211 | if (!muxc) | 214 | if (!muxc) { |
| 212 | return -ENOMEM; | 215 | ret = -ENOMEM; |
| 216 | goto err_put_parent; | ||
| 217 | } | ||
| 213 | muxc->priv = mux; | 218 | muxc->priv = mux; |
| 214 | 219 | ||
| 215 | platform_set_drvdata(pdev, muxc); | 220 | platform_set_drvdata(pdev, muxc); |
| @@ -233,6 +238,8 @@ static int i2c_mux_reg_probe(struct platform_device *pdev) | |||
| 233 | 238 | ||
| 234 | add_adapter_failed: | 239 | add_adapter_failed: |
| 235 | i2c_mux_del_adapters(muxc); | 240 | i2c_mux_del_adapters(muxc); |
| 241 | err_put_parent: | ||
| 242 | i2c_put_adapter(parent); | ||
| 236 | 243 | ||
| 237 | return ret; | 244 | return ret; |
| 238 | } | 245 | } |
