18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * CPM2 Internal Memory Map 48c2ecf20Sopenharmony_ci * Copyright (c) 1999 Dan Malek (dmalek@jlc.net) 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * The Internal Memory Map for devices with CPM2 on them. This 78c2ecf20Sopenharmony_ci * is the superset of all CPM2 devices (8260, 8266, 8280, 8272, 88c2ecf20Sopenharmony_ci * 8560). 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci#ifdef __KERNEL__ 118c2ecf20Sopenharmony_ci#ifndef __IMMAP_CPM2__ 128c2ecf20Sopenharmony_ci#define __IMMAP_CPM2__ 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#include <linux/types.h> 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci/* System configuration registers. 178c2ecf20Sopenharmony_ci*/ 188c2ecf20Sopenharmony_citypedef struct sys_82xx_conf { 198c2ecf20Sopenharmony_ci u32 sc_siumcr; 208c2ecf20Sopenharmony_ci u32 sc_sypcr; 218c2ecf20Sopenharmony_ci u8 res1[6]; 228c2ecf20Sopenharmony_ci u16 sc_swsr; 238c2ecf20Sopenharmony_ci u8 res2[20]; 248c2ecf20Sopenharmony_ci u32 sc_bcr; 258c2ecf20Sopenharmony_ci u8 sc_ppc_acr; 268c2ecf20Sopenharmony_ci u8 res3[3]; 278c2ecf20Sopenharmony_ci u32 sc_ppc_alrh; 288c2ecf20Sopenharmony_ci u32 sc_ppc_alrl; 298c2ecf20Sopenharmony_ci u8 sc_lcl_acr; 308c2ecf20Sopenharmony_ci u8 res4[3]; 318c2ecf20Sopenharmony_ci u32 sc_lcl_alrh; 328c2ecf20Sopenharmony_ci u32 sc_lcl_alrl; 338c2ecf20Sopenharmony_ci u32 sc_tescr1; 348c2ecf20Sopenharmony_ci u32 sc_tescr2; 358c2ecf20Sopenharmony_ci u32 sc_ltescr1; 368c2ecf20Sopenharmony_ci u32 sc_ltescr2; 378c2ecf20Sopenharmony_ci u32 sc_pdtea; 388c2ecf20Sopenharmony_ci u8 sc_pdtem; 398c2ecf20Sopenharmony_ci u8 res5[3]; 408c2ecf20Sopenharmony_ci u32 sc_ldtea; 418c2ecf20Sopenharmony_ci u8 sc_ldtem; 428c2ecf20Sopenharmony_ci u8 res6[163]; 438c2ecf20Sopenharmony_ci} sysconf_82xx_cpm2_t; 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_citypedef struct sys_85xx_conf { 468c2ecf20Sopenharmony_ci u32 sc_cear; 478c2ecf20Sopenharmony_ci u16 sc_ceer; 488c2ecf20Sopenharmony_ci u16 sc_cemr; 498c2ecf20Sopenharmony_ci u8 res1[70]; 508c2ecf20Sopenharmony_ci u32 sc_smaer; 518c2ecf20Sopenharmony_ci u8 res2[4]; 528c2ecf20Sopenharmony_ci u32 sc_smevr; 538c2ecf20Sopenharmony_ci u32 sc_smctr; 548c2ecf20Sopenharmony_ci u32 sc_lmaer; 558c2ecf20Sopenharmony_ci u8 res3[4]; 568c2ecf20Sopenharmony_ci u32 sc_lmevr; 578c2ecf20Sopenharmony_ci u32 sc_lmctr; 588c2ecf20Sopenharmony_ci u8 res4[144]; 598c2ecf20Sopenharmony_ci} sysconf_85xx_cpm2_t; 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_citypedef union sys_conf { 628c2ecf20Sopenharmony_ci sysconf_82xx_cpm2_t siu_82xx; 638c2ecf20Sopenharmony_ci sysconf_85xx_cpm2_t siu_85xx; 648c2ecf20Sopenharmony_ci} sysconf_cpm2_t; 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci/* Memory controller registers. 698c2ecf20Sopenharmony_ci*/ 708c2ecf20Sopenharmony_citypedef struct mem_ctlr { 718c2ecf20Sopenharmony_ci u32 memc_br0; 728c2ecf20Sopenharmony_ci u32 memc_or0; 738c2ecf20Sopenharmony_ci u32 memc_br1; 748c2ecf20Sopenharmony_ci u32 memc_or1; 758c2ecf20Sopenharmony_ci u32 memc_br2; 768c2ecf20Sopenharmony_ci u32 memc_or2; 778c2ecf20Sopenharmony_ci u32 memc_br3; 788c2ecf20Sopenharmony_ci u32 memc_or3; 798c2ecf20Sopenharmony_ci u32 memc_br4; 808c2ecf20Sopenharmony_ci u32 memc_or4; 818c2ecf20Sopenharmony_ci u32 memc_br5; 828c2ecf20Sopenharmony_ci u32 memc_or5; 838c2ecf20Sopenharmony_ci u32 memc_br6; 848c2ecf20Sopenharmony_ci u32 memc_or6; 858c2ecf20Sopenharmony_ci u32 memc_br7; 868c2ecf20Sopenharmony_ci u32 memc_or7; 878c2ecf20Sopenharmony_ci u32 memc_br8; 888c2ecf20Sopenharmony_ci u32 memc_or8; 898c2ecf20Sopenharmony_ci u32 memc_br9; 908c2ecf20Sopenharmony_ci u32 memc_or9; 918c2ecf20Sopenharmony_ci u32 memc_br10; 928c2ecf20Sopenharmony_ci u32 memc_or10; 938c2ecf20Sopenharmony_ci u32 memc_br11; 948c2ecf20Sopenharmony_ci u32 memc_or11; 958c2ecf20Sopenharmony_ci u8 res1[8]; 968c2ecf20Sopenharmony_ci u32 memc_mar; 978c2ecf20Sopenharmony_ci u8 res2[4]; 988c2ecf20Sopenharmony_ci u32 memc_mamr; 998c2ecf20Sopenharmony_ci u32 memc_mbmr; 1008c2ecf20Sopenharmony_ci u32 memc_mcmr; 1018c2ecf20Sopenharmony_ci u8 res3[8]; 1028c2ecf20Sopenharmony_ci u16 memc_mptpr; 1038c2ecf20Sopenharmony_ci u8 res4[2]; 1048c2ecf20Sopenharmony_ci u32 memc_mdr; 1058c2ecf20Sopenharmony_ci u8 res5[4]; 1068c2ecf20Sopenharmony_ci u32 memc_psdmr; 1078c2ecf20Sopenharmony_ci u32 memc_lsdmr; 1088c2ecf20Sopenharmony_ci u8 memc_purt; 1098c2ecf20Sopenharmony_ci u8 res6[3]; 1108c2ecf20Sopenharmony_ci u8 memc_psrt; 1118c2ecf20Sopenharmony_ci u8 res7[3]; 1128c2ecf20Sopenharmony_ci u8 memc_lurt; 1138c2ecf20Sopenharmony_ci u8 res8[3]; 1148c2ecf20Sopenharmony_ci u8 memc_lsrt; 1158c2ecf20Sopenharmony_ci u8 res9[3]; 1168c2ecf20Sopenharmony_ci u32 memc_immr; 1178c2ecf20Sopenharmony_ci u32 memc_pcibr0; 1188c2ecf20Sopenharmony_ci u32 memc_pcibr1; 1198c2ecf20Sopenharmony_ci u8 res10[16]; 1208c2ecf20Sopenharmony_ci u32 memc_pcimsk0; 1218c2ecf20Sopenharmony_ci u32 memc_pcimsk1; 1228c2ecf20Sopenharmony_ci u8 res11[52]; 1238c2ecf20Sopenharmony_ci} memctl_cpm2_t; 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ci/* System Integration Timers. 1268c2ecf20Sopenharmony_ci*/ 1278c2ecf20Sopenharmony_citypedef struct sys_int_timers { 1288c2ecf20Sopenharmony_ci u8 res1[32]; 1298c2ecf20Sopenharmony_ci u16 sit_tmcntsc; 1308c2ecf20Sopenharmony_ci u8 res2[2]; 1318c2ecf20Sopenharmony_ci u32 sit_tmcnt; 1328c2ecf20Sopenharmony_ci u8 res3[4]; 1338c2ecf20Sopenharmony_ci u32 sit_tmcntal; 1348c2ecf20Sopenharmony_ci u8 res4[16]; 1358c2ecf20Sopenharmony_ci u16 sit_piscr; 1368c2ecf20Sopenharmony_ci u8 res5[2]; 1378c2ecf20Sopenharmony_ci u32 sit_pitc; 1388c2ecf20Sopenharmony_ci u32 sit_pitr; 1398c2ecf20Sopenharmony_ci u8 res6[94]; 1408c2ecf20Sopenharmony_ci u8 res7[390]; 1418c2ecf20Sopenharmony_ci} sit_cpm2_t; 1428c2ecf20Sopenharmony_ci 1438c2ecf20Sopenharmony_ci#define PISCR_PIRQ_MASK ((u16)0xff00) 1448c2ecf20Sopenharmony_ci#define PISCR_PS ((u16)0x0080) 1458c2ecf20Sopenharmony_ci#define PISCR_PIE ((u16)0x0004) 1468c2ecf20Sopenharmony_ci#define PISCR_PTF ((u16)0x0002) 1478c2ecf20Sopenharmony_ci#define PISCR_PTE ((u16)0x0001) 1488c2ecf20Sopenharmony_ci 1498c2ecf20Sopenharmony_ci/* PCI Controller. 1508c2ecf20Sopenharmony_ci*/ 1518c2ecf20Sopenharmony_citypedef struct pci_ctlr { 1528c2ecf20Sopenharmony_ci u32 pci_omisr; 1538c2ecf20Sopenharmony_ci u32 pci_omimr; 1548c2ecf20Sopenharmony_ci u8 res1[8]; 1558c2ecf20Sopenharmony_ci u32 pci_ifqpr; 1568c2ecf20Sopenharmony_ci u32 pci_ofqpr; 1578c2ecf20Sopenharmony_ci u8 res2[8]; 1588c2ecf20Sopenharmony_ci u32 pci_imr0; 1598c2ecf20Sopenharmony_ci u32 pci_imr1; 1608c2ecf20Sopenharmony_ci u32 pci_omr0; 1618c2ecf20Sopenharmony_ci u32 pci_omr1; 1628c2ecf20Sopenharmony_ci u32 pci_odr; 1638c2ecf20Sopenharmony_ci u8 res3[4]; 1648c2ecf20Sopenharmony_ci u32 pci_idr; 1658c2ecf20Sopenharmony_ci u8 res4[20]; 1668c2ecf20Sopenharmony_ci u32 pci_imisr; 1678c2ecf20Sopenharmony_ci u32 pci_imimr; 1688c2ecf20Sopenharmony_ci u8 res5[24]; 1698c2ecf20Sopenharmony_ci u32 pci_ifhpr; 1708c2ecf20Sopenharmony_ci u8 res6[4]; 1718c2ecf20Sopenharmony_ci u32 pci_iftpr; 1728c2ecf20Sopenharmony_ci u8 res7[4]; 1738c2ecf20Sopenharmony_ci u32 pci_iphpr; 1748c2ecf20Sopenharmony_ci u8 res8[4]; 1758c2ecf20Sopenharmony_ci u32 pci_iptpr; 1768c2ecf20Sopenharmony_ci u8 res9[4]; 1778c2ecf20Sopenharmony_ci u32 pci_ofhpr; 1788c2ecf20Sopenharmony_ci u8 res10[4]; 1798c2ecf20Sopenharmony_ci u32 pci_oftpr; 1808c2ecf20Sopenharmony_ci u8 res11[4]; 1818c2ecf20Sopenharmony_ci u32 pci_ophpr; 1828c2ecf20Sopenharmony_ci u8 res12[4]; 1838c2ecf20Sopenharmony_ci u32 pci_optpr; 1848c2ecf20Sopenharmony_ci u8 res13[8]; 1858c2ecf20Sopenharmony_ci u32 pci_mucr; 1868c2ecf20Sopenharmony_ci u8 res14[8]; 1878c2ecf20Sopenharmony_ci u32 pci_qbar; 1888c2ecf20Sopenharmony_ci u8 res15[12]; 1898c2ecf20Sopenharmony_ci u32 pci_dmamr0; 1908c2ecf20Sopenharmony_ci u32 pci_dmasr0; 1918c2ecf20Sopenharmony_ci u32 pci_dmacdar0; 1928c2ecf20Sopenharmony_ci u8 res16[4]; 1938c2ecf20Sopenharmony_ci u32 pci_dmasar0; 1948c2ecf20Sopenharmony_ci u8 res17[4]; 1958c2ecf20Sopenharmony_ci u32 pci_dmadar0; 1968c2ecf20Sopenharmony_ci u8 res18[4]; 1978c2ecf20Sopenharmony_ci u32 pci_dmabcr0; 1988c2ecf20Sopenharmony_ci u32 pci_dmandar0; 1998c2ecf20Sopenharmony_ci u8 res19[86]; 2008c2ecf20Sopenharmony_ci u32 pci_dmamr1; 2018c2ecf20Sopenharmony_ci u32 pci_dmasr1; 2028c2ecf20Sopenharmony_ci u32 pci_dmacdar1; 2038c2ecf20Sopenharmony_ci u8 res20[4]; 2048c2ecf20Sopenharmony_ci u32 pci_dmasar1; 2058c2ecf20Sopenharmony_ci u8 res21[4]; 2068c2ecf20Sopenharmony_ci u32 pci_dmadar1; 2078c2ecf20Sopenharmony_ci u8 res22[4]; 2088c2ecf20Sopenharmony_ci u32 pci_dmabcr1; 2098c2ecf20Sopenharmony_ci u32 pci_dmandar1; 2108c2ecf20Sopenharmony_ci u8 res23[88]; 2118c2ecf20Sopenharmony_ci u32 pci_dmamr2; 2128c2ecf20Sopenharmony_ci u32 pci_dmasr2; 2138c2ecf20Sopenharmony_ci u32 pci_dmacdar2; 2148c2ecf20Sopenharmony_ci u8 res24[4]; 2158c2ecf20Sopenharmony_ci u32 pci_dmasar2; 2168c2ecf20Sopenharmony_ci u8 res25[4]; 2178c2ecf20Sopenharmony_ci u32 pci_dmadar2; 2188c2ecf20Sopenharmony_ci u8 res26[4]; 2198c2ecf20Sopenharmony_ci u32 pci_dmabcr2; 2208c2ecf20Sopenharmony_ci u32 pci_dmandar2; 2218c2ecf20Sopenharmony_ci u8 res27[88]; 2228c2ecf20Sopenharmony_ci u32 pci_dmamr3; 2238c2ecf20Sopenharmony_ci u32 pci_dmasr3; 2248c2ecf20Sopenharmony_ci u32 pci_dmacdar3; 2258c2ecf20Sopenharmony_ci u8 res28[4]; 2268c2ecf20Sopenharmony_ci u32 pci_dmasar3; 2278c2ecf20Sopenharmony_ci u8 res29[4]; 2288c2ecf20Sopenharmony_ci u32 pci_dmadar3; 2298c2ecf20Sopenharmony_ci u8 res30[4]; 2308c2ecf20Sopenharmony_ci u32 pci_dmabcr3; 2318c2ecf20Sopenharmony_ci u32 pci_dmandar3; 2328c2ecf20Sopenharmony_ci u8 res31[344]; 2338c2ecf20Sopenharmony_ci u32 pci_potar0; 2348c2ecf20Sopenharmony_ci u8 res32[4]; 2358c2ecf20Sopenharmony_ci u32 pci_pobar0; 2368c2ecf20Sopenharmony_ci u8 res33[4]; 2378c2ecf20Sopenharmony_ci u32 pci_pocmr0; 2388c2ecf20Sopenharmony_ci u8 res34[4]; 2398c2ecf20Sopenharmony_ci u32 pci_potar1; 2408c2ecf20Sopenharmony_ci u8 res35[4]; 2418c2ecf20Sopenharmony_ci u32 pci_pobar1; 2428c2ecf20Sopenharmony_ci u8 res36[4]; 2438c2ecf20Sopenharmony_ci u32 pci_pocmr1; 2448c2ecf20Sopenharmony_ci u8 res37[4]; 2458c2ecf20Sopenharmony_ci u32 pci_potar2; 2468c2ecf20Sopenharmony_ci u8 res38[4]; 2478c2ecf20Sopenharmony_ci u32 pci_pobar2; 2488c2ecf20Sopenharmony_ci u8 res39[4]; 2498c2ecf20Sopenharmony_ci u32 pci_pocmr2; 2508c2ecf20Sopenharmony_ci u8 res40[50]; 2518c2ecf20Sopenharmony_ci u32 pci_ptcr; 2528c2ecf20Sopenharmony_ci u32 pci_gpcr; 2538c2ecf20Sopenharmony_ci u32 pci_gcr; 2548c2ecf20Sopenharmony_ci u32 pci_esr; 2558c2ecf20Sopenharmony_ci u32 pci_emr; 2568c2ecf20Sopenharmony_ci u32 pci_ecr; 2578c2ecf20Sopenharmony_ci u32 pci_eacr; 2588c2ecf20Sopenharmony_ci u8 res41[4]; 2598c2ecf20Sopenharmony_ci u32 pci_edcr; 2608c2ecf20Sopenharmony_ci u8 res42[4]; 2618c2ecf20Sopenharmony_ci u32 pci_eccr; 2628c2ecf20Sopenharmony_ci u8 res43[44]; 2638c2ecf20Sopenharmony_ci u32 pci_pitar1; 2648c2ecf20Sopenharmony_ci u8 res44[4]; 2658c2ecf20Sopenharmony_ci u32 pci_pibar1; 2668c2ecf20Sopenharmony_ci u8 res45[4]; 2678c2ecf20Sopenharmony_ci u32 pci_picmr1; 2688c2ecf20Sopenharmony_ci u8 res46[4]; 2698c2ecf20Sopenharmony_ci u32 pci_pitar0; 2708c2ecf20Sopenharmony_ci u8 res47[4]; 2718c2ecf20Sopenharmony_ci u32 pci_pibar0; 2728c2ecf20Sopenharmony_ci u8 res48[4]; 2738c2ecf20Sopenharmony_ci u32 pci_picmr0; 2748c2ecf20Sopenharmony_ci u8 res49[4]; 2758c2ecf20Sopenharmony_ci u32 pci_cfg_addr; 2768c2ecf20Sopenharmony_ci u32 pci_cfg_data; 2778c2ecf20Sopenharmony_ci u32 pci_int_ack; 2788c2ecf20Sopenharmony_ci u8 res50[756]; 2798c2ecf20Sopenharmony_ci} pci_cpm2_t; 2808c2ecf20Sopenharmony_ci 2818c2ecf20Sopenharmony_ci/* Interrupt Controller. 2828c2ecf20Sopenharmony_ci*/ 2838c2ecf20Sopenharmony_citypedef struct interrupt_controller { 2848c2ecf20Sopenharmony_ci u16 ic_sicr; 2858c2ecf20Sopenharmony_ci u8 res1[2]; 2868c2ecf20Sopenharmony_ci u32 ic_sivec; 2878c2ecf20Sopenharmony_ci u32 ic_sipnrh; 2888c2ecf20Sopenharmony_ci u32 ic_sipnrl; 2898c2ecf20Sopenharmony_ci u32 ic_siprr; 2908c2ecf20Sopenharmony_ci u32 ic_scprrh; 2918c2ecf20Sopenharmony_ci u32 ic_scprrl; 2928c2ecf20Sopenharmony_ci u32 ic_simrh; 2938c2ecf20Sopenharmony_ci u32 ic_simrl; 2948c2ecf20Sopenharmony_ci u32 ic_siexr; 2958c2ecf20Sopenharmony_ci u8 res2[88]; 2968c2ecf20Sopenharmony_ci} intctl_cpm2_t; 2978c2ecf20Sopenharmony_ci 2988c2ecf20Sopenharmony_ci/* Clocks and Reset. 2998c2ecf20Sopenharmony_ci*/ 3008c2ecf20Sopenharmony_citypedef struct clk_and_reset { 3018c2ecf20Sopenharmony_ci u32 car_sccr; 3028c2ecf20Sopenharmony_ci u8 res1[4]; 3038c2ecf20Sopenharmony_ci u32 car_scmr; 3048c2ecf20Sopenharmony_ci u8 res2[4]; 3058c2ecf20Sopenharmony_ci u32 car_rsr; 3068c2ecf20Sopenharmony_ci u32 car_rmr; 3078c2ecf20Sopenharmony_ci u8 res[104]; 3088c2ecf20Sopenharmony_ci} car_cpm2_t; 3098c2ecf20Sopenharmony_ci 3108c2ecf20Sopenharmony_ci/* Input/Output Port control/status registers. 3118c2ecf20Sopenharmony_ci * Names consistent with processor manual, although they are different 3128c2ecf20Sopenharmony_ci * from the original 8xx names....... 3138c2ecf20Sopenharmony_ci */ 3148c2ecf20Sopenharmony_citypedef struct io_port { 3158c2ecf20Sopenharmony_ci u32 iop_pdira; 3168c2ecf20Sopenharmony_ci u32 iop_ppara; 3178c2ecf20Sopenharmony_ci u32 iop_psora; 3188c2ecf20Sopenharmony_ci u32 iop_podra; 3198c2ecf20Sopenharmony_ci u32 iop_pdata; 3208c2ecf20Sopenharmony_ci u8 res1[12]; 3218c2ecf20Sopenharmony_ci u32 iop_pdirb; 3228c2ecf20Sopenharmony_ci u32 iop_pparb; 3238c2ecf20Sopenharmony_ci u32 iop_psorb; 3248c2ecf20Sopenharmony_ci u32 iop_podrb; 3258c2ecf20Sopenharmony_ci u32 iop_pdatb; 3268c2ecf20Sopenharmony_ci u8 res2[12]; 3278c2ecf20Sopenharmony_ci u32 iop_pdirc; 3288c2ecf20Sopenharmony_ci u32 iop_pparc; 3298c2ecf20Sopenharmony_ci u32 iop_psorc; 3308c2ecf20Sopenharmony_ci u32 iop_podrc; 3318c2ecf20Sopenharmony_ci u32 iop_pdatc; 3328c2ecf20Sopenharmony_ci u8 res3[12]; 3338c2ecf20Sopenharmony_ci u32 iop_pdird; 3348c2ecf20Sopenharmony_ci u32 iop_ppard; 3358c2ecf20Sopenharmony_ci u32 iop_psord; 3368c2ecf20Sopenharmony_ci u32 iop_podrd; 3378c2ecf20Sopenharmony_ci u32 iop_pdatd; 3388c2ecf20Sopenharmony_ci u8 res4[12]; 3398c2ecf20Sopenharmony_ci} iop_cpm2_t; 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_ci/* Communication Processor Module Timers 3428c2ecf20Sopenharmony_ci*/ 3438c2ecf20Sopenharmony_citypedef struct cpm_timers { 3448c2ecf20Sopenharmony_ci u8 cpmt_tgcr1; 3458c2ecf20Sopenharmony_ci u8 res1[3]; 3468c2ecf20Sopenharmony_ci u8 cpmt_tgcr2; 3478c2ecf20Sopenharmony_ci u8 res2[11]; 3488c2ecf20Sopenharmony_ci u16 cpmt_tmr1; 3498c2ecf20Sopenharmony_ci u16 cpmt_tmr2; 3508c2ecf20Sopenharmony_ci u16 cpmt_trr1; 3518c2ecf20Sopenharmony_ci u16 cpmt_trr2; 3528c2ecf20Sopenharmony_ci u16 cpmt_tcr1; 3538c2ecf20Sopenharmony_ci u16 cpmt_tcr2; 3548c2ecf20Sopenharmony_ci u16 cpmt_tcn1; 3558c2ecf20Sopenharmony_ci u16 cpmt_tcn2; 3568c2ecf20Sopenharmony_ci u16 cpmt_tmr3; 3578c2ecf20Sopenharmony_ci u16 cpmt_tmr4; 3588c2ecf20Sopenharmony_ci u16 cpmt_trr3; 3598c2ecf20Sopenharmony_ci u16 cpmt_trr4; 3608c2ecf20Sopenharmony_ci u16 cpmt_tcr3; 3618c2ecf20Sopenharmony_ci u16 cpmt_tcr4; 3628c2ecf20Sopenharmony_ci u16 cpmt_tcn3; 3638c2ecf20Sopenharmony_ci u16 cpmt_tcn4; 3648c2ecf20Sopenharmony_ci u16 cpmt_ter1; 3658c2ecf20Sopenharmony_ci u16 cpmt_ter2; 3668c2ecf20Sopenharmony_ci u16 cpmt_ter3; 3678c2ecf20Sopenharmony_ci u16 cpmt_ter4; 3688c2ecf20Sopenharmony_ci u8 res3[584]; 3698c2ecf20Sopenharmony_ci} cpmtimer_cpm2_t; 3708c2ecf20Sopenharmony_ci 3718c2ecf20Sopenharmony_ci/* DMA control/status registers. 3728c2ecf20Sopenharmony_ci*/ 3738c2ecf20Sopenharmony_citypedef struct sdma_csr { 3748c2ecf20Sopenharmony_ci u8 res0[24]; 3758c2ecf20Sopenharmony_ci u8 sdma_sdsr; 3768c2ecf20Sopenharmony_ci u8 res1[3]; 3778c2ecf20Sopenharmony_ci u8 sdma_sdmr; 3788c2ecf20Sopenharmony_ci u8 res2[3]; 3798c2ecf20Sopenharmony_ci u8 sdma_idsr1; 3808c2ecf20Sopenharmony_ci u8 res3[3]; 3818c2ecf20Sopenharmony_ci u8 sdma_idmr1; 3828c2ecf20Sopenharmony_ci u8 res4[3]; 3838c2ecf20Sopenharmony_ci u8 sdma_idsr2; 3848c2ecf20Sopenharmony_ci u8 res5[3]; 3858c2ecf20Sopenharmony_ci u8 sdma_idmr2; 3868c2ecf20Sopenharmony_ci u8 res6[3]; 3878c2ecf20Sopenharmony_ci u8 sdma_idsr3; 3888c2ecf20Sopenharmony_ci u8 res7[3]; 3898c2ecf20Sopenharmony_ci u8 sdma_idmr3; 3908c2ecf20Sopenharmony_ci u8 res8[3]; 3918c2ecf20Sopenharmony_ci u8 sdma_idsr4; 3928c2ecf20Sopenharmony_ci u8 res9[3]; 3938c2ecf20Sopenharmony_ci u8 sdma_idmr4; 3948c2ecf20Sopenharmony_ci u8 res10[707]; 3958c2ecf20Sopenharmony_ci} sdma_cpm2_t; 3968c2ecf20Sopenharmony_ci 3978c2ecf20Sopenharmony_ci/* Fast controllers 3988c2ecf20Sopenharmony_ci*/ 3998c2ecf20Sopenharmony_citypedef struct fcc { 4008c2ecf20Sopenharmony_ci u32 fcc_gfmr; 4018c2ecf20Sopenharmony_ci u32 fcc_fpsmr; 4028c2ecf20Sopenharmony_ci u16 fcc_ftodr; 4038c2ecf20Sopenharmony_ci u8 res1[2]; 4048c2ecf20Sopenharmony_ci u16 fcc_fdsr; 4058c2ecf20Sopenharmony_ci u8 res2[2]; 4068c2ecf20Sopenharmony_ci u16 fcc_fcce; 4078c2ecf20Sopenharmony_ci u8 res3[2]; 4088c2ecf20Sopenharmony_ci u16 fcc_fccm; 4098c2ecf20Sopenharmony_ci u8 res4[2]; 4108c2ecf20Sopenharmony_ci u8 fcc_fccs; 4118c2ecf20Sopenharmony_ci u8 res5[3]; 4128c2ecf20Sopenharmony_ci u8 fcc_ftirr_phy[4]; 4138c2ecf20Sopenharmony_ci} fcc_t; 4148c2ecf20Sopenharmony_ci 4158c2ecf20Sopenharmony_ci/* Fast controllers continued 4168c2ecf20Sopenharmony_ci */ 4178c2ecf20Sopenharmony_citypedef struct fcc_c { 4188c2ecf20Sopenharmony_ci u32 fcc_firper; 4198c2ecf20Sopenharmony_ci u32 fcc_firer; 4208c2ecf20Sopenharmony_ci u32 fcc_firsr_hi; 4218c2ecf20Sopenharmony_ci u32 fcc_firsr_lo; 4228c2ecf20Sopenharmony_ci u8 fcc_gfemr; 4238c2ecf20Sopenharmony_ci u8 res1[15]; 4248c2ecf20Sopenharmony_ci} fcc_c_t; 4258c2ecf20Sopenharmony_ci 4268c2ecf20Sopenharmony_ci/* TC Layer 4278c2ecf20Sopenharmony_ci */ 4288c2ecf20Sopenharmony_citypedef struct tclayer { 4298c2ecf20Sopenharmony_ci u16 tc_tcmode; 4308c2ecf20Sopenharmony_ci u16 tc_cdsmr; 4318c2ecf20Sopenharmony_ci u16 tc_tcer; 4328c2ecf20Sopenharmony_ci u16 tc_rcc; 4338c2ecf20Sopenharmony_ci u16 tc_tcmr; 4348c2ecf20Sopenharmony_ci u16 tc_fcc; 4358c2ecf20Sopenharmony_ci u16 tc_ccc; 4368c2ecf20Sopenharmony_ci u16 tc_icc; 4378c2ecf20Sopenharmony_ci u16 tc_tcc; 4388c2ecf20Sopenharmony_ci u16 tc_ecc; 4398c2ecf20Sopenharmony_ci u8 res1[12]; 4408c2ecf20Sopenharmony_ci} tclayer_t; 4418c2ecf20Sopenharmony_ci 4428c2ecf20Sopenharmony_ci 4438c2ecf20Sopenharmony_ci/* I2C 4448c2ecf20Sopenharmony_ci*/ 4458c2ecf20Sopenharmony_citypedef struct i2c { 4468c2ecf20Sopenharmony_ci u8 i2c_i2mod; 4478c2ecf20Sopenharmony_ci u8 res1[3]; 4488c2ecf20Sopenharmony_ci u8 i2c_i2add; 4498c2ecf20Sopenharmony_ci u8 res2[3]; 4508c2ecf20Sopenharmony_ci u8 i2c_i2brg; 4518c2ecf20Sopenharmony_ci u8 res3[3]; 4528c2ecf20Sopenharmony_ci u8 i2c_i2com; 4538c2ecf20Sopenharmony_ci u8 res4[3]; 4548c2ecf20Sopenharmony_ci u8 i2c_i2cer; 4558c2ecf20Sopenharmony_ci u8 res5[3]; 4568c2ecf20Sopenharmony_ci u8 i2c_i2cmr; 4578c2ecf20Sopenharmony_ci u8 res6[331]; 4588c2ecf20Sopenharmony_ci} i2c_cpm2_t; 4598c2ecf20Sopenharmony_ci 4608c2ecf20Sopenharmony_citypedef struct scc { /* Serial communication channels */ 4618c2ecf20Sopenharmony_ci u32 scc_gsmrl; 4628c2ecf20Sopenharmony_ci u32 scc_gsmrh; 4638c2ecf20Sopenharmony_ci u16 scc_psmr; 4648c2ecf20Sopenharmony_ci u8 res1[2]; 4658c2ecf20Sopenharmony_ci u16 scc_todr; 4668c2ecf20Sopenharmony_ci u16 scc_dsr; 4678c2ecf20Sopenharmony_ci u16 scc_scce; 4688c2ecf20Sopenharmony_ci u8 res2[2]; 4698c2ecf20Sopenharmony_ci u16 scc_sccm; 4708c2ecf20Sopenharmony_ci u8 res3; 4718c2ecf20Sopenharmony_ci u8 scc_sccs; 4728c2ecf20Sopenharmony_ci u8 res4[8]; 4738c2ecf20Sopenharmony_ci} scc_t; 4748c2ecf20Sopenharmony_ci 4758c2ecf20Sopenharmony_citypedef struct smc { /* Serial management channels */ 4768c2ecf20Sopenharmony_ci u8 res1[2]; 4778c2ecf20Sopenharmony_ci u16 smc_smcmr; 4788c2ecf20Sopenharmony_ci u8 res2[2]; 4798c2ecf20Sopenharmony_ci u8 smc_smce; 4808c2ecf20Sopenharmony_ci u8 res3[3]; 4818c2ecf20Sopenharmony_ci u8 smc_smcm; 4828c2ecf20Sopenharmony_ci u8 res4[5]; 4838c2ecf20Sopenharmony_ci} smc_t; 4848c2ecf20Sopenharmony_ci 4858c2ecf20Sopenharmony_ci/* Serial Peripheral Interface. 4868c2ecf20Sopenharmony_ci*/ 4878c2ecf20Sopenharmony_citypedef struct spi_ctrl { 4888c2ecf20Sopenharmony_ci u16 spi_spmode; 4898c2ecf20Sopenharmony_ci u8 res1[4]; 4908c2ecf20Sopenharmony_ci u8 spi_spie; 4918c2ecf20Sopenharmony_ci u8 res2[3]; 4928c2ecf20Sopenharmony_ci u8 spi_spim; 4938c2ecf20Sopenharmony_ci u8 res3[2]; 4948c2ecf20Sopenharmony_ci u8 spi_spcom; 4958c2ecf20Sopenharmony_ci u8 res4[82]; 4968c2ecf20Sopenharmony_ci} spictl_cpm2_t; 4978c2ecf20Sopenharmony_ci 4988c2ecf20Sopenharmony_ci/* CPM Mux. 4998c2ecf20Sopenharmony_ci*/ 5008c2ecf20Sopenharmony_citypedef struct cpmux { 5018c2ecf20Sopenharmony_ci u8 cmx_si1cr; 5028c2ecf20Sopenharmony_ci u8 res1; 5038c2ecf20Sopenharmony_ci u8 cmx_si2cr; 5048c2ecf20Sopenharmony_ci u8 res2; 5058c2ecf20Sopenharmony_ci u32 cmx_fcr; 5068c2ecf20Sopenharmony_ci u32 cmx_scr; 5078c2ecf20Sopenharmony_ci u8 cmx_smr; 5088c2ecf20Sopenharmony_ci u8 res3; 5098c2ecf20Sopenharmony_ci u16 cmx_uar; 5108c2ecf20Sopenharmony_ci u8 res4[16]; 5118c2ecf20Sopenharmony_ci} cpmux_t; 5128c2ecf20Sopenharmony_ci 5138c2ecf20Sopenharmony_ci/* SIRAM control 5148c2ecf20Sopenharmony_ci*/ 5158c2ecf20Sopenharmony_citypedef struct siram { 5168c2ecf20Sopenharmony_ci u16 si_amr; 5178c2ecf20Sopenharmony_ci u16 si_bmr; 5188c2ecf20Sopenharmony_ci u16 si_cmr; 5198c2ecf20Sopenharmony_ci u16 si_dmr; 5208c2ecf20Sopenharmony_ci u8 si_gmr; 5218c2ecf20Sopenharmony_ci u8 res1; 5228c2ecf20Sopenharmony_ci u8 si_cmdr; 5238c2ecf20Sopenharmony_ci u8 res2; 5248c2ecf20Sopenharmony_ci u8 si_str; 5258c2ecf20Sopenharmony_ci u8 res3; 5268c2ecf20Sopenharmony_ci u16 si_rsr; 5278c2ecf20Sopenharmony_ci} siramctl_t; 5288c2ecf20Sopenharmony_ci 5298c2ecf20Sopenharmony_citypedef struct mcc { 5308c2ecf20Sopenharmony_ci u16 mcc_mcce; 5318c2ecf20Sopenharmony_ci u8 res1[2]; 5328c2ecf20Sopenharmony_ci u16 mcc_mccm; 5338c2ecf20Sopenharmony_ci u8 res2[2]; 5348c2ecf20Sopenharmony_ci u8 mcc_mccf; 5358c2ecf20Sopenharmony_ci u8 res3[7]; 5368c2ecf20Sopenharmony_ci} mcc_t; 5378c2ecf20Sopenharmony_ci 5388c2ecf20Sopenharmony_citypedef struct comm_proc { 5398c2ecf20Sopenharmony_ci u32 cp_cpcr; 5408c2ecf20Sopenharmony_ci u32 cp_rccr; 5418c2ecf20Sopenharmony_ci u8 res1[14]; 5428c2ecf20Sopenharmony_ci u16 cp_rter; 5438c2ecf20Sopenharmony_ci u8 res2[2]; 5448c2ecf20Sopenharmony_ci u16 cp_rtmr; 5458c2ecf20Sopenharmony_ci u16 cp_rtscr; 5468c2ecf20Sopenharmony_ci u8 res3[2]; 5478c2ecf20Sopenharmony_ci u32 cp_rtsr; 5488c2ecf20Sopenharmony_ci u8 res4[12]; 5498c2ecf20Sopenharmony_ci} cpm_cpm2_t; 5508c2ecf20Sopenharmony_ci 5518c2ecf20Sopenharmony_ci/* USB Controller. 5528c2ecf20Sopenharmony_ci*/ 5538c2ecf20Sopenharmony_citypedef struct cpm_usb_ctlr { 5548c2ecf20Sopenharmony_ci u8 usb_usmod; 5558c2ecf20Sopenharmony_ci u8 usb_usadr; 5568c2ecf20Sopenharmony_ci u8 usb_uscom; 5578c2ecf20Sopenharmony_ci u8 res1[1]; 5588c2ecf20Sopenharmony_ci __be16 usb_usep[4]; 5598c2ecf20Sopenharmony_ci u8 res2[4]; 5608c2ecf20Sopenharmony_ci __be16 usb_usber; 5618c2ecf20Sopenharmony_ci u8 res3[2]; 5628c2ecf20Sopenharmony_ci __be16 usb_usbmr; 5638c2ecf20Sopenharmony_ci u8 usb_usbs; 5648c2ecf20Sopenharmony_ci u8 res4[7]; 5658c2ecf20Sopenharmony_ci} usb_cpm2_t; 5668c2ecf20Sopenharmony_ci 5678c2ecf20Sopenharmony_ci/* ...and the whole thing wrapped up.... 5688c2ecf20Sopenharmony_ci*/ 5698c2ecf20Sopenharmony_ci 5708c2ecf20Sopenharmony_citypedef struct immap { 5718c2ecf20Sopenharmony_ci /* Some references are into the unique and known dpram spaces, 5728c2ecf20Sopenharmony_ci * others are from the generic base. 5738c2ecf20Sopenharmony_ci */ 5748c2ecf20Sopenharmony_ci#define im_dprambase im_dpram1 5758c2ecf20Sopenharmony_ci u8 im_dpram1[16*1024]; 5768c2ecf20Sopenharmony_ci u8 res1[16*1024]; 5778c2ecf20Sopenharmony_ci u8 im_dpram2[4*1024]; 5788c2ecf20Sopenharmony_ci u8 res2[8*1024]; 5798c2ecf20Sopenharmony_ci u8 im_dpram3[4*1024]; 5808c2ecf20Sopenharmony_ci u8 res3[16*1024]; 5818c2ecf20Sopenharmony_ci 5828c2ecf20Sopenharmony_ci sysconf_cpm2_t im_siu_conf; /* SIU Configuration */ 5838c2ecf20Sopenharmony_ci memctl_cpm2_t im_memctl; /* Memory Controller */ 5848c2ecf20Sopenharmony_ci sit_cpm2_t im_sit; /* System Integration Timers */ 5858c2ecf20Sopenharmony_ci pci_cpm2_t im_pci; /* PCI Controller */ 5868c2ecf20Sopenharmony_ci intctl_cpm2_t im_intctl; /* Interrupt Controller */ 5878c2ecf20Sopenharmony_ci car_cpm2_t im_clkrst; /* Clocks and reset */ 5888c2ecf20Sopenharmony_ci iop_cpm2_t im_ioport; /* IO Port control/status */ 5898c2ecf20Sopenharmony_ci cpmtimer_cpm2_t im_cpmtimer; /* CPM timers */ 5908c2ecf20Sopenharmony_ci sdma_cpm2_t im_sdma; /* SDMA control/status */ 5918c2ecf20Sopenharmony_ci 5928c2ecf20Sopenharmony_ci fcc_t im_fcc[3]; /* Three FCCs */ 5938c2ecf20Sopenharmony_ci u8 res4z[32]; 5948c2ecf20Sopenharmony_ci fcc_c_t im_fcc_c[3]; /* Continued FCCs */ 5958c2ecf20Sopenharmony_ci 5968c2ecf20Sopenharmony_ci u8 res4[32]; 5978c2ecf20Sopenharmony_ci 5988c2ecf20Sopenharmony_ci tclayer_t im_tclayer[8]; /* Eight TCLayers */ 5998c2ecf20Sopenharmony_ci u16 tc_tcgsr; 6008c2ecf20Sopenharmony_ci u16 tc_tcger; 6018c2ecf20Sopenharmony_ci 6028c2ecf20Sopenharmony_ci /* First set of baud rate generators. 6038c2ecf20Sopenharmony_ci */ 6048c2ecf20Sopenharmony_ci u8 res[236]; 6058c2ecf20Sopenharmony_ci u32 im_brgc5; 6068c2ecf20Sopenharmony_ci u32 im_brgc6; 6078c2ecf20Sopenharmony_ci u32 im_brgc7; 6088c2ecf20Sopenharmony_ci u32 im_brgc8; 6098c2ecf20Sopenharmony_ci 6108c2ecf20Sopenharmony_ci u8 res5[608]; 6118c2ecf20Sopenharmony_ci 6128c2ecf20Sopenharmony_ci i2c_cpm2_t im_i2c; /* I2C control/status */ 6138c2ecf20Sopenharmony_ci cpm_cpm2_t im_cpm; /* Communication processor */ 6148c2ecf20Sopenharmony_ci 6158c2ecf20Sopenharmony_ci /* Second set of baud rate generators. 6168c2ecf20Sopenharmony_ci */ 6178c2ecf20Sopenharmony_ci u32 im_brgc1; 6188c2ecf20Sopenharmony_ci u32 im_brgc2; 6198c2ecf20Sopenharmony_ci u32 im_brgc3; 6208c2ecf20Sopenharmony_ci u32 im_brgc4; 6218c2ecf20Sopenharmony_ci 6228c2ecf20Sopenharmony_ci scc_t im_scc[4]; /* Four SCCs */ 6238c2ecf20Sopenharmony_ci smc_t im_smc[2]; /* Couple of SMCs */ 6248c2ecf20Sopenharmony_ci spictl_cpm2_t im_spi; /* A SPI */ 6258c2ecf20Sopenharmony_ci cpmux_t im_cpmux; /* CPM clock route mux */ 6268c2ecf20Sopenharmony_ci siramctl_t im_siramctl1; /* First SI RAM Control */ 6278c2ecf20Sopenharmony_ci mcc_t im_mcc1; /* First MCC */ 6288c2ecf20Sopenharmony_ci siramctl_t im_siramctl2; /* Second SI RAM Control */ 6298c2ecf20Sopenharmony_ci mcc_t im_mcc2; /* Second MCC */ 6308c2ecf20Sopenharmony_ci usb_cpm2_t im_usb; /* USB Controller */ 6318c2ecf20Sopenharmony_ci 6328c2ecf20Sopenharmony_ci u8 res6[1153]; 6338c2ecf20Sopenharmony_ci 6348c2ecf20Sopenharmony_ci u16 im_si1txram[256]; 6358c2ecf20Sopenharmony_ci u8 res7[512]; 6368c2ecf20Sopenharmony_ci u16 im_si1rxram[256]; 6378c2ecf20Sopenharmony_ci u8 res8[512]; 6388c2ecf20Sopenharmony_ci u16 im_si2txram[256]; 6398c2ecf20Sopenharmony_ci u8 res9[512]; 6408c2ecf20Sopenharmony_ci u16 im_si2rxram[256]; 6418c2ecf20Sopenharmony_ci u8 res10[512]; 6428c2ecf20Sopenharmony_ci u8 res11[4096]; 6438c2ecf20Sopenharmony_ci} cpm2_map_t; 6448c2ecf20Sopenharmony_ci 6458c2ecf20Sopenharmony_ciextern cpm2_map_t __iomem *cpm2_immr; 6468c2ecf20Sopenharmony_ci 6478c2ecf20Sopenharmony_ci#endif /* __IMMAP_CPM2__ */ 6488c2ecf20Sopenharmony_ci#endif /* __KERNEL__ */ 649