トップ «前の日記(2005年10月05日) 最新 次の日記(2005年10月07日)» 編集
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2005年10月06日

CAT760

Linux-2.6.13.2 の CAT760 版も実験してみた。8月に2.6.12にしたときに発生したシリアル入力が効かなくなる不具合が再発した。え〜とこのときはirq_intc2初期化もれかな。と書いてあるが実際にはintc2初期化不具合じゃなくて drivers/serial/sh-sci.c が SH7760 に対応していない不具合だった。以下のパッチで修正できる。
--- linux-2.6.13.2-sh/drivers/serial/sh-sci.c   2005-08-22 08:52:51.000000000 +0900
+++ linux-2.6.13.2-cat/drivers/serial/sh-sci.c  2005-10-06 01:51:09.003154109 +0900
@@ -429,7 +429,10 @@
 
 #if !defined(SCI_ONLY)
        if (port->type == PORT_SCIF) {
-#ifdef CONFIG_CPU_SUBTYPE_SH7780
+#if defined(CONFIG_CPU_SUBTYPE_SH7760)
+               /* CAT760 */
+               txroom = 128 - (sci_in(port, SCTFDR) & 0xFF);
+#elif defined(CONFIG_CPU_SUBTYPE_SH7780)
                txroom = SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0x7f);
 #else
                txroom = SCIF_TXROOM_MAX - (sci_in(port, SCFDR)>>8);
@@ -501,7 +504,7 @@
        while (1) {
 #if !defined(SCI_ONLY)
                if (port->type == PORT_SCIF) {
-#ifdef CONFIG_CPU_SUBTYPE_SH7780
+#if defined(CONFIG_CPU_SUBTYPE_SH7760) || defined(CONFIG_CPU_SUBTYPE_SH7780)
                        count = sci_in(port, SCRFDR) & 0x7f;
 #else
                        count = sci_in(port, SCFDR)&SCIF_RFDC_MASK ;
--- linux-2.6.13.2-sh/drivers/serial/sh-sci.h   2005-08-22 08:52:51.000000000 +0900
+++ linux-2.6.13.2-cat/drivers/serial/sh-sci.h  2005-10-06 02:01:22.197118581 +0900
@@ -393,7 +393,7 @@
 SCIx_FNS(SCxSR,  0x08,  8, 0x10,  8, 0x08, 16, 0x10, 16, 0x04,  8)
 SCIx_FNS(SCxRDR, 0x0a,  8, 0x14,  8, 0x0A,  8, 0x14,  8, 0x05,  8)
 SCIF_FNS(SCFCR,                      0x0c,  8, 0x18, 16)
-#ifdef CONFIG_CPU_SUBTYPE_SH7780
+#if defined(CONFIG_CPU_SUBTYPE_SH7760) || defined(CONFIG_CPU_SUBTYPE_SH7780)
 SCIF_FNS(SCTFDR,                    0x0e, 16, 0x1C, 16)
 SCIF_FNS(SCRFDR,                    0x0e, 16, 0x20, 16)
 SCIF_FNS(SCSPTR,                       0,  0, 0x24, 16)

CAT760

irq_intc2初期化について自分メモ。arch/sh/kernel/cpu/irq_ipr.cで
#if defined(CONFIG_CPU_SUBTYPE_ST40)
        init_IRQ_intc2();
#endif
として呼び出しているところでSH7760も|| orで入れようかと思ったけど boards/cat760/setup.c で行うことにする。
void __init init_cat760_IRQ(void)
{
  printk("init_cat760_IRQ()\n");
 
  /* SH7760 set IRQ mode*/
#define ICR 0xffd00000
  ctrl_outw(0x4280,ICR);
 
  /* SCIF0,SCIF1,SCIF2 */
  make_intc2_irq(52, 8,16,  0,11  ,3); /* SCIF0 ERI */
  make_intc2_irq(53, 8,16,  0,10  ,3); /* SCIF0 RXI */
  make_intc2_irq(54, 8,16,  0,9   ,3); /* SCIF0 BRI */
  make_intc2_irq(55, 8,16,  0,8   ,3); /* SCIF0 TXI */
 
  /* AX88796 */
  make_ipr_irq(33,INTC_IPRC,3,4);    /* GPIO */
  ctrl_outw(0x0040,PORT_GPIOIC);     /* PK7 */
 
  /* CF SOCKET 1,2 */
  make_ipr_irq(8, INTC_IPRD,1,2);    // CF1 IRL2
  make_ipr_irq(11,INTC_IPRD,0,2);    // CF2 IRL3
 
}
そしてLANの割り込みが入らなかったのは、 RTC9701JEドライバ側でPK7を「その他の機能」にしてしまっていたのが原因だった。GPIO割り込みを使うときは「入力」が正しい。

CAT760 AX88796

同一ソースなのにCAT760の場合のみ
eth0: timeout waiting for Tx RDC.
が出まくる・・・。pingの応答にも30msくらかかる。レベルの割り込みが消えてるのかな。エッジになってるとか。う〜ん。とりあえず drivers/net/ne.c に
#if !defined(CONFIG_SH_CAT760)
        while ((inb_p(nic_base + EN0_ISR) & ENISR_RDC) == 0)
                if (jiffies - dma_start > 2*HZ/100) {           /* 20ms */
                        printk(KERN_WARNING "%s: timeout waiting for Tx RDC.\n", dev->name);
                        ne_reset_8390(dev);
                        NS8390_init(dev,1);
                        break;
                }
#endif  /* CAT760 */
として対処する。害はないみたい。そのうち直します。pingも正常になった。
64 bytes from 192.168.7.1: icmp_seq=4 ttl=64 time=0.410 ms
64 bytes from 192.168.7.1: icmp_seq=5 ttl=64 time=0.418 ms
64 bytes from 192.168.7.1: icmp_seq=6 ttl=64 time=0.375 ms
64 bytes from 192.168.7.1: icmp_seq=7 ttl=64 time=0.419 ms
64 bytes from 192.168.7.1: icmp_seq=8 ttl=64 time=0.410 ms
64 bytes from 192.168.7.1: icmp_seq=9 ttl=64 time=0.415 ms

カーネル追いかけ

カーネルのクロスリファレンスが見れるサイト
http://lxr.linux.no/ident
http://glide.stanford.edu/lxr/ident