From ec1fbb849e707c65d61cb6d9c79dbfe509ca99a7 Mon Sep 17 00:00:00 2001 From: Viswanath Kraleti Date: Thu, 7 May 2015 14:05:53 +0530 Subject: [PATCH] CHROMIUM: dts: ipq806x: Disable i2c device on gsbi4 Disable the i2c device on gsbi4 and mark gsbi4_h and gsbi4_qup clks as unused. If they are enabled, clock framework will turn them off at end of probe. On ipq806x by design gsbi4_qup, gsbi4_h clks and i2c on gsbi4 are meant for RPM usage. So turning them off in kernel is incorrect. BUG=chrome-os-partner:38770 TEST=build/boot on whirlwind succeded. Ran stressapptest using cmd "stressapptest -M 562 -s 36000 -m 2 -W -f sat.diskthread.a -f sat.diskthread.b -l xxx.log" and verified no errors are reported. Change-Id: If039984354793d22a02f3350e85e86c173f086e5 Signed-off-by: Viswanath Kraleti Signed-off-by: Sourabh Banerjee Reviewed-on: https://chromium-review.googlesource.com/269931 Reviewed-by: Toshi Kikuchi Commit-Queue: Zhifeng Cai --- arch/arm/boot/dts/qcom-ipq8064-ap148.dts | 15 ++++++--------- arch/arm/boot/dts/qcom-ipq8064-arkham.dts | 15 ++++++--------- arch/arm/boot/dts/qcom-ipq8064-storm.dts | 15 ++++++--------- arch/arm/boot/dts/qcom-ipq8064-whirlwind-sp3.dts | 15 ++++++--------- arch/arm/boot/dts/qcom-ipq8064-whirlwind-sp5.dts | 15 ++++++--------- drivers/clk/qcom/gcc-ipq806x.c | 6 +++--- 6 files changed, 33 insertions(+), 48 deletions(-) diff --git a/arch/arm/boot/dts/qcom-ipq8064-ap148.dts b/arch/arm/boot/dts/qcom-ipq8064-ap148.dts index 2e13698aa5f2..f555b5ba39c3 100644 --- a/arch/arm/boot/dts/qcom-ipq8064-ap148.dts +++ b/arch/arm/boot/dts/qcom-ipq8064-ap148.dts @@ -117,15 +117,12 @@ serial@16340000 { status = "ok"; }; - - i2c4: i2c@16380000 { - status = "ok"; - - clock-frequency = <200000>; - - pinctrl-0 = <&i2c4_pins>; - pinctrl-names = "default"; - }; + /* + * The i2c device on gsbi4 should not be enabled. + * On ipq806x designs gsbi4 i2c is meant for exclusive + * RPM usage. Turning this on in kernel manifests as + * i2c failure for the RPM. + */ }; gsbi5: gsbi@1a200000 { diff --git a/arch/arm/boot/dts/qcom-ipq8064-arkham.dts b/arch/arm/boot/dts/qcom-ipq8064-arkham.dts index 667b3f1c0ba6..7c3c08a982d2 100644 --- a/arch/arm/boot/dts/qcom-ipq8064-arkham.dts +++ b/arch/arm/boot/dts/qcom-ipq8064-arkham.dts @@ -285,15 +285,12 @@ serial@16340000 { status = "ok"; }; - - i2c4: i2c@16380000 { - status = "ok"; - - clock-frequency = <200000>; - - pinctrl-0 = <&i2c4_pins>; - pinctrl-names = "default"; - }; + /* + * The i2c device on gsbi4 should not be enabled. + * On ipq806x designs gsbi4 i2c is meant for exclusive + * RPM usage. Turning this on in kernel manifests as + * i2c failure for the RPM. + */ }; gsbi5: gsbi@1a200000 { diff --git a/arch/arm/boot/dts/qcom-ipq8064-storm.dts b/arch/arm/boot/dts/qcom-ipq8064-storm.dts index 32bef934c9d0..47042c73c856 100644 --- a/arch/arm/boot/dts/qcom-ipq8064-storm.dts +++ b/arch/arm/boot/dts/qcom-ipq8064-storm.dts @@ -279,15 +279,12 @@ serial@16340000 { status = "ok"; }; - - i2c4: i2c@16380000 { - status = "ok"; - - clock-frequency = <200000>; - - pinctrl-0 = <&i2c4_pins>; - pinctrl-names = "default"; - }; + /* + * The i2c device on gsbi4 should not be enabled. + * On ipq806x designs gsbi4 i2c is meant for exclusive + * RPM usage. Turning this on in kernel manifests as + * i2c failure for the RPM. + */ }; gsbi5: gsbi@1a200000 { diff --git a/arch/arm/boot/dts/qcom-ipq8064-whirlwind-sp3.dts b/arch/arm/boot/dts/qcom-ipq8064-whirlwind-sp3.dts index 11cbb73b58b9..e504e530e666 100644 --- a/arch/arm/boot/dts/qcom-ipq8064-whirlwind-sp3.dts +++ b/arch/arm/boot/dts/qcom-ipq8064-whirlwind-sp3.dts @@ -279,15 +279,12 @@ serial@16340000 { status = "ok"; }; - - i2c4: i2c@16380000 { - status = "ok"; - - clock-frequency = <200000>; - - pinctrl-0 = <&i2c4_pins>; - pinctrl-names = "default"; - }; + /* + * The i2c device on gsbi4 should not be enabled. + * On ipq806x designs gsbi4 i2c is meant for exclusive + * RPM usage. Turning this on in kernel manifests as + * i2c failure for the RPM. + */ }; gsbi5: gsbi@1a200000 { diff --git a/arch/arm/boot/dts/qcom-ipq8064-whirlwind-sp5.dts b/arch/arm/boot/dts/qcom-ipq8064-whirlwind-sp5.dts index 8150c658ba94..abbac09de041 100644 --- a/arch/arm/boot/dts/qcom-ipq8064-whirlwind-sp5.dts +++ b/arch/arm/boot/dts/qcom-ipq8064-whirlwind-sp5.dts @@ -285,15 +285,12 @@ serial@16340000 { status = "ok"; }; - - i2c4: i2c@16380000 { - status = "ok"; - - clock-frequency = <200000>; - - pinctrl-0 = <&i2c4_pins>; - pinctrl-names = "default"; - }; + /* + * The i2c device on gsbi4 should not be enabled. + * On ipq806x designs gsbi4 i2c is meant for exclusive + * RPM usage. Turning this on in kernel manifests as + * i2c failure for the RPM. + */ }; gsbi5: gsbi@1a200000 { diff --git a/drivers/clk/qcom/gcc-ipq806x.c b/drivers/clk/qcom/gcc-ipq806x.c index 9378367a04c3..2e7143d8b60a 100644 --- a/drivers/clk/qcom/gcc-ipq806x.c +++ b/drivers/clk/qcom/gcc-ipq806x.c @@ -789,7 +789,7 @@ static struct clk_rcg gsbi4_qup_src = { .parent_names = gcc_pxo_pll8, .num_parents = 2, .ops = &clk_rcg_ops, - .flags = CLK_SET_PARENT_GATE, + .flags = CLK_SET_PARENT_GATE | CLK_IGNORE_UNUSED, }, }, }; @@ -805,7 +805,7 @@ static struct clk_branch gsbi4_qup_clk = { .parent_names = (const char *[]){ "gsbi4_qup_src" }, .num_parents = 1, .ops = &clk_branch_ops, - .flags = CLK_SET_RATE_PARENT, + .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, }, }, }; @@ -1000,7 +1000,7 @@ static struct clk_branch gsbi4_h_clk = { .hw.init = &(struct clk_init_data){ .name = "gsbi4_h_clk", .ops = &clk_branch_ops, - .flags = CLK_IS_ROOT, + .flags = CLK_IS_ROOT | CLK_IGNORE_UNUSED, }, }, };