主题 : led 驱动问题,请指教 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 5108
精华: 0
发帖: 22
金钱: 220 两
威望: 220 点
综合积分: 44 分
注册时间: 2009-04-10
最后登录: 2009-06-14
楼主  发表于: 2009-05-20 21:58

 led 驱动问题,请指教

led 驱动里面定义GPB5 地址不是很明白,我把宏定义都列出来了,怎么也算不出控制GPB5 口的地址,请高手指教

#define S3C2410_GPIO_BANKB   (32*1)

#define S3C2410_GPIONO(bank,offset) ((bank) + (offset))

#define S3C2410_GPB5        S3C2410_GPIONO(S3C2410_GPIO_BANKB, 5)


说明S3C2410_GPB5=32*1+5


#define S3C24XX_VA_GPIO       S3C2410_ADDR(0x00E00000)

#define S3C2410_ADDR(x)      (0xF0000000 + (x))  


说明S3C24XX_VA_GPIO=0xF0E00000


#define S3C2410_GPIO_BASE(pin)   ((((pin) & ~31) >> 1) + S3C24XX_VA_GPIO)


void s3c2410_Gpio_setpin(unsigned int pin, unsigned int to)
{
    void __iomem *base = S3C2410_GPIO_BASE(pin);
    unsigned long offs = S3C2410_GPIO_OFFSET(pin);
    unsigned long flags;
    unsigned long dat;

    local_irq_save(flags);

    dat = __raw_readl(base + 0x04);
    dat &= ~(1 << offs);
    dat |= to << offs;
    __raw_writel(dat, base + 0x04);                 //config the GPXDAT

    local_irq_restore(flags);
}

s3c2410_gpio_setpin(GPB5, 1)
说明给1给S3C2410_GPIO_BASE(GPB5) 灯就灭  说明应该base=0x56000010 才对的,为什么会算出来 base-0xF0E00000请指点 谢谢
[ 此帖被xie_px88在2009-05-20 22:03重新编辑 ]
级别: 新手上路
UID: 5108
精华: 0
发帖: 22
金钱: 220 两
威望: 220 点
综合积分: 44 分
注册时间: 2009-04-10
最后登录: 2009-06-14
1楼  发表于: 2009-05-21 09:18
怎么都没有人回复呢,难到就没有人注意这个问题吗