diff options
-rw-r--r-- | target/linux/ppc40x/patches/101-pata-magicbox-cf-driver.patch | 39 | ||||
-rw-r--r-- | target/linux/ppc40x/patches/120-usb-isp116x-hcd-add-of-binding.patch | 42 |
2 files changed, 37 insertions, 44 deletions
diff --git a/target/linux/ppc40x/patches/101-pata-magicbox-cf-driver.patch b/target/linux/ppc40x/patches/101-pata-magicbox-cf-driver.patch index bf49177d38..c296a12063 100644 --- a/target/linux/ppc40x/patches/101-pata-magicbox-cf-driver.patch +++ b/target/linux/ppc40x/patches/101-pata-magicbox-cf-driver.patch @@ -29,11 +29,11 @@ obj-$(CONFIG_PATA_OPTI) += pata_opti.o --- /dev/null +++ b/drivers/ata/pata_magicbox_cf.c -@@ -0,0 +1,404 @@ +@@ -0,0 +1,401 @@ +/* + * PATA/CompactFlash driver for the MagicBox v2/OpenRB boards. + * -+ * Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org> ++ * Copyright (C) 2009,2012 Gabor Juhos <juhosg@openwrt.org> + * + * Based on the IDE driver by Wojtek Kaniewski <wojtekka@toxygen.net> + * @@ -44,12 +44,13 @@ + +#include <linux/kernel.h> +#include <linux/module.h> ++#include <linux/slab.h> +#include <linux/types.h> +#include <linux/ioport.h> +#include <linux/libata.h> +#include <linux/irq.h> -+#include <linux/of.h> -+#include <linux/of_device.h> ++//#include <linux/of.h> ++//#include <linux/of_device.h> +#include <linux/of_platform.h> +#include <scsi/scsi_host.h> + @@ -261,10 +262,9 @@ + return words << 1; +} + -+static u8 magicbox_cf_irq_on(struct ata_port *ap) ++static void magicbox_cf_irq_on(struct ata_port *ap) +{ + /* Nothing to do. */ -+ return 0; +} + +static void magicbox_cf_irq_clear(struct ata_port *ap) @@ -305,7 +305,7 @@ + + ap->ops = &magicbox_cf_port_ops; + ap->pio_mask = ATA_PIO4; -+ ap->flags |= ATA_FLAG_MMIO | ATA_FLAG_NO_LEGACY | ATA_FLAG_NO_ATAPI; ++ ap->flags |= ATA_FLAG_NO_ATAPI; + + ap->ioaddr.cmd_addr = info->base + MAGICBOX_CF_REG_CMD; + ap->ioaddr.data_addr = info->base + MAGICBOX_CF_REG_DATA; @@ -326,8 +326,7 @@ + ap->ioaddr.ctl_addr); +} + -+static int __devinit magicbox_cf_of_probe(struct of_device *op, -+ const struct of_device_id *match) ++static int __devinit magicbox_cf_of_probe(struct platform_device *op) +{ + struct magicbox_cf_info *info; + struct ata_host *host; @@ -340,20 +339,20 @@ + goto err_exit; + } + -+ irq = irq_of_parse_and_map(op->node, 0); ++ irq = irq_of_parse_and_map(op->dev.of_node, 0); + if (irq < 0) { + dev_err(&op->dev, "invalid irq\n"); + ret = -EINVAL; + goto err_free_info; + } + -+ info->base = of_iomap(op->node, 0); ++ info->base = of_iomap(op->dev.of_node, 0); + if (info->base == NULL) { + ret = -ENOMEM; + goto err_free_info; + } + -+ info->ctrl = of_iomap(op->node, 1); ++ info->ctrl = of_iomap(op->dev.of_node, 1); + if (info->ctrl == NULL) { + ret = -ENOMEM; + goto err_unmap_base; @@ -386,7 +385,7 @@ + return ret; +} + -+static __devexit int magicbox_cf_of_remove(struct of_device *op) ++static __devexit int magicbox_cf_of_remove(struct platform_device *op) +{ + struct ata_host *host = dev_get_drvdata(&op->dev); + struct magicbox_cf_info *info = host->private_data; @@ -404,26 +403,24 @@ + {}, +}; + -+static struct of_platform_driver magicbox_cf_of_platform_driver = { -+ .owner = THIS_MODULE, -+ .name = DRV_NAME, -+ .match_table = magicbox_cf_of_match, ++static struct platform_driver magicbox_cf_of_platform_driver = { + .probe = magicbox_cf_of_probe, + .remove = __devexit_p(magicbox_cf_of_remove), + .driver = { -+ .name = DRV_NAME, -+ .owner = THIS_MODULE, ++ .name = DRV_NAME, ++ .owner = THIS_MODULE, ++ .of_match_table = magicbox_cf_of_match, + }, +}; + +static int __init magicbox_cf_init(void) +{ -+ return of_register_platform_driver(&magicbox_cf_of_platform_driver); ++ return platform_driver_register(&magicbox_cf_of_platform_driver); +} + +static void __exit magicbox_cf_exit(void) +{ -+ of_unregister_platform_driver(&magicbox_cf_of_platform_driver); ++ platform_driver_unregister(&magicbox_cf_of_platform_driver); +} + +module_init(magicbox_cf_init); diff --git a/target/linux/ppc40x/patches/120-usb-isp116x-hcd-add-of-binding.patch b/target/linux/ppc40x/patches/120-usb-isp116x-hcd-add-of-binding.patch index 6bc5a9fc46..d869cffc07 100644 --- a/target/linux/ppc40x/patches/120-usb-isp116x-hcd-add-of-binding.patch +++ b/target/linux/ppc40x/patches/120-usb-isp116x-hcd-add-of-binding.patch @@ -8,7 +8,7 @@ static int isp116x_remove(struct platform_device *pdev) { struct usb_hcd *hcd = platform_get_drvdata(pdev); -@@ -1708,22 +1709,253 @@ static struct platform_driver isp116x_dr +@@ -1708,22 +1709,249 @@ static struct platform_driver isp116x_dr }, }; @@ -30,8 +30,6 @@ + +#ifdef CONFIG_USB_ISP116X_HCD_OF + -+#include <linux/of.h> -+#include <linux/of_device.h> +#include <linux/of_platform.h> + +#ifdef USE_PLATFORM_DELAY @@ -43,13 +41,12 @@ +#define isp116x_of_delay NULL +#endif + -+static int __devinit isp116x_of_probe(struct of_device *op, -+ const struct of_device_id *match) ++static int __devinit isp116x_of_probe(struct platform_device *op) +{ -+ struct device_node *dn = op->node; ++ struct device_node *dn = op->dev.of_node; + struct usb_hcd *hcd; + struct isp116x *isp116x; -+ struct resource addr, data, ires; ++ struct resource addr, data; + struct isp116x_platform_data *board; + void __iomem *addr_reg; + void __iomem *data_reg; @@ -65,12 +62,6 @@ + if (ret) + return ret; + -+ ret = of_irq_to_resource(dn, 1, &ires); -+ if (ret) -+ return ret; -+ -+ irqflags = ires.flags & IRQF_TRIGGER_MASK; -+ + board = kzalloc(sizeof(struct isp116x_platform_data), GFP_KERNEL); + if (board == NULL) + return -ENOMEM; @@ -97,7 +88,7 @@ + goto err_release_data; + } + -+ irq = irq_of_parse_and_map(op->node, 0); ++ irq = irq_of_parse_and_map(dn, 0); + if (irq == NO_IRQ) { + ret = -EINVAL; + goto err_unmap_data; @@ -132,6 +123,13 @@ + if (of_get_property(dn, "int_edge_triggered", NULL)) + board->int_edge_triggered = 1; + ++ if (board->int_edge_triggered) ++ irqflags = board->int_act_high ? IRQF_TRIGGER_RISING : ++ IRQF_TRIGGER_FALLING; ++ else ++ irqflags = board->int_act_high ? IRQF_TRIGGER_HIGH : ++ IRQF_TRIGGER_LOW; ++ + ret = usb_add_hcd(hcd, irq, irqflags | IRQF_DISABLED); + if (ret) + goto err_put_hcd; @@ -163,7 +161,7 @@ + return ret; +} + -+static __devexit int isp116x_of_remove(struct of_device *op) ++static __devexit int isp116x_of_remove(struct platform_device *op) +{ + struct usb_hcd *hcd = dev_get_drvdata(&op->dev); + struct isp116x *isp116x; @@ -181,11 +179,11 @@ + irq_dispose_mapping(hcd->irq); + + iounmap(isp116x->data_reg); -+ (void) of_address_to_resource(op->node, 0, &res); ++ (void) of_address_to_resource(op->dev.of_node, 0, &res); + release_mem_region(res.start, resource_size(&res)); + + iounmap(isp116x->addr_reg); -+ (void) of_address_to_resource(op->node, 1, &res); ++ (void) of_address_to_resource(op->dev.of_node, 1, &res); + release_mem_region(res.start, resource_size(&res)); + + kfree(isp116x->board); @@ -199,26 +197,24 @@ + {}, +}; + -+static struct of_platform_driver isp116x_of_platform_driver = { -+ .owner = THIS_MODULE, -+ .name = "isp116x-hcd-of", -+ .match_table = isp116x_of_match, ++static struct platform_driver isp116x_of_platform_driver = { + .probe = isp116x_of_probe, + .remove = __devexit_p(isp116x_of_remove), + .driver = { + .name = "isp116x-hcd-of", + .owner = THIS_MODULE, ++ .of_match_table = isp116x_of_match, + }, +}; + +static int __init isp116x_of_register(void) +{ -+ return of_register_platform_driver(&isp116x_of_platform_driver); ++ return platform_driver_register(&isp116x_of_platform_driver); +} + +static void __exit isp116x_of_unregister(void) +{ -+ of_unregister_platform_driver(&isp116x_of_platform_driver); ++ platform_driver_unregister(&isp116x_of_platform_driver); +} + +MODULE_DEVICE_TABLE(of, isp116x_of_match); |