/*
 * (C) Copyright 2002 Wolfgang Grandegger <wg@denx.de>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#ifndef _PN62_H_
#define _PN62_H_

/*
 * Definitions for the Intel Bridge 21554 or 21555.
 */
#define I2155X_VPD_ADDR		0xe6
#define I2155X_VPD_DATA		0xe8

#define I2155X_VPD_START	0x80
#define I2155X_VPD_SN_START	0x80
#define I2155X_VPD_SN_SIZE	0x10
#define I2155X_VPD_MAC0_START	0x90
#define I2155X_VPD_MAC1_START	0x96

#define I2155X_SCRAPAD_ADDR	0xa8
#define I2155X_SCRAPAD_MAX	8

#define I2155X_BAR2_BASE	0x98
#define I2155X_BAR3_BASE	0x9c
#define I2155X_BAR4_BASE	0xa0

#define I2155X_BAR2_SETUP	0xb0
#define I2155X_BAR3_SETUP	0xb4
#define I2155X_BAR4_SETUP	0xb8

/*
 * Interrupt request numbers
 */
#define PN62_IRQ_HOST		0x0
#define PN62_IRQ_PLX9054	0x1
#define PN62_IRQ_ETH0		0x2
#define PN62_IRQ_ETH1		0x3
#define PN62_IRQ_COM1		0x4
#define PN62_IRQ_COM2		0x4

/*
 * Miscellaneous definitons.
 */
#define PN62_SMEM_DEFAULT	0x1f00000

/*
 * Definitions for boot protocol using Scratchpad registers.
 */
#define BOOT_DONE		0
#define BOOT_DONE_CLEAR		0x00dead00
#define BOOT_DONE_ERROR		0xbad0dead
#define BOOT_DONE_U_BOOT	0x12345678
#define BOOT_DONE_LINUX		0x87654321
#define BOOT_CMD		1
#define BOOT_CMD_MOVE		0x1
#define BOOT_CMD_BOOT		0x2
#define BOOT_DATA		2
#define BOOT_PROTO		3
#define BOOT_PROTO_READY	0x23456789
#define BOOT_PROTO_CLEAR	0x00000000
#define BOOT_STATUS		4

/*
 * LED Definitions:
 */
#define PN62_LED_BASE		0xff800300
#define PN62_LED_MAX		12

/*
 * LED0 - 7 mounted on top of board, D1 - D8
 * LED8 - 11 upper four LEDs on the front panel of the board.
 */
#define LED_0			0x00	/* OFF */
#define LED_1			0x01	/* ON */
#define LED_SLOW_CLOCK		0x02	/* SLOW 1Hz ish */
#define LED_nSLOW_CLOCK		0x03	/* inverse of above */
#define LED_WATCHDOG_OUT	0x06	/* Reset Watchdog level */
#define LED_WATCHDOG_CLOCK	0x07	/* clock to watchdog */

/*
 * LED's currently setup in AMD79C973 device as the following:
 * LED0 100Mbit
 * LED1 LNKSE
 * LED2 TX Activity
 * LED3 RX Activity
 */
#define LED_E0_LED0		0x08	/* Ethernet Port 0 LED 0 */
#define LED_E0_LED1		0x09	/* Ethernet Port 0 LED 1 */
#define LED_E0_LED2		0x0A	/* Ethernet Port 0 LED 2 */
#define LED_E0_LED3		0x0B	/* Ethernet Port 0 LED 3 */
#define LED_E1_LED0		0x0C	/* Ethernet Port 1 LED 0 */
#define LED_E1_LED1		0x0D	/* Ethernet Port 1 LED 1 */
#define LED_E1_LED2		0x0E	/* Ethernet Port 1 LED 2 */
#define LED_E1_LED3		0x0F	/* Ethernet Port 1 LED 3 */
#define LED_STROBE0		0x10	/* Processor Strobe 0 */
#define LED_STROBE1		0x11	/* Processor Strobe 1 */
#define LED_STROBE2		0x12	/* Processor Strobe 2 */
#define LED_STROBE3		0x13	/* Processor Strobe 3 */
#define LED_STROBE4		0x14	/* Processor Strobe 4 */
#define LED_STROBE5		0x15	/* Processor Strobe 5 */
#define LED_STROBE6		0x16	/* Processor Strobe 6 */
#define LED_STROBE7		0x17	/* Processor Strobe 7 */
#define LED_HOST_STROBE0	0x18	/* Host strobe 0 */
#define LED_HOST_STROBE1	0x19	/* Host strobe 1 */
#define LED_HOST_STROBE2	0x1A	/* Host strobe 2 */
#define LED_HOST_STROBE3	0x1B	/* Host strobe 3 */
#define LED_HOST_STROBE4	0x1C	/* Host strobe 4 */
#define LED_HOST_STROBE5	0x1D	/* Host strobe 5 */
#define LED_HOST_STROBE6	0x1E	/* Host strobe 6 */
#define LED_HOST_STROBE7	0x1F	/* Host strobe 7 */
#define LED_MPC_INT0		0x20	/* MPC8240 INT 0 */
#define LED_MPC_INT1		0x21	/* MPC8240 INT 1 */
#define	LED_MPC_INT2		0x22	/* MPC8240 INT 2 */
#define	LED_MPC_INT3		0x23	/* MPC8240 INT 3 */
#define	LED_MPC_INT4		0x24	/* MPC8240 INT 4 */
#define	LED_UART0_CS		0x25	/* UART 0 Chip Select */
#define	LED_UART1_CS		0x26	/* UART 1 Chip Select */
#define	LED_SRAM_CS		0x27	/* SRAM Chip Select */
#define	LED_SRAM_WR		0x28	/* SRAM WR Signal */
#define	LED_SRAM_RD		0x29	/* SRAM RD Signal */
#define	LED_MPC_RCS0		0x2A	/* MPC8240 RCS0 Signal */
#define	LED_S_PCI_FRAME		0x2B	/* Secondary PCI Frame Signal */
#define	LED_MPC_CS0		0x2C	/* MPC8240 CS0 Signal */
#define	LED_HOST_INT		0x2D	/* MPC8240 to Host Interrupt signal */
#define LED_LAST_FUNCTION	LED_HOST_INT	/* last function */

/*
 * Forward declarations
 */
int  i2155x_init	 (void);
void i2155x_write_scrapad(int idx, u32 val);
u32  i2155x_read_scrapad (int idx);
void i2155x_set_bar_base (int bar, u32 addr);
int  i2155x_read_vpd	 (int offset, int size, unsigned char *data);

int  am79c95x_init	 (void);

void set_led		 (unsigned int number, unsigned int function);
void fatal_error	 (unsigned int error_code);
void show_startup_phase  (int phase);


#endif /* _PN62_H_ */
