Hi Geert, > Subject: Re: [PATCH] tty: serial: sh-sci: Fix transmit end interrupt handler > > Hi Biju, > > On Fri, Mar 17, 2023 at 2:47 PM Biju Das <biju.das.jz@xxxxxxxxxxxxxx> wrote: > > > Subject: Re: [PATCH] tty: serial: sh-sci: Fix transmit end interrupt > > > handler On Fri, Mar 17, 2023 at 10:15 AM Biju Das > > > <biju.das.jz@xxxxxxxxxxxxxx> > > > wrote: > > > > > Subject: Re: [PATCH] tty: serial: sh-sci: Fix transmit end > > > > > interrupt handler On Fri, Mar 17, 2023 at 9:08 AM Biju Das > > > <biju.das.jz@xxxxxxxxxxxxxx> wrote: > > > > > > > Subject: Re: [PATCH] tty: serial: sh-sci: Fix transmit end > > > > > > > interrupt handler On Fri, Mar 17, 2023 at 8:59 AM Biju Das > > > > > <biju.das.jz@xxxxxxxxxxxxxx> wrote: > > > > > > > > > Subject: Re: [PATCH] tty: serial: sh-sci: Fix transmit > > > > > > > > > end interrupt handler On Thu, Mar 16, 2023 at 5:34 PM > > > > > > > > > Biju Das > > > > > > > <biju.das.jz@xxxxxxxxxxxxxx> wrote: > > > > > > > > > > > Subject: Re: [PATCH] tty: serial: sh-sci: Fix > > > > > > > > > > > transmit end interrupt handler > > > > > > > > > > > > > > > > > > > > On Thu, Mar 16, 2023 at 5:01 PM Biju Das > > > > > > > > > > > <biju.das.jz@xxxxxxxxxxxxxx> > > > > > > > > > wrote: > > > > > > > > > > > > The RZ SCI/ RZ/A1 SCIF has only 4 interrupts. The > > > > > > > > > > > > fourth interrupt is transmit end interrupt, so > > > > > > > > > > > > shuffle the interrupts to fix the transmit end > > > > > > > > > > > > interrupt handler for these > > > > > IPs. > > > > > > > > > > > > > > > > > > > > > > > > Fixes: 392fb8df528b ("serial: sh-sci: Use > > > > > > > > > > > > platform_get_irq_optional() for optional > > > > > > > > > > > > interrupts") > > > > > > > > > > > > > > > > > > > > > > I don't think that's the right bad commit. > > > > > > > > > > > > > > > > > > > > OK. I will use below commit as fixes one, that is the > > > > > > > > > > commit which added RZ/A1 SCIF with 4 interrupts. > > > > > > > > > > > > > > > > > > > > commit 8b0bbd956228ae87 ("serial: sh-sci: Add support > > > > > > > > > > for > > > > > > > > > > R7S9210") > > > > > > > > > > > > > > > > > > That one added support for RZ/A2, and is also not the > > > > > > > > > bad > > > commit? > > > > > > > > > > > > > > > > OK will use below one, > > > > > > > > > > > > > > > > Fixes: 4c84c1b3acca ("ARM: shmobile: r7s72100: add scif > > > > > > > > nodes to > > > > > > > > dtsi") > > > > > > > > > > > > > > This really starts to look like a guessing game... Beep ;-) > > > > > > > > > > > > Already there is a generic compatible in driver, where we > > > > > > started introducing RZ/A1 SoC With 4 interrupts. So addition > > > > > > of this SoC has this > > > > > issue. Am I missing anything here? > > > > > > > > > > The rabbit hole seems to be deeper than I thought... > > > > > > > > > > Looking at the code, the driver always assumed the fourth > > > > > interrupt is BRI, which matches the RZ/A1 datasheet for SCIF. > > > > > So the 4 IRQ case is really a subset of the 6 IRQ case, and > > > > > Documentation/devicetree/bindings/serial/renesas,scif.yaml > > > > > is wrong. > > > > > > > > OK. > > > > > > > > > > > > > > However, SCI(g) is the odd one (also on SH): it has TEI as the > > > > > fourth IRQ, which I probably missed when doing the json-schema > > > > > conversion in commit 384d00fae8e51f8f ("dt-bindings: serial: sh-sci: > > > > > Convert to json-schema"), leading to the bug in scif.yaml. > > > > > > > > > > Note that the driver never looks at the interrupt names, but > > > > > uses indices exclusively. > > > > > > > > > > So I guess SCI has been broken on SH since forever, too? > > > > > > > > I think so, by looking at the changes done in tx to make it work > > > > on > > > RZ/G2UL. > > > > On RZ/G2UL both rx and tx is broken. > > > > > > > > Not sure SCI is tested ever on SH platform?? > > > > > > > > Can any SH platform person confirm this? > > > > > > SCI is only supported on > > > - sh770x, > > > - sh7750 (excluding rts7751r2d) > > > I know it's not exposed on my landisk, > > > - sh7760, for the SIM-port, which I doubt anyone uses. > > > > > > FTR, I tried the "obvious" thing (remove the rts7751r2d-checks in > > > arch/sh/kernel/cpu/sh4/setup-sh7750.c, and replace sci_br_interrupt > > > as the interrupt handler by sci_tx_interrupt in sh-sci.c), but that > > > didn't make > > > ttySC0 work on qemu/rts7751r2d. > > > > I am not seeing any SH platform SoCs in[1] and RZ/A2 does not have any > > SCI nodes defined in dts, > > Most SH platforms have not been converted to DT yet: > > $ git grep -w PORT_SCI -- arch/sh > arch/sh/kernel/cpu/sh3/setup-sh770x.c: .type = PORT_SCI, > arch/sh/kernel/cpu/sh4/setup-sh7750.c: .type = PORT_SCI, > arch/sh/kernel/cpu/sh4/setup-sh7760.c: .type = PORT_SCI, > > But I just realized the above are not affected, as they define either > 1 or 3 interrupts for the SCI port instead of. OK. > > > So Shall I use the below fixes tag instead, as it is documented in dt > > bindings and is the first SoC with broken irq handler?? > > > > Fixes: f9a2adcc9e90 ("arm64: dts: renesas: r9a07g044: Add SCI[0-1] > > nodes") > > That's a DTS change, while the bug is in the driver? > > The bug seems to be present in all versions since modern git of the sh-sci > serial driver. > More archaeology shows early versions used hardcoded lists of 3 interrupts > for SCI, avoiding the issue. The even older sh-sci character device driver > registered only 3 interrupt handlers when built with SCI support only. > > So the issue only started to appear (if anyone noticed at all) with the > (removed) DT-based H8/300 architecture, which described 4 interrupts in DT, > which the sh-sci driver handles incorrectly. > > So if you insist on a Fixes line: > Fixes: e1d0be616186906d ("sh-sci: Add h8300 SCI") Thanks, I will use this. > > > With below check in driver. > > > > + /* > > + * The fourth interrupt on SCI port is transmit end interrupt, so > > + * shuffle the interrupts. > > + */ > > + if (p->type == PORT_SCI) > > + swap(sci_port->irqs[SCIx_BRI_IRQ], > > + sci_port->irqs[SCIx_TEI_IRQ]); > > Thanks, LGTM. OK, Will send next version with these changes. Cheers, Biju