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