Merge branch 'for-linus' of git://android.git.kernel.org/kernel/tegra
* 'for-linus' of git://android.git.kernel.org/kernel/tegra: ARM: tegra: harmony: initialize the TPS65862 PMIC ARM: tegra: update defconfig ARM: tegra: harmony: update PCI-e initialization sequence ARM: tegra: trimslice: enable MMC/SD slots ARM: tegra: enable new drivers in defconfig ARM: tegra: Add Toshiba AC100 support ARM: tegra: harmony: Set WM8903 gpio_base ARM: tegra: harmony: I2C-related portions of audio support ARM: tegra: harmony: register i2c devices ARM: tegra: seaboard: register i2c devices ARM: tegra: harmony: Beginnings of audio support ARM: tegra: create defines for SD-related GPIO names ARM: tegra: add devices.c entries for audio
This commit is contained in:
commit
6e50e9f9f4
|
@ -21,6 +21,10 @@ CONFIG_MODULE_FORCE_UNLOAD=y
|
|||
# CONFIG_IOSCHED_CFQ is not set
|
||||
CONFIG_ARCH_TEGRA=y
|
||||
CONFIG_MACH_HARMONY=y
|
||||
CONFIG_MACH_KAEN=y
|
||||
CONFIG_MACH_PAZ00=y
|
||||
CONFIG_MACH_TRIMSLICE=y
|
||||
CONFIG_MACH_WARIO=y
|
||||
CONFIG_TEGRA_DEBUG_UARTD=y
|
||||
CONFIG_ARM_ERRATA_742230=y
|
||||
CONFIG_NO_HZ=y
|
||||
|
@ -40,6 +44,10 @@ CONFIG_PACKET=y
|
|||
CONFIG_UNIX=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_IP_PNP_RARP=y
|
||||
CONFIG_INET_ESP=y
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
|
@ -66,7 +74,7 @@ CONFIG_APDS9802ALS=y
|
|||
CONFIG_ISL29003=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
CONFIG_R8169=y
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_WLAN is not set
|
||||
# CONFIG_INPUT is not set
|
||||
|
@ -78,12 +86,23 @@ CONFIG_SERIAL_8250_CONSOLE=y
|
|||
# CONFIG_LEGACY_PTYS is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_I2C=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_MFD_SUPPORT is not set
|
||||
# CONFIG_I2C_COMPAT is not set
|
||||
# CONFIG_I2C_HELPER_AUTO is not set
|
||||
CONFIG_I2C_TEGRA=y
|
||||
CONFIG_SENSORS_LM90=y
|
||||
CONFIG_MFD_TPS6586X=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_TPS6586X=y
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SDHCI_TEGRA=y
|
||||
CONFIG_STAGING=y
|
||||
# CONFIG_STAGING_EXCLUDE_BUILD is not set
|
||||
CONFIG_IIO=y
|
||||
CONFIG_SENSORS_ISL29018=y
|
||||
CONFIG_SENSORS_AK8975=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS_XATTR=y
|
||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
||||
|
@ -95,6 +114,10 @@ CONFIG_EXT3_FS_SECURITY=y
|
|||
# CONFIG_DNOTIFY is not set
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_EFI_PARTITION=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
|
|
|
@ -36,6 +36,11 @@ config MACH_KAEN
|
|||
help
|
||||
Support for the Kaen version of Seaboard
|
||||
|
||||
config MACH_PAZ00
|
||||
bool "Paz00 board"
|
||||
help
|
||||
Support for the Toshiba AC100/Dynabook AZ netbook
|
||||
|
||||
config MACH_SEABOARD
|
||||
bool "Seaboard board"
|
||||
help
|
||||
|
|
|
@ -22,6 +22,10 @@ obj-$(CONFIG_USB_SUPPORT) += usb_phy.o
|
|||
obj-${CONFIG_MACH_HARMONY} += board-harmony.o
|
||||
obj-${CONFIG_MACH_HARMONY} += board-harmony-pinmux.o
|
||||
obj-${CONFIG_MACH_HARMONY} += board-harmony-pcie.o
|
||||
obj-${CONFIG_MACH_HARMONY} += board-harmony-power.o
|
||||
|
||||
obj-${CONFIG_MACH_PAZ00} += board-paz00.o
|
||||
obj-${CONFIG_MACH_PAZ00} += board-paz00-pinmux.o
|
||||
|
||||
obj-${CONFIG_MACH_SEABOARD} += board-seaboard.o
|
||||
obj-${CONFIG_MACH_SEABOARD} += board-seaboard-pinmux.o
|
||||
|
|
|
@ -27,13 +27,29 @@
|
|||
|
||||
#ifdef CONFIG_TEGRA_PCI
|
||||
|
||||
/* GPIO 3 of the PMIC */
|
||||
#define EN_VDD_1V05_GPIO (TEGRA_NR_GPIOS + 2)
|
||||
|
||||
static int __init harmony_pcie_init(void)
|
||||
{
|
||||
struct regulator *regulator = NULL;
|
||||
int err;
|
||||
|
||||
if (!machine_is_harmony())
|
||||
return 0;
|
||||
|
||||
err = gpio_request(EN_VDD_1V05_GPIO, "EN_VDD_1V05");
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
gpio_direction_output(EN_VDD_1V05_GPIO, 1);
|
||||
|
||||
regulator = regulator_get(NULL, "pex_clk");
|
||||
if (IS_ERR_OR_NULL(regulator))
|
||||
goto err_reg;
|
||||
|
||||
regulator_enable(regulator);
|
||||
|
||||
tegra_pinmux_set_tristate(TEGRA_PINGROUP_GPV, TEGRA_TRI_NORMAL);
|
||||
tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXA, TEGRA_TRI_NORMAL);
|
||||
tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXK, TEGRA_TRI_NORMAL);
|
||||
|
@ -49,9 +65,15 @@ err_pcie:
|
|||
tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXA, TEGRA_TRI_TRISTATE);
|
||||
tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXK, TEGRA_TRI_TRISTATE);
|
||||
|
||||
regulator_disable(regulator);
|
||||
regulator_put(regulator);
|
||||
err_reg:
|
||||
gpio_free(EN_VDD_1V05_GPIO);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
subsys_initcall(harmony_pcie_init);
|
||||
/* PCI should be initialized after I2C, mfd and regulators */
|
||||
subsys_initcall_sync(harmony_pcie_init);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -27,11 +27,11 @@ static struct tegra_pingroup_config harmony_pinmux[] = {
|
|||
{TEGRA_PINGROUP_ATC, TEGRA_MUX_NAND, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_ATD, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_ATE, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_CDEV1, TEGRA_MUX_OSC, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_CDEV1, TEGRA_MUX_PLLA_OUT, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_CDEV2, TEGRA_MUX_PLLP_OUT4, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_CRTP, TEGRA_MUX_CRT, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_CSUS, TEGRA_MUX_VI_SENSOR_CLK, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DAP1, TEGRA_MUX_DAP1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DAP1, TEGRA_MUX_DAP1, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_DAP2, TEGRA_MUX_DAP2, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DAP3, TEGRA_MUX_DAP3, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DAP4, TEGRA_MUX_DAP4, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
|
@ -114,13 +114,13 @@ static struct tegra_pingroup_config harmony_pinmux[] = {
|
|||
{TEGRA_PINGROUP_SLXK, TEGRA_MUX_PCIE, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPDI, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPDO, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIA, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIB, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIC, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_SPIA, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_SPIB, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_SPIC, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPID, TEGRA_MUX_SPI1, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIE, TEGRA_MUX_SPI1, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIF, TEGRA_MUX_SPI1, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIG, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIG, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIH, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_UAA, TEGRA_MUX_ULPI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_UAB, TEGRA_MUX_ULPI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
|
@ -141,12 +141,16 @@ static struct tegra_pingroup_config harmony_pinmux[] = {
|
|||
};
|
||||
|
||||
static struct tegra_gpio_table gpio_table[] = {
|
||||
{ .gpio = TEGRA_GPIO_PI5, .enable = true }, /* mmc2 cd */
|
||||
{ .gpio = TEGRA_GPIO_PH1, .enable = true }, /* mmc2 wp */
|
||||
{ .gpio = TEGRA_GPIO_PT3, .enable = true }, /* mmc2 pwr */
|
||||
{ .gpio = TEGRA_GPIO_PH2, .enable = true }, /* mmc4 cd */
|
||||
{ .gpio = TEGRA_GPIO_PH3, .enable = true }, /* mmc4 wp */
|
||||
{ .gpio = TEGRA_GPIO_PI6, .enable = true }, /* mmc4 pwr */
|
||||
{ .gpio = TEGRA_GPIO_SD2_CD, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD2_WP, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD2_POWER, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD4_CD, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD4_WP, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD4_POWER, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_CDC_IRQ, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_HP_DET, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_INT_MIC_EN, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_EXT_MIC_EN, .enable = true },
|
||||
};
|
||||
|
||||
void harmony_pinmux_init(void)
|
||||
|
|
117
arch/arm/mach-tegra/board-harmony-power.c
Normal file
117
arch/arm/mach-tegra/board-harmony-power.c
Normal file
|
@ -0,0 +1,117 @@
|
|||
/*
|
||||
* Copyright (C) 2010 NVIDIA, Inc.
|
||||
*
|
||||
* 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 program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
* 02111-1307, USA
|
||||
*/
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/mfd/tps6586x.h>
|
||||
|
||||
#include <mach/irqs.h>
|
||||
|
||||
#define PMC_CTRL 0x0
|
||||
#define PMC_CTRL_INTR_LOW (1 << 17)
|
||||
|
||||
static struct regulator_consumer_supply tps658621_ldo0_supply[] = {
|
||||
REGULATOR_SUPPLY("pex_clk", NULL),
|
||||
};
|
||||
|
||||
static struct regulator_init_data ldo0_data = {
|
||||
.constraints = {
|
||||
.min_uV = 1250 * 1000,
|
||||
.max_uV = 3300 * 1000,
|
||||
.valid_modes_mask = (REGULATOR_MODE_NORMAL |
|
||||
REGULATOR_MODE_STANDBY),
|
||||
.valid_ops_mask = (REGULATOR_CHANGE_MODE |
|
||||
REGULATOR_CHANGE_STATUS |
|
||||
REGULATOR_CHANGE_VOLTAGE),
|
||||
},
|
||||
.num_consumer_supplies = ARRAY_SIZE(tps658621_ldo0_supply),
|
||||
.consumer_supplies = tps658621_ldo0_supply,
|
||||
};
|
||||
|
||||
#define HARMONY_REGULATOR_INIT(_id, _minmv, _maxmv) \
|
||||
static struct regulator_init_data _id##_data = { \
|
||||
.constraints = { \
|
||||
.min_uV = (_minmv)*1000, \
|
||||
.max_uV = (_maxmv)*1000, \
|
||||
.valid_modes_mask = (REGULATOR_MODE_NORMAL | \
|
||||
REGULATOR_MODE_STANDBY), \
|
||||
.valid_ops_mask = (REGULATOR_CHANGE_MODE | \
|
||||
REGULATOR_CHANGE_STATUS | \
|
||||
REGULATOR_CHANGE_VOLTAGE), \
|
||||
}, \
|
||||
}
|
||||
|
||||
HARMONY_REGULATOR_INIT(sm0, 725, 1500);
|
||||
HARMONY_REGULATOR_INIT(sm1, 725, 1500);
|
||||
HARMONY_REGULATOR_INIT(sm2, 3000, 4550);
|
||||
HARMONY_REGULATOR_INIT(ldo1, 725, 1500);
|
||||
HARMONY_REGULATOR_INIT(ldo2, 725, 1500);
|
||||
HARMONY_REGULATOR_INIT(ldo3, 1250, 3300);
|
||||
HARMONY_REGULATOR_INIT(ldo4, 1700, 2475);
|
||||
HARMONY_REGULATOR_INIT(ldo5, 1250, 3300);
|
||||
HARMONY_REGULATOR_INIT(ldo6, 1250, 3300);
|
||||
HARMONY_REGULATOR_INIT(ldo7, 1250, 3300);
|
||||
HARMONY_REGULATOR_INIT(ldo8, 1250, 3300);
|
||||
HARMONY_REGULATOR_INIT(ldo9, 1250, 3300);
|
||||
|
||||
#define TPS_REG(_id, _data) \
|
||||
{ \
|
||||
.id = TPS6586X_ID_##_id, \
|
||||
.name = "tps6586x-regulator", \
|
||||
.platform_data = _data, \
|
||||
}
|
||||
|
||||
static struct tps6586x_subdev_info tps_devs[] = {
|
||||
TPS_REG(SM_0, &sm0_data),
|
||||
TPS_REG(SM_1, &sm1_data),
|
||||
TPS_REG(SM_2, &sm2_data),
|
||||
TPS_REG(LDO_0, &ldo0_data),
|
||||
TPS_REG(LDO_1, &ldo1_data),
|
||||
TPS_REG(LDO_2, &ldo2_data),
|
||||
TPS_REG(LDO_3, &ldo3_data),
|
||||
TPS_REG(LDO_4, &ldo4_data),
|
||||
TPS_REG(LDO_5, &ldo5_data),
|
||||
TPS_REG(LDO_6, &ldo6_data),
|
||||
TPS_REG(LDO_7, &ldo7_data),
|
||||
TPS_REG(LDO_8, &ldo8_data),
|
||||
TPS_REG(LDO_9, &ldo9_data),
|
||||
};
|
||||
|
||||
static struct tps6586x_platform_data tps_platform = {
|
||||
.irq_base = TEGRA_NR_IRQS,
|
||||
.num_subdevs = ARRAY_SIZE(tps_devs),
|
||||
.subdevs = tps_devs,
|
||||
.gpio_base = TEGRA_NR_GPIOS,
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata harmony_regulators[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("tps6586x", 0x34),
|
||||
.irq = INT_EXTERNAL_PMU,
|
||||
.platform_data = &tps_platform,
|
||||
},
|
||||
};
|
||||
|
||||
int __init harmony_regulator_init(void)
|
||||
{
|
||||
i2c_register_board_info(3, harmony_regulators, 1);
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -2,6 +2,7 @@
|
|||
* arch/arm/mach-tegra/board-harmony.c
|
||||
*
|
||||
* Copyright (C) 2010 Google, Inc.
|
||||
* Copyright (C) 2011 NVIDIA, Inc.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
|
@ -22,12 +23,18 @@
|
|||
#include <linux/dma-mapping.h>
|
||||
#include <linux/pda_power.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/i2c-tegra.h>
|
||||
|
||||
#include <sound/wm8903.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/time.h>
|
||||
#include <asm/setup.h>
|
||||
|
||||
#include <mach/harmony_audio.h>
|
||||
#include <mach/iomap.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/sdhci.h>
|
||||
|
@ -60,11 +67,81 @@ static struct platform_device debug_uart = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct harmony_audio_platform_data harmony_audio_pdata = {
|
||||
.gpio_spkr_en = TEGRA_GPIO_SPKR_EN,
|
||||
.gpio_hp_det = TEGRA_GPIO_HP_DET,
|
||||
.gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN,
|
||||
.gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN,
|
||||
};
|
||||
|
||||
static struct platform_device harmony_audio_device = {
|
||||
.name = "tegra-snd-harmony",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = &harmony_audio_pdata,
|
||||
},
|
||||
};
|
||||
|
||||
static struct tegra_i2c_platform_data harmony_i2c1_platform_data = {
|
||||
.bus_clk_rate = 400000,
|
||||
};
|
||||
|
||||
static struct tegra_i2c_platform_data harmony_i2c2_platform_data = {
|
||||
.bus_clk_rate = 400000,
|
||||
};
|
||||
|
||||
static struct tegra_i2c_platform_data harmony_i2c3_platform_data = {
|
||||
.bus_clk_rate = 400000,
|
||||
};
|
||||
|
||||
static struct tegra_i2c_platform_data harmony_dvc_platform_data = {
|
||||
.bus_clk_rate = 400000,
|
||||
};
|
||||
|
||||
static struct wm8903_platform_data harmony_wm8903_pdata = {
|
||||
.irq_active_low = 0,
|
||||
.micdet_cfg = 0,
|
||||
.micdet_delay = 100,
|
||||
.gpio_base = HARMONY_GPIO_WM8903(0),
|
||||
.gpio_cfg = {
|
||||
WM8903_GPIO_NO_CONFIG,
|
||||
WM8903_GPIO_NO_CONFIG,
|
||||
0,
|
||||
WM8903_GPIO_NO_CONFIG,
|
||||
WM8903_GPIO_NO_CONFIG,
|
||||
},
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata wm8903_board_info = {
|
||||
I2C_BOARD_INFO("wm8903", 0x1a),
|
||||
.platform_data = &harmony_wm8903_pdata,
|
||||
.irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_CDC_IRQ),
|
||||
};
|
||||
|
||||
static void __init harmony_i2c_init(void)
|
||||
{
|
||||
tegra_i2c_device1.dev.platform_data = &harmony_i2c1_platform_data;
|
||||
tegra_i2c_device2.dev.platform_data = &harmony_i2c2_platform_data;
|
||||
tegra_i2c_device3.dev.platform_data = &harmony_i2c3_platform_data;
|
||||
tegra_i2c_device4.dev.platform_data = &harmony_dvc_platform_data;
|
||||
|
||||
platform_device_register(&tegra_i2c_device1);
|
||||
platform_device_register(&tegra_i2c_device2);
|
||||
platform_device_register(&tegra_i2c_device3);
|
||||
platform_device_register(&tegra_i2c_device4);
|
||||
|
||||
i2c_register_board_info(0, &wm8903_board_info, 1);
|
||||
}
|
||||
|
||||
static struct platform_device *harmony_devices[] __initdata = {
|
||||
&debug_uart,
|
||||
&tegra_sdhci_device1,
|
||||
&tegra_sdhci_device2,
|
||||
&tegra_sdhci_device4,
|
||||
&tegra_i2s_device1,
|
||||
&tegra_das_device,
|
||||
&tegra_pcm_device,
|
||||
&harmony_audio_device,
|
||||
};
|
||||
|
||||
static void __init tegra_harmony_fixup(struct machine_desc *desc,
|
||||
|
@ -80,6 +157,10 @@ static void __init tegra_harmony_fixup(struct machine_desc *desc,
|
|||
static __initdata struct tegra_clk_init_table harmony_clk_init_table[] = {
|
||||
/* name parent rate enabled */
|
||||
{ "uartd", "pll_p", 216000000, true },
|
||||
{ "pll_a", "pll_p_out1", 56448000, true },
|
||||
{ "pll_a_out0", "pll_a", 11289600, true },
|
||||
{ "cdev1", NULL, 0, true },
|
||||
{ "i2s1", "pll_a_out0", 11289600, false},
|
||||
{ NULL, NULL, 0, 0},
|
||||
};
|
||||
|
||||
|
@ -91,15 +172,15 @@ static struct tegra_sdhci_platform_data sdhci_pdata1 = {
|
|||
};
|
||||
|
||||
static struct tegra_sdhci_platform_data sdhci_pdata2 = {
|
||||
.cd_gpio = TEGRA_GPIO_PI5,
|
||||
.wp_gpio = TEGRA_GPIO_PH1,
|
||||
.power_gpio = TEGRA_GPIO_PT3,
|
||||
.cd_gpio = TEGRA_GPIO_SD2_CD,
|
||||
.wp_gpio = TEGRA_GPIO_SD2_WP,
|
||||
.power_gpio = TEGRA_GPIO_SD2_POWER,
|
||||
};
|
||||
|
||||
static struct tegra_sdhci_platform_data sdhci_pdata4 = {
|
||||
.cd_gpio = TEGRA_GPIO_PH2,
|
||||
.wp_gpio = TEGRA_GPIO_PH3,
|
||||
.power_gpio = TEGRA_GPIO_PI6,
|
||||
.cd_gpio = TEGRA_GPIO_SD4_CD,
|
||||
.wp_gpio = TEGRA_GPIO_SD4_WP,
|
||||
.power_gpio = TEGRA_GPIO_SD4_POWER,
|
||||
.is_8bit = 1,
|
||||
};
|
||||
|
||||
|
@ -114,6 +195,8 @@ static void __init tegra_harmony_init(void)
|
|||
tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4;
|
||||
|
||||
platform_add_devices(harmony_devices, ARRAY_SIZE(harmony_devices));
|
||||
harmony_i2c_init();
|
||||
harmony_regulator_init();
|
||||
}
|
||||
|
||||
MACHINE_START(HARMONY, "harmony")
|
||||
|
|
|
@ -17,6 +17,21 @@
|
|||
#ifndef _MACH_TEGRA_BOARD_HARMONY_H
|
||||
#define _MACH_TEGRA_BOARD_HARMONY_H
|
||||
|
||||
#define HARMONY_GPIO_WM8903(_x_) (TEGRA_NR_GPIOS + (_x_))
|
||||
|
||||
#define TEGRA_GPIO_SD2_CD TEGRA_GPIO_PI5
|
||||
#define TEGRA_GPIO_SD2_WP TEGRA_GPIO_PH1
|
||||
#define TEGRA_GPIO_SD2_POWER TEGRA_GPIO_PT3
|
||||
#define TEGRA_GPIO_SD4_CD TEGRA_GPIO_PH2
|
||||
#define TEGRA_GPIO_SD4_WP TEGRA_GPIO_PH3
|
||||
#define TEGRA_GPIO_SD4_POWER TEGRA_GPIO_PI6
|
||||
#define TEGRA_GPIO_CDC_IRQ TEGRA_GPIO_PX3
|
||||
#define TEGRA_GPIO_SPKR_EN HARMONY_GPIO_WM8903(2)
|
||||
#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PW2
|
||||
#define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PX0
|
||||
#define TEGRA_GPIO_EXT_MIC_EN TEGRA_GPIO_PX1
|
||||
|
||||
void harmony_pinmux_init(void);
|
||||
int harmony_regulator_init(void);
|
||||
|
||||
#endif
|
||||
|
|
157
arch/arm/mach-tegra/board-paz00-pinmux.c
Normal file
157
arch/arm/mach-tegra/board-paz00-pinmux.c
Normal file
|
@ -0,0 +1,157 @@
|
|||
/*
|
||||
* arch/arm/mach-tegra/board-paz00-pinmux.c
|
||||
*
|
||||
* Copyright (C) 2010 Marc Dietrich <marvin24@gmx.de>
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <mach/pinmux.h>
|
||||
|
||||
#include "gpio-names.h"
|
||||
#include "board-paz00.h"
|
||||
|
||||
static struct tegra_pingroup_config paz00_pinmux[] = {
|
||||
{TEGRA_PINGROUP_ATA, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_ATB, TEGRA_MUX_SDIO4, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_ATC, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_ATD, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_ATE, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_CDEV1, TEGRA_MUX_PLLA_OUT, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_CDEV2, TEGRA_MUX_PLLP_OUT4, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_CRTP, TEGRA_MUX_CRT, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_CSUS, TEGRA_MUX_PLLC_OUT1, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DAP1, TEGRA_MUX_DAP1, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_DAP2, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_DAP3, TEGRA_MUX_DAP3, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DAP4, TEGRA_MUX_DAP4, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DDC, TEGRA_MUX_I2C2, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_DTA, TEGRA_MUX_RSVD1, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DTB, TEGRA_MUX_RSVD1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DTC, TEGRA_MUX_RSVD1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DTD, TEGRA_MUX_RSVD1, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DTE, TEGRA_MUX_RSVD1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_DTF, TEGRA_MUX_I2C3, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_GMA, TEGRA_MUX_SDIO4, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_GMB, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_GMC, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_GMD, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_GME, TEGRA_MUX_SDIO4, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_GPU, TEGRA_MUX_PWM, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_GPU7, TEGRA_MUX_RTCK, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_GPV, TEGRA_MUX_PCIE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_HDINT, TEGRA_MUX_HDMI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_I2CP, TEGRA_MUX_I2C, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_IRRX, TEGRA_MUX_UARTA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_IRTX, TEGRA_MUX_UARTA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_KBCA, TEGRA_MUX_KBC, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_KBCB, TEGRA_MUX_SDIO2, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_KBCC, TEGRA_MUX_KBC, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_KBCD, TEGRA_MUX_SDIO2, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_KBCE, TEGRA_MUX_KBC, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_KBCF, TEGRA_MUX_KBC, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LCSN, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LD0, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD1, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD10, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD11, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD12, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD13, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD14, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD15, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD16, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD17, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD2, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD3, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD4, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD5, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD6, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD7, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD8, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LD9, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LDC, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LDI, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LHP0, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LHP1, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LHP2, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LHS, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LM0, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LM1, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LPP, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LPW0, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LPW1, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LPW2, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LSC0, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LSC1, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LSCK, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LSDA, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LSDI, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LSPI, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_LVP0, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LVP1, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_LVS, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_OWC, TEGRA_MUX_OWR, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_PMC, TEGRA_MUX_PWR_ON, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_PTA, TEGRA_MUX_HDMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_RM, TEGRA_MUX_I2C, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_SDB, TEGRA_MUX_PWM, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SDC, TEGRA_MUX_TWC, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SDD, TEGRA_MUX_PWM, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SDIO1, TEGRA_MUX_SDIO1, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_SLXA, TEGRA_MUX_PCIE, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SLXC, TEGRA_MUX_SPI4, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SLXD, TEGRA_MUX_SPI4, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SLXK, TEGRA_MUX_PCIE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_SPDI, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPDO, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_SPIA, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIB, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIC, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_SPID, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIE, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIF, TEGRA_MUX_RSVD4, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_SPIG, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_SPIH, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_UAA, TEGRA_MUX_ULPI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_UAB, TEGRA_MUX_ULPI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_UAC, TEGRA_MUX_RSVD4, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_UAD, TEGRA_MUX_SPDIF, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_UCA, TEGRA_MUX_UARTC, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_UCB, TEGRA_MUX_UARTC, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
|
||||
{TEGRA_PINGROUP_UDA, TEGRA_MUX_ULPI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_CK32, TEGRA_MUX_NONE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_DDRC, TEGRA_MUX_NONE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_PMCA, TEGRA_MUX_NONE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_PMCB, TEGRA_MUX_NONE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_PMCC, TEGRA_MUX_NONE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_PMCD, TEGRA_MUX_NONE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_PMCE, TEGRA_MUX_NONE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_XM2C, TEGRA_MUX_NONE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
{TEGRA_PINGROUP_XM2D, TEGRA_MUX_NONE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
};
|
||||
|
||||
static struct tegra_gpio_table gpio_table[] = {
|
||||
{ .gpio = TEGRA_GPIO_SD1_CD, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD1_WP, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD1_POWER, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD4_CD, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD4_WP, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD4_POWER, .enable = true },
|
||||
};
|
||||
|
||||
void paz00_pinmux_init(void)
|
||||
{
|
||||
tegra_pinmux_config_table(paz00_pinmux, ARRAY_SIZE(paz00_pinmux));
|
||||
|
||||
tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table));
|
||||
}
|
128
arch/arm/mach-tegra/board-paz00.c
Normal file
128
arch/arm/mach-tegra/board-paz00.c
Normal file
|
@ -0,0 +1,128 @@
|
|||
/*
|
||||
* arch/arm/mach-tegra/board-paz00.c
|
||||
*
|
||||
* Copyright (C) 2011 Marc Dietrich <marvin24@gmx.de>
|
||||
*
|
||||
* Based on board-harmony.c
|
||||
* Copyright (C) 2010 Google, Inc.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/serial_8250.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/pda_power.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/time.h>
|
||||
#include <asm/setup.h>
|
||||
|
||||
#include <mach/iomap.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/sdhci.h>
|
||||
|
||||
#include "board.h"
|
||||
#include "board-paz00.h"
|
||||
#include "clock.h"
|
||||
#include "devices.h"
|
||||
#include "gpio-names.h"
|
||||
|
||||
static struct plat_serial8250_port debug_uart_platform_data[] = {
|
||||
{
|
||||
.membase = IO_ADDRESS(TEGRA_UARTD_BASE),
|
||||
.mapbase = TEGRA_UARTD_BASE,
|
||||
.irq = INT_UARTD,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
.uartclk = 216000000,
|
||||
}, {
|
||||
.flags = 0
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device debug_uart = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = debug_uart_platform_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *paz00_devices[] __initdata = {
|
||||
&debug_uart,
|
||||
&tegra_sdhci_device1,
|
||||
&tegra_sdhci_device2,
|
||||
&tegra_sdhci_device4,
|
||||
};
|
||||
|
||||
static void __init tegra_paz00_fixup(struct machine_desc *desc,
|
||||
struct tag *tags, char **cmdline, struct meminfo *mi)
|
||||
{
|
||||
mi->nr_banks = 1;
|
||||
mi->bank[0].start = PHYS_OFFSET;
|
||||
mi->bank[0].size = 448 * SZ_1M;
|
||||
}
|
||||
|
||||
static __initdata struct tegra_clk_init_table paz00_clk_init_table[] = {
|
||||
/* name parent rate enabled */
|
||||
{ "uartd", "pll_p", 216000000, true },
|
||||
{ NULL, NULL, 0, 0},
|
||||
};
|
||||
|
||||
|
||||
static struct tegra_sdhci_platform_data sdhci_pdata1 = {
|
||||
.cd_gpio = TEGRA_GPIO_SD1_CD,
|
||||
.wp_gpio = TEGRA_GPIO_SD1_WP,
|
||||
.power_gpio = TEGRA_GPIO_SD1_POWER,
|
||||
};
|
||||
|
||||
static struct tegra_sdhci_platform_data sdhci_pdata2 = {
|
||||
.cd_gpio = -1,
|
||||
.wp_gpio = -1,
|
||||
.power_gpio = -1,
|
||||
};
|
||||
|
||||
static struct tegra_sdhci_platform_data sdhci_pdata4 = {
|
||||
.cd_gpio = TEGRA_GPIO_SD4_CD,
|
||||
.wp_gpio = TEGRA_GPIO_SD4_WP,
|
||||
.power_gpio = TEGRA_GPIO_SD4_POWER,
|
||||
.is_8bit = 1,
|
||||
};
|
||||
|
||||
static void __init tegra_paz00_init(void)
|
||||
{
|
||||
tegra_clk_init_from_table(paz00_clk_init_table);
|
||||
|
||||
paz00_pinmux_init();
|
||||
|
||||
tegra_sdhci_device1.dev.platform_data = &sdhci_pdata1;
|
||||
tegra_sdhci_device2.dev.platform_data = &sdhci_pdata2;
|
||||
tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4;
|
||||
|
||||
platform_add_devices(paz00_devices, ARRAY_SIZE(paz00_devices));
|
||||
}
|
||||
|
||||
MACHINE_START(PAZ00, "paz00")
|
||||
.boot_params = 0x00000100,
|
||||
.fixup = tegra_paz00_fixup,
|
||||
.map_io = tegra_map_common_io,
|
||||
.init_early = tegra_init_early,
|
||||
.init_irq = tegra_init_irq,
|
||||
.timer = &tegra_timer,
|
||||
.init_machine = tegra_paz00_init,
|
||||
MACHINE_END
|
29
arch/arm/mach-tegra/board-paz00.h
Normal file
29
arch/arm/mach-tegra/board-paz00.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* arch/arm/mach-tegra/board-paz00.h
|
||||
*
|
||||
* Copyright (C) 2010 Marc Dietrich <marvin24@gmx.de>
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _MACH_TEGRA_BOARD_PAZ00_H
|
||||
#define _MACH_TEGRA_BOARD_PAZ00_H
|
||||
|
||||
#define TEGRA_GPIO_SD1_CD TEGRA_GPIO_PV5
|
||||
#define TEGRA_GPIO_SD1_WP TEGRA_GPIO_PH1
|
||||
#define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PT3
|
||||
#define TEGRA_GPIO_SD4_CD TEGRA_GPIO_PH2
|
||||
#define TEGRA_GPIO_SD4_WP TEGRA_GPIO_PH3
|
||||
#define TEGRA_GPIO_SD4_POWER TEGRA_GPIO_PI6
|
||||
|
||||
void paz00_pinmux_init(void);
|
||||
|
||||
#endif
|
|
@ -161,11 +161,12 @@ static __initdata struct tegra_pingroup_config seaboard_pinmux[] = {
|
|||
|
||||
|
||||
static struct tegra_gpio_table gpio_table[] = {
|
||||
{ .gpio = TEGRA_GPIO_PI5, .enable = true }, /* mmc2 cd */
|
||||
{ .gpio = TEGRA_GPIO_PH1, .enable = true }, /* mmc2 wp */
|
||||
{ .gpio = TEGRA_GPIO_PI6, .enable = true }, /* mmc2 pwr */
|
||||
{ .gpio = TEGRA_GPIO_LIDSWITCH, .enable = true }, /* lid switch */
|
||||
{ .gpio = TEGRA_GPIO_POWERKEY, .enable = true }, /* power key */
|
||||
{ .gpio = TEGRA_GPIO_SD2_CD, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD2_WP, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_SD2_POWER, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_LIDSWITCH, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_POWERKEY, .enable = true },
|
||||
{ .gpio = TEGRA_GPIO_ISL29018_IRQ, .enable = true },
|
||||
};
|
||||
|
||||
void __init seaboard_pinmux_init(void)
|
||||
|
|
|
@ -18,9 +18,12 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/serial_8250.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/i2c-tegra.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
|
||||
#include <mach/iomap.h>
|
||||
|
@ -63,6 +66,22 @@ static __initdata struct tegra_clk_init_table seaboard_clk_init_table[] = {
|
|||
{ NULL, NULL, 0, 0},
|
||||
};
|
||||
|
||||
static struct tegra_i2c_platform_data seaboard_i2c1_platform_data = {
|
||||
.bus_clk_rate = 400000.
|
||||
};
|
||||
|
||||
static struct tegra_i2c_platform_data seaboard_i2c2_platform_data = {
|
||||
.bus_clk_rate = 400000,
|
||||
};
|
||||
|
||||
static struct tegra_i2c_platform_data seaboard_i2c3_platform_data = {
|
||||
.bus_clk_rate = 400000,
|
||||
};
|
||||
|
||||
static struct tegra_i2c_platform_data seaboard_dvc_platform_data = {
|
||||
.bus_clk_rate = 400000,
|
||||
};
|
||||
|
||||
static struct gpio_keys_button seaboard_gpio_keys_buttons[] = {
|
||||
{
|
||||
.code = SW_LID,
|
||||
|
@ -103,9 +122,9 @@ static struct tegra_sdhci_platform_data sdhci_pdata1 = {
|
|||
};
|
||||
|
||||
static struct tegra_sdhci_platform_data sdhci_pdata3 = {
|
||||
.cd_gpio = TEGRA_GPIO_PI5,
|
||||
.wp_gpio = TEGRA_GPIO_PH1,
|
||||
.power_gpio = TEGRA_GPIO_PI6,
|
||||
.cd_gpio = TEGRA_GPIO_SD2_CD,
|
||||
.wp_gpio = TEGRA_GPIO_SD2_WP,
|
||||
.power_gpio = TEGRA_GPIO_SD2_POWER,
|
||||
};
|
||||
|
||||
static struct tegra_sdhci_platform_data sdhci_pdata4 = {
|
||||
|
@ -124,7 +143,36 @@ static struct platform_device *seaboard_devices[] __initdata = {
|
|||
&seaboard_gpio_keys_device,
|
||||
};
|
||||
|
||||
static void __init __tegra_seaboard_init(void)
|
||||
static struct i2c_board_info __initdata isl29018_device = {
|
||||
I2C_BOARD_INFO("isl29018", 0x44),
|
||||
.irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_ISL29018_IRQ),
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata adt7461_device = {
|
||||
I2C_BOARD_INFO("adt7461", 0x4c),
|
||||
};
|
||||
|
||||
static void __init seaboard_i2c_init(void)
|
||||
{
|
||||
gpio_request(TEGRA_GPIO_ISL29018_IRQ, "isl29018");
|
||||
gpio_direction_input(TEGRA_GPIO_ISL29018_IRQ);
|
||||
|
||||
i2c_register_board_info(0, &isl29018_device, 1);
|
||||
|
||||
i2c_register_board_info(4, &adt7461_device, 1);
|
||||
|
||||
tegra_i2c_device1.dev.platform_data = &seaboard_i2c1_platform_data;
|
||||
tegra_i2c_device2.dev.platform_data = &seaboard_i2c2_platform_data;
|
||||
tegra_i2c_device3.dev.platform_data = &seaboard_i2c3_platform_data;
|
||||
tegra_i2c_device4.dev.platform_data = &seaboard_dvc_platform_data;
|
||||
|
||||
platform_device_register(&tegra_i2c_device1);
|
||||
platform_device_register(&tegra_i2c_device2);
|
||||
platform_device_register(&tegra_i2c_device3);
|
||||
platform_device_register(&tegra_i2c_device4);
|
||||
}
|
||||
|
||||
static void __init seaboard_common_init(void)
|
||||
{
|
||||
seaboard_pinmux_init();
|
||||
|
||||
|
@ -144,7 +192,9 @@ static void __init tegra_seaboard_init(void)
|
|||
debug_uart_platform_data[0].mapbase = TEGRA_UARTD_BASE;
|
||||
debug_uart_platform_data[0].irq = INT_UARTD;
|
||||
|
||||
__tegra_seaboard_init();
|
||||
seaboard_common_init();
|
||||
|
||||
seaboard_i2c_init();
|
||||
}
|
||||
|
||||
static void __init tegra_kaen_init(void)
|
||||
|
@ -154,7 +204,9 @@ static void __init tegra_kaen_init(void)
|
|||
debug_uart_platform_data[0].mapbase = TEGRA_UARTB_BASE;
|
||||
debug_uart_platform_data[0].irq = INT_UARTB;
|
||||
|
||||
__tegra_seaboard_init();
|
||||
seaboard_common_init();
|
||||
|
||||
seaboard_i2c_init();
|
||||
}
|
||||
|
||||
static void __init tegra_wario_init(void)
|
||||
|
@ -164,7 +216,9 @@ static void __init tegra_wario_init(void)
|
|||
debug_uart_platform_data[0].mapbase = TEGRA_UARTB_BASE;
|
||||
debug_uart_platform_data[0].irq = INT_UARTB;
|
||||
|
||||
__tegra_seaboard_init();
|
||||
seaboard_common_init();
|
||||
|
||||
seaboard_i2c_init();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
#ifndef _MACH_TEGRA_BOARD_SEABOARD_H
|
||||
#define _MACH_TEGRA_BOARD_SEABOARD_H
|
||||
|
||||
#define TEGRA_GPIO_SD2_CD TEGRA_GPIO_PI5
|
||||
#define TEGRA_GPIO_SD2_WP TEGRA_GPIO_PH1
|
||||
#define TEGRA_GPIO_SD2_POWER TEGRA_GPIO_PI6
|
||||
#define TEGRA_GPIO_LIDSWITCH TEGRA_GPIO_PC7
|
||||
#define TEGRA_GPIO_USB1 TEGRA_GPIO_PD0
|
||||
#define TEGRA_GPIO_POWERKEY TEGRA_GPIO_PV2
|
||||
|
|
|
@ -16,8 +16,11 @@
|
|||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <mach/pinmux.h>
|
||||
|
||||
#include <mach/pinmux.h>
|
||||
#include <mach/gpio.h>
|
||||
|
||||
#include "gpio-names.h"
|
||||
#include "board-trimslice.h"
|
||||
|
||||
static __initdata struct tegra_pingroup_config trimslice_pinmux[] = {
|
||||
|
@ -139,7 +142,13 @@ static __initdata struct tegra_pingroup_config trimslice_pinmux[] = {
|
|||
{TEGRA_PINGROUP_XM2D, TEGRA_MUX_NONE, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
|
||||
};
|
||||
|
||||
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 */
|
||||
};
|
||||
|
||||
void __init trimslice_pinmux_init(void)
|
||||
{
|
||||
tegra_pinmux_config_table(trimslice_pinmux, ARRAY_SIZE(trimslice_pinmux));
|
||||
tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table));
|
||||
}
|
||||
|
|
|
@ -29,9 +29,12 @@
|
|||
#include <asm/setup.h>
|
||||
|
||||
#include <mach/iomap.h>
|
||||
#include <mach/sdhci.h>
|
||||
|
||||
#include "board.h"
|
||||
#include "clock.h"
|
||||
#include "devices.h"
|
||||
#include "gpio-names.h"
|
||||
|
||||
#include "board-trimslice.h"
|
||||
|
||||
|
@ -56,9 +59,22 @@ static struct platform_device debug_uart = {
|
|||
.platform_data = debug_uart_platform_data,
|
||||
},
|
||||
};
|
||||
static struct tegra_sdhci_platform_data sdhci_pdata1 = {
|
||||
.cd_gpio = -1,
|
||||
.wp_gpio = -1,
|
||||
.power_gpio = -1,
|
||||
};
|
||||
|
||||
static struct tegra_sdhci_platform_data sdhci_pdata4 = {
|
||||
.cd_gpio = TRIMSLICE_GPIO_SD4_CD,
|
||||
.wp_gpio = TRIMSLICE_GPIO_SD4_WP,
|
||||
.power_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device *trimslice_devices[] __initdata = {
|
||||
&debug_uart,
|
||||
&tegra_sdhci_device1,
|
||||
&tegra_sdhci_device4,
|
||||
};
|
||||
|
||||
static void __init tegra_trimslice_fixup(struct machine_desc *desc,
|
||||
|
@ -92,6 +108,9 @@ static void __init tegra_trimslice_init(void)
|
|||
|
||||
trimslice_pinmux_init();
|
||||
|
||||
tegra_sdhci_device1.dev.platform_data = &sdhci_pdata1;
|
||||
tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4;
|
||||
|
||||
platform_add_devices(trimslice_devices, ARRAY_SIZE(trimslice_devices));
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
#ifndef _MACH_TEGRA_BOARD_TRIMSLICE_H
|
||||
#define _MACH_TEGRA_BOARD_TRIMSLICE_H
|
||||
|
||||
#define TRIMSLICE_GPIO_SD4_CD TEGRA_GPIO_PP1 /* mmc4 cd */
|
||||
#define TRIMSLICE_GPIO_SD4_WP TEGRA_GPIO_PP2 /* mmc4 wp */
|
||||
|
||||
void trimslice_pinmux_init(void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -503,3 +503,73 @@ struct platform_device tegra_uarte_device = {
|
|||
.coherent_dma_mask = DMA_BIT_MASK(32),
|
||||
},
|
||||
};
|
||||
|
||||
static struct resource i2s_resource1[] = {
|
||||
[0] = {
|
||||
.start = INT_I2S1,
|
||||
.end = INT_I2S1,
|
||||
.flags = IORESOURCE_IRQ
|
||||
},
|
||||
[1] = {
|
||||
.start = TEGRA_DMA_REQ_SEL_I2S_1,
|
||||
.end = TEGRA_DMA_REQ_SEL_I2S_1,
|
||||
.flags = IORESOURCE_DMA
|
||||
},
|
||||
[2] = {
|
||||
.start = TEGRA_I2S1_BASE,
|
||||
.end = TEGRA_I2S1_BASE + TEGRA_I2S1_SIZE - 1,
|
||||
.flags = IORESOURCE_MEM
|
||||
}
|
||||
};
|
||||
|
||||
static struct resource i2s_resource2[] = {
|
||||
[0] = {
|
||||
.start = INT_I2S2,
|
||||
.end = INT_I2S2,
|
||||
.flags = IORESOURCE_IRQ
|
||||
},
|
||||
[1] = {
|
||||
.start = TEGRA_DMA_REQ_SEL_I2S2_1,
|
||||
.end = TEGRA_DMA_REQ_SEL_I2S2_1,
|
||||
.flags = IORESOURCE_DMA
|
||||
},
|
||||
[2] = {
|
||||
.start = TEGRA_I2S2_BASE,
|
||||
.end = TEGRA_I2S2_BASE + TEGRA_I2S2_SIZE - 1,
|
||||
.flags = IORESOURCE_MEM
|
||||
}
|
||||
};
|
||||
|
||||
struct platform_device tegra_i2s_device1 = {
|
||||
.name = "tegra-i2s",
|
||||
.id = 0,
|
||||
.resource = i2s_resource1,
|
||||
.num_resources = ARRAY_SIZE(i2s_resource1),
|
||||
};
|
||||
|
||||
struct platform_device tegra_i2s_device2 = {
|
||||
.name = "tegra-i2s",
|
||||
.id = 1,
|
||||
.resource = i2s_resource2,
|
||||
.num_resources = ARRAY_SIZE(i2s_resource2),
|
||||
};
|
||||
|
||||
static struct resource tegra_das_resources[] = {
|
||||
[0] = {
|
||||
.start = TEGRA_APB_MISC_DAS_BASE,
|
||||
.end = TEGRA_APB_MISC_DAS_BASE + TEGRA_APB_MISC_DAS_SIZE - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
struct platform_device tegra_das_device = {
|
||||
.name = "tegra-das",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(tegra_das_resources),
|
||||
.resource = tegra_das_resources,
|
||||
};
|
||||
|
||||
struct platform_device tegra_pcm_device = {
|
||||
.name = "tegra-pcm-audio",
|
||||
.id = -1,
|
||||
};
|
||||
|
|
|
@ -42,5 +42,9 @@ extern struct platform_device tegra_uartc_device;
|
|||
extern struct platform_device tegra_uartd_device;
|
||||
extern struct platform_device tegra_uarte_device;
|
||||
extern struct platform_device tegra_pmu_device;
|
||||
extern struct platform_device tegra_i2s_device1;
|
||||
extern struct platform_device tegra_i2s_device2;
|
||||
extern struct platform_device tegra_das_device;
|
||||
extern struct platform_device tegra_pcm_device;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -122,6 +122,9 @@
|
|||
#define TEGRA_APB_MISC_BASE 0x70000000
|
||||
#define TEGRA_APB_MISC_SIZE SZ_4K
|
||||
|
||||
#define TEGRA_APB_MISC_DAS_BASE 0x70000c00
|
||||
#define TEGRA_APB_MISC_DAS_SIZE SZ_128
|
||||
|
||||
#define TEGRA_AC97_BASE 0x70002000
|
||||
#define TEGRA_AC97_SIZE SZ_512
|
||||
|
||||
|
|
Loading…
Reference in a new issue