Message ID | 20200620223915.1311485-1-j.neuschaefer@gmx.net (mailing list archive) |
---|---|
Headers | show |
Series | Netronix embedded controller driver for Kobo and Tolino ebook readers | expand |
On Sun, 21 Jun 2020, Jonathan Neuschäfer wrote: > For reference, here are the devicetree bindings in plaintext format. > (Not for merge.) This would be better placed inside the relevant patch(es), rather than in a separate non-mergeable extra/superfluous patch. > Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net> > --- > .../bindings/mfd/netronix,ntxec.txt | 58 +++++++++++++++++++ > .../bindings/pwm/netronix,ntxec-pwm.txt | 27 +++++++++ > .../bindings/rtc/netronix,ntxec-rtc.txt | 17 ++++++ > 3 files changed, 102 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mfd/netronix,ntxec.txt > create mode 100644 Documentation/devicetree/bindings/pwm/netronix,ntxec-pwm.txt > create mode 100644 Documentation/devicetree/bindings/rtc/netronix,ntxec-rtc.txt
On Mon, Jun 22, 2020 at 11:32:43AM +0100, Lee Jones wrote: > On Sun, 21 Jun 2020, Jonathan Neuschäfer wrote: > > > For reference, here are the devicetree bindings in plaintext format. > > (Not for merge.) > > This would be better placed inside the relevant patch(es), rather than > in a separate non-mergeable extra/superfluous patch. Ok, I'll put it in the patch descriptions (as long as the plaintext DT bindings are relevant for review). Thanks, Jonathan Neuschäfer > > .../bindings/mfd/netronix,ntxec.txt | 58 +++++++++++++++++++ > > .../bindings/pwm/netronix,ntxec-pwm.txt | 27 +++++++++ > > .../bindings/rtc/netronix,ntxec-rtc.txt | 17 ++++++
Hi, On Sun, 21 Jun 2020 00:39:04 +0200 Jonathan Neuschäfer <j.neuschaefer@gmx.net> wrote: > Hi, > > This patchset adds basic support for the embedded controller found on > older ebook reader boards designed by/with the ODM Netronix Inc.[1] and > sold by Kobo or Tolino, for example the Kobo Aura and the Tolino Shine. > These drivers are based on the vendor kernel sources, but in order to > all information in a single place, I documented the register interface > of the EC on GitHub[4]. > > A few things still needs to be ironed out, hence the RFC tag: > - The reboot/reset handler in patch 3/10 calls into I2C code, which may > sleep, but reboot handlers are apparently not allowed to sleep. > - I'm not sure I got the YAML DT bindings right. I have also included > the plain text DT bindings for reference. > > got a chance to test it on a Tolino Shine 2 HD. It uses the RTC from the RC5T619 but backlight seems to go via MSP430 EC. I got this. [ 1.453603] ntxec 0-0043: Netronix embedded controller version f110 detected. [ 10.723638] ntxec-rtc 21a0000.i2c:embedded-controller@43:rtc: registered as rtc0 [ 10.775276] ntxec-pwm: probe of 21a0000.i2c:embedded-controller@43:pwm failed with error -5 [ 10.850597] ntxec-rtc 21a0000.i2c:embedded-controller@43:rtc: hctosys: unable to read the hardware clock version number matchess with what the vendor kernel reports. Maybe we should document which version is running on which devices? &i2c1 { pinctrl-names = "default","sleep"; pinctrl-0 = <&pinctrl_i2c1>; pinctrl-1 = <&pinctrl_i2c1_sleep>; status = "okay"; embedded-controller@43 { // pinctrl-names = "default"; // pinctrl-0 = <&pinctrl_ec>; compatible = "netronix,ntxec"; reg = <0x43>; interrupts-extended = <&gpio5 11 IRQ_TYPE_EDGE_FALLING>; interrupt-controller; #interrupt-cells = <1>; ec_pwm: pwm { compatible = "netronix,ntxec-pwm"; #pwm-cells = <2>; }; rtc { compatible = "netronix,ntxec-rtc"; }; }; }; Regards, Andreas
On Tue, Jun 30, 2020 at 08:40:51AM +0200, Andreas Kemnade wrote: [...] > got a chance to test it on a Tolino Shine 2 HD. > It uses the RTC from the RC5T619 but backlight seems to go via MSP430 > EC. > > I got this. > > [ 1.453603] ntxec 0-0043: Netronix embedded controller version f110 detected. > [ 10.723638] ntxec-rtc 21a0000.i2c:embedded-controller@43:rtc: registered as rtc0 > [ 10.775276] ntxec-pwm: probe of 21a0000.i2c:embedded-controller@43:pwm failed with error -5 Hmm, -EIO from the PWM driver. > [ 10.850597] ntxec-rtc 21a0000.i2c:embedded-controller@43:rtc: hctosys: unable to read the hardware clock > > version number matchess with what the vendor kernel reports. Maybe we > should document which version is running on which devices? Good idea, I've added a table to the wiki page: https://github.com/neuschaefer/linux/wiki/Netronix-MSP430-embedded-controller Jonathan
On Tue, 30 Jun 2020 09:15:23 +0200 Jonathan Neuschäfer <j.neuschaefer@gmx.net> wrote: > On Tue, Jun 30, 2020 at 08:40:51AM +0200, Andreas Kemnade wrote: > [...] > > got a chance to test it on a Tolino Shine 2 HD. > > It uses the RTC from the RC5T619 but backlight seems to go via MSP430 > > EC. > > > > I got this. > > > > [ 1.453603] ntxec 0-0043: Netronix embedded controller version f110 detected. > > [ 10.723638] ntxec-rtc 21a0000.i2c:embedded-controller@43:rtc: registered as rtc0 > > [ 10.775276] ntxec-pwm: probe of 21a0000.i2c:embedded-controller@43:pwm failed with error -5 > > Hmm, -EIO from the PWM driver. > Weird... IOMUXC_SW_PAD_CTL_PAD_I2C1_SDA/SCL is identical between vendor kernel (heavily patched 3.0.35) and patched mainline. MX6SL_PAD_I2C1_SCL__I2C1_SCL 0x4001f8b1 MX6SL_PAD_I2C1_SDA__I2C1_SDA 0x4001f8b1 root@tolino2:~# i2cset -f 0 0x43 0xa3 0x0001 w WARNING! This program can confuse your I2C bus, cause data loss and worse! I will write to device file /dev/i2c-0, chip address 0x43, data address 0xa3, data 0x01, mode word. Continue? [Y/n] Error: Write failed root@tolino2:~# i2cset -f 0 0x43 0xa3 0x0000 w WARNING! This program can confuse your I2C bus, cause data loss and worse! I will write to device file /dev/i2c-0, chip address 0x43, data address 0xa3, data 0x00, mode word. Continue? [Y/n] Error: Write failed but backlight gets toggled. Same behavior on vendor kernel and in vendor uboot. That smells. Regards, Andreas
On Tue, 30 Jun 2020 09:15:23 +0200 Jonathan Neuschäfer <j.neuschaefer@gmx.net> wrote: > On Tue, Jun 30, 2020 at 08:40:51AM +0200, Andreas Kemnade wrote: > [...] > > got a chance to test it on a Tolino Shine 2 HD. > > It uses the RTC from the RC5T619 but backlight seems to go via MSP430 > > EC. > > > > I got this. > > > > [ 1.453603] ntxec 0-0043: Netronix embedded controller version f110 detected. > > [ 10.723638] ntxec-rtc 21a0000.i2c:embedded-controller@43:rtc: registered as rtc0 > > [ 10.775276] ntxec-pwm: probe of 21a0000.i2c:embedded-controller@43:pwm failed with error -5 > > Hmm, -EIO from the PWM driver. > turing debugging on: [ 330.330599] i2c i2c-0: <i2c_imx_xfer_common> [ 330.330621] i2c i2c-0: <i2c_imx_start> [ 330.332927] i2c i2c-0: <i2c_imx_bus_busy> [ 330.332953] i2c i2c-0: <i2c_imx_xfer_common> transfer message: 0 [ 330.332971] i2c i2c-0: <i2c_imx_write> write slave address: addr=0x86 [ 330.334365] i2c i2c-0: <i2c_imx_trx_complete> TRX complete [ 330.334386] i2c i2c-0: <i2c_imx_acked> ACK received [ 330.334402] i2c i2c-0: <i2c_imx_write> write data [ 330.334420] i2c i2c-0: <i2c_imx_write> write byte: B0=0xA3 [ 330.334756] i2c i2c-0: <i2c_imx_trx_complete> TRX complete [ 330.334774] i2c i2c-0: <i2c_imx_acked> ACK received [ 330.334790] i2c i2c-0: <i2c_imx_write> write byte: B1=0x0 [ 330.351573] i2c i2c-0: <i2c_imx_trx_complete> TRX complete [ 330.351598] i2c i2c-0: <i2c_imx_acked> No ACK [ 330.351613] i2c i2c-0: <i2c_imx_stop> [ 330.351629] i2c i2c-0: <i2c_imx_bus_busy> [ 330.351648] i2c i2c-0: <i2c_imx_xfer_common> exit with: error: -6 [ 330.351690] i2c i2c-0: <i2c_imx_xfer_common> [ 330.351704] i2c i2c-0: <i2c_imx_start> [ 330.352297] i2c i2c-0: <i2c_imx_bus_busy> [ 330.352321] i2c i2c-0: <i2c_imx_xfer_common> transfer message: 0 [ 330.352339] i2c i2c-0: <i2c_imx_write> write slave address: addr=0x86 [ 330.362152] i2c i2c-0: <i2c_imx_trx_complete> TRX complete [ 330.362176] i2c i2c-0: <i2c_imx_acked> ACK received [ 330.362191] i2c i2c-0: <i2c_imx_write> write data [ 330.362208] i2c i2c-0: <i2c_imx_write> write byte: B0=0xA1 [ 330.362442] i2c i2c-0: <i2c_imx_trx_complete> TRX complete [ 330.362461] i2c i2c-0: <i2c_imx_acked> ACK received [ 330.362479] i2c i2c-0: <i2c_imx_write> write byte: B1=0xFF [ 330.362686] i2c i2c-0: <i2c_imx_trx_complete> TRX complete [ 330.362705] i2c i2c-0: <i2c_imx_acked> No ACK [ 330.362720] i2c i2c-0: <i2c_imx_stop> [ 330.362735] i2c i2c-0: <i2c_imx_bus_busy> [ 330.362753] i2c i2c-0: <i2c_imx_xfer_common> exit with: error: -6 [ 330.362794] i2c i2c-0: <i2c_imx_xfer_common> [ 330.362808] i2c i2c-0: <i2c_imx_start> [ 330.363071] i2c i2c-0: <i2c_imx_bus_busy> [ 330.363094] i2c i2c-0: <i2c_imx_xfer_common> transfer message: 0 [ 330.363112] i2c i2c-0: <i2c_imx_write> write slave address: addr=0x86 [ 330.363313] i2c i2c-0: <i2c_imx_trx_complete> TRX complete [ 330.363331] i2c i2c-0: <i2c_imx_acked> ACK received [ 330.363346] i2c i2c-0: <i2c_imx_write> write data [ 330.363362] i2c i2c-0: <i2c_imx_write> write byte: B0=0xA2 [ 330.363572] i2c i2c-0: <i2c_imx_trx_complete> TRX complete [ 330.363591] i2c i2c-0: <i2c_imx_acked> ACK received [ 330.363608] i2c i2c-0: <i2c_imx_write> write byte: B1=0xFF [ 330.363822] i2c i2c-0: <i2c_imx_trx_complete> TRX complete [ 330.363841] i2c i2c-0: <i2c_imx_acked> No ACK [ 330.363854] i2c i2c-0: <i2c_imx_stop> [ 330.363869] i2c i2c-0: <i2c_imx_bus_busy> [ 330.363886] i2c i2c-0: <i2c_imx_xfer_common> exit with: error: -6 Regards, Andreas
On Tue, Jun 30, 2020 at 10:14:47PM +0200, Andreas Kemnade wrote: > On Tue, 30 Jun 2020 09:15:23 +0200 > Jonathan Neuschäfer <j.neuschaefer@gmx.net> wrote: > > > On Tue, Jun 30, 2020 at 08:40:51AM +0200, Andreas Kemnade wrote: > > [...] > > > got a chance to test it on a Tolino Shine 2 HD. > > > It uses the RTC from the RC5T619 but backlight seems to go via MSP430 > > > EC. > > > > > > I got this. > > > > > > [ 1.453603] ntxec 0-0043: Netronix embedded controller version f110 detected. > > > [ 10.723638] ntxec-rtc 21a0000.i2c:embedded-controller@43:rtc: registered as rtc0 > > > [ 10.775276] ntxec-pwm: probe of 21a0000.i2c:embedded-controller@43:pwm failed with error -5 > > > > Hmm, -EIO from the PWM driver. > > > turing debugging on: (edited for compactness:) > [ 330.332971] i2c i2c-0: write slave address: addr=0x86 ACK received > [ 330.334420] i2c i2c-0: write byte: B0=0xA3 ACK received > [ 330.334790] i2c i2c-0: write byte: B1=0x0 No ACK > [ 330.352339] i2c i2c-0: write slave address: addr=0x86 ACK received > [ 330.362208] i2c i2c-0: write byte: B0=0xA1 ACK received > [ 330.362479] i2c i2c-0: write byte: B1=0xFF No ACK > [ 330.363112] i2c i2c-0: write slave address: addr=0x86 ACK received > [ 330.363362] i2c i2c-0: write byte: B0=0xA2 ACK received > [ 330.363608] i2c i2c-0: write byte: B1=0xFF No ACK Hmm, it doesn't ack the writes to 0xA3, 0xA1 and 0xA2, which should disable the PWM output and then disable the auto-off timer (according to the vendor kernel). And you said in your other mail that you can actually toggle the light with writes to 0xA3, so I suspect a bug in the EC firmware here (which may have gone unnoticed because the vendor kernel doesn't check if the i2c transfers succeed). :/ IMHO we should get this driver merged first, and perhaps add a quirk to deal with the missing ACKs later (unless a better solution is found). Jonathan
On Sat, 4 Jul 2020 22:58:08 +0200 Jonathan Neuschäfer <j.neuschaefer@gmx.net> wrote: > On Tue, Jun 30, 2020 at 10:14:47PM +0200, Andreas Kemnade wrote: > > On Tue, 30 Jun 2020 09:15:23 +0200 > > Jonathan Neuschäfer <j.neuschaefer@gmx.net> wrote: > > > > > On Tue, Jun 30, 2020 at 08:40:51AM +0200, Andreas Kemnade wrote: > > > [...] > > > > got a chance to test it on a Tolino Shine 2 HD. > > > > It uses the RTC from the RC5T619 but backlight seems to go via MSP430 > > > > EC. > > > > > > > > I got this. > > > > > > > > [ 1.453603] ntxec 0-0043: Netronix embedded controller version f110 detected. > > > > [ 10.723638] ntxec-rtc 21a0000.i2c:embedded-controller@43:rtc: registered as rtc0 > > > > [ 10.775276] ntxec-pwm: probe of 21a0000.i2c:embedded-controller@43:pwm failed with error -5 > > > > > > Hmm, -EIO from the PWM driver. > > > > > turing debugging on: > > (edited for compactness:) > > [ 330.332971] i2c i2c-0: write slave address: addr=0x86 ACK received > > [ 330.334420] i2c i2c-0: write byte: B0=0xA3 ACK received > > [ 330.334790] i2c i2c-0: write byte: B1=0x0 No ACK > > > [ 330.352339] i2c i2c-0: write slave address: addr=0x86 ACK received > > [ 330.362208] i2c i2c-0: write byte: B0=0xA1 ACK received > > [ 330.362479] i2c i2c-0: write byte: B1=0xFF No ACK > > > [ 330.363112] i2c i2c-0: write slave address: addr=0x86 ACK received > > [ 330.363362] i2c i2c-0: write byte: B0=0xA2 ACK received > > [ 330.363608] i2c i2c-0: write byte: B1=0xFF No ACK > > Hmm, it doesn't ack the writes to 0xA3, 0xA1 and 0xA2, which should > disable the PWM output and then disable the auto-off timer (according to > the vendor kernel). > > And you said in your other mail that you can actually toggle the light > with writes to 0xA3, so I suspect a bug in the EC firmware here (which > may have gone unnoticed because the vendor kernel doesn't check if the > i2c transfers succeed). :/ > That is a also my theory. > IMHO we should get this driver merged first, and perhaps add a quirk to > deal with the missing ACKs later (unless a better solution is found). > Yes, that can be done separately (after the Tolino Shine 2 HD dtb is in, I am polishing it right now). Regards, Andreas