#include <linux/dma-mapping.h>
#include <linux/fsl_devices.h>
#include <linux/pda_power.h>
+#include <linux/gpio.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include "board.h"
#include "board-olympus.h"
+#include "gpio-names.h"
/* NVidia bootloader tags */
#define ATAG_NVIDIA 0x41000801
},
};
+static struct plat_serial8250_port hsuart_platform_data[] = {
+ {
+ .mapbase = TEGRA_UARTD_BASE,
+ .membase = IO_ADDRESS(TEGRA_UARTD_BASE),
+ .irq = INT_UARTD,
+ }, {
+ .flags = 0
+ }
+};
+
+static struct platform_device hsuart = {
+ .name = "tegra_uart",
+ .id = 3,
+ .dev = {
+ .platform_data = hsuart_platform_data,
+ .coherent_dma_mask = 0xffffffff,
+ },
+};
+
/* OTG gadget device */
static u64 tegra_otg_dmamask = DMA_BIT_MASK(32);
&tegra_otg,
&androidusb_device,
&pda_power_device,
+ &hsuart,
};
static void __init tegra_olympus_fixup(struct machine_desc *desc, struct tag *tags,
tegra_common_init();
+ /* Olympus has a USB switch that disconnects the usb port from the AP20
+ unless a factory cable is used, the factory jumper is set, or the
+ usb_data_en gpio is set.
+ */
+ tegra_gpio_enable(TEGRA_GPIO_PV6);
+ gpio_request(TEGRA_GPIO_PV6, "usb_data_en");
+ gpio_direction_output(TEGRA_GPIO_PV6, 1);
+
clk = clk_get_sys(NULL, "pll_p");
clk_set_rate(clk, 216000000);
clk_enable(clk);
clk_set_rate(clk, 72000000);
clk_enable(clk);
- clk = clk_get_sys("uart.3", NULL);
- clk_set_rate(clk, 216000000);
- clk_enable(clk);
-
olympus_pinmux_init();
platform_add_devices(olympus_devices, ARRAY_SIZE(olympus_devices));