diff mbox

Question about sh-sci on SH7723

Message ID 49DD62AE.2090700@renesas.com (mailing list archive)
State Not Applicable
Delegated to: Paul Mundt
Headers show

Commit Message

Nobuhiro Iwamatsu April 9, 2009, 2:51 a.m. UTC
morimoto.kuninori@renesas.com wrote:
> Dear yoshii
> 
> Thank you for comment
> 
>>> I have question about sh-sci on SH7723.
>> ...
>>> seems return SCIF0_TXD value.
>> At least, old chips like 7709/7750 have SCPTR bit multiplexed.
>> It returns RXD when read, sets TxD when write.
> 
> Hmm.
> At least 7786/7785/7763 have SCSPTR register.
> It indicates RXD/TXD for me.
> 
> May be it is same as  7709/7750's SCPTR.
> (I don't have these manual)

You can get these from renesas website.

> 
>> What are SCPTR bits on SH7723 like?
> 
> But SH7723 doesn't have SCPTR/SCSPTR register.
> Therefore, I thought that it used IO port.
> 
> So, I thought that it should read RXD pin if it use IO port.
> 
>> # I think you would better asking your boss to put the HW manual on WWW.
> 
> Oops !
> Is SH7723's manual un-public one ?
> 

I think that this is coding miss.
If you check implemenation of other SH CPU's(e.g. SH7722),
you can understand that other CPU checked RXD bit.

I attached patch to fix this.

Best regards,
  Nobuhiro
From 9dcbe0f455229250daa353d6b199d6f41b457e05 Mon Sep 17 00:00:00 2001
From: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Date: Wed, 8 Apr 2009 16:10:19 +0900
Subject: [PATCH] sh: Fix rxd check bit of sci_rxd_in for sh7723

Reported-by: Kuninori Morimoto <morimoto.kuninori@renesas.com>
Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
---
 drivers/serial/sh-sci.h |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

Comments

Kuninori Morimoto April 9, 2009, 4:03 a.m. UTC | #1
Dear Iwamatsu

> > But SH7723 doesn't have SCPTR/SCSPTR register.
> > Therefore, I thought that it used IO port.
> > 
> > So, I thought that it should read RXD pin if it use IO port.
(snip)
> I think that this is coding miss.
> If you check implemenation of other SH CPU's(e.g. SH7722),
> you can understand that other CPU checked RXD bit.

If this is a just "coding miss", I can understand !!
Thank you

Best regards
--
Kuninori Morimoto
 
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kuninori Morimoto April 9, 2009, 4:25 a.m. UTC | #2
Dear Iwamatsu

> > I think that this is coding miss.
> > If you check implemenation of other SH CPU's(e.g. SH7722),
> > you can understand that other CPU checked RXD bit.
> 
> If this is a just "coding miss", I can understand !!
> Thank you

Oops.
But Can we really read RXD status from IO port ?
Because when we use SCIF/SCIFA,
function modules is selected in PFC.
it is not IO port.

Best regards
--
Kuninori Morimoto
 
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Nobuhiro Iwamatsu April 9, 2009, 5:53 a.m. UTC | #3
morimoto.kuninori@renesas.com wrote:
> Dear Iwamatsu
> 
>>> I think that this is coding miss.
>>> If you check implemenation of other SH CPU's(e.g. SH7722),
>>> you can understand that other CPU checked RXD bit.
>> If this is a just "coding miss", I can understand !!
>> Thank you
> 
> Oops.
> But Can we really read RXD status from IO port ?
> Because when we use SCIF/SCIFA,
> function modules is selected in PFC.
> it is not IO port.
> 
We set function to use in PFC and it is from IO-port
and controls them.

For example, we want to get RXD of SCIF0, setup PSELC and PTCR,
and get value from PTDR.

OK?

Best regards,
  Nobuhiro

--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kuninori Morimoto April 9, 2009, 7:42 a.m. UTC | #4
Dear Iwamatsu

> We set function to use in PFC and it is from IO-port
> and controls them.
> 
> For example, we want to get RXD of SCIF0, setup PSELC and PTCR,
> and get value from PTDR.

Hmm....
Now I tried to watch PxDR behavior by JTAG.
Then, I can read data from PxDR if PxCR is "I/O".
But, I can not read data when PxCR is "Function".
It is always 0x00.
I think at least clock bit will change.

Do you know why ?

Best regards
--
Kuninori Morimoto
 
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kuninori Morimoto April 10, 2009, 5:24 a.m. UTC | #5
Dear Paul, Iwamatsu

> Now I tried to watch PxDR behavior by JTAG.
> Then, I can read data from PxDR if PxCR is "I/O".
> But, I can not read data when PxCR is "Function".
> It is always 0x00.

Is checking SCFSR::BRK (SCASSR::BRK) good idea ?
It indicate rx break.

Best regards
--
Kuninori Morimoto
 
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Nobuhiro Iwamatsu April 15, 2009, 2:52 a.m. UTC | #6
morimoto.kuninori@renesas.com wrote:
> Dear Iwamatsu
> 
>> We set function to use in PFC and it is from IO-port
>> and controls them.
>>
>> For example, we want to get RXD of SCIF0, setup PSELC and PTCR,
>> and get value from PTDR.
> 
> Hmm....
> Now I tried to watch PxDR behavior by JTAG.
> Then, I can read data from PxDR if PxCR is "I/O".
> But, I can not read data when PxCR is "Function".
> It is always 0x00.
> I think at least clock bit will change.
> 
> Do you know why ?
> 

In current code, when sci_handle_errors was called ,
sci_rxd_in seemed to come to be called it.
Did you check this?

Thanks,
  Nobuhiro
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kuninori Morimoto April 16, 2009, 2:56 a.m. UTC | #7
Dear Iwamatsu

> In current code, when sci_handle_errors was called ,
> sci_rxd_in seemed to come to be called it.
> Did you check this?

OK. Now I could understand.
I think sci_rxd_in function is not called in SH7723.
This function is for SCI which can not get
rx break status from register.

Best regards
--
Kuninori Morimoto
 
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/serial/sh-sci.h b/drivers/serial/sh-sci.h
index d0aa82d..cc51500 100644
--- a/drivers/serial/sh-sci.h
+++ b/drivers/serial/sh-sci.h
@@ -591,15 +591,15 @@  static inline int sci_rxd_in(struct uart_port *port)
 static inline int sci_rxd_in(struct uart_port *port)
 {
         if (port->mapbase == 0xffe00000)
-                return ctrl_inb(SCSPTR0) & 0x0008 ? 1 : 0; /* SCIF0 */
+                return ctrl_inb(SCSPTR0) & 0x0010 ? 1 : 0; /* SCIF0 */
         if (port->mapbase == 0xffe10000)
-                return ctrl_inb(SCSPTR1) & 0x0020 ? 1 : 0; /* SCIF1 */
+                return ctrl_inb(SCSPTR1) & 0x0040 ? 1 : 0; /* SCIF1 */
         if (port->mapbase == 0xffe20000)
-                return ctrl_inb(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF2 */
+                return ctrl_inb(SCSPTR2) & 0x0002 ? 1 : 0; /* SCIF2 */
         if (port->mapbase == 0xa4e30000)
-                return ctrl_inb(SCSPTR3) & 0x0001 ? 1 : 0; /* SCIF3 */
+                return ctrl_inb(SCSPTR3) & 0x0002 ? 1 : 0; /* SCIF3 */
         if (port->mapbase == 0xa4e40000)
-                return ctrl_inb(SCSPTR4) & 0x0001 ? 1 : 0; /* SCIF4 */
+                return ctrl_inb(SCSPTR4) & 0x0002 ? 1 : 0; /* SCIF4 */
         if (port->mapbase == 0xa4e50000)
                 return ctrl_inb(SCSPTR5) & 0x0008 ? 1 : 0; /* SCIF5 */
         return 1;