1db977abfSKumar Gala /* 2db977abfSKumar Gala * Copyright 2009-2010 Freescale Semiconductor, Inc. 3db977abfSKumar Gala * 4db977abfSKumar Gala * See file CREDITS for list of people who contributed to this 5db977abfSKumar Gala * project. 6db977abfSKumar Gala * 7db977abfSKumar Gala * This program is free software; you can redistribute it and/or 8db977abfSKumar Gala * modify it under the terms of the GNU General Public License as 9db977abfSKumar Gala * published by the Free Software Foundation; either version 2 of 10db977abfSKumar Gala * the License, or (at your option) any later version. 11db977abfSKumar Gala * 12db977abfSKumar Gala * This program is distributed in the hope that it will be useful, 13db977abfSKumar Gala * but WITHOUT ANY WARRANTY; without even the implied warranty of 14db977abfSKumar Gala * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15db977abfSKumar Gala * GNU General Public License for more details. 16db977abfSKumar Gala * 17db977abfSKumar Gala * You should have received a copy of the GNU General Public License 18db977abfSKumar Gala * along with this program; if not, write to the Free Software 19db977abfSKumar Gala * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 20db977abfSKumar Gala * MA 02111-1307 USA 21db977abfSKumar Gala */ 22db977abfSKumar Gala 23db977abfSKumar Gala #ifndef _FSL_LIODN_H_ 24db977abfSKumar Gala #define _FSL_LIODN_H_ 25db977abfSKumar Gala 26db977abfSKumar Gala #include <asm/types.h> 27db977abfSKumar Gala 28db977abfSKumar Gala struct liodn_id_table { 29db977abfSKumar Gala const char * compat; 30db977abfSKumar Gala u32 id[2]; 31db977abfSKumar Gala u8 num_ids; 32db977abfSKumar Gala phys_addr_t compat_offset; 33db977abfSKumar Gala unsigned long reg_offset; 34db977abfSKumar Gala }; 35db977abfSKumar Gala 36db977abfSKumar Gala extern u32 get_ppid_liodn(int ppid_tbl_idx, int ppid); 37db977abfSKumar Gala extern void set_liodns(void); 38db977abfSKumar Gala extern void fdt_fixup_liodn(void *blob); 39db977abfSKumar Gala 40db977abfSKumar Gala #define SET_LIODN_BASE_1(idA) \ 41db977abfSKumar Gala { .id = { idA }, .num_ids = 1, } 42db977abfSKumar Gala 43db977abfSKumar Gala #define SET_LIODN_BASE_2(idA, idB) \ 44db977abfSKumar Gala { .id = { idA, idB }, .num_ids = 2 } 45db977abfSKumar Gala 46db977abfSKumar Gala #define SET_LIODN_ENTRY_1(name, idA, off, compatoff) \ 47db977abfSKumar Gala { .compat = name, \ 48db977abfSKumar Gala .id = { idA }, .num_ids = 1, \ 49db977abfSKumar Gala .reg_offset = off + CONFIG_SYS_CCSRBAR, \ 50db977abfSKumar Gala .compat_offset = compatoff + CONFIG_SYS_CCSRBAR_PHYS, \ 51db977abfSKumar Gala } 52db977abfSKumar Gala 53db977abfSKumar Gala #define SET_LIODN_ENTRY_2(name, idA, idB, off, compatoff) \ 54db977abfSKumar Gala { .compat = name, \ 55db977abfSKumar Gala .id = { idA, idB }, .num_ids = 2, \ 56db977abfSKumar Gala .reg_offset = off + CONFIG_SYS_CCSRBAR, \ 57db977abfSKumar Gala .compat_offset = compatoff + CONFIG_SYS_CCSRBAR_PHYS, \ 58db977abfSKumar Gala } 59db977abfSKumar Gala 60db977abfSKumar Gala #define SET_GUTS_LIODN(compat, liodn, name, compatoff) \ 61db977abfSKumar Gala SET_LIODN_ENTRY_1(compat, liodn, \ 62db977abfSKumar Gala offsetof(ccsr_gur_t, name) + CONFIG_SYS_MPC85xx_GUTS_OFFSET, \ 63db977abfSKumar Gala compatoff) 64db977abfSKumar Gala 65db977abfSKumar Gala #define SET_USB_LIODN(usbNum, compat, liodn) \ 66db977abfSKumar Gala SET_GUTS_LIODN(compat, liodn, usb##usbNum##liodnr,\ 67db977abfSKumar Gala CONFIG_SYS_MPC85xx_USB##usbNum##_OFFSET) 68db977abfSKumar Gala 69db977abfSKumar Gala #define SET_SATA_LIODN(sataNum, liodn) \ 70db977abfSKumar Gala SET_GUTS_LIODN("fsl,pq-sata-v2", liodn, sata##sataNum##liodnr,\ 71db977abfSKumar Gala CONFIG_SYS_MPC85xx_SATA##sataNum##_OFFSET) 72db977abfSKumar Gala 73db977abfSKumar Gala #define SET_PCI_LIODN(pciNum, liodn) \ 74db977abfSKumar Gala SET_GUTS_LIODN("fsl,p4080-pcie", liodn, pex##pciNum##liodnr,\ 75db977abfSKumar Gala CONFIG_SYS_MPC85xx_PCIE##pciNum##_OFFSET) 76db977abfSKumar Gala 77db977abfSKumar Gala /* reg nodes for DMA start @ 0x300 */ 78db977abfSKumar Gala #define SET_DMA_LIODN(dmaNum, liodn) \ 79db977abfSKumar Gala SET_GUTS_LIODN("fsl,eloplus-dma", liodn, dma##dmaNum##liodnr,\ 80db977abfSKumar Gala CONFIG_SYS_MPC85xx_DMA##dmaNum##_OFFSET + 0x300) 81db977abfSKumar Gala 82db977abfSKumar Gala #define SET_SDHC_LIODN(sdhcNum, liodn) \ 83db977abfSKumar Gala SET_GUTS_LIODN("fsl,esdhc", liodn, sdmmc##sdhcNum##liodnr,\ 84db977abfSKumar Gala CONFIG_SYS_MPC85xx_ESDHC_OFFSET) 85db977abfSKumar Gala 86db977abfSKumar Gala #define SET_QMAN_LIODN(liodn) \ 87db977abfSKumar Gala SET_LIODN_ENTRY_1("fsl,qman", liodn, offsetof(ccsr_qman_t, liodnr) + \ 88db977abfSKumar Gala CONFIG_SYS_FSL_CORENET_QMAN_OFFSET, \ 89db977abfSKumar Gala CONFIG_SYS_FSL_CORENET_QMAN_OFFSET) 90db977abfSKumar Gala 91db977abfSKumar Gala #define SET_BMAN_LIODN(liodn) \ 92db977abfSKumar Gala SET_LIODN_ENTRY_1("fsl,bman", liodn, offsetof(ccsr_bman_t, liodnr) + \ 93db977abfSKumar Gala CONFIG_SYS_FSL_CORENET_BMAN_OFFSET, \ 94db977abfSKumar Gala CONFIG_SYS_FSL_CORENET_BMAN_OFFSET) 95db977abfSKumar Gala 96db977abfSKumar Gala #define SET_PME_LIODN(liodn) \ 97db977abfSKumar Gala SET_LIODN_ENTRY_1("fsl,pme", liodn, offsetof(ccsr_pme_t, liodnr) + \ 98db977abfSKumar Gala CONFIG_SYS_FSL_CORENET_PME_OFFSET, \ 99db977abfSKumar Gala CONFIG_SYS_FSL_CORENET_PME_OFFSET) 100db977abfSKumar Gala 101db977abfSKumar Gala /* -1 from portID due to how immap has the registers */ 102db977abfSKumar Gala #define FM_PPID_RX_PORT_OFFSET(fmNum, portID) \ 103db977abfSKumar Gala CONFIG_SYS_FSL_FM##fmNum##_OFFSET + \ 104db977abfSKumar Gala offsetof(struct ccsr_fman, fm_bmi_common.fmbm_ppid[portID - 1]) 105db977abfSKumar Gala 106db977abfSKumar Gala /* enetNum is 0, 1, 2... so we + 8 for 1g to get to HW Port ID */ 107db977abfSKumar Gala #define SET_FMAN_RX_1G_LIODN(fmNum, enetNum, liodn) \ 108db977abfSKumar Gala SET_LIODN_ENTRY_1("fsl,fman-port-1g-rx", liodn, \ 109db977abfSKumar Gala FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 8), \ 110db977abfSKumar Gala CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_1G_OFFSET) \ 111db977abfSKumar Gala 112db977abfSKumar Gala /* enetNum is 0, 1, 2... so we + 16 for 10g to get to HW Port ID */ 113db977abfSKumar Gala #define SET_FMAN_RX_10G_LIODN(fmNum, enetNum, liodn) \ 114db977abfSKumar Gala SET_LIODN_ENTRY_1("fsl,fman-port-10g-rx", liodn, \ 115db977abfSKumar Gala FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 16), \ 116db977abfSKumar Gala CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_10G_OFFSET) \ 117db977abfSKumar Gala 118*ed062e0fSKumar Gala #define SET_SEC_JR_LIODN_ENTRY(jrNum, liodnA, liodnB) \ 119*ed062e0fSKumar Gala SET_LIODN_ENTRY_2("fsl,sec4.0-job-ring", liodnA, liodnB,\ 120*ed062e0fSKumar Gala offsetof(ccsr_sec_t, jrliodnr[jrNum].ls) + \ 121db977abfSKumar Gala CONFIG_SYS_FSL_SEC_OFFSET, \ 122*ed062e0fSKumar Gala CONFIG_SYS_FSL_SEC_OFFSET + 0x1000 + 0x1000 * jrNum) 123db977abfSKumar Gala 124db977abfSKumar Gala /* This is a bit evil since we treat rtic param as both a string & hex value */ 125db977abfSKumar Gala #define SET_SEC_RTIC_LIODN_ENTRY(rtic, liodnA) \ 126db977abfSKumar Gala SET_LIODN_ENTRY_1("fsl,sec4.0-rtic-memory", \ 127db977abfSKumar Gala liodnA, \ 128db977abfSKumar Gala offsetof(ccsr_sec_t, rticliodnr[0x##rtic-0xa].ls) + \ 129db977abfSKumar Gala CONFIG_SYS_FSL_SEC_OFFSET, \ 130db977abfSKumar Gala CONFIG_SYS_FSL_SEC_OFFSET + 0x6100 + 0x20 * (0x##rtic-0xa)) 131db977abfSKumar Gala 132db977abfSKumar Gala #define SET_SEC_DECO_LIODN_ENTRY(num, liodnA, liodnB) \ 133db977abfSKumar Gala SET_LIODN_ENTRY_2(NULL, liodnA, liodnB, \ 134db977abfSKumar Gala offsetof(ccsr_sec_t, decoliodnr[num].ls) + \ 135db977abfSKumar Gala CONFIG_SYS_FSL_SEC_OFFSET, 0) 136db977abfSKumar Gala 137db977abfSKumar Gala extern struct liodn_id_table liodn_tbl[], liodn_bases[], sec_liodn_tbl[]; 138db977abfSKumar Gala extern struct liodn_id_table fman1_liodn_tbl[], fman2_liodn_tbl[]; 139db977abfSKumar Gala extern int liodn_tbl_sz, sec_liodn_tbl_sz; 140db977abfSKumar Gala extern int fman1_liodn_tbl_sz, fman2_liodn_tbl_sz; 141db977abfSKumar Gala 142db977abfSKumar Gala #endif 143