paz00 updates for 3.3
Subsystems (6)
Marc Dietrich
maintainerv4 cover paz00 updates for 3.3
Hi,
the following three patches are intended for the 3.3 merge window and are based on linux-next.
The first one adds wakeup support similar to seaboard, but with the difference that the wakeup gpio is connected to the embedded controller instead of a real gpio key.
The second patch adds device tree support for the nvec driver. This way we can make use of it without adding more platform devices to the board files (and it is also modern to do so).
The final one adds device tree support for paz00. The way the nvec it is initialized will probably change in the future, but we like to include it for now as it makes debugging easier.
The patches are against linux-next from Nov 1st.
Thanks
Marc
Changes since v3
- use of_property_read_u32 in nvec
- also disable uart-e in the device tree
Changes since v2
- remove the mem= from the bootargs, this is handled by the memory property already
- change the root device until the sdhci init order can be changed
- do not init unused serial ports
- add dt documentation for nvec
- remove CONFIG_OF #ifdefs from nvec.c
- exchange the order of patch 2 and 3
Changes since v1
- replace addition of the embedded controller to the board file by a device-tree based implementation.
Marc Dietrich (3):
ARM: tegra: paz00: add support for wakeup gpio key
staging: nvec: add device tree support arm/dt: tegra: add dts file for paz00
.../devicetree/bindings/nvec/nvec_nvidia.txt | 9 ++ arch/arm/boot/dts/tegra-paz00.dts | 82 ++++++++++++++++++++ arch/arm/mach-tegra/Makefile | 1 + arch/arm/mach-tegra/Makefile.boot | 1 + arch/arm/mach-tegra/board-dt.c | 3 + arch/arm/mach-tegra/board-paz00.c | 27 +++++++ arch/arm/mach-tegra/board-paz00.h | 3 + drivers/staging/nvec/nvec.c | 30 +++++++- 8 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/nvec/nvec_nvidia.txt create mode 100644 arch/arm/boot/dts/tegra-paz00.dts
Signature · 1 line
1.7.5.4
Marc Dietrich
maintainerPATCH v4 1/3 ARM: tegra: paz00: add support for wakeup gpio key
This adds support for a wakeup gpio which is connected to the embedded controller. This will be used later on for wakeup from suspend.
--- arch/arm/mach-tegra/board-paz00.c | 27 +++++++++++++++++++++++++++ arch/arm/mach-tegra/board-paz00.h | 3 +++ 2 files changed, 30 insertions(+), 0 deletions(-)
arch/arm/mach-tegra/board-paz00.c +27 -0
@@ -23,8 +23,10 @@#include <linux/serial_8250.h> #include <linux/clk.h> #include <linux/dma-mapping.h> +#include <linux/gpio_keys.h> #include <linux/pda_power.h> #include <linux/io.h> +#include <linux/input.h> #include <linux/i2c.h> #include <linux/gpio.h> #include <linux/rfkill-gpio.h>
@@ -114,12 +116,37 @@ static struct platform_device leds_gpio = { }, }; +static struct gpio_keys_button paz00_gpio_keys_buttons[] = { + { + .code =KEY_POWER , + .gpio =TEGRA_GPIO_POWERKEY , + .active_low =1 , + .desc ="Power" , + .type =EV_KEY , + .wakeup =1 , + }, +}; + +static struct gpio_keys_platform_data paz00_gpio_keys = { + .buttons = paz00_gpio_keys_buttons, + .nbuttons =ARRAY_SIZE (paz00_gpio_keys_buttons), +}; + +static struct platform_device gpio_keys_device = { + .name ="gpio-keys" , + .id =-1 , + .dev = { + .platform_data = &paz00_gpio_keys, + }, +}; +static struct platform_device *paz00_devices[]__initdata = { &debug_uart, &tegra_sdhci_device4, &tegra_sdhci_device1, &wifi_rfkill_device, &leds_gpio, + &gpio_keys_device, };static void paz00_i2c_init (void )
arch/arm/mach-tegra/board-paz00.h +3 -0
@@ -32,6 +32,9 @@#define TEGRA_WIFI_RST TEGRA_GPIO_PD1#define TEGRA_WIFI_LED TEGRA_GPIO_PD0 +/* WakeUp */ +#define TEGRA_GPIO_POWERKEY TEGRA_GPIO_PJ7 +void paz00_pinmux_init (void );#endif
Signature · 1 line
1.7.5.4
Marc Dietrich
maintainerPATCH v4 2/3 staging: nvec: add device tree support
In reply to Marc DietrichThis adds device tree support to the nvec driver. By using this method it is no longer necessary to specify platform data through a board file.
--- .../devicetree/bindings/nvec/nvec_nvidia.txt | 9 ++++++ drivers/staging/nvec/nvec.c | 30 ++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/nvec/nvec_nvidia.txt
Documentation/devicetree/bindings/nvec/nvec_nvidia.txt new file +9 -0
@@ -0,0 +1,9 @@ +NVIDIA compliant embedded controller + +Required properties: +- compatible : should be "nvidia,nvec". +- reg : the iomem of the i2c slave controller +- interrupts : the interrupt line of the i2c slave controller +- clock-frequency : the frequency of the i2c bus +- gpios : the gpio used for ec request +- slave-addr: the i2c address of the slave controller
drivers/staging/nvec/nvec.c +28 -2
@@ -27,6 +27,8 @@#include <linux/interrupt.h> #include <linux/io.h> #include <linux/irq.h> +#include <linux/of.h> +#include <linux/of_gpio.h> #include <linux/list.h> #include <linux/mfd/core.h> #include <linux/mutex.h>
@@ -727,8 +729,24 @@ static int __devinit tegra_nvec_probe(struct platform_device *pdev) }platform_set_drvdata (pdev, nvec); nvec->dev = &pdev->dev; - nvec->gpio = pdata->gpio; - nvec->i2c_addr = pdata->i2c_addr; + +if (pdata) { + nvec->gpio = pdata->gpio; + nvec->i2c_addr = pdata->i2c_addr; + }else if (nvec->dev->of_node) { + nvec->gpio =of_get_named_gpio (nvec->dev->of_node,"request-gpios" ,0 ); +if (nvec->gpio <0 ) { +dev_err (&pdev->dev,"no gpio specified" ); + goto failed; + } +if (of_property_read_u32 (nvec->dev->of_node,"slave-addr" , &nvec->i2c_addr)) { +dev_err (&pdev->dev,"no i2c address specified" ); + goto failed; + } + }else { +dev_err (&pdev->dev,"no platform data\n" ); + goto failed; + } res =platform_get_resource (pdev,IORESOURCE_MEM ,0 );if (!res) {
@@ -893,6 +911,13 @@ static int tegra_nvec_resume(struct platform_device *pdev)#define tegra_nvec_resume NULL#endif +/* Match table for of_platform binding */ +static const struct of_device_id nvidia_nvec_of_match[]__devinitconst = { + { .compatible ="nvidia,nvec" , }, + {}, +}; +MODULE_DEVICE_TABLE (of, nvidia_nvec_of_match); +static struct platform_driver nvec_device_driver = { .probe = tegra_nvec_probe, .remove =__devexit_p (tegra_nvec_remove),
@@ -901,6 +926,7 @@ static struct platform_driver nvec_device_driver = { .driver = { .name = "nvec", .owner = THIS_MODULE, + .of_match_table = nvidia_nvec_of_match, } };
Signature · 1 line
1.7.5.4
PATCH 2/3 staging: nvec: add device tree support
Marc Dietrich wrote at Tuesday, November 01, 2011 2:37 PM:
Quoted 3 lines
This adds device tree support to the nvec driver. By using this method it is no longer necessary to specify platform data through a board file.
Signature · 1 line
nvpublic
PATCH 2/3 staging: nvec: add device tree support
Quoted 6 lines · Stephen Warren
Marc Dietrich wrote at Tuesday, November 01, 2011 2:37 PM:
Quoted 3 lines
This adds device tree support to the nvec driver. By using this method it is no longer necessary to specify platform data through a board file.
Acked-by Stephen Warren <[email protected]>
Greg, this one can go through the staging tree. We'll pick up the other pieces of the series through the tegra soc tree.
-Olof
PATCH 2/3 staging: nvec: add device tree support
Quoted 6 lines · Olof Johansson
Quoted 5 lines · Stephen Warren
Marc Dietrich wrote at Tuesday, November 01, 2011 2:37 PM:
Quoted 3 lines
This adds device tree support to the nvec driver. By using this method it is no longer necessary to specify platform data through a board file.
Quoted 6 lines
Quoted 1 line
Acked-by Stephen Warren <[email protected]>Acked-by Olof Johansson <[email protected]>Greg, this one can go through the staging tree. We'll pick up the other pieces of the series through the tegra soc tree.
Ok, will do.
greg k-h
Marc Dietrich
maintainerPATCH v4 2/3 staging: nvec: add device tree support
Am Mittwoch, 9. November 2011, 11:57:55 schrieb Greg KH:
Quoted 9 lines · Olof Johansson
Quoted 8 lines · Stephen Warren
Quoted 6 lines
Marc Dietrich wrote at Tuesday, November 01, 2011 2:37 PM:
Quoted 3 lines
This adds device tree support to the nvec driver. By using this method it is no longer necessary to specify platform data through a board file.
Acked-by Stephen Warren <[email protected]>
Quoted 8 lines
Quoted 4 lines
Acked-by Olof Johansson <[email protected]>Greg, this one can go through the staging tree. We'll pick up the other pieces of the series through the tegra soc tree.
Ok, will do.
greg k-h
Ping.
Greg, it seems that this patch is still not in staging. Please apply
http://patchwork.ozlabs.org/patch/123140/
Thanks
Marc
Marc Dietrich
maintainerPATCH v4 3/3 arm/dt: tegra: add dts file for paz00
In reply to Marc DietrichThis adds a dts file for paz00. As a side effect, this also enables the embedded controller which controls the keyboard, touchpad, power, leds, and some other functions.
--- arch/arm/boot/dts/tegra-paz00.dts | 82 +++++++++++++++++++++++++++++++++++++ arch/arm/mach-tegra/Makefile | 1 + arch/arm/mach-tegra/Makefile.boot | 1 + arch/arm/mach-tegra/board-dt.c | 3 + 4 files changed, 87 insertions(+), 0 deletions(-) create mode 100644 arch/arm/boot/dts/tegra-paz00.dts
arch/arm/boot/dts/tegra-paz00.dts new file +82 -0
@@ -0,0 +1,82 @@ +/dts-v1/; + +/memreserve/ 0x1c000000 0x04000000; +/include/ "tegra20.dtsi" + +/ { + model = "Toshiba AC100 / Dynabook AZ"; + compatible = "compal,paz00", "nvidia,tegra20"; + + chosen { + bootargs = "console=ttyS0,115200n8 root=/dev/mmcblk0p1"; + }; + + memory at 0 { + reg = <0x00000000 0x20000000>; + }; + + i2c at 7000c000 { + clock-frequency = <400000>; + }; + + i2c at 7000c400 { + clock-frequency = <400000>; + }; + + i2c at 7000c500 { + status = "disable"; + }; + + nvec at 7000c500 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,nvec"; + reg = <0x7000C500 0x100>; + interrupts = <124>; + clock-frequency = <80000>; + request-gpios = <&gpio 170 0>; + slave-addr = <138>; + }; + + i2c at 7000d000 { + clock-frequency = <400000>; + }; + + serial at 70006000 { + clock-frequency = <216000000>; + }; + + serial at 70006040 { + status = "disable"; + }; + + serial at 70006200 { + status = "disable"; + }; + + serial at 70006300 { + clock-frequency = <216000000>; + }; + + serial at 70006400 { + status = "disable"; + }; + + sdhci at c8000000 { + cd-gpios = <&gpio 173 0>; /* gpio PV5 */ + wp-gpios = <&gpio 57 0>; /* gpio PH1 */ + power-gpios = <&gpio 155 0>; /* gpio PT3 */ + }; + + sdhci at c8000200 { + status = "disable"; + }; + + sdhci at c8000400 { + status = "disable"; + }; + + sdhci at c8000600 { + support-8bit; + }; +};
arch/arm/mach-tegra/Makefile +1 -0
@@ -31,6 +31,7 @@ obj-${CONFIG_MACH_SEABOARD} += board-seaboard-pinmux.o obj-${CONFIG_MACH_TEGRA_DT} += board-dt.o obj-${CONFIG_MACH_TEGRA_DT} += board-harmony-pinmux.o +obj-${CONFIG_MACH_TEGRA_DT} += board-paz00-pinmux.o obj-${CONFIG_MACH_TEGRA_DT} += board-seaboard-pinmux.o obj-${CONFIG_MACH_TRIMSLICE} += board-trimslice.o
arch/arm/mach-tegra/Makefile.boot +1 -0
@@ -3,5 +3,6 @@ params_phys-$(CONFIG_ARCH_TEGRA_2x_SOC) := 0x00000100 initrd_phys-$(CONFIG_ARCH_TEGRA_2x_SOC) := 0x00800000 dtb-$(CONFIG_MACH_HARMONY) += tegra-harmony.dtb +dtb-$(CONFIG_MACH_PAZ00) += tegra-paz00.dtb dtb-$(CONFIG_MACH_SEABOARD) += tegra-seaboard.dtb dtb-$(CONFIG_MACH_VENTANA) += tegra-ventana.dtb
arch/arm/mach-tegra/board-dt.c +3 -0
@@ -46,6 +46,7 @@#include "devices.h" void harmony_pinmux_init (void ); +void paz00_pinmux_init (void );void seaboard_pinmux_init (void );void ventana_pinmux_init (void );
@@ -85,6 +86,7 @@ static struct {void (*init)(void ); } pinmux_configs[] = { { "nvidia,harmony", harmony_pinmux_init }, + { "compal,paz00", paz00_pinmux_init }, { "nvidia,seaboard", seaboard_pinmux_init }, { "nvidia,ventana", ventana_pinmux_init }, };
@@ -120,6 +122,7 @@ static void __init tegra_dt_init(void)static const char * tegra_dt_board_compat[] = {"nvidia,harmony" , +"compal,paz00" ,"nvidia,seaboard" ,"nvidia,ventana" ,NULL
Signature · 1 line
1.7.5.4
PATCH 3/3 arm/dt: tegra: add dts file for paz00
Marc Dietrich wrote at Tuesday, November 01, 2011 2:37 PM:
Quoted 3 lines
This adds a dts file for paz00. As a side effect, this also enables the embedded controller which controls the keyboard, touchpad, power, leds, and some other functions.
Signature · 1 line
nvpublic