主题 : 4412的XMMC0CDn控制 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 96687
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
综合积分: 28 分
注册时间: 2013-09-25
最后登录: 2014-04-18
楼主  发表于: 2013-11-28 13:18

 4412的XMMC0CDn控制

最近调试iNand,偶然在4412的文档上看到了Xmmc0CDn这个复用pin,
它的功能定为:
0-- input   1---output  2---SD_0_CDn  
3 --- SD_4_CDn    4--- GNSS_GPIO[8]
F--EINT23[2], 其它保留.
如果是功能pin, 它是存贮卡检测pin, 如果是GPIO中断, input, output eint会被配置
但唯独这个GNSS_GPIO[8]它是做何用的啊?怎么控制它?
级别: 新手上路
UID: 96687
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
综合积分: 28 分
注册时间: 2013-09-25
最后登录: 2014-04-18
1楼  发表于: 2013-11-29 09:07
似乎没有人去研究啊,太不给力了. 还好,已经搞定.
级别: 新手上路
UID: 92025
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2013-05-21
最后登录: 2014-05-09
2楼  发表于: 2014-01-08 15:22
楼主
请问下如果这个脚当中断用的话 它对应的中断号是哪个呢
request_irq调用的时候需要中断号 这个的中断号怎么查的
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2014-01-08 15:58
引用第2楼shikiandroid于2014-01-08 15:22发表的  :
楼主
请问下如果这个脚当中断用的话 它对应的中断号是哪个呢
request_irq调用的时候需要中断号 这个的中断号怎么查的

我想你可以用gpio_to_irq(EXYNOS4_GPK0(2))来返回这个GPIO(GPK0_2)对应的中断号。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 66474
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
综合积分: 24 分
注册时间: 2012-03-30
最后登录: 2015-01-02
4楼  发表于: 2014-01-08 17:54
30P的GPIO怎么通过Android应用控制呢?
Xmmc3CLK_B [8] Xmmc3CMD_B [8]
Xmmc3DATA0/SD_2_DATA4_B [8] Xmmc3DATA1/SD_2_DATA5_B [8]
Xmmc3DATA2/SD_2_DATA6_B [8] Xmmc3DATA3/SD_2_DATA7_B [8]
Xmmc3CDn_B [8]
XspiMISO0/i2cSDA4_B [8] XspiMOSI0/i2cSCL4_B [8]
XspiCSn0_B [8] XspiCLK0_B [8]
Xi2cSDA0_OUT [3,8] Xi2cSCL0_OUT [3,8]
XEINT13_B [8]
XEINT11_B [8]
XEINT26_B [4]
XEINT28_B [4]
XEINT27_B [4]
XEINT29_B [4]
XspiMOSI1/i2cSCL5_B [8]
XspiMISO1/i2cSDA5_B [8]
XspiCLK1/IEM_CLK_B [8]
XspiCSn1/IEM_DAT_B [8]
XEINT12_B [8]
TXD2[3] RXD2 [3]
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
25 26
27 28
29 30
级别: 新手上路
UID: 92025
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2013-05-21
最后登录: 2014-05-09
5楼  发表于: 2014-01-09 00:27

 回 3楼(kasim) 的帖子

但是我看提供的电路原理图你们也只用了GPX0~3来充当外部中断,其他组gpio也能当外部中断使用吗
而且drivers/gpio/gpio-samsung.c里面也只有GPX0~3提供了to_irq函数,gpio_to_irq最终调用的应该就是这个to_irq函数,其他组GPIO没有提供to_irq函数的话是不是就得不到中断号
{
        .chip    = {
            .base    = EXYNOS4X12_GPM4(0),
            .ngpio    = EXYNOS4X12_GPIO_M4_NR,
            .label    = "GPM4",
        },
    }, {
        .base    = (void *)0xC00,
        .config    = &samsung_gpio_cfgs[9],
        .irq_base = IRQ_EINT(0),
        .chip    = {
            .base    = EXYNOS4_GPX0(0),
            .ngpio    = EXYNOS4_GPIO_X0_NR,
            .label    = "GPX0",
            .to_irq    = samsung_gpiolib_to_irq,
        },
    }, {
        .config    = &samsung_gpio_cfgs[9],
        .irq_base = IRQ_EINT(8),
        .chip    = {
            .base    = EXYNOS4_GPX1(0),
            .ngpio    = EXYNOS4_GPIO_X1_NR,
            .label    = "GPX1",
            .to_irq    = samsung_gpiolib_to_irq,
        },
    }, {
        .config    = &samsung_gpio_cfgs[9],
        .irq_base = IRQ_EINT(16),
        .chip    = {
            .base    = EXYNOS4_GPX2(0),
            .ngpio    = EXYNOS4_GPIO_X2_NR,
            .label    = "GPX2",
            .to_irq    = samsung_gpiolib_to_irq,
        },
    }, {
        .config    = &samsung_gpio_cfgs[9],
        .irq_base = IRQ_EINT(24),
        .chip    = {
            .base    = EXYNOS4_GPX3(0),
            .ngpio    = EXYNOS4_GPIO_X3_NR,
            .label    = "GPX3",
            .to_irq    = samsung_gpiolib_to_irq,
        },
    },
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
6楼  发表于: 2014-01-09 15:32

 回 5楼(shikiandroid) 的帖子

谢谢你指出这一点,Exynos4412上的确有两种GPIO中断类型,GPX0~3上的GPIO是由EINT0~32直接对应的,而其他GPIO中断看起来是在arch/arm/plat-samsung/s5p-irq-gpioint.c里处理的。从源代码看,如果要使用GPK0_2的中断,需要调用s5p_register_gpio_interrupt(EXYNOS4_GPK0(2)),  这个函数的返回值就是分配给这个GPIO的中断号。当然,因为s5p-irq-gpioint.c中设置了对应GPIO的to_irq()实现,在外设驱动中依然可以调用gpio_to_irq()。
在arch/arm/mach-exynos/mach-nuri.c里有一个这样的例子
复制代码
  1. #define GPIO_CAM_8M_ISP_INT     EXYNOS4_GPL2(5)
  2. ...
  3. static void __init nuri_camera_init(void)
  4. {
  5. ...
  6.         m5mols_board_info.irq = s5p_register_gpio_interrupt(GPIO_CAM_8M_ISP_INT);
  7.         if (!IS_ERR_VALUE(m5mols_board_info.irq))
  8.                 s3c_gpio_cfgpin(GPIO_CAM_8M_ISP_INT, S3C_GPIO_SFN(0xF));
  9.         else
  10.                 pr_err("%s: Failed to configure 8M_ISP_INT GPIO\n", __func__);
  11. ...
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 92025
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2013-05-21
最后登录: 2014-05-09
7楼  发表于: 2014-01-09 20:51

 回 6楼(kasim) 的帖子

非常感谢,这问题困扰几天了,看上去确实是这样,不过还没试过能不能用