diff mbox

ARM: EXYNOS4: Enable Bluetooth on ORIGEN

Message ID 1319633280-17799-1-git-send-email-sangwook.lee@linaro.org
State Accepted
Headers show

Commit Message

Sangwook Oct. 26, 2011, 12:48 p.m. UTC
This patch enables Bluetooth support on ORIGEN board.

Signed-off-by: Sangwook <sangwook.lee@linaro.org>
---
 arch/arm/mach-exynos4/mach-origen.c |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

Comments

Kukjin Kim Nov. 4, 2011, 5:02 a.m. UTC | #1
Sangwook Lee wrote:
> 
> This patch enables Bluetooth support on ORIGEN board.
> 
> Signed-off-by: Sangwook <sangwook.lee@linaro.org>
> ---
>  arch/arm/mach-exynos4/mach-origen.c |   32
> ++++++++++++++++++++++++++++++++
>  1 files changed, 32 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/mach-exynos4/mach-origen.c
b/arch/arm/mach-exynos4/mach-
> origen.c
> index f80b563..f8c50d7 100644
> --- a/arch/arm/mach-exynos4/mach-origen.c
> +++ b/arch/arm/mach-exynos4/mach-origen.c
> @@ -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/mach-types.h>
> @@ -232,6 +233,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,
> @@ -275,6 +277,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,
> @@ -290,6 +293,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,
> @@ -588,6 +592,21 @@ 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,
> @@ -615,6 +634,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 */
> @@ -628,6 +648,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 */
> @@ -687,6 +717,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")
> --
> 1.7.4.1

Applied.
Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
Kukjin Kim Dec. 28, 2011, 7:59 a.m. UTC | #2
Sangwook Lee wrote:
> 
> This patch enables Bluetooth support on ORIGEN board.
> 
> Signed-off-by: Sangwook <sangwook.lee@linaro.org>

Maybe should be 'Signed-off-by: Sangwook Lee <Sangwook.lee@linaro.org>'?

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
diff mbox

Patch

diff --git a/arch/arm/mach-exynos4/mach-origen.c b/arch/arm/mach-exynos4/mach-origen.c
index f80b563..f8c50d7 100644
--- a/arch/arm/mach-exynos4/mach-origen.c
+++ b/arch/arm/mach-exynos4/mach-origen.c
@@ -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/mach-types.h>
@@ -232,6 +233,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,
@@ -275,6 +277,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,
@@ -290,6 +293,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,
@@ -588,6 +592,21 @@  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,
@@ -615,6 +634,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 */
@@ -628,6 +648,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 */
@@ -687,6 +717,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")