[Armadillo:08149] Re: Armadillo-460 LANポート増設

佐藤 email@hidden
2012年 7月 20日 (金) 14:45:42 JST


佐藤です。

状況の追加報告です。

・CS3にポート1、CS4にポート2を割り当て。
・起動時に、ポート1がeth1、ポート2がeth2で認識されている。
・eth1、eth2 の順で ifup すると
 ポート1で eth1、eth2 の両方が通信している。
・ifdown eth1 をすると、ポート2 で eth2 の通信が
 できるようになる。

2ポート同時に使用するためにはどうすればよいか、
僅かな情報でもいただけると助かります。
よろしくお願いします。

On Thu, 19 Jul 2012 19:29:10 +0900
佐藤 <email@hidden> wrote:

> 高木様
> 
> ご指摘ありがとうございました。
> 
> ハード担当に確認したところ
> SA8信号の値で、ポートを判別しているとのことでした。
> 
> 試しに、CS3にeth1、CS4にeth2を割り当てて見ましたが
> 状況は変わりませんでした。
> 
> 
> arch/arm/mach-mx25/armadillo460.c は下記のように
> 変更しました。
> 
> static struct resource ext_smsc9118_resources2[] = {
> 	[0] = {
> 		.start  = CS4_BASE_ADDR,
> 		.end    = CS4_BASE_ADDR + 0xff,
> 		.flags  = IORESOURCE_MEM,
> 	},
> 	[1] = {
> 		.start  = MXC_EXT_INT_BASE + 4,
> 		.end    = MXC_EXT_INT_BASE + 4,
> 		.flags  = IORESOURCE_IRQ,
> 	},
> };
> 
> On Wed, 18 Jul 2012 15:26:23 +0900
> SiF 高木 <email@hidden> wrote:
> 
> > 高木と申します。
> > 
> > 460を使用したことはありませんが、
> > 気が付いた点を
> > 
> > 回路の結線はどうなっていますでしょうか。
> > 
> >  eth1アドレス範囲 0x000 - 0x0FF
> >  eth2アドレス範囲 0x100 - 0x1FF
> > 
> > CSが同じであるためアドレス範囲でアクセスするデバイスを
> > 選択するためにはSA8の信号線を利用しないと
> > アクセスが衝突すると思います。
> > 
> > 単純に考えてCS3にeth1、CS4にeth2を割り当ててはどうでしょうか。
> > これであればCS以外は公開されている回路で
> > eth1とeth2を接続するだけで良いと思います。
> > 
> > 以上、よろしくお願いします。
> > 
> > 
> > > 佐藤です。
> > > 
> > > 1ポート毎は動作するようになりました。
> > > 
> > > 2ポート同時に使用したいのですが、
> > > どのようにすれば良いでしょうか?
> > > 
> > > 
> > > arch/arm/mach-mx25/armadillo460.c を下記のように
> > > 変更しました。
> > > 
> > > 結果は、
> > > ・起動時に認識されている。
> > >    smsc911x: Driver version 2008-10-21.
> > >    smsc911x-mdio: probed
> > >    eth1: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:01, irq=-1)
> > >    net eth1: MAC Address: 0a:79:c5:b6:60:fa
> > >    smsc911x: Driver version 2008-10-21.
> > >    smsc911x-mdio: probed
> > >    eth2: attached PHY driver [Generic PHY] (mii_bus:phy_addr=1:01, irq=-1)
> > >    net eth2: MAC Address: 62:11:ed:2c:73:04
> > > ・eth1、eth2 どちらか一方を ifup した場合は、動作OK。
> > > ・eth1、eth2 の両方を ifup すると、先に ifup した方のポートのみ動作。
> > >  eth1、eth2 の順で ifup すると、eth1 のポートのみ有効で
> > >  eth2 も eth1 のリソースを使用している感じです。
> > > 
> > > ----- armadillo460.c -------------------------
> > > #include <linux/platform_device.h>
> > > #include <linux/smsc911x.h>
> > > 
> > > static struct resource ext_smsc9118_resources[] = {
> > > 	[0] = {
> > > 		.start  = CS3_BASE_ADDR,
> > > 		.end    = CS3_BASE_ADDR + 0xff,
> > > 		.flags  = IORESOURCE_MEM,
> > > 	},
> > > 	[1] = {
> > > 		.start  = MXC_EXT_INT_BASE + 3,
> > > 		.end    = MXC_EXT_INT_BASE + 3,
> > > 		.flags  = IORESOURCE_IRQ,
> > > 	},
> > > };
> > > 
> > > static struct smsc911x_platform_config smsc9118_config = {
> > > 	.irq_polarity   = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
> > > 	.irq_type       = SMSC911X_IRQ_TYPE_PUSH_PULL,
> > > 	.flags          = SMSC911X_USE_16BIT,
> > > };
> > > 
> > > static struct platform_device ext_smsc9118_device = {
> > > 	.name = "smsc911x",
> > > 	.id = 0,
> > > 	.dev = {
> > > 		.platform_data = &smsc9118_config,
> > > 	},
> > > 	.num_resources = ARRAY_SIZE(ext_smsc9118_resources),
> > > 	.resource = ext_smsc9118_resources,
> > > };
> > > 
> > > static struct resource ext_smsc9118_resources2[] = {
> > > 	[0] = {
> > > 		.start  = CS3_BASE_ADDR + 0x100,
> > > 		.end    = CS3_BASE_ADDR + 0x1ff,
> > > 		.flags  = IORESOURCE_MEM,
> > > 	},
> > > 	[1] = {
> > > 		.start  = MXC_EXT_INT_BASE + 4,
> > > 		.end    = MXC_EXT_INT_BASE + 4,
> > > 		.flags  = IORESOURCE_IRQ,
> > > 	},
> > > };
> > > 
> > > static struct smsc911x_platform_config smsc9118_config2 = {
> > > 	.irq_polarity   = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
> > > 	.irq_type       = SMSC911X_IRQ_TYPE_PUSH_PULL,
> > > 	.flags          = SMSC911X_USE_16BIT,
> > > };
> > > 
> > > static struct platform_device ext_smsc9118_device2 = {
> > > 	.name = "smsc911x",
> > > 	.id = 1,
> > > 	.dev = {
> > > 		.platform_data = &smsc9118_config2,
> > > 	},
> > > 	.num_resources = ARRAY_SIZE(ext_smsc9118_resources2),
> > > 	.resource = ext_smsc9118_resources2,
> > > };
> > > 
> > > static int __init armadillo460_with_smsc9118_init(void)
> > > {
> > > 	platform_device_register(&ext_smsc9118_device);
> > > 	platform_device_register(&ext_smsc9118_device2);
> > > 	return 0;
> > > }
> > > arch_initcall(armadillo460_with_smsc9118_init);
> > > ----- armadillo460.c -------------------------
> > > 
> > > 以上、よろしくお願いします。
> > > 
> > > On Tue, 17 Jul 2012 20:19:33 +0900
> > > 佐藤 <email@hidden> wrote:
> > > 
> > >> お世話になっております。佐藤と申します。
> > >>
> > >> Armadillo-460にLANポートを2ポート増設することは可能でしょうか?
> > >>
> > >> Howto http://armadillo.atmark-techno.com/howto/a460-lan9118 を参考に、
> > >> 1ポート増設することはできました。
> > >>
> > >> 以上、よろしくお願いします。
> > >>
> > >> _______________________________________________
> > >> armadillo mailing list
> > >> email@hidden
> > >> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> > > 
> > > 
> > > _______________________________________________
> > > armadillo mailing list
> > > email@hidden
> > > http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> > > 
> > 
> > _______________________________________________
> > armadillo mailing list
> > email@hidden
> > http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo





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