powerpc: mpc8xx: CPM parameter RAM can be anywhere

With relocation, CPM parameter RAM can be anywhere in the
dual port RAM, so don't split dual port RAM.

Remove dparam and dparam16 members of struct comm_proc

PROFF_XXX become offsets from the start of dual port RAM,
then they are now consistant with the offsets in RPBASE
registers.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
This commit is contained in:
Christophe Leroy 2023-05-03 10:31:19 +02:00
parent 019b39b736
commit fdd243d81b
5 changed files with 13 additions and 19 deletions

View file

@ -127,7 +127,7 @@ static int check_CPU(long clock, uint pvr, uint immr)
return -1; return -1;
k = (immr << 16) | k = (immr << 16) |
in_be16(&immap->im_cpm.cp_dparam16[PROFF_REVNUM / sizeof(u16)]); in_be16((u16 __iomem *)&immap->im_cpm.cp_dpmem[PROFF_REVNUM]);
/* /*
* Some boards use sockets so different CPUs can be used. * Some boards use sockets so different CPUs can be used.

View file

@ -92,15 +92,15 @@ typedef struct cpm_buf_desc {
/* Parameter RAM offsets. /* Parameter RAM offsets.
*/ */
#define PROFF_SCC1 ((uint)0x0000) #define PROFF_SCC1 ((uint)0x1c00)
#define PROFF_IIC ((uint)0x0080) #define PROFF_IIC ((uint)0x1c80)
#define PROFF_REVNUM ((uint)0x00b0) #define PROFF_REVNUM ((uint)0x1cb0)
#define PROFF_SCC2 ((uint)0x0100) #define PROFF_SCC2 ((uint)0x1d00)
#define PROFF_SPI ((uint)0x0180) #define PROFF_SPI ((uint)0x1d80)
#define PROFF_SCC3 ((uint)0x0200) #define PROFF_SCC3 ((uint)0x1e00)
#define PROFF_SMC1 ((uint)0x0280) #define PROFF_SMC1 ((uint)0x1e80)
#define PROFF_SCC4 ((uint)0x0300) #define PROFF_SCC4 ((uint)0x1f00)
#define PROFF_SMC2 ((uint)0x0380) #define PROFF_SMC2 ((uint)0x1f80)
/* Define enough so I can at least use the serial port as a UART. /* Define enough so I can at least use the serial port as a UART.
*/ */

View file

@ -437,13 +437,7 @@ typedef struct comm_proc {
* depending upon the devices used and options chosen. * depending upon the devices used and options chosen.
* Some processors don't have all of it populated. * Some processors don't have all of it populated.
*/ */
u_char cp_dpmem[0x1C00]; /* BD / Data / ucode */ u_char cp_dpmem[0x2000]; /* BD / Data / ucode / Param RAM */
/* Parameter RAM */
union {
u_char cp_dparam[0x400];
u16 cp_dparam16[0x200];
};
} cpm8xx_t; } cpm8xx_t;
/* Internal memory map. /* Internal memory map.

View file

@ -89,7 +89,7 @@ static int serial_mpc8xx_probe(struct udevice *dev)
/* initialize pointers to SMC */ /* initialize pointers to SMC */
sp = cp->cp_smc + SMC_INDEX; sp = cp->cp_smc + SMC_INDEX;
up = (smc_uart_t __iomem *)&cp->cp_dparam[PROFF_SMC]; up = (smc_uart_t __iomem *)&cp->cp_dpmem[PROFF_SMC];
/* Disable relocation */ /* Disable relocation */
out_be16(&up->smc_rpbase, 0); out_be16(&up->smc_rpbase, 0);

View file

@ -51,7 +51,7 @@ static int mpc8xx_spi_probe(struct udevice *dev)
{ {
immap_t __iomem *immr = (immap_t __iomem *)CONFIG_SYS_IMMR; immap_t __iomem *immr = (immap_t __iomem *)CONFIG_SYS_IMMR;
cpm8xx_t __iomem *cp = &immr->im_cpm; cpm8xx_t __iomem *cp = &immr->im_cpm;
spi_t __iomem *spi = (spi_t __iomem *)&cp->cp_dparam[PROFF_SPI]; spi_t __iomem *spi = (spi_t __iomem *)&cp->cp_dpmem[PROFF_SPI];
cbd_t __iomem *tbdf, *rbdf; cbd_t __iomem *tbdf, *rbdf;
/* Disable relocation */ /* Disable relocation */