Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.9.
  1/*
  2 * Support for AM3517/05 Craneboard
  3 * http://www.mistralsolutions.com/products/craneboard.php
  4 *
  5 * Copyright (C) 2010 Mistral Solutions Pvt Ltd. <www.mistralsolutions.com>
  6 * Author: R.Srinath <srinath@mistralsolutions.com>
  7 *
  8 * Based on mach-omap2/board-am3517evm.c
  9 *
 10 * This program is free software; you can redistribute it and/or modify it
 11 * under the terms of the GNU General Public License as  published by the
 12 * Free Software Foundation version 2.
 13 *
 14 * This program is distributed "as is" WITHOUT ANY WARRANTY of any kind,
 15 * whether express or implied; without even the implied warranty of
 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 17 * General Public License for more details.
 18 */
 19
 20#include <linux/kernel.h>
 21#include <linux/init.h>
 22#include <linux/gpio.h>
 23
 24#include <mach/hardware.h>
 25#include <asm/mach-types.h>
 26#include <asm/mach/arch.h>
 27#include <asm/mach/map.h>
 28
 29#include <plat/board.h>
 30#include "common.h"
 31#include <plat/usb.h>
 32
 33#include "am35xx-emac.h"
 34#include "mux.h"
 35#include "control.h"
 36
 37#define GPIO_USB_POWER		35
 38#define GPIO_USB_NRESET		38
 39
 40
 41/* Board initialization */
 42static struct omap_board_config_kernel am3517_crane_config[] __initdata = {
 43};
 44
 45#ifdef CONFIG_OMAP_MUX
 46static struct omap_board_mux board_mux[] __initdata = {
 47	{ .reg_offset = OMAP_MUX_TERMINATOR },
 48};
 49#endif
 50
 51static struct usbhs_omap_board_data usbhs_bdata __initdata = {
 52	.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
 53	.port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED,
 54	.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
 55
 56	.phy_reset  = true,
 57	.reset_gpio_port[0]  = GPIO_USB_NRESET,
 58	.reset_gpio_port[1]  = -EINVAL,
 59	.reset_gpio_port[2]  = -EINVAL
 60};
 61
 62static void __init am3517_crane_init(void)
 63{
 64	int ret;
 65
 66	omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
 67	omap_serial_init();
 68	omap_sdrc_init(NULL, NULL);
 69
 70	omap_board_config = am3517_crane_config;
 71	omap_board_config_size = ARRAY_SIZE(am3517_crane_config);
 72
 73	/* Configure GPIO for EHCI port */
 74	if (omap_mux_init_gpio(GPIO_USB_NRESET, OMAP_PIN_OUTPUT)) {
 75		pr_err("Can not configure mux for GPIO_USB_NRESET %d\n",
 76			GPIO_USB_NRESET);
 77		return;
 78	}
 79
 80	if (omap_mux_init_gpio(GPIO_USB_POWER, OMAP_PIN_OUTPUT)) {
 81		pr_err("Can not configure mux for GPIO_USB_POWER %d\n",
 82			GPIO_USB_POWER);
 83		return;
 84	}
 85
 86	ret = gpio_request_one(GPIO_USB_POWER, GPIOF_OUT_INIT_HIGH,
 87			       "usb_ehci_enable");
 88	if (ret < 0) {
 89		pr_err("Can not request GPIO %d\n", GPIO_USB_POWER);
 90		return;
 91	}
 92
 93	usbhs_init(&usbhs_bdata);
 94	am35xx_emac_init(AM35XX_DEFAULT_MDIO_FREQUENCY, 1);
 95}
 96
 97MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")
 98	.atag_offset	= 0x100,
 99	.reserve	= omap_reserve,
100	.map_io		= omap3_map_io,
101	.init_early	= am35xx_init_early,
102	.init_irq	= omap3_init_irq,
103	.handle_irq	= omap3_intc_handle_irq,
104	.init_machine	= am3517_crane_init,
105	.init_late	= am35xx_init_late,
106	.timer		= &omap3_timer,
107	.restart	= omap_prcm_restart,
108MACHINE_END