162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * CPM2 Internal Memory Map 462306a36Sopenharmony_ci * Copyright (c) 1999 Dan Malek (dmalek@jlc.net) 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * The Internal Memory Map for devices with CPM2 on them. This 762306a36Sopenharmony_ci * is the superset of all CPM2 devices (8260, 8266, 8280, 8272, 862306a36Sopenharmony_ci * 8560). 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci#ifdef __KERNEL__ 1162306a36Sopenharmony_ci#ifndef __IMMAP_CPM2__ 1262306a36Sopenharmony_ci#define __IMMAP_CPM2__ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include <linux/types.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci/* System configuration registers. 1762306a36Sopenharmony_ci*/ 1862306a36Sopenharmony_citypedef struct sys_82xx_conf { 1962306a36Sopenharmony_ci u32 sc_siumcr; 2062306a36Sopenharmony_ci u32 sc_sypcr; 2162306a36Sopenharmony_ci u8 res1[6]; 2262306a36Sopenharmony_ci u16 sc_swsr; 2362306a36Sopenharmony_ci u8 res2[20]; 2462306a36Sopenharmony_ci u32 sc_bcr; 2562306a36Sopenharmony_ci u8 sc_ppc_acr; 2662306a36Sopenharmony_ci u8 res3[3]; 2762306a36Sopenharmony_ci u32 sc_ppc_alrh; 2862306a36Sopenharmony_ci u32 sc_ppc_alrl; 2962306a36Sopenharmony_ci u8 sc_lcl_acr; 3062306a36Sopenharmony_ci u8 res4[3]; 3162306a36Sopenharmony_ci u32 sc_lcl_alrh; 3262306a36Sopenharmony_ci u32 sc_lcl_alrl; 3362306a36Sopenharmony_ci u32 sc_tescr1; 3462306a36Sopenharmony_ci u32 sc_tescr2; 3562306a36Sopenharmony_ci u32 sc_ltescr1; 3662306a36Sopenharmony_ci u32 sc_ltescr2; 3762306a36Sopenharmony_ci u32 sc_pdtea; 3862306a36Sopenharmony_ci u8 sc_pdtem; 3962306a36Sopenharmony_ci u8 res5[3]; 4062306a36Sopenharmony_ci u32 sc_ldtea; 4162306a36Sopenharmony_ci u8 sc_ldtem; 4262306a36Sopenharmony_ci u8 res6[163]; 4362306a36Sopenharmony_ci} sysconf_82xx_cpm2_t; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_citypedef struct sys_85xx_conf { 4662306a36Sopenharmony_ci u32 sc_cear; 4762306a36Sopenharmony_ci u16 sc_ceer; 4862306a36Sopenharmony_ci u16 sc_cemr; 4962306a36Sopenharmony_ci u8 res1[70]; 5062306a36Sopenharmony_ci u32 sc_smaer; 5162306a36Sopenharmony_ci u8 res2[4]; 5262306a36Sopenharmony_ci u32 sc_smevr; 5362306a36Sopenharmony_ci u32 sc_smctr; 5462306a36Sopenharmony_ci u32 sc_lmaer; 5562306a36Sopenharmony_ci u8 res3[4]; 5662306a36Sopenharmony_ci u32 sc_lmevr; 5762306a36Sopenharmony_ci u32 sc_lmctr; 5862306a36Sopenharmony_ci u8 res4[144]; 5962306a36Sopenharmony_ci} sysconf_85xx_cpm2_t; 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_citypedef union sys_conf { 6262306a36Sopenharmony_ci sysconf_82xx_cpm2_t siu_82xx; 6362306a36Sopenharmony_ci sysconf_85xx_cpm2_t siu_85xx; 6462306a36Sopenharmony_ci} sysconf_cpm2_t; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci/* Memory controller registers. 6962306a36Sopenharmony_ci*/ 7062306a36Sopenharmony_citypedef struct mem_ctlr { 7162306a36Sopenharmony_ci u32 memc_br0; 7262306a36Sopenharmony_ci u32 memc_or0; 7362306a36Sopenharmony_ci u32 memc_br1; 7462306a36Sopenharmony_ci u32 memc_or1; 7562306a36Sopenharmony_ci u32 memc_br2; 7662306a36Sopenharmony_ci u32 memc_or2; 7762306a36Sopenharmony_ci u32 memc_br3; 7862306a36Sopenharmony_ci u32 memc_or3; 7962306a36Sopenharmony_ci u32 memc_br4; 8062306a36Sopenharmony_ci u32 memc_or4; 8162306a36Sopenharmony_ci u32 memc_br5; 8262306a36Sopenharmony_ci u32 memc_or5; 8362306a36Sopenharmony_ci u32 memc_br6; 8462306a36Sopenharmony_ci u32 memc_or6; 8562306a36Sopenharmony_ci u32 memc_br7; 8662306a36Sopenharmony_ci u32 memc_or7; 8762306a36Sopenharmony_ci u32 memc_br8; 8862306a36Sopenharmony_ci u32 memc_or8; 8962306a36Sopenharmony_ci u32 memc_br9; 9062306a36Sopenharmony_ci u32 memc_or9; 9162306a36Sopenharmony_ci u32 memc_br10; 9262306a36Sopenharmony_ci u32 memc_or10; 9362306a36Sopenharmony_ci u32 memc_br11; 9462306a36Sopenharmony_ci u32 memc_or11; 9562306a36Sopenharmony_ci u8 res1[8]; 9662306a36Sopenharmony_ci u32 memc_mar; 9762306a36Sopenharmony_ci u8 res2[4]; 9862306a36Sopenharmony_ci u32 memc_mamr; 9962306a36Sopenharmony_ci u32 memc_mbmr; 10062306a36Sopenharmony_ci u32 memc_mcmr; 10162306a36Sopenharmony_ci u8 res3[8]; 10262306a36Sopenharmony_ci u16 memc_mptpr; 10362306a36Sopenharmony_ci u8 res4[2]; 10462306a36Sopenharmony_ci u32 memc_mdr; 10562306a36Sopenharmony_ci u8 res5[4]; 10662306a36Sopenharmony_ci u32 memc_psdmr; 10762306a36Sopenharmony_ci u32 memc_lsdmr; 10862306a36Sopenharmony_ci u8 memc_purt; 10962306a36Sopenharmony_ci u8 res6[3]; 11062306a36Sopenharmony_ci u8 memc_psrt; 11162306a36Sopenharmony_ci u8 res7[3]; 11262306a36Sopenharmony_ci u8 memc_lurt; 11362306a36Sopenharmony_ci u8 res8[3]; 11462306a36Sopenharmony_ci u8 memc_lsrt; 11562306a36Sopenharmony_ci u8 res9[3]; 11662306a36Sopenharmony_ci u32 memc_immr; 11762306a36Sopenharmony_ci u32 memc_pcibr0; 11862306a36Sopenharmony_ci u32 memc_pcibr1; 11962306a36Sopenharmony_ci u8 res10[16]; 12062306a36Sopenharmony_ci u32 memc_pcimsk0; 12162306a36Sopenharmony_ci u32 memc_pcimsk1; 12262306a36Sopenharmony_ci u8 res11[52]; 12362306a36Sopenharmony_ci} memctl_cpm2_t; 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci/* System Integration Timers. 12662306a36Sopenharmony_ci*/ 12762306a36Sopenharmony_citypedef struct sys_int_timers { 12862306a36Sopenharmony_ci u8 res1[32]; 12962306a36Sopenharmony_ci u16 sit_tmcntsc; 13062306a36Sopenharmony_ci u8 res2[2]; 13162306a36Sopenharmony_ci u32 sit_tmcnt; 13262306a36Sopenharmony_ci u8 res3[4]; 13362306a36Sopenharmony_ci u32 sit_tmcntal; 13462306a36Sopenharmony_ci u8 res4[16]; 13562306a36Sopenharmony_ci u16 sit_piscr; 13662306a36Sopenharmony_ci u8 res5[2]; 13762306a36Sopenharmony_ci u32 sit_pitc; 13862306a36Sopenharmony_ci u32 sit_pitr; 13962306a36Sopenharmony_ci u8 res6[94]; 14062306a36Sopenharmony_ci u8 res7[390]; 14162306a36Sopenharmony_ci} sit_cpm2_t; 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci#define PISCR_PIRQ_MASK ((u16)0xff00) 14462306a36Sopenharmony_ci#define PISCR_PS ((u16)0x0080) 14562306a36Sopenharmony_ci#define PISCR_PIE ((u16)0x0004) 14662306a36Sopenharmony_ci#define PISCR_PTF ((u16)0x0002) 14762306a36Sopenharmony_ci#define PISCR_PTE ((u16)0x0001) 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ci/* PCI Controller. 15062306a36Sopenharmony_ci*/ 15162306a36Sopenharmony_citypedef struct pci_ctlr { 15262306a36Sopenharmony_ci u32 pci_omisr; 15362306a36Sopenharmony_ci u32 pci_omimr; 15462306a36Sopenharmony_ci u8 res1[8]; 15562306a36Sopenharmony_ci u32 pci_ifqpr; 15662306a36Sopenharmony_ci u32 pci_ofqpr; 15762306a36Sopenharmony_ci u8 res2[8]; 15862306a36Sopenharmony_ci u32 pci_imr0; 15962306a36Sopenharmony_ci u32 pci_imr1; 16062306a36Sopenharmony_ci u32 pci_omr0; 16162306a36Sopenharmony_ci u32 pci_omr1; 16262306a36Sopenharmony_ci u32 pci_odr; 16362306a36Sopenharmony_ci u8 res3[4]; 16462306a36Sopenharmony_ci u32 pci_idr; 16562306a36Sopenharmony_ci u8 res4[20]; 16662306a36Sopenharmony_ci u32 pci_imisr; 16762306a36Sopenharmony_ci u32 pci_imimr; 16862306a36Sopenharmony_ci u8 res5[24]; 16962306a36Sopenharmony_ci u32 pci_ifhpr; 17062306a36Sopenharmony_ci u8 res6[4]; 17162306a36Sopenharmony_ci u32 pci_iftpr; 17262306a36Sopenharmony_ci u8 res7[4]; 17362306a36Sopenharmony_ci u32 pci_iphpr; 17462306a36Sopenharmony_ci u8 res8[4]; 17562306a36Sopenharmony_ci u32 pci_iptpr; 17662306a36Sopenharmony_ci u8 res9[4]; 17762306a36Sopenharmony_ci u32 pci_ofhpr; 17862306a36Sopenharmony_ci u8 res10[4]; 17962306a36Sopenharmony_ci u32 pci_oftpr; 18062306a36Sopenharmony_ci u8 res11[4]; 18162306a36Sopenharmony_ci u32 pci_ophpr; 18262306a36Sopenharmony_ci u8 res12[4]; 18362306a36Sopenharmony_ci u32 pci_optpr; 18462306a36Sopenharmony_ci u8 res13[8]; 18562306a36Sopenharmony_ci u32 pci_mucr; 18662306a36Sopenharmony_ci u8 res14[8]; 18762306a36Sopenharmony_ci u32 pci_qbar; 18862306a36Sopenharmony_ci u8 res15[12]; 18962306a36Sopenharmony_ci u32 pci_dmamr0; 19062306a36Sopenharmony_ci u32 pci_dmasr0; 19162306a36Sopenharmony_ci u32 pci_dmacdar0; 19262306a36Sopenharmony_ci u8 res16[4]; 19362306a36Sopenharmony_ci u32 pci_dmasar0; 19462306a36Sopenharmony_ci u8 res17[4]; 19562306a36Sopenharmony_ci u32 pci_dmadar0; 19662306a36Sopenharmony_ci u8 res18[4]; 19762306a36Sopenharmony_ci u32 pci_dmabcr0; 19862306a36Sopenharmony_ci u32 pci_dmandar0; 19962306a36Sopenharmony_ci u8 res19[86]; 20062306a36Sopenharmony_ci u32 pci_dmamr1; 20162306a36Sopenharmony_ci u32 pci_dmasr1; 20262306a36Sopenharmony_ci u32 pci_dmacdar1; 20362306a36Sopenharmony_ci u8 res20[4]; 20462306a36Sopenharmony_ci u32 pci_dmasar1; 20562306a36Sopenharmony_ci u8 res21[4]; 20662306a36Sopenharmony_ci u32 pci_dmadar1; 20762306a36Sopenharmony_ci u8 res22[4]; 20862306a36Sopenharmony_ci u32 pci_dmabcr1; 20962306a36Sopenharmony_ci u32 pci_dmandar1; 21062306a36Sopenharmony_ci u8 res23[88]; 21162306a36Sopenharmony_ci u32 pci_dmamr2; 21262306a36Sopenharmony_ci u32 pci_dmasr2; 21362306a36Sopenharmony_ci u32 pci_dmacdar2; 21462306a36Sopenharmony_ci u8 res24[4]; 21562306a36Sopenharmony_ci u32 pci_dmasar2; 21662306a36Sopenharmony_ci u8 res25[4]; 21762306a36Sopenharmony_ci u32 pci_dmadar2; 21862306a36Sopenharmony_ci u8 res26[4]; 21962306a36Sopenharmony_ci u32 pci_dmabcr2; 22062306a36Sopenharmony_ci u32 pci_dmandar2; 22162306a36Sopenharmony_ci u8 res27[88]; 22262306a36Sopenharmony_ci u32 pci_dmamr3; 22362306a36Sopenharmony_ci u32 pci_dmasr3; 22462306a36Sopenharmony_ci u32 pci_dmacdar3; 22562306a36Sopenharmony_ci u8 res28[4]; 22662306a36Sopenharmony_ci u32 pci_dmasar3; 22762306a36Sopenharmony_ci u8 res29[4]; 22862306a36Sopenharmony_ci u32 pci_dmadar3; 22962306a36Sopenharmony_ci u8 res30[4]; 23062306a36Sopenharmony_ci u32 pci_dmabcr3; 23162306a36Sopenharmony_ci u32 pci_dmandar3; 23262306a36Sopenharmony_ci u8 res31[344]; 23362306a36Sopenharmony_ci u32 pci_potar0; 23462306a36Sopenharmony_ci u8 res32[4]; 23562306a36Sopenharmony_ci u32 pci_pobar0; 23662306a36Sopenharmony_ci u8 res33[4]; 23762306a36Sopenharmony_ci u32 pci_pocmr0; 23862306a36Sopenharmony_ci u8 res34[4]; 23962306a36Sopenharmony_ci u32 pci_potar1; 24062306a36Sopenharmony_ci u8 res35[4]; 24162306a36Sopenharmony_ci u32 pci_pobar1; 24262306a36Sopenharmony_ci u8 res36[4]; 24362306a36Sopenharmony_ci u32 pci_pocmr1; 24462306a36Sopenharmony_ci u8 res37[4]; 24562306a36Sopenharmony_ci u32 pci_potar2; 24662306a36Sopenharmony_ci u8 res38[4]; 24762306a36Sopenharmony_ci u32 pci_pobar2; 24862306a36Sopenharmony_ci u8 res39[4]; 24962306a36Sopenharmony_ci u32 pci_pocmr2; 25062306a36Sopenharmony_ci u8 res40[50]; 25162306a36Sopenharmony_ci u32 pci_ptcr; 25262306a36Sopenharmony_ci u32 pci_gpcr; 25362306a36Sopenharmony_ci u32 pci_gcr; 25462306a36Sopenharmony_ci u32 pci_esr; 25562306a36Sopenharmony_ci u32 pci_emr; 25662306a36Sopenharmony_ci u32 pci_ecr; 25762306a36Sopenharmony_ci u32 pci_eacr; 25862306a36Sopenharmony_ci u8 res41[4]; 25962306a36Sopenharmony_ci u32 pci_edcr; 26062306a36Sopenharmony_ci u8 res42[4]; 26162306a36Sopenharmony_ci u32 pci_eccr; 26262306a36Sopenharmony_ci u8 res43[44]; 26362306a36Sopenharmony_ci u32 pci_pitar1; 26462306a36Sopenharmony_ci u8 res44[4]; 26562306a36Sopenharmony_ci u32 pci_pibar1; 26662306a36Sopenharmony_ci u8 res45[4]; 26762306a36Sopenharmony_ci u32 pci_picmr1; 26862306a36Sopenharmony_ci u8 res46[4]; 26962306a36Sopenharmony_ci u32 pci_pitar0; 27062306a36Sopenharmony_ci u8 res47[4]; 27162306a36Sopenharmony_ci u32 pci_pibar0; 27262306a36Sopenharmony_ci u8 res48[4]; 27362306a36Sopenharmony_ci u32 pci_picmr0; 27462306a36Sopenharmony_ci u8 res49[4]; 27562306a36Sopenharmony_ci u32 pci_cfg_addr; 27662306a36Sopenharmony_ci u32 pci_cfg_data; 27762306a36Sopenharmony_ci u32 pci_int_ack; 27862306a36Sopenharmony_ci u8 res50[756]; 27962306a36Sopenharmony_ci} pci_cpm2_t; 28062306a36Sopenharmony_ci 28162306a36Sopenharmony_ci/* Interrupt Controller. 28262306a36Sopenharmony_ci*/ 28362306a36Sopenharmony_citypedef struct interrupt_controller { 28462306a36Sopenharmony_ci u16 ic_sicr; 28562306a36Sopenharmony_ci u8 res1[2]; 28662306a36Sopenharmony_ci u32 ic_sivec; 28762306a36Sopenharmony_ci u32 ic_sipnrh; 28862306a36Sopenharmony_ci u32 ic_sipnrl; 28962306a36Sopenharmony_ci u32 ic_siprr; 29062306a36Sopenharmony_ci u32 ic_scprrh; 29162306a36Sopenharmony_ci u32 ic_scprrl; 29262306a36Sopenharmony_ci u32 ic_simrh; 29362306a36Sopenharmony_ci u32 ic_simrl; 29462306a36Sopenharmony_ci u32 ic_siexr; 29562306a36Sopenharmony_ci u8 res2[88]; 29662306a36Sopenharmony_ci} intctl_cpm2_t; 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ci/* Clocks and Reset. 29962306a36Sopenharmony_ci*/ 30062306a36Sopenharmony_citypedef struct clk_and_reset { 30162306a36Sopenharmony_ci u32 car_sccr; 30262306a36Sopenharmony_ci u8 res1[4]; 30362306a36Sopenharmony_ci u32 car_scmr; 30462306a36Sopenharmony_ci u8 res2[4]; 30562306a36Sopenharmony_ci u32 car_rsr; 30662306a36Sopenharmony_ci u32 car_rmr; 30762306a36Sopenharmony_ci u8 res[104]; 30862306a36Sopenharmony_ci} car_cpm2_t; 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ci/* Input/Output Port control/status registers. 31162306a36Sopenharmony_ci * Names consistent with processor manual, although they are different 31262306a36Sopenharmony_ci * from the original 8xx names....... 31362306a36Sopenharmony_ci */ 31462306a36Sopenharmony_citypedef struct io_port { 31562306a36Sopenharmony_ci u32 iop_pdira; 31662306a36Sopenharmony_ci u32 iop_ppara; 31762306a36Sopenharmony_ci u32 iop_psora; 31862306a36Sopenharmony_ci u32 iop_podra; 31962306a36Sopenharmony_ci u32 iop_pdata; 32062306a36Sopenharmony_ci u8 res1[12]; 32162306a36Sopenharmony_ci u32 iop_pdirb; 32262306a36Sopenharmony_ci u32 iop_pparb; 32362306a36Sopenharmony_ci u32 iop_psorb; 32462306a36Sopenharmony_ci u32 iop_podrb; 32562306a36Sopenharmony_ci u32 iop_pdatb; 32662306a36Sopenharmony_ci u8 res2[12]; 32762306a36Sopenharmony_ci u32 iop_pdirc; 32862306a36Sopenharmony_ci u32 iop_pparc; 32962306a36Sopenharmony_ci u32 iop_psorc; 33062306a36Sopenharmony_ci u32 iop_podrc; 33162306a36Sopenharmony_ci u32 iop_pdatc; 33262306a36Sopenharmony_ci u8 res3[12]; 33362306a36Sopenharmony_ci u32 iop_pdird; 33462306a36Sopenharmony_ci u32 iop_ppard; 33562306a36Sopenharmony_ci u32 iop_psord; 33662306a36Sopenharmony_ci u32 iop_podrd; 33762306a36Sopenharmony_ci u32 iop_pdatd; 33862306a36Sopenharmony_ci u8 res4[12]; 33962306a36Sopenharmony_ci} iop_cpm2_t; 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ci/* Communication Processor Module Timers 34262306a36Sopenharmony_ci*/ 34362306a36Sopenharmony_citypedef struct cpm_timers { 34462306a36Sopenharmony_ci u8 cpmt_tgcr1; 34562306a36Sopenharmony_ci u8 res1[3]; 34662306a36Sopenharmony_ci u8 cpmt_tgcr2; 34762306a36Sopenharmony_ci u8 res2[11]; 34862306a36Sopenharmony_ci u16 cpmt_tmr1; 34962306a36Sopenharmony_ci u16 cpmt_tmr2; 35062306a36Sopenharmony_ci u16 cpmt_trr1; 35162306a36Sopenharmony_ci u16 cpmt_trr2; 35262306a36Sopenharmony_ci u16 cpmt_tcr1; 35362306a36Sopenharmony_ci u16 cpmt_tcr2; 35462306a36Sopenharmony_ci u16 cpmt_tcn1; 35562306a36Sopenharmony_ci u16 cpmt_tcn2; 35662306a36Sopenharmony_ci u16 cpmt_tmr3; 35762306a36Sopenharmony_ci u16 cpmt_tmr4; 35862306a36Sopenharmony_ci u16 cpmt_trr3; 35962306a36Sopenharmony_ci u16 cpmt_trr4; 36062306a36Sopenharmony_ci u16 cpmt_tcr3; 36162306a36Sopenharmony_ci u16 cpmt_tcr4; 36262306a36Sopenharmony_ci u16 cpmt_tcn3; 36362306a36Sopenharmony_ci u16 cpmt_tcn4; 36462306a36Sopenharmony_ci u16 cpmt_ter1; 36562306a36Sopenharmony_ci u16 cpmt_ter2; 36662306a36Sopenharmony_ci u16 cpmt_ter3; 36762306a36Sopenharmony_ci u16 cpmt_ter4; 36862306a36Sopenharmony_ci u8 res3[584]; 36962306a36Sopenharmony_ci} cpmtimer_cpm2_t; 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_ci/* DMA control/status registers. 37262306a36Sopenharmony_ci*/ 37362306a36Sopenharmony_citypedef struct sdma_csr { 37462306a36Sopenharmony_ci u8 res0[24]; 37562306a36Sopenharmony_ci u8 sdma_sdsr; 37662306a36Sopenharmony_ci u8 res1[3]; 37762306a36Sopenharmony_ci u8 sdma_sdmr; 37862306a36Sopenharmony_ci u8 res2[3]; 37962306a36Sopenharmony_ci u8 sdma_idsr1; 38062306a36Sopenharmony_ci u8 res3[3]; 38162306a36Sopenharmony_ci u8 sdma_idmr1; 38262306a36Sopenharmony_ci u8 res4[3]; 38362306a36Sopenharmony_ci u8 sdma_idsr2; 38462306a36Sopenharmony_ci u8 res5[3]; 38562306a36Sopenharmony_ci u8 sdma_idmr2; 38662306a36Sopenharmony_ci u8 res6[3]; 38762306a36Sopenharmony_ci u8 sdma_idsr3; 38862306a36Sopenharmony_ci u8 res7[3]; 38962306a36Sopenharmony_ci u8 sdma_idmr3; 39062306a36Sopenharmony_ci u8 res8[3]; 39162306a36Sopenharmony_ci u8 sdma_idsr4; 39262306a36Sopenharmony_ci u8 res9[3]; 39362306a36Sopenharmony_ci u8 sdma_idmr4; 39462306a36Sopenharmony_ci u8 res10[707]; 39562306a36Sopenharmony_ci} sdma_cpm2_t; 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_ci/* Fast controllers 39862306a36Sopenharmony_ci*/ 39962306a36Sopenharmony_citypedef struct fcc { 40062306a36Sopenharmony_ci u32 fcc_gfmr; 40162306a36Sopenharmony_ci u32 fcc_fpsmr; 40262306a36Sopenharmony_ci u16 fcc_ftodr; 40362306a36Sopenharmony_ci u8 res1[2]; 40462306a36Sopenharmony_ci u16 fcc_fdsr; 40562306a36Sopenharmony_ci u8 res2[2]; 40662306a36Sopenharmony_ci u16 fcc_fcce; 40762306a36Sopenharmony_ci u8 res3[2]; 40862306a36Sopenharmony_ci u16 fcc_fccm; 40962306a36Sopenharmony_ci u8 res4[2]; 41062306a36Sopenharmony_ci u8 fcc_fccs; 41162306a36Sopenharmony_ci u8 res5[3]; 41262306a36Sopenharmony_ci u8 fcc_ftirr_phy[4]; 41362306a36Sopenharmony_ci} fcc_t; 41462306a36Sopenharmony_ci 41562306a36Sopenharmony_ci/* Fast controllers continued 41662306a36Sopenharmony_ci */ 41762306a36Sopenharmony_citypedef struct fcc_c { 41862306a36Sopenharmony_ci u32 fcc_firper; 41962306a36Sopenharmony_ci u32 fcc_firer; 42062306a36Sopenharmony_ci u32 fcc_firsr_hi; 42162306a36Sopenharmony_ci u32 fcc_firsr_lo; 42262306a36Sopenharmony_ci u8 fcc_gfemr; 42362306a36Sopenharmony_ci u8 res1[15]; 42462306a36Sopenharmony_ci} fcc_c_t; 42562306a36Sopenharmony_ci 42662306a36Sopenharmony_ci/* TC Layer 42762306a36Sopenharmony_ci */ 42862306a36Sopenharmony_citypedef struct tclayer { 42962306a36Sopenharmony_ci u16 tc_tcmode; 43062306a36Sopenharmony_ci u16 tc_cdsmr; 43162306a36Sopenharmony_ci u16 tc_tcer; 43262306a36Sopenharmony_ci u16 tc_rcc; 43362306a36Sopenharmony_ci u16 tc_tcmr; 43462306a36Sopenharmony_ci u16 tc_fcc; 43562306a36Sopenharmony_ci u16 tc_ccc; 43662306a36Sopenharmony_ci u16 tc_icc; 43762306a36Sopenharmony_ci u16 tc_tcc; 43862306a36Sopenharmony_ci u16 tc_ecc; 43962306a36Sopenharmony_ci u8 res1[12]; 44062306a36Sopenharmony_ci} tclayer_t; 44162306a36Sopenharmony_ci 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_ci/* I2C 44462306a36Sopenharmony_ci*/ 44562306a36Sopenharmony_citypedef struct i2c { 44662306a36Sopenharmony_ci u8 i2c_i2mod; 44762306a36Sopenharmony_ci u8 res1[3]; 44862306a36Sopenharmony_ci u8 i2c_i2add; 44962306a36Sopenharmony_ci u8 res2[3]; 45062306a36Sopenharmony_ci u8 i2c_i2brg; 45162306a36Sopenharmony_ci u8 res3[3]; 45262306a36Sopenharmony_ci u8 i2c_i2com; 45362306a36Sopenharmony_ci u8 res4[3]; 45462306a36Sopenharmony_ci u8 i2c_i2cer; 45562306a36Sopenharmony_ci u8 res5[3]; 45662306a36Sopenharmony_ci u8 i2c_i2cmr; 45762306a36Sopenharmony_ci u8 res6[331]; 45862306a36Sopenharmony_ci} i2c_cpm2_t; 45962306a36Sopenharmony_ci 46062306a36Sopenharmony_citypedef struct scc { /* Serial communication channels */ 46162306a36Sopenharmony_ci u32 scc_gsmrl; 46262306a36Sopenharmony_ci u32 scc_gsmrh; 46362306a36Sopenharmony_ci u16 scc_psmr; 46462306a36Sopenharmony_ci u8 res1[2]; 46562306a36Sopenharmony_ci u16 scc_todr; 46662306a36Sopenharmony_ci u16 scc_dsr; 46762306a36Sopenharmony_ci u16 scc_scce; 46862306a36Sopenharmony_ci u8 res2[2]; 46962306a36Sopenharmony_ci u16 scc_sccm; 47062306a36Sopenharmony_ci u8 res3; 47162306a36Sopenharmony_ci u8 scc_sccs; 47262306a36Sopenharmony_ci u8 res4[8]; 47362306a36Sopenharmony_ci} scc_t; 47462306a36Sopenharmony_ci 47562306a36Sopenharmony_citypedef struct smc { /* Serial management channels */ 47662306a36Sopenharmony_ci u8 res1[2]; 47762306a36Sopenharmony_ci u16 smc_smcmr; 47862306a36Sopenharmony_ci u8 res2[2]; 47962306a36Sopenharmony_ci u8 smc_smce; 48062306a36Sopenharmony_ci u8 res3[3]; 48162306a36Sopenharmony_ci u8 smc_smcm; 48262306a36Sopenharmony_ci u8 res4[5]; 48362306a36Sopenharmony_ci} smc_t; 48462306a36Sopenharmony_ci 48562306a36Sopenharmony_ci/* Serial Peripheral Interface. 48662306a36Sopenharmony_ci*/ 48762306a36Sopenharmony_citypedef struct spi_ctrl { 48862306a36Sopenharmony_ci u16 spi_spmode; 48962306a36Sopenharmony_ci u8 res1[4]; 49062306a36Sopenharmony_ci u8 spi_spie; 49162306a36Sopenharmony_ci u8 res2[3]; 49262306a36Sopenharmony_ci u8 spi_spim; 49362306a36Sopenharmony_ci u8 res3[2]; 49462306a36Sopenharmony_ci u8 spi_spcom; 49562306a36Sopenharmony_ci u8 res4[82]; 49662306a36Sopenharmony_ci} spictl_cpm2_t; 49762306a36Sopenharmony_ci 49862306a36Sopenharmony_ci/* CPM Mux. 49962306a36Sopenharmony_ci*/ 50062306a36Sopenharmony_citypedef struct cpmux { 50162306a36Sopenharmony_ci u8 cmx_si1cr; 50262306a36Sopenharmony_ci u8 res1; 50362306a36Sopenharmony_ci u8 cmx_si2cr; 50462306a36Sopenharmony_ci u8 res2; 50562306a36Sopenharmony_ci u32 cmx_fcr; 50662306a36Sopenharmony_ci u32 cmx_scr; 50762306a36Sopenharmony_ci u8 cmx_smr; 50862306a36Sopenharmony_ci u8 res3; 50962306a36Sopenharmony_ci u16 cmx_uar; 51062306a36Sopenharmony_ci u8 res4[16]; 51162306a36Sopenharmony_ci} cpmux_t; 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_ci/* SIRAM control 51462306a36Sopenharmony_ci*/ 51562306a36Sopenharmony_citypedef struct siram { 51662306a36Sopenharmony_ci u16 si_amr; 51762306a36Sopenharmony_ci u16 si_bmr; 51862306a36Sopenharmony_ci u16 si_cmr; 51962306a36Sopenharmony_ci u16 si_dmr; 52062306a36Sopenharmony_ci u8 si_gmr; 52162306a36Sopenharmony_ci u8 res1; 52262306a36Sopenharmony_ci u8 si_cmdr; 52362306a36Sopenharmony_ci u8 res2; 52462306a36Sopenharmony_ci u8 si_str; 52562306a36Sopenharmony_ci u8 res3; 52662306a36Sopenharmony_ci u16 si_rsr; 52762306a36Sopenharmony_ci} siramctl_t; 52862306a36Sopenharmony_ci 52962306a36Sopenharmony_citypedef struct mcc { 53062306a36Sopenharmony_ci u16 mcc_mcce; 53162306a36Sopenharmony_ci u8 res1[2]; 53262306a36Sopenharmony_ci u16 mcc_mccm; 53362306a36Sopenharmony_ci u8 res2[2]; 53462306a36Sopenharmony_ci u8 mcc_mccf; 53562306a36Sopenharmony_ci u8 res3[7]; 53662306a36Sopenharmony_ci} mcc_t; 53762306a36Sopenharmony_ci 53862306a36Sopenharmony_citypedef struct comm_proc { 53962306a36Sopenharmony_ci u32 cp_cpcr; 54062306a36Sopenharmony_ci u32 cp_rccr; 54162306a36Sopenharmony_ci u8 res1[14]; 54262306a36Sopenharmony_ci u16 cp_rter; 54362306a36Sopenharmony_ci u8 res2[2]; 54462306a36Sopenharmony_ci u16 cp_rtmr; 54562306a36Sopenharmony_ci u16 cp_rtscr; 54662306a36Sopenharmony_ci u8 res3[2]; 54762306a36Sopenharmony_ci u32 cp_rtsr; 54862306a36Sopenharmony_ci u8 res4[12]; 54962306a36Sopenharmony_ci} cpm_cpm2_t; 55062306a36Sopenharmony_ci 55162306a36Sopenharmony_ci/* USB Controller. 55262306a36Sopenharmony_ci*/ 55362306a36Sopenharmony_citypedef struct cpm_usb_ctlr { 55462306a36Sopenharmony_ci u8 usb_usmod; 55562306a36Sopenharmony_ci u8 usb_usadr; 55662306a36Sopenharmony_ci u8 usb_uscom; 55762306a36Sopenharmony_ci u8 res1[1]; 55862306a36Sopenharmony_ci __be16 usb_usep[4]; 55962306a36Sopenharmony_ci u8 res2[4]; 56062306a36Sopenharmony_ci __be16 usb_usber; 56162306a36Sopenharmony_ci u8 res3[2]; 56262306a36Sopenharmony_ci __be16 usb_usbmr; 56362306a36Sopenharmony_ci u8 usb_usbs; 56462306a36Sopenharmony_ci u8 res4[7]; 56562306a36Sopenharmony_ci} usb_cpm2_t; 56662306a36Sopenharmony_ci 56762306a36Sopenharmony_ci/* ...and the whole thing wrapped up.... 56862306a36Sopenharmony_ci*/ 56962306a36Sopenharmony_ci 57062306a36Sopenharmony_citypedef struct immap { 57162306a36Sopenharmony_ci /* Some references are into the unique and known dpram spaces, 57262306a36Sopenharmony_ci * others are from the generic base. 57362306a36Sopenharmony_ci */ 57462306a36Sopenharmony_ci#define im_dprambase im_dpram1 57562306a36Sopenharmony_ci u8 im_dpram1[16*1024]; 57662306a36Sopenharmony_ci u8 res1[16*1024]; 57762306a36Sopenharmony_ci u8 im_dpram2[4*1024]; 57862306a36Sopenharmony_ci u8 res2[8*1024]; 57962306a36Sopenharmony_ci u8 im_dpram3[4*1024]; 58062306a36Sopenharmony_ci u8 res3[16*1024]; 58162306a36Sopenharmony_ci 58262306a36Sopenharmony_ci sysconf_cpm2_t im_siu_conf; /* SIU Configuration */ 58362306a36Sopenharmony_ci memctl_cpm2_t im_memctl; /* Memory Controller */ 58462306a36Sopenharmony_ci sit_cpm2_t im_sit; /* System Integration Timers */ 58562306a36Sopenharmony_ci pci_cpm2_t im_pci; /* PCI Controller */ 58662306a36Sopenharmony_ci intctl_cpm2_t im_intctl; /* Interrupt Controller */ 58762306a36Sopenharmony_ci car_cpm2_t im_clkrst; /* Clocks and reset */ 58862306a36Sopenharmony_ci iop_cpm2_t im_ioport; /* IO Port control/status */ 58962306a36Sopenharmony_ci cpmtimer_cpm2_t im_cpmtimer; /* CPM timers */ 59062306a36Sopenharmony_ci sdma_cpm2_t im_sdma; /* SDMA control/status */ 59162306a36Sopenharmony_ci 59262306a36Sopenharmony_ci fcc_t im_fcc[3]; /* Three FCCs */ 59362306a36Sopenharmony_ci u8 res4z[32]; 59462306a36Sopenharmony_ci fcc_c_t im_fcc_c[3]; /* Continued FCCs */ 59562306a36Sopenharmony_ci 59662306a36Sopenharmony_ci u8 res4[32]; 59762306a36Sopenharmony_ci 59862306a36Sopenharmony_ci tclayer_t im_tclayer[8]; /* Eight TCLayers */ 59962306a36Sopenharmony_ci u16 tc_tcgsr; 60062306a36Sopenharmony_ci u16 tc_tcger; 60162306a36Sopenharmony_ci 60262306a36Sopenharmony_ci /* First set of baud rate generators. 60362306a36Sopenharmony_ci */ 60462306a36Sopenharmony_ci u8 res[236]; 60562306a36Sopenharmony_ci u32 im_brgc5; 60662306a36Sopenharmony_ci u32 im_brgc6; 60762306a36Sopenharmony_ci u32 im_brgc7; 60862306a36Sopenharmony_ci u32 im_brgc8; 60962306a36Sopenharmony_ci 61062306a36Sopenharmony_ci u8 res5[608]; 61162306a36Sopenharmony_ci 61262306a36Sopenharmony_ci i2c_cpm2_t im_i2c; /* I2C control/status */ 61362306a36Sopenharmony_ci cpm_cpm2_t im_cpm; /* Communication processor */ 61462306a36Sopenharmony_ci 61562306a36Sopenharmony_ci /* Second set of baud rate generators. 61662306a36Sopenharmony_ci */ 61762306a36Sopenharmony_ci u32 im_brgc1; 61862306a36Sopenharmony_ci u32 im_brgc2; 61962306a36Sopenharmony_ci u32 im_brgc3; 62062306a36Sopenharmony_ci u32 im_brgc4; 62162306a36Sopenharmony_ci 62262306a36Sopenharmony_ci scc_t im_scc[4]; /* Four SCCs */ 62362306a36Sopenharmony_ci smc_t im_smc[2]; /* Couple of SMCs */ 62462306a36Sopenharmony_ci spictl_cpm2_t im_spi; /* A SPI */ 62562306a36Sopenharmony_ci cpmux_t im_cpmux; /* CPM clock route mux */ 62662306a36Sopenharmony_ci siramctl_t im_siramctl1; /* First SI RAM Control */ 62762306a36Sopenharmony_ci mcc_t im_mcc1; /* First MCC */ 62862306a36Sopenharmony_ci siramctl_t im_siramctl2; /* Second SI RAM Control */ 62962306a36Sopenharmony_ci mcc_t im_mcc2; /* Second MCC */ 63062306a36Sopenharmony_ci usb_cpm2_t im_usb; /* USB Controller */ 63162306a36Sopenharmony_ci 63262306a36Sopenharmony_ci u8 res6[1153]; 63362306a36Sopenharmony_ci 63462306a36Sopenharmony_ci u16 im_si1txram[256]; 63562306a36Sopenharmony_ci u8 res7[512]; 63662306a36Sopenharmony_ci u16 im_si1rxram[256]; 63762306a36Sopenharmony_ci u8 res8[512]; 63862306a36Sopenharmony_ci u16 im_si2txram[256]; 63962306a36Sopenharmony_ci u8 res9[512]; 64062306a36Sopenharmony_ci u16 im_si2rxram[256]; 64162306a36Sopenharmony_ci u8 res10[512]; 64262306a36Sopenharmony_ci u8 res11[4096]; 64362306a36Sopenharmony_ci} cpm2_map_t; 64462306a36Sopenharmony_ci 64562306a36Sopenharmony_ciextern cpm2_map_t __iomem *cpm2_immr; 64662306a36Sopenharmony_ci 64762306a36Sopenharmony_ci#endif /* __IMMAP_CPM2__ */ 64862306a36Sopenharmony_ci#endif /* __KERNEL__ */ 649