[Letux-kernel] letux-4.7-rc7: charging & ethernet gadget
H. Nikolaus Schaller
hns at goldelico.com
Wed Jul 20 22:53:06 CEST 2016
> Am 20.07.2016 um 20:07 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>
>
>> Am 20.07.2016 um 12:08 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>
>>
>>> Am 20.07.2016 um 11:17 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>>
>>> Hi Andreas,
>>>
>>>>
>>>>> [ 60.034973] twl4030 REG_BCICTL1 = 12
>>>>> [ 60.046569] twl4030 REG_BCICTL2 = 00
>>>>> [ 60.061920] twl4030 current = 10 uA
>>>>> [ 60.074676] twl4030 res = 0 Ohm
>>>>> [ 60.089141] twl4030 temp = 59 C
>>>>> temp: 56°C
>>>>
>>>> This means ITHEN is disabled after boot! For whatever reasons.
>>>
>>> I can't even set the ITHEN bit!
>>>
>>> [ 279.510040] twl4030_madc_set_current_generator read regval = 12
>>> [ 279.517547] twl4030_madc_set_current_generator write regval = 1a
>>> [ 279.527343] twl4030_madc_set_current_generator read back regval = 12
>
> it is not lost in software but by hardware:
>
> [ 67.609069] twl_i2c_read 2 23->97[1] -> 12...
> [ 67.613647] twl4030_madc_set_current_generator read regval = 12
> [ 67.620941] twl4030_madc_set_current_generator write regval = 1a
> [ 67.628112] twl_i2c_write 2 23->97[1] -> 1a...
> [ 67.637786] twl_i2c_read 2 23->97[1] -> 12...
> [ 67.637817] twl4030_madc_set_current_generator read back regval = 12
I have now looked through the full boot log and ~13.30 seconds
the register value is 0x1b. For ca. 30ms. Then it goes back to 0x12.
Here an interesting sequence:
[ 13.296447] musb-hdrc musb-hdrc.0.auto: power state already 0
[ 13.296478] twl4030_bci 48070000.i2c:twl at 48:bci: OTG notify 1
[ 13.296478] twl4030_bci 48070000.i2c:twl at 48:bci: OTG notify USB_EVENT_VBUS
^^^ twl4030_bci_usb_work() prints this message
vvv this must be twl4030_charger_enable_usb()
[ 13.296508] twl_i2c_write 14 0a->0a[2] -> 00...
[ 13.296661] twl_i2c_write 14 13->13[1] -> 20...
[ 13.296966] twl_i2c_read 14 13->13[1] -> de...
^^^ oops. Another unwriteable register?
seems to belong to madc (14 = TWL4030_BASEADD_MADC).
See: http://lxr.free-electrons.com/source/drivers/mfd/twl-core.c#L174
[ 13.297180] twl_i2c_read 14 4d->4d[2] -> 40...
vvv this is ac_available()
[ 13.297180] twl4030_madc_conversion ret=1
[ 13.297180] twl4030_madc_read chan=11 val=9
[ 13.297210] twl4030_bci vac 9
[ 13.297210] twl4030_bci 48070000.i2c:twl at 48:bci: cgain 0
[ 13.297454] twl_i2c_read 2 23->97[1] -> 12...
^^^ still 0x12
[ 13.297851] twl_i2c_read 3 07->3d[1] -> 35...
[ 13.298004] twl_i2c_read 9 05->05[1] -> 80...
[ 13.298095] twl_i2c_read 2 1d->91[1] -> 59...
[ 13.298370] twl_i2c_read 2 1e->92[1] -> 9f...
[ 13.298370] twl4030_bci 48070000.i2c:twl at 48:bci: cur 500000 reg 812
[ 13.298583] twl_i2c_read 2 27->9b[1] -> 00...
[ 13.298828] twl_i2c_read 2 28->9c[1] -> 02...
[ 13.298828] twl_i2c_write 2 11->85[1] -> e7...
[ 13.299011] twl_i2c_write 2 28->9c[1] -> 03...
[ 13.299194] twl_i2c_write 2 11->85[1] -> e7...
[ 13.299377] twl_i2c_write 2 27->9b[1] -> 2c...
[ 13.299743] twl_i2c_read 3 07->3d[1] -> 35...
[ 13.299743] twl_i2c_write 3 07->3d[1] -> 37...
[ 13.300170] twl_i2c_read 2 10->84[1] -> f0...
[ 13.300170] twl_i2c_write 2 10->84[1] -> f4...
[ 13.300567] twl_i2c_read 9 05->05[1] -> 80...
[ 13.300933] twl_i2c_read 1 01->81[1] -> 04...
vvv here an interrupt occurs and both interrupt status registers are read
[ 13.301116] twl_i2c_read 15 00->b9[1] -> 08...
[ 13.301300] twl_i2c_read 15 01->ba[1] -> 00...
[ 13.301330] twl4030_bci 48070000.i2c:twl at 48:bci: BCI irq 00 08
vvv seems to be twl4030_charger_update_current()
[ 13.301391] twl_i2c_write 14 0a->0a[2] -> 00...
[ 13.301544] twl_i2c_write 14 13->13[1] -> 20...
[ 13.301879] twl_i2c_read 14 13->13[1] -> de...
^^^ oops again!
[ 13.302062] twl_i2c_read 14 4d->4d[2] -> 00...
vvv this is ac_available()
[ 13.302062] twl4030_madc_conversion ret=1
[ 13.302093] twl4030_madc_read chan=11 val=0
[ 13.302093] twl4030_bci vac 0
[ 13.302093] twl4030_bci 48070000.i2c:twl at 48:bci: cgain 0
[ 13.302246] twl4030_bci 48070000.i2c:twl at 48:bci: get_property: 4
[ 13.302398] twl_i2c_read 2 23->97[1] -> 1b...
^^^ now 0x1b - some of the previous i2c_write must have enabled
[ 13.302581] twl_i2c_read 3 07->3d[1] -> 37...
[ 13.302886] twl_i2c_read 2 1d->91[1] -> 59...
[ 13.303009] twl4030_bci 48070000.i2c:twl at 48:bci: get_property: 4
[ 13.303100] twl_i2c_read 2 1e->92[1] -> 9f...
[ 13.303131] twl4030_bci 48070000.i2c:twl at 48:bci: cur 500000 reg 812
...
shortly after than I get
[ 13.334228] twl4030_bci 48070000.i2c:twl at 48:bci: BCI irq 00 08
[ 13.334289] twl_i2c_write 14 0a->0a[2] -> 00...
[ 13.334472] twl_i2c_write 14 13->13[1] -> 20...
[ 13.334808] twl_i2c_read 14 13->13[1] -> de...
vvv this differs a little - but I don't know if it is relevant
[ 13.334991] twl_i2c_read 14 4d->4d[2] -> 40...
vvv this is ac_available()
[ 13.335021] twl4030_madc_conversion ret=1
[ 13.335021] twl4030_madc_read chan=11 val=9
[ 13.335021] twl4030_bci vac 9
[ 13.335052] twl4030_bci 48070000.i2c:twl at 48:bci: cgain 0
[ 13.335266] twl_i2c_read 2 23->97[1] -> 12...
^^^ now 0x12 - something has disabled ITHEN in between
Looks as if I should trace twl4030_charger_enable_usb()
twl4030_charger_update_current() and friends. Tomorrow...
BR,
Nikolaus
More information about the Letux-kernel
mailing list