[求助] AM335X 的GPMC怎么接多个设备,GPIB谁用过

石玉   2017-6-27 09:21 楼主
最近公司做的一个电源设备,要做成LXI设备,支持GPIB,USB和LAN,LAN已经解决了,USB有现成的,GPIB初步打算使用TNT882或NAT9914,在网上找到了很多51驱动这两个芯片的资料,直接用IO口模拟时序,但我们使用的主控是TI AM335X,可以把TNT882或NAT9914接到AM335X的GPMC上,现在GPMC已经接了NAND,如果再接上NAT9914 CS和中断脚不同,其他脚都和NAND复用,但驱动要怎么修改呢?附上NAND驱动的入口
  1. static void evm_nand_init(int evm_id, int profile)
  2. {
  3.         struct omap_nand_platform_data *pdata;
  4.         struct gpmc_devices_info gpmc_device[2] = {
  5.                 { NULL, 0 },
  6.                 { NULL, 0 },
  7.         };

  8.         setup_pin_mux(nand_pin_mux);
  9.         pdata = omap_nand_init(am335x_nand_partitions,
  10.                 ARRAY_SIZE(am335x_nand_partitions), 0, 0,
  11.                 &am335x_nand_timings);
  12.         if (!pdata)
  13.                 return;
  14.         pdata->ecc_opt =OMAP_ECC_BCH8_CODE_HW;
  15.         pdata->elm_used = true;
  16.         gpmc_device[0].pdata = pdata;
  17.         gpmc_device[0].flag = GPMC_DEVICE_NAND;

  18.         omap_init_gpmc(gpmc_device, sizeof(gpmc_device));
  19.         omap_init_elm();
  20. }

  1. /* Pin mux for nand flash module */
  2. static struct pinmux_config nand_pin_mux[] = {
  3.         {"gpmc_ad0.gpmc_ad0",          OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
  4.         {"gpmc_ad1.gpmc_ad1",          OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
  5.         {"gpmc_ad2.gpmc_ad2",          OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
  6.         {"gpmc_ad3.gpmc_ad3",          OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
  7.         {"gpmc_ad4.gpmc_ad4",          OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
  8.         {"gpmc_ad5.gpmc_ad5",          OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
  9.         {"gpmc_ad6.gpmc_ad6",          OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
  10.         {"gpmc_ad7.gpmc_ad7",          OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
  11.         {"gpmc_wait0.gpmc_wait0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
  12.         {"gpmc_wpn.gpmc_wpn",          OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
  13.         {"gpmc_csn0.gpmc_csn0",          OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
  14.         {"gpmc_advn_ale.gpmc_advn_ale",  OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
  15.         {"gpmc_oen_ren.gpmc_oen_ren",         OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
  16.         {"gpmc_wen.gpmc_wen",     OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
  17.         {"gpmc_ben0_cle.gpmc_ben0_cle",         OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
  18.         {NULL, 0},
  19. };



回复评论 (3)

高级货,不懂,帮顶
点赞  2017-6-27 09:27
这看像3.0的内核

cs不一样不就可以了吗
控制寄存器都是针对不同的cs进行配置的
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙 =================================== 做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
点赞  2017-6-27 09:54
引用: chenzhufly 发表于 2017-6-27 09:54
这看像3.0的内核

cs不一样不就可以了吗
控制寄存器都是针对不同的cs进行配置的

是的,是3.2的内核,没有DTS,您是说再写一个类似于evm_nand_init的函数,nand_pin_mux中的引脚替换成接NAT9914的引脚,CS和中断不一样,然后再写对应的驱动就可以了?
点赞  2017-6-27 19:51
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复