summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2019-03-22 10:49:30 -0400
committerTony Lindgren <tony@atomide.com>2019-04-01 10:38:38 -0400
commit386cb76681ca6248878c7b76d3d5aa0e8b8a07bb (patch)
tree73aadd61b4c5deb9a927c684b9d25a00c59dbaa0
parentaaa29bb01cc4bf5a87dbdb219efba3b09f259d8e (diff)
bus: ti-sysc: Handle missed no-idle property in addition to no-idle-on-init
We have ti,no-idle in use in addition to ti,no-idle-on-init but we're missing handling for it in the ti-sysc interconnect target module driver. Let's also group the idle defines together and update the binding documentation for it. Cc: devicetree@vger.kernel.org Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Tony Lindgren <tony@atomide.com>
-rw-r--r--Documentation/devicetree/bindings/bus/ti-sysc.txt2
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c2
-rw-r--r--drivers/bus/ti-sysc.c5
-rw-r--r--include/linux/platform_data/ti-sysc.h5
4 files changed, 11 insertions, 3 deletions
diff --git a/Documentation/devicetree/bindings/bus/ti-sysc.txt b/Documentation/devicetree/bindings/bus/ti-sysc.txt
index 85a23f551f02..f200f45572ae 100644
--- a/Documentation/devicetree/bindings/bus/ti-sysc.txt
+++ b/Documentation/devicetree/bindings/bus/ti-sysc.txt
@@ -94,6 +94,8 @@ Optional properties:
94 94
95- ti,no-idle-on-init interconnect target module should not be idled at init 95- ti,no-idle-on-init interconnect target module should not be idled at init
96 96
97- ti,no-idle interconnect target module should not be idled
98
97Example: Single instance of MUSB controller on omap4 using interconnect ranges 99Example: Single instance of MUSB controller on omap4 using interconnect ranges
98using offsets from l4_cfg second segment (0x4a000000 + 0x80000 = 0x4a0ab000): 100using offsets from l4_cfg second segment (0x4a000000 + 0x80000 = 0x4a0ab000):
99 101
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 9170fbfb7c59..a985844dbe39 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -3675,6 +3675,8 @@ int omap_hwmod_init_module(struct device *dev,
3675 if (error) 3675 if (error)
3676 return error; 3676 return error;
3677 3677
3678 if (data->cfg->quirks & SYSC_QUIRK_NO_IDLE)
3679 oh->flags |= HWMOD_NO_IDLE;
3678 if (data->cfg->quirks & SYSC_QUIRK_NO_IDLE_ON_INIT) 3680 if (data->cfg->quirks & SYSC_QUIRK_NO_IDLE_ON_INIT)
3679 oh->flags |= HWMOD_INIT_NO_IDLE; 3681 oh->flags |= HWMOD_INIT_NO_IDLE;
3680 if (data->cfg->quirks & SYSC_QUIRK_NO_RESET_ON_INIT) 3682 if (data->cfg->quirks & SYSC_QUIRK_NO_RESET_ON_INIT)
diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
index 647caccacee6..bc315f1d3bf8 100644
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -920,7 +920,8 @@ static int sysc_init_module(struct sysc *ddata)
920{ 920{
921 int error; 921 int error;
922 922
923 if (ddata->cfg.quirks & SYSC_QUIRK_NO_IDLE_ON_INIT) { 923 if (ddata->cfg.quirks &
924 (SYSC_QUIRK_NO_IDLE | SYSC_QUIRK_NO_IDLE_ON_INIT)) {
924 ddata->revision = sysc_read_revision(ddata); 925 ddata->revision = sysc_read_revision(ddata);
925 goto rev_quirks; 926 goto rev_quirks;
926 } 927 }
@@ -1281,6 +1282,8 @@ static const struct sysc_dts_quirk sysc_dts_quirks[] = {
1281 .mask = SYSC_QUIRK_NO_IDLE_ON_INIT, }, 1282 .mask = SYSC_QUIRK_NO_IDLE_ON_INIT, },
1282 { .name = "ti,no-reset-on-init", 1283 { .name = "ti,no-reset-on-init",
1283 .mask = SYSC_QUIRK_NO_RESET_ON_INIT, }, 1284 .mask = SYSC_QUIRK_NO_RESET_ON_INIT, },
1285 { .name = "ti,no-idle",
1286 .mask = SYSC_QUIRK_NO_IDLE, },
1284}; 1287};
1285 1288
1286static void sysc_parse_dts_quirks(struct sysc *ddata, struct device_node *np, 1289static void sysc_parse_dts_quirks(struct sysc *ddata, struct device_node *np,
diff --git a/include/linux/platform_data/ti-sysc.h b/include/linux/platform_data/ti-sysc.h
index 1ea3aab972b4..fa97b8c5d26d 100644
--- a/include/linux/platform_data/ti-sysc.h
+++ b/include/linux/platform_data/ti-sysc.h
@@ -46,8 +46,9 @@ struct sysc_regbits {
46 s8 emufree_shift; 46 s8 emufree_shift;
47}; 47};
48 48
49#define SYSC_QUIRK_LEGACY_IDLE BIT(8) 49#define SYSC_QUIRK_LEGACY_IDLE BIT(9)
50#define SYSC_QUIRK_RESET_STATUS BIT(7) 50#define SYSC_QUIRK_RESET_STATUS BIT(8)
51#define SYSC_QUIRK_NO_IDLE BIT(7)
51#define SYSC_QUIRK_NO_IDLE_ON_INIT BIT(6) 52#define SYSC_QUIRK_NO_IDLE_ON_INIT BIT(6)
52#define SYSC_QUIRK_NO_RESET_ON_INIT BIT(5) 53#define SYSC_QUIRK_NO_RESET_ON_INIT BIT(5)
53#define SYSC_QUIRK_OPT_CLKS_NEEDED BIT(4) 54#define SYSC_QUIRK_OPT_CLKS_NEEDED BIT(4)