예제 #1
0
/*
 * tviu800_init
 *	Called to add the devices which we have on this board
 */
static int __init tviu800_init(void)
{
	struct platform_device *audio_dev;
	struct ubi32_wm8988_platform_data *wm8988_pd;
	int ret;

	if (ubicom32_flash_single_init()) {
		printk(KERN_ERR "%s: could not initialize flash controller\n", __FUNCTION__);
	}

	board_init();

	ubi_gpio_init();

	/*
	 * Start the flash driver
	 */
	ubicom32_flash_single_init();

	/*
	 * Hold the POWER_HOLD line
	 */
	ret = gpio_request(GPIO_RF_11, "POWER_HOLD");
	if (ret) {
		printk(KERN_ERR "%s: could not request POWER_HOLD GPIO\n", __FUNCTION__);
	}
	gpio_direction_output(GPIO_RF_11, 1);
	mach_power_off = tviu800_power_off;

	/*
	 * Bring up audio devices
	 */
	platform_add_devices(tviu800_devices, ARRAY_SIZE(tviu800_devices));

	audio_dev = audio_device_alloc("snd-ubi32-wm8988", "audio", "audio-i2sout", sizeof(struct ubi32_wm8988_platform_data));
	if (audio_dev) {
		printk(KERN_INFO "%s: setting audio_dev properties\n", __FUNCTION__);
		wm8988_pd = audio_device_priv(audio_dev);
		wm8988_pd->mclk_src = UBI32_WM8988_MCLK_CLKDIV_1;
		wm8988_pd->n_mclk = ARRAY_SIZE(tviu800_wm8988_mclk_entries);
		wm8988_pd->mclk_entries = tviu800_wm8988_mclk_entries;
		tviu800_i2c_board_info[0].platform_data = audio_dev;
	}

	printk(KERN_INFO "%s: registering i2c resources\n", __FUNCTION__);
	i2c_register_board_info(0, tviu800_i2c_board_info, ARRAY_SIZE(tviu800_i2c_board_info));

	printk(KERN_INFO "TVIU800 TechVision DLNA board\n");

	return 0;
}
예제 #2
0
파일: board-ip5170dpf.c 프로젝트: 7LK/McWRT
/*
 * ip5170dpf_init
 *	Called to add the devices which we have on this board
 */
static int __init ip5170dpf_init(void)
{
	ubi_gpio_init();

	vdc_tio_init();

	printk(KERN_INFO "%s: registering device resources\n", __FUNCTION__);
	platform_add_devices(ip5170dpf_devices, ARRAY_SIZE(ip5170dpf_devices));

	printk(KERN_INFO "%s: registering i2c resources\n", __FUNCTION__);
	i2c_register_board_info(0, ip5170dpf_i2c_board_info, ARRAY_SIZE(ip5170dpf_i2c_board_info));

	return 0;
}
예제 #3
0
/*
 * ip7500wspkr_init
 *	Called to add the devices which we have on this board
 */
static int __init ip7500wspkr_init(void)
{
	struct platform_device *audio_dev;
	struct platform_device *audio_dev2;
	int ret;

	if (ubicom32_flash_single_init()) {
		printk(KERN_ERR "%s: could not initialize flash controller\n", __FUNCTION__);
	}

	board_init();

	ubi_gpio_init();

	/*
	 * Start the flash driver
	 */
	ubicom32_flash_single_init();

	platform_add_devices(ip7500wspkr_devices, ARRAY_SIZE(ip7500wspkr_devices));

	/*
	 * DAC nRESET line
	 */
	ret = gpio_request(GPIO_RD_7, "DAC_nRESET");
	if (ret) {
		printk(KERN_ERR "%s: could not request DAC_nRESET GPIO: %d\n", __FUNCTION__, ret);
	}
	gpio_direction_output(GPIO_RD_7, 0);
	udelay(1);
	gpio_direction_output(GPIO_RD_7, 1);

	audio_dev = audio_device_alloc("snd-ubi32-cs4350", "audio", "audio-i2sout", 0);
	if (audio_dev) {
		ip7500wspkr_i2c_board_info[0].platform_data = audio_dev;
	}

	audio_dev2 = audio_device_alloc("snd-ubi32-generic", "audio", "audio-spdifout", 0);
	if (audio_dev2) {
		platform_device_register(audio_dev2);
	}

	printk(KERN_INFO "%s: registering i2c resources\n", __FUNCTION__);
	i2c_register_board_info(0, ip7500wspkr_i2c_board_info, ARRAY_SIZE(ip7500wspkr_i2c_board_info));

	printk(KERN_INFO "IP7500 Wireless Speaker Board\n");

	return 0;
}
예제 #4
0
/*
 * ip7160bringup_init
 *	Called to add the devices which we have on this board
 */
static int __init ip7160bringup_init(void)
{
	board_init();

	ubi_gpio_init();

	/*
	 * Start the flash driver
	 */
	ubicom32_flash_single_init();

	printk(KERN_INFO "%s: registering device resources\n", __FUNCTION__);
	platform_add_devices(ip7160bringup_devices, ARRAY_SIZE(ip7160bringup_devices));

	return 0;
}
예제 #5
0
파일: board-ip7160rgw.c 프로젝트: 7LK/McWRT
/*
 * ip7160rgw_init
 *	Called to add the devices which we have on this board
 */
static int __init ip7160rgw_init(void)
{
	board_init();

	/*
	 * Rev 1.2 boards have spi in a different place than 1.1/1.0
	 */
	if (strcmp(board_get_revision(), "1.2") == 0) {
		ip7160rgw_spi_gpio_data.pin_mosi = GPIO_RD_7;
	}

	ubi_gpio_init();

	/*
	 * Reserve switch SPI CS on behalf on switch driver
	 */
	if (gpio_request(ip7160rgw_bcm539x_controller_data.pin_cs, "switch-bcm539x-cs")) {
		printk(KERN_WARNING "Could not request cs of switch SPI I/F\n");
		return -EIO;
	}
	gpio_direction_output(ip7160rgw_bcm539x_controller_data.pin_cs, 1);

	printk(KERN_INFO "%s: registering device resources\n", __FUNCTION__);
	platform_add_devices(ip7160rgw_devices, ARRAY_SIZE(ip7160rgw_devices));

	printk(KERN_INFO "%s: registering SPI resources\n", __FUNCTION__);
	spi_register_board_info(ip7160rgw_spi_board_info, ARRAY_SIZE(ip7160rgw_spi_board_info));

#ifdef CONFIG_IP7160RGWLCD
	printk(KERN_INFO "%s: registering i2c resources\n", __FUNCTION__);
	i2c_register_board_info(0, ip7160rgwlcd_i2c_board_info, ARRAY_SIZE(ip7160rgwlcd_i2c_board_info));
	printk(KERN_INFO "IP7160 RGW + LCD\n");
#else
	printk(KERN_INFO "IP7160 RGW\n");
#endif
	return 0;
}
예제 #6
0
/*
 * ip7500module_init
 *	Called to add the devices which we have on this board
 */
static int __init ip7500module_init(void)
{
	if (ubicom32_flash_single_init()) {
		printk(KERN_ERR "%s: could not initialize flash controller\n", __FUNCTION__);
	}

	board_init();

	ubi_gpio_init();

	/*
	 * Start the flash driver
	 */
	ubicom32_flash_single_init();

	platform_add_devices(ip7500module_devices, ARRAY_SIZE(ip7500module_devices));

	printk(KERN_INFO "%s: registering i2c resources\n", __FUNCTION__);
	i2c_register_board_info(0, ip7500module_i2c_board_info, ARRAY_SIZE(ip7500module_i2c_board_info));

	//vdc_tio_init(NULL);

	return 0;
}
예제 #7
0
/*
 * ip7145dpf_init
 *	Called to add the devices which we have on this board
 */
static int __init ip7145dpf_init(void)
{
	int ret;
	struct platform_device *audio_dev;

	if (ubicom32_flash_single_init()) {
		printk(KERN_ERR "%s: could not initialize flash controller\n", __FUNCTION__);
	}

	ubi_gpio_init();

#ifdef CONFIG_UIO_UBICOM32RING
	ring_tio_init("decoder_ring");
#endif

	/*
	 * Start the flash driver
	 */
	ubicom32_flash_single_init();

	/*
	 * Start up the video driver first
	 */
	vdc_tio_init(NULL);

	/*
	 * Take over holding of the power from the system
	 */
	ret = gpio_request(GPIO_RE_5, "power_hold");
	if (ret) {
		printk(KERN_ERR "%s: could not request power hold GPIO\n", __FUNCTION__);
	}
	gpio_direction_output(GPIO_RE_5, 1);
	mach_power_off = ip7145dpf_power_off;

	/*
	 * USB SEL_HOST_USB line
	 */
	ret = gpio_request(GPIO_RF_11, "SEL_HOST_USB");
	if (ret) {
		printk(KERN_ERR "%s: could not request SEL_HOST_USB GPIO\n", __FUNCTION__);
	}
	gpio_direction_output(GPIO_RF_11, 0);

	/*
	 * Setup audio
	 */
	audio_dev = audio_device_alloc("snd-ubi32-generic", "audio", "audio-i2sout", 0);
	if (audio_dev) {
		platform_device_register(audio_dev);
	}

	/*
	 * Register all of the devices we have on this board
	 */
	printk(KERN_INFO "%s: registering device resources\n", __FUNCTION__);
	platform_add_devices(ip7145dpf_devices, ARRAY_SIZE(ip7145dpf_devices));

	/*
	 * Register all of the devices which sit on the I2C bus
	 */
	printk(KERN_INFO "%s: registering i2c resources\n", __FUNCTION__);
	i2c_register_board_info(0, ip7145dpf_i2c_board_info, ARRAY_SIZE(ip7145dpf_i2c_board_info));

	/*
	 * We have to initialize the SPI after the I2C IOB gets setup. SPI is initialized in
	 * ip7145dpf_u72_setup
	 */

	return 0;
}
예제 #8
0
/*
 * ip7500av_init
 *	Called to add the devices which we have on this board
 */
static int __init ip7500av_init(void)
{
	struct platform_device *audio_dev;
	struct platform_device *audio_dev2;
	struct ubi32_cs4384_platform_data *cs4384_pd;

	if (ubicom32_flash_single_init()) {
		printk(KERN_ERR "%s: could not initialize flash controller\n", __FUNCTION__);
	}

	board_init();

	ubi_gpio_init();

	/*
	 * Start the flash driver
	 */
	ubicom32_flash_single_init();

	vdc_tio_init(NULL);

	printk(KERN_INFO "%s: registering device resources\n", __FUNCTION__);
	platform_add_devices(ip7500av_devices, ARRAY_SIZE(ip7500av_devices));

	/*
	 * CS4384 DAC
	 */
	audio_dev = audio_device_alloc("snd-ubi32-cs4384", "audio", "audio-i2sout",
			sizeof(struct ubi32_cs4384_platform_data));
	if (audio_dev) {
		/*
		 * Attempt to figure out a good divisor.  This will only work
		 * assuming the core frequency is compatible.
		 */
		int i;
		unsigned int freq = processor_frequency();
		for (i = 0; i < ARRAY_SIZE(ip7500av_cs4384_mclk_entries); i++) {
			unsigned int div;
			unsigned int rate = ip7500av_cs4384_mclk_entries[i].rate / 1000;
			div = ((freq / rate) + 500) / 1000;
			ip7500av_cs4384_mclk_entries[i].div = div;
			printk("CS4384 mclk %d rate %u000Hz div %u act %u\n", i, rate, div, freq / div);
		}

		cs4384_pd = audio_device_priv(audio_dev);
		cs4384_pd->mclk_src = UBI32_CS4384_MCLK_PWM_0;
		cs4384_pd->n_mclk = ARRAY_SIZE(ip7500av_cs4384_mclk_entries);
		cs4384_pd->mclk_entries = ip7500av_cs4384_mclk_entries;
		ip7500av_i2c_board_info[0].platform_data = audio_dev;

		/*
		 * Reset the DAC
		 */
		if (gpio_request(GPIO_RF_4, "DAC Reset") == 0) {
			gpio_direction_output(GPIO_RF_4, 0);
			udelay(1);
			gpio_direction_output(GPIO_RF_4, 1);
		} else {
			printk("Unable to request DAC reset GPIO\n");
		}
	}

	/*
	 * SPDIF port
	 */
	audio_dev2 = audio_device_alloc("snd-ubi32-generic", "audio", "audio-spdifout", 0);
	if (audio_dev2) {
		platform_device_register(audio_dev2);
	}

	/*
	 * Register all of the devices which sit on the I2C bus
	 */
	printk(KERN_INFO "%s: registering i2c resources\n", __FUNCTION__);
	i2c_register_board_info(0, ip7500av_i2c_board_info, ARRAY_SIZE(ip7500av_i2c_board_info));

	printk(KERN_INFO "IP7500 Audio/Video Board\n");
	return 0;
}
예제 #9
0
/*
 * ip7500iap_init
 *	Called to add the devices which we have on this board
 */
static int __init ip7500iap_init(void)
{
	struct platform_device *audio_dev;
	struct platform_device *audio_dev2;
	int ret;

	if (ubicom32_flash_single_init()) {
		printk(KERN_ERR "%s: could not initialize flash controller\n", __FUNCTION__);
	}

	board_init();

	ubi_gpio_init();

	/*
	 * Start the flash driver
	 */
	ubicom32_flash_single_init();

	/*
	 * Hold the POWER_HOLD line
	 */
	ret = gpio_request(GPIO_RF_11, "POWER_HOLD");
	if (ret) {
		printk(KERN_ERR "%s: could not request POWER_HOLD GPIO\n", __FUNCTION__);
	}
	gpio_direction_output(GPIO_RF_11, 1);
	mach_power_off = ip7500iap_power_off;

#ifndef CONFIG_DISPLAY_AUTODETECT
	/*
	 * Bring up video
	 */
	vdc_tio_fill_platform_data(&ip7500iap_ubicom32fb_platform_data);

	printk(KERN_INFO "%s: initializing video driver\n", __FUNCTION__);

	vdc_tio_init(&ip7500iap_ubicom32fb_platform_data);
#endif

	/*
	 * DAC nRESET line
	 */
	ret = gpio_request(GPIO_RE_7, "DAC_nRESET");
	if (ret) {
		printk(KERN_ERR "%s: could not request DAC_nRESET GPIO\n", __FUNCTION__);
	}
	gpio_direction_output(GPIO_RE_7, 0);
	udelay(1);
	gpio_set_value(GPIO_RE_7, 1);

	/*
	 * Bring up any SDIO slots
	 */
	ip7500iap_portb_sd_init();
	ip7500iap_portf_sd_init();

#ifdef CONFIG_SOUND
	/*
	 * Bring up audio devices
	 */
	platform_add_devices(ip7500iap_devices, ARRAY_SIZE(ip7500iap_devices));

	audio_dev = audio_device_alloc("snd-ubi32-cs4350", "audio", "audio-i2sout", 0);
	if (audio_dev) {
		ip7500iap_i2c_board_info[0].platform_data = audio_dev;
	}

	audio_dev2 = audio_device_alloc("snd-ubi32-generic", "audio", "audio-spdifout", 0);
	if (audio_dev2) {
		platform_device_register(audio_dev2);
	}

	printk(KERN_INFO "%s: registering i2c resources\n", __FUNCTION__);
	i2c_register_board_info(0, ip7500iap_i2c_board_info, ARRAY_SIZE(ip7500iap_i2c_board_info));
#endif

	printk(KERN_INFO "IP7500 Internet Audio Player\n");
	return 0;
}
예제 #10
0
/*
 * ip7160dpf_init
 *	Called to add the devices which we have on this board
 */
static int __init ip7160dpf_init(void)
{
	int ret;
	struct platform_device *audio_dev;

	if (ubicom32_flash_single_init()) {
		printk(KERN_ERR "%s: could not initialize flash controller\n", __FUNCTION__);
	}

	ubi_gpio_init();

	/*
	 * Start the flash driver
	 */
	ubicom32_flash_single_init();

	/*
	 * Hold the POWER_HOLD line
	 */
	ret = gpio_request(GPIO_RF_14, "POWER_HOLD");
	if (ret) {
		printk(KERN_ERR "%s: could not request POWER_HOLD GPIO\n", __FUNCTION__);
	}
	gpio_direction_output(GPIO_RF_14, 1);
	mach_power_off = ip7160dpf_power_off;

	/*
	 * USB SEL_HOST_USB line
	 */
	ret = gpio_request(GPIO_RI_13, "SEL_HOST_USB");
	if (ret) {
		printk(KERN_ERR "%s: could not request SEL_HOST_USB GPIO\n", __FUNCTION__);
	}
	gpio_direction_output(GPIO_RI_13, 0);

	/*
	 * USB/DAC nRESET line
	 */
	ret = gpio_request(GPIO_RI_3, "USB_DAC_nRESET");
	if (ret) {
		printk(KERN_ERR "%s: could not request USB_DAC_nRESET GPIO\n", __FUNCTION__);
	}
	gpio_direction_output(GPIO_RI_3, 0);
	udelay(1);
	gpio_direction_output(GPIO_RI_3, 1);

	/*
	 * I2C BUS2 Disable line
	 */
	ret = gpio_request(GPIO_RI_0, "DISABLE_BUS2");
	if (ret) {
		printk(KERN_ERR "%s: could not request DISABLE_BUS2 GPIO\n", __FUNCTION__);
	}
	gpio_direction_output(GPIO_RI_0, 0);

	vdc_tio_init(NULL);

	printk(KERN_INFO "%s: registering device resources\n", __FUNCTION__);
	platform_add_devices(ip7160dpf_devices, ARRAY_SIZE(ip7160dpf_devices));

	/*
	 * Allocate the audio driver if we can
	 */
	audio_dev = audio_device_alloc("snd-ubi32-cs4350", "audio-i2sout", 0);
	if (audio_dev) {
		ip7160dpf_i2c_board_info[0].platform_data = audio_dev;
	}

	printk(KERN_INFO "%s: registering i2c resources\n", __FUNCTION__);
	i2c_register_board_info(0, ip7160dpf_i2c_board_info, ARRAY_SIZE(ip7160dpf_i2c_board_info));

	return 0;
}