Re: 2.6.17-rc6 sound drivers have section mismatch errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Fri, 09 Jun 2006 14:31:54 +0200,
I wrote:
> 
> At Fri, 09 Jun 2006 12:47:49 +0100,
> Barry Scott wrote:
> > 
> > I'm trying to build 2.6.17 as suggested on the user list to get Intel 
> > HDA working.
> > But, as reported by me on Linux Dev list, there a lot of problems with 
> > section mismatch
> > in a number of drivers including the sound drivers. Here are the sound 
> > related messages:
> > 
> > WARNING: sound/isa/sb/snd-sbawe.o - Section mismatch: reference to 
> > .init.text:snd_emu8000_new from .text between 'snd_sb16_probe' (at 
> > offset 0x440) and 'snd_sb16_nonpnp_remove'
> > WARNING: sound/isa/snd-opl3sa2.o - Section mismatch: reference to 
> > .init.text: from .text between 'snd_opl3sa2_pnp_cdetect' (at offset 
> > 0xe61) and 'snd_opl3sa2_pnp_detect'
> > WARNING: sound/isa/snd-opl3sa2.o - Section mismatch: reference to 
> > .init.text: from .text between 'snd_opl3sa2_pnp_detect' (at offset 
> > 0xf52) and 'snd_opl3sa2_put_single'
> > 
> > The Linux Dev folks are looking for someone to look at these problems.
> 
> The patch below should fix.

Looks like it wasn't enough.  The fixed patch is below.


Takashi


diff -r 4599255ac532 isa/opl3sa2.c
--- a/isa/opl3sa2.c	Thu Jun 08 12:01:44 2006 +0200
+++ b/isa/opl3sa2.c	Fri Jun 09 15:03:19 2006 +0200
@@ -221,7 +221,7 @@ static void snd_opl3sa2_write(struct snd
 	spin_unlock_irqrestore(&chip->reg_lock, flags);
 }
 
-static int __init snd_opl3sa2_detect(struct snd_opl3sa2 *chip)
+static int __devinit snd_opl3sa2_detect(struct snd_opl3sa2 *chip)
 {
 	struct snd_card *card;
 	unsigned long port;
@@ -489,7 +489,7 @@ static void snd_opl3sa2_master_free(stru
 	chip->master_volume = NULL;
 }
 
-static int __init snd_opl3sa2_mixer(struct snd_opl3sa2 *chip)
+static int __devinit snd_opl3sa2_mixer(struct snd_opl3sa2 *chip)
 {
 	struct snd_card *card = chip->card;
 	struct snd_ctl_elem_id id1, id2;
@@ -583,8 +583,8 @@ static int snd_opl3sa2_resume(struct snd
 #endif /* CONFIG_PM */
 
 #ifdef CONFIG_PNP
-static int __init snd_opl3sa2_pnp(int dev, struct snd_opl3sa2 *chip,
-				  struct pnp_dev *pdev)
+static int __devinit snd_opl3sa2_pnp(int dev, struct snd_opl3sa2 *chip,
+				     struct pnp_dev *pdev)
 {
 	struct pnp_resource_table * cfg;
 	int err;
@@ -862,7 +862,7 @@ static struct pnp_card_driver opl3sa2_pn
 };
 #endif /* CONFIG_PNP */
 
-static int __init snd_opl3sa2_nonpnp_probe(struct platform_device *pdev)
+static int __devinit snd_opl3sa2_nonpnp_probe(struct platform_device *pdev)
 {
 	struct snd_card *card;
 	int err;
diff -r 4599255ac532 isa/sb/emu8000.c
--- a/isa/sb/emu8000.c	Thu Jun 08 12:01:44 2006 +0200
+++ b/isa/sb/emu8000.c	Fri Jun 09 15:03:19 2006 +0200
@@ -131,7 +131,7 @@ snd_emu8000_dma_chan(struct snd_emu8000 
 
 /*
  */
-static void __init
+static void __devinit
 snd_emu8000_read_wait(struct snd_emu8000 *emu)
 {
 	while ((EMU8000_SMALR_READ(emu) & 0x80000000) != 0) {
@@ -143,7 +143,7 @@ snd_emu8000_read_wait(struct snd_emu8000
 
 /*
  */
-static void __init
+static void __devinit
 snd_emu8000_write_wait(struct snd_emu8000 *emu)
 {
 	while ((EMU8000_SMALW_READ(emu) & 0x80000000) != 0) {
@@ -156,7 +156,7 @@ snd_emu8000_write_wait(struct snd_emu800
 /*
  * detect a card at the given port
  */
-static int __init
+static int __devinit
 snd_emu8000_detect(struct snd_emu8000 *emu)
 {
 	/* Initialise */
@@ -182,7 +182,7 @@ snd_emu8000_detect(struct snd_emu8000 *e
 /*
  * intiailize audio channels
  */
-static void __init
+static void __devinit
 init_audio(struct snd_emu8000 *emu)
 {
 	int ch;
@@ -223,7 +223,7 @@ init_audio(struct snd_emu8000 *emu)
 /*
  * initialize DMA address
  */
-static void __init
+static void __devinit
 init_dma(struct snd_emu8000 *emu)
 {
 	EMU8000_SMALR_WRITE(emu, 0);
@@ -327,7 +327,7 @@ static unsigned short init4[128] /*__dev
  * Taken from the oss driver, not obvious from the doc how this
  * is meant to work
  */
-static void __init
+static void __devinit
 send_array(struct snd_emu8000 *emu, unsigned short *data, int size)
 {
 	int i;
@@ -349,7 +349,7 @@ send_array(struct snd_emu8000 *emu, unsi
  * Send initialization arrays to start up, this just follows the
  * initialisation sequence in the adip.
  */
-static void __init
+static void __devinit
 init_arrays(struct snd_emu8000 *emu)
 {
 	send_array(emu, init1, ARRAY_SIZE(init1)/4);
@@ -375,7 +375,7 @@ init_arrays(struct snd_emu8000 *emu)
  * seems that the only way to do this is to use the one channel and keep
  * reallocating between read and write.
  */
-static void __init
+static void __devinit
 size_dram(struct snd_emu8000 *emu)
 {
 	int i, size;
@@ -500,7 +500,7 @@ snd_emu8000_init_fm(struct snd_emu8000 *
 /*
  * The main initialization routine.
  */
-static void __init
+static void __devinit
 snd_emu8000_init_hw(struct snd_emu8000 *emu)
 {
 	int i;
@@ -1019,7 +1019,7 @@ static struct snd_kcontrol_new *mixer_de
 /*
  * create and attach mixer elements for WaveTable treble/bass controls
  */
-static int __init
+static int __devinit
 snd_emu8000_create_mixer(struct snd_card *card, struct snd_emu8000 *emu)
 {
 	int i, err = 0;
@@ -1069,7 +1069,7 @@ static int snd_emu8000_dev_free(struct s
 /*
  * initialize and register emu8000 synth device.
  */
-int __init
+int __devinit
 snd_emu8000_new(struct snd_card *card, int index, long port, int seq_ports,
 		struct snd_seq_device **awe_ret)
 {


_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux