Example #1
0
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);
	}
}
Example #2
0
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);
	}
}
Example #3
0
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);
	}
}
Example #5
0
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);
	}
}
Example #6
0
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);
	}
}