powerpc: Add EXPORT_SYMBOL for symbols required by fs_enet and cpm_uart
PATCH 1/1 powerpc: Add EXPORT_SYMBOL for symbols required by fs_enet and cpm_uart
fs_enet and cpm_uart need symbols from commproc.c (for CPM1) or cpm2_common.c. Add EXPORT_SYMBOL for cpmp, cpm_setbrg and cpm2_immr, so the drivers can be compiled as modules.
Building modules, stage 2.
MODPOST 5 modules
ERROR: "cpm2_immr" [drivers/net/fs_enet/fs_enet.ko] undefined!
ERROR: "cpmp" [drivers/net/fs_enet/fs_enet.ko] undefined! make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2
---
arch/powerpc/sysdev/commproc.c | 3 +++ arch/powerpc/sysdev/cpm2_common.c | 3 +++ 2 files changed, 6 insertions(+), 0 deletions(-)
arch/powerpc/sysdev/commproc.c +0 -0
@@ -51,6 +51,8 @@ static void m8xx_cpm_dpinit(void);
static uint host_buffer; /* One page of host buffer */
static uint host_end; /* end + 1 */cpm8xx_t __iomem *cpmp; /* Pointer to comm processor space */ +EXPORT_SYMBOL(cpmp);
+immap_t __iomem *mpc8xx_immr;
static cpic8xx_t __iomem *cpic_reg;
@@ -302,6 +304,7 @@ cpm_setbrg(uint brg, uint rate)
out_be32(bp, (((BRG_UART_CLK_DIV16 / rate) - 1) << 1) | CPM_BRG_EN | CPM_BRG_DIV16); }
+EXPORT_SYMBOL(cpm_setbrg);
#ifndef CONFIG_PPC_CPM_NEW_BINDING
/*
arch/powerpc/sysdev/cpm2_common.c +0 -0
@@ -51,11 +51,13 @@ static void cpm2_dpinit(void);
#endif
cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor space */ +EXPORT_SYMBOL(cpmp);
/* We allocate this here because it is used almost exclusively for
* the communication processor devices.
*/cpm2_map_t __iomem *cpm2_immr; +EXPORT_SYMBOL(cpm2_immr);
#define CPM_MAP_SIZE (0x40000) /* 256k - the PQ3 reserve this amount
of space for CPM as it is larger
@@ -117,6 +119,7 @@ cpm_setbrg(uint brg, uint rate)
cpm2_unmap(bp); }
+EXPORT_SYMBOL(cpm_setbrg);
/* This function is used to set high speed synchronous baud rate
* clocks.
Signature · 1 line
1.5.3.5
Quoted 7 lines · Jochen Friedrich
arch/powerpc/sysdev/commproc.c +0
-0@@ -51,6 +51,8 @@ static void m8xx_cpm_dpinit(void);static uint
host_buffer; /* One page of host buffer */
static uinthost_end; /* end + 1 */cpm8xx_t__iomem*cpmp; /* Pointer to comm processor space */ +EXPORT_SYMBOL(cpmp);
Sorry, but this is a nightmare waiting to happen. Please define proper accessors instead. (And get rid of the typedef while you're at it)
Quoted 11 lines · Christoph Hellwig
Quoted 7 lines · Jochen Friedrich
arch/powerpc/sysdev/commproc.c +0
-0@@ -51,6 +51,8 @@ static void m8xx_cpm_dpinit(void);static uint
host_buffer; /* One page of host buffer */
static uinthost_end; /* end + 1 */cpm8xx_t__iomem*cpmp; /* Pointer to comm processor space */ +EXPORT_SYMBOL(cpmp);Sorry, but this is a nightmare waiting to happen. Please define proper accessors instead.
We have proper accessors: in_be32, out_be16, etc.
Now, is the huge struct encompassing all of immr space a bad idea? Sure. Are we working towards getting rid of it? Yes. Is that a reason to keep modules from working in the meantime? No.
Quoted 1 line
(And get rid of the typedef while you're at it)
Again, changing all the users is a bit beyond the scope of this patch.
-Scott
Quoted 4 lines · Jochen Friedrich
fs_enetandcpm_uartneed symbols fromcommproc.c(for CPM1) orcpm2_common.c. AddEXPORT_SYMBOLfor cpmp,cpm_setbrgandcpm2_immr, so the drivers can be compiled as modules.
Quoted 8 lines
Building modules, stage 2.
MODPOST 5 modules
ERROR: "cpm2_immr" [drivers/net/fs_enet/fs_enet.ko] undefined!
ERROR: "cpmp" [drivers/net/fs_enet/fs_enet.ko] undefined! make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2Signed-off-by Jochen Friedrich <[email protected]>