Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae481cc1 authored by Wolfram Sang's avatar Wolfram Sang Committed by Wolfram Sang
Browse files

i2c: rcar: fix resume by always initializing registers before transfer



Resume failed because of uninitialized registers. Instead of adding a
resume callback, we simply initialize registers before every transfer.
This lightweight change is more robust and will keep us safe if we ever
need support for power domains or dynamic frequency changes.

Signed-off-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
Acked-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent 8c91fd5e
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -700,6 +700,8 @@ static int rcar_i2c_master_xfer(struct i2c_adapter *adap,


	pm_runtime_get_sync(dev);
	pm_runtime_get_sync(dev);


	rcar_i2c_init(priv);

	ret = rcar_i2c_bus_barrier(priv);
	ret = rcar_i2c_bus_barrier(priv);
	if (ret < 0)
	if (ret < 0)
		goto out;
		goto out;
@@ -860,8 +862,6 @@ static int rcar_i2c_probe(struct platform_device *pdev)
	if (ret < 0)
	if (ret < 0)
		goto out_pm_put;
		goto out_pm_put;


	rcar_i2c_init(priv);

	/* Don't suspend when multi-master to keep arbitration working */
	/* Don't suspend when multi-master to keep arbitration working */
	if (of_property_read_bool(dev->of_node, "multi-master"))
	if (of_property_read_bool(dev->of_node, "multi-master"))
		priv->flags |= ID_P_PM_BLOCKED;
		priv->flags |= ID_P_PM_BLOCKED;