Skip to content

Commit ee5d35e

Browse files
committed
Merge tag 'for-v4.2-rc/omap-fixes-a' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending into fixes
Merge "ARM: OMAP2+: hwmod fixes for v4.2-rc" from Paul Walmsley: ARM: OMAP2+: hwmod fixes for v4.2-rc Two fixes against v4.2-rc1. The first, for DRA7xx platforms, corrects some incorrect GPMC hardware description data. The second one will ensure that the hwmod code will wait for any module with CPU-accessible registers to become ready before attempting to access it. Basic build, boot, and PM test logs are available here: http://www.pwsan.com/omap/testlogs/omap-hwmod-a-for-v4.2-rc/20150723065408/ Note that I do not have a DRA7xx or AM43xx board, and therefore cannot test on those platforms. * tag 'for-v4.2-rc/omap-fixes-a' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending: ARM: OMAP2+: hwmod: Fix _wait_target_ready() for hwmods without sysc ARM: DRA7: hwmod: fix gpmc hwmod Signed-off-by: Olof Johansson <olof@lixom.net>
2 parents 82567c8 + 9a258af commit ee5d35e

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

arch/arm/mach-omap2/omap_hwmod.c

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2373,6 +2373,9 @@ static int of_dev_hwmod_lookup(struct device_node *np,
23732373
* registers. This address is needed early so the OCP registers that
23742374
* are part of the device's address space can be ioremapped properly.
23752375
*
2376+
* If SYSC access is not needed, the registers will not be remapped
2377+
* and non-availability of MPU access is not treated as an error.
2378+
*
23762379
* Returns 0 on success, -EINVAL if an invalid hwmod is passed, and
23772380
* -ENXIO on absent or invalid register target address space.
23782381
*/
@@ -2387,6 +2390,11 @@ static int __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data,
23872390

23882391
_save_mpu_port_index(oh);
23892392

2393+
/* if we don't need sysc access we don't need to ioremap */
2394+
if (!oh->class->sysc)
2395+
return 0;
2396+
2397+
/* we can't continue without MPU PORT if we need sysc access */
23902398
if (oh->_int_flags & _HWMOD_NO_MPU_PORT)
23912399
return -ENXIO;
23922400

@@ -2396,8 +2404,10 @@ static int __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data,
23962404
oh->name);
23972405

23982406
/* Extract the IO space from device tree blob */
2399-
if (!np)
2407+
if (!np) {
2408+
pr_err("omap_hwmod: %s: no dt node\n", oh->name);
24002409
return -ENXIO;
2410+
}
24012411

24022412
va_start = of_iomap(np, index + oh->mpu_rt_idx);
24032413
} else {
@@ -2456,13 +2466,11 @@ static int __init _init(struct omap_hwmod *oh, void *data)
24562466
oh->name, np->name);
24572467
}
24582468

2459-
if (oh->class->sysc) {
2460-
r = _init_mpu_rt_base(oh, NULL, index, np);
2461-
if (r < 0) {
2462-
WARN(1, "omap_hwmod: %s: doesn't have mpu register target base\n",
2463-
oh->name);
2464-
return 0;
2465-
}
2469+
r = _init_mpu_rt_base(oh, NULL, index, np);
2470+
if (r < 0) {
2471+
WARN(1, "omap_hwmod: %s: doesn't have mpu register target base\n",
2472+
oh->name);
2473+
return 0;
24662474
}
24672475

24682476
r = _init_clocks(oh, NULL);

arch/arm/mach-omap2/omap_hwmod_7xx_data.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -827,8 +827,7 @@ static struct omap_hwmod_class_sysconfig dra7xx_gpmc_sysc = {
827827
.syss_offs = 0x0014,
828828
.sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
829829
SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
830-
.idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
831-
SIDLE_SMART_WKUP),
830+
.idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
832831
.sysc_fields = &omap_hwmod_sysc_type1,
833832
};
834833

@@ -844,7 +843,7 @@ static struct omap_hwmod dra7xx_gpmc_hwmod = {
844843
.class = &dra7xx_gpmc_hwmod_class,
845844
.clkdm_name = "l3main1_clkdm",
846845
/* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
847-
.flags = HWMOD_SWSUP_SIDLE | DEBUG_OMAP_GPMC_HWMOD_FLAGS,
846+
.flags = DEBUG_OMAP_GPMC_HWMOD_FLAGS,
848847
.main_clk = "l3_iclk_div",
849848
.prcm = {
850849
.omap4 = {

0 commit comments

Comments
 (0)