Patchwork [meta-handheld] linux-yocto: collie: add platform data for IrDA

login
register
mail settings
Submitter Andrea Adami
Date Nov. 9, 2013, 6:02 p.m.
Message ID <1384020128-15779-1-git-send-email-andrea.adami@gmail.com>
Download mbox | patch
Permalink /patch/61387/
State Accepted, archived
Headers show

Comments

Andrea Adami - Nov. 9, 2013, 6:02 p.m.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
---
 .../linux/linux-yocto-3.10/collie/collie.scc       |  1 +
 .../patches/patches-sa1100/collie-irda.patch       | 88 ++++++++++++++++++++++
 2 files changed, 89 insertions(+)
 create mode 100644 recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/collie-irda.patch
Paul Eggleton - Nov. 11, 2013, 1:08 p.m.
On Saturday 09 November 2013 19:02:07 Andrea Adami wrote:
> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
> Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
> ---
>  .../linux/linux-yocto-3.10/collie/collie.scc       |  1 +
>  .../patches/patches-sa1100/collie-irda.patch       | 88
> ++++++++++++++++++++++ 2 files changed, 89 insertions(+)
>  create mode 100644
> recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/collie-irda.pa
> tch
> 
> diff --git a/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc
> b/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc index
> 3b9b55a..f66b7be 100644
> --- a/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc
> +++ b/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc
> @@ -11,3 +11,4 @@ patch ../patches/patches-mtd/collie-eraseinfo.patch
>  patch ../patches/patches-mtd/collie-force-cfi.patch
>  patch ../patches/patches-mtd/collie-mtd-resize.patch
>  patch ../patches/patches-mtd/collie-force-unlock.patch
> +patch ../patches/patches-sa1100/collie-irda.patch
> diff --git
> a/recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/collie-irda.
> patch
> b/recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/collie-irda.
> patch new file mode 100644
> index 0000000..46ad808
> --- /dev/null
> +++
> b/recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/collie-irda.
> patch @@ -0,0 +1,88 @@
> +From c6fb61edf283f255c3763a57366bb89bb36ad79c Mon Sep 17 00:00:00 2001
> +From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
> +Date: Fri, 8 Nov 2013 17:57:32 +0400
> +Subject: [PATCH] collie: add support for IrDA transceiver
> +
> +Collie has onboard IrDA transceiver controlled via active-low gpio. Add
> +corresponding platform data.
> +
> +Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
> +---
> + arch/arm/mach-sa1100/collie.c              | 33
> ++++++++++++++++++++++++++++++ + arch/arm/mach-sa1100/include/mach/collie.h
> |  2 +-
> + 2 files changed, 34 insertions(+), 1 deletion(-)
> +
> +diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c
> +index 2349dee..1b9473d 100644
> +--- a/arch/arm/mach-sa1100/collie.c
> ++++ b/arch/arm/mach-sa1100/collie.c
> +@@ -41,6 +41,7 @@
> + #include <asm/mach/arch.h>
> + #include <asm/mach/flash.h>
> + #include <asm/mach/map.h>
> ++#include <asm/mach/irda.h>
> +
> + #include <asm/hardware/scoop.h>
> + #include <asm/mach/sharpsl_param.h>
> +@@ -94,6 +95,37 @@ static struct mcp_plat_data collie_mcp_data = {
> + 	.codec_pdata	= &collie_ucb1x00_data,
> + };
> +
> ++int collie_ir_startup(struct device *dev)
> ++{
> ++	int rc = gpio_request(COLLIE_GPIO_IR_ON, "IrDA");
> ++	if (rc)
> ++		return rc;
> ++	rc = gpio_direction_output(COLLIE_GPIO_IR_ON, 1);
> ++
> ++	if (!rc)
> ++		return 0;
> ++
> ++	gpio_free(COLLIE_GPIO_IR_ON);
> ++	return rc;
> ++}
> ++
> ++void collie_ir_shutdown(struct device *dev)
> ++{
> ++	gpio_free(COLLIE_GPIO_IR_ON);
> ++}
> ++
> ++static int collie_ir_set_power(struct device *dev, unsigned int state)
> ++{
> ++	gpio_set_value(COLLIE_GPIO_IR_ON, !state);
> ++	return 0;
> ++}
> ++
> ++static struct irda_platform_data collie_ir_data = {
> ++	.startup = collie_ir_startup,
> ++	.shutdown = collie_ir_shutdown,
> ++	.set_power = collie_ir_set_power,
> ++};
> ++
> + /*
> +  * Collie AC IN
> +  */
> +@@ -323,6 +355,7 @@ static void __init collie_init(void)
> + 	sa11x0_register_mtd(&collie_flash_data, collie_flash_resources,
> + 			    ARRAY_SIZE(collie_flash_resources));
> + 	sa11x0_register_mcp(&collie_mcp_data);
> ++	sa11x0_register_irda(&collie_ir_data);
> +
> + 	sharpsl_save_param();
> + }
> +diff --git a/arch/arm/mach-sa1100/include/mach/collie.h
> b/arch/arm/mach-sa1100/include/mach/collie.h +index f33679d..0ef22f9 100644
> +--- a/arch/arm/mach-sa1100/include/mach/collie.h
> ++++ b/arch/arm/mach-sa1100/include/mach/collie.h
> +@@ -78,7 +78,7 @@ extern void locomolcd_power(int on);
> + #define COLLIE_TC35143_GPIO_VERSION0    UCB_IO_0
> + #define COLLIE_TC35143_GPIO_TBL_CHK     UCB_IO_1
> + #define COLLIE_TC35143_GPIO_VPEN_ON     UCB_IO_2
> +-#define COLLIE_TC35143_GPIO_IR_ON       UCB_IO_3
> ++#define COLLIE_GPIO_IR_ON		(COLLIE_TC35143_GPIO_BASE + 3)
> + #define COLLIE_TC35143_GPIO_AMP_ON      UCB_IO_4
> + #define COLLIE_TC35143_GPIO_VERSION1    UCB_IO_5
> + #define COLLIE_TC35143_GPIO_FS8KLPF     UCB_IO_5
> +--
> +1.8.4.rc3
> +

These two now merged to meta-handheld master, thanks.

Cheers,
Paul

Patch

diff --git a/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc b/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc
index 3b9b55a..f66b7be 100644
--- a/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc
+++ b/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc
@@ -11,3 +11,4 @@  patch ../patches/patches-mtd/collie-eraseinfo.patch
 patch ../patches/patches-mtd/collie-force-cfi.patch
 patch ../patches/patches-mtd/collie-mtd-resize.patch
 patch ../patches/patches-mtd/collie-force-unlock.patch
+patch ../patches/patches-sa1100/collie-irda.patch
diff --git a/recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/collie-irda.patch b/recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/collie-irda.patch
new file mode 100644
index 0000000..46ad808
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/collie-irda.patch
@@ -0,0 +1,88 @@ 
+From c6fb61edf283f255c3763a57366bb89bb36ad79c Mon Sep 17 00:00:00 2001
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Date: Fri, 8 Nov 2013 17:57:32 +0400
+Subject: [PATCH] collie: add support for IrDA transceiver
+
+Collie has onboard IrDA transceiver controlled via active-low gpio. Add
+corresponding platform data.
+
+Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+---
+ arch/arm/mach-sa1100/collie.c              | 33 ++++++++++++++++++++++++++++++
+ arch/arm/mach-sa1100/include/mach/collie.h |  2 +-
+ 2 files changed, 34 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c
+index 2349dee..1b9473d 100644
+--- a/arch/arm/mach-sa1100/collie.c
++++ b/arch/arm/mach-sa1100/collie.c
+@@ -41,6 +41,7 @@
+ #include <asm/mach/arch.h>
+ #include <asm/mach/flash.h>
+ #include <asm/mach/map.h>
++#include <asm/mach/irda.h>
+ 
+ #include <asm/hardware/scoop.h>
+ #include <asm/mach/sharpsl_param.h>
+@@ -94,6 +95,37 @@ static struct mcp_plat_data collie_mcp_data = {
+ 	.codec_pdata	= &collie_ucb1x00_data,
+ };
+ 
++int collie_ir_startup(struct device *dev)
++{
++	int rc = gpio_request(COLLIE_GPIO_IR_ON, "IrDA");
++	if (rc)
++		return rc;
++	rc = gpio_direction_output(COLLIE_GPIO_IR_ON, 1);
++
++	if (!rc)
++		return 0;
++
++	gpio_free(COLLIE_GPIO_IR_ON);
++	return rc;
++}
++
++void collie_ir_shutdown(struct device *dev)
++{
++	gpio_free(COLLIE_GPIO_IR_ON);
++}
++
++static int collie_ir_set_power(struct device *dev, unsigned int state)
++{
++	gpio_set_value(COLLIE_GPIO_IR_ON, !state);
++	return 0;
++}
++
++static struct irda_platform_data collie_ir_data = {
++	.startup = collie_ir_startup,
++	.shutdown = collie_ir_shutdown,
++	.set_power = collie_ir_set_power,
++};
++
+ /*
+  * Collie AC IN
+  */
+@@ -323,6 +355,7 @@ static void __init collie_init(void)
+ 	sa11x0_register_mtd(&collie_flash_data, collie_flash_resources,
+ 			    ARRAY_SIZE(collie_flash_resources));
+ 	sa11x0_register_mcp(&collie_mcp_data);
++	sa11x0_register_irda(&collie_ir_data);
+ 
+ 	sharpsl_save_param();
+ }
+diff --git a/arch/arm/mach-sa1100/include/mach/collie.h b/arch/arm/mach-sa1100/include/mach/collie.h
+index f33679d..0ef22f9 100644
+--- a/arch/arm/mach-sa1100/include/mach/collie.h
++++ b/arch/arm/mach-sa1100/include/mach/collie.h
+@@ -78,7 +78,7 @@ extern void locomolcd_power(int on);
+ #define COLLIE_TC35143_GPIO_VERSION0    UCB_IO_0
+ #define COLLIE_TC35143_GPIO_TBL_CHK     UCB_IO_1
+ #define COLLIE_TC35143_GPIO_VPEN_ON     UCB_IO_2
+-#define COLLIE_TC35143_GPIO_IR_ON       UCB_IO_3
++#define COLLIE_GPIO_IR_ON		(COLLIE_TC35143_GPIO_BASE + 3)
+ #define COLLIE_TC35143_GPIO_AMP_ON      UCB_IO_4
+ #define COLLIE_TC35143_GPIO_VERSION1    UCB_IO_5
+ #define COLLIE_TC35143_GPIO_FS8KLPF     UCB_IO_5
+-- 
+1.8.4.rc3
+