xref: /rk3399_rockchip-uboot/include/faraday/ftpci100.h (revision 326ea986ac150acdc7656d57fca647db80b50158)
18599515fSGabor Juhos /*
28599515fSGabor Juhos  * Faraday FTPCI100 PCI Bridge Controller Device Driver Implementation
38599515fSGabor Juhos  *
48599515fSGabor Juhos  * Copyright (C) 2010 Andes Technology Corporation
58599515fSGabor Juhos  * Gavin Guo, Andes Technology Corporation <gavinguo@andestech.com>
68599515fSGabor Juhos  * Macpaul Lin, Andes Technology Corporation <macpaul@andestech.com>
78599515fSGabor Juhos  *
8*aaf5e825STom Rini  * SPDX-License-Identifier:	GPL-2.0+
98599515fSGabor Juhos  */
108599515fSGabor Juhos 
118599515fSGabor Juhos #ifndef __FTPCI100_H
128599515fSGabor Juhos #define __FTPCI100_H
138599515fSGabor Juhos 
148599515fSGabor Juhos /* AHB Control Registers */
158599515fSGabor Juhos struct ftpci100_ahbc {
168599515fSGabor Juhos 	unsigned int iosize;		/* 0x00 - I/O Space Size Signal */
178599515fSGabor Juhos 	unsigned int prot;		/* 0x04 - AHB Protection */
188599515fSGabor Juhos 	unsigned int rsved[8];		/* 0x08-0x24 - Reserved */
198599515fSGabor Juhos 	unsigned int conf;		/* 0x28 - PCI Configuration */
208599515fSGabor Juhos 	unsigned int data;		/* 0x2c - PCI Configuration DATA */
218599515fSGabor Juhos };
228599515fSGabor Juhos 
238599515fSGabor Juhos /*
248599515fSGabor Juhos  * FTPCI100_IOSIZE_REG's constant definitions
258599515fSGabor Juhos  */
268599515fSGabor Juhos #define FTPCI100_BASE_IO_SIZE(x)	(ffs(x) - 1)	/* 1M - 2048M */
278599515fSGabor Juhos 
288599515fSGabor Juhos /*
298599515fSGabor Juhos  * PCI Configuration Register
308599515fSGabor Juhos  */
318599515fSGabor Juhos #define PCI_INT_MASK			0x4c
328599515fSGabor Juhos #define PCI_MEM_BASE_SIZE1		0x50
338599515fSGabor Juhos #define PCI_MEM_BASE_SIZE2		0x54
348599515fSGabor Juhos #define PCI_MEM_BASE_SIZE3		0x58
358599515fSGabor Juhos 
368599515fSGabor Juhos /*
378599515fSGabor Juhos  * PCI_INT_MASK's bit definitions
388599515fSGabor Juhos  */
398599515fSGabor Juhos #define PCI_INTA_ENABLE			(1 << 22)
408599515fSGabor Juhos #define PCI_INTB_ENABLE			(1 << 23)
418599515fSGabor Juhos #define PCI_INTC_ENABLE			(1 << 24)
428599515fSGabor Juhos #define PCI_INTD_ENABLE			(1 << 25)
438599515fSGabor Juhos 
448599515fSGabor Juhos /*
458599515fSGabor Juhos  * PCI_MEM_BASE_SIZE1's constant definitions
468599515fSGabor Juhos  */
478599515fSGabor Juhos #define FTPCI100_BASE_ADR_SIZE(x)	((ffs(x) - 1) << 16)	/* 1M - 2048M */
488599515fSGabor Juhos 
498599515fSGabor Juhos #define FTPCI100_MAX_FUNCTIONS		20
508599515fSGabor Juhos #define PCI_IRQ_LINES			4
518599515fSGabor Juhos 
528599515fSGabor Juhos #define MAX_BUS_NUM			256
538599515fSGabor Juhos #define MAX_DEV_NUM			32
548599515fSGabor Juhos #define MAX_FUN_NUM			8
558599515fSGabor Juhos 
568599515fSGabor Juhos #define PCI_MAX_BAR_PER_FUNC		6
578599515fSGabor Juhos 
588599515fSGabor Juhos /*
598599515fSGabor Juhos  * PCI_MEM_SIZE
608599515fSGabor Juhos  */
618599515fSGabor Juhos #define FTPCI100_MEM_SIZE(x)		(ffs(x) << 24)
628599515fSGabor Juhos 
638599515fSGabor Juhos /* This definition is used by pci_ftpci_init() */
648599515fSGabor Juhos #define FTPCI100_BRIDGE_VENDORID		0x159b
658599515fSGabor Juhos #define FTPCI100_BRIDGE_DEVICEID		0x4321
668599515fSGabor Juhos 
678599515fSGabor Juhos void pci_ftpci_init(void);
688599515fSGabor Juhos 
698599515fSGabor Juhos struct pcibar {
708599515fSGabor Juhos 	unsigned int size;
718599515fSGabor Juhos 	unsigned int addr;
728599515fSGabor Juhos };
738599515fSGabor Juhos 
748599515fSGabor Juhos struct pci_config {
758599515fSGabor Juhos 	unsigned int bus;
768599515fSGabor Juhos 	unsigned int dev;				/* device */
778599515fSGabor Juhos 	unsigned int func;
788599515fSGabor Juhos 	unsigned int pin;
798599515fSGabor Juhos 	unsigned short v_id;				/* vendor id */
808599515fSGabor Juhos 	unsigned short d_id;				/* device id */
818599515fSGabor Juhos 	struct pcibar bar[PCI_MAX_BAR_PER_FUNC + 1];
828599515fSGabor Juhos };
838599515fSGabor Juhos 
848599515fSGabor Juhos #endif
85