Path: blob/master/arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h
17956 views
/*1* arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h2*3* Register definitions for IXP4xx chipset. This file contains4* register location and bit definitions only. Platform specific5* definitions and helper function declarations are in platform.h6* and machine-name.h.7*8* Copyright (C) 2002 Intel Corporation.9* Copyright (C) 2003-2004 MontaVista Software, Inc.10*11* This program is free software; you can redistribute it and/or modify12* it under the terms of the GNU General Public License version 2 as13* published by the Free Software Foundation.14*15*/1617#ifndef _ASM_ARM_IXP4XX_H_18#define _ASM_ARM_IXP4XX_H_1920/*21* IXP4xx Linux Memory Map:22*23* Phy Size Virt Description24* =========================================================================25*26* 0x00000000 0x10000000(max) PAGE_OFFSET System RAM27*28* 0x48000000 0x04000000 ioremap'd PCI Memory Space29*30* 0x50000000 0x10000000 ioremap'd EXP BUS31*32* 0x6000000 0x00004000 ioremap'd QMgr33*34* 0xC0000000 0x00001000 0xffbff000 PCI CFG35*36* 0xC4000000 0x00001000 0xffbfe000 EXP CFG37*38* 0xC8000000 0x00013000 0xffbeb000 On-Chip Peripherals39*/4041/*42* Queue Manager43*/44#define IXP4XX_QMGR_BASE_PHYS (0x60000000)45#define IXP4XX_QMGR_REGION_SIZE (0x00004000)4647/*48* Expansion BUS Configuration registers49*/50#define IXP4XX_EXP_CFG_BASE_PHYS (0xC4000000)51#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBFE000)52#define IXP4XX_EXP_CFG_REGION_SIZE (0x00001000)5354/*55* PCI Config registers56*/57#define IXP4XX_PCI_CFG_BASE_PHYS (0xC0000000)58#define IXP4XX_PCI_CFG_BASE_VIRT (0xFFBFF000)59#define IXP4XX_PCI_CFG_REGION_SIZE (0x00001000)6061/*62* Peripheral space63*/64#define IXP4XX_PERIPHERAL_BASE_PHYS (0xC8000000)65#define IXP4XX_PERIPHERAL_BASE_VIRT (0xFFBEB000)66#define IXP4XX_PERIPHERAL_REGION_SIZE (0x00013000)6768/*69* Debug UART70*71* This is basically a remap of UART1 into a region that is section72* aligned so that it * can be used with the low-level debug code.73*/74#define IXP4XX_DEBUG_UART_BASE_PHYS (0xC8000000)75#define IXP4XX_DEBUG_UART_BASE_VIRT (0xffb00000)76#define IXP4XX_DEBUG_UART_REGION_SIZE (0x00001000)7778#define IXP4XX_EXP_CS0_OFFSET 0x0079#define IXP4XX_EXP_CS1_OFFSET 0x0480#define IXP4XX_EXP_CS2_OFFSET 0x0881#define IXP4XX_EXP_CS3_OFFSET 0x0C82#define IXP4XX_EXP_CS4_OFFSET 0x1083#define IXP4XX_EXP_CS5_OFFSET 0x1484#define IXP4XX_EXP_CS6_OFFSET 0x1885#define IXP4XX_EXP_CS7_OFFSET 0x1C86#define IXP4XX_EXP_CFG0_OFFSET 0x2087#define IXP4XX_EXP_CFG1_OFFSET 0x2488#define IXP4XX_EXP_CFG2_OFFSET 0x2889#define IXP4XX_EXP_CFG3_OFFSET 0x2C9091/*92* Expansion Bus Controller registers.93*/94#define IXP4XX_EXP_REG(x) ((volatile u32 *)(IXP4XX_EXP_CFG_BASE_VIRT+(x)))9596#define IXP4XX_EXP_CS0 IXP4XX_EXP_REG(IXP4XX_EXP_CS0_OFFSET)97#define IXP4XX_EXP_CS1 IXP4XX_EXP_REG(IXP4XX_EXP_CS1_OFFSET)98#define IXP4XX_EXP_CS2 IXP4XX_EXP_REG(IXP4XX_EXP_CS2_OFFSET)99#define IXP4XX_EXP_CS3 IXP4XX_EXP_REG(IXP4XX_EXP_CS3_OFFSET)100#define IXP4XX_EXP_CS4 IXP4XX_EXP_REG(IXP4XX_EXP_CS4_OFFSET)101#define IXP4XX_EXP_CS5 IXP4XX_EXP_REG(IXP4XX_EXP_CS5_OFFSET)102#define IXP4XX_EXP_CS6 IXP4XX_EXP_REG(IXP4XX_EXP_CS6_OFFSET)103#define IXP4XX_EXP_CS7 IXP4XX_EXP_REG(IXP4XX_EXP_CS7_OFFSET)104105#define IXP4XX_EXP_CFG0 IXP4XX_EXP_REG(IXP4XX_EXP_CFG0_OFFSET)106#define IXP4XX_EXP_CFG1 IXP4XX_EXP_REG(IXP4XX_EXP_CFG1_OFFSET)107#define IXP4XX_EXP_CFG2 IXP4XX_EXP_REG(IXP4XX_EXP_CFG2_OFFSET)108#define IXP4XX_EXP_CFG3 IXP4XX_EXP_REG(IXP4XX_EXP_CFG3_OFFSET)109110111/*112* Peripheral Space Register Region Base Addresses113*/114#define IXP4XX_UART1_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x0000)115#define IXP4XX_UART2_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x1000)116#define IXP4XX_PMU_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x2000)117#define IXP4XX_INTC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x3000)118#define IXP4XX_GPIO_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x4000)119#define IXP4XX_TIMER_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x5000)120#define IXP4XX_NPEA_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x6000)121#define IXP4XX_NPEB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x7000)122#define IXP4XX_NPEC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x8000)123#define IXP4XX_EthB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x9000)124#define IXP4XX_EthC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xA000)125#define IXP4XX_USB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xB000)126/* ixp46X only */127#define IXP4XX_EthA_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xC000)128#define IXP4XX_EthB1_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xD000)129#define IXP4XX_EthB2_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xE000)130#define IXP4XX_EthB3_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xF000)131#define IXP4XX_TIMESYNC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x10000)132#define IXP4XX_I2C_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x11000)133#define IXP4XX_SSP_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x12000)134135136#define IXP4XX_UART1_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x0000)137#define IXP4XX_UART2_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x1000)138#define IXP4XX_PMU_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x2000)139#define IXP4XX_INTC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x3000)140#define IXP4XX_GPIO_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x4000)141#define IXP4XX_TIMER_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x5000)142#define IXP4XX_NPEA_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x6000)143#define IXP4XX_NPEB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x7000)144#define IXP4XX_NPEC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x8000)145#define IXP4XX_EthB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x9000)146#define IXP4XX_EthC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xA000)147#define IXP4XX_USB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xB000)148/* ixp46X only */149#define IXP4XX_EthA_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xC000)150#define IXP4XX_EthB1_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xD000)151#define IXP4XX_EthB2_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xE000)152#define IXP4XX_EthB3_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xF000)153#define IXP4XX_TIMESYNC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x10000)154#define IXP4XX_I2C_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x11000)155#define IXP4XX_SSP_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x12000)156157/*158* Constants to make it easy to access Interrupt Controller registers159*/160#define IXP4XX_ICPR_OFFSET 0x00 /* Interrupt Status */161#define IXP4XX_ICMR_OFFSET 0x04 /* Interrupt Enable */162#define IXP4XX_ICLR_OFFSET 0x08 /* Interrupt IRQ/FIQ Select */163#define IXP4XX_ICIP_OFFSET 0x0C /* IRQ Status */164#define IXP4XX_ICFP_OFFSET 0x10 /* FIQ Status */165#define IXP4XX_ICHR_OFFSET 0x14 /* Interrupt Priority */166#define IXP4XX_ICIH_OFFSET 0x18 /* IRQ Highest Pri Int */167#define IXP4XX_ICFH_OFFSET 0x1C /* FIQ Highest Pri Int */168169/*170* IXP465-only171*/172#define IXP4XX_ICPR2_OFFSET 0x20 /* Interrupt Status 2 */173#define IXP4XX_ICMR2_OFFSET 0x24 /* Interrupt Enable 2 */174#define IXP4XX_ICLR2_OFFSET 0x28 /* Interrupt IRQ/FIQ Select 2 */175#define IXP4XX_ICIP2_OFFSET 0x2C /* IRQ Status */176#define IXP4XX_ICFP2_OFFSET 0x30 /* FIQ Status */177#define IXP4XX_ICEEN_OFFSET 0x34 /* Error High Pri Enable */178179180/*181* Interrupt Controller Register Definitions.182*/183184#define IXP4XX_INTC_REG(x) ((volatile u32 *)(IXP4XX_INTC_BASE_VIRT+(x)))185186#define IXP4XX_ICPR IXP4XX_INTC_REG(IXP4XX_ICPR_OFFSET)187#define IXP4XX_ICMR IXP4XX_INTC_REG(IXP4XX_ICMR_OFFSET)188#define IXP4XX_ICLR IXP4XX_INTC_REG(IXP4XX_ICLR_OFFSET)189#define IXP4XX_ICIP IXP4XX_INTC_REG(IXP4XX_ICIP_OFFSET)190#define IXP4XX_ICFP IXP4XX_INTC_REG(IXP4XX_ICFP_OFFSET)191#define IXP4XX_ICHR IXP4XX_INTC_REG(IXP4XX_ICHR_OFFSET)192#define IXP4XX_ICIH IXP4XX_INTC_REG(IXP4XX_ICIH_OFFSET)193#define IXP4XX_ICFH IXP4XX_INTC_REG(IXP4XX_ICFH_OFFSET)194#define IXP4XX_ICPR2 IXP4XX_INTC_REG(IXP4XX_ICPR2_OFFSET)195#define IXP4XX_ICMR2 IXP4XX_INTC_REG(IXP4XX_ICMR2_OFFSET)196#define IXP4XX_ICLR2 IXP4XX_INTC_REG(IXP4XX_ICLR2_OFFSET)197#define IXP4XX_ICIP2 IXP4XX_INTC_REG(IXP4XX_ICIP2_OFFSET)198#define IXP4XX_ICFP2 IXP4XX_INTC_REG(IXP4XX_ICFP2_OFFSET)199#define IXP4XX_ICEEN IXP4XX_INTC_REG(IXP4XX_ICEEN_OFFSET)200201/*202* Constants to make it easy to access GPIO registers203*/204#define IXP4XX_GPIO_GPOUTR_OFFSET 0x00205#define IXP4XX_GPIO_GPOER_OFFSET 0x04206#define IXP4XX_GPIO_GPINR_OFFSET 0x08207#define IXP4XX_GPIO_GPISR_OFFSET 0x0C208#define IXP4XX_GPIO_GPIT1R_OFFSET 0x10209#define IXP4XX_GPIO_GPIT2R_OFFSET 0x14210#define IXP4XX_GPIO_GPCLKR_OFFSET 0x18211#define IXP4XX_GPIO_GPDBSELR_OFFSET 0x1C212213/*214* GPIO Register Definitions.215* [Only perform 32bit reads/writes]216*/217#define IXP4XX_GPIO_REG(x) ((volatile u32 *)(IXP4XX_GPIO_BASE_VIRT+(x)))218219#define IXP4XX_GPIO_GPOUTR IXP4XX_GPIO_REG(IXP4XX_GPIO_GPOUTR_OFFSET)220#define IXP4XX_GPIO_GPOER IXP4XX_GPIO_REG(IXP4XX_GPIO_GPOER_OFFSET)221#define IXP4XX_GPIO_GPINR IXP4XX_GPIO_REG(IXP4XX_GPIO_GPINR_OFFSET)222#define IXP4XX_GPIO_GPISR IXP4XX_GPIO_REG(IXP4XX_GPIO_GPISR_OFFSET)223#define IXP4XX_GPIO_GPIT1R IXP4XX_GPIO_REG(IXP4XX_GPIO_GPIT1R_OFFSET)224#define IXP4XX_GPIO_GPIT2R IXP4XX_GPIO_REG(IXP4XX_GPIO_GPIT2R_OFFSET)225#define IXP4XX_GPIO_GPCLKR IXP4XX_GPIO_REG(IXP4XX_GPIO_GPCLKR_OFFSET)226#define IXP4XX_GPIO_GPDBSELR IXP4XX_GPIO_REG(IXP4XX_GPIO_GPDBSELR_OFFSET)227228/*229* GPIO register bit definitions230*/231232/* Interrupt styles233*/234#define IXP4XX_GPIO_STYLE_ACTIVE_HIGH 0x0235#define IXP4XX_GPIO_STYLE_ACTIVE_LOW 0x1236#define IXP4XX_GPIO_STYLE_RISING_EDGE 0x2237#define IXP4XX_GPIO_STYLE_FALLING_EDGE 0x3238#define IXP4XX_GPIO_STYLE_TRANSITIONAL 0x4239240/*241* Mask used to clear interrupt styles242*/243#define IXP4XX_GPIO_STYLE_CLEAR 0x7244#define IXP4XX_GPIO_STYLE_SIZE 3245246/*247* Constants to make it easy to access Timer Control/Status registers248*/249#define IXP4XX_OSTS_OFFSET 0x00 /* Continious TimeStamp */250#define IXP4XX_OST1_OFFSET 0x04 /* Timer 1 Timestamp */251#define IXP4XX_OSRT1_OFFSET 0x08 /* Timer 1 Reload */252#define IXP4XX_OST2_OFFSET 0x0C /* Timer 2 Timestamp */253#define IXP4XX_OSRT2_OFFSET 0x10 /* Timer 2 Reload */254#define IXP4XX_OSWT_OFFSET 0x14 /* Watchdog Timer */255#define IXP4XX_OSWE_OFFSET 0x18 /* Watchdog Enable */256#define IXP4XX_OSWK_OFFSET 0x1C /* Watchdog Key */257#define IXP4XX_OSST_OFFSET 0x20 /* Timer Status */258259/*260* Operating System Timer Register Definitions.261*/262263#define IXP4XX_TIMER_REG(x) ((volatile u32 *)(IXP4XX_TIMER_BASE_VIRT+(x)))264265#define IXP4XX_OSTS IXP4XX_TIMER_REG(IXP4XX_OSTS_OFFSET)266#define IXP4XX_OST1 IXP4XX_TIMER_REG(IXP4XX_OST1_OFFSET)267#define IXP4XX_OSRT1 IXP4XX_TIMER_REG(IXP4XX_OSRT1_OFFSET)268#define IXP4XX_OST2 IXP4XX_TIMER_REG(IXP4XX_OST2_OFFSET)269#define IXP4XX_OSRT2 IXP4XX_TIMER_REG(IXP4XX_OSRT2_OFFSET)270#define IXP4XX_OSWT IXP4XX_TIMER_REG(IXP4XX_OSWT_OFFSET)271#define IXP4XX_OSWE IXP4XX_TIMER_REG(IXP4XX_OSWE_OFFSET)272#define IXP4XX_OSWK IXP4XX_TIMER_REG(IXP4XX_OSWK_OFFSET)273#define IXP4XX_OSST IXP4XX_TIMER_REG(IXP4XX_OSST_OFFSET)274275/*276* Timer register values and bit definitions277*/278#define IXP4XX_OST_ENABLE 0x00000001279#define IXP4XX_OST_ONE_SHOT 0x00000002280/* Low order bits of reload value ignored */281#define IXP4XX_OST_RELOAD_MASK 0x00000003282#define IXP4XX_OST_DISABLED 0x00000000283#define IXP4XX_OSST_TIMER_1_PEND 0x00000001284#define IXP4XX_OSST_TIMER_2_PEND 0x00000002285#define IXP4XX_OSST_TIMER_TS_PEND 0x00000004286#define IXP4XX_OSST_TIMER_WDOG_PEND 0x00000008287#define IXP4XX_OSST_TIMER_WARM_RESET 0x00000010288289#define IXP4XX_WDT_KEY 0x0000482E290291#define IXP4XX_WDT_RESET_ENABLE 0x00000001292#define IXP4XX_WDT_IRQ_ENABLE 0x00000002293#define IXP4XX_WDT_COUNT_ENABLE 0x00000004294295296/*297* Constants to make it easy to access PCI Control/Status registers298*/299#define PCI_NP_AD_OFFSET 0x00300#define PCI_NP_CBE_OFFSET 0x04301#define PCI_NP_WDATA_OFFSET 0x08302#define PCI_NP_RDATA_OFFSET 0x0c303#define PCI_CRP_AD_CBE_OFFSET 0x10304#define PCI_CRP_WDATA_OFFSET 0x14305#define PCI_CRP_RDATA_OFFSET 0x18306#define PCI_CSR_OFFSET 0x1c307#define PCI_ISR_OFFSET 0x20308#define PCI_INTEN_OFFSET 0x24309#define PCI_DMACTRL_OFFSET 0x28310#define PCI_AHBMEMBASE_OFFSET 0x2c311#define PCI_AHBIOBASE_OFFSET 0x30312#define PCI_PCIMEMBASE_OFFSET 0x34313#define PCI_AHBDOORBELL_OFFSET 0x38314#define PCI_PCIDOORBELL_OFFSET 0x3C315#define PCI_ATPDMA0_AHBADDR_OFFSET 0x40316#define PCI_ATPDMA0_PCIADDR_OFFSET 0x44317#define PCI_ATPDMA0_LENADDR_OFFSET 0x48318#define PCI_ATPDMA1_AHBADDR_OFFSET 0x4C319#define PCI_ATPDMA1_PCIADDR_OFFSET 0x50320#define PCI_ATPDMA1_LENADDR_OFFSET 0x54321322/*323* PCI Control/Status Registers324*/325#define IXP4XX_PCI_CSR(x) ((volatile u32 *)(IXP4XX_PCI_CFG_BASE_VIRT+(x)))326327#define PCI_NP_AD IXP4XX_PCI_CSR(PCI_NP_AD_OFFSET)328#define PCI_NP_CBE IXP4XX_PCI_CSR(PCI_NP_CBE_OFFSET)329#define PCI_NP_WDATA IXP4XX_PCI_CSR(PCI_NP_WDATA_OFFSET)330#define PCI_NP_RDATA IXP4XX_PCI_CSR(PCI_NP_RDATA_OFFSET)331#define PCI_CRP_AD_CBE IXP4XX_PCI_CSR(PCI_CRP_AD_CBE_OFFSET)332#define PCI_CRP_WDATA IXP4XX_PCI_CSR(PCI_CRP_WDATA_OFFSET)333#define PCI_CRP_RDATA IXP4XX_PCI_CSR(PCI_CRP_RDATA_OFFSET)334#define PCI_CSR IXP4XX_PCI_CSR(PCI_CSR_OFFSET)335#define PCI_ISR IXP4XX_PCI_CSR(PCI_ISR_OFFSET)336#define PCI_INTEN IXP4XX_PCI_CSR(PCI_INTEN_OFFSET)337#define PCI_DMACTRL IXP4XX_PCI_CSR(PCI_DMACTRL_OFFSET)338#define PCI_AHBMEMBASE IXP4XX_PCI_CSR(PCI_AHBMEMBASE_OFFSET)339#define PCI_AHBIOBASE IXP4XX_PCI_CSR(PCI_AHBIOBASE_OFFSET)340#define PCI_PCIMEMBASE IXP4XX_PCI_CSR(PCI_PCIMEMBASE_OFFSET)341#define PCI_AHBDOORBELL IXP4XX_PCI_CSR(PCI_AHBDOORBELL_OFFSET)342#define PCI_PCIDOORBELL IXP4XX_PCI_CSR(PCI_PCIDOORBELL_OFFSET)343#define PCI_ATPDMA0_AHBADDR IXP4XX_PCI_CSR(PCI_ATPDMA0_AHBADDR_OFFSET)344#define PCI_ATPDMA0_PCIADDR IXP4XX_PCI_CSR(PCI_ATPDMA0_PCIADDR_OFFSET)345#define PCI_ATPDMA0_LENADDR IXP4XX_PCI_CSR(PCI_ATPDMA0_LENADDR_OFFSET)346#define PCI_ATPDMA1_AHBADDR IXP4XX_PCI_CSR(PCI_ATPDMA1_AHBADDR_OFFSET)347#define PCI_ATPDMA1_PCIADDR IXP4XX_PCI_CSR(PCI_ATPDMA1_PCIADDR_OFFSET)348#define PCI_ATPDMA1_LENADDR IXP4XX_PCI_CSR(PCI_ATPDMA1_LENADDR_OFFSET)349350/*351* PCI register values and bit definitions352*/353354/* CSR bit definitions */355#define PCI_CSR_HOST 0x00000001356#define PCI_CSR_ARBEN 0x00000002357#define PCI_CSR_ADS 0x00000004358#define PCI_CSR_PDS 0x00000008359#define PCI_CSR_ABE 0x00000010360#define PCI_CSR_DBT 0x00000020361#define PCI_CSR_ASE 0x00000100362#define PCI_CSR_IC 0x00008000363364/* ISR (Interrupt status) Register bit definitions */365#define PCI_ISR_PSE 0x00000001366#define PCI_ISR_PFE 0x00000002367#define PCI_ISR_PPE 0x00000004368#define PCI_ISR_AHBE 0x00000008369#define PCI_ISR_APDC 0x00000010370#define PCI_ISR_PADC 0x00000020371#define PCI_ISR_ADB 0x00000040372#define PCI_ISR_PDB 0x00000080373374/* INTEN (Interrupt Enable) Register bit definitions */375#define PCI_INTEN_PSE 0x00000001376#define PCI_INTEN_PFE 0x00000002377#define PCI_INTEN_PPE 0x00000004378#define PCI_INTEN_AHBE 0x00000008379#define PCI_INTEN_APDC 0x00000010380#define PCI_INTEN_PADC 0x00000020381#define PCI_INTEN_ADB 0x00000040382#define PCI_INTEN_PDB 0x00000080383384/*385* Shift value for byte enable on NP cmd/byte enable register386*/387#define IXP4XX_PCI_NP_CBE_BESL 4388389/*390* PCI commands supported by NP access unit391*/392#define NP_CMD_IOREAD 0x2393#define NP_CMD_IOWRITE 0x3394#define NP_CMD_CONFIGREAD 0xa395#define NP_CMD_CONFIGWRITE 0xb396#define NP_CMD_MEMREAD 0x6397#define NP_CMD_MEMWRITE 0x7398399/*400* Constants for CRP access into local config space401*/402#define CRP_AD_CBE_BESL 20403#define CRP_AD_CBE_WRITE 0x00010000404405406/*407* USB Device Controller408*409* These are used by the USB gadget driver, so they don't follow the410* IXP4XX_ naming convetions.411*412*/413# define IXP4XX_USB_REG(x) (*((volatile u32 *)(x)))414415/* UDC Undocumented - Reserved1 */416#define UDC_RES1 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0004)417/* UDC Undocumented - Reserved2 */418#define UDC_RES2 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0008)419/* UDC Undocumented - Reserved3 */420#define UDC_RES3 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x000C)421/* UDC Control Register */422#define UDCCR IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0000)423/* UDC Endpoint 0 Control/Status Register */424#define UDCCS0 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0010)425/* UDC Endpoint 1 (IN) Control/Status Register */426#define UDCCS1 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0014)427/* UDC Endpoint 2 (OUT) Control/Status Register */428#define UDCCS2 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0018)429/* UDC Endpoint 3 (IN) Control/Status Register */430#define UDCCS3 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x001C)431/* UDC Endpoint 4 (OUT) Control/Status Register */432#define UDCCS4 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0020)433/* UDC Endpoint 5 (Interrupt) Control/Status Register */434#define UDCCS5 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0024)435/* UDC Endpoint 6 (IN) Control/Status Register */436#define UDCCS6 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0028)437/* UDC Endpoint 7 (OUT) Control/Status Register */438#define UDCCS7 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x002C)439/* UDC Endpoint 8 (IN) Control/Status Register */440#define UDCCS8 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0030)441/* UDC Endpoint 9 (OUT) Control/Status Register */442#define UDCCS9 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0034)443/* UDC Endpoint 10 (Interrupt) Control/Status Register */444#define UDCCS10 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0038)445/* UDC Endpoint 11 (IN) Control/Status Register */446#define UDCCS11 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x003C)447/* UDC Endpoint 12 (OUT) Control/Status Register */448#define UDCCS12 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0040)449/* UDC Endpoint 13 (IN) Control/Status Register */450#define UDCCS13 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0044)451/* UDC Endpoint 14 (OUT) Control/Status Register */452#define UDCCS14 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0048)453/* UDC Endpoint 15 (Interrupt) Control/Status Register */454#define UDCCS15 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x004C)455/* UDC Frame Number Register High */456#define UFNRH IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0060)457/* UDC Frame Number Register Low */458#define UFNRL IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0064)459/* UDC Byte Count Reg 2 */460#define UBCR2 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0068)461/* UDC Byte Count Reg 4 */462#define UBCR4 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x006c)463/* UDC Byte Count Reg 7 */464#define UBCR7 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0070)465/* UDC Byte Count Reg 9 */466#define UBCR9 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0074)467/* UDC Byte Count Reg 12 */468#define UBCR12 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0078)469/* UDC Byte Count Reg 14 */470#define UBCR14 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x007c)471/* UDC Endpoint 0 Data Register */472#define UDDR0 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0080)473/* UDC Endpoint 1 Data Register */474#define UDDR1 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0100)475/* UDC Endpoint 2 Data Register */476#define UDDR2 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0180)477/* UDC Endpoint 3 Data Register */478#define UDDR3 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0200)479/* UDC Endpoint 4 Data Register */480#define UDDR4 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0400)481/* UDC Endpoint 5 Data Register */482#define UDDR5 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x00A0)483/* UDC Endpoint 6 Data Register */484#define UDDR6 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0600)485/* UDC Endpoint 7 Data Register */486#define UDDR7 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0680)487/* UDC Endpoint 8 Data Register */488#define UDDR8 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0700)489/* UDC Endpoint 9 Data Register */490#define UDDR9 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0900)491/* UDC Endpoint 10 Data Register */492#define UDDR10 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x00C0)493/* UDC Endpoint 11 Data Register */494#define UDDR11 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0B00)495/* UDC Endpoint 12 Data Register */496#define UDDR12 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0B80)497/* UDC Endpoint 13 Data Register */498#define UDDR13 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0C00)499/* UDC Endpoint 14 Data Register */500#define UDDR14 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0E00)501/* UDC Endpoint 15 Data Register */502#define UDDR15 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x00E0)503/* UDC Interrupt Control Register 0 */504#define UICR0 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0050)505/* UDC Interrupt Control Register 1 */506#define UICR1 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0054)507/* UDC Status Interrupt Register 0 */508#define USIR0 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x0058)509/* UDC Status Interrupt Register 1 */510#define USIR1 IXP4XX_USB_REG(IXP4XX_USB_BASE_VIRT+0x005C)511512#define UDCCR_UDE (1 << 0) /* UDC enable */513#define UDCCR_UDA (1 << 1) /* UDC active */514#define UDCCR_RSM (1 << 2) /* Device resume */515#define UDCCR_RESIR (1 << 3) /* Resume interrupt request */516#define UDCCR_SUSIR (1 << 4) /* Suspend interrupt request */517#define UDCCR_SRM (1 << 5) /* Suspend/resume interrupt mask */518#define UDCCR_RSTIR (1 << 6) /* Reset interrupt request */519#define UDCCR_REM (1 << 7) /* Reset interrupt mask */520521#define UDCCS0_OPR (1 << 0) /* OUT packet ready */522#define UDCCS0_IPR (1 << 1) /* IN packet ready */523#define UDCCS0_FTF (1 << 2) /* Flush Tx FIFO */524#define UDCCS0_DRWF (1 << 3) /* Device remote wakeup feature */525#define UDCCS0_SST (1 << 4) /* Sent stall */526#define UDCCS0_FST (1 << 5) /* Force stall */527#define UDCCS0_RNE (1 << 6) /* Receive FIFO no empty */528#define UDCCS0_SA (1 << 7) /* Setup active */529530#define UDCCS_BI_TFS (1 << 0) /* Transmit FIFO service */531#define UDCCS_BI_TPC (1 << 1) /* Transmit packet complete */532#define UDCCS_BI_FTF (1 << 2) /* Flush Tx FIFO */533#define UDCCS_BI_TUR (1 << 3) /* Transmit FIFO underrun */534#define UDCCS_BI_SST (1 << 4) /* Sent stall */535#define UDCCS_BI_FST (1 << 5) /* Force stall */536#define UDCCS_BI_TSP (1 << 7) /* Transmit short packet */537538#define UDCCS_BO_RFS (1 << 0) /* Receive FIFO service */539#define UDCCS_BO_RPC (1 << 1) /* Receive packet complete */540#define UDCCS_BO_DME (1 << 3) /* DMA enable */541#define UDCCS_BO_SST (1 << 4) /* Sent stall */542#define UDCCS_BO_FST (1 << 5) /* Force stall */543#define UDCCS_BO_RNE (1 << 6) /* Receive FIFO not empty */544#define UDCCS_BO_RSP (1 << 7) /* Receive short packet */545546#define UDCCS_II_TFS (1 << 0) /* Transmit FIFO service */547#define UDCCS_II_TPC (1 << 1) /* Transmit packet complete */548#define UDCCS_II_FTF (1 << 2) /* Flush Tx FIFO */549#define UDCCS_II_TUR (1 << 3) /* Transmit FIFO underrun */550#define UDCCS_II_TSP (1 << 7) /* Transmit short packet */551552#define UDCCS_IO_RFS (1 << 0) /* Receive FIFO service */553#define UDCCS_IO_RPC (1 << 1) /* Receive packet complete */554#define UDCCS_IO_ROF (1 << 3) /* Receive overflow */555#define UDCCS_IO_DME (1 << 3) /* DMA enable */556#define UDCCS_IO_RNE (1 << 6) /* Receive FIFO not empty */557#define UDCCS_IO_RSP (1 << 7) /* Receive short packet */558559#define UDCCS_INT_TFS (1 << 0) /* Transmit FIFO service */560#define UDCCS_INT_TPC (1 << 1) /* Transmit packet complete */561#define UDCCS_INT_FTF (1 << 2) /* Flush Tx FIFO */562#define UDCCS_INT_TUR (1 << 3) /* Transmit FIFO underrun */563#define UDCCS_INT_SST (1 << 4) /* Sent stall */564#define UDCCS_INT_FST (1 << 5) /* Force stall */565#define UDCCS_INT_TSP (1 << 7) /* Transmit short packet */566567#define UICR0_IM0 (1 << 0) /* Interrupt mask ep 0 */568#define UICR0_IM1 (1 << 1) /* Interrupt mask ep 1 */569#define UICR0_IM2 (1 << 2) /* Interrupt mask ep 2 */570#define UICR0_IM3 (1 << 3) /* Interrupt mask ep 3 */571#define UICR0_IM4 (1 << 4) /* Interrupt mask ep 4 */572#define UICR0_IM5 (1 << 5) /* Interrupt mask ep 5 */573#define UICR0_IM6 (1 << 6) /* Interrupt mask ep 6 */574#define UICR0_IM7 (1 << 7) /* Interrupt mask ep 7 */575576#define UICR1_IM8 (1 << 0) /* Interrupt mask ep 8 */577#define UICR1_IM9 (1 << 1) /* Interrupt mask ep 9 */578#define UICR1_IM10 (1 << 2) /* Interrupt mask ep 10 */579#define UICR1_IM11 (1 << 3) /* Interrupt mask ep 11 */580#define UICR1_IM12 (1 << 4) /* Interrupt mask ep 12 */581#define UICR1_IM13 (1 << 5) /* Interrupt mask ep 13 */582#define UICR1_IM14 (1 << 6) /* Interrupt mask ep 14 */583#define UICR1_IM15 (1 << 7) /* Interrupt mask ep 15 */584585#define USIR0_IR0 (1 << 0) /* Interrupt request ep 0 */586#define USIR0_IR1 (1 << 1) /* Interrupt request ep 1 */587#define USIR0_IR2 (1 << 2) /* Interrupt request ep 2 */588#define USIR0_IR3 (1 << 3) /* Interrupt request ep 3 */589#define USIR0_IR4 (1 << 4) /* Interrupt request ep 4 */590#define USIR0_IR5 (1 << 5) /* Interrupt request ep 5 */591#define USIR0_IR6 (1 << 6) /* Interrupt request ep 6 */592#define USIR0_IR7 (1 << 7) /* Interrupt request ep 7 */593594#define USIR1_IR8 (1 << 0) /* Interrupt request ep 8 */595#define USIR1_IR9 (1 << 1) /* Interrupt request ep 9 */596#define USIR1_IR10 (1 << 2) /* Interrupt request ep 10 */597#define USIR1_IR11 (1 << 3) /* Interrupt request ep 11 */598#define USIR1_IR12 (1 << 4) /* Interrupt request ep 12 */599#define USIR1_IR13 (1 << 5) /* Interrupt request ep 13 */600#define USIR1_IR14 (1 << 6) /* Interrupt request ep 14 */601#define USIR1_IR15 (1 << 7) /* Interrupt request ep 15 */602603#define DCMD_LENGTH 0x01fff /* length mask (max = 8K - 1) */604605/* "fuse" bits of IXP_EXP_CFG2 */606/* All IXP4xx CPUs */607#define IXP4XX_FEATURE_RCOMP (1 << 0)608#define IXP4XX_FEATURE_USB_DEVICE (1 << 1)609#define IXP4XX_FEATURE_HASH (1 << 2)610#define IXP4XX_FEATURE_AES (1 << 3)611#define IXP4XX_FEATURE_DES (1 << 4)612#define IXP4XX_FEATURE_HDLC (1 << 5)613#define IXP4XX_FEATURE_AAL (1 << 6)614#define IXP4XX_FEATURE_HSS (1 << 7)615#define IXP4XX_FEATURE_UTOPIA (1 << 8)616#define IXP4XX_FEATURE_NPEB_ETH0 (1 << 9)617#define IXP4XX_FEATURE_NPEC_ETH (1 << 10)618#define IXP4XX_FEATURE_RESET_NPEA (1 << 11)619#define IXP4XX_FEATURE_RESET_NPEB (1 << 12)620#define IXP4XX_FEATURE_RESET_NPEC (1 << 13)621#define IXP4XX_FEATURE_PCI (1 << 14)622#define IXP4XX_FEATURE_UTOPIA_PHY_LIMIT (3 << 16)623#define IXP4XX_FEATURE_XSCALE_MAX_FREQ (3 << 22)624#define IXP42X_FEATURE_MASK (IXP4XX_FEATURE_RCOMP | \625IXP4XX_FEATURE_USB_DEVICE | \626IXP4XX_FEATURE_HASH | \627IXP4XX_FEATURE_AES | \628IXP4XX_FEATURE_DES | \629IXP4XX_FEATURE_HDLC | \630IXP4XX_FEATURE_AAL | \631IXP4XX_FEATURE_HSS | \632IXP4XX_FEATURE_UTOPIA | \633IXP4XX_FEATURE_NPEB_ETH0 | \634IXP4XX_FEATURE_NPEC_ETH | \635IXP4XX_FEATURE_RESET_NPEA | \636IXP4XX_FEATURE_RESET_NPEB | \637IXP4XX_FEATURE_RESET_NPEC | \638IXP4XX_FEATURE_PCI | \639IXP4XX_FEATURE_UTOPIA_PHY_LIMIT | \640IXP4XX_FEATURE_XSCALE_MAX_FREQ)641642643/* IXP43x/46x CPUs */644#define IXP4XX_FEATURE_ECC_TIMESYNC (1 << 15)645#define IXP4XX_FEATURE_USB_HOST (1 << 18)646#define IXP4XX_FEATURE_NPEA_ETH (1 << 19)647#define IXP43X_FEATURE_MASK (IXP42X_FEATURE_MASK | \648IXP4XX_FEATURE_ECC_TIMESYNC | \649IXP4XX_FEATURE_USB_HOST | \650IXP4XX_FEATURE_NPEA_ETH)651652/* IXP46x CPU (including IXP455) only */653#define IXP4XX_FEATURE_NPEB_ETH_1_TO_3 (1 << 20)654#define IXP4XX_FEATURE_RSA (1 << 21)655#define IXP46X_FEATURE_MASK (IXP43X_FEATURE_MASK | \656IXP4XX_FEATURE_NPEB_ETH_1_TO_3 | \657IXP4XX_FEATURE_RSA)658659#endif660661662