----------------------------------------------------------------------------------------------------------------------
// 作者:Eleven(eleven@urbetter.com)
// 版權(quán):Eleven
// 平臺:友堅UT-S5PV210開發(fā)板+Android2.2 OS
// 注意事項:未經(jīng)作者同意,商業(yè)網(wǎng)站不能轉(zhuǎn)載,更不得在轉(zhuǎn)載的時候擅自修改、刪除文章的任何部分
//------------------------------------------------------------------------------------------------------------------------------
一、硬件情況:
1、查看原理圖:16bit模式;
2、INT接到S5PV210的IRQ_LAV/EINT10,INT腳為低時為有效中斷信號,中斷線為EINT10;
3、CS接到S5PV210的CSn1,CMD連接到V210的地址總線ADDR[2],故INDEX和DATA[15:0]的端口地址分別為0x88000000和0x88000004。
二、軟件修改:
1、\kernel\arch\arm\mach-s5pv210\include\mach\map.h
改成:
- #define S5PV210_PA_DM9000 (0x88000000)
- #define S5P_PA_DM9000 S5PV210_PA_DM9000 + 0x300
-
2、\kernel\arch\arm\plat-s5p\devs.h
改成:
- static struct resource s5p_dm9000_resources[] = {
- [0] = {
- .start = S5P_PA_DM9000,
- .end = S5P_PA_DM9000 + 3,
- .flags = IORESOURCE_MEM,
- },
- [1] = {
-
- #if defined(CONFIG_DM9000_16BIT)
- .start = S5P_PA_DM9000 + 0x04,
- .end = S5P_PA_DM9000 + 7,
- .flags = IORESOURCE_MEM,
- #else
- .start = S5P_PA_DM9000 + 1,
- .end = S5P_PA_DM9000 + 1,
- .flags = IORESOURCE_MEM,
- #endif
- },
- [2] = {
- .start = IRQ_EINT10,
- .end = IRQ_EINT10,
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- }
- };
3、\kernel\arch\arm\mach-s5pv210\mach-smdkv210.c
在static void __init smdkv210_dm9000_set(void)中修改:
- tmp = __raw_readl(S5P_SROM_BW); tmp &=~(0xF<<4);
- tmp |= (1<<7) | (1<<6) | (1<<5) | (1<<4);
- __raw_writel(tmp, S5P_SROM_BW);
- _raw_writel((0x0<<28)|(0x0<<24)|(0x5<<16)|(0x0<<12)|(0x0<<8)|(0x0<<4)|(0x0<<0), S5P_SROM_BC3); //這個也沒看明白,希望有高人可以解答下
4、make menuconfig選上DM9000和16bit的模式,make zImage即可。
//如有錯誤,請留言指正;同時希望有更好的方法與大家交流和分享,讓我們大家一起學(xué)習(xí),共同進(jìn)步!
更多詳情資料來源:http://www.urbetter.com/main.asp