From: Gerald Teschl <gerald@esi.ac.at>
To: linux-sound@vger.kernel.org
Subject: [PATCH] isapnp_dma0.patch
Date: Thu, 06 Jun 2002 18:30:28 +0000 [thread overview]
Message-ID: <marc-linux-sound-102338865605959@msgid-missing> (raw)
When trying to fix the isapnp activation problem of the OPL3Sa4 card Zwane
Mwaikambo and I now agree
that the proper way to fix this is by changing isapnp.c and making the use
of the dma channel 0
configurable. If a box works fine with dma 0 the user should be able to
tell isapnp to use it.
The patch below makes the use of the dma channel 0 configurable via
/proc/isapnp or via the
module option "isapnp_allow_dma0=0|1". The default behaviour is not to
accept dma 0. It is
againts 2.4.19-pre10 and I have tested it on three different boxes.
Gerald
---------------------------------
--- linux.orig/drivers/pnp/isapnp.c Thu Jun 6 18:04:43 2002
+++ linux/drivers/pnp/isapnp.c Thu Jun 6 18:22:56 2002
@@ -28,6 +28,8 @@
* 2001-11-07 Added isapnp_{,un}register_driver calls along the lines
* of the pci driver interface
* Kai Germaschewski <kai.germaschewski@gmx.de>
+ * 2002-06-06 Made the use of dma channel 0 configurable
+ * Gerald Teschl <gerald.teschl@univie.ac.at>
*/
#include <linux/config.h>
@@ -59,6 +61,7 @@
int isapnp_disable; /* Disable ISA PnP */
int isapnp_rdp; /* Read Data Port */
int isapnp_reset = 1; /* reset all PnP cards (deactivate) */
+int isapnp_allow_dma0 = -1; /* allow dma 0 during auto activation: -1=off (:default), 0=off (set by user), 1=on */
int isapnp_skip_pci_scan; /* skip PCI resource scanning */
int isapnp_verbose = 1; /* verbose mode */
int isapnp_reserve_irq[16] = { [0 ... 15] = -1 }; /* reserve (don't use) some IRQ */
@@ -74,6 +77,8 @@
MODULE_PARM_DESC(isapnp_rdp, "ISA Plug & Play read data port");
MODULE_PARM(isapnp_reset, "i");
MODULE_PARM_DESC(isapnp_reset, "ISA Plug & Play reset all cards");
+MODULE_PARM(isapnp_allow_dma0, "i");
+MODULE_PARM_DESC(isapnp_allow_dma0, "Allow dma value 0 during auto activation");
MODULE_PARM(isapnp_skip_pci_scan, "i");
MODULE_PARM_DESC(isapnp_skip_pci_scan, "ISA Plug & Play skip PCI resource scanning");
MODULE_PARM(isapnp_verbose, "i");
@@ -1750,13 +1755,14 @@
static int isapnp_check_dma(struct isapnp_cfgtmp *cfg, int dma, int idx)
{
- int i;
+ int i, mindma =1;
struct pci_dev *dev;
/* Some machines allow DMA 0, but others don't. In fact on some
boxes DMA 0 is the memory refresh. Play safe */
-
- if (dma < 1 || dma = 4 || dma > 7)
+ if (isapnp_allow_dma0 = 1)
+ mindma = 0;
+ if (dma < mindma || dma = 4 || dma > 7)
return 1;
for (i = 0; i < 8; i++) {
if (isapnp_reserve_dma[i] = dma)
--- linux.orig/drivers/pnp/isapnp_proc.c Wed Jan 17 22:29:14 2001
+++ linux/drivers/pnp/isapnp_proc.c Thu Jun 6 18:07:20 2002
@@ -944,6 +944,22 @@
res->start = res->end = dma;
res->flags = IORESOURCE_DMA;
}
+
+extern int isapnp_allow_dma0;
+static int isapnp_set_allow_dma0(char *line)
+{
+ int i;
+ char value[32];
+
+ isapnp_get_str(value, line, sizeof(value));
+ i = simple_strtoul(value, NULL, 0);
+ if (i < 0 || i > 1) {
+ printk("isapnp: wrong value %i for allow_dma0\n", i);
+ return 1;
+ }
+ isapnp_allow_dma0 = i;
+ return 0;
+}
static int isapnp_set_dma(char *line)
{
@@ -1030,6 +1046,8 @@
char cmd[32];
line = isapnp_get_str(cmd, line, sizeof(cmd));
+ if (!strcmp(cmd, "allow_dma0"))
+ return isapnp_set_allow_dma0(line);
if (!strcmp(cmd, "card"))
return isapnp_set_card(line);
if (!strcmp(cmd, "csn"))
--- linux.orig/Documentation/isapnp.txt Wed Apr 18 20:49:11 2001
+++ linux/Documentation/isapnp.txt Thu Jun 6 18:17:55 2002
@@ -29,6 +29,7 @@
poke <reg> <value> - poke configuration byte to selected register
pokew <reg> <value> - poke configuration word to selected register
poked <reg> <value> - poke configuration dword to selected register
+allow_dma0 <value> - allow dma channel 0 during auto activation: 0=off, 1=on
Explanation:
- variable <idx> begins with zero
next reply other threads:[~2002-06-06 18:30 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-06-06 18:30 Gerald Teschl [this message]
-- strict thread matches above, loose matches on Subject: below --
2002-06-06 18:30 [PATCH] isapnp_dma0.patch Gerald Teschl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=marc-linux-sound-102338865605959@msgid-missing \
--to=gerald@esi.ac.at \
--cc=linux-sound@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.