android mmc register to platform

1:msm_sdcc.c

static struct platform_driver msmsdcc_driver = {                                                                                                                                
  .probe    = msmsdcc_probe,                                                                                                                     
  .remove   = msmsdcc_remove,                                                                                                                    
  .suspend  = msmsdcc_suspend,                                                                                                                   
  .resume   = msmsdcc_resume,                                                                                                                    
  .driver   = {                                                                                                                                  
    .name = "msm_sdcc",                                                                                                                          
  },                                                                                                                                             
};                                  

 

2:boardfile.c

static s#define MSM_SDC2_BASE         0xA0500000
truct resource resources_sdc2[] = {
  {
    .start  = MSM_SDC2_BASE,
    .end  = MSM_SDC2_BASE + SZ_4K - 1,
    .flags  = IORESOURCE_MEM,
  },
  {
    .start  = INT_SDC2_0,
    .end  = INT_SDC2_1,
    .flags  = IORESOURCE_IRQ,
  },
  {
    .start  = 8,
    .end  = 8,
    .flags  = IORESOURCE_DMA,
  },
};

static struct mmc_platform_data msm7x2x_sdc2_data = {                                                                                                                           
  .ocr_mask = MMC_VDD_28_29,                                                                                                                     
  .translate_vdd  = msm_sdcc_setup_power,                                                                                                        
  .mmc_bus_width  = MMC_CAP_4_BIT_DATA,                                                                                                          
#ifdef CONFIG_MMC_MSM_SDIO_SUPPORT                                                                                                               
  .sdiowakeup_irq = MSM_GPIO_TO_INT(13),                                                                                                         
#endif                                                                                                                                           
  .msmsdcc_fmin = 144000,                                                                                                                        
  .msmsdcc_fmid = 24576000,                                                                                                                      
  .msmsdcc_fmax = 49152000,                                                                                                                      
  .nonremovable = 1,                                                                                                                             
};

 

3:devicefile.c

struct platform_device msm_device_sdc2 = {
  .name   = "msm_sdcc",
  .id   = 2,
  .num_resources  = ARRAY_SIZE(resources_sdc2),
  .resource = resources_sdc2,
  .dev    = {
    .coherent_dma_mask  = 0xffffffff,
  },
};

static struct platform_device *msm_sdcc_devices[] __initdata = {
  &msm_device_sdc1,
  &msm_device_sdc2,
  &msm_device_sdc3,
  &msm_device_sdc4,
};

int __init msm_add_sdcc(unsigned int controller, struct mmc_platform_data *plat)
{
  struct platform_device  *pdev;

  if (controller < 1 || controller > 4)
    return -EINVAL;                                                                                                                                                             

  pdev = msm_sdcc_devices[controller-1];
  pdev->dev.platform_data = plat;
  return platform_device_register(pdev);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值