[Armadillo:02472] Re: armadillo-500でPHSカードのドライバが割り当てられない

nakai email@hidden
2007年 11月 28日 (水) 14:32:39 JST


nakaiです。

> ■エラー内容
>  drivers/serial/8250.c: In function 'serial8250_handle_port':
>  drivers/serial/8250.c:1331: error: 'regs' undeclared (first 
> use in this function )
>  drivers/serial/8250.c:1331: error: (Each undeclared 
> identifier is reported only once
>  drivers/serial/8250.c:1331: error: for each function it appears in.)
>  make[3]: *** [drivers/serial/8250.o] エラー 1
>  make[2]: *** [drivers/serial] エラー 2
>  make[1]: *** [drivers] エラー 2
>  make[1]: ディレクトリ '/home/atmark/linux-2.6.18-12-at0' から出ます

このエラーは、i.mx31のBSPからバックポートしたときにチェック漏れで
潜在的にあったバグのようです。

オリジナルソースからのdiffは以下となります。
CONFIG_ARCH_MXCに関する部分は外してもよさそうですね。検討してみます。

diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 758c229..040211a 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -1313,7 +1313,11 @@ static unsigned int check_modem_status(struct uart_8250_port *up)
  * This handles the interrupt from one port.
  */
 static inline void
+#ifdef CONFIG_ARCH_MXC
+serial8250_handle_port(struct uart_8250_port *up, unsigned int iir)
+#else
 serial8250_handle_port(struct uart_8250_port *up, struct pt_regs *regs)
+#endif
 {
 	unsigned int status;
 
@@ -1326,7 +1330,11 @@ serial8250_handle_port(struct uart_8250_port *up, struct pt_regs *regs)
 	if (status & UART_LSR_DR)
 		receive_chars(up, &status, regs);
 	check_modem_status(up);
+#ifdef CONFIG_ARCH_MXC
+	if ((status & UART_LSR_THRE) || ((iir & UART_IIR_ID) == UART_IIR_THRI))
+#else
 	if (status & UART_LSR_THRE)
+#endif
 		transmit_chars(up);
 
 	spin_unlock(&up->port.lock);
@@ -1365,8 +1373,11 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id, struct pt_regs *r
 
 		iir = serial_in(up, UART_IIR);
 		if (!(iir & UART_IIR_NO_INT)) {
+#ifdef CONFIG_ARCH_MXC
+			serial8250_handle_port(up, iir);
+#else
 			serial8250_handle_port(up, regs);
-
+#endif
 			handled = 1;
 
 			end = NULL;
@@ -1465,8 +1476,11 @@ static void serial8250_timeout(unsigned long data)
 
 	iir = serial_in(up, UART_IIR);
 	if (!(iir & UART_IIR_NO_INT))
+#ifdef CONFIG_ARCH_MXC
+		serial8250_handle_port(up, iir);
+#else
 		serial8250_handle_port(up, NULL);
-
+#endif
 	timeout = up->port.timeout;
 	timeout = timeout > 6 ? (timeout / 2 - 2) : 1;
 	mod_timer(&up->timer, jiffies + timeout);
@@ -1544,7 +1558,9 @@ static int serial8250_startup(struct uart_port *port)
 {
 	struct uart_8250_port *up = (struct uart_8250_port *)port;
 	unsigned long flags;
+#ifndef CONFIG_SERIAL_8250_DONT_TEST_BUG_TXEN
 	unsigned char lsr, iir;
+#endif
 	int retval;
 
 	up->capabilities = uart_config[up->port.type].flags;
@@ -1649,6 +1665,7 @@ static int serial8250_startup(struct uart_port *port)
 
 	serial8250_set_mctrl(&up->port, up->port.mctrl);
 
+#ifndef CONFIG_SERIAL_8250_DONT_TEST_BUG_TXEN
 	/*
 	 * Do a quick test to see if we receive an
 	 * interrupt when we enable the TX irq.
@@ -1664,7 +1681,9 @@ static int serial8250_startup(struct uart_port *port)
 			pr_debug("ttyS%d - enabling bad tx status workarounds\n",
 				 port->line);
 		}
-	} else {
+	} else
+#endif
+	{
 		up->bugs &= ~UART_BUG_TXEN;
 	}
 

> -----Original Message-----
> From: email@hidden 
> [mailto:email@hidden] On Behalf Of 赤坂 亮
> Sent: Wednesday, November 28, 2007 1:52 PM
> To: Armadillo series general discussion list
> Subject: [Armadillo:02469] Re: armadillo-500でPHSカードのドライバが割り当てられない
> 
> お世話になっております。
> 赤坂と申します。
> 
> 自己レスですが、無事インストールでき、serial_csモジュールをドライバと
> して認識させることができました。
> 
> 以前質問させて頂きました下記エラーを解消することにより解決致しました。
> 
> ■エラー内容
>  drivers/serial/8250.c: In function 'serial8250_handle_port':
>  drivers/serial/8250.c:1331: error: 'regs' undeclared (first 
> use in this function )
>  drivers/serial/8250.c:1331: error: (Each undeclared 
> identifier is reported only once
>  drivers/serial/8250.c:1331: error: for each function it appears in.)
>  make[3]: *** [drivers/serial/8250.o] エラー 1
>  make[2]: *** [drivers/serial] エラー 2
>  make[1]: *** [drivers] エラー 2
>  make[1]: ディレクトリ '/home/atmark/linux-2.6.18-12-at0' から出ます
> 
> 8250.c内にある
>  serial8250_handle_port(struct uart_8250_port *up, unsigned int iir)
>>  serial8250_handle_port(struct uart_8250_port *up, struct 
> pt_regs *regs,unsigned int iir)
> に変更し、コンパイルさせたところ無事コンパイルでき、serial_csモジュール
> を追加することができました。
> 
> その後は、armadilloにてinsmodでモジュールをインストールし、PHSカードを
> 挿したところドライバを認識してくれました。
> 
> 以上、よろしくお願い致します。
> 
> ----------------------- Original Message -----------------------
> From:    赤坂 亮 <email@hidden>
> To:      email@hidden
> Cc:      
> Date:    Mon, 26 Nov 2007 21:47:17 +0900
> Subject: [Armadillo:02463] armadillo-500でPHSカードのドライバが割り当てられない
> ----
> 
> >お世話になっております。
> >赤坂と申します。
> >
> >armadillo-500で開発を行っており、現在、PHSカードを使用し、ダイヤルアップ接続
> >を試みております。
> >
> >当方の環境は以下の通りです。
> > ・atmark-dist Ver	:atmark-dist-20071018
> > ・kernel Var		:linux-2.6.18-at2
> > ・PHSカード		:AX420S
> >
> >PHSカードを使用する際、serial_cs.oのドライバを使用するかと思うのですが、
> >カーネルでPCMCIAの追加設定を行ってもarmadillo上には存在しませんでした。
> >
> >serial_cs.oドライバをarmadillo上にインストールし使用する方法について、
> >情報をお持ちの方はいらっしゃいますでしょうか?
> >
> >ご教授の程よろしくお願い申し上げます。
> >
> >赤坂 亮(Ryo Akasaka)
> >
> >
> >
> >_______________________________________________
> >armadillo mailing list
> >email@hidden
> >http://lists.atmark-techno.com/mailman/listinfo/armadillo
> >
> 
> ***********************************************************
>    北都システム株式会社 
>    第2技術本部 第1システム開発部
>    赤坂 亮(Ryo Akasaka)
> 
>   〒222-0033 
>    横浜市港北区新横浜3丁目18-14  住生新横浜第2ビル 
>    Tel 045-470-2773 FAX 045-470-2774 
>    E-Mail : email@hidden
> ***********************************************************
> 
> 
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo




armadillo メーリングリストの案内