Skip to contentSkip to conversation

qe_lib: export symbols to fix compile error when QE drivers compile as modules

PATCH In review Li Yang 2 participants 7 messages May 24, 2007 – Oct 19, 2007 PowerPC

lore
Share & tools
lore

Li Yang

author
#0 lore raw

PATCH 1/1 qe_lib: export symbols to fix compile error when QE drivers compile as modules

Export symbols of qe_lib to be used by QE drivers.

---

arch/powerpc/sysdev/qe_lib/ucc.c      |    7 +++++++
arch/powerpc/sysdev/qe_lib/ucc_fast.c |    8 ++++++++
arch/powerpc/sysdev/qe_lib/ucc_slow.c |   12 ++++++++++--
3 files changed, 25 insertions(+), 2 deletions(-)
arch/powerpc/sysdev/qe_lib/ucc.c +0 -0
index ac12a44..e8635aa 100644
@@ -18,6 +18,7 @@

#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/stddef.h>
+#include <linux/module.h>

#include <asm/irq.h>
#include <asm/io.h>
@@ -40,6 +41,7 @@ int ucc_set_qe_mux_mii_mng(int ucc_num)

	return 0;
}

+EXPORT_SYMBOL(ucc_set_qe_mux_mii_mng);

int ucc_set_type(int ucc_num, struct ucc_common *regs,
enum ucc_speed_type speed)
@@ -66,6 +68,7 @@ int ucc_set_type(int ucc_num, struct ucc_common *regs,

	return 0;
}

+EXPORT_SYMBOL(ucc_set_type);

int ucc_init_guemr(struct ucc_common *regs)
{
@@ -81,6 +84,7 @@ int ucc_init_guemr(struct ucc_common *regs)

	return 0;
}

+EXPORT_SYMBOL(ucc_init_guemr);

static void get_cmxucr_reg(int ucc_num, volatile u32 ** p_cmxucr, u8 * reg_num,

			   u8 * shift)
@@ -122,6 +126,7 @@ static void get_cmxucr_reg(int ucc_num, volatile u32 ** p_cmxucr, u8 * reg_num,
		break;
	}
}

+EXPORT_SYMBOL(get_cmxucr_reg);

int ucc_mux_set_grant_tsa_bkpt(int ucc_num, int set, u32 mask)
{
@@ -142,6 +147,7 @@ int ucc_mux_set_grant_tsa_bkpt(int ucc_num, int set, u32 mask)

	return 0;
}

+EXPORT_SYMBOL(ucc_mux_set_grant_tsa_bkpt);

int ucc_set_qe_mux_rxtx(int ucc_num, enum qe_clock clock, enum comm_dir mode)
{
@@ -251,3 +257,4 @@ int ucc_set_qe_mux_rxtx(int ucc_num, enum qe_clock clock, enum comm_dir mode)

	return 0;
}

+EXPORT_SYMBOL(ucc_set_qe_mux_rxtx);

arch/powerpc/sysdev/qe_lib/ucc_fast.c +0 -0
index 9143236..3df202e 100644
@@ -19,6 +19,7 @@

#include <linux/stddef.h>
#include <linux/interrupt.h>
#include <linux/err.h>
+#include <linux/module.h>

#include <asm/io.h>
#include <asm/immap_qe.h>
@@ -70,6 +71,7 @@ void ucc_fast_dump_regs(struct ucc_fast_private * uccf)

	printk(KERN_INFO "guemr : addr - 0x%08x, val - 0x%02x",
		  (u32) & uccf->uf_regs->guemr, uccf->uf_regs->guemr);
}

+EXPORT_SYMBOL(ucc_fast_dump_regs);

u32 ucc_fast_get_qe_cr_subblock(int uccf_num)
{
@@ -85,11 +87,13 @@ u32 ucc_fast_get_qe_cr_subblock(int uccf_num)

	default: return QE_CR_SUBBLOCK_INVALID;
	}
}

+EXPORT_SYMBOL(ucc_fast_get_qe_cr_subblock);

void ucc_fast_transmit_on_demand(struct ucc_fast_private * uccf)

{
	out_be16(&uccf->uf_regs->utodr, UCC_FAST_TOD);
}

+EXPORT_SYMBOL(ucc_fast_transmit_on_demand);

void ucc_fast_enable(struct ucc_fast_private * uccf, enum comm_dir mode)
{
@@ -110,6 +114,7 @@ void ucc_fast_enable(struct ucc_fast_private * uccf, enum comm_dir mode)

	}
	out_be32(&uf_regs->gumr, gumr);
}

+EXPORT_SYMBOL(ucc_fast_enable);

void ucc_fast_disable(struct ucc_fast_private * uccf, enum comm_dir mode)
{
@@ -130,6 +135,7 @@ void ucc_fast_disable(struct ucc_fast_private * uccf, enum comm_dir mode)

	}
	out_be32(&uf_regs->gumr, gumr);
}

+EXPORT_SYMBOL(ucc_fast_disable);

int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** uccf_ret) {
@@ -341,6 +347,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc

	*uccf_ret = uccf;
	return 0;
}

+EXPORT_SYMBOL(ucc_fast_init);

void ucc_fast_free(struct ucc_fast_private * uccf)
{
@@ -355,3 +362,4 @@ void ucc_fast_free(struct ucc_fast_private * uccf)

	kfree(uccf);
}

+EXPORT_SYMBOL(ucc_fast_free);

arch/powerpc/sysdev/qe_lib/ucc_slow.c +0 -0
index 1f65c26..5618275 100644
@@ -19,6 +19,7 @@

#include <linux/stddef.h>
#include <linux/interrupt.h>
#include <linux/err.h>
+#include <linux/module.h>

#include <asm/io.h>
#include <asm/immap_qe.h>
@@ -41,11 +42,13 @@ u32 ucc_slow_get_qe_cr_subblock(int uccs_num)

	default: return QE_CR_SUBBLOCK_INVALID;
	}
}

+EXPORT_SYMBOL(ucc_slow_get_qe_cr_subblock);

void ucc_slow_poll_transmitter_now(struct ucc_slow_private * uccs)

{
	out_be16(&uccs->us_regs->utodr, UCC_SLOW_TOD);
}

+EXPORT_SYMBOL(ucc_slow_poll_transmitter_now);

void ucc_slow_graceful_stop_tx(struct ucc_slow_private * uccs)
{
@@ -56,6 +59,7 @@ void ucc_slow_graceful_stop_tx(struct ucc_slow_private * uccs)

	qe_issue_cmd(QE_GRACEFUL_STOP_TX, id,
			 QE_CR_PROTOCOL_UNSPECIFIED, 0);
}

+EXPORT_SYMBOL(ucc_slow_graceful_stop_tx);

void ucc_slow_stop_tx(struct ucc_slow_private * uccs)
{
@@ -65,6 +69,7 @@ void ucc_slow_stop_tx(struct ucc_slow_private * uccs)

	id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num);
	qe_issue_cmd(QE_STOP_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0);
}

+EXPORT_SYMBOL(ucc_slow_stop_tx);

void ucc_slow_restart_tx(struct ucc_slow_private * uccs)
{
@@ -74,6 +79,7 @@ void ucc_slow_restart_tx(struct ucc_slow_private * uccs)

	id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num);
	qe_issue_cmd(QE_RESTART_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0);
}

+EXPORT_SYMBOL(ucc_slow_restart_tx);

void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode)
{
@@ -94,6 +100,7 @@ void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode)

	}
	out_be32(&us_regs->gumr_l, gumr_l);
}

+EXPORT_SYMBOL(ucc_slow_enable);

void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode)
{
@@ -114,6 +121,7 @@ void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode)

	}
	out_be32(&us_regs->gumr_l, gumr_l);
}

+EXPORT_SYMBOL(ucc_slow_disable);

int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** uccs_ret) {
@@ -349,6 +357,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc

	*uccs_ret = uccs;
	return 0;
}

+EXPORT_SYMBOL(ucc_slow_init);

void ucc_slow_free(struct ucc_slow_private * uccs)
{
@@ -368,5 +377,4 @@ void ucc_slow_free(struct ucc_slow_private * uccs)

	kfree(uccs);
}

-
-
+EXPORT_SYMBOL(ucc_slow_free);

#1 lore raw
Quoted 8 lines · Li Yang

Export symbols of qe_lib to be used by QE drivers.

---

arch/powerpc/sysdev/qe_lib/ucc.c      |    7 +++++++
arch/powerpc/sysdev/qe_lib/ucc_fast.c |    8 ++++++++
arch/powerpc/sysdev/qe_lib/ucc_slow.c |   12 ++++++++++--
3 files changed, 25 insertions(+), 2 deletions(-)

A number of the EXPORT_SYMBOL() are not used by any in kernel drivers and thus should not be added. See comments below. Also, should these be EXPORT_SYMBOL_GPL().

Quoted 18 lines
arch/powerpc/sysdev/qe_lib/ucc.c +2 -0
index ac12a44..e8635aa 100644
@@ -18,6 +18,7 @@
 #include <linux/errno.h>
 #include <linux/slab.h>
 #include <linux/stddef.h>
+#include <linux/module.h>
 #include <asm/irq.h>
 #include <asm/io.h>
@@ -40,6 +41,7 @@ int ucc_set_qe_mux_mii_mng(int ucc_num)
 	return 0;
 }
+EXPORT_SYMBOL(ucc_set_qe_mux_mii_mng);
 int ucc_set_type(int ucc_num, struct ucc_common *regs,
 		 enum ucc_speed_type speed)

arch/powerpc/sysdev/qe_lib/ucc.c int ucc_set_type(int ucc_num, struct ucc_common · line 71

Quoted 4 lines
arch/powerpc/sysdev/qe_lib/ucc.c +1 -0
@@ -66,6 +68,7 @@ int ucc_set_type(int ucc_num, struct ucc_common  
 *regs,
 	return 0;
 }
+EXPORT_SYMBOL(ucc_set_type);

remove.

arch/powerpc/sysdev/qe_lib/ucc.c int ucc_init_guemr(struct ucc_common *regs) · line 86

Quoted 6 lines
arch/powerpc/sysdev/qe_lib/ucc.c +1 -0
 int ucc_init_guemr(struct ucc_common *regs)
 {
@@ -81,6 +84,7 @@ int ucc_init_guemr(struct ucc_common *regs)
 	return 0;
 }
+EXPORT_SYMBOL(ucc_init_guemr);

remove.

arch/powerpc/sysdev/qe_lib/ucc.c static void get_cmxucr_reg(int ucc_num, · line 130

Quoted 8 lines
arch/powerpc/sysdev/qe_lib/ucc.c +1 -0
 static void get_cmxucr_reg(int ucc_num, volatile u32 ** p_cmxucr, u8 * reg_num,
 			   u8 * shift)
@@ -122,6 +126,7 @@ static void get_cmxucr_reg(int ucc_num,  
 volatile u32 ** p_cmxucr, u8 * reg_num,
 		break;
 	}
 }
+EXPORT_SYMBOL(get_cmxucr_reg);

remove, you shouldn't be exporting something marked static.

arch/powerpc/sysdev/qe_lib/ucc.c int ucc_mux_set_grant_tsa_bkpt(int ucc_num, int · line 150

Quoted 7 lines
arch/powerpc/sysdev/qe_lib/ucc.c +1 -0
 int ucc_mux_set_grant_tsa_bkpt(int ucc_num, int set, u32 mask)
 {
@@ -142,6 +147,7 @@ int ucc_mux_set_grant_tsa_bkpt(int ucc_num, int  
 set, u32 mask)
 	return 0;
 }
+EXPORT_SYMBOL(ucc_mux_set_grant_tsa_bkpt);

remove

arch/powerpc/sysdev/qe_lib/ucc.c int ucc_set_qe_mux_rxtx(int ucc_num, enum · line 260

Quoted 7 lines
arch/powerpc/sysdev/qe_lib/ucc.c +1 -0
 int ucc_set_qe_mux_rxtx(int ucc_num, enum qe_clock clock, enum comm_dir mode)
 {
@@ -251,3 +257,4 @@ int ucc_set_qe_mux_rxtx(int ucc_num, enum  
 qe_clock clock, enum comm_dir mode)
 	return 0;
 }
+EXPORT_SYMBOL(ucc_set_qe_mux_rxtx);

remove.

Quoted 71 lines
arch/powerpc/sysdev/qe_lib/ucc_fast.c +6 -0
index 9143236..3df202e 100644
@@ -19,6 +19,7 @@
 #include <linux/stddef.h>
 #include <linux/interrupt.h>
 #include <linux/err.h>
+#include <linux/module.h>
 #include <asm/io.h>
 #include <asm/immap_qe.h>
@@ -70,6 +71,7 @@ void ucc_fast_dump_regs(struct ucc_fast_private *  
 uccf)
 	printk(KERN_INFO "guemr : addr - 0x%08x, val - 0x%02x",
 		  (u32) & uccf->uf_regs->guemr, uccf->uf_regs->guemr);
 }
+EXPORT_SYMBOL(ucc_fast_dump_regs);
 u32 ucc_fast_get_qe_cr_subblock(int uccf_num)
 {
@@ -85,11 +87,13 @@ u32 ucc_fast_get_qe_cr_subblock(int uccf_num)
 	default: return QE_CR_SUBBLOCK_INVALID;
 	}
 }
+EXPORT_SYMBOL(ucc_fast_get_qe_cr_subblock);
 void ucc_fast_transmit_on_demand(struct ucc_fast_private * uccf)
 {
 	out_be16(&uccf->uf_regs->utodr, UCC_FAST_TOD);
 }
+EXPORT_SYMBOL(ucc_fast_transmit_on_demand);
 void ucc_fast_enable(struct ucc_fast_private * uccf, enum comm_dir mode)
 {
@@ -110,6 +114,7 @@ void ucc_fast_enable(struct ucc_fast_private *  
 uccf, enum comm_dir mode)
 	}
 	out_be32(&uf_regs->gumr, gumr);
 }
+EXPORT_SYMBOL(ucc_fast_enable);
 void ucc_fast_disable(struct ucc_fast_private * uccf, enum comm_dir mode)
 {
@@ -130,6 +135,7 @@ void ucc_fast_disable(struct ucc_fast_private *  
 uccf, enum comm_dir mode)
 	}
 	out_be32(&uf_regs->gumr, gumr);
 }
+EXPORT_SYMBOL(ucc_fast_disable);
 int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** uccf_ret)
 {
@@ -341,6 +347,7 @@ int ucc_fast_init(struct ucc_fast_info *  

uf_info, struct ucc_fast_private ** ucc

	*uccf_ret = uccf;
	return 0;
}

+EXPORT_SYMBOL(ucc_fast_init);
void ucc_fast_free(struct ucc_fast_private * uccf) {

arch/powerpc/sysdev/qe_lib/ucc_fast.c +1 -0
@@ -355,3 +362,4 @@ void ucc_fast_free(struct ucc_fast_private * uccf)
 	kfree(uccf);
 }
+EXPORT_SYMBOL(ucc_fast_free);
arch/powerpc/sysdev/qe_lib/ucc_slow.c +1 -0
index 1f65c26..5618275 100644
@@ -19,6 +19,7 @@
 #include <linux/stddef.h>
 #include <linux/interrupt.h>
 #include <linux/err.h>
+#include <linux/module.h>
 #include <asm/io.h>
 #include <asm/immap_qe.h>

arch/powerpc/sysdev/qe_lib/ucc_slow.c u32 ucc_slow_get_qe_cr_subblock(int uccs_num) · line 45

Quoted 4 lines
arch/powerpc/sysdev/qe_lib/ucc_slow.c +1 -0
@@ -41,11 +42,13 @@ u32 ucc_slow_get_qe_cr_subblock(int uccs_num)
 	default: return QE_CR_SUBBLOCK_INVALID;
 	}
 }
+EXPORT_SYMBOL(ucc_slow_get_qe_cr_subblock);

remove.

arch/powerpc/sysdev/qe_lib/ucc_slow.c u32 ucc_slow_get_qe_cr_subblock(int uccs_num) · line 50

Quoted 5 lines
arch/powerpc/sysdev/qe_lib/ucc_slow.c +1 -0
 void ucc_slow_poll_transmitter_now(struct ucc_slow_private * uccs)
 {
 	out_be16(&uccs->us_regs->utodr, UCC_SLOW_TOD);
 }
+EXPORT_SYMBOL(ucc_slow_poll_transmitter_now);

remove.

arch/powerpc/sysdev/qe_lib/ucc_slow.c void ucc_slow_graceful_stop_tx(struct · line 63

Quoted 8 lines
arch/powerpc/sysdev/qe_lib/ucc_slow.c +1 -0
 void ucc_slow_graceful_stop_tx(struct ucc_slow_private * uccs)
 {
@@ -56,6 +59,7 @@ void ucc_slow_graceful_stop_tx(struct  
 ucc_slow_private * uccs)
 	qe_issue_cmd(QE_GRACEFUL_STOP_TX, id,
 			 QE_CR_PROTOCOL_UNSPECIFIED, 0);
 }
+EXPORT_SYMBOL(ucc_slow_graceful_stop_tx);

remove.

arch/powerpc/sysdev/qe_lib/ucc_slow.c void ucc_slow_stop_tx(struct ucc_slow_private * · line 73

Quoted 8 lines
arch/powerpc/sysdev/qe_lib/ucc_slow.c +1 -0
 void ucc_slow_stop_tx(struct ucc_slow_private * uccs)
 {
@@ -65,6 +69,7 @@ void ucc_slow_stop_tx(struct ucc_slow_private *  
 uccs)
 	id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num);
 	qe_issue_cmd(QE_STOP_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0);
 }
+EXPORT_SYMBOL(ucc_slow_stop_tx);

remove.

arch/powerpc/sysdev/qe_lib/ucc_slow.c void ucc_slow_restart_tx(struct ucc_slow_private · line 83

Quoted 8 lines
arch/powerpc/sysdev/qe_lib/ucc_slow.c +1 -0
 void ucc_slow_restart_tx(struct ucc_slow_private * uccs)
 {
@@ -74,6 +79,7 @@ void ucc_slow_restart_tx(struct ucc_slow_private  
 * uccs)
 	id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num);
 	qe_issue_cmd(QE_RESTART_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0);
 }
+EXPORT_SYMBOL(ucc_slow_restart_tx);

remove.

arch/powerpc/sysdev/qe_lib/ucc_slow.c void ucc_slow_enable(struct ucc_slow_private * · line 104

Quoted 8 lines
arch/powerpc/sysdev/qe_lib/ucc_slow.c +1 -0
 void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode)
 {
@@ -94,6 +100,7 @@ void ucc_slow_enable(struct ucc_slow_private *  
 uccs, enum comm_dir mode)
 	}
 	out_be32(&us_regs->gumr_l, gumr_l);
 }
+EXPORT_SYMBOL(ucc_slow_enable);

remove.

arch/powerpc/sysdev/qe_lib/ucc_slow.c void ucc_slow_disable(struct ucc_slow_private * · line 125

Quoted 8 lines
arch/powerpc/sysdev/qe_lib/ucc_slow.c +1 -0
 void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode)
 {
@@ -114,6 +121,7 @@ void ucc_slow_disable(struct ucc_slow_private *  
 uccs, enum comm_dir mode)
 	}
 	out_be32(&us_regs->gumr_l, gumr_l);
 }
+EXPORT_SYMBOL(ucc_slow_disable);

remove.

Quoted 8 lines
arch/powerpc/sysdev/qe_lib/ucc_slow.c +0 -0
 int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** uccs_ret)
 {
@@ -349,6 +357,7 @@ int ucc_slow_init(struct ucc_slow_info *  

us_info, struct ucc_slow_private ** ucc

	*uccs_ret = uccs;
	return 0;
}

+EXPORT_SYMBOL(ucc_slow_init);

remove.

Quoted 8 lines

void ucc_slow_free(struct ucc_slow_private * uccs) {

arch/powerpc/sysdev/qe_lib/ucc_slow.c +1 -2
@@ -368,5 +377,4 @@ void ucc_slow_free(struct ucc_slow_private * uccs)
 	kfree(uccs);
 }
-
-
+EXPORT_SYMBOL(ucc_slow_free);
#2 lore raw
Quoted 7 lines

-----Original Message-----
From: Kumar Gala [mailto:[email protected]]
Sent: Thursday, May 24, 2007 7:44 PM
To: Li Yang-r58472
Cc: Paul; [email protected]
Subject: Re: [PATCH] qe_lib: export symbols to fix compile error when

QE drivers

Quoted 13 lines

compile as modules
=20
=20
On May 24, 2007, at 4:14 AM, Li Yang wrote:
=20

Quoted 8 lines

Export symbols of qe_lib to be used by QE drivers.

---

arch/powerpc/sysdev/qe_lib/ucc.c      |    7 +++++++
arch/powerpc/sysdev/qe_lib/ucc_fast.c |    8 ++++++++
arch/powerpc/sysdev/qe_lib/ucc_slow.c |   12 ++++++++++--
3 files changed, 25 insertions(+), 2 deletions(-)
Quoted 4 lines

=20
A number of the EXPORT_SYMBOL() are not used by any in kernel drivers and thus should not be added. See comments below. Also, should these be EXPORT_SYMBOL_GPL().

Some of them are not used by in kernel driver, but they are used by some off kernel drivers and driver in development. Shouldn't we export them?

I know Linux is again non-GPL modules, but Freescale won't be forcing customers to use GPL as long as Linux doesn't ban non-GPL module completely.

Quoted 11 lines

Review static void get_cmxucr_reg(int ucc_num, · line 130

Quoted 9 lines

static void get_cmxucr_reg(int ucc_num, volatile u32 ** p_cmxucr, u8 * reg_num,

			   u8 * shift)
(quoted diff) +1 -0
@@ -122,6 +126,7 @@ static void get_cmxucr_reg(int ucc_num,
 volatile u32 ** p_cmxucr, u8 * reg_num,
 		break;
 	}
 }
+EXPORT_SYMBOL(get_cmxucr_reg);

=20
remove, you shouldn't be exporting something marked static.

Good catch.

Thanks,
Leo

#3 lore raw
Quoted 22 lines · On May 24, 2007, at 9:45 PM, Li Yang-r58472 wrote:
Quoted 7 lines

-----Original Message-----
From: Kumar Gala [mailto:[email protected]]
Sent: Thursday, May 24, 2007 7:44 PM
To: Li Yang-r58472
Cc: Paul; [email protected]
Subject: Re: [PATCH] qe_lib: export symbols to fix compile error when

QE drivers

Quoted 14 lines

compile as modules

Quoted 8 lines · Li Yang

Export symbols of qe_lib to be used by QE drivers.

---

arch/powerpc/sysdev/qe_lib/ucc.c      |    7 +++++++
arch/powerpc/sysdev/qe_lib/ucc_fast.c |    8 ++++++++
arch/powerpc/sysdev/qe_lib/ucc_slow.c |   12 ++++++++++--
3 files changed, 25 insertions(+), 2 deletions(-)
Quoted 6 lines
Quoted 3 lines

A number of the EXPORT_SYMBOL() are not used by any in kernel drivers and thus should not be added. See comments below. Also, should these be EXPORT_SYMBOL_GPL().

Some of them are not used by in kernel driver, but they are used by some off kernel drivers and driver in development. Shouldn't we export them?

Nope, its been a pretty established rule that we don't export symbols for drivers not in the kernel. These drivers should really be submitted for acceptance into the kernel and than we can export the symbols they need.

While I can see a need for the *slow* symbols to be exported until there is a driver needing them we shouldn't export the symbols.

Quoted 3 lines

I know Linux is again non-GPL modules, but Freescale won't be forcing customers to use GPL as long as Linux doesn't ban non-GPL module completely.

That's fine.

Quoted 16 lines
Quoted 11 lines

Review static void get_cmxucr_reg(int ucc_num, · line 130

Quoted 9 lines

static void get_cmxucr_reg(int ucc_num, volatile u32 ** p_cmxucr, u8 * reg_num,

			   u8 * shift)
(quoted diff) +1 -0
@@ -122,6 +126,7 @@ static void get_cmxucr_reg(int ucc_num,
 volatile u32 ** p_cmxucr, u8 * reg_num,
 		break;
 	}
 }
+EXPORT_SYMBOL(get_cmxucr_reg);

remove, you shouldn't be exporting something marked static.

Good catch.

Thanks,
Leo

#4 lore raw
Quoted 39 lines · Kumar Gala
Quoted 22 lines · On May 24, 2007, at 9:45 PM, Li Yang-r58472 wrote:
Quoted 7 lines

-----Original Message-----
From: Kumar Gala [mailto:[email protected]]
Sent: Thursday, May 24, 2007 7:44 PM
To: Li Yang-r58472
Cc: Paul; [email protected]
Subject: Re: [PATCH] qe_lib: export symbols to fix compile error when

QE drivers

Quoted 14 lines

compile as modules

Quoted 8 lines · Li Yang

Export symbols of qe_lib to be used by QE drivers.

---

arch/powerpc/sysdev/qe_lib/ucc.c      |    7 +++++++
arch/powerpc/sysdev/qe_lib/ucc_fast.c |    8 ++++++++
arch/powerpc/sysdev/qe_lib/ucc_slow.c |   12 ++++++++++--
3 files changed, 25 insertions(+), 2 deletions(-)
Quoted 8 lines
Quoted 3 lines

A number of the EXPORT_SYMBOL() are not used by any in kernel drivers and thus should not be added. See comments below. Also, should these be EXPORT_SYMBOL_GPL().

Some of them are not used by in kernel driver, but they are used by some
off kernel drivers and driver in development. Shouldn't we export them?

Nope, its been a pretty established rule that we don't export symbols for drivers not in the kernel. These drivers should really be submitted for acceptance into the kernel and than we can export the symbols they need.

Quoted 25 lines

While I can see a need for the *slow* symbols to be exported until there is a driver needing them we shouldn't export the symbols.

Quoted 3 lines

I know Linux is again non-GPL modules, but Freescale won't be forcing customers to use GPL as long as Linux doesn't ban non-GPL module completely.

That's fine.

Quoted 16 lines
Quoted 11 lines

Review static void get_cmxucr_reg(int ucc_num, · line 130

Quoted 9 lines

static void get_cmxucr_reg(int ucc_num, volatile u32 ** p_cmxucr, u8 * reg_num,

			   u8 * shift)
(quoted diff) +1 -0
@@ -122,6 +126,7 @@ static void get_cmxucr_reg(int ucc_num,
 volatile u32 ** p_cmxucr, u8 * reg_num,
 		break;
 	}
 }
+EXPORT_SYMBOL(get_cmxucr_reg);

remove, you shouldn't be exporting something marked static.

Good catch.

Thanks,
Leo

What happened with this?

- k

#5 lore raw
Quoted 37 lines

-----Original Message-----
From: Kumar Gala [mailto:[email protected]]=20
Sent: Wednesday, October 17, 2007 11:30 PM
To: Li Yang-r58472
Cc: linuxppc-dev list; Tabi Timur-B04825
Subject: Re: [PATCH] qe_lib: export symbols to fix compile=20 error when QE drivers compile as modules
=20
=20
On May 25, 2007, at 7:15 AM, Kumar Gala wrote:
=20

Quoted 19 lines · On May 24, 2007, at 9:45 PM, Li Yang-r58472 wrote:
Quoted 17 lines
Quoted 9 lines

-----Original Message-----
From: Kumar Gala [mailto:[email protected]]
Sent: Thursday, May 24, 2007 7:44 PM
To: Li Yang-r58472
Cc: Paul; [email protected]
Subject: Re: [PATCH] qe_lib: export symbols to fix compile error=20 when

QE drivers

Quoted 7 lines

compile as modules

Quoted 2 lines · Li Yang

Export symbols of qe_lib to be used by QE drivers.

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines

---

arch/powerpc/sysdev/qe_lib/ucc.c      |    7 +++++++
arch/powerpc/sysdev/qe_lib/ucc_fast.c |    8 ++++++++
arch/powerpc/sysdev/qe_lib/ucc_slow.c |   12 ++++++++++--
3 files changed, 25 insertions(+), 2 deletions(-)
Quoted 2 lines

=20
What happened with this?

This has been merged as commit 65482ccf9d00bf4f68e17eb9c656d045d26e5d1f.

- Leo

#6 lore raw
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
Quoted 9 lines
Quoted 9 lines
Quoted 8 lines

Export symbols of qe_lib to be used by QE drivers.

---

arch/powerpc/sysdev/qe_lib/ucc.c      |    7 +++++++
arch/powerpc/sysdev/qe_lib/ucc_fast.c |    8 ++++++++
arch/powerpc/sysdev/qe_lib/ucc_slow.c |   12 ++++++++++--
3 files changed, 25 insertions(+), 2 deletions(-)
Quoted 3 lines
Quoted 1 line

What happened with this?

This has been merged as commit 65482ccf9d00bf4f68e17eb9c656d045d26e5d1f.

Ignore me I see the commit. Timur will just need to EXPORT_SYMBOL() what additional functions he needs for the uart driver.

- k