Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62d30f86 authored by Sangwook Lee's avatar Sangwook Lee Committed by Kukjin Kim
Browse files

ARM: EXYNOS: Enable Bluetooth on ORIGEN



This patch enables Bluetooth support on ORIGEN board.

Signed-off-by: default avatarSangwook Lee <sangwook.lee@linaro.org>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent 2cd11b09
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <linux/regulator/machine.h>
#include <linux/mfd/max8997.h>
#include <linux/lcd.h>
#include <linux/rfkill-gpio.h>

#include <asm/mach/arch.h>
#include <asm/hardware/gic.h>
@@ -235,6 +236,7 @@ static struct regulator_init_data __initdata max8997_ldo9_data = {
		.min_uV		= 2800000,
		.max_uV		= 2800000,
		.apply_uV	= 1,
		.always_on	= 1,
		.valid_ops_mask	= REGULATOR_CHANGE_STATUS,
		.state_mem	= {
			.disabled	= 1,
@@ -278,6 +280,7 @@ static struct regulator_init_data __initdata max8997_ldo14_data = {
		.min_uV		= 1800000,
		.max_uV		= 1800000,
		.apply_uV	= 1,
		.always_on	= 1,
		.valid_ops_mask	= REGULATOR_CHANGE_STATUS,
		.state_mem	= {
			.disabled	= 1,
@@ -293,6 +296,7 @@ static struct regulator_init_data __initdata max8997_ldo17_data = {
		.min_uV		= 3300000,
		.max_uV		= 3300000,
		.apply_uV	= 1,
		.always_on	= 1,
		.valid_ops_mask	= REGULATOR_CHANGE_STATUS,
		.state_mem	= {
			.disabled	= 1,
@@ -602,6 +606,23 @@ static struct s3c_fb_platdata origen_lcd_pdata __initdata = {
	.setup_gpio	= exynos4_fimd0_gpio_setup_24bpp,
};

/* Bluetooth rfkill gpio platform data */
struct rfkill_gpio_platform_data origen_bt_pdata = {
	.reset_gpio	= EXYNOS4_GPX2(2),
	.shutdown_gpio	= -1,
	.type		= RFKILL_TYPE_BLUETOOTH,
	.name		= "origen-bt",
};

/* Bluetooth Platform device */
static struct platform_device origen_device_bluetooth = {
	.name		= "rfkill_gpio",
	.id		= -1,
	.dev		= {
		.platform_data	= &origen_bt_pdata,
	},
};

static struct platform_device *origen_devices[] __initdata = {
	&s3c_device_hsmmc2,
	&s3c_device_hsmmc0,
@@ -630,6 +651,7 @@ static struct platform_device *origen_devices[] __initdata = {
	&exynos4_device_pd[PD_MFC],
	&origen_device_gpiokeys,
	&origen_lcd_hv070wsa,
	&origen_device_bluetooth,
};

/* LCD Backlight data */
@@ -643,6 +665,16 @@ static struct platform_pwm_backlight_data origen_bl_data = {
	.pwm_period_ns	= 1000,
};

static void __init origen_bt_setup(void)
{
	gpio_request(EXYNOS4_GPA0(0), "GPIO BT_UART");
	/* 4 UART Pins configuration */
	s3c_gpio_cfgrange_nopull(EXYNOS4_GPA0(0), 4, S3C_GPIO_SFN(2));
	/* Setup BT Reset, this gpio will be requesed by rfkill-gpio */
	s3c_gpio_cfgpin(EXYNOS4_GPX2(2), S3C_GPIO_OUTPUT);
	s3c_gpio_setpull(EXYNOS4_GPX2(2), S3C_GPIO_PULL_NONE);
}

static void s5p_tv_setup(void)
{
	/* Direct HPD to HDMI chip */
@@ -703,6 +735,8 @@ static void __init origen_machine_init(void)
	s5p_device_mfc.dev.parent = &exynos4_device_pd[PD_MFC].dev;

	samsung_bl_set(&origen_bl_gpio_info, &origen_bl_data);

	origen_bt_setup();
}

MACHINE_START(ORIGEN, "ORIGEN")