diff options
author | Wolfram Sang <wsa@the-dreams.de> | 2015-08-20 17:40:46 -0400 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2015-09-03 05:54:41 -0400 |
commit | fce388afd633cdf20844e17f47b0d97c7ee06e69 (patch) | |
tree | 4e6141c644bce1eb3ca47858d38f6974bde0cb69 | |
parent | bdbf4a29ee5bbe5b6743ba47bc7b10ec2cba8b21 (diff) |
i2c: mux: reg: simplify register size checking
Checking was done at three different locations, just do it once and
properly at probing time.
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Tested-by: York Sun <yorksun@freescale.com>
-rw-r--r-- | drivers/i2c/muxes/i2c-mux-reg.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/drivers/i2c/muxes/i2c-mux-reg.c b/drivers/i2c/muxes/i2c-mux-reg.c index 57ec57e0da52..fb5b55a0cf9d 100644 --- a/drivers/i2c/muxes/i2c-mux-reg.c +++ b/drivers/i2c/muxes/i2c-mux-reg.c | |||
@@ -59,9 +59,6 @@ static int i2c_mux_reg_set(const struct regmux *mux, unsigned int chan_id) | |||
59 | if (!mux->data.write_only) | 59 | if (!mux->data.write_only) |
60 | ioread8(mux->data.reg); | 60 | ioread8(mux->data.reg); |
61 | break; | 61 | break; |
62 | default: | ||
63 | pr_err("Invalid register size\n"); | ||
64 | return -EINVAL; | ||
65 | } | 62 | } |
66 | 63 | ||
67 | return 0; | 64 | return 0; |
@@ -155,10 +152,6 @@ static int i2c_mux_reg_probe_dt(struct regmux *mux, | |||
155 | /* map address from "reg" if exists */ | 152 | /* map address from "reg" if exists */ |
156 | if (of_address_to_resource(np, 0, &res)) { | 153 | if (of_address_to_resource(np, 0, &res)) { |
157 | mux->data.reg_size = resource_size(&res); | 154 | mux->data.reg_size = resource_size(&res); |
158 | if (mux->data.reg_size > 4) { | ||
159 | dev_err(&pdev->dev, "Invalid address size\n"); | ||
160 | return -EINVAL; | ||
161 | } | ||
162 | mux->data.reg = devm_ioremap_resource(&pdev->dev, &res); | 155 | mux->data.reg = devm_ioremap_resource(&pdev->dev, &res); |
163 | if (IS_ERR(mux->data.reg)) | 156 | if (IS_ERR(mux->data.reg)) |
164 | return PTR_ERR(mux->data.reg); | 157 | return PTR_ERR(mux->data.reg); |
@@ -211,15 +204,17 @@ static int i2c_mux_reg_probe(struct platform_device *pdev) | |||
211 | "Register not set, using platform resource\n"); | 204 | "Register not set, using platform resource\n"); |
212 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 205 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
213 | mux->data.reg_size = resource_size(res); | 206 | mux->data.reg_size = resource_size(res); |
214 | if (mux->data.reg_size > 4) { | ||
215 | dev_err(&pdev->dev, "Invalid resource size\n"); | ||
216 | return -EINVAL; | ||
217 | } | ||
218 | mux->data.reg = devm_ioremap_resource(&pdev->dev, res); | 207 | mux->data.reg = devm_ioremap_resource(&pdev->dev, res); |
219 | if (IS_ERR(mux->data.reg)) | 208 | if (IS_ERR(mux->data.reg)) |
220 | return PTR_ERR(mux->data.reg); | 209 | return PTR_ERR(mux->data.reg); |
221 | } | 210 | } |
222 | 211 | ||
212 | if (mux->data.reg_size != 4 && mux->data.reg_size != 2 && | ||
213 | mux->data.reg_size != 1) { | ||
214 | dev_err(&pdev->dev, "Invalid register size\n"); | ||
215 | return -EINVAL; | ||
216 | } | ||
217 | |||
223 | mux->adap = devm_kzalloc(&pdev->dev, | 218 | mux->adap = devm_kzalloc(&pdev->dev, |
224 | sizeof(*mux->adap) * mux->data.n_values, | 219 | sizeof(*mux->adap) * mux->data.n_values, |
225 | GFP_KERNEL); | 220 | GFP_KERNEL); |