On 03/29/2007 01:20 AM, Rask Ingemann Lambertsen wrote:
Playback sounds normal except for a click for each "pointer ..."
message. Any ideas? /proc/interrupts increments by 11.
This additional patch fixes it:
Mmm, well, that looks like it makes sense...
I checked the MPU IRQs (you allow 2/9, 3, 5, 7, 10, 15 while the DOS
driver only allows 2/9, 3, 5, 7).
All of 2/9, 3, 5, 7, and 10 work fine here and 15 does not work. 15 also
doesn't work here for the Jazz IRQ though while the DOS driver does
allow 15 for that one, so I expect that's a local problem (no, nothing
evident; no IDE, 15 reserved for ISA, ...). If you need me to I'll try
in a different machine, but if 15 works fine for the Jazz IRQ for you,
I'd write it not working for either IRQ for me off as an uninteresting
glitch.
The Jazz16 has nice MPU-401 behaviour by the way; if I sent MIDI to its
gameport, it loops it back out immediately unless I'm actually recording
it from the Jazz16. That's sort of nice for testing...
I also checked the 210, 230 and 250 base values the DOS driver allows me
to set the "Jazz16 I/O Port" to and all of those work fine. A change to
jazz16pnp is attached as the first attachment. Has been tested, works fine.
Lastly, how would you feel about setting the DOS/Windows default
resource values as the preffered values and all the others as mere
acceptable? This will help keep the behaviour consistent over dual
booting for one, and is more in line with any documentation someone
might have on their card.
Ie, something like the second attachment (on top of first). Has also
been tested, and also works fine.
Rene.
diff --git a/drivers/pnp/jazz16pnp.c b/drivers/pnp/jazz16pnp.c
index cacb1df..e665945 100644
--- a/drivers/pnp/jazz16pnp.c
+++ b/drivers/pnp/jazz16pnp.c
@@ -181,7 +181,7 @@ out_no_dev:
};
static struct pnp_port jazz16pnp_ports[2] __initdata = {
- { .min = 0x220, .max = 0x260, .align = 0x20, .size = 0x10 },
+ { .min = 0x210, .max = 0x260, .align = 0x10, .size = 0x10 },
{ .min = 0x300, .max = 0x330, .align = 0x10, .size = 0x02 },
};
@@ -247,8 +247,11 @@ static void jazz16_port_setup(const uint
u8 config;
switch (sbport) {
+ case 0x210:
case 0x220:
+ case 0x230:
case 0x240:
+ case 0x250:
case 0x260:
config = sbport & 0x70;
jazz16_sb_port = sbport;
@@ -508,7 +511,7 @@ static int __init jazz16pnp_init(void)
if (jazz16pnp_verbose)
printk(PFX_DEBUG "Scanning for Jazz16 cards...\n");
- for (base = 0x260; base >= 0x220; base -= 0x20) {
+ for (base = 0x260; base >= 0x210; base -= 0x10) {
if (!request_region(base, 16, "Jazz16 PnP probe"))
continue;
if (jazz16pnp_verbose)
@@ -522,7 +525,7 @@ static int __init jazz16pnp_init(void)
if (jazz16pnp_count)
break;
}
- if (base < 0x220)
+ if (base < 0x210)
goto out_no_sbbase;
if (!jazz16pnp_count) {
err = -ENODEV;
diff --git a/drivers/pnp/jazz16pnp.c b/drivers/pnp/jazz16pnp.c
index e665945..a7f173d 100644
--- a/drivers/pnp/jazz16pnp.c
+++ b/drivers/pnp/jazz16pnp.c
@@ -180,12 +180,18 @@ out_no_dev:
return -ENOMEM;
};
-static struct pnp_port jazz16pnp_ports[2] __initdata = {
+static struct pnp_port jazz16pnp_ports[] __initdata = {
+ { .min = 0x220, .max = 0x220, .align = 0, .size = 0x10 },
+ { .min = 0x330, .max = 0x330, .align = 0, .size = 0x02 },
{ .min = 0x210, .max = 0x260, .align = 0x10, .size = 0x10 },
{ .min = 0x300, .max = 0x330, .align = 0x10, .size = 0x02 },
};
-static struct pnp_irq jazz16pnp_irqs[2] __initdata = {
+static struct pnp_irq jazz16pnp_irqs[] __initdata = {
+ { .map[0] = (1 << 5),
+ .flags = IORESOURCE_IRQ_HIGHEDGE },
+ { .map[0] = (1 << 9),
+ .flags = IORESOURCE_IRQ_HIGHEDGE },
{ .map[0] = (1 << 3) | (1 << 5) | (1 << 7) |
(1 << 9) | (1 << 10) | (1 << 15),
.flags = IORESOURCE_IRQ_HIGHEDGE },
@@ -194,7 +200,9 @@ static struct pnp_irq jazz16pnp_irqs[2]
.flags = IORESOURCE_IRQ_HIGHEDGE },
};
-static struct pnp_dma jazz16pnp_dmas[2] __initdata = {
+static struct pnp_dma jazz16pnp_dmas[] __initdata = {
+ { .map = (1 << 1), .flags = IORESOURCE_DMA_8BIT, },
+ { .map = (1 << 5), .flags = IORESOURCE_DMA_16BIT, },
{ .map = (1 << 1) | (1 << 3), .flags = IORESOURCE_DMA_8BIT, },
{ .map = (1 << 5) | (1 << 7), .flags = IORESOURCE_DMA_16BIT, },
};
@@ -215,9 +223,14 @@ static int __init jazz16pnp_add_sb(void)
jazz16pnp_dmas, 2))
goto out_no_sboption;
if (!jazz16pnp_easy_option(sbdev, PNP_RES_PRIORITY_ACCEPTABLE,
- jazz16pnp_ports, 2,
- jazz16pnp_irqs, 1,
- jazz16pnp_dmas, 2))
+ &jazz16pnp_ports[2], 2,
+ &jazz16pnp_irqs[2], 2,
+ &jazz16pnp_dmas[2], 2))
+ goto out_no_sboption;
+ if (!jazz16pnp_easy_option(sbdev, PNP_RES_PRIORITY_ACCEPTABLE,
+ &jazz16pnp_ports[2], 2,
+ &jazz16pnp_irqs[2], 1,
+ &jazz16pnp_dmas[2], 2))
goto out_no_sboption;
memcpy(sbid->id, "PNPb00f", PNP_ID_LEN);
pnp_add_id(sbid, sbdev);
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel