i2c-pca-isa: Don't grab arbitrary resources
[deliverable/linux.git] / drivers / i2c / busses / i2c-pca-isa.c
index a119784bae1069bee133d2b5f5f76ba1dd805f63..f80df9ae50541936925752804e632f901dcd4d3f 100644 (file)
@@ -36,8 +36,8 @@
 #define DRIVER "i2c-pca-isa"
 #define IO_SIZE 4
 
-static unsigned long base   = 0x330;
-static int irq           = 10;
+static unsigned long base;
+static int irq = -1;
 
 /* Data sheet recommends 59kHz for 100kHz operation due to variation
  * in the actual clock rate */
@@ -107,6 +107,19 @@ static struct i2c_adapter pca_isa_ops = {
        .timeout        = 100,
 };
 
+static int __devinit pca_isa_match(struct device *dev, unsigned int id)
+{
+       int match = base != 0;
+
+       if (match) {
+               if (irq <= -1)
+                       dev_warn(dev, "Using polling mode (specify irq)\n");
+       } else
+               dev_err(dev, "Please specify I/O base\n");
+
+       return match;
+}
+
 static int __devinit pca_isa_probe(struct device *dev, unsigned int id)
 {
        init_waitqueue_head(&pca_wait);
@@ -153,7 +166,7 @@ static int __devexit pca_isa_remove(struct device *dev, unsigned int id)
 {
        i2c_del_adapter(&pca_isa_ops);
 
-       if (irq > 0) {
+       if (irq > -1) {
                disable_irq(irq);
                free_irq(irq, &pca_isa_ops);
        }
@@ -163,6 +176,7 @@ static int __devexit pca_isa_remove(struct device *dev, unsigned int id)
 }
 
 static struct isa_driver pca_isa_driver = {
+       .match          = pca_isa_match,
        .probe          = pca_isa_probe,
        .remove         = __devexit_p(pca_isa_remove),
        .driver = {
This page took 0.025165 seconds and 5 git commands to generate.