>> +#define PSIHB_MMIO_BAR 0x00 >> +#define PSIHB_MMIO_FSPBAR 0x08 >> +#define PSIHB_MMIO_CR 0x20 >> +#define PSIHB_MMIO_SEMR 0x28 >> +#define PSIHB_MMIO_XIVR_PSI 0x30 >> +#define PSIHB_MMIO_SCR 0x40 >> +#define PSIHB_MMIO_CCR 0x48 >> +#define PSIHB_MMIO_DMA_UPADD 0x50 >> +#define PSIHB_MMIO_IRQ_STAT 0x58 >> +#define PSIHB_MMIO_XIVR_OCC 0x60 >> +#define PSIHB_MMIO_XIVR_FSI 0x68 >> +#define PSIHB_MMIO_XIVR_LPCI2C 0x70 >> +#define PSIHB_MMIO_XIVR_LOCERR 0x78 >> +#define PSIHB_MMIO_XIVR_EXT 0x80 >> +#define PSIHB_MMIO_IRSN 0x88 >> +#define PSIHB_MMIO_MAX 0x100 >> + >> +static const uint32_t psi_mmio_to_xscom[PSIHB_MMIO_MAX / 8] = { > > AFAICT, this table lookup works out as: > xscom_addr = (mmio_addr / 8) + 0xa > > Which makes an actual table seem like overkill. > > > And in fact, since you have a /8 here, and the *8 in the xscom address > space encoding, I suspect you could just alias the same IO region into > both SCOM and MMIO address spaces to avoid having two dispatchers.
yes. I think this is possible. I will work on it. Thanks, C.