首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

详解S5PV210如何支持DM9000驱动

详解S5PV210如何支持DM9000驱动

// 平台:友坚UT-S5PV210开发板+Android2.2
// 注意事项:未经作者同意,商业网站不能转载,更不得在转载的时候擅自修改、删除文章的任何部分
//------------------------------------------------------------------------------------------------------------------------------
   一、硬件情况:
        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
              改成:                       
view plain

  •             #define S5PV210_PA_DM9000 (0x88000000)
  •             #define S5P_PA_DM9000  S5PV210_PA_DM9000 + 0x300


     2、\kernel\arch\arm\plat-s5p\devs.h     
        改成:                     
view plain

  • 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)中修改:                                         
view plain

  • 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即可。
继承事业,薪火相传
返回列表