CF driver cleanup
authorflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 1 Nov 2007 17:11:16 +0000 (17:11 +0000)
committerflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 1 Nov 2007 17:11:16 +0000 (17:11 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@9473 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c
target/linux/adm5120/files/drivers/block/rb1xx/ata.c
target/linux/adm5120/files/drivers/block/rb1xx/bdev.c

index 4100496..1af14ab 100644 (file)
@@ -59,6 +59,9 @@
 #define RB150_NAND_WRITE(v) \
        writeb((v), (void __iomem *)KSEG1ADDR(RB150_NAND_BASE))
 
+#define RB153_GPIO_CF_RDY      ADM5120_GPIO_P1L1
+#define RB153_GPIO_CF_WT       ADM5120_GPIO_P0L0
+
 /*--------------------------------------------------------------------------*/
 
 static struct adm5120_pci_irq rb1xx_pci_irqs[] __initdata = {
@@ -233,6 +236,15 @@ static void __init rb1xx_flash_setup(void)
        adm5120_nand_data.chip.options = NAND_NO_AUTOINCR;
 }
 
+static void __init rb153_cf_setup(void)
+{
+       gpio_request(RB153_GPIO_CF_RDY, "cf-ready");
+       gpio_direction_input(RB153_GPIO_CF_RDY);
+       gpio_request(RB153_GPIO_CF_WT, "cf-wait");
+       gpio_direction_output(RB153_GPIO_CF_WT, 1);
+       gpio_direction_input(RB153_GPIO_CF_WT);
+}
+
 static void __init rb1xx_setup(void)
 {
        /* enable NAND flash interface */
@@ -269,6 +281,12 @@ static void __init rb150_setup(void)
        rb1xx_mac_setup();
 }
 
+static void __init rb153_setup(void)
+{
+       rb150_setup();
+       rb153_cf_setup();
+}
+
 /*--------------------------------------------------------------------------*/
 
 ADM5120_BOARD_START(RB_111, "Mikrotik RouterBOARD 111")
@@ -320,7 +338,7 @@ ADM5120_BOARD_START(RB_150, "Mikrotik RouterBOARD 150")
 ADM5120_BOARD_END
 
 ADM5120_BOARD_START(RB_153, "Mikrotik RouterBOARD 153")
-       .board_setup    = rb1xx_setup,
+       .board_setup    = rb153_setup,
        .eth_num_ports  = 5,
        .eth_vlans      = rb15x_vlans,
        .num_devices    = ARRAY_SIZE(rb153_devices),
index b396317..5447be5 100644 (file)
@@ -16,8 +16,9 @@
 #include <linux/pci.h>
 #include <linux/ioport.h>      /* request_mem_region() */
 
-#include <asm/unaligned.h>             /* ioremap() */
-#include <asm/io.h>            /* ioremap() */
+#include <asm/unaligned.h>
+#include <asm/io.h>
+#include <asm/gpio.h>
 
 #include <gpio.h>
 #include <adm5120_defs.h>
@@ -69,7 +70,7 @@ static inline u8 rareg(unsigned reg, struct cf_mips_dev* dev)
 
 static inline int cfrdy(struct cf_mips_dev *dev)
 {
-       return (SW_READ_REG(GPIO_CONF0) & (1 << 12));
+       return gpio_get_value(12);
 }
 
 static inline void prepare_cf_irq(struct cf_mips_dev *dev)
@@ -92,7 +93,7 @@ static inline int cf_present(struct cf_mips_dev* dev)
        int i;
 
        /* on RB100 WAIT is LOW all the time => read will hang */
-       if (SW_READ_REG(GPIO_CONF0) & (1 << 8))
+       if (gpio_read_value(8))
                cmd |= EXTIO_WAIT_EN;
 
        SW_WRITE_REG(GPIO_CONF2, cmd);
index 12c9385..bf63d20 100644 (file)
@@ -93,10 +93,10 @@ int cf_mips_probe(struct platform_device *pdev)
                return reg_result;
        }
 
-       dev = (struct cf_mips_dev *)kmalloc(sizeof(struct cf_mips_dev),GFP_KERNEL);
+       dev = (struct cf_mips_dev *)kzalloc(sizeof(struct cf_mips_dev),GFP_KERNEL);
        if (!dev)
                goto out_err;
-       memset(dev, 0, sizeof(struct cf_mips_dev));
+
        cdev->dev = dev;
        
        dev->pin = cdev->gpio_pin;
@@ -104,8 +104,9 @@ int cf_mips_probe(struct platform_device *pdev)
        r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cf_membase");
        dev->base = (void *) r->start;
        
-       if (cf_init(dev)) goto out_err;
-       printk("init done");
+       if (cf_init(dev))
+               goto out_err;
+       printk(KERN_INFO "cf-mips: init done");
        
        spin_lock_init(&dev->lock);
        dev->queue = blk_init_queue(cf_request,&dev->lock);
@@ -125,7 +126,9 @@ int cf_mips_probe(struct platform_device *pdev)
        dev->gd = alloc_disk(CF_MAX_PART);
        cf_gendisk = dev->gd;
        cdev->gd = dev->gd;
-       if (!cf_gendisk) goto out_err; /* Last of these goto's */
+
+       if (!cf_gendisk)
+               goto out_err; /* Last of these goto's */
        
        cf_gendisk->major = MAJOR_NR;
        cf_gendisk->first_minor = 0;