Message ID | 20160828173246.32621-2-contact@paulk.fr (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 28/08/16 18:32, Paul Kocialkowski wrote: > Nyan boards come with an embedded controller that controls when to > enable and disable the charge. Thus, it should not be left up to the > kernel to handle that. > > Using the ti,external-control property allows specifying this use-case. So the bq24735 is populated under the EC's 'i2c-tunnel' property which is there to specifically interface it's child devices to the host. So I am a bit confused why this is expose to the host if it should not be used? Again you may right and I did find the original series [0] for this which specifically references the Acer Chromebook that needs this. However, I am not sure why this was never populated? Is there any other history here? What is the actual problem you see without making this change? The original series states ... "On Acer Chromebook 13 (CB5-311) this module fails to load if the charger is not inserted, and will error when it is removed." Cheers Jon [0] http://marc.info/?l=linux-pm&m=145447948705686&w=2
Le mardi 20 septembre 2016 à 18:40 +0100, Jon Hunter a écrit : > On 28/08/16 18:32, Paul Kocialkowski wrote: > > > > Nyan boards come with an embedded controller that controls when to > > enable and disable the charge. Thus, it should not be left up to the > > kernel to handle that. > > > > Using the ti,external-control property allows specifying this use-case. > > So the bq24735 is populated under the EC's 'i2c-tunnel' property which > is there to specifically interface it's child devices to the host. So I > am a bit confused why this is expose to the host if it should not be used? Well, it needs to access the information in the read-only registers provided by the chip, which is allowed by the setup in place that you described. However, the EC has its internal state machine that decides when to start charging, etc and so should be the only one to write registers, to avoid conflicts. > Again you may right and I did find the original series [0] for this > which specifically references the Acer Chromebook that needs this. > However, I am not sure why this was never populated? Is there any other > history here? I am also confused about why it wasn't applied earlier. However, the cros kernel is using the very same scheme. > What is the actual problem you see without making this change? There is a risk of conflict (even though it's probably not that significant), given the low variety of possible cases here. The idea is simply to say that the EC is in charge and to let it do its job without interfering. > The original series states ... > > "On Acer Chromebook 13 (CB5-311) this module fails to load if the > charger is not inserted, and will error when it is removed." I'm confused about that comment. At this point (and with this patch), it works normally. > Cheers > Jon > > [0] http://marc.info/?l=linux-pm&m=145447948705686&w=2 Cheers, -- Paul Kocialkowski, developer of low-level free software for embedded devices Website: https://www.paulk.fr/ Coding blog: https://code.paulk.fr/ Git repositories: https://git.paulk.fr/ https://git.code.paulk.fr/
On 20/09/16 19:02, Paul Kocialkowski wrote: > * PGP Signed by an unknown key > > Le mardi 20 septembre 2016 à 18:40 +0100, Jon Hunter a écrit : >> On 28/08/16 18:32, Paul Kocialkowski wrote: >>> >>> Nyan boards come with an embedded controller that controls when to >>> enable and disable the charge. Thus, it should not be left up to the >>> kernel to handle that. >>> >>> Using the ti,external-control property allows specifying this use-case. >> >> So the bq24735 is populated under the EC's 'i2c-tunnel' property which >> is there to specifically interface it's child devices to the host. So I >> am a bit confused why this is expose to the host if it should not be used? > > Well, it needs to access the information in the read-only registers provided by > the chip, which is allowed by the setup in place that you described. Is this to expose the current state to the kernel so we can monitor the battery state? > However, the EC has its internal state machine that decides when to start > charging, etc and so should be the only one to write registers, to avoid > conflicts. > >> Again you may right and I did find the original series [0] for this >> which specifically references the Acer Chromebook that needs this. >> However, I am not sure why this was never populated? Is there any other >> history here? > > I am also confused about why it wasn't applied earlier. However, the cros kernel > is using the very same scheme. Do you have a reference? >> What is the actual problem you see without making this change? > > There is a risk of conflict (even though it's probably not that significant), > given the low variety of possible cases here. The idea is simply to say that the > EC is in charge and to let it do its job without interfering. > >> The original series states ... >> >> "On Acer Chromebook 13 (CB5-311) this module fails to load if the >> charger is not inserted, and will error when it is removed." > > I'm confused about that comment. At this point (and with this patch), it works > normally. Ok, I think Thierry prefers to only apply fixes for problems that can be reproduced. Is there a simple way to check the battery status and charging status via say the sysfs? If I can test that this has no negative impact may be it is ok. Cheers Jon
Le mercredi 21 septembre 2016 à 08:30 +0100, Jon Hunter a écrit : > On 20/09/16 19:02, Paul Kocialkowski wrote: > > > > * PGP Signed by an unknown key > > > > Le mardi 20 septembre 2016 à 18:40 +0100, Jon Hunter a écrit : > > > > > > On 28/08/16 18:32, Paul Kocialkowski wrote: > > > > > > > > > > > > Nyan boards come with an embedded controller that controls when to > > > > enable and disable the charge. Thus, it should not be left up to the > > > > kernel to handle that. > > > > > > > > Using the ti,external-control property allows specifying this use-case. > > > > > > So the bq24735 is populated under the EC's 'i2c-tunnel' property which > > > is there to specifically interface it's child devices to the host. So I > > > am a bit confused why this is expose to the host if it should not be used? > > > > Well, it needs to access the information in the read-only registers provided > > by > > the chip, which is allowed by the setup in place that you described. > > Is this to expose the current state to the kernel so we can monitor the > battery state? Yes, that is correct. > > However, the EC has its internal state machine that decides when to start > > charging, etc and so should be the only one to write registers, to avoid > > conflicts. > > > > > > > > Again you may right and I did find the original series [0] for this > > > which specifically references the Acer Chromebook that needs this. > > > However, I am not sure why this was never populated? Is there any other > > > history here? > > > > I am also confused about why it wasn't applied earlier. However, the cros > > kernel > > is using the very same scheme. > > Do you have a reference? Sure thing, there's a similar commit for the dts[0] and one for the driver[1] (which was already merged in mainline). > > > What is the actual problem you see without making this change? > > > > There is a risk of conflict (even though it's probably not that > > significant), > > given the low variety of possible cases here. The idea is simply to say that > > the > > EC is in charge and to let it do its job without interfering. > > > > > > > > The original series states ... > > > > > > "On Acer Chromebook 13 (CB5-311) this module fails to load if the > > > charger is not inserted, and will error when it is removed." > > > > I'm confused about that comment. At this point (and with this patch), it > > works > > normally. > > Ok, I think Thierry prefers to only apply fixes for problems that can be > reproduced. Is there a simple way to check the battery status and > charging status via say the sysfs? If I can test that this has no > negative impact may be it is ok. Sure, this is exported at: /sys/class/power_supply/bq24735@5-0009 Also, note that the power-supply next branch[2] has some more fixes for the bq24735 driver. Cheers, [0]: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/e25a91f87af41e29012a4e2dd7a9ab725efd308e [1]: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/6b34e53d506b44f911d0fd246ccdc8b4e942e4ae [2]: https://git.kernel.org/cgit/linux/kernel/git/sre/linux-power-supply.git/log/?h=for-next
On 21/09/16 08:56, Paul Kocialkowski wrote: ... > Sure, this is exported at: /sys/class/power_supply/bq24735@5-0009 > Also, note that the power-supply next branch[2] has some more fixes for the > bq24735 driver. I tested the bq24735 on next-20160919 without any of your changes and when connecting or disconnecting the charger I see the following panic. Do you see this? Jon / # [ 30.120384] Unable to handle kernel NULL pointer dereference at virtual address 00000004 [ 30.128489] pgd = c0004000 [ 30.131187] [00000004] *pgd=00000000 [ 30.134759] Internal error: Oops: 17 [#1] PREEMPT SMP ARM [ 30.140141] Modules linked in: [ 30.143192] CPU: 1 PID: 71 Comm: kworker/1:1 Not tainted 4.8.0-rc6-next-20160919-00002-gbc9771827865-dirty #574 [ 30.153254] Hardware name: NVIDIA Tegra SoC (Flattened Device Tree) [ 30.159509] Workqueue: events power_supply_changed_work [ 30.164723] task: ee19f880 task.stack: ee1a0000 [ 30.169239] PC is at sbs_external_power_changed+0x50/0x5c [ 30.174624] LR is at mod_timer+0x194/0x270 [ 30.178705] pc : [<c05b0c58>] lr : [<c017cda0>] psr: 60000113 [ 30.178705] sp : ee1a1eb8 ip : 80000000 fp : ee8e3680 [ 30.190155] r10: eef98580 r9 : 00000000 r8 : 00000000 [ 30.195363] r7 : ee303000 r6 : c05afef8 r5 : ee3e03f8 r4 : ee3e03d0 [ 30.201872] r3 : 00000000 r2 : 00000000 r1 : 40000193 r0 : 00000001 [ 30.208382] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none [ 30.215497] Control: 10c5387d Table: adcf006a DAC: 00000051 [ 30.221226] Process kworker/1:1 (pid: 71, stack limit = 0xee1a0210) [ 30.227474] Stack: (0xee1a1eb8 to 0xee1a2000) [ 30.231816] 1ea0: edc0bc00 ee303000 [ 30.239973] 1ec0: c05afef8 c05aff2c edc0bc20 c045ec1c eef95c80 eef95c80 00000001 eea82d5c [ 30.248136] 1ee0: edc0bd98 00000000 ee3031c0 ee303218 c0eab740 c05afcc4 ee8e3680 ee3031c0 [ 30.256296] 1f00: eef9b800 00000000 eef98580 c0135824 eef98598 c0e02100 eef98580 ee8e3698 [ 30.264453] 1f20: 00000008 eef98598 c0e02100 ee1a0000 eef98580 c0135a74 ee840f80 ee8e3680 [ 30.272610] 1f40: c0135a3c 00000000 ee840f80 ee8e3680 c0135a3c 00000000 00000000 00000000 [ 30.280766] 1f60: 00000000 c013af18 00000000 00000000 00000000 ee8e3680 00000000 00000000 [ 30.288922] 1f80: ee1a1f80 ee1a1f80 00000000 00000000 ee1a1f90 ee1a1f90 ee1a1fac ee840f80 [ 30.297078] 1fa0: c013ae3c 00000000 00000000 c01078b8 00000000 00000000 00000000 00000000 [ 30.305234] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 30.313389] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000 [ 30.321555] [<c05b0c58>] (sbs_external_power_changed) from [<c05aff2c>] (__power_supply_changed_work+0x34/0x3c) [ 30.331623] [<c05aff2c>] (__power_supply_changed_work) from [<c045ec1c>] (class_for_each_device+0x4c/0xb4) [ 30.341254] [<c045ec1c>] (class_for_each_device) from [<c05afcc4>] (power_supply_changed_work+0x5c/0xb0) [ 30.350713] [<c05afcc4>] (power_supply_changed_work) from [<c0135824>] (process_one_work+0x124/0x33c) [ 30.359912] [<c0135824>] (process_one_work) from [<c0135a74>] (worker_thread+0x38/0x4d4) [ 30.367983] [<c0135a74>] (worker_thread) from [<c013af18>] (kthread+0xdc/0xf4) [ 30.375187] [<c013af18>] (kthread) from [<c01078b8>] (ret_from_fork+0x14/0x3c) [ 30.382391] Code: e5911000 e3a00004 ebee0b88 e5943008 (e5933004) [ 30.388504] ---[ end trace 083d55597e9a2254 ]--- [ 30.393140] Unable to handle kernel paging request at virtual address ffffffec [ 30.400342] pgd = c0004000 [ 30.403038] [ffffffec] *pgd=afffd861, *pte=00000000, *ppte=00000000 [ 30.409309] Internal error: Oops: 37 [#2] PREEMPT SMP ARM [ 30.414690] Modules linked in: [ 30.417738] CPU: 1 PID: 71 Comm: kworker/1:1 Tainted: G D 4.8.0-rc6-next-20160919-00002-gbc9771827865-dirty #574 [ 30.429013] Hardware name: NVIDIA Tegra SoC (Flattened Device Tree) [ 30.435265] task: ee19f880 task.stack: ee1a0000 [ 30.439782] PC is at kthread_data+0x4/0xc [ 30.443779] LR is at wq_worker_sleeping+0x8/0xc8 [ 30.448381] pc : [<c013b8a8>] lr : [<c01366e0>] psr: 20000193 [ 30.448381] sp : ee1a1c58 ip : eef98f28 fp : ee1a1cb4 [ 30.459836] r10: eef98a00 r9 : c0e5f000 r8 : c0d9ea00 [ 30.465048] r7 : ee19fcc8 r6 : c0e02e08 r5 : ee19f880 r4 : eef98a00 [ 30.471556] r3 : 00000000 r2 : 00000020 r1 : 00000000 r0 : ee19f880 [ 30.478066] Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment none [ 30.485268] Control: 10c5387d Table: adcf006a DAC: 00000051 [ 30.490998] Process kworker/1:1 (pid: 71, stack limit = 0xee1a0210) [ 30.497247] Stack: (0xee1a1c58 to 0xee1a2000) [ 30.501590] 1c40: eef98a00 c0833a68 [ 30.509747] 1c60: 00000001 ee117a44 c0d99280 a0000193 00000000 c0833d4c 00000001 ee117a44 [ 30.517904] 1c80: 00000000 ee117540 ee19f880 c01faf3c 00000000 ee1a0000 ee1a18ec 00000001 [ 30.526060] 1ca0: ee1a1cc8 ee19fc40 c05b0c5c 00000001 ee1a1cc4 c0833d4c ee19f880 ee1a18ec [ 30.534217] 1cc0: ee85d3c0 c012277c ee1a1cc8 ee1a1cc8 00000000 c0e5e2c4 c0e07638 ee1a1e68 [ 30.542374] 1ce0: 60000113 0000000b c05b0c5c 00000001 c05b0c5a c010b6f8 ee1a0210 0000000b [ 30.550530] 1d00: c0e07638 ee1a0000 bf000000 00000008 65000000 31313935 20303030 30613365 [ 30.558687] 1d20: 34303030 65626520 38623065 35652038 30333439 28203830 33393565 34303033 [ 30.566843] 1d40: 00002029 c01b63c4 c0004000 00000004 ee1a1e68 00000017 00000000 00000017 [ 30.575000] 1d60: 00000004 eef98580 ee8e3680 c011a424 00000004 c0115c20 ee19f880 00000000 [ 30.583156] 1d80: ee19f900 ee2ecd80 ee19f880 c014a55c c014a460 ee19f880 eef98a00 00000000 [ 30.591312] 1da0: a0000193 c0e07efc 00000017 c0115888 00000004 ee1a1e68 ee1a0000 eef98580 [ 30.599469] 1dc0: ee8e3680 c01012ac 1514622a 00000000 ee19f900 c0149578 eef98a00 ee19f900 [ 30.607626] 1de0: 00000001 00000000 eef98a38 00000000 000043e1 c014e11c ee2ecd00 ee19f900 [ 30.615781] 1e00: 00000010 00000000 00000006 00000000 00000000 edc45440 c0d992c4 00000000 [ 30.623938] 1e20: 00000001 00000000 00000000 00000001 00004b4e 00000000 00000001 c0e5f000 [ 30.632095] 1e40: 00000000 00000000 ee19f900 ee19f900 c05b0c58 60000113 ffffffff ee1a1e9c [ 30.640251] 1e60: 00000000 c010bd78 00000001 40000193 00000000 00000000 ee3e03d0 ee3e03f8 [ 30.648408] 1e80: c05afef8 ee303000 00000000 00000000 eef98580 ee8e3680 80000000 ee1a1eb8 [ 30.656566] 1ea0: c017cda0 c05b0c58 60000113 ffffffff 00000051 00000000 edc0bc00 ee303000 [ 30.664722] 1ec0: c05afef8 c05aff2c edc0bc20 c045ec1c eef95c80 eef95c80 00000001 eea82d5c [ 30.672886] 1ee0: edc0bd98 00000000 ee3031c0 ee303218 c0eab740 c05afcc4 ee8e3680 ee3031c0 [ 30.681045] 1f00: eef9b800 00000000 eef98580 c0135824 eef98598 c0e02100 eef98580 ee8e3698 [ 30.689202] 1f20: 00000008 eef98598 c0e02100 ee1a0000 eef98580 c0135a74 ee840f80 ee8e3680 [ 30.697358] 1f40: c0135a3c 00000000 ee840f80 ee8e3680 c0135a3c 00000000 00000000 00000000 [ 30.705515] 1f60: 00000000 c013af18 00000000 00000000 00000000 ee8e3680 00000000 00000000 [ 30.713672] 1f80: ee1a1f80 ee1a1f80 00000001 00010001 ee1a1f90 ee1a1f90 ee1a1fac ee840f80 [ 30.721827] 1fa0: c013ae3c 00000000 00000000 c01078b8 00000000 00000000 00000000 00000000 [ 30.729983] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 30.738140] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000 [ 30.746304] [<c013b8a8>] (kthread_data) from [<c01366e0>] (wq_worker_sleeping+0x8/0xc8) [ 30.754292] [<c01366e0>] (wq_worker_sleeping) from [<c0833a68>] (__schedule+0x45c/0x6f0) [ 30.762364] [<c0833a68>] (__schedule) from [<c0833d4c>] (schedule+0x50/0xb4) [ 30.769394] [<c0833d4c>] (schedule) from [<c012277c>] (do_exit+0x6e8/0xa90) [ 30.776340] [<c012277c>] (do_exit) from [<c010b6f8>] (die+0x470/0x488) [ 30.782853] [<c010b6f8>] (die) from [<c011a424>] (__do_kernel_fault.part.0+0x64/0x1e4) [ 30.790751] [<c011a424>] (__do_kernel_fault.part.0) from [<c0115c20>] (do_page_fault+0x398/0x3a4) [ 30.799601] [<c0115c20>] (do_page_fault) from [<c01012ac>] (do_DataAbort+0x38/0xb8) [ 30.807238] [<c01012ac>] (do_DataAbort) from [<c010bd78>] (__dabt_svc+0x58/0x80) [ 30.814613] Exception stack(0xee1a1e68 to 0xee1a1eb0) [ 30.819650] 1e60: 00000001 40000193 00000000 00000000 ee3e03d0 ee3e03f8 [ 30.827807] 1e80: c05afef8 ee303000 00000000 00000000 eef98580 ee8e3680 80000000 ee1a1eb8 [ 30.835962] 1ea0: c017cda0 c05b0c58 60000113 ffffffff [ 30.841002] [<c010bd78>] (__dabt_svc) from [<c05b0c58>] (sbs_external_power_changed+0x50/0x5c) [ 30.849593] [<c05b0c58>] (sbs_external_power_changed) from [<c05aff2c>] (__power_supply_changed_work+0x34/0x3c) [ 30.859660] [<c05aff2c>] (__power_supply_changed_work) from [<c045ec1c>] (class_for_each_device+0x4c/0xb4) [ 30.869291] [<c045ec1c>] (class_for_each_device) from [<c05afcc4>] (power_supply_changed_work+0x5c/0xb0) [ 30.878762] [<c05afcc4>] (power_supply_changed_work) from [<c0135824>] (process_one_work+0x124/0x33c) [ 30.887963] [<c0135824>] (process_one_work) from [<c0135a74>] (worker_thread+0x38/0x4d4) [ 30.896034] [<c0135a74>] (worker_thread) from [<c013af18>] (kthread+0xdc/0xf4) [ 30.903240] [<c013af18>] (kthread) from [<c01078b8>] (ret_from_fork+0x14/0x3c) [ 30.910443] Code: e34c00a4 ebff90d2 eafffff2 e5903418 (e5130014) [ 30.916520] ---[ end trace 083d55597e9a2255 ]--- [ 30.921122] Fixing recursive fault but reboot is needed!
Le mercredi 21 septembre 2016 à 11:10 +0100, Jon Hunter a écrit : > On 21/09/16 08:56, Paul Kocialkowski wrote: > > ... > > > Sure, this is exported at: /sys/class/power_supply/bq24735@5-0009 > > Also, note that the power-supply next branch[2] has some more fixes for the > > bq24735 driver. > > I tested the bq24735 on next-20160919 without any of your changes and > when connecting or disconnecting the charger I see the following panic. > Do you see this? I have not encountered that, but have been basing my work off the latest rc, not linux-next. > / # [ 30.120384] Unable to handle kernel NULL pointer dereference at virtual > address 00000004 > [ 30.128489] pgd = c0004000 > [ 30.131187] [00000004] *pgd=00000000 > [ 30.134759] Internal error: Oops: 17 [#1] PREEMPT SMP ARM > [ 30.140141] Modules linked in: > [ 30.143192] CPU: 1 PID: 71 Comm: kworker/1:1 Not tainted 4.8.0-rc6-next- > 20160919-00002-gbc9771827865-dirty #574 > [ 30.153254] Hardware name: NVIDIA Tegra SoC (Flattened Device Tree) > [ 30.159509] Workqueue: events power_supply_changed_work > [ 30.164723] task: ee19f880 task.stack: ee1a0000 > [ 30.169239] PC is at sbs_external_power_changed+0x50/0x5c > [ 30.174624] LR is at mod_timer+0x194/0x270 > [ 30.178705] pc : [<c05b0c58>] lr : [<c017cda0>] psr: 60000113 > [ 30.178705] sp : ee1a1eb8 ip : 80000000 fp : ee8e3680 > [ 30.190155] r10: eef98580 r9 : 00000000 r8 : 00000000 > [ 30.195363] r7 : ee303000 r6 : c05afef8 r5 : ee3e03f8 r4 : ee3e03d0 > [ 30.201872] r3 : 00000000 r2 : 00000000 r1 : 40000193 r0 : 00000001 > [ 30.208382] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment > none > [ 30.215497] Control: 10c5387d Table: adcf006a DAC: 00000051 > [ 30.221226] Process kworker/1:1 (pid: 71, stack limit = 0xee1a0210) > [ 30.227474] Stack: (0xee1a1eb8 to 0xee1a2000) > [ 30.231816] > 1ea0: edc0bc00 ee303000 > [ 30.239973] 1ec0: c05afef8 c05aff2c edc0bc20 c045ec1c eef95c80 eef95c80 > 00000001 eea82d5c > [ 30.248136] 1ee0: edc0bd98 00000000 ee3031c0 ee303218 c0eab740 c05afcc4 > ee8e3680 ee3031c0 > [ 30.256296] 1f00: eef9b800 00000000 eef98580 c0135824 eef98598 c0e02100 > eef98580 ee8e3698 > [ 30.264453] 1f20: 00000008 eef98598 c0e02100 ee1a0000 eef98580 c0135a74 > ee840f80 ee8e3680 > [ 30.272610] 1f40: c0135a3c 00000000 ee840f80 ee8e3680 c0135a3c 00000000 > 00000000 00000000 > [ 30.280766] 1f60: 00000000 c013af18 00000000 00000000 00000000 ee8e3680 > 00000000 00000000 > [ 30.288922] 1f80: ee1a1f80 ee1a1f80 00000000 00000000 ee1a1f90 ee1a1f90 > ee1a1fac ee840f80 > [ 30.297078] 1fa0: c013ae3c 00000000 00000000 c01078b8 00000000 00000000 > 00000000 00000000 > [ 30.305234] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 > 00000000 00000000 > [ 30.313389] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 > 00000000 00000000 > [ 30.321555] [<c05b0c58>] (sbs_external_power_changed) from [<c05aff2c>] > (__power_supply_changed_work+0x34/0x3c) > [ 30.331623] [<c05aff2c>] (__power_supply_changed_work) from [<c045ec1c>] > (class_for_each_device+0x4c/0xb4) > [ 30.341254] [<c045ec1c>] (class_for_each_device) from [<c05afcc4>] > (power_supply_changed_work+0x5c/0xb0) > [ 30.350713] [<c05afcc4>] (power_supply_changed_work) from [<c0135824>] > (process_one_work+0x124/0x33c) > [ 30.359912] [<c0135824>] (process_one_work) from [<c0135a74>] > (worker_thread+0x38/0x4d4) > [ 30.367983] [<c0135a74>] (worker_thread) from [<c013af18>] > (kthread+0xdc/0xf4) > [ 30.375187] [<c013af18>] (kthread) from [<c01078b8>] > (ret_from_fork+0x14/0x3c) > [ 30.382391] Code: e5911000 e3a00004 ebee0b88 e5943008 (e5933004) > [ 30.388504] ---[ end trace 083d55597e9a2254 ]--- > [ 30.393140] Unable to handle kernel paging request at virtual address > ffffffec > [ 30.400342] pgd = c0004000 > [ 30.403038] [ffffffec] *pgd=afffd861, *pte=00000000, *ppte=00000000 > [ 30.409309] Internal error: Oops: 37 [#2] PREEMPT SMP ARM > [ 30.414690] Modules linked in: > [ 30.417738] CPU: 1 PID: 71 Comm: kworker/1:1 Tainted: > G D 4.8.0-rc6-next-20160919-00002-gbc9771827865-dirty #574 > [ 30.429013] Hardware name: NVIDIA Tegra SoC (Flattened Device Tree) > [ 30.435265] task: ee19f880 task.stack: ee1a0000 > [ 30.439782] PC is at kthread_data+0x4/0xc > [ 30.443779] LR is at wq_worker_sleeping+0x8/0xc8 > [ 30.448381] pc : [<c013b8a8>] lr : [<c01366e0>] psr: 20000193 > [ 30.448381] sp : ee1a1c58 ip : eef98f28 fp : ee1a1cb4 > [ 30.459836] r10: eef98a00 r9 : c0e5f000 r8 : c0d9ea00 > [ 30.465048] r7 : ee19fcc8 r6 : c0e02e08 r5 : ee19f880 r4 : eef98a00 > [ 30.471556] r3 : 00000000 r2 : 00000020 r1 : 00000000 r0 : ee19f880 > [ 30.478066] Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment > none > [ 30.485268] Control: 10c5387d Table: adcf006a DAC: 00000051 > [ 30.490998] Process kworker/1:1 (pid: 71, stack limit = 0xee1a0210) > [ 30.497247] Stack: (0xee1a1c58 to 0xee1a2000) > [ 30.501590] > 1c40: eef98a00 c0833a68 > [ 30.509747] 1c60: 00000001 ee117a44 c0d99280 a0000193 00000000 c0833d4c > 00000001 ee117a44 > [ 30.517904] 1c80: 00000000 ee117540 ee19f880 c01faf3c 00000000 ee1a0000 > ee1a18ec 00000001 > [ 30.526060] 1ca0: ee1a1cc8 ee19fc40 c05b0c5c 00000001 ee1a1cc4 c0833d4c > ee19f880 ee1a18ec > [ 30.534217] 1cc0: ee85d3c0 c012277c ee1a1cc8 ee1a1cc8 00000000 c0e5e2c4 > c0e07638 ee1a1e68 > [ 30.542374] 1ce0: 60000113 0000000b c05b0c5c 00000001 c05b0c5a c010b6f8 > ee1a0210 0000000b > [ 30.550530] 1d00: c0e07638 ee1a0000 bf000000 00000008 65000000 31313935 > 20303030 30613365 > [ 30.558687] 1d20: 34303030 65626520 38623065 35652038 30333439 28203830 > 33393565 34303033 > [ 30.566843] 1d40: 00002029 c01b63c4 c0004000 00000004 ee1a1e68 00000017 > 00000000 00000017 > [ 30.575000] 1d60: 00000004 eef98580 ee8e3680 c011a424 00000004 c0115c20 > ee19f880 00000000 > [ 30.583156] 1d80: ee19f900 ee2ecd80 ee19f880 c014a55c c014a460 ee19f880 > eef98a00 00000000 > [ 30.591312] 1da0: a0000193 c0e07efc 00000017 c0115888 00000004 ee1a1e68 > ee1a0000 eef98580 > [ 30.599469] 1dc0: ee8e3680 c01012ac 1514622a 00000000 ee19f900 c0149578 > eef98a00 ee19f900 > [ 30.607626] 1de0: 00000001 00000000 eef98a38 00000000 000043e1 c014e11c > ee2ecd00 ee19f900 > [ 30.615781] 1e00: 00000010 00000000 00000006 00000000 00000000 edc45440 > c0d992c4 00000000 > [ 30.623938] 1e20: 00000001 00000000 00000000 00000001 00004b4e 00000000 > 00000001 c0e5f000 > [ 30.632095] 1e40: 00000000 00000000 ee19f900 ee19f900 c05b0c58 60000113 > ffffffff ee1a1e9c > [ 30.640251] 1e60: 00000000 c010bd78 00000001 40000193 00000000 00000000 > ee3e03d0 ee3e03f8 > [ 30.648408] 1e80: c05afef8 ee303000 00000000 00000000 eef98580 ee8e3680 > 80000000 ee1a1eb8 > [ 30.656566] 1ea0: c017cda0 c05b0c58 60000113 ffffffff 00000051 00000000 > edc0bc00 ee303000 > [ 30.664722] 1ec0: c05afef8 c05aff2c edc0bc20 c045ec1c eef95c80 eef95c80 > 00000001 eea82d5c > [ 30.672886] 1ee0: edc0bd98 00000000 ee3031c0 ee303218 c0eab740 c05afcc4 > ee8e3680 ee3031c0 > [ 30.681045] 1f00: eef9b800 00000000 eef98580 c0135824 eef98598 c0e02100 > eef98580 ee8e3698 > [ 30.689202] 1f20: 00000008 eef98598 c0e02100 ee1a0000 eef98580 c0135a74 > ee840f80 ee8e3680 > [ 30.697358] 1f40: c0135a3c 00000000 ee840f80 ee8e3680 c0135a3c 00000000 > 00000000 00000000 > [ 30.705515] 1f60: 00000000 c013af18 00000000 00000000 00000000 ee8e3680 > 00000000 00000000 > [ 30.713672] 1f80: ee1a1f80 ee1a1f80 00000001 00010001 ee1a1f90 ee1a1f90 > ee1a1fac ee840f80 > [ 30.721827] 1fa0: c013ae3c 00000000 00000000 c01078b8 00000000 00000000 > 00000000 00000000 > [ 30.729983] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 > 00000000 00000000 > [ 30.738140] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 > 00000000 00000000 > [ 30.746304] [<c013b8a8>] (kthread_data) from [<c01366e0>] > (wq_worker_sleeping+0x8/0xc8) > [ 30.754292] [<c01366e0>] (wq_worker_sleeping) from [<c0833a68>] > (__schedule+0x45c/0x6f0) > [ 30.762364] [<c0833a68>] (__schedule) from [<c0833d4c>] > (schedule+0x50/0xb4) > [ 30.769394] [<c0833d4c>] (schedule) from [<c012277c>] (do_exit+0x6e8/0xa90) > [ 30.776340] [<c012277c>] (do_exit) from [<c010b6f8>] (die+0x470/0x488) > [ 30.782853] [<c010b6f8>] (die) from [<c011a424>] > (__do_kernel_fault.part.0+0x64/0x1e4) > [ 30.790751] [<c011a424>] (__do_kernel_fault.part.0) from [<c0115c20>] > (do_page_fault+0x398/0x3a4) > [ 30.799601] [<c0115c20>] (do_page_fault) from [<c01012ac>] > (do_DataAbort+0x38/0xb8) > [ 30.807238] [<c01012ac>] (do_DataAbort) from [<c010bd78>] > (__dabt_svc+0x58/0x80) > [ 30.814613] Exception stack(0xee1a1e68 to 0xee1a1eb0) > [ 30.819650] 1e60: 00000001 40000193 00000000 00000000 > ee3e03d0 ee3e03f8 > [ 30.827807] 1e80: c05afef8 ee303000 00000000 00000000 eef98580 ee8e3680 > 80000000 ee1a1eb8 > [ 30.835962] 1ea0: c017cda0 c05b0c58 60000113 ffffffff > [ 30.841002] [<c010bd78>] (__dabt_svc) from [<c05b0c58>] > (sbs_external_power_changed+0x50/0x5c) > [ 30.849593] [<c05b0c58>] (sbs_external_power_changed) from [<c05aff2c>] > (__power_supply_changed_work+0x34/0x3c) > [ 30.859660] [<c05aff2c>] (__power_supply_changed_work) from [<c045ec1c>] > (class_for_each_device+0x4c/0xb4) > [ 30.869291] [<c045ec1c>] (class_for_each_device) from [<c05afcc4>] > (power_supply_changed_work+0x5c/0xb0) > [ 30.878762] [<c05afcc4>] (power_supply_changed_work) from [<c0135824>] > (process_one_work+0x124/0x33c) > [ 30.887963] [<c0135824>] (process_one_work) from [<c0135a74>] > (worker_thread+0x38/0x4d4) > [ 30.896034] [<c0135a74>] (worker_thread) from [<c013af18>] > (kthread+0xdc/0xf4) > [ 30.903240] [<c013af18>] (kthread) from [<c01078b8>] > (ret_from_fork+0x14/0x3c) > [ 30.910443] Code: e34c00a4 ebff90d2 eafffff2 e5903418 (e5130014) > [ 30.916520] ---[ end trace 083d55597e9a2255 ]--- > [ 30.921122] Fixing recursive fault but reboot is needed! > >
diff --git a/arch/arm/boot/dts/tegra124-nyan.dtsi b/arch/arm/boot/dts/tegra124-nyan.dtsi index 30a77ec..18db797 100644 --- a/arch/arm/boot/dts/tegra124-nyan.dtsi +++ b/arch/arm/boot/dts/tegra124-nyan.dtsi @@ -329,6 +329,7 @@ ti,ac-detect-gpios = <&gpio TEGRA_GPIO(J, 0) GPIO_ACTIVE_HIGH>; + ti,external-control; }; battery: sbs-battery@b {
Nyan boards come with an embedded controller that controls when to enable and disable the charge. Thus, it should not be left up to the kernel to handle that. Using the ti,external-control property allows specifying this use-case. Signed-off-by: Paul Kocialkowski <contact@paulk.fr> --- arch/arm/boot/dts/tegra124-nyan.dtsi | 1 + 1 file changed, 1 insertion(+)