示例#1
0
文件: dev-dwmci.c 项目: 08opt/linux
void __init exynos4_dwmci_set_platdata(struct dw_mci_board *pd)
{
	struct dw_mci_board *npd;

	npd = s3c_set_platdata(pd, sizeof(struct dw_mci_board),
			&exynos4_device_dwmci);

	if (!npd->init)
		npd->init = exynos4_dwmci_init;
	if (!npd->get_bus_wd)
		npd->get_bus_wd = exynos4_dwmci_get_bus_wd;
}
示例#2
0
void __init s5p_otg_set_platdata(struct s5p_otg_platdata *pd)
{
	struct s5p_otg_platdata *npd;

	npd = s3c_set_platdata(pd, sizeof(struct s5p_otg_platdata),
		&s3c_device_usbgadget);

	if (!npd->phy_init)
		npd->phy_init = s5p_usb_phy_init;
	if (!npd->phy_exit)
		npd->phy_exit = s5p_usb_phy_exit;
}
示例#3
0
void __init s3c_hsotg_set_platdata(struct s3c_hsotg_plat *pd)
{
    struct s3c_hsotg_plat *npd;

    npd = s3c_set_platdata(pd, sizeof(struct s3c_hsotg_plat),
                           &s3c_device_usb_hsotg);

    if (!npd->phy_init)
        npd->phy_init = s5p_usb_phy_init;
    if (!npd->phy_exit)
        npd->phy_exit = s5p_usb_phy_exit;
}
void __init s5p_ohci_set_platdata(struct s5p_ohci_platdata *pd)
{
	struct s5p_ohci_platdata *npd;

	npd = s3c_set_platdata(pd, sizeof(struct s5p_ohci_platdata),
			&s5p_device_ohci);

	if (!npd->phy_init)
		npd->phy_init = s5p_usb_phy_init;
	if (!npd->phy_exit)
		npd->phy_exit = s5p_usb_phy_exit;
}
示例#5
0
void __init s5p_usbswitch_set_platdata(struct s5p_usbswitch_platdata *pd)
{
	struct s5p_usbswitch_platdata *npd;

	npd = s3c_set_platdata(pd, sizeof(struct s5p_usbswitch_platdata),
			&s5p_device_usbswitch);

	s5p_usbswitch_resource[0].start = gpio_to_irq(npd->gpio_host_detect);
	s5p_usbswitch_resource[0].end = gpio_to_irq(npd->gpio_host_detect);

	s5p_usbswitch_resource[1].start = gpio_to_irq(npd->gpio_device_detect);
	s5p_usbswitch_resource[1].end = gpio_to_irq(npd->gpio_device_detect);
}
示例#6
0
void __init s3c_i2c0_set_platdata(struct s3c2410_platform_i2c *pd)
{
	struct s3c2410_platform_i2c *npd;

	if (!pd)
		pd = &default_i2c_data;

	npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
			       &s3c_device_i2c0);

	if (!npd->cfg_gpio)
		npd->cfg_gpio = s3c_i2c0_cfg_gpio;
}
示例#7
0
文件: mach-goni.c 项目: 5victor/linux
static void __init goni_machine_init(void)
{
	/* Radio: call before I2C 1 registeration */
	goni_radio_init();

	/* I2C0 */
	s3c_i2c0_set_platdata(NULL);

	/* I2C1 */
	s3c_i2c1_set_platdata(NULL);
	i2c_register_board_info(1, i2c1_devs, ARRAY_SIZE(i2c1_devs));

	/* TSP: call before I2C 2 registeration */
	goni_tsp_init();

	/* I2C2 */
	s3c_i2c2_set_platdata(&i2c2_data);
	i2c_register_board_info(2, i2c2_devs, ARRAY_SIZE(i2c2_devs));

	/* PMIC */
	goni_pmic_init();
	i2c_register_board_info(AP_I2C_GPIO_PMIC_BUS_4, i2c_gpio_pmic_devs,
			ARRAY_SIZE(i2c_gpio_pmic_devs));
	/* SDHCI */
	goni_setup_sdhci();

	/* SOUND */
	goni_sound_init();
	i2c_register_board_info(AP_I2C_GPIO_BUS_5, i2c_gpio5_devs,
			ARRAY_SIZE(i2c_gpio5_devs));

	/* FB */
	s3c_fb_set_platdata(&goni_lcd_pdata);

	/* FIMC */
	s3c_set_platdata(&goni_fimc_md_platdata, sizeof(goni_fimc_md_platdata),
			 &s5p_device_fimc_md);

	goni_camera_init();

	/* SPI */
	spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));

	/* KEYPAD */
	samsung_keypad_set_platdata(&keypad_data);

	clk_xusbxti.rate = 24000000;

	platform_add_devices(goni_devices, ARRAY_SIZE(goni_devices));
}
void __init samsung_pwm_set_platdata(struct samsung_pwm_platdata *pd)
{
	int i;

	BUG_ON(!pd);

	/*
	 * Each 5 PWM Timers have own platform_device, but
	 * only one platform_data is valid for all of PWMs
	 */
	for (i = 0 ; i < 5; i++)
		s3c_set_platdata(pd, sizeof(struct samsung_pwm_platdata),
				&s3c_device_timer[i]);
}
void __init exynos_dwmci_set_platdata(struct dw_mci_board *pd)
{
	struct dw_mci_board *npd = NULL;

	if ((soc_is_exynos4210()) ||
		soc_is_exynos4212() || soc_is_exynos4412()) {
		npd = s3c_set_platdata(pd, sizeof(struct dw_mci_board), &exynos_device_dwmci);
	} else {
		printk("dwmci platform data support only exynos4/5!\n");
#ifdef CONFIG_SLP
	npd = s3c_set_platdata(pd, sizeof(struct dw_mci_board),
			&exynos_device_dwmci);
#endif
	}

	if (npd) {
	if (!npd->init)
		npd->init = exynos_dwmci_init;
	if (!npd->get_bus_wd)
		npd->get_bus_wd = exynos_dwmci_get_bus_wd;
		if (!npd->set_io_timing)
			npd->set_io_timing = exynos_dwmci_set_io_timing;
	}
}
示例#10
0
void __init s3c64xx_spi1_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
						int num_cs)
{
	/* Reject invalid configuration */
	if (!num_cs || src_clk_nr < 0) {
		pr_err("%s: Invalid SPI configuration\n", __func__);
		return;
	}

	pd.num_cs = num_cs;
	pd.src_clk_nr = src_clk_nr;
	pd.cfg_gpio = (cfg_gpio) ? cfg_gpio : s3c64xx_spi1_cfg_gpio;

	s3c_set_platdata(&pd, sizeof(pd), &s3c64xx_device_spi1);
}
示例#11
0
void __init s3c24xx_fb_set_platdata(struct s3c2410fb_mach_info *pd)
{
	struct s3c2410fb_mach_info *npd;

	npd = s3c_set_platdata(pd, sizeof(*npd), &s3c_device_lcd);
	if (npd) {
		npd->displays = kmemdup(pd->displays,
			sizeof(struct s3c2410fb_display) * npd->num_displays,
			GFP_KERNEL);
		if (!npd->displays)
			printk(KERN_ERR "no memory for LCD display data\n");
	} else {
		printk(KERN_ERR "no memory for LCD platform data\n");
	}
}
示例#12
0
void __init s5p_fimg2d_set_platdata(struct fimg2d_platdata *pd)
{
    struct fimg2d_platdata *npd;

    if (soc_is_exynos4210()) {
        s5p_fimg2d_resource[0].start = S5P_PA_FIMG2D_3X;
        s5p_fimg2d_resource[0].end = S5P_PA_FIMG2D_3X + SZ_4K - 1;
    }

    if (!pd)
        pd = &default_fimg2d_data;

    npd = s3c_set_platdata(pd, sizeof(struct fimg2d_platdata),
                           &s5p_device_fimg2d);
}
示例#13
0
void __init s3c_i2c5_set_platdata(struct s3c2410_platform_i2c *pd)
{
	struct s3c2410_platform_i2c *npd;

	if (!pd) {
		pd = &touch_300k_i2c_data;
		pd->bus_num = 5;
	}

	npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
			       &s3c_device_i2c5);

	if (!npd->cfg_gpio)
		npd->cfg_gpio = s3c_i2c5_cfg_gpio;
}
示例#14
0
void __init s3c_i2c7_set_platdata(struct s3c2410_platform_i2c *pd)
{
	struct s3c2410_platform_i2c *npd;

	if (!pd) {
		pd = &default_i2c_data;
		pd->bus_num = 7;
	}

	npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
			       &s3c_device_i2c7);

	if (!npd->cfg_gpio)
		npd->cfg_gpio = s3c_i2c7_cfg_gpio;
}
void __init s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd)
{
	struct s5p_ehci_platdata *npd;

	npd = s3c_set_platdata(pd, sizeof(struct s5p_ehci_platdata),
			&s5p_device_ehci);

	if (!npd->phy_init)
		npd->phy_init = s5p_usb_phy_init;
	if (!npd->phy_exit)
		npd->phy_exit = s5p_usb_phy_exit;
	if (!npd->phy_suspend)
		npd->phy_suspend = s5p_usb_phy_suspend;
	if (!npd->phy_resume)
		npd->phy_resume = s5p_usb_phy_resume;
}
示例#16
0
void __init s5p_usbgadget_set_platdata(struct s5p_usbgadget_platdata *pd)
{
	struct s5p_usbgadget_platdata *npd;

	if (!pd)
		pd = &default_gadget_pd;
	
	npd = s3c_set_platdata(pd, sizeof(struct s5p_usbgadget_platdata),
			&s3c_device_usbgadget);
	if(!npd->phy_power)
		npd->phy_power = s5p_usb_phy_power;
	if (!npd->phy_init)
		npd->phy_init = s5p_usb_phy_init;
	if (!npd->phy_exit)
		npd->phy_exit = s5p_usb_phy_exit;
}
示例#17
0
void touch_s3c_i2c5_set_platdata(struct s3c2410_platform_i2c *pd, int check_value)
{
	struct s3c2410_platform_i2c *npd;

	if(check_value==0) // 100k
		pd = &touch_100k_i2c_data;
	else // 350k
		pd = &touch_300k_i2c_data;

	pd->bus_num = 5;
	
	npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
			       &s3c_device_i2c5);

	//if (!npd->cfg_gpio)
		npd->cfg_gpio = s3c_i2c5_cfg_gpio;
}
void __init s5p_i2c_hdmiphy_set_platdata(struct s3c2410_platform_i2c *pd)
{
	if (!pd) {
		pd = &default_i2c_data;

		if (soc_is_exynos4210())
			pd->bus_num = 8;
		else if (soc_is_s5pv210())
			pd->bus_num = 3;
		else if (soc_is_exynos5250())
			pd->bus_num = 8;
		else
			pd->bus_num = 0;
	}

	s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
			       &s5p_device_i2c_hdmiphy);
}
示例#19
0
void __init s3c_nand_set_platdata(struct s3c2410_platform_nand *nand)
{
	struct s3c2410_platform_nand *npd;
	int size;
	int ret;

	/* note, if we get a failure in allocation, we simply drop out of the
	 * function. If there is so little memory available at initialisation
	 * time then there is little chance the system is going to run.
	 */

	npd = s3c_set_platdata(nand, sizeof(struct s3c2410_platform_nand),
				&s3c_device_nand);
	if (!npd)
		return;

	/* now see if we need to copy any of the nand set data */

	size = sizeof(struct s3c2410_nand_set) * npd->nr_sets;
	if (size) {
		struct s3c2410_nand_set *from = npd->sets;
		struct s3c2410_nand_set *to;
		int i;

		to = kmemdup(from, size, GFP_KERNEL);
		npd->sets = to;	/* set, even if we failed */

		if (!to) {
			printk(KERN_ERR "%s: no memory for sets\n", __func__);
			return;
		}

		for (i = 0; i < npd->nr_sets; i++) {
			ret = s3c_nand_copy_set(to);
			if (ret) {
				printk(KERN_ERR "%s: failed to copy set %d\n",
				__func__, i);
				return;
			}
			to++;
		}
	}
}
示例#20
0
void __init s5p_hdmi_set_platdata(struct i2c_board_info *hdmiphy_info,
                                  struct i2c_board_info *mhl_info, int mhl_bus)
{
    struct s5p_hdmi_platform_data *pd = &s5p_hdmi_def_platdata;

    if (soc_is_exynos4210())
        pd->hdmiphy_bus = 8;
    else if (soc_is_s5pv210())
        pd->hdmiphy_bus = 3;
    else
        pd->hdmiphy_bus = 0;

    pd->hdmiphy_info = hdmiphy_info;
    pd->mhl_info = mhl_info;
    pd->mhl_bus = mhl_bus;

    s3c_set_platdata(pd, sizeof(struct s5p_hdmi_platform_data),
                     &s5p_device_hdmi);
}
示例#21
0
文件: devs.c 项目: 03199618/linux
void __init s3c64xx_spi2_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
						int num_cs)
{
	struct s3c64xx_spi_info pd;

	/* Reject invalid configuration */
	if (!num_cs || src_clk_nr < 0) {
		pr_err("%s: Invalid SPI configuration\n", __func__);
		return;
	}

	pd.num_cs = num_cs;
	pd.src_clk_nr = src_clk_nr;
	pd.cfg_gpio = (cfg_gpio) ? cfg_gpio : s3c64xx_spi2_cfg_gpio;
#ifdef CONFIG_PL330_DMA
	pd.filter = pl330_filter;
#endif

	s3c_set_platdata(&pd, sizeof(pd), &s3c64xx_device_spi2);
}
static void __init jet_machine_init(void)
{
	s3c_pm_init();

	s3c_init_gpio(jet_gpio_table, ARRAY_SIZE(jet_gpio_table));

	/* Register I2C devices */
	s3c_i2c0_set_platdata(&jet_misc_i2c);
	i2c_register_board_info(jet_misc_i2c.bus_num, jet_misc_i2c_devs,
					ARRAY_SIZE(jet_misc_i2c_devs));
	s3c_i2c1_set_platdata(&jet_cam_i2c);
	i2c_register_board_info(jet_cam_i2c.bus_num, jet_cam_i2c_devs,
					ARRAY_SIZE(jet_cam_i2c_devs));
	i2c_register_board_info(jet_pmic_i2c.id, jet_pmic_i2c_devs,
					ARRAY_SIZE(jet_pmic_i2c_devs));
	i2c_register_board_info(jet_audio_i2c.id, jet_audio_i2c_devs,
					ARRAY_SIZE(jet_audio_i2c_devs));
	i2c_register_board_info(jet_touch_i2c.id, jet_touch_i2c_devs,
					ARRAY_SIZE(jet_touch_i2c_devs));

	s3c_fb_set_platdata(&jet_lcd_pdata);

	s3c_sdhci0_set_platdata(&jet_hsmmc0_pdata);
	s3c_sdhci2_set_platdata(&jet_hsmmc2_pdata);

	samsung_keypad_set_platdata(&jet_keypad_pdata);

	s3c_set_platdata(&jet_onenand_pdata, sizeof(jet_onenand_pdata),
							&s3c_device_onenand);

	/* Register platform devices */
	platform_add_devices(jet_devices, ARRAY_SIZE(jet_devices));
	platform_add_devices(jet_mod_devices, ARRAY_SIZE(jet_mod_devices));

#ifdef CONFIG_ANDROID_PMEM
	/* Register PMEM devices */
	jet_add_mem_devices();
#endif

	regulator_has_full_constraints();
}
示例#23
0
void __init s3c64xx_spi2_set_platdata(struct s3c64xx_spi_info *pd,
                                      int src_clk_nr, int num_cs)
{
    if (!pd) {
        pr_err("%s:Need to pass platform data\n", __func__);
        return;
    }

    /* Reject invalid configuration */
    if (!num_cs || src_clk_nr < 0) {
        pr_err("%s: Invalid SPI configuration\n", __func__);
        return;
    }

    pd->num_cs = num_cs;
    pd->src_clk_nr = src_clk_nr;
    if (!pd->cfg_gpio)
        pd->cfg_gpio = s3c64xx_spi2_cfg_gpio;

    s3c_set_platdata(pd, sizeof(*pd), &s3c64xx_device_spi2);
}
示例#24
0
void __init s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd)
{
	struct s5p_ehci_platdata *npd;

	npd = s3c_set_platdata(pd, sizeof(struct s5p_ehci_platdata),
			&s5p_device_ehci);

	if (!npd->phy_init)
		npd->phy_init = s5p_usb_phy_init;
	if (!npd->phy_exit)
		npd->phy_exit = s5p_usb_phy_exit;
	if (!npd->phy_suspend)
		npd->phy_suspend = s5p_usb_phy_suspend;
	if (!npd->phy_resume)
		npd->phy_resume = s5p_usb_phy_resume;
#if defined(CONFIG_LINK_DEVICE_HSIC) || defined(CONFIG_LINK_DEVICE_USB)
	if (!npd->noti_host_states)
		npd->noti_host_states = set_host_states;
	if (!npd->get_cp_active_state)
		npd->get_cp_active_state = get_cp_active_state;
#endif
}
void __init s5p_usbswitch_set_platdata(struct s5p_usbswitch_platdata *pd)
{
	struct s5p_usbswitch_platdata *npd;

	npd = s3c_set_platdata(pd, sizeof(struct s5p_usbswitch_platdata),
			&s5p_device_usbswitch);

	s5p_usbswitch_res[0].start = gpio_to_irq(npd->gpio_host_detect);
	s5p_usbswitch_res[0].end = gpio_to_irq(npd->gpio_host_detect);
	s5p_usbswitch_res[0].flags = IORESOURCE_IRQ;

	s5p_usbswitch_res[1].start = gpio_to_irq(npd->gpio_device_detect);
	s5p_usbswitch_res[1].end = gpio_to_irq(npd->gpio_device_detect);
	s5p_usbswitch_res[1].flags = IORESOURCE_IRQ;

	s5p_usbswitch_res[2].start = gpio_to_irq(npd->gpio_drd_host_detect);
	s5p_usbswitch_res[2].end = gpio_to_irq(npd->gpio_drd_host_detect);
	s5p_usbswitch_res[2].flags = IORESOURCE_IRQ;

	s5p_usbswitch_res[3].start = gpio_to_irq(npd->gpio_drd_device_detect);
	s5p_usbswitch_res[3].end = gpio_to_irq(npd->gpio_drd_device_detect);
	s5p_usbswitch_res[3].flags = IORESOURCE_IRQ;
#ifdef CONFIG_USB_EHCI_S5P
	npd->ehci_dev = &s5p_device_ehci.dev;
#endif
#ifdef CONFIG_USB_OHCI_S5P
	npd->ohci_dev = &s5p_device_ohci.dev;
#endif
#ifdef CONFIG_USB_XHCI_EXYNOS
	npd->xhci_dev = &exynos_device_xhci.dev;
#endif
#ifdef CONFIG_USB_S3C_OTGD
	npd->s3c_udc_dev = &s3c_device_usbgadget.dev;
#endif
#ifdef CONFIG_EXYNOS_DEV_SS_UDC
	npd->exynos_udc_dev = &exynos_device_ss_udc.dev;
#endif
}
void __init s3c_hsotg_set_platdata(struct s3c_hsotg_plat *pd)
{
	struct s3c_hsotg_plat *npd;

	npd = s3c_set_platdata(pd, sizeof(struct s3c_hsotg_plat),
			&s3c_device_usb_hsotg);

	if (!npd->phy_init)
		npd->phy_init = s5p_usb_phy_init;
	if (!npd->phy_exit)
		npd->phy_exit = s5p_usb_phy_exit;
#if defined(CONFIG_MACH_DELOSLTE_KOR_SKT)
	/* Sqrxtune [13:11] 6b100 : -5% */
	npd->phy_tune_mask |= (0x7 << 11);
	npd->phy_tune |= (0x4 << 11);
#else
	/* Sqrxtune [13:11] 6b110 : -15% */
	npd->phy_tune_mask |= (0x7 << 11);
	npd->phy_tune |= (0x6 << 11);
#endif
	/* Txvreftune [ 3: 0] 9b1001 : +12% */
	npd->phy_tune_mask |= (0xf);
	npd->phy_tune |= (0x9);
}
示例#27
0
void __init s3c64xx_spi2_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
						int num_cs)
{
	struct s3c64xx_spi_info pd;

	/* Reject invalid configuration */
	if (!num_cs || src_clk_nr < 0) {
		pr_err("%s: Invalid SPI configuration\n", __func__);
		return;
	}

	pd.num_cs = num_cs;
	pd.src_clk_nr = src_clk_nr;
	pd.cfg_gpio = (cfg_gpio) ? cfg_gpio : s3c64xx_spi2_cfg_gpio;
	pd.dma_tx = (void *)DMACH_SPI2_TX;
	pd.dma_rx = (void *)DMACH_SPI2_RX;
#if defined(CONFIG_PL330_DMA)
	pd.filter = pl330_filter;
#elif defined(CONFIG_S3C64XX_PL080)
	pd.filter = pl08x_filter_id;
#endif

	s3c_set_platdata(&pd, sizeof(pd), &s3c64xx_device_spi2);
}
示例#28
0
void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
{
	s3c_set_platdata(hard_s3c2410ts_info,
			 sizeof(struct s3c2410_ts_mach_info), &s3c_device_ts);
}
示例#29
0
void __init s3c24xx_mci_set_platdata(struct s3c24xx_mci_pdata *pdata)
{
	s3c_set_platdata(pdata, sizeof(struct s3c24xx_mci_pdata),
			 &s3c_device_sdi);
}
示例#30
0
void __init s3c64xx_onenand1_set_platdata(struct onenand_platform_data *pdata)
{
	s3c_set_platdata(pdata, sizeof(struct onenand_platform_data),
			 &s3c64xx_device_onenand1);
}