* [PATCH 0/3] Few ti-sysc changes for v5.12 merge window @ 2021-01-26 7:28 Tony Lindgren 2021-01-26 7:28 ` [PATCH 1/3] bus: ti-sysc: Fix initializing module_pa for modules without sysc register Tony Lindgren ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: Tony Lindgren @ 2021-01-26 7:28 UTC (permalink / raw) To: linux-omap Cc: Dave Gerlach, Faiz Abbas, Greg Kroah-Hartman, Grygorii Strashko, Keerthy, Nishanth Menon, Suman Anna, linux-kernel, linux-arm-kernel Hi, Here are few ti-sysc changes to mostly to have l4_wkup and l4_cfg interconnects before l4_per interconnects. Regards, Tony Tony Lindgren (3): bus: ti-sysc: Fix initializing module_pa for modules without sysc register bus: ti-sysc: Probe for l4_wkup and l4_cfg interconnect devices first bus: ti-sysc: Detect more modules for debugging drivers/bus/ti-sysc.c | 62 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 3 deletions(-) -- 2.30.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/3] bus: ti-sysc: Fix initializing module_pa for modules without sysc register 2021-01-26 7:28 [PATCH 0/3] Few ti-sysc changes for v5.12 merge window Tony Lindgren @ 2021-01-26 7:28 ` Tony Lindgren 2021-01-26 7:28 ` [PATCH 2/3] bus: ti-sysc: Probe for l4_wkup and l4_cfg interconnect devices first Tony Lindgren 2021-01-26 7:28 ` [PATCH 3/3] bus: ti-sysc: Detect more modules for debugging Tony Lindgren 2 siblings, 0 replies; 4+ messages in thread From: Tony Lindgren @ 2021-01-26 7:28 UTC (permalink / raw) To: linux-omap Cc: Dave Gerlach, Faiz Abbas, Greg Kroah-Hartman, Grygorii Strashko, Keerthy, Nishanth Menon, Suman Anna, linux-kernel, linux-arm-kernel We have interconnect target modules with no known registers using only clocks and resets, but we still want to detect them based on the module IO range. So let's call sysc_parse_and_check_child_range() earlier so we have module_pa properly initialized. Fixes: 2928135c93f8 ("bus: ti-sysc: Support modules without control registers") Signed-off-by: Tony Lindgren <tony@atomide.com> --- drivers/bus/ti-sysc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -856,15 +856,15 @@ static int sysc_map_and_check_registers(struct sysc *ddata) struct device_node *np = ddata->dev->of_node; int error; - if (!of_get_property(np, "reg", NULL)) - return 0; - error = sysc_parse_and_check_child_range(ddata); if (error) return error; sysc_check_children(ddata); + if (!of_get_property(np, "reg", NULL)) + return 0; + error = sysc_parse_registers(ddata); if (error) return error; -- 2.30.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/3] bus: ti-sysc: Probe for l4_wkup and l4_cfg interconnect devices first 2021-01-26 7:28 [PATCH 0/3] Few ti-sysc changes for v5.12 merge window Tony Lindgren 2021-01-26 7:28 ` [PATCH 1/3] bus: ti-sysc: Fix initializing module_pa for modules without sysc register Tony Lindgren @ 2021-01-26 7:28 ` Tony Lindgren 2021-01-26 7:28 ` [PATCH 3/3] bus: ti-sysc: Detect more modules for debugging Tony Lindgren 2 siblings, 0 replies; 4+ messages in thread From: Tony Lindgren @ 2021-01-26 7:28 UTC (permalink / raw) To: linux-omap Cc: Dave Gerlach, Faiz Abbas, Greg Kroah-Hartman, Grygorii Strashko, Keerthy, Nishanth Menon, Suman Anna, linux-kernel, linux-arm-kernel We want to probe l4_wkup and l4_cfg interconnect devices first to avoid issues with missing resources. Otherwise we attempt to probe l4_per devices first causing pointless deferred probe and also annoyingh renumbering of the MMC devices for example. Signed-off-by: Tony Lindgren <tony@atomide.com> --- drivers/bus/ti-sysc.c | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -635,6 +635,51 @@ static int sysc_parse_and_check_child_range(struct sysc *ddata) return 0; } +/* Interconnect instances to probe before l4_per instances */ +static struct resource early_bus_ranges[] = { + /* am3/4 l4_wkup */ + { .start = 0x44c00000, .end = 0x44c00000 + 0x300000, }, + /* omap4/5 and dra7 l4_cfg */ + { .start = 0x4a000000, .end = 0x4a000000 + 0x300000, }, + /* omap4 l4_wkup */ + { .start = 0x4a300000, .end = 0x4a300000 + 0x30000, }, + /* omap5 and dra7 l4_wkup without dra7 dcan segment */ + { .start = 0x4ae00000, .end = 0x4ae00000 + 0x30000, }, +}; + +static atomic_t sysc_defer = ATOMIC_INIT(10); + +/** + * sysc_defer_non_critical - defer non_critical interconnect probing + * @ddata: device driver data + * + * We want to probe l4_cfg and l4_wkup interconnect instances before any + * l4_per instances as l4_per instances depend on resources on l4_cfg and + * l4_wkup interconnects. + */ +static int sysc_defer_non_critical(struct sysc *ddata) +{ + struct resource *res; + int i; + + if (!atomic_read(&sysc_defer)) + return 0; + + for (i = 0; i < ARRAY_SIZE(early_bus_ranges); i++) { + res = &early_bus_ranges[i]; + if (ddata->module_pa >= res->start && + ddata->module_pa <= res->end) { + atomic_set(&sysc_defer, 0); + + return 0; + } + } + + atomic_dec_if_positive(&sysc_defer); + + return -EPROBE_DEFER; +} + static struct device_node *stdout_path; static void sysc_init_stdout_path(struct sysc *ddata) @@ -860,6 +905,10 @@ static int sysc_map_and_check_registers(struct sysc *ddata) if (error) return error; + error = sysc_defer_non_critical(ddata); + if (error) + return error; + sysc_check_children(ddata); if (!of_get_property(np, "reg", NULL)) -- 2.30.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 3/3] bus: ti-sysc: Detect more modules for debugging 2021-01-26 7:28 [PATCH 0/3] Few ti-sysc changes for v5.12 merge window Tony Lindgren 2021-01-26 7:28 ` [PATCH 1/3] bus: ti-sysc: Fix initializing module_pa for modules without sysc register Tony Lindgren 2021-01-26 7:28 ` [PATCH 2/3] bus: ti-sysc: Probe for l4_wkup and l4_cfg interconnect devices first Tony Lindgren @ 2021-01-26 7:28 ` Tony Lindgren 2 siblings, 0 replies; 4+ messages in thread From: Tony Lindgren @ 2021-01-26 7:28 UTC (permalink / raw) To: linux-omap Cc: Dave Gerlach, Faiz Abbas, Greg Kroah-Hartman, Grygorii Strashko, Keerthy, Nishanth Menon, Suman Anna, linux-kernel, linux-arm-kernel We want to see what the interconnect target module names are for debugging. Signed-off-by: Tony Lindgren <tony@atomide.com> --- drivers/bus/ti-sysc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -1496,12 +1496,16 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = { SYSC_QUIRK("dwc3", 0, 0, 0x10, -ENODEV, 0x500a0200, 0xffffffff, 0), SYSC_QUIRK("d2d", 0x4a0b6000, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0), SYSC_QUIRK("d2d", 0x4a0cd000, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0), + SYSC_QUIRK("elm", 0x48080000, 0, 0x10, 0x14, 0x00000020, 0xffffffff, 0), + SYSC_QUIRK("emif", 0, 0, -ENODEV, -ENODEV, 0x40441403, 0xffff0fff, 0), + SYSC_QUIRK("emif", 0, 0, -ENODEV, -ENODEV, 0x50440500, 0xffffffff, 0), SYSC_QUIRK("epwmss", 0, 0, 0x4, -ENODEV, 0x47400001, 0xffffffff, 0), SYSC_QUIRK("gpu", 0, 0x1fc00, 0x1fc10, -ENODEV, 0, 0, 0), SYSC_QUIRK("gpu", 0, 0xfe00, 0xfe10, -ENODEV, 0x40000000 , 0xffffffff, 0), SYSC_QUIRK("hdmi", 0, 0, 0x10, -ENODEV, 0x50031d00, 0xffffffff, 0), SYSC_QUIRK("hsi", 0, 0, 0x10, 0x14, 0x50043101, 0xffffffff, 0), SYSC_QUIRK("iss", 0, 0, 0x10, -ENODEV, 0x40000101, 0xffffffff, 0), + SYSC_QUIRK("keypad", 0x4a31c000, 0, 0x10, 0x14, 0x00000020, 0xffffffff, 0), SYSC_QUIRK("mcasp", 0, 0, 0x4, -ENODEV, 0x44306302, 0xffffffff, 0), SYSC_QUIRK("mcasp", 0, 0, 0x4, -ENODEV, 0x44307b02, 0xffffffff, 0), SYSC_QUIRK("mcbsp", 0, -ENODEV, 0x8c, -ENODEV, 0, 0, 0), @@ -1513,11 +1517,14 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = { SYSC_QUIRK("ocp2scp", 0, 0, -ENODEV, -ENODEV, 0x50060007, 0xffffffff, 0), SYSC_QUIRK("padconf", 0, 0, 0x10, -ENODEV, 0x4fff0800, 0xffffffff, 0), SYSC_QUIRK("padconf", 0, 0, -ENODEV, -ENODEV, 0x40001100, 0xffffffff, 0), + SYSC_QUIRK("pcie", 0x51000000, -ENODEV, -ENODEV, -ENODEV, 0, 0, 0), + SYSC_QUIRK("pcie", 0x51800000, -ENODEV, -ENODEV, -ENODEV, 0, 0, 0), SYSC_QUIRK("prcm", 0, 0, -ENODEV, -ENODEV, 0x40000100, 0xffffffff, 0), SYSC_QUIRK("prcm", 0, 0, -ENODEV, -ENODEV, 0x00004102, 0xffffffff, 0), SYSC_QUIRK("prcm", 0, 0, -ENODEV, -ENODEV, 0x40000400, 0xffffffff, 0), SYSC_QUIRK("rfbi", 0x4832a800, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0), SYSC_QUIRK("rfbi", 0x58002000, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0), + SYSC_QUIRK("sata", 0, 0xfc, 0x1100, -ENODEV, 0x5e412000, 0xffffffff, 0), SYSC_QUIRK("scm", 0, 0, 0x10, -ENODEV, 0x40000900, 0xffffffff, 0), SYSC_QUIRK("scm", 0, 0, -ENODEV, -ENODEV, 0x4e8b0100, 0xffffffff, 0), SYSC_QUIRK("scm", 0, 0, -ENODEV, -ENODEV, 0x4f000100, 0xffffffff, 0), -- 2.30.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-01-26 17:35 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-01-26 7:28 [PATCH 0/3] Few ti-sysc changes for v5.12 merge window Tony Lindgren 2021-01-26 7:28 ` [PATCH 1/3] bus: ti-sysc: Fix initializing module_pa for modules without sysc register Tony Lindgren 2021-01-26 7:28 ` [PATCH 2/3] bus: ti-sysc: Probe for l4_wkup and l4_cfg interconnect devices first Tony Lindgren 2021-01-26 7:28 ` [PATCH 3/3] bus: ti-sysc: Detect more modules for debugging Tony Lindgren
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).