static void __init mx28_init_fec(void) { struct platform_device *pdev; struct mxs_dev_lookup *lookup; int i; lookup = mxs_get_devices("mxs-fec"); if (lookup == NULL || IS_ERR(lookup)) return; for (i = 0; i < lookup->size; i++) { pdev = lookup->pdev + i; switch (pdev->id) { case 0: pdev->resource = fec0_resource; pdev->num_resources = ARRAY_SIZE(fec0_resource); pdev->dev.platform_data = &fec_pdata0; break; case 1: pdev->resource = fec1_resource; pdev->num_resources = ARRAY_SIZE(fec1_resource); pdev->dev.platform_data = &fec_pdata1; break; default: return; } mxs_add_device(pdev, 2); } }
static void __init mx28_init_i2c(void) { int i; struct mxs_dev_lookup *lookup; struct platform_device *pdev; lookup = mxs_get_devices("mxs-i2c"); if (lookup == NULL || IS_ERR(lookup)) return; for (i = 0; i < lookup->size; i++) { pdev = lookup->pdev + i; switch (pdev->id) { #ifdef CONFIG_I2C_MXS_SELECT0 case 0: pdev->resource = i2c0_resource; pdev->num_resources = ARRAY_SIZE(i2c0_resource); pdev->dev.platform_data = &i2c0_platdata; break; #endif #ifdef CONFIG_I2C_MXS_SELECT1 case 1: pdev->resource = i2c1_resource; pdev->num_resources = ARRAY_SIZE(i2c1_resource); pdev->dev.platform_data = &i2c1_platdata; break; #endif default: return; } mxs_add_device(pdev, 2); } }
static void easy283_init_pwm(void) { int i; struct mxs_dev_lookup *plookup; struct platform_device *pdev; plookup = mxs_get_devices("easy283-pwm"); if (plookup == NULL || IS_ERR(plookup)) return; for (i = 0; i < plookup->size; i++) { pdev = plookup->pdev + i; switch (pdev->id) { case 4: printk("add device pwm chanel 4\r\n"); pdev->resource = NULL; pdev->num_resources = 0; pdev->dev.platform_data = &easy283_pwm4_platdata; break; case 7: pdev->resource = NULL; pdev->num_resources = 0; printk("add device pwm chanel 7\r\n"); pdev->dev.platform_data = &easy283_pwm7_platdata; break; default: break; } mxs_add_device(pdev, 3); } }
void __init mx23_init_auart(void) { int i; struct mxs_dev_lookup *plookup; struct platform_device *pdev; plookup = mxs_get_devices("mxs-auart"); if (plookup == NULL || IS_ERR(plookup)) return; for (i = 0; i < plookup->size; i++) { pdev = plookup->pdev + i; switch (pdev->id) { #ifdef CONFIG_MXS_AUART1_DEVICE_ENABLE case 1: pdev->resource = auart1_resource; pdev->num_resources = ARRAY_SIZE(auart1_resource); pdev->dev.platform_data = &mxs_auart1_platdata; break; #endif #ifdef CONFIG_MXS_AUART2_DEVICE_ENABLE case 2: pdev->resource = auart2_resource; pdev->num_resources = ARRAY_SIZE(auart2_resource); pdev->dev.platform_data = &mxs_auart2_platdata; break; #endif default: break; } mxs_add_device(pdev, 3); } }
static void __init mx28_init_fec(void) { struct platform_device *pdev; struct mxs_dev_lookup *lookup; struct fec_platform_data *pfec; int i; u32 val; __raw_writel(BM_OCOTP_CTRL_RD_BANK_OPEN, IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CTRL_SET); while (BM_OCOTP_CTRL_BUSY & __raw_readl(IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CTRL)) udelay(10); lookup = mxs_get_devices("mxs-fec"); if (lookup == NULL || IS_ERR(lookup)) return; for (i = 0; i < lookup->size; i++) { pdev = lookup->pdev + i; val = __raw_readl(IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CUSTn(pdev->id)); switch (pdev->id) { case 0: pdev->resource = fec0_resource; pdev->num_resources = ARRAY_SIZE(fec0_resource); pdev->dev.platform_data = &fec_pdata0; break; case 1: pdev->resource = fec1_resource; pdev->num_resources = ARRAY_SIZE(fec1_resource); pdev->dev.platform_data = &fec_pdata1; break; default: return; } pfec = (struct fec_platform_data *)pdev->dev.platform_data; pfec->mac[0] = 0x00; pfec->mac[1] = 0x04; pfec->mac[2] = (val >> 24) & 0xFF; pfec->mac[3] = (val >> 16) & 0xFF; pfec->mac[4] = (val >> 8) & 0xFF; pfec->mac[5] = (val >> 0) & 0xFF; mxs_add_device(pdev, 2); } }
static void __init mx23_init_dma(void) { int i; struct mxs_dev_lookup *lookup; struct platform_device *pdev; lookup = mxs_get_devices("mxs-dma"); if (lookup == NULL || IS_ERR(lookup)) return; for (i = 0; i < lookup->size; i++) { pdev = lookup->pdev + i; if (!strcmp(pdev->name, "mxs-dma-apbh")) { pdev->resource = &mxs_ahb_apbh_res; pdev->dev.platform_data = &mxs_ahb_apbh_data; } else if (!strcmp(pdev->name, "mxs-dma-apbx")) { pdev->resource = &mxs_ahb_apbx_res; pdev->dev.platform_data = &mxs_ahb_apbx_data; } else continue; pdev->num_resources = 1; mxs_add_device(pdev, 0); } }