mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
MARVELL: Delete now-superfluous board/Marvell/{common, include} dirs.
With dropping support for some boards and the deletion of some source files, it appears that both of these directories are now superfluous. Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
This commit is contained in:
parent
2507854e46
commit
367d789d87
9 changed files with 0 additions and 2450 deletions
|
@ -1,94 +0,0 @@
|
|||
(cpu/mpc7xxx/start.S)
|
||||
|
||||
start:
|
||||
b boot_cold
|
||||
|
||||
start_warm:
|
||||
b boot_warm
|
||||
|
||||
|
||||
boot_cold:
|
||||
boot_warm:
|
||||
clear bats
|
||||
init l2 (if enabled)
|
||||
init altivec (if enabled)
|
||||
invalidate l2 (if enabled)
|
||||
setup bats (from defines in config_EVB)
|
||||
enable_addr_trans: (if MMU enabled)
|
||||
enable MSR_IR and MSR_DR
|
||||
jump to in_flash
|
||||
|
||||
in_flash:
|
||||
enable l1 dcache
|
||||
gal_low_init: (board/evb64260/sdram_init.S)
|
||||
config SDRAM (CFG, TIMING, DECODE)
|
||||
init scratch regs (810 + 814)
|
||||
|
||||
detect DIMM0 (bank 0 only)
|
||||
config SDRAM_PARA0 to 256/512Mbit
|
||||
bl sdram_op_mode
|
||||
detect bank0 width
|
||||
write scratch reg 810
|
||||
config SDRAM_PARA0 with results
|
||||
config SDRAM_PARA1 with results
|
||||
|
||||
detect DIMM1 (bank 2 only)
|
||||
config SDRAM_PARA2 to 256/512Mbit
|
||||
detect bank2 width
|
||||
write scratch reg 814
|
||||
config SDRAM_PARA2 with results
|
||||
config SDRAM_PARA3 with results
|
||||
|
||||
setup device bus timings/width
|
||||
setup boot device timings/width
|
||||
|
||||
setup CPU_CONF (0x0)
|
||||
setup cpu master control register 0x160
|
||||
setup PCI0 TIMEOUT
|
||||
setup PCI1 TIMEOUT
|
||||
setup PCI0 BAR
|
||||
setup PCI1 BAR
|
||||
|
||||
setup MPP control 0-3
|
||||
setup GPP level control
|
||||
setup Serial ports multiplex
|
||||
|
||||
setup stack pointer (r1)
|
||||
setup GOT
|
||||
call cpu_init_f
|
||||
debug leds
|
||||
board_init_f: (common/board.c)
|
||||
board_early_init_f:
|
||||
remap gt regs?
|
||||
map PCI mem/io
|
||||
map device space
|
||||
clear out interrupts
|
||||
init_timebase
|
||||
env_init
|
||||
serial_init
|
||||
console_init_f
|
||||
display_options
|
||||
initdram: (board/evb64260/evb64260.c)
|
||||
detect memory
|
||||
for each bank:
|
||||
dram_size()
|
||||
setup PCI slave memory mappings
|
||||
setup SCS
|
||||
setup monitor
|
||||
alloc board info struct
|
||||
init bd struct
|
||||
relocate_code: (cpu/mpc7xxx/start.S)
|
||||
copy,got,clearbss
|
||||
board_init_r(bd, dest_addr) (common/board.c)
|
||||
setup bd function pointers
|
||||
trap_init
|
||||
flash_init: (board/evb64260/flash.c)
|
||||
setup bd flash info
|
||||
cpu_init_r: (cpu/mpc7xxx/cpu_init.c)
|
||||
nothing
|
||||
mem_malloc_init
|
||||
malloc_bin_reloc
|
||||
spi_init (r or f)??? (CONFIG_ENV_IS_IN_EEPROM)
|
||||
env_relocated
|
||||
misc_init_r(bd): (board/evb64260/evb64260.c)
|
||||
mpsc_init2
|
|
@ -1,16 +0,0 @@
|
|||
/*
|
||||
* (C) Copyright 2000
|
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*
|
||||
* Hacked for the DB64360 board by Ingo.Assmus@keymile.com
|
||||
*/
|
||||
|
||||
#ifndef __I2C_H__
|
||||
#define __I2C_H__
|
||||
|
||||
/* function declarations */
|
||||
uchar i2c_read(uchar, unsigned int, int, uchar*, int);
|
||||
|
||||
#endif
|
|
@ -1,170 +0,0 @@
|
|||
/*
|
||||
* (C) Copyright 2000
|
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*
|
||||
* Hacked for the marvell db64360 eval board by
|
||||
* Ingo Assmus <ingo.assmus@keymile.com>
|
||||
*/
|
||||
|
||||
/*************** DEFINES for Intel StrataFlash FLASH chip ********************/
|
||||
|
||||
/*
|
||||
* acceptable chips types are:
|
||||
*
|
||||
* 28F320J5, 28F640J5, 28F320J3A, 28F640J3A and 28F128J3A
|
||||
*/
|
||||
|
||||
/* register addresses, valid only following an CHIP_CMD_RD_ID command */
|
||||
#define CHIP_ADDR_REG_MAN 0x000000 /* manufacturer's id */
|
||||
#define CHIP_ADDR_REG_DEV 0x000001 /* device id */
|
||||
#define CHIP_ADDR_REG_CFGM 0x000003 /* master lock config */
|
||||
#define CHIP_ADDR_REG_CFG(b) (((b)<<16)|2) /* lock config for block b */
|
||||
|
||||
/* Commands */
|
||||
#define CHIP_CMD_RST 0xFF /* reset flash */
|
||||
#define CHIP_CMD_RD_ID 0x90 /* read the id and lock bits */
|
||||
#define CHIP_CMD_RD_QUERY 0x98 /* read device capabilities */
|
||||
#define CHIP_CMD_RD_STAT 0x70 /* read the status register */
|
||||
#define CHIP_CMD_CLR_STAT 0x50 /* clear the staus register */
|
||||
#define CHIP_CMD_WR_BUF 0xE8 /* clear the staus register */
|
||||
#define CHIP_CMD_PROG 0x40 /* program word command */
|
||||
#define CHIP_CMD_ERASE1 0x20 /* 1st word for block erase */
|
||||
#define CHIP_CMD_ERASE2 0xD0 /* 2nd word for block erase */
|
||||
#define CHIP_CMD_ERASE_SUSP 0xB0 /* suspend block erase */
|
||||
#define CHIP_CMD_LOCK 0x60 /* 1st word for all lock cmds */
|
||||
#define CHIP_CMD_SET_LOCK_BLK 0x01 /* 2nd wrd set block lock bit */
|
||||
#define CHIP_CMD_SET_LOCK_MSTR 0xF1 /* 2nd wrd set master lck bit */
|
||||
#define CHIP_CMD_CLR_LOCK_BLK 0xD0 /* 2nd wrd clear blk lck bit */
|
||||
|
||||
/* status register bits */
|
||||
#define CHIP_STAT_DPS 0x02 /* Device Protect Status */
|
||||
#define CHIP_STAT_VPPS 0x08 /* VPP Status */
|
||||
#define CHIP_STAT_PSLBS 0x10 /* Program+Set Lock Bit Stat */
|
||||
#define CHIP_STAT_ECLBS 0x20 /* Erase+Clr Lock Bit Stat */
|
||||
#define CHIP_STAT_ESS 0x40 /* Erase Suspend Status */
|
||||
#define CHIP_STAT_RDY 0x80 /* WSM Mach Status, 1=rdy */
|
||||
|
||||
#define CHIP_STAT_ERR (CHIP_STAT_VPPS | CHIP_STAT_DPS | \
|
||||
CHIP_STAT_ECLBS | CHIP_STAT_PSLBS)
|
||||
|
||||
/* ID and Lock Configuration */
|
||||
#define CHIP_RD_ID_LOCK 0x01 /* Bit 0 of each byte */
|
||||
#define CHIP_RD_ID_MAN 0x89 /* Manufacturer code = 0x89 */
|
||||
#define CHIP_RD_ID_DEV CONFIG_SYS_FLASH_ID
|
||||
|
||||
/* dimensions */
|
||||
#define CHIP_WIDTH 2 /* chips are in 16 bit mode */
|
||||
#define CHIP_WSHIFT 1 /* (log2 of CHIP_WIDTH) */
|
||||
#define CHIP_NBLOCKS 128
|
||||
#define CHIP_BLKSZ (128 * 1024) /* of 128Kbytes each */
|
||||
#define CHIP_SIZE (CHIP_BLKSZ * CHIP_NBLOCKS)
|
||||
|
||||
/********************** DEFINES for Hymod Flash ******************************/
|
||||
|
||||
/*
|
||||
* The hymod board has 2 x 28F320J5 chips running in
|
||||
* 16 bit mode, for a 32 bit wide bank.
|
||||
*/
|
||||
|
||||
typedef unsigned short bank_word_t; /* 8/16/32/64bit unsigned int */
|
||||
typedef volatile bank_word_t *bank_addr_t;
|
||||
typedef unsigned long bank_size_t; /* want this big - >= 32 bit */
|
||||
|
||||
#define BANK_CHIP_WIDTH 1 /* each bank is 1 chip wide */
|
||||
#define BANK_CHIP_WSHIFT 0 /* (log2 of BANK_CHIP_WIDTH) */
|
||||
|
||||
#define BANK_WIDTH (CHIP_WIDTH * BANK_CHIP_WIDTH)
|
||||
#define BANK_WSHIFT (CHIP_WSHIFT + BANK_CHIP_WSHIFT)
|
||||
#define BANK_NBLOCKS CHIP_NBLOCKS
|
||||
#define BANK_BLKSZ (CHIP_BLKSZ * BANK_CHIP_WIDTH)
|
||||
#define BANK_SIZE (CHIP_SIZE * BANK_CHIP_WIDTH)
|
||||
|
||||
#define MAX_BANKS 1 /* only one bank possible */
|
||||
|
||||
/* align bank addresses and sizes to bank word boundaries */
|
||||
#define BANK_ADDR_WORD_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
|
||||
& ~(BANK_WIDTH - 1)))
|
||||
#define BANK_SIZE_WORD_ALIGN(s) ((bank_size_t)BANK_ADDR_WORD_ALIGN( \
|
||||
(bank_size_t)(s) + (BANK_WIDTH - 1)))
|
||||
|
||||
/* align bank addresses and sizes to bank block boundaries */
|
||||
#define BANK_ADDR_BLK_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
|
||||
& ~(BANK_BLKSZ - 1)))
|
||||
#define BANK_SIZE_BLK_ALIGN(s) ((bank_size_t)BANK_ADDR_BLK_ALIGN( \
|
||||
(bank_size_t)(s) + (BANK_BLKSZ - 1)))
|
||||
|
||||
/* align bank addresses and sizes to bank boundaries */
|
||||
#define BANK_ADDR_BANK_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
|
||||
& ~(BANK_SIZE - 1)))
|
||||
#define BANK_SIZE_BANK_ALIGN(s) ((bank_size_t)BANK_ADDR_BANK_ALIGN( \
|
||||
(bank_size_t)(s) + (BANK_SIZE - 1)))
|
||||
|
||||
/* add an offset to a bank address */
|
||||
#define BANK_ADDR_OFFSET(a, o) (bank_addr_t)((bank_size_t)(a) + \
|
||||
(bank_size_t)(o))
|
||||
|
||||
/* get base address of bank b, given flash base address a */
|
||||
#define BANK_ADDR_BASE(a, b) BANK_ADDR_OFFSET(BANK_ADDR_BANK_ALIGN(a), \
|
||||
(bank_size_t)(b) * BANK_SIZE)
|
||||
|
||||
/* adjust a bank address to start of next word, block or bank */
|
||||
#define BANK_ADDR_NEXT_WORD(a) BANK_ADDR_OFFSET(BANK_ADDR_WORD_ALIGN(a), \
|
||||
BANK_WIDTH)
|
||||
#define BANK_ADDR_NEXT_BLK(a) BANK_ADDR_OFFSET(BANK_ADDR_BLK_ALIGN(a), \
|
||||
BANK_BLKSZ)
|
||||
#define BANK_ADDR_NEXT_BANK(a) BANK_ADDR_OFFSET(BANK_ADDR_BANK_ALIGN(a), \
|
||||
BANK_SIZE)
|
||||
|
||||
/* get bank address of chip register r given a bank base address a */
|
||||
#define BANK_ADDR_REG(a, r) BANK_ADDR_OFFSET(BANK_ADDR_BANK_ALIGN(a), \
|
||||
((bank_size_t)(r) << BANK_WSHIFT))
|
||||
|
||||
/* make a bank address for each chip register address */
|
||||
|
||||
#define BANK_ADDR_REG_MAN(a) BANK_ADDR_REG((a), CHIP_ADDR_REG_MAN)
|
||||
#define BANK_ADDR_REG_DEV(a) BANK_ADDR_REG((a), CHIP_ADDR_REG_DEV)
|
||||
#define BANK_ADDR_REG_CFGM(a) BANK_ADDR_REG((a), CHIP_ADDR_REG_CFGM)
|
||||
#define BANK_ADDR_REG_CFG(b,a) BANK_ADDR_REG((a), CHIP_ADDR_REG_CFG(b))
|
||||
|
||||
/*
|
||||
* replicate a chip cmd/stat/rd value into each byte position within a word
|
||||
* so that multiple chips are accessed in a single word i/o operation
|
||||
*
|
||||
* this must be as wide as the bank_word_t type, and take into account the
|
||||
* chip width and bank layout
|
||||
*/
|
||||
|
||||
#define BANK_FILL_WORD(o) ((bank_word_t)(o))
|
||||
|
||||
/* make a bank word value for each chip cmd/stat/rd value */
|
||||
|
||||
/* Commands */
|
||||
#define BANK_CMD_RST BANK_FILL_WORD(CHIP_CMD_RST)
|
||||
#define BANK_CMD_RD_ID BANK_FILL_WORD(CHIP_CMD_RD_ID)
|
||||
#define BANK_CMD_RD_STAT BANK_FILL_WORD(CHIP_CMD_RD_STAT)
|
||||
#define BANK_CMD_CLR_STAT BANK_FILL_WORD(CHIP_CMD_CLR_STAT)
|
||||
#define BANK_CMD_ERASE1 BANK_FILL_WORD(CHIP_CMD_ERASE1)
|
||||
#define BANK_CMD_ERASE2 BANK_FILL_WORD(CHIP_CMD_ERASE2)
|
||||
#define BANK_CMD_PROG BANK_FILL_WORD(CHIP_CMD_PROG)
|
||||
#define BANK_CMD_LOCK BANK_FILL_WORD(CHIP_CMD_LOCK)
|
||||
#define BANK_CMD_SET_LOCK_BLK BANK_FILL_WORD(CHIP_CMD_SET_LOCK_BLK)
|
||||
#define BANK_CMD_SET_LOCK_MSTR BANK_FILL_WORD(CHIP_CMD_SET_LOCK_MSTR)
|
||||
#define BANK_CMD_CLR_LOCK_BLK BANK_FILL_WORD(CHIP_CMD_CLR_LOCK_BLK)
|
||||
|
||||
/* status register bits */
|
||||
#define BANK_STAT_DPS BANK_FILL_WORD(CHIP_STAT_DPS)
|
||||
#define BANK_STAT_PSS BANK_FILL_WORD(CHIP_STAT_PSS)
|
||||
#define BANK_STAT_VPPS BANK_FILL_WORD(CHIP_STAT_VPPS)
|
||||
#define BANK_STAT_PSLBS BANK_FILL_WORD(CHIP_STAT_PSLBS)
|
||||
#define BANK_STAT_ECLBS BANK_FILL_WORD(CHIP_STAT_ECLBS)
|
||||
#define BANK_STAT_ESS BANK_FILL_WORD(CHIP_STAT_ESS)
|
||||
#define BANK_STAT_RDY BANK_FILL_WORD(CHIP_STAT_RDY)
|
||||
|
||||
#define BANK_STAT_ERR BANK_FILL_WORD(CHIP_STAT_ERR)
|
||||
|
||||
/* ID and Lock Configuration */
|
||||
#define BANK_RD_ID_LOCK BANK_FILL_WORD(CHIP_RD_ID_LOCK)
|
||||
#define BANK_RD_ID_MAN BANK_FILL_WORD(CHIP_RD_ID_MAN)
|
||||
#define BANK_RD_ID_DEV BANK_FILL_WORD(CHIP_RD_ID_DEV)
|
File diff suppressed because it is too large
Load diff
|
@ -1,66 +0,0 @@
|
|||
/*
|
||||
* COM1 NS16550 support
|
||||
* originally from linux source (arch/powerpc/boot/ns16550.c)
|
||||
* modified to use CONFIG_SYS_ISA_MEM and new defines
|
||||
*
|
||||
* further modified by Josh Huber <huber@mclx.com> to support
|
||||
* the DUART on the Galileo Eval board. (db64360)
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "ns16550.h"
|
||||
|
||||
#ifdef ZUMA_NTL
|
||||
/* no 16550 device */
|
||||
#else
|
||||
const NS16550_t COM_PORTS[] = { (NS16550_t) (CONFIG_SYS_DUART_IO + 0),
|
||||
(NS16550_t) (CONFIG_SYS_DUART_IO + 0x20)
|
||||
};
|
||||
|
||||
volatile struct NS16550 *NS16550_init (int chan, int baud_divisor)
|
||||
{
|
||||
volatile struct NS16550 *com_port;
|
||||
|
||||
com_port = (struct NS16550 *) COM_PORTS[chan];
|
||||
com_port->ier = 0x00;
|
||||
com_port->lcr = LCR_BKSE; /* Access baud rate */
|
||||
com_port->dll = baud_divisor & 0xff; /* 9600 baud */
|
||||
com_port->dlm = (baud_divisor >> 8) & 0xff;
|
||||
com_port->lcr = LCR_8N1; /* 8 data, 1 stop, no parity */
|
||||
com_port->mcr = MCR_DTR | MCR_RTS; /* RTS/DTR */
|
||||
|
||||
/* Clear & enable FIFOs */
|
||||
com_port->fcr = FCR_FIFO_EN | FCR_RXSR | FCR_TXSR;
|
||||
return (com_port);
|
||||
}
|
||||
|
||||
void NS16550_reinit (volatile struct NS16550 *com_port, int baud_divisor)
|
||||
{
|
||||
com_port->ier = 0x00;
|
||||
com_port->lcr = LCR_BKSE; /* Access baud rate */
|
||||
com_port->dll = baud_divisor & 0xff; /* 9600 baud */
|
||||
com_port->dlm = (baud_divisor >> 8) & 0xff;
|
||||
com_port->lcr = LCR_8N1; /* 8 data, 1 stop, no parity */
|
||||
com_port->mcr = MCR_DTR | MCR_RTS; /* RTS/DTR */
|
||||
|
||||
/* Clear & enable FIFOs */
|
||||
com_port->fcr = FCR_FIFO_EN | FCR_RXSR | FCR_TXSR;
|
||||
}
|
||||
|
||||
void NS16550_putc (volatile struct NS16550 *com_port, unsigned char c)
|
||||
{
|
||||
while ((com_port->lsr & LSR_THRE) == 0);
|
||||
com_port->thr = c;
|
||||
}
|
||||
|
||||
unsigned char NS16550_getc (volatile struct NS16550 *com_port)
|
||||
{
|
||||
while ((com_port->lsr & LSR_DR) == 0);
|
||||
return (com_port->rbr);
|
||||
}
|
||||
|
||||
int NS16550_tstc (volatile struct NS16550 *com_port)
|
||||
{
|
||||
return ((com_port->lsr & LSR_DR) != 0);
|
||||
}
|
||||
#endif
|
|
@ -1,102 +0,0 @@
|
|||
/*
|
||||
* NS16550 Serial Port
|
||||
* originally from linux source (arch/powerpc/boot/ns16550.h)
|
||||
* modified slightly to
|
||||
* have addresses as offsets from CONFIG_SYS_ISA_BASE
|
||||
* added a few more definitions
|
||||
* added prototypes for ns16550.c
|
||||
* reduced no of com ports to 2
|
||||
* modifications (c) Rob Taylor, Flying Pig Systems. 2000.
|
||||
*
|
||||
* further modified to support the DUART in the Galileo eval board
|
||||
* modifications (c) Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __NS16550_H__
|
||||
#define __NS16550_H__
|
||||
|
||||
/* the padding is necessary because on the galileo board the UART is
|
||||
wired in with the 3 address lines shifted over by 2 bits */
|
||||
struct NS16550
|
||||
{
|
||||
unsigned char rbr; /* 0 = 0-3*/
|
||||
int pad1:24;
|
||||
|
||||
unsigned char ier; /* 1 = 4-7*/
|
||||
int pad2:24;
|
||||
|
||||
unsigned char fcr; /* 2 = 8-b*/
|
||||
int pad3:24;
|
||||
|
||||
unsigned char lcr; /* 3 = c-f*/
|
||||
int pad4:24;
|
||||
|
||||
unsigned char mcr; /* 4 = 10-13*/
|
||||
int pad5:24;
|
||||
|
||||
unsigned char lsr; /* 5 = 14-17*/
|
||||
int pad6:24;
|
||||
|
||||
unsigned char msr; /* 6 =18-1b*/
|
||||
int pad7:24;
|
||||
|
||||
unsigned char scr; /* 7 =1c-1f*/
|
||||
int pad8:24;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* aliases */
|
||||
#define thr rbr
|
||||
#define iir fcr
|
||||
#define dll rbr
|
||||
#define dlm ier
|
||||
|
||||
#define FCR_FIFO_EN 0x01 /*fifo enable*/
|
||||
#define FCR_RXSR 0x02 /*receiver soft reset*/
|
||||
#define FCR_TXSR 0x04 /*transmitter soft reset*/
|
||||
|
||||
|
||||
#define MCR_DTR 0x01
|
||||
#define MCR_RTS 0x02
|
||||
#define MCR_DMA_EN 0x04
|
||||
#define MCR_TX_DFR 0x08
|
||||
|
||||
|
||||
#define LCR_WLS_MSK 0x03 /* character length slect mask*/
|
||||
#define LCR_WLS_5 0x00 /* 5 bit character length */
|
||||
#define LCR_WLS_6 0x01 /* 6 bit character length */
|
||||
#define LCR_WLS_7 0x02 /* 7 bit character length */
|
||||
#define LCR_WLS_8 0x03 /* 8 bit character length */
|
||||
#define LCR_STB 0x04 /* Number of stop Bits, off = 1, on = 1.5 or 2) */
|
||||
#define LCR_PEN 0x08 /* Parity eneble*/
|
||||
#define LCR_EPS 0x10 /* Even Parity Select*/
|
||||
#define LCR_STKP 0x20 /* Stick Parity*/
|
||||
#define LCR_SBRK 0x40 /* Set Break*/
|
||||
#define LCR_BKSE 0x80 /* Bank select enable*/
|
||||
|
||||
#define LSR_DR 0x01 /* Data ready */
|
||||
#define LSR_OE 0x02 /* Overrun */
|
||||
#define LSR_PE 0x04 /* Parity error */
|
||||
#define LSR_FE 0x08 /* Framing error */
|
||||
#define LSR_BI 0x10 /* Break */
|
||||
#define LSR_THRE 0x20 /* Xmit holding register empty */
|
||||
#define LSR_TEMT 0x40 /* Xmitter empty */
|
||||
#define LSR_ERR 0x80 /* Error */
|
||||
|
||||
/* useful defaults for LCR*/
|
||||
#define LCR_8N1 0x03
|
||||
|
||||
|
||||
#define COM1 0x03F8
|
||||
#define COM2 0x02F8
|
||||
|
||||
volatile struct NS16550 * NS16550_init(int chan, int baud_divisor);
|
||||
void NS16550_putc(volatile struct NS16550 *com_port, unsigned char c);
|
||||
unsigned char NS16550_getc(volatile struct NS16550 *com_port);
|
||||
int NS16550_tstc(volatile struct NS16550 *com_port);
|
||||
void NS16550_reinit(volatile struct NS16550 *com_port, int baud_divisor);
|
||||
|
||||
typedef struct NS16550 *NS16550_t;
|
||||
|
||||
extern const NS16550_t COM_PORTS[];
|
||||
|
||||
#endif
|
|
@ -1,162 +0,0 @@
|
|||
/*
|
||||
* (C) Copyright 2001
|
||||
* Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
|
||||
*
|
||||
* modified for marvell db64360 eval board by
|
||||
* Ingo Assmus <ingo.assmus@keymile.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/*
|
||||
* serial.c - serial support for the gal ev board
|
||||
*/
|
||||
|
||||
/* supports both the 16650 duart and the MPSC */
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <serial.h>
|
||||
#include <linux/compiler.h>
|
||||
|
||||
#include "../include/memory.h"
|
||||
|
||||
#include "ns16550.h"
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#ifdef CONFIG_MPSC
|
||||
static int marvell_serial_init(void)
|
||||
{
|
||||
#if (defined CONFIG_SYS_INIT_CHAN1) || (defined CONFIG_SYS_INIT_CHAN2)
|
||||
int clock_divisor = 230400 / gd->baudrate;
|
||||
#endif
|
||||
|
||||
mpsc_init (gd->baudrate);
|
||||
|
||||
/* init the DUART chans so that KGDB in the kernel can use them */
|
||||
#ifdef CONFIG_SYS_INIT_CHAN1
|
||||
NS16550_reinit (COM_PORTS[0], clock_divisor);
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_INIT_CHAN2
|
||||
NS16550_reinit (COM_PORTS[1], clock_divisor);
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void marvell_serial_putc(const char c)
|
||||
{
|
||||
if (c == '\n')
|
||||
mpsc_putchar ('\r');
|
||||
|
||||
mpsc_putchar (c);
|
||||
}
|
||||
|
||||
static int marvell_serial_getc(void)
|
||||
{
|
||||
return mpsc_getchar ();
|
||||
}
|
||||
|
||||
static int marvell_serial_tstc(void)
|
||||
{
|
||||
return mpsc_test_char ();
|
||||
}
|
||||
|
||||
static void marvell_serial_setbrg(void)
|
||||
{
|
||||
galbrg_set_baudrate (CONFIG_MPSC_PORT, gd->baudrate);
|
||||
}
|
||||
|
||||
#else /* ! CONFIG_MPSC */
|
||||
|
||||
static int marvell_serial_init(void)
|
||||
{
|
||||
int clock_divisor = 230400 / gd->baudrate;
|
||||
|
||||
#ifdef CONFIG_SYS_INIT_CHAN1
|
||||
(void) NS16550_init (0, clock_divisor);
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_INIT_CHAN2
|
||||
(void) NS16550_init (1, clock_divisor);
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void marvell_serial_putc(const char c)
|
||||
{
|
||||
if (c == '\n')
|
||||
NS16550_putc (COM_PORTS[CONFIG_SYS_DUART_CHAN], '\r');
|
||||
|
||||
NS16550_putc (COM_PORTS[CONFIG_SYS_DUART_CHAN], c);
|
||||
}
|
||||
|
||||
static int marvell_serial_getc(void)
|
||||
{
|
||||
return NS16550_getc (COM_PORTS[CONFIG_SYS_DUART_CHAN]);
|
||||
}
|
||||
|
||||
static int marvell_serial_tstc(void)
|
||||
{
|
||||
return NS16550_tstc (COM_PORTS[CONFIG_SYS_DUART_CHAN]);
|
||||
}
|
||||
|
||||
static void marvell_serial_setbrg(void)
|
||||
{
|
||||
int clock_divisor = 230400 / gd->baudrate;
|
||||
|
||||
#ifdef CONFIG_SYS_INIT_CHAN1
|
||||
NS16550_reinit (COM_PORTS[0], clock_divisor);
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_INIT_CHAN2
|
||||
NS16550_reinit (COM_PORTS[1], clock_divisor);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MPSC */
|
||||
|
||||
static struct serial_device marvell_serial_drv = {
|
||||
.name = "marvell_serial",
|
||||
.start = marvell_serial_init,
|
||||
.stop = NULL,
|
||||
.setbrg = marvell_serial_setbrg,
|
||||
.putc = marvell_serial_putc,
|
||||
.puts = default_serial_puts,
|
||||
.getc = marvell_serial_getc,
|
||||
.tstc = marvell_serial_tstc,
|
||||
};
|
||||
|
||||
void marvell_serial_initialize(void)
|
||||
{
|
||||
serial_register(&marvell_serial_drv);
|
||||
}
|
||||
|
||||
__weak struct serial_device *default_serial_console(void)
|
||||
{
|
||||
return &marvell_serial_drv;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_CMD_KGDB)
|
||||
void kgdb_serial_init (void)
|
||||
{
|
||||
}
|
||||
|
||||
void putDebugChar (int c)
|
||||
{
|
||||
serial_putc (c);
|
||||
}
|
||||
|
||||
void putDebugStr (const char *str)
|
||||
{
|
||||
serial_puts (str);
|
||||
}
|
||||
|
||||
int getDebugChar (void)
|
||||
{
|
||||
return serial_getc ();
|
||||
}
|
||||
|
||||
void kgdb_interruptible (int yes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
|
@ -1,173 +0,0 @@
|
|||
/* Memory.h - Memory mappings and remapping functions declarations */
|
||||
|
||||
/* Copyright - Galileo technology. */
|
||||
|
||||
#ifndef __INCmemoryh
|
||||
#define __INCmemoryh
|
||||
|
||||
/* includes */
|
||||
|
||||
#include "core.h"
|
||||
|
||||
/* defines */
|
||||
|
||||
#define DONT_MODIFY 0xffffffff
|
||||
#define PARITY_SUPPORT 0x40000000
|
||||
#define MINIMUM_MEM_BANK_SIZE 0x10000
|
||||
#define MINIMUM_DEVICE_WINDOW_SIZE 0x10000
|
||||
#define MINIMUM_PCI_WINDOW_SIZE 0x10000
|
||||
#define MINIMUM_ACCESS_WIN_SIZE 0x10000
|
||||
|
||||
#define _8BIT 0x00000000
|
||||
#define _16BIT 0x00100000
|
||||
#define _32BIT 0x00200000
|
||||
#define _64BIT 0x00300000
|
||||
|
||||
/* typedefs */
|
||||
|
||||
typedef struct deviceParam
|
||||
{ /* boundary values */
|
||||
unsigned int turnOff; /* 0x0 - 0xf */
|
||||
unsigned int acc2First; /* 0x0 - 0x1f */
|
||||
unsigned int acc2Next; /* 0x0 - 0x1f */
|
||||
unsigned int ale2Wr; /* 0x0 - 0xf */
|
||||
unsigned int wrLow; /* 0x0 - 0xf */
|
||||
unsigned int wrHigh; /* 0x0 - 0xf */
|
||||
unsigned int badrSkew; /* 0x0 - 0x2 */
|
||||
unsigned int DPEn; /* 0x0 - 0x1 */
|
||||
unsigned int deviceWidth; /* in Bytes */
|
||||
} DEVICE_PARAM;
|
||||
|
||||
|
||||
typedef enum __memBank{BANK0,BANK1,BANK2,BANK3} MEMORY_BANK;
|
||||
typedef enum __memDevice{DEVICE0,DEVICE1,DEVICE2,DEVICE3,BOOT_DEVICE} DEVICE;
|
||||
|
||||
/*typedef enum __memoryProtectRegion{MEM_REGION0,MEM_REGION1,MEM_REGION2, \
|
||||
MEM_REGION3,MEM_REGION4,MEM_REGION5, \
|
||||
MEM_REGION6,MEM_REGION7} \
|
||||
MEMORY_PROTECT_REGION;*/
|
||||
/* There are four possible windows that can be defined as protected */
|
||||
typedef enum _memoryProtectWindow{MEM_WINDOW0,MEM_WINDOW1,MEM_WINDOW2,
|
||||
MEM_WINDOW3
|
||||
} MEMORY_PROTECT_WINDOW;
|
||||
/* When defining a protected window , this paramter indicates whether it
|
||||
is accessible or not */
|
||||
typedef enum __memoryAccess{MEM_ACCESS_ALLOWED,MEM_ACCESS_FORBIDEN} \
|
||||
MEMORY_ACCESS;
|
||||
typedef enum __memoryWrite{MEM_WRITE_ALLOWED,MEM_WRITE_FORBIDEN} \
|
||||
MEMORY_ACCESS_WRITE;
|
||||
typedef enum __memoryCacheProtect{MEM_CACHE_ALLOWED,MEM_CACHE_FORBIDEN} \
|
||||
MEMORY_CACHE_PROTECT;
|
||||
typedef enum __memorySnoopType{MEM_NO_SNOOP,MEM_SNOOP_WT,MEM_SNOOP_WB} \
|
||||
MEMORY_SNOOP_TYPE;
|
||||
typedef enum __memorySnoopRegion{MEM_SNOOP_REGION0,MEM_SNOOP_REGION1, \
|
||||
MEM_SNOOP_REGION2,MEM_SNOOP_REGION3} \
|
||||
MEMORY_SNOOP_REGION;
|
||||
|
||||
/* There are 21 memory windows dedicated for the varios interfaces (PCI,
|
||||
devCS (devices), CS(DDR), interenal registers and SRAM) used by the CPU's
|
||||
address decoding mechanism. */
|
||||
typedef enum _memoryWindow {CS_0_WINDOW = BIT0, CS_1_WINDOW = BIT1,
|
||||
CS_2_WINDOW = BIT2, CS_3_WINDOW = BIT3,
|
||||
DEVCS_0_WINDOW = BIT4, DEVCS_1_WINDOW = BIT5,
|
||||
DEVCS_2_WINDOW = BIT6, DEVCS_3_WINDOW = BIT7,
|
||||
BOOT_CS_WINDOW = BIT8, PCI_0_IO_WINDOW = BIT9,
|
||||
PCI_0_MEM0_WINDOW = BIT10,
|
||||
PCI_0_MEM1_WINDOW = BIT11,
|
||||
PCI_0_MEM2_WINDOW = BIT12,
|
||||
PCI_0_MEM3_WINDOW = BIT13, PCI_1_IO_WINDOW = BIT14,
|
||||
PCI_1_MEM0_WINDOW = BIT15, PCI_1_MEM1_WINDOW =BIT16,
|
||||
PCI_1_MEM2_WINDOW = BIT17, PCI_1_MEM3_WINDOW =BIT18,
|
||||
INTEGRATED_SRAM_WINDOW = BIT19,
|
||||
INTERNAL_SPACE_WINDOW = BIT20,
|
||||
ALL_WINDOWS = 0X1FFFFF
|
||||
} MEMORY_WINDOW;
|
||||
|
||||
typedef enum _memoryWindowStatus {MEM_WINDOW_ENABLED,MEM_WINDOW_DISABLED
|
||||
} MEMORY_WINDOW_STATUS;
|
||||
|
||||
|
||||
typedef enum _pciMemWindow{PCI_0_IO,PCI_0_MEM0,PCI_0_MEM1,PCI_0_MEM2,PCI_0_MEM3
|
||||
#ifdef INCLUDE_PCI_1
|
||||
,PCI_1_IO,PCI_1_MEM0,PCI_1_MEM1,PCI_1_MEM2,PCI_1_MEM3
|
||||
#endif /* INCLUDE_PCI_1 */
|
||||
} PCI_MEM_WINDOW;
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/* functions */
|
||||
unsigned int memoryGetBankBaseAddress(MEMORY_BANK bank);
|
||||
unsigned int memoryGetDeviceBaseAddress(DEVICE device);
|
||||
/* New at MV6436x */
|
||||
unsigned int MemoryGetPciBaseAddr(PCI_MEM_WINDOW pciWindow);
|
||||
unsigned int memoryGetBankSize(MEMORY_BANK bank);
|
||||
unsigned int memoryGetDeviceSize(DEVICE device);
|
||||
unsigned int memoryGetDeviceWidth(DEVICE device);
|
||||
/* New at MV6436x */
|
||||
unsigned int gtMemoryGetPciWindowSize(PCI_MEM_WINDOW pciWindow);
|
||||
|
||||
/* when given base Address and size Set new WINDOW for SCS_X. (X = 0,1,2 or 3*/
|
||||
bool memoryMapBank(MEMORY_BANK bank, unsigned int bankBase,unsigned int bankLength);
|
||||
/* Set a new base and size for one of the memory banks (CS0 - CS3) */
|
||||
bool gtMemorySetMemoryBank(MEMORY_BANK bank, unsigned int bankBase,
|
||||
unsigned int bankSize);
|
||||
bool memoryMapDeviceSpace(DEVICE device, unsigned int deviceBase,unsigned int deviceLength);
|
||||
|
||||
/* Change the Internal Register Base Address to a new given Address. */
|
||||
bool memoryMapInternalRegistersSpace(unsigned int internalRegBase);
|
||||
/* returns internal Register Space Base Address. */
|
||||
unsigned int memoryGetInternalRegistersSpace(void);
|
||||
|
||||
/* Returns the integrated SRAM Base Address. */
|
||||
unsigned int memoryGetInternalSramBaseAddr(void);
|
||||
/* -------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/* Set new base address for the integrated SRAM. */
|
||||
void memorySetInternalSramBaseAddr(unsigned int sramBaseAddress);
|
||||
/* -------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/* Delete a protection feature to a given space. */
|
||||
void memoryDisableProtectRegion(MEMORY_PROTECT_WINDOW window);
|
||||
/* -------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/* Writes a new remap value to the remap register */
|
||||
unsigned int memorySetPciRemapValue(PCI_MEM_WINDOW memoryWindow,
|
||||
unsigned int remapValueHigh,
|
||||
unsigned int remapValueLow);
|
||||
/* -------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/* Configurate the protection feature to a given space. */
|
||||
bool memorySetProtectRegion(MEMORY_PROTECT_WINDOW window,
|
||||
MEMORY_ACCESS gtMemoryAccess,
|
||||
MEMORY_ACCESS_WRITE gtMemoryWrite,
|
||||
MEMORY_CACHE_PROTECT cacheProtection,
|
||||
unsigned int baseAddress,
|
||||
unsigned int size);
|
||||
|
||||
/* Configurate the protection feature to a given space. */
|
||||
/*bool memorySetProtectRegion(MEMORY_PROTECT_REGION region,
|
||||
MEMORY_ACCESS memoryAccess,
|
||||
MEMORY_ACCESS_WRITE memoryWrite,
|
||||
MEMORY_CACHE_PROTECT cacheProtection,
|
||||
unsigned int baseAddress,
|
||||
unsigned int regionLength); */
|
||||
/* Configurate the snoop feature to a given space. */
|
||||
bool memorySetRegionSnoopMode(MEMORY_SNOOP_REGION region,
|
||||
MEMORY_SNOOP_TYPE snoopType,
|
||||
unsigned int baseAddress,
|
||||
unsigned int regionLength);
|
||||
|
||||
bool memoryRemapAddress(unsigned int remapReg, unsigned int remapValue);
|
||||
bool memoryGetDeviceParam(DEVICE_PARAM *deviceParam, DEVICE deviceNum);
|
||||
bool memorySetDeviceParam(DEVICE_PARAM *deviceParam, DEVICE deviceNum);
|
||||
/* Set a new base and size for one of the PCI windows. */
|
||||
bool memorySetPciWindow(PCI_MEM_WINDOW pciWindow, unsigned int pciWindowBase,
|
||||
unsigned int pciWindowSize);
|
||||
|
||||
/* Disable or enable one of the 21 windows dedicated for the CPU's
|
||||
address decoding mechanism */
|
||||
void MemoryDisableWindow(MEMORY_WINDOW window);
|
||||
void MemoryEnableWindow (MEMORY_WINDOW window);
|
||||
MEMORY_WINDOW_STATUS MemoryGetMemWindowStatus(MEMORY_WINDOW window);
|
||||
#endif /* __INCmemoryh */
|
|
@ -1,293 +0,0 @@
|
|||
/* PCI.h - PCI functions header file */
|
||||
|
||||
/* Copyright - Galileo technology. */
|
||||
|
||||
#ifndef __INCpcih
|
||||
#define __INCpcih
|
||||
|
||||
/* includes */
|
||||
|
||||
#include "core.h"
|
||||
#include "memory.h"
|
||||
|
||||
/* According to PCI REV 2.1 MAX agents allowed on the bus are -21- */
|
||||
#define PCI_MAX_DEVICES 22
|
||||
|
||||
|
||||
/* Macros */
|
||||
|
||||
/* The next Macros configurate the initiator board (SELF) or any any agent on
|
||||
the PCI to become: MASTER, response to MEMORY transactions , response to
|
||||
IO transactions or TWO both MEMORY_IO transactions. Those configuration
|
||||
are for both PCI0 and PCI1. */
|
||||
|
||||
#define PCI_MEMORY_ENABLE(host, deviceNumber) pciWriteConfigReg(host, \
|
||||
PCI_STATUS_AND_COMMAND,deviceNumber,MEMORY_ENABLE | \
|
||||
pciReadConfigReg(host, PCI_STATUS_AND_COMMAND,deviceNumber) )
|
||||
|
||||
#define PCI_IO_ENABLE(host, deviceNumber) pciWriteConfigReg(host, \
|
||||
PCI_STATUS_AND_COMMAND,deviceNumber,I_O_ENABLE | \
|
||||
pciReadConfigReg(host, PCI_STATUS_AND_COMMAND,deviceNumber) )
|
||||
|
||||
#define PCI_SLAVE_ENABLE(host, deviceNumber) pciWriteConfigReg(host, \
|
||||
PCI_STATUS_AND_COMMAND,deviceNumber,MEMORY_ENABLE | I_O_ENABLE | \
|
||||
pciReadConfigReg(host, PCI_STATUS_AND_COMMAND,deviceNumber) )
|
||||
|
||||
#define PCI_DISABLE(host, deviceNumber) pciWriteConfigReg(host, \
|
||||
PCI_STATUS_AND_COMMAND,deviceNumber,0xfffffff8 & \
|
||||
pciReadConfigReg(host, PCI_STATUS_AND_COMMAND,deviceNumber))
|
||||
|
||||
#define PCI_MASTER_ENABLE(host,deviceNumber) pciWriteConfigReg(host, \
|
||||
PCI_STATUS_AND_COMMAND,deviceNumber,MASTER_ENABLE | \
|
||||
pciReadConfigReg(host,PCI_STATUS_AND_COMMAND,deviceNumber) )
|
||||
|
||||
#define PCI_MASTER_DISABLE(deviceNumber) pciWriteConfigReg(host, \
|
||||
PCI_STATUS_AND_COMMAND,deviceNumber,~MASTER_ENABLE & \
|
||||
pciReadConfigReg(host,PCI_STATUS_AND_COMMAND,deviceNumber) )
|
||||
|
||||
#define MASTER_ENABLE BIT2
|
||||
#define MEMORY_ENABLE BIT1
|
||||
#define I_O_ENABLE BIT0
|
||||
#define SELF 32
|
||||
|
||||
/* Agent on the PCI bus may have up to 6 BARS. */
|
||||
#define BAR0 0x10
|
||||
#define BAR1 0x14
|
||||
#define BAR2 0x18
|
||||
#define BAR3 0x1c
|
||||
#define BAR4 0x20
|
||||
#define BAR5 0x24
|
||||
#define BAR_SEL_MEM_IO BIT0
|
||||
#define BAR_MEM_TYPE_32_BIT NO_BIT
|
||||
#define BAR_MEM_TYPE_BELOW_1M BIT1
|
||||
#define BAR_MEM_TYPE_64_BIT BIT2
|
||||
#define BAR_MEM_TYPE_RESERVED (BIT1 | BIT2)
|
||||
#define BAR_MEM_TYPE_MASK (BIT1 | BIT2)
|
||||
#define BAR_PREFETCHABLE BIT3
|
||||
#define BAR_CONFIG_MASK (BIT0 | BIT1 | BIT2 | BIT3)
|
||||
|
||||
/* Defines for the access regions. */
|
||||
#define PREFETCH_ENABLE BIT12
|
||||
#define PREFETCH_DISABLE NO_BIT
|
||||
#define DELAYED_READ_ENABLE BIT13
|
||||
/* #define CACHING_ENABLE BIT14 */
|
||||
/* aggressive prefetch: PCI slave prefetch two burst in advance*/
|
||||
#define AGGRESSIVE_PREFETCH BIT16
|
||||
/* read line aggresive prefetch: PCI slave prefetch two burst in advance*/
|
||||
#define READ_LINE_AGGRESSIVE_PREFETCH BIT17
|
||||
/* read multiple aggresive prefetch: PCI slave prefetch two burst in advance*/
|
||||
#define READ_MULTI_AGGRESSIVE_PREFETCH BIT18
|
||||
#define MAX_BURST_4 NO_BIT
|
||||
#define MAX_BURST_8 BIT20 /* Bits[21:20] = 01 */
|
||||
#define MAX_BURST_16 BIT21 /* Bits[21:20] = 10 */
|
||||
#define PCI_BYTE_SWAP NO_BIT /* Bits[25:24] = 00 */
|
||||
#define PCI_NO_SWAP BIT24 /* Bits[25:24] = 01 */
|
||||
#define PCI_BYTE_AND_WORD_SWAP BIT25 /* Bits[25:24] = 10 */
|
||||
#define PCI_WORD_SWAP (BIT24 | BIT25) /* Bits[25:24] = 11 */
|
||||
#define PCI_ACCESS_PROTECT BIT28
|
||||
#define PCI_WRITE_PROTECT BIT29
|
||||
|
||||
/* typedefs */
|
||||
|
||||
typedef enum __pciAccessRegions{REGION0,REGION1,REGION2,REGION3,REGION4,REGION5,
|
||||
REGION6,REGION7} PCI_ACCESS_REGIONS;
|
||||
|
||||
typedef enum __pciAgentPrio{LOW_AGENT_PRIO,HI_AGENT_PRIO} PCI_AGENT_PRIO;
|
||||
typedef enum __pciAgentPark{PARK_ON_AGENT,DONT_PARK_ON_AGENT} PCI_AGENT_PARK;
|
||||
|
||||
typedef enum __pciSnoopType{PCI_NO_SNOOP,PCI_SNOOP_WT,PCI_SNOOP_WB}
|
||||
PCI_SNOOP_TYPE;
|
||||
typedef enum __pciSnoopRegion{PCI_SNOOP_REGION0,PCI_SNOOP_REGION1,
|
||||
PCI_SNOOP_REGION2,PCI_SNOOP_REGION3}
|
||||
PCI_SNOOP_REGION;
|
||||
|
||||
typedef enum __memPciHost{PCI_HOST0,PCI_HOST1} PCI_HOST;
|
||||
typedef enum __memPciRegion{PCI_REGION0,PCI_REGION1,
|
||||
PCI_REGION2,PCI_REGION3,
|
||||
PCI_IO}
|
||||
PCI_REGION;
|
||||
|
||||
/*ronen 7/Dec/03 */
|
||||
typedef enum __pci_bar_windows{PCI_CS0_BAR, PCI_CS1_BAR, PCI_CS2_BAR,
|
||||
PCI_CS3_BAR, PCI_DEV_CS0_BAR, PCI_DEV_CS1_BAR,
|
||||
PCI_DEV_CS2_BAR, PCI_DEV_CS3_BAR, PCI_BOOT_CS_BAR,
|
||||
PCI_MEM_INT_REG_BAR, PCI_IO_INT_REG_BAR,
|
||||
PCI_P2P_MEM0_BAR, PCI_P2P_MEM1_BAR,
|
||||
PCI_P2P_IO_BAR, PCI_CPU_BAR, PCI_INT_SRAM_BAR,
|
||||
PCI_LAST_BAR} PCI_INTERNAL_BAR;
|
||||
|
||||
typedef struct pciBar {
|
||||
unsigned int detectBase;
|
||||
unsigned int base;
|
||||
unsigned int size;
|
||||
unsigned int type;
|
||||
} PCI_BAR;
|
||||
|
||||
typedef struct pciDevice {
|
||||
PCI_HOST host;
|
||||
char type[40];
|
||||
unsigned int deviceNum;
|
||||
unsigned int venID;
|
||||
unsigned int deviceID;
|
||||
PCI_BAR bar[6];
|
||||
} PCI_DEVICE;
|
||||
|
||||
typedef struct pciSelfBars {
|
||||
unsigned int SCS0Base;
|
||||
unsigned int SCS0Size;
|
||||
unsigned int SCS1Base;
|
||||
unsigned int SCS1Size;
|
||||
unsigned int SCS2Base;
|
||||
unsigned int SCS2Size;
|
||||
unsigned int SCS3Base;
|
||||
unsigned int SCS3Size;
|
||||
unsigned int internalMemBase;
|
||||
unsigned int internalIOBase;
|
||||
unsigned int CS0Base;
|
||||
unsigned int CS0Size;
|
||||
unsigned int CS1Base;
|
||||
unsigned int CS1Size;
|
||||
unsigned int CS2Base;
|
||||
unsigned int CS2Size;
|
||||
unsigned int CS3Base;
|
||||
unsigned int CS3Size;
|
||||
unsigned int CSBootBase;
|
||||
unsigned int CSBootSize;
|
||||
unsigned int P2PMem0Base;
|
||||
unsigned int P2PMem0Size;
|
||||
unsigned int P2PMem1Base;
|
||||
unsigned int P2PMem1Size;
|
||||
unsigned int P2PIOBase;
|
||||
unsigned int P2PIOSize;
|
||||
unsigned int CPUBase;
|
||||
unsigned int CPUSize;
|
||||
} PCI_SELF_BARS;
|
||||
|
||||
/* read/write configuration registers on local PCI bus. */
|
||||
void pciWriteConfigReg(PCI_HOST host, unsigned int regOffset,
|
||||
unsigned int pciDevNum, unsigned int data);
|
||||
unsigned int pciReadConfigReg (PCI_HOST host, unsigned int regOffset,
|
||||
unsigned int pciDevNum);
|
||||
|
||||
/* read/write configuration registers on another PCI bus. */
|
||||
void pciOverBridgeWriteConfigReg(PCI_HOST host,
|
||||
unsigned int regOffset,
|
||||
unsigned int pciDevNum,
|
||||
unsigned int busNum,unsigned int data);
|
||||
unsigned int pciOverBridgeReadConfigReg(PCI_HOST host,
|
||||
unsigned int regOffset,
|
||||
unsigned int pciDevNum,
|
||||
unsigned int busNum);
|
||||
|
||||
/* Performs full scane on both PCI and returns all detail possible on the
|
||||
agents which exist on the bus. */
|
||||
void pciScanDevices(PCI_HOST host, PCI_DEVICE *pci0Detect,
|
||||
unsigned int numberOfElment);
|
||||
|
||||
/* Master`s memory space */
|
||||
bool pciMapSpace(PCI_HOST host, PCI_REGION region,
|
||||
unsigned int remapBase,
|
||||
unsigned int deviceBase,
|
||||
unsigned int deviceLength);
|
||||
unsigned int pciGetSpaceBase(PCI_HOST host, PCI_REGION region);
|
||||
unsigned int pciGetSpaceSize(PCI_HOST host, PCI_REGION region);
|
||||
|
||||
/* Slave`s memory space */
|
||||
void pciMapMemoryBank(PCI_HOST host, MEMORY_BANK bank,
|
||||
unsigned int pci0Dram0Base, unsigned int pci0Dram0Size);
|
||||
|
||||
#if 0 /* GARBAGE routines - dont use till they get cleaned up */
|
||||
void pci0ScanSelfBars(PCI_SELF_BARS *pci0SelfBars);
|
||||
void pci1ScanSelfBars(PCI_SELF_BARS *pci1SelfBars);
|
||||
void pci0MapInternalRegSpace(unsigned int pci0InternalBase);
|
||||
void pci1MapInternalRegSpace(unsigned int pci1InternalBase);
|
||||
void pci0MapInternalRegIOSpace(unsigned int pci0InternalBase);
|
||||
void pci1MapInternalRegIOSpace(unsigned int pci1InternalBase);
|
||||
void pci0MapDevice0MemorySpace(unsigned int pci0Dev0Base,
|
||||
unsigned int pci0Dev0Length);
|
||||
void pci1MapDevice0MemorySpace(unsigned int pci1Dev0Base,
|
||||
unsigned int pci1Dev0Length);
|
||||
void pci0MapDevice1MemorySpace(unsigned int pci0Dev1Base,
|
||||
unsigned int pci0Dev1Length);
|
||||
void pci1MapDevice1MemorySpace(unsigned int pci1Dev1Base,
|
||||
unsigned int pci1Dev1Length);
|
||||
void pci0MapDevice2MemorySpace(unsigned int pci0Dev2Base,
|
||||
unsigned int pci0Dev2Length);
|
||||
void pci1MapDevice2MemorySpace(unsigned int pci1Dev2Base,
|
||||
unsigned int pci1Dev2Length);
|
||||
void pci0MapDevice3MemorySpace(unsigned int pci0Dev3Base,
|
||||
unsigned int pci0Dev3Length);
|
||||
void pci1MapDevice3MemorySpace(unsigned int pci1Dev3Base,
|
||||
unsigned int pci1Dev3Length);
|
||||
void pci0MapBootDeviceMemorySpace(unsigned int pci0DevBootBase,
|
||||
unsigned int pci0DevBootLength);
|
||||
void pci1MapBootDeviceMemorySpace(unsigned int pci1DevBootBase,
|
||||
unsigned int pci1DevBootLength);
|
||||
void pci0MapP2pMem0Space(unsigned int pci0P2pMem0Base,
|
||||
unsigned int pci0P2pMem0Length);
|
||||
void pci1MapP2pMem0Space(unsigned int pci1P2pMem0Base,
|
||||
unsigned int pci1P2pMem0Length);
|
||||
void pci0MapP2pMem1Space(unsigned int pci0P2pMem1Base,
|
||||
unsigned int pci0P2pMem1Length);
|
||||
void pci1MapP2pMem1Space(unsigned int pci1P2pMem1Base,
|
||||
unsigned int pci1P2pMem1Length);
|
||||
void pci0MapP2pIoSpace(unsigned int pci0P2pIoBase,
|
||||
unsigned int pci0P2pIoLength);
|
||||
void pci1MapP2pIoSpace(unsigned int pci1P2pIoBase,
|
||||
unsigned int pci1P2pIoLength);
|
||||
|
||||
void pci0MapCPUspace(unsigned int pci0CpuBase, unsigned int pci0CpuLengs);
|
||||
void pci1MapCPUspace(unsigned int pci1CpuBase, unsigned int pci1CpuLengs);
|
||||
#endif
|
||||
|
||||
/* PCI region options */
|
||||
|
||||
bool pciSetRegionFeatures(PCI_HOST host, PCI_ACCESS_REGIONS region,
|
||||
unsigned int features, unsigned int baseAddress,
|
||||
unsigned int regionLength);
|
||||
|
||||
void pciDisableAccessRegion(PCI_HOST host, PCI_ACCESS_REGIONS region);
|
||||
|
||||
/* PCI arbiter */
|
||||
|
||||
bool pciArbiterEnable(PCI_HOST host);
|
||||
bool pciArbiterDisable(PCI_HOST host);
|
||||
bool pciSetArbiterAgentsPriority(PCI_HOST host, PCI_AGENT_PRIO internalAgent,
|
||||
PCI_AGENT_PRIO externalAgent0,
|
||||
PCI_AGENT_PRIO externalAgent1,
|
||||
PCI_AGENT_PRIO externalAgent2,
|
||||
PCI_AGENT_PRIO externalAgent3,
|
||||
PCI_AGENT_PRIO externalAgent4,
|
||||
PCI_AGENT_PRIO externalAgent5);
|
||||
bool pciSetArbiterAgentsPriority(PCI_HOST host, PCI_AGENT_PRIO internalAgent,
|
||||
PCI_AGENT_PRIO externalAgent0,
|
||||
PCI_AGENT_PRIO externalAgent1,
|
||||
PCI_AGENT_PRIO externalAgent2,
|
||||
PCI_AGENT_PRIO externalAgent3,
|
||||
PCI_AGENT_PRIO externalAgent4,
|
||||
PCI_AGENT_PRIO externalAgent5);
|
||||
bool pciParkingDisable(PCI_HOST host, PCI_AGENT_PARK internalAgent,
|
||||
PCI_AGENT_PARK externalAgent0,
|
||||
PCI_AGENT_PARK externalAgent1,
|
||||
PCI_AGENT_PARK externalAgent2,
|
||||
PCI_AGENT_PARK externalAgent3,
|
||||
PCI_AGENT_PARK externalAgent4,
|
||||
PCI_AGENT_PARK externalAgent5);
|
||||
bool pciEnableBrokenAgentDetection(PCI_HOST host, unsigned char brokenValue);
|
||||
bool pciEnableBrokenAgentDetection(PCI_HOST host, unsigned char brokenValue);
|
||||
|
||||
/* PCI-to-PCI (P2P) */
|
||||
|
||||
bool pciP2PConfig(PCI_HOST host,
|
||||
unsigned int SecondBusLow,unsigned int SecondBusHigh,
|
||||
unsigned int busNum,unsigned int devNum);
|
||||
/* PCI Cache-coherency */
|
||||
|
||||
bool pciSetRegionSnoopMode(PCI_HOST host, PCI_SNOOP_REGION region,
|
||||
PCI_SNOOP_TYPE snoopType,
|
||||
unsigned int baseAddress,
|
||||
unsigned int regionLength);
|
||||
|
||||
PCI_DEVICE * pciFindDevice(unsigned short ven, unsigned short dev);
|
||||
|
||||
#endif /* __INCpcih */
|
Loading…
Reference in a new issue