|
@@ -4,6 +4,7 @@
|
|
|
* also relocates SMC2, but this would require additional changes
|
|
|
* to uart.c, so I am holding off on that for a moment.
|
|
|
*/
|
|
|
+#include <linux/init.h>
|
|
|
#include <linux/errno.h>
|
|
|
#include <linux/sched.h>
|
|
|
#include <linux/kernel.h>
|
|
@@ -16,6 +17,7 @@
|
|
|
#include <asm/page.h>
|
|
|
#include <asm/pgtable.h>
|
|
|
#include <asm/8xx_immap.h>
|
|
|
+#include <asm/cpm.h>
|
|
|
#include <asm/cpm1.h>
|
|
|
|
|
|
/*
|
|
@@ -24,7 +26,7 @@
|
|
|
|
|
|
#ifdef CONFIG_I2C_SPI_UCODE_PATCH
|
|
|
|
|
|
-uint patch_2000[] = {
|
|
|
+static uint patch_2000[] __initdata = {
|
|
|
0x7FFFEFD9,
|
|
|
0x3FFD0000,
|
|
|
0x7FFB49F7,
|
|
@@ -143,7 +145,7 @@ uint patch_2000[] = {
|
|
|
0x5F8247F8
|
|
|
};
|
|
|
|
|
|
-uint patch_2f00[] = {
|
|
|
+static uint patch_2f00[] __initdata = {
|
|
|
0x3E303430,
|
|
|
0x34343737,
|
|
|
0xABF7BF9B,
|
|
@@ -182,7 +184,7 @@ uint patch_2f00[] = {
|
|
|
|
|
|
#ifdef CONFIG_I2C_SPI_SMC1_UCODE_PATCH
|
|
|
|
|
|
-uint patch_2000[] = {
|
|
|
+static uint patch_2000[] __initdata = {
|
|
|
0x3fff0000,
|
|
|
0x3ffd0000,
|
|
|
0x3ffb0000,
|
|
@@ -505,7 +507,7 @@ uint patch_2000[] = {
|
|
|
0x6079e2bb
|
|
|
};
|
|
|
|
|
|
-uint patch_2f00[] = {
|
|
|
+static uint patch_2f00[] __initdata = {
|
|
|
0x30303030,
|
|
|
0x3e3e3434,
|
|
|
0xabbf9b99,
|
|
@@ -572,7 +574,7 @@ uint patch_2f00[] = {
|
|
|
0xf22f3f23
|
|
|
};
|
|
|
|
|
|
-uint patch_2e00[] = {
|
|
|
+static uint patch_2e00[] __initdata = {
|
|
|
0x27eeeeee,
|
|
|
0xeeeeeeee,
|
|
|
0xeeeeeeee,
|
|
@@ -598,7 +600,7 @@ uint patch_2e00[] = {
|
|
|
|
|
|
#ifdef CONFIG_USB_SOF_UCODE_PATCH
|
|
|
|
|
|
-uint patch_2000[] = {
|
|
|
+static uint patch_2000[] __initdata = {
|
|
|
0x7fff0000,
|
|
|
0x7ffd0000,
|
|
|
0x7ffb0000,
|
|
@@ -613,21 +615,25 @@ uint patch_2000[] = {
|
|
|
0x60750000
|
|
|
};
|
|
|
|
|
|
-uint patch_2f00[] = {
|
|
|
+static uint patch_2f00[] __initdata = {
|
|
|
0x3030304c,
|
|
|
0xcab9e441,
|
|
|
0xa1aaf220
|
|
|
};
|
|
|
#endif
|
|
|
|
|
|
-void
|
|
|
-cpm_load_patch(cpm8xx_t *cp)
|
|
|
+void __init cpm_load_patch(cpm8xx_t *cp)
|
|
|
{
|
|
|
volatile uint *dp; /* Dual-ported RAM. */
|
|
|
volatile cpm8xx_t *commproc;
|
|
|
+#if defined(CONFIG_I2C_SPI_UCODE_PATCH) || \
|
|
|
+ defined(CONFIG_I2C_SPI_SMC1_UCODE_PATCH)
|
|
|
volatile iic_t *iip;
|
|
|
- volatile spi_t *spp;
|
|
|
+ volatile struct spi_pram *spp;
|
|
|
+#ifdef CONFIG_I2C_SPI_SMC1_UCODE_PATCH
|
|
|
volatile smc_uart_t *smp;
|
|
|
+#endif
|
|
|
+#endif
|
|
|
int i;
|
|
|
|
|
|
commproc = cp;
|
|
@@ -668,8 +674,8 @@ cpm_load_patch(cpm8xx_t *cp)
|
|
|
/* Put SPI above the IIC, also 32-byte aligned.
|
|
|
*/
|
|
|
i = (RPBASE + sizeof(iic_t) + 31) & ~31;
|
|
|
- spp = (spi_t *)&commproc->cp_dparam[PROFF_SPI];
|
|
|
- spp->spi_rpbase = i;
|
|
|
+ spp = (struct spi_pram *)&commproc->cp_dparam[PROFF_SPI];
|
|
|
+ spp->rpbase = i;
|
|
|
|
|
|
# if defined(CONFIG_I2C_SPI_UCODE_PATCH)
|
|
|
commproc->cp_cpmcr1 = 0x802a;
|