[Letux-kernel] Letux-kernel on OpenPandora

H. Nikolaus Schaller hns at goldelico.com
Sun Jun 18 17:29:56 CEST 2017


> 
> Maybe I should also dump_stack() to see who calls pinctrl_select_state().

Here it is:

[    2.731231] pinctrl-single 48002030.pinmux: 284 pins at pa fa002030 size 568
[    2.740325] pinctrl_select_state: 
[    2.743957] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.12.0-rc5-letux+ #1131
[    2.751434] Hardware name: Generic OMAP3 (Flattened Device Tree)
[    2.757751] [<c010f478>] (unwind_backtrace) from [<c010b9bc>] (show_stack+0x10/0x14)
[    2.765869] [<c010b9bc>] (show_stack) from [<c04406c4>] (dump_stack+0x98/0xd0)
[    2.773437] [<c04406c4>] (dump_stack) from [<c046feac>] (pinctrl_select_state+0x20/0x170)
[    2.781982] [<c046feac>] (pinctrl_select_state) from [<c0471194>] (pinctrl_enable+0x98/0x210)
[    2.790893] [<c0471194>] (pinctrl_enable) from [<c0475780>] (pcs_probe+0x6ec/0x7a8)
[    2.798889] [<c0475780>] (pcs_probe) from [<c04ec0b4>] (platform_drv_probe+0x50/0xa0)
[    2.807098] [<c04ec0b4>] (platform_drv_probe) from [<c04ea0ec>] (driver_probe_device+0x150/0x2d0)
[    2.816345] [<c04ea0ec>] (driver_probe_device) from [<c04ea2f4>] (__driver_attach+0x88/0xac)
[    2.825164] [<c04ea2f4>] (__driver_attach) from [<c04e87f8>] (bus_for_each_dev+0x6c/0x90)
[    2.833709] [<c04e87f8>] (bus_for_each_dev) from [<c04e97d8>] (bus_add_driver+0xcc/0x1e8)
[    2.842254] [<c04e97d8>] (bus_add_driver) from [<c04eb298>] (driver_register+0x9c/0xe0)
[    2.850616] [<c04eb298>] (driver_register) from [<c0101938>] (do_one_initcall+0xa8/0x150)
[    2.859161] [<c0101938>] (do_one_initcall) from [<c0b00d88>] (kernel_init_freeable+0x128/0x1f0)
[    2.868255] [<c0b00d88>] (kernel_init_freeable) from [<c0759204>] (kernel_init+0x8/0x10c)
[    2.876800] [<c0759204>] (kernel_init) from [<c01070f0>] (ret_from_fork+0x14/0x24)
[    2.885772] pinctrl_select_state: 48002030.pinmux 2
[    2.891296] pinmux_enable_setting: 
[    2.894989] pinmux_enable_setting: alloc 0
[    2.899658] pinmux_enable_setting: alloc 1
[    2.903991] pinmux_enable_setting: alloc 2
[    2.908477] pinmux_enable_setting: alloc 3
[    2.912811] pinmux_enable_setting: alloc 4
[    2.917114] pinmux_enable_setting: alloc 5
[    2.921600] pinmux_enable_setting: alloc 6
[    2.925933] pinmux_enable_setting: alloc 7
[    2.930389] pinmux_enable_setting: set 0 PIN210
[    2.935180] pinmux_enable_setting: set 1 PIN211
[    2.940093] pinmux_enable_setting: set 2 PIN212
[    2.944854] pinmux_enable_setting: set 3 PIN213
[    2.949768] pinmux_enable_setting: set 4 PIN214
[    2.954559] pinmux_enable_setting: set 5 PIN215
[    2.959472] pinmux_enable_setting: set 6 PIN181
[    2.964233] pinmux_enable_setting: set 7 PIN182
[    2.969146] pinmux_enable_setting: set mux
[    2.973785] pcs_set_mux: write 10b to fa0021d4
[    2.978698] pcs_set_mux: write 10b to fa0021d6
[    2.983398] pcs_set_mux: write 10b to fa0021d8
[    2.988098] pcs_set_mux: write 10b to fa0021da
[    2.992919] pcs_set_mux: write 10b to fa0021dc
[    2.997619] pcs_set_mux: write 10b to fa0021de
[    3.002441] pcs_set_mux: write 11c to fa00219a
[    3.007141] pcs_set_mux: write 4 to fa00219c
[    3.011779] pinmux_enable_setting: done (0)
[    3.011779] 
[    3.011779] 
[    3.019561] pinctrl_select_state: 48002030.pinmux 2
[    3.024688] pinmux_enable_setting: 
[    3.028533] pinmux_enable_setting: alloc 0
[    3.032867] pinmux_enable_setting: alloc 1
[    3.037170] pinmux_enable_setting: alloc 2
[    3.041656] pinmux_enable_setting: alloc 3
[    3.045989] pinmux_enable_setting: alloc 4
[    3.050445] pinmux_enable_setting: alloc 5
[    3.054779] pinmux_enable_setting: set 0 PIN2
[    3.059509] pinmux_enable_setting: set 1 PIN3
[    3.064117] pinmux_enable_setting: set 2 PIN4
[    3.068847] pinmux_enable_setting: set 3 PIN9
[    3.073425] pinmux_enable_setting: set 4 PIN10
[    3.078124] pinmux_enable_setting: set 5 PIN11
[    3.082946] pinmux_enable_setting: set mux
[    3.087280] pcs_set_mux: write 10c to fa002034
[    3.092102] pcs_set_mux: write 4 to fa002036
[    3.096618] pcs_set_mux: write 4 to fa002038
[    3.101257] `cs_cet_eux: wride 1 4 tg fa 020$2
[    3.105957] pcs_cet_eux: wride 4 to fa00"044

The character errors in the last 2 lines look like some power supply fading away.
I think we have to study the Pandora Schematics...

If the pinmux registers address fa002034 really translate to 48002034 etc. this
would write to the SDRC mode registers...

The question is why the GTA04 works.

Here the same sequence on GTA04:

[    2.327301] pinctrl-single 48002030.pinmux: 284 pins at pa fa002030 size 568
[    2.336151] pinctrl_select_state: 
[    2.340087] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.12.0-rc5-letux+ #1131
[    2.347534] Hardware name: Generic OMAP36xx (Flattened Device Tree)
[    2.354125] [<c010f478>] (unwind_backtrace) from [<c010b9bc>] (show_stack+0x10/0x14)
[    2.362213] [<c010b9bc>] (show_stack) from [<c04406c4>] (dump_stack+0x98/0xd0)
[    2.369750] [<c04406c4>] (dump_stack) from [<c046feac>] (pinctrl_select_state+0x20/0x170)
[    2.378295] [<c046feac>] (pinctrl_select_state) from [<c0471194>] (pinctrl_enable+0x98/0x210)
[    2.387176] [<c0471194>] (pinctrl_enable) from [<c0475780>] (pcs_probe+0x6ec/0x7a8)
[    2.395172] [<c0475780>] (pcs_probe) from [<c04ec0b4>] (platform_drv_probe+0x50/0xa0)
[    2.403320] [<c04ec0b4>] (platform_drv_probe) from [<c04ea0ec>] (driver_probe_device+0x150/0x2d0)
[    2.412567] [<c04ea0ec>] (driver_probe_device) from [<c04ea2f4>] (__driver_attach+0x88/0xac)
[    2.421356] [<c04ea2f4>] (__driver_attach) from [<c04e87f8>] (bus_for_each_dev+0x6c/0x90)
[    2.429870] [<c04e87f8>] (bus_for_each_dev) from [<c04e97d8>] (bus_add_driver+0xcc/0x1e8)
[    2.438415] [<c04e97d8>] (bus_add_driver) from [<c04eb298>] (driver_register+0x9c/0xe0)
[    2.446746] [<c04eb298>] (driver_register) from [<c0101938>] (do_one_initcall+0xa8/0x150)
[    2.455291] [<c0101938>] (do_one_initcall) from [<c0b00d88>] (kernel_init_freeable+0x128/0x1f0)
[    2.464355] [<c0b00d88>] (kernel_init_freeable) from [<c0759204>] (kernel_init+0x8/0x10c)
[    2.472869] [<c0759204>] (kernel_init) from [<c01070f0>] (ret_from_fork+0x14/0x24)
[    2.481597] pinctrl_select_state: 48002030.pinmux 2
[    2.486724] pinmux_enable_setting: 
[    2.490692] pinmux_enable_setting: alloc 0
[    2.495025] pinmux_enable_setting: alloc 1
[    2.499572] pinmux_enable_setting: alloc 2
[    2.503906] pinmux_enable_setting: alloc 3
[    2.508209] pinmux_enable_setting: alloc 4
[    2.512634] pinmux_enable_setting: alloc 5
[    2.516937] pinmux_enable_setting: set 0 PIN210
[    2.521820] pinmux_enable_setting: set 1 PIN211
[    2.526580] pinmux_enable_setting: set 2 PIN212
[    2.531433] pinmux_enable_setting: set 3 PIN213
[    2.536193] pinmux_enable_setting: set 4 PIN214
[    2.541046] pinmux_enable_setting: set 5 PIN215
[    2.545806] pinmux_enable_setting: set mux
[    2.550476] pcs_set_mux: write 10b to fa0021d4
[    2.555206] pcs_set_mux: write 10b to fa0021d6
[    2.559997] pcs_set_mux: write 10b to fa0021d8
[    2.564666] pcs_set_mux: write 10b to fa0021da
[    2.569458] pcs_set_mux: write 10b to fa0021dc
[    2.574127] pcs_set_mux: write 10b to fa0021de
[    2.578796] pinmux_enable_setting: done (0)
[    2.578796] 
[    2.578796] 
[    2.586517] pinctrl_select_state: ok
[    2.591552] pinctrl-single 48002a00.pinmux: 46 pins at pa fa002a00 size 92
[    2.600616] pinctrl-single 480025a0.pinmux: 46 pins at pa fa0025a0 size 92
[    2.608001] pinctrl_select_state: 
[    2.611785] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.12.0-rc5-letux+ #1131
[    2.619232] Hardware name: Generic OMAP36xx (Flattened Device Tree)
[    2.625793] [<c010f478>] (unwind_backtrace) from [<c010b9bc>] (show_stack+0x10/0x14)
[    2.633880] [<c010b9bc>] (show_stack) from [<c04406c4>] (dump_stack+0x98/0xd0)
[    2.641418] [<c04406c4>] (dump_stack) from [<c046feac>] (pinctrl_select_state+0x20/0x170)
[    2.649963] [<c046feac>] (pinctrl_select_state) from [<c0471194>] (pinctrl_enable+0x98/0x210)
[    2.658843] [<c0471194>] (pinctrl_enable) from [<c0475780>] (pcs_probe+0x6ec/0x7a8)
[    2.666839] [<c0475780>] (pcs_probe) from [<c04ec0b4>] (platform_drv_probe+0x50/0xa0)
[    2.675018] [<c04ec0b4>] (platform_drv_probe) from [<c04ea0ec>] (driver_probe_device+0x150/0x2d0)
[    2.684234] [<c04ea0ec>] (driver_probe_device) from [<c04ea2f4>] (__driver_attach+0x88/0xac)
[    2.693023] [<c04ea2f4>] (__driver_attach) from [<c04e87f8>] (bus_for_each_dev+0x6c/0x90)
[    2.701538] [<c04e87f8>] (bus_for_each_dev) from [<c04e97d8>] (bus_add_driver+0xcc/0x1e8)
[    2.710083] [<c04e97d8>] (bus_add_driver) from [<c04eb298>] (driver_register+0x9c/0xe0)
[    2.718414] [<c04eb298>] (driver_register) from [<c0101938>] (do_one_initcall+0xa8/0x150)
[    2.726959] [<c0101938>] (do_one_initcall) from [<c0b00d88>] (kernel_init_freeable+0x128/0x1f0)
[    2.736022] [<c0b00d88>] (kernel_init_freeable) from [<c0759204>] (kernel_init+0x8/0x10c)
[    2.744537] [<c0759204>] (kernel_init) from [<c01070f0>] (ret_from_fork+0x14/0x24)
[    2.752593] pinctrl_select_state: 480025a0.pinmux 2
[    2.757720] pinmux_enable_setting: 
[    2.761505] pinmux_enable_setting: alloc 0
[    2.765808] pinmux_enable_setting: alloc 1
[    2.770233] pinmux_enable_setting: alloc 2
[    2.774566] pinmux_enable_setting: alloc 3
[    2.778869] pinmux_enable_setting: alloc 4
[    2.783264] pinmux_enable_setting: alloc 5
[    2.787597] pinmux_enable_setting: set 0 PIN40
[    2.792358] pinmux_enable_setting: set 1 PIN41
[    2.797027] pinmux_enable_setting: set 2 PIN42
[    2.802368] random: fast init done
[    2.806121] pinmux_enable_setting: set 3 PIN43
[    2.810913] pinmux_enable_setting: set 4 PIN44
[    2.815582] pinmux_enable_setting: set 5 PIN45
[    2.820373] pinmux_enable_setting: set mux
[    2.824676] pcs_set_mux: write 3 to fa0025f0
[    2.829284] pcs_set_mux: write 3 to fa0025f2
[    2.833770] pcs_set_mux: write 10b to fa0025f4
[    2.838439] pcs_set_mux: write 10b to fa0025f6
[    2.843200] pcs_set_mux: write 10b to fa0025f8
[    2.847900] pcs_set_mux: write 10b to fa0025fa
[    2.852661] pinmux_enable_setting: done (0)

What is the difference? There are no writes to PIN2,3,4 and similarily low numbers.

Ideas where to look next:
1. missing IOPAD macros (which could hide changed address calculations)
2. pinmux assigned to &omap3_pmx_core instead of &omap3_pmx_core2
3. wrong mix of OMAP3_CORE1_IOPAD and OMAP3_CORE2_IOPAD

BR,
Nikolaus




More information about the Letux-kernel mailing list