serial: sh-sci: modify sci_break_ctl()
Subsystems (2)
PATCH v2 1/1 serial: sh-sci: modify sci_break_ctl()
SCIF modules which have SCSPTR can output the break signal. This patch supports it.
This patch tested on sh7757lcr.
---
about v2:
- add serial_sci.h
- change sci_in/sci_out to serial_port_in/serial_port_out
drivers/tty/serial/sh-sci.c | 30 ++++++++++++++++++++++++++---- include/linux/serial_sci.h | 2 ++ 2 files changed, 28 insertions(+), 4 deletions(-)
drivers/tty/serial/sh-sci.c +26 -4
@@ -1564,10 +1564,32 @@ static void sci_enable_ms(struct uart_port *port)static void sci_break_ctl (struct uart_port *port,int break_state) { -/* -* Not supported by hardware. Most parts couple break and rx -* interrupts together, with break detection always enabled. -*/ +struct sci_port *s =to_sci_port (port); +unsigned short scscr, scsptr; + +switch (s->cfg->regtype) { +case SCIx_SH4_SCIF_REGTYPE: + scsptr =serial_port_in (port,SCSPTR ); + scscr =serial_port_in (port,SCSCR ); + +if (break_state =-1 ) { + scsptr = (scsptr |SCSPTR_SPB2IO ) & ~SCSPTR_SPB2DT ; + scscr &= ~SCSCR_TE ; + }else { + scsptr = (scsptr |SCSPTR_SPB2DT ) & ~SCSPTR_SPB2IO ; + scscr |=SCSCR_TE ; + } + +serial_port_out (port,SCSPTR , scsptr); +serial_port_out (port,SCSCR , scscr); +break ; +default : +/* +* Not supported by hardware. Most parts couple break and rx +* interrupts together, with break detection always enabled. +*/ +break ; + } }#ifdef CONFIG_SERIAL_SH_SCI_DMA
include/linux/serial_sci.h +2 -0
@@ -52,6 +52,8 @@ enum {/* SCSPTR, optional */ #define SCSPTR_RTSIO (1 << 7)#define SCSPTR_CTSIO (1 << 5) +#define SCSPTR_SPB2IO (1 << 1) +#define SCSPTR_SPB2DT (1 << 0)/* Offsets into the sci_port->irqs array */ enum {
Signature · 1 line
1.7.1
Quoted 4 lines · Yoshihiro
SCIF modules which have SCSPTR can output the break signal. This patch supports it.
This patch tested on sh7757lcr.
Hi Shimoda-san,
I have checked that this change boots on the sh7757lcr and that the serial console seems to work. I am curious to know if there is anything else that can be tested.
Quoted 72 lines
Signed-off-by Yoshihiro Shimoda <[email protected]>---
about v2:
- addserial_sci.h
- change sci_in/sci_out to serial_port_in/serial_port_outdrivers/tty/serial/sh-sci.c | 30 ++++++++++++++++++++++++++---- include/linux/serial_sci.h | 2 ++ 2 files changed, 28 insertions(+), 4 deletions(-)drivers/tty/serial/sh-sci.c +26
-4@@ -1564,10 +1564,32 @@ static void sci_enable_ms(struct uart_port *port)static void sci_break_ctl (struct uart_port *port,int break_state) { -/* -* Not supported by hardware. Most parts couple break and rx -* interrupts together, with break detection always enabled. -*/ +struct sci_port *s =to_sci_port (port); +unsigned short scscr, scsptr; + +switch (s->cfg->regtype) { +case SCIx_SH4_SCIF_REGTYPE: + scsptr =serial_port_in (port,SCSPTR ); + scscr =serial_port_in (port,SCSCR ); + +if (break_state =-1 ) { + scsptr = (scsptr |SCSPTR_SPB2IO ) & ~SCSPTR_SPB2DT ; + scscr &= ~SCSCR_TE ; + }else { + scsptr = (scsptr |SCSPTR_SPB2DT ) & ~SCSPTR_SPB2IO ; + scscr |=SCSCR_TE ; + } + +serial_port_out (port,SCSPTR , scsptr); +serial_port_out (port,SCSCR , scscr); +break ; +default : +/* +* Not supported by hardware. Most parts couple break and rx +* interrupts together, with break detection always enabled. +*/ +break ; + } }#ifdef CONFIG_SERIAL_SH_SCI_DMA include/linux/serial_sci.h +2
-0@@ -52,6 +52,8 @@ enum {/* SCSPTR, optional */ #define SCSPTR_RTSIO (1 << 7)#define SCSPTR_CTSIO (1 << 5) +#define SCSPTR_SPB2IO (1 << 1) +#define SCSPTR_SPB2DT (1 << 0)/* Offsets into the sci_port->irqs array */ enum {Signature · 5 lines
1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Simon-san,
Quoted 11 lines · Simon Horman
Quoted 4 lines · Yoshihiro
SCIF modules which have SCSPTR can output the break signal. This patch supports it.
This patch tested on sh7757lcr.
Hi Shimoda-san,
I have checked that this change boots on the sh7757lcr and that the serial console seems to work. I am curious to know if there is anything else that can be tested.
Thank you for the check.setup-xxxx.c which have "PORT_SCIF" can be tested:
- SH7724, SH7785, R8A7779, etc.
Best regards,
Yoshihiro Shimoda
Quoted 11 lines · Yoshihiro
Hi Simon-san,
Quoted 8 lines · Simon Horman
Quoted 4 lines · Yoshihiro
SCIF modules which have SCSPTR can output the break signal. This patch supports it.
This patch tested on sh7757lcr.
Hi Shimoda-san,
Quoted 7 lines
Quoted 3 lines
I have checked that this change boots on the sh7757lcr and that the serial console seems to work. I am curious to know if there is anything else that can be tested.
Thank you for the check.
setup-xxxx.cwhich have "PORT_SCIF" can be tested:
- SH7724, SH7785, R8A7779, etc.
Thanks, I will try and test on ecovec which I believe has SH7724. Do you have any information on how I should test the code, other than booting it
Quoted 7 lines · Simon Horman
Quoted 4 lines · Yoshihiro
Thank you for the check.
setup-xxxx.cwhich have "PORT_SCIF" can be tested:
- SH7724, SH7785, R8A7779, etc.Thanks, I will try and test on ecovec which I believe has SH7724.
Yes, ecovec has SH7724.
Quoted 2 lines
Do you have any information on how I should test the code, other than booting it
If userland calls ioctl with TIOCSBRK/TIOCCBRK, the sci_break_ctl is called. After TIOCSBRK we cannot send data from SCIF. After TIOCCBRK, we can send data from SCIF.
Best regards,
Yoshihiro Shimoda
Quoted 9 lines · Yoshihiro
Quoted 7 lines · Simon Horman
Quoted 4 lines · Yoshihiro
Thank you for the check.
setup-xxxx.cwhich have "PORT_SCIF" can be tested:
- SH7724, SH7785, R8A7779, etc.Thanks, I will try and test on ecovec which I believe has SH7724.
Quoted 8 lines
Yes, ecovec has SH7724.
Quoted 2 lines
Do you have any information on how I should test the code, other than booting it
If userland calls ioctl with TIOCSBRK/TIOCCBRK, the
sci_break_ctlis called. After TIOCSBRK we cannot send data from SCIF. After TIOCCBRK, we can send data from SCIF.
Thanks, that make a lot of sense.
Unfortunately the ecovec doesn't exercise the new code as the regtype of its scif is SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE but your code only operates on SCIx_SH4_SCIF_REGTYPE.
Quoted 11 lines · Simon Horman
Quoted 4 lines · Yoshihiro
If userland calls ioctl with TIOCSBRK/TIOCCBRK, the
sci_break_ctlis called. After TIOCSBRK we cannot send data from SCIF. After TIOCCBRK, we can send data from SCIF.Thanks, that make a lot of sense.
Unfortunately the ecovec doesn't exercise the new code as the regtype of its scif is
SCIx_SH4_SCIF_NO_SCSPTR_REGTYPEbut your code only operates onSCIx_SH4_SCIF_REGTYPE.
Sorry I forgot that the SH7724 has SCIF and SCIFA.
The ecovec uses SCIF, and it doesn't have SCSPTR.
I checked the ecovec schematics, but it cannot use SCIFA because other functions use the multiplex pins.
Best regards,
Yoshihiro Shimoda
Quoted 9 lines · Yoshihiro
Quoted 8 lines · Simon Horman
Quoted 4 lines · Yoshihiro
If userland calls ioctl with TIOCSBRK/TIOCCBRK, the
sci_break_ctlis called. After TIOCSBRK we cannot send data from SCIF. After TIOCCBRK, we can send data from SCIF.Thanks, that make a lot of sense.
Quoted 8 lines
Quoted 3 lines
Unfortunately the ecovec doesn't exercise the new code as the regtype of its scif is
SCIx_SH4_SCIF_NO_SCSPTR_REGTYPEbut your code only operates onSCIx_SH4_SCIF_REGTYPE.Sorry I forgot that the SH7724 has SCIF and SCIFA.
The ecovec uses SCIF, and it doesn't have SCSPTR.
I checked the ecovec schematics, but it cannot use SCIFA because other functions use the multiplex pins.
No problem.
In any case, Reviewed-by: Simon Horman <[email protected]>
Quoted 11 lines · Yoshihiro
SCIF modules which have SCSPTR can output the break signal. This patch supports it.
This patch tested on sh7757lcr.
Signed-off-by Yoshihiro Shimoda <[email protected]>---
about v2:
- addserial_sci.h
- change sci_in/sci_out to serial_port_in/serial_port_out
Looks good to me, I'll queue it up, thanks.
Quoted 7 lines · Yoshihiro
Quoted 6 lines · Simon Horman
Quoted 4 lines · Yoshihiro
If userland calls ioctl with TIOCSBRK/TIOCCBRK, the
sci_break_ctlis called. After TIOCSBRK we cannot send data from SCIF. After TIOCCBRK, we can send data from SCIF.
Quoted 8 lines
Quoted 5 lines
Thanks, that make a lot of sense.
Unfortunately the ecovec doesn't exercise the new code as the regtype of its scif is
SCIx_SH4_SCIF_NO_SCSPTR_REGTYPEbut your code only operates onSCIx_SH4_SCIF_REGTYPE.Sorry I forgot that the SH7724 has SCIF and SCIFA. The ecovec uses SCIF, and it doesn't have SCSPTR.
Well, one thing that you can do is test for the SCSPTR existence and simply not care about the port type. This is roughly what the generic sci_init_pins() does for example.
You would have to ensure that the bits you are twiddling also exist for the SCIx_SH2_SCIF_FIFODATA_REGTYPE, SCIx_SH2_SCIF_FIFODATA_REGTYPE, and SCIx_SH4_SCIF_FIFODATA_REGTYPE, though.
Quoted 3 lines
I checked the ecovec schematics, but it cannot use SCIFA because other functions use the multiplex pins.
You should be able to plug them in for the port and let the sh-sci driver try to grab the port. The port will simply be skipped if pin demux fails. Take a look at 50f0959ad4f9ac1c5ee208bb820de299a1b3730b for an idea of how to wire it up.
Quoted 5 lines · Paul Mundt
Quoted 3 lines · Yoshihiro
Sorry I forgot that the SH7724 has SCIF and SCIFA. The ecovec uses SCIF, and it doesn't have SCSPTR.
Quoted 7 lines
Well, one thing that you can do is test for the SCSPTR existence and simply not care about the port type. This is roughly what the generic
sci_init_pins()does for example.You would have to ensure that the bits you are twiddling also exist for the
SCIx_SH2_SCIF_FIFODATA_REGTYPE,SCIx_SH2_SCIF_FIFODATA_REGTYPE, andSCIx_SH4_SCIF_FIFODATA_REGTYPE, though.
Thank you for the suggestion. I will modify the code.
Quoted 8 lines
Quoted 3 lines
I checked the ecovec schematics, but it cannot use SCIFA because other functions use the multiplex pins.
You should be able to plug them in for the port and let the sh-sci driver try to grab the port. The port will simply be skipped if pin demux fails. Take a look at
50f0959ad4f9ac1c5ee208bb820de299a1b3730bfor an idea of how to wire it up.
I'm sorry, I don't understand this comment.
I think that if the sh-sci driver grab the port, other driver cannot work correctly when other driver is working.
Best regards,
Yoshihiro Shimoda