Skip to content

Commit ca09ce2

Browse files
Etienne BuiraBartosz Golaszewski
authored andcommitted
gpio: syscon: do not report bogus error
Do not issue "can't read the data register offset!" when gpio,syscon-dev is not set albeit unneeded. gpio-syscon is used with rk3328 chip, but this iomem region is documented in Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.yaml and does not require gpio,syscon-dev setting. Signed-off-by: Etienne Buira <[email protected]> Reviewed-by: Linus Walleij <[email protected]> Link: https://lore.kernel.org/r/Zktwd4Y8zu6XSGaE@Z926fQmE5jqhFMgp6 Signed-off-by: Bartosz Golaszewski <[email protected]>
1 parent e4608bb commit ca09ce2

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

drivers/gpio/gpio-syscon.c

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ static int syscon_gpio_probe(struct platform_device *pdev)
208208
struct syscon_gpio_priv *priv;
209209
struct device_node *np = dev->of_node;
210210
int ret;
211+
bool use_parent_regmap = false;
211212

212213
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
213214
if (!priv)
@@ -216,24 +217,28 @@ static int syscon_gpio_probe(struct platform_device *pdev)
216217
priv->data = of_device_get_match_data(dev);
217218

218219
priv->syscon = syscon_regmap_lookup_by_phandle(np, "gpio,syscon-dev");
219-
if (IS_ERR(priv->syscon) && np->parent)
220+
if (IS_ERR(priv->syscon) && np->parent) {
220221
priv->syscon = syscon_node_to_regmap(np->parent);
222+
use_parent_regmap = true;
223+
}
221224
if (IS_ERR(priv->syscon))
222225
return PTR_ERR(priv->syscon);
223226

224-
ret = of_property_read_u32_index(np, "gpio,syscon-dev", 1,
225-
&priv->dreg_offset);
226-
if (ret)
227-
dev_err(dev, "can't read the data register offset!\n");
227+
if (!use_parent_regmap) {
228+
ret = of_property_read_u32_index(np, "gpio,syscon-dev", 1,
229+
&priv->dreg_offset);
230+
if (ret)
231+
dev_err(dev, "can't read the data register offset!\n");
228232

229-
priv->dreg_offset <<= 3;
233+
priv->dreg_offset <<= 3;
230234

231-
ret = of_property_read_u32_index(np, "gpio,syscon-dev", 2,
232-
&priv->dir_reg_offset);
233-
if (ret)
234-
dev_dbg(dev, "can't read the dir register offset!\n");
235+
ret = of_property_read_u32_index(np, "gpio,syscon-dev", 2,
236+
&priv->dir_reg_offset);
237+
if (ret)
238+
dev_dbg(dev, "can't read the dir register offset!\n");
235239

236-
priv->dir_reg_offset <<= 3;
240+
priv->dir_reg_offset <<= 3;
241+
}
237242

238243
priv->chip.parent = dev;
239244
priv->chip.owner = THIS_MODULE;

0 commit comments

Comments
 (0)