[Armadeus-commitlog] armadeus branch, master, updated. release-3.2-22-g465f0e9
Brought to you by:
sszy
|
From: Julien B a. A. <ar...@us...> - 2009-12-07 13:24:21
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 465f0e9138bebdd7fa5eb14cd4d86db784571d1a (commit)
via bbc7b198caa4d7522fa31028a080a8b619090139 (commit)
via 9d825d3762aebfcefd5e743ac6744dc9a6920b1b (commit)
from 6bcecb85efaad9ca0a7fb4a4e3221066d06960f7 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 465f0e9138bebdd7fa5eb14cd4d86db784571d1a
Author: Julien Boibessot <jul...@ar...>
Date: Mon Dec 7 14:22:57 2009 +0100
[LINUX] Add support for i.MX27 internal keypad controller
commit bbc7b198caa4d7522fa31028a080a8b619090139
Author: Julien Boibessot <jul...@ar...>
Date: Mon Dec 7 14:05:50 2009 +0100
[TOOLS] Removes ambiguous message from quiltify.sh
commit 9d825d3762aebfcefd5e743ac6744dc9a6920b1b
Author: Julien Boibessot <jul...@ar...>
Date: Mon Dec 7 14:03:33 2009 +0100
[BUILD] Updates .gitignore files
-----------------------------------------------------------------------
Summary of changes:
.gitignore | 1 -
buildroot/.gitignore | 20 +-
buildroot/local/apf27_test/linux-2.6.29.4.config | 4 +-
buildroot/target/.gitignore | 21 +
buildroot/target/device/.gitignore | 15 +
.../armadeus/apf27/apf27-linux-2.6.29.config | 3 +-
...40-apf27-martin-keypad-add_driver_for_mx2.patch | 530 ++++++++++++++++++++
buildroot/target/u-boot/.gitignore | 1 +
buildroot/target/ubifs/.gitignore | 2 +
scripts/quiltify.sh | 5 +-
10 files changed, 591 insertions(+), 11 deletions(-)
create mode 100644 buildroot/target/.gitignore
create mode 100644 buildroot/target/device/.gitignore
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/340-apf27-martin-keypad-add_driver_for_mx2.patch
create mode 100644 buildroot/target/u-boot/.gitignore
create mode 100644 buildroot/target/ubifs/.gitignore
diff --git a/.gitignore b/.gitignore
index 98ce07b..ecceba5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,4 @@
/downloads
*~
-/buildroot
*.pyc
armadeus_env.sh
diff --git a/buildroot/.gitignore b/buildroot/.gitignore
index 93b53bb..0cf1f5b 100644
--- a/buildroot/.gitignore
+++ b/buildroot/.gitignore
@@ -1,13 +1,21 @@
+
+/binaries
/build_*
+/dl
+/docs/
/project_*
+/project/
/toolchain_*
-/binaries
-/dl
-/.auto.deps
-/.config.cmd
-/.config.old
-/.config
+/toolchain
+/scripts/
+/.*
+!/.gitignore
+/Config.in
+/Makefile
+/TODO
+
*.depend
*.o
*.orig
*~
+
diff --git a/buildroot/local/apf27_test/linux-2.6.29.4.config b/buildroot/local/apf27_test/linux-2.6.29.4.config
index ca649c9..70a8d91 100644
--- a/buildroot/local/apf27_test/linux-2.6.29.4.config
+++ b/buildroot/local/apf27_test/linux-2.6.29.4.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.29.6
-# Tue Oct 20 13:32:01 2009
+# Mon Dec 7 11:18:48 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -747,6 +747,7 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_KEYBOARD_MXC=m
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_GPIO is not set
@@ -1397,6 +1398,7 @@ CONFIG_ARMADEUS_DRIVERS=y
CONFIG_ARMADEUS_GPIO_DRIVER=m
# CONFIG_ARMADEUS_KEYPAD_DRIVER is not set
CONFIG_ARMADEUS_MAX1027=m
+# CONFIG_ARMADEUS_MAX9768 is not set
#
# FPGA related
diff --git a/buildroot/target/.gitignore b/buildroot/target/.gitignore
new file mode 100644
index 0000000..b0582a5
--- /dev/null
+++ b/buildroot/target/.gitignore
@@ -0,0 +1,21 @@
+/cloop/
+/Config.*
+/cpio/
+/cramfs/
+#device
+/ext2/
+/generic/
+/hurd/
+/initramfs/
+/iso9660/
+/jffs2/
+/linux/
+/makedevs
+Makefile.in
+/powerpc/
+/romfs/
+/squashfs/
+/tar/
+#ubifs
+#u-boot
+/x86/
diff --git a/buildroot/target/device/.gitignore b/buildroot/target/device/.gitignore
new file mode 100644
index 0000000..4b19070
--- /dev/null
+++ b/buildroot/target/device/.gitignore
@@ -0,0 +1,15 @@
+AMD/
+ARM/
+ARMLTD/
+Atmel/
+Config.*
+Hitachi/
+jp/
+KwikByte/
+Makefile.*
+mips/
+Sharp/
+Soekris/
+valka/
+Via/
+x86/
diff --git a/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.29.config b/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.29.config
index 4ce03df..2548908 100644
--- a/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.29.config
+++ b/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.29.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.29.6
-# Thu Dec 3 21:58:38 2009
+# Mon Dec 7 11:18:48 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -747,6 +747,7 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_KEYBOARD_MXC=m
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_GPIO is not set
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/340-apf27-martin-keypad-add_driver_for_mx2.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/340-apf27-martin-keypad-add_driver_for_mx2.patch
new file mode 100644
index 0000000..4881dfa
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/340-apf27-martin-keypad-add_driver_for_mx2.patch
@@ -0,0 +1,530 @@
+Original patch from Holger Schurig for MX21, modified/enhanced by Martin Fuzzey
+and adapted to MX27/Linux 2.6.29 by Armadeus (no MX21 yet + clock).
+
+
+commit 1f453cde4739ff4348db1580292dfa9685475319
+Author: Martin Fuzzey <mf...@gm...>
+Date: Wed Nov 25 22:03:05 2009 +0100
+
+ Add support for the MXC keypad port (patch from Holger Schurig)
+
+Index: linux-2.6.29.6/arch/arm/mach-mx2/devices.c
+===================================================================
+--- linux-2.6.29.6.orig/arch/arm/mach-mx2/devices.c 2009-12-03 15:25:28.000000000 +0100
++++ linux-2.6.29.6/arch/arm/mach-mx2/devices.c 2009-12-04 17:28:04.000000000 +0100
+@@ -35,6 +35,7 @@
+ #include <mach/irqs.h>
+ #include <mach/hardware.h>
+ #include <mach/mmc.h>
++#include <mach/mxc_keypad.h>
+
+ /*
+ * Resource definition for the MXC IrDA
+@@ -657,6 +658,28 @@
+ .resource = mxc_ehci2_resources,
+ };
+
++#if defined(CONFIG_KEYBOARD_MXC) || defined(CONFIG_KEYBOARD_MXC_MODULE)
++static struct resource mxc_resource_keypad[] = {
++ {
++ .start = KPP_BASE_ADDR,
++ .end = KPP_BASE_ADDR + 0x14,
++ .flags = IORESOURCE_MEM,
++ },
++ {
++ .start = MXC_INT_KPP,
++ .end = MXC_INT_KPP,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device mxc_keypad_device = {
++ .name = "mxc-keypad",
++ .id = -1,
++ .resource = mxc_resource_keypad,
++ .num_resources = ARRAY_SIZE(mxc_resource_keypad),
++};
++#endif
++
+ static struct resource mxc_pwm_resources[] = {
+ [0] = {
+ .start = (PWM_BASE_ADDR),
+Index: linux-2.6.29.6/arch/arm/mach-mx2/devices.h
+===================================================================
+--- linux-2.6.29.6.orig/arch/arm/mach-mx2/devices.h 2009-12-03 15:25:28.000000000 +0100
++++ linux-2.6.29.6/arch/arm/mach-mx2/devices.h 2009-12-04 17:27:17.000000000 +0100
+@@ -31,3 +31,4 @@
+ extern struct platform_device mxc_ehci1;
+ extern struct platform_device mxc_ehci2;
+ extern struct platform_device mxc_pwm_device0;
++extern struct platform_device mxc_keypad_device;
+Index: linux-2.6.29.6/arch/arm/plat-mxc/include/mach/mxc_keypad.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.29.6/arch/arm/plat-mxc/include/mach/mxc_keypad.h 2009-12-04 16:50:15.000000000 +0100
+@@ -0,0 +1,20 @@
++#ifndef __MACH_MXC_KEYPAD_H
++#define __MACH_MXC_KEYPAD_H
++
++#include <linux/input.h>
++
++#define MAX_MATRIX_KEY_ROWS (8)
++#define MAX_MATRIX_KEY_COLS (8)
++
++struct mxc_keypad_platform_data {
++ u16 output_pins;
++ u16 input_pins;
++ void (*init)(struct input_dev *idev, struct platform_device *pdev);
++ void (*exit)(struct platform_device *pdev);
++ void (*handle_key)(struct input_dev *, int col, int row, int down);
++ int (*is_modifier_key)(int col, int row);
++};
++
++extern void mxc_set_keypad_info(struct mxc_keypad_platform_data *info);
++
++#endif
+Index: linux-2.6.29.6/drivers/input/keyboard/Kconfig
+===================================================================
+--- linux-2.6.29.6.orig/drivers/input/keyboard/Kconfig 2009-03-24 00:12:14.000000000 +0100
++++ linux-2.6.29.6/drivers/input/keyboard/Kconfig 2009-12-04 16:50:15.000000000 +0100
+@@ -112,6 +112,16 @@
+ To compile this driver as a module, choose M here: the
+ module will be called xtkbd.
+
++config KEYBOARD_MXC
++ tristate "Freescale MXC/IMX keypad support"
++ depends on ARCH_MXC
++ help
++ Say Y here if you have a keypad connected to your MXC/i.MX
++ SoC. Note that you also need board-support for this.
++
++ To compile this driver as a module, choose M here: the
++ module will be called mxc_keypad.
++
+ config KEYBOARD_NEWTON
+ tristate "Newton keyboard"
+ select SERIO
+Index: linux-2.6.29.6/drivers/input/keyboard/Makefile
+===================================================================
+--- linux-2.6.29.6.orig/drivers/input/keyboard/Makefile 2009-03-24 00:12:14.000000000 +0100
++++ linux-2.6.29.6/drivers/input/keyboard/Makefile 2009-12-04 16:50:15.000000000 +0100
+@@ -18,6 +18,7 @@
+ obj-$(CONFIG_KEYBOARD_TOSA) += tosakbd.o
+ obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
+ obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
++obj-$(CONFIG_KEYBOARD_MXC) += mxc_keypad.o
+ obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
+ obj-$(CONFIG_KEYBOARD_PXA27x) += pxa27x_keypad.o
+ obj-$(CONFIG_KEYBOARD_PXA930_ROTARY) += pxa930_rotary.o
+Index: linux-2.6.29.6/drivers/input/keyboard/mxc_keypad.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.29.6/drivers/input/keyboard/mxc_keypad.c 2009-12-04 16:55:28.000000000 +0100
+@@ -0,0 +1,407 @@
++/*
++ * Driver for the i.MX/MXC matrix keyboard controller.
++ *
++ * Copyright (c) 2009 by Holger Schurig <hs...@ma...>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++/*
++
++This driver is just a "generic" framework, it cannot produce input events on
++it's own. That's because diverse board/devices have very different
++keyboards (numeric, alphanumeric, cell phone like etc).
++
++Therefore, you'll do the actual scancode -> input event code conversion
++in a function that you'll provide in your platform data:
++
++static struct mxc_keypad_platform_data tt8000_keypad_data = {
++ .output_pins = 0x0f00,
++ .input_pins = 0x001f,
++ .init = tt8000_keypad_init,
++ .exit = tt8000_keypad_exit,
++ .handle_key = tt8000_keypad_key,
++};
++
++static void tt8000_keypad_init(struct input_dev *input_dev,
++ struct platform_device *pdev);
++
++This function is called before the input device registers, it can setup
++primary/alternate GPIO functions and modify it, e.g. by setting
++the propriate bits in input_dev->keybit.
++
++static void tt8000_keypad_exit(struct platform_device *pdev);
++
++The opposite function.
++
++static void tt8000_keypad_key(struct input_dev *input_dev,
++ int col, int row, int down);
++
++Called for each key press or release event. Should determine
++the input event code and sent it via input_report_key().
++
++*/
++
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/delay.h>
++#include <linux/input.h>
++#include <linux/device.h>
++#include <linux/platform_device.h>
++#include <linux/clk.h>
++#include <linux/err.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++
++#include <mach/hardware.h>
++#include <mach/mxc_keypad.h>
++
++#define KPCR 0x00
++
++#define KPSR 0x02
++#define KPSR_KPP_EN (1 << 10)
++#define KPSR_KRIE (1 << 9)
++#define KPSR_KDIE (1 << 8)
++#define KPSR_KRSS (1 << 3)
++#define KPSR_KDSC (1 << 2)
++#define KPSR_KPKR (1 << 1)
++#define KPSR_KPKD (1 << 0)
++#define KPSR_INT_MASK (KPSR_KRIE|KPSR_KDIE)
++
++#define KDDR 0x04
++
++#define KPDR 0x06
++
++
++#define MAX_INPUTS 8
++#define MAX_OUTPUTS 8
++
++
++//static void mxc_keypad_tasklet(unsigned long);
++
++struct mxc_keypad {
++ struct mxc_keypad_platform_data *pdata;
++ struct resource *res;
++ int irq;
++ void __iomem *base;
++
++ struct clk *clk;
++ struct input_dev *input_dev;
++ struct timer_list timer;
++ struct tasklet_struct tasklet;
++
++ u16 keystate_prev[MAX_INPUTS];
++};
++
++
++static void mxc_keypad_scan(struct mxc_keypad *kp)
++{
++ u16 col_bit, reg;
++ int i, j;
++ int snum = 0;
++ u16 keystate_cur[MAX_INPUTS];
++ u16 keystate_xor[MAX_INPUTS];
++ int modifierkey_held = 0;
++
++ /* write ones to KPDR8:15, setting columns data */
++ __raw_writew(kp->pdata->output_pins, kp->base + KPDR);
++
++ /* Quick-discharge by setting to totem-pole, */
++ /* then turn back to open-drain */
++ __raw_writew(kp->pdata->input_pins, kp->base + KPCR);
++ wmb();
++ udelay(2);
++ __raw_writew(kp->pdata->output_pins |
++ kp->pdata->input_pins, kp->base + KPCR);
++
++ col_bit = 1;
++ while (col_bit) {
++ if (col_bit & kp->pdata->output_pins) {
++ u16 last_reg = 0;
++ int debounce = 0;
++
++ __raw_writew(~col_bit, kp->base + KPDR);
++ wmb();
++
++ while (debounce < 5) {
++ udelay(1);
++ reg = ~__raw_readw(kp->base + KPDR);
++ if (reg == last_reg)
++ debounce++;
++ else
++ debounce = 0;
++ last_reg = reg;
++ }
++ keystate_cur[snum] = reg & kp->pdata->input_pins;
++
++ if (snum++ >= MAX_INPUTS)
++ break;
++ }
++ col_bit <<= 1;
++ }
++ for (i = 0; i < snum; i++) {
++ keystate_xor[i] = kp->keystate_prev[i] ^ keystate_cur[i];
++ for (j = 0; j < MAX_OUTPUTS; j++) {
++ int down = !!(keystate_cur[i] & (1 << j));
++
++ if (down && kp->pdata->is_modifier_key &&
++ kp->pdata->is_modifier_key(i, j))
++ modifierkey_held = 1;
++
++ if (keystate_xor[i] & (1 << j)) {
++ pr_debug("i,j: %d,%d, down %d\n", i, j, down);
++ kp->pdata->handle_key(kp->input_dev,
++ i, j, down);
++ }
++ }
++ kp->keystate_prev[i] = keystate_cur[i];
++ }
++
++ /* set columns back to 0 */
++ __raw_writew(0, kp->base + KPDR);
++
++ /*
++ * Clear KPKD and KPKR status bit(s) by writing to a "1",
++ * set the KPKR synchronizer chain by writing "1" to KRSS register,
++ * clear the KPKD synchronizer chain by writing "1" to KDSC register
++ */
++ reg = __raw_readw(kp->base + KPSR);
++ reg |= KPSR_KPKD | KPSR_KPKR | KPSR_KRSS | KPSR_KDSC;
++
++ if (modifierkey_held) {
++ /* poll by timer to avoid too many interrupts while key held */
++ mod_timer(&kp->timer, jiffies + HZ / 20);
++ //reg |= KPSR_INT_MASK; /* detect presses and releases */
++ }
++ __raw_writew(reg, kp->base + KPSR);
++}
++
++static void mxc_keypad_tasklet(unsigned long data)
++{
++ struct mxc_keypad *kp = (struct mxc_keypad *) data;
++
++ mxc_keypad_scan(kp);
++}
++
++static irqreturn_t mxc_keypad_irq_handler(int irq, void *data)
++{
++ struct mxc_keypad *kp = data;
++ u16 stat;
++
++ stat = __raw_readw(kp->base + KPSR);
++ stat &= ~KPSR_INT_MASK;
++
++ if (stat & KPSR_KPKD)
++ stat |= KPSR_KRIE; /* pressed - interrupt on next release */
++
++ if (stat & KPSR_KPKR)
++ stat |= KPSR_KDIE; /* all released - interrupt on next press */
++
++ /* clear interrupt status */
++ stat |= KPSR_KPKD;
++ stat |= KPSR_KPKR;
++ __raw_writew(stat | KPSR_KPKD | KPSR_KPKR, kp->base + KPSR);
++
++ tasklet_schedule(&kp->tasklet);
++
++ pr_debug("KPCR: %04x (0f1f)\n", readw(kp->base + KPCR));
++ pr_debug("KPSR: %04x (0502)\n", readw(kp->base + KPSR));
++ pr_debug("KDDR: %04x (0f00)\n", readw(kp->base + KDDR));
++ pr_debug("KPDR: %04x (705f)\n", readw(kp->base + KPDR));
++
++ return IRQ_HANDLED;
++}
++
++static void mxc_keypad_timer(unsigned long data)
++{
++ struct mxc_keypad *kp = (struct mxc_keypad *) data;
++
++ tasklet_schedule(&kp->tasklet);
++}
++
++
++static int __devinit mxc_keypad_probe(struct platform_device *pdev)
++{
++ struct mxc_keypad *kp;
++ struct input_dev *input_dev;
++ struct mxc_keypad_platform_data *pdata;
++ struct resource *res;
++ struct clk *clk;
++ int irq, error;
++
++ pdata = pdev->dev.platform_data;
++ if (!pdata || !pdata->handle_key)
++ return -EINVAL;
++
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ irq = platform_get_irq(pdev, 0);
++ if (!res || !irq)
++ return -ENXIO;
++
++ res = request_mem_region(res->start, resource_size(res), pdev->name);
++ if (!res)
++ return -EBUSY;
++
++ kp = kzalloc(sizeof(struct mxc_keypad), GFP_KERNEL);
++ if (!kp) {
++ error = -ENOMEM;
++ goto failed_release;
++ }
++
++ kp->res = res;
++ kp->pdata = pdata;
++
++ /* Create and register the input driver. */
++ input_dev = kp->input_dev = input_allocate_device();
++ if (!input_dev) {
++ dev_err(&pdev->dev, "input_allocate_device\n");
++ error = -ENOMEM;
++ goto failed_put_clk;
++ }
++
++ kp->base = ioremap(res->start, resource_size(res));
++ if (!kp->base) {
++ dev_err(&pdev->dev, "ioremap\n");
++ error = -ENOMEM;
++ goto failed_free_dev;
++ }
++
++ clk = clk_get(&pdev->dev, "kpp_clk");
++ if (IS_ERR(clk)) {
++ error = PTR_ERR(clk);
++ goto failed_unmap;
++ }
++
++ input_dev->name = pdev->name;
++ input_dev->dev.parent = &pdev->dev;
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0001;
++ input_dev->id.version = 0x0100;
++ input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
++ input_set_drvdata(input_dev, kp);
++
++ platform_set_drvdata(pdev, kp);
++
++ /* should call input_set_capability(input_dev, EV_KEY, code); */
++ if (kp->pdata->init)
++ kp->pdata->init(input_dev, pdev);
++
++ setup_timer(&kp->timer, mxc_keypad_timer, (unsigned long)kp);
++ tasklet_init(&kp->tasklet, mxc_keypad_tasklet, (unsigned long)kp);
++
++ error = request_irq(irq, mxc_keypad_irq_handler,
++ IRQF_DISABLED, pdev->name, kp);
++ if (error) {
++ dev_err(&pdev->dev, "request_irq\n");
++ goto failed_clk_put;
++ }
++
++ kp->irq = irq;
++
++ /* Register the input device */
++ error = input_register_device(input_dev);
++ if (error) {
++ dev_err(&pdev->dev, "failed to register input device\n");
++ goto failed_free_irq;
++ }
++
++ device_init_wakeup(&pdev->dev, 1);
++
++ /* configure keypad */
++ clk_enable(clk);
++ __raw_writew(kp->pdata->output_pins |
++ kp->pdata->input_pins, kp->base + KPCR);
++ __raw_writew(0, kp->base + KPDR);
++ __raw_writew(kp->pdata->output_pins, kp->base + KDDR);
++ __raw_writew(KPSR_KPP_EN | KPSR_KDIE |
++ KPSR_KPKD | KPSR_KRSS | KPSR_KDSC, kp->base + KPSR);
++
++ return 0;
++
++failed_free_irq:
++ free_irq(irq, kp);
++ platform_set_drvdata(pdev, NULL);
++failed_clk_put:
++ clk_disable(clk);
++ clk_put(clk);
++failed_unmap:
++ iounmap(kp->base);
++failed_free_dev:
++ input_free_device(input_dev);
++failed_put_clk:
++ kfree(kp);
++failed_release:
++ release_mem_region(res->start, resource_size(res));
++ return error;
++}
++
++static int __devexit mxc_keypad_remove(struct platform_device *pdev)
++{
++ struct mxc_keypad *kp = platform_get_drvdata(pdev);
++
++ device_init_wakeup(&pdev->dev, 0);
++
++ if (kp) {
++ /* Mask interrupts */
++ u16 stat = __raw_readw(kp->base + KPSR);
++ stat &= ~KPSR_INT_MASK;
++ __raw_writew(stat | KPSR_KPKD | KPSR_KPKR, kp->base + KPSR);
++
++ free_irq(kp->irq, kp);
++ tasklet_disable(&kp->tasklet);
++ del_timer_sync(&kp->timer);
++
++ if (kp->pdata->exit)
++ kp->pdata->exit(pdev);
++
++ if (kp->base)
++ iounmap(kp->base);
++
++ clk_disable(kp->clk);
++ clk_put(kp->clk);
++ tasklet_kill(&kp->tasklet);
++
++ input_unregister_device(kp->input_dev);
++ release_mem_region(kp->res->start, resource_size(kp->res));
++ }
++
++ platform_set_drvdata(pdev, NULL);
++ kfree(kp);
++ return 0;
++}
++
++/* work with hotplug and coldplug */
++MODULE_ALIAS("platform:mxc-keypad");
++
++static struct platform_driver mxc_keypad_driver = {
++ .probe = mxc_keypad_probe,
++ .remove = __devexit_p(mxc_keypad_remove),
++ .driver = {
++ .name = "mxc-keypad",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init mxc_keypad_init(void)
++{
++ return platform_driver_register(&mxc_keypad_driver);
++}
++
++static void __exit mxc_keypad_exit(void)
++{
++ platform_driver_unregister(&mxc_keypad_driver);
++}
++
++module_init(mxc_keypad_init);
++module_exit(mxc_keypad_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("i.MX Keypad Driver");
++MODULE_AUTHOR("Holger Schurig <hs4233@@mail.mn-solutions.de>");
diff --git a/buildroot/target/u-boot/.gitignore b/buildroot/target/u-boot/.gitignore
new file mode 100644
index 0000000..6037245
--- /dev/null
+++ b/buildroot/target/u-boot/.gitignore
@@ -0,0 +1 @@
+/Config.in
diff --git a/buildroot/target/ubifs/.gitignore b/buildroot/target/ubifs/.gitignore
new file mode 100644
index 0000000..28329da
--- /dev/null
+++ b/buildroot/target/ubifs/.gitignore
@@ -0,0 +1,2 @@
+/Config.in
+/ubifsroot.mk
diff --git a/scripts/quiltify.sh b/scripts/quiltify.sh
index 260c85b..6048c3a 100755
--- a/scripts/quiltify.sh
+++ b/scripts/quiltify.sh
@@ -45,13 +45,14 @@ else
fi
if [ "$1" != "export" ]; then
- echo -e "\nThis script is going to rebuilt a quiltified "$QUILT_TARGET_NAME" in the current view..."
+ echo -e "\nThis script is going to rebuild a quiltified "$QUILT_TARGET_NAME" in the current view..."
fi
if [ "$1" == "export" ]; then
echo "Exporting your work (patches) from $QUILT_TARGET_DIR/patches/ to $QUILT_TARGET_PATCH_DIR"
cp -f $QUILT_TARGET_DIR/patches/*.patch $QUILT_TARGET_PATCH_DIR
- echo -e "\n--- You can now check your work before commiting --> $QUILT_TARGET_PATCH_DIR/ \n"
+ echo -e "\n--- You can now check your work before commiting --> \n"
+ git status
exit 0
fi
hooks/post-receive
--
armadeus
|