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