143561Skato/*-
243561Skato * Copyright (C) 2008 MARVELL INTERNATIONAL LTD.
343561Skato * All rights reserved.
443561Skato *
543561Skato * Developed by Semihalf.
643561Skato *
743561Skato * Redistribution and use in source and binary forms, with or without
843561Skato * modification, are permitted provided that the following conditions
943561Skato * are met:
1043561Skato * 1. Redistributions of source code must retain the above copyright
1143561Skato *    notice, this list of conditions and the following disclaimer.
1243561Skato * 2. Redistributions in binary form must reproduce the above copyright
1343561Skato *    notice, this list of conditions and the following disclaimer in the
1443561Skato *    documentation and/or other materials provided with the distribution.
1543561Skato * 3. Neither the name of MARVELL nor the names of contributors
1643561Skato *    may be used to endorse or promote products derived from this software
1743561Skato *    without specific prior written permission.
1843561Skato *
1943561Skato * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
2043561Skato * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2143561Skato * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2243561Skato * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
2343561Skato * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2443561Skato * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2543561Skato * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2643561Skato * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27119880Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28119880Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29119880Sobrien * SUCH DAMAGE.
3043561Skato */
3143561Skato
3243561Skato#include <sys/cdefs.h>
3343561Skato__FBSDID("$FreeBSD: releng/11.0/sys/arm/mv/orion/orion.c 209131 2010-06-13 13:28:53Z raj $");
3443561Skato
3543561Skato#include <sys/param.h>
3643561Skato#include <sys/systm.h>
3743561Skato#include <sys/bus.h>
3843561Skato
3943561Skato#include <machine/bus.h>
4043561Skato#include <machine/fdt.h>
4145241Skato
4243561Skato#include <arm/mv/mvreg.h>
4343561Skato#include <arm/mv/mvvar.h>
4458871Skato#include <arm/mv/mvwin.h>
4558871Skato
4658871Skato#if 0
4743561Skatoextern const struct obio_pci_irq_map pci_irq_map[];
4843561Skatoconst struct obio_pci mv_pci_info[] = {
4943561Skato	{ MV_TYPE_PCIE,
5043561Skato		MV_PCIE_BASE,	MV_PCIE_SIZE,
5143561Skato		MV_PCIE_IO_BASE, MV_PCIE_IO_SIZE,	4, 0x51,
5258871Skato		MV_PCIE_MEM_BASE, MV_PCIE_MEM_SIZE,	4, 0x59,
5358871Skato		NULL, MV_INT_PEX0
5443561Skato	},
5543561Skato
5643561Skato	{ MV_TYPE_PCI,
5743561Skato		MV_PCI_BASE, MV_PCI_SIZE,
5843561Skato		MV_PCI_IO_BASE, MV_PCI_IO_SIZE,		3, 0x51,
5943561Skato		MV_PCI_MEM_BASE, MV_PCI_MEM_SIZE,	3, 0x59,
6043561Skato		pci_irq_map, -1
6143561Skato	},
6243561Skato
6343561Skato	{ 0, 0, 0 }
6443561Skato};
6543561Skato#endif
6643561Skato
6768358Snyanstruct resource_spec mv_gpio_res[] = {
6843561Skato	{ SYS_RES_MEMORY,	0,	RF_ACTIVE },
6943561Skato	{ SYS_RES_IRQ,		0,	RF_ACTIVE },
7043561Skato	{ SYS_RES_IRQ,		1,	RF_ACTIVE },
7143561Skato	{ SYS_RES_IRQ,		2,	RF_ACTIVE },
7243561Skato	{ SYS_RES_IRQ,		3,	RF_ACTIVE },
7343561Skato	{ -1, 0 }
7443561Skato};
7568358Snyan
7643561Skatoconst struct decode_win idma_win_tbl[] = {
7743561Skato	{ 0 },
7843561Skato};
7943561Skatoconst struct decode_win *idma_wins = idma_win_tbl;
8043561Skatoint idma_wins_no = 0;
8143561Skato
8243561Skatouint32_t
8343561Skatoget_tclk(void)
8458871Skato{
8543561Skato	uint32_t sar;
8643561Skato
8743561Skato	/*
8843561Skato	 * On Orion TCLK is can be configured to 150 MHz or 166 MHz.
8955342Snyan	 * Current setting is read from Sample At Reset register.
9059167Skato	 */
9155342Snyan	/* XXX MPP addr should be retrieved from the DT */
9258871Skato	sar = bus_space_read_4(fdtbus_bs_tag, MV_MPP_BASE, SAMPLE_AT_RESET);
9343561Skato	sar = (sar & TCLK_MASK) >> TCLK_SHIFT;
9443561Skato	switch (sar) {
9543561Skato	case 1:
9643561Skato		return (TCLK_150MHZ);
9743561Skato	case 2:
9843561Skato		return (TCLK_166MHZ);
9943561Skato	default:
10043561Skato		panic("Unknown TCLK settings!");
10143561Skato	}
10243561Skato}
10366246Skato