linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] i2c: rk3x: init module as subsys call
@ 2016-01-05  3:02 jianqun.xu
  2016-01-05  7:02 ` Heiko Stuebner
  0 siblings, 1 reply; 7+ messages in thread
From: jianqun.xu @ 2016-01-05  3:02 UTC (permalink / raw)
  To: heiko, wsa, wdc
  Cc: huangtao, linux-arm-kernel, linux-rockchip, linux-i2c,
	linux-kernel, Xu Jianqun

From: Xu Jianqun <jay.xu@rock-chips.com>

There is a requirement from pmic device, which is on the i2c bus,
that the pmic needs to be called earlier then devices powered by
the outputs of the pmic, if not, the devices maybe fail to probe.

For example, a pmic on i2c0, and touchscreen device on i2c2,
i2c0: - pmic(rk818)
i2c2: - ts(gt911), powered by rk818 on i2c0

The problem will happen if the i2c2 node in dts file is ordered
before i2c0 node, then ts(gt911) will be probed before pmic(rk818),
since the power from the pmic(rk818) for ts(gt911) hasn't enabled,
so ts(gt911) will fail to probe due to the failure of i2c test.

But if we set the i2c0 node before i2c2, there is no this issue.

The stable way to make sure that pmic can be intalized before other
peripher devices is to make the pmic module be subsys call, the i2c
module need to be subsys call firstly.

Signed-off-by: Xu Jianqun <jay.xu@rock-chips.com>
---
 drivers/i2c/busses/i2c-rk3x.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-rk3x.c b/drivers/i2c/busses/i2c-rk3x.c
index c1935eb..00e5959 100644
--- a/drivers/i2c/busses/i2c-rk3x.c
+++ b/drivers/i2c/busses/i2c-rk3x.c
@@ -1037,7 +1037,17 @@ static struct platform_driver rk3x_i2c_driver = {
 	},
 };
 
-module_platform_driver(rk3x_i2c_driver);
+static int __init rk3x_i2c_init(void)
+{
+	return platform_driver_register(&rk3x_i2c_driver);
+}
+subsys_initcall(rk3x_i2c_init);
+
+static void __exit rk3x_i2c_exit(void)
+{
+	platform_driver_unregister(&rk3x_i2c_driver);
+}
+module_exit(rk3x_i2c_exit);
 
 MODULE_DESCRIPTION("Rockchip RK3xxx I2C Bus driver");
 MODULE_AUTHOR("Max Schwarz <max.schwarz@online.de>");
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-01-05 10:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-05  3:02 [PATCH] i2c: rk3x: init module as subsys call jianqun.xu
2016-01-05  7:02 ` Heiko Stuebner
2016-01-05  7:42   ` Huang, Tao
2016-01-05  8:00     ` Heiko Stuebner
2016-01-05  8:48       ` Huang, Tao
2016-01-05 10:01         ` Wolfram Sang
2016-01-05  7:42   ` Jianqun Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).