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

Commit 940dd96f authored by Stephen Warren's avatar Stephen Warren Committed by Olof Johansson
Browse files

arm/tegra: Prep boards for gpio/pinmux conversion to pdevs



The Tegra GPIO driver will be converted from static registration via
postcore_initcall() to be a platform device later in this patch series.
A new Tegra pinmux platform device will also be added.

Prepare for this by modifying all boards to register the appropriate
platform devices before-hand, so that when the drivers are converted,
those devices will be probed, and git bisectability will be maintained.

v2: Add resource definitions for GPIO and pinmux

Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parent 976d1676
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@

#include "gpio-names.h"
#include "board-harmony.h"
#include "devices.h"

static struct tegra_pingroup_config harmony_pinmux[] = {
	{TEGRA_PINGROUP_ATA,   TEGRA_MUX_IDE,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
@@ -140,6 +141,11 @@ static struct tegra_pingroup_config harmony_pinmux[] = {
	{TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
};

static struct platform_device *pinmux_devices[] = {
	&tegra_gpio_device,
	&tegra_pinmux_device,
};

static struct tegra_gpio_table gpio_table[] = {
	{ .gpio = TEGRA_GPIO_SD2_CD,		.enable = true	},
	{ .gpio = TEGRA_GPIO_SD2_WP,		.enable = true	},
@@ -155,6 +161,8 @@ static struct tegra_gpio_table gpio_table[] = {

void harmony_pinmux_init(void)
{
	platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices));

	tegra_pinmux_config_table(harmony_pinmux, ARRAY_SIZE(harmony_pinmux));

	tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table));
+8 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@

#include "gpio-names.h"
#include "board-paz00.h"
#include "devices.h"

static struct tegra_pingroup_config paz00_pinmux[] = {
	{TEGRA_PINGROUP_ATA,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
@@ -140,6 +141,11 @@ static struct tegra_pingroup_config paz00_pinmux[] = {
	{TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
};

static struct platform_device *pinmux_devices[] = {
	&tegra_gpio_device,
	&tegra_pinmux_device,
};

static struct tegra_gpio_table gpio_table[] = {
	{ .gpio = TEGRA_GPIO_SD1_CD,	.enable = true },
	{ .gpio = TEGRA_GPIO_SD1_WP,	.enable = true },
@@ -149,6 +155,8 @@ static struct tegra_gpio_table gpio_table[] = {

void paz00_pinmux_init(void)
{
	platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices));

	tegra_pinmux_config_table(paz00_pinmux, ARRAY_SIZE(paz00_pinmux));

	tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table));
+7 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@

#include "gpio-names.h"
#include "board-seaboard.h"
#include "devices.h"

#define DEFAULT_DRIVE(_name)					\
	{							\
@@ -157,8 +158,10 @@ static __initdata struct tegra_pingroup_config seaboard_pinmux[] = {
	{TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
};



static struct platform_device *pinmux_devices[] = {
	&tegra_gpio_device,
	&tegra_pinmux_device,
};

static struct tegra_gpio_table gpio_table[] = {
	{ .gpio = TEGRA_GPIO_SD2_CD,		.enable = true },
@@ -171,6 +174,8 @@ static struct tegra_gpio_table gpio_table[] = {

void __init seaboard_pinmux_init(void)
{
	platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices));

	tegra_pinmux_config_table(seaboard_pinmux, ARRAY_SIZE(seaboard_pinmux));

	tegra_drive_pinmux_config_table(seaboard_drive_pinmux,
+7 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@

#include "gpio-names.h"
#include "board-trimslice.h"
#include "devices.h"

static __initdata struct tegra_pingroup_config trimslice_pinmux[] = {
	{TEGRA_PINGROUP_ATA,   TEGRA_MUX_IDE,           TEGRA_PUPD_NORMAL,	TEGRA_TRI_TRISTATE},
@@ -142,6 +143,11 @@ static __initdata struct tegra_pingroup_config trimslice_pinmux[] = {
	{TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
};

static struct platform_device *pinmux_devices[] = {
	&tegra_gpio_device,
	&tegra_pinmux_device,
};

static struct tegra_gpio_table gpio_table[] = {
	{ .gpio = TRIMSLICE_GPIO_SD4_CD, .enable = true	}, /* mmc4 cd */
	{ .gpio = TRIMSLICE_GPIO_SD4_WP, .enable = true	}, /* mmc4 wp */
@@ -152,6 +158,7 @@ static struct tegra_gpio_table gpio_table[] = {

void __init trimslice_pinmux_init(void)
{
	platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices));
	tegra_pinmux_config_table(trimslice_pinmux, ARRAY_SIZE(trimslice_pinmux));
	tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table));
}
+84 −0
Original line number Diff line number Diff line
@@ -31,6 +31,90 @@
#include <mach/usb_phy.h>
#include "gpio-names.h"

static struct resource gpio_resource[] = {
	[0] = {
		.start	= TEGRA_GPIO_BASE,
		.end	= TEGRA_GPIO_BASE + TEGRA_GPIO_SIZE-1,
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= INT_GPIO1,
		.end	= INT_GPIO1,
		.flags	= IORESOURCE_IRQ,
	},
	[2] = {
		.start	= INT_GPIO2,
		.end	= INT_GPIO2,
		.flags	= IORESOURCE_IRQ,
	},
	[3] = {
		.start	= INT_GPIO3,
		.end	= INT_GPIO3,
		.flags	= IORESOURCE_IRQ,
	},
	[4] = {
		.start	= INT_GPIO4,
		.end	= INT_GPIO4,
		.flags	= IORESOURCE_IRQ,
	},
	[5] = {
		.start	= INT_GPIO5,
		.end	= INT_GPIO5,
		.flags	= IORESOURCE_IRQ,
	},
	[6] = {
		.start	= INT_GPIO6,
		.end	= INT_GPIO6,
		.flags	= IORESOURCE_IRQ,
	},
	[7] = {
		.start	= INT_GPIO7,
		.end	= INT_GPIO7,
		.flags	= IORESOURCE_IRQ,
	},
};

struct platform_device tegra_gpio_device = {
	.name		= "tegra-gpio",
	.id		= -1,
	.resource	= gpio_resource,
	.num_resources	= ARRAY_SIZE(gpio_resource),
};

static struct resource pinmux_resource[] = {
	[0] = {
		/* Tri-state registers */
		.start	= TEGRA_APB_MISC_BASE + 0x14,
		.end	= TEGRA_APB_MISC_BASE + 0x20 + 3,
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		/* Mux registers */
		.start	= TEGRA_APB_MISC_BASE + 0x80,
		.end	= TEGRA_APB_MISC_BASE + 0x9c + 3,
		.flags	= IORESOURCE_MEM,
	},
	[2] = {
		/* Pull-up/down registers */
		.start	= TEGRA_APB_MISC_BASE + 0xa0,
		.end	= TEGRA_APB_MISC_BASE + 0xb0 + 3,
		.flags	= IORESOURCE_MEM,
	},
	[3] = {
		/* Pad control registers */
		.start	= TEGRA_APB_MISC_BASE + 0x868,
		.end	= TEGRA_APB_MISC_BASE + 0x90c + 3,
		.flags	= IORESOURCE_MEM,
	},
};

struct platform_device tegra_pinmux_device = {
	.name		= "tegra-pinmux",
	.id		= -1,
	.resource	= pinmux_resource,
	.num_resources	= ARRAY_SIZE(pinmux_resource),
};

static struct resource i2c_resource1[] = {
	[0] = {
		.start	= INT_I2C,
Loading