From 947ebaae8cec91a8518e858a9b005cf1d7a9f1a5 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 9 Mar 2013 18:51:46 +0000 Subject: cns3xxx: add linux 3.8 support and use it by default git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35908 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../cns3xxx/files/arch/arm/mach-cns3xxx/headsmp.S | 2 +- .../cns3xxx/files/arch/arm/mach-cns3xxx/platsmp.c | 21 +++++++++++---------- .../cns3xxx/files/drivers/i2c/busses/i2c-cns3xxx.c | 4 ++-- .../files/drivers/net/ethernet/cavium/cns3xxx_eth.c | 6 +++--- .../linux/cns3xxx/files/drivers/spi/spi-cns3xxx.c | 6 +++--- .../cns3xxx/files/drivers/usb/dwc/otg_driver.c | 6 +++--- .../linux/cns3xxx/files/drivers/usb/dwc/otg_pcd.c | 4 ++-- 7 files changed, 25 insertions(+), 24 deletions(-) (limited to 'target/linux/cns3xxx/files') diff --git a/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/headsmp.S b/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/headsmp.S index 456fd67f97..3b46bdc324 100644 --- a/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/headsmp.S +++ b/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/headsmp.S @@ -13,7 +13,7 @@ #include #include - __INIT + __CPUINIT /* * CNS3XXX specific entry point for secondary CPUs. This provides diff --git a/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/platsmp.c b/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/platsmp.c index 16ad562651..77ac97a20c 100644 --- a/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/platsmp.c +++ b/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/platsmp.c @@ -49,12 +49,6 @@ struct cpu_cache_fns cpu_cache_save; #define SCU_CPU_STATUS 0x08 static void __iomem *scu_base; -/* - * control for which core is the next to come out of the secondary - * boot "holding pen" - */ -volatile int __cpuinitdata pen_release = -1; - static void __init cns3xxx_set_fiq_regs(void) { struct pt_regs FIQ_regs; @@ -108,7 +102,7 @@ static void __cpuinit write_pen_release(int val) static DEFINE_SPINLOCK(boot_lock); -void __cpuinit platform_secondary_init(unsigned int cpu) +static void __cpuinit cns3xxx_secondary_init(unsigned int cpu) { /* * if any interrupts are already enabled for the primary @@ -143,7 +137,7 @@ void __cpuinit platform_secondary_init(unsigned int cpu) spin_unlock(&boot_lock); } -int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) +static int __cpuinit cns3xxx_boot_secondary(unsigned int cpu, struct task_struct *idle) { unsigned long timeout; @@ -192,7 +186,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * Initialise the CPU possible map early - this describes the CPUs * which may be present or become present in the system. */ -void __init smp_init_cpus(void) +static void __init cns3xxx_smp_init_cpus(void) { unsigned int i, ncores; unsigned int status; @@ -214,7 +208,7 @@ void __init smp_init_cpus(void) set_smp_cross_call(gic_raise_softirq); } -void __init platform_smp_prepare_cpus(unsigned int max_cpus) +static void __init cns3xxx_smp_prepare_cpus(unsigned int max_cpus) { int i; @@ -348,3 +342,10 @@ void smp_dma_flush_range(const void *start, const void *end) } raw_local_irq_restore(flags); } + +struct smp_operations cns3xxx_smp_ops __initdata = { + .smp_init_cpus = cns3xxx_smp_init_cpus, + .smp_prepare_cpus = cns3xxx_smp_prepare_cpus, + .smp_secondary_init = cns3xxx_secondary_init, + .smp_boot_secondary = cns3xxx_boot_secondary, +}; diff --git a/target/linux/cns3xxx/files/drivers/i2c/busses/i2c-cns3xxx.c b/target/linux/cns3xxx/files/drivers/i2c/busses/i2c-cns3xxx.c index f578eac054..c3fd7c8972 100644 --- a/target/linux/cns3xxx/files/drivers/i2c/busses/i2c-cns3xxx.c +++ b/target/linux/cns3xxx/files/drivers/i2c/busses/i2c-cns3xxx.c @@ -259,7 +259,7 @@ static irqreturn_t cns3xxx_i2c_isr(int irq, void *dev_id) return IRQ_HANDLED; } -static int __devinit cns3xxx_i2c_probe(struct platform_device *pdev) +static int cns3xxx_i2c_probe(struct platform_device *pdev) { struct cns3xxx_i2c *i2c; struct resource *res, *res2; @@ -331,7 +331,7 @@ static int __devinit cns3xxx_i2c_probe(struct platform_device *pdev) return ret; } -static int __devexit cns3xxx_i2c_remove(struct platform_device *pdev) +static int cns3xxx_i2c_remove(struct platform_device *pdev) { struct cns3xxx_i2c *i2c = platform_get_drvdata(pdev); struct resource *res; diff --git a/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c b/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c index a9edefe4bb..959589dc14 100644 --- a/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c +++ b/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c @@ -629,7 +629,7 @@ static int eth_poll(struct napi_struct *napi, int budget) dma_unmap_single(NULL, rx_ring->phys_tab[i], RX_SEGMENT_MRU, DMA_FROM_DEVICE); - skb = build_skb(rx_ring->buff_tab[i]); + skb = build_skb(rx_ring->buff_tab[i], 0); if (!skb) break; @@ -1153,7 +1153,7 @@ static const struct net_device_ops cns3xxx_netdev_ops = { .ndo_validate_addr = eth_validate_addr, }; -static int __devinit eth_init_one(struct platform_device *pdev) +static int eth_init_one(struct platform_device *pdev) { int i; struct port *port; @@ -1297,7 +1297,7 @@ err_free: return err; } -static int __devexit eth_remove_one(struct platform_device *pdev) +static int eth_remove_one(struct platform_device *pdev) { struct net_device *dev = platform_get_drvdata(pdev); struct sw *sw = netdev_priv(dev); diff --git a/target/linux/cns3xxx/files/drivers/spi/spi-cns3xxx.c b/target/linux/cns3xxx/files/drivers/spi/spi-cns3xxx.c index c66ef82447..2642639867 100644 --- a/target/linux/cns3xxx/files/drivers/spi/spi-cns3xxx.c +++ b/target/linux/cns3xxx/files/drivers/spi/spi-cns3xxx.c @@ -324,7 +324,7 @@ static void __init cns3xxx_spi_initial(void) return; } -static int __devinit cns3xxx_spi_probe(struct platform_device *pdev) +static int cns3xxx_spi_probe(struct platform_device *pdev) { struct spi_master *master; struct cns3xxx_spi *hw; @@ -384,7 +384,7 @@ err_nomem: return err; } -static int __devexit cns3xxx_spi_remove(struct platform_device *dev) +static int cns3xxx_spi_remove(struct platform_device *dev) { struct cns3xxx_spi *hw = platform_get_drvdata(dev); @@ -419,7 +419,7 @@ static int cns3xxx_spi_resume(struct platform_device *pdev) static struct platform_driver cns3xxx_spi_driver = { .probe = cns3xxx_spi_probe, - .remove = __devexit_p(cns3xxx_spi_remove), + .remove = cns3xxx_spi_remove, .suspend = cns3xxx_spi_suspend, .resume = cns3xxx_spi_resume, .driver = { diff --git a/target/linux/cns3xxx/files/drivers/usb/dwc/otg_driver.c b/target/linux/cns3xxx/files/drivers/usb/dwc/otg_driver.c index 002c394797..f1fece8bf8 100644 --- a/target/linux/cns3xxx/files/drivers/usb/dwc/otg_driver.c +++ b/target/linux/cns3xxx/files/drivers/usb/dwc/otg_driver.c @@ -636,7 +636,7 @@ static int dwc_otg_driver_cleanup(struct platform_device *pdev) * * @param[in] lmdev lm_device definition */ -static int __devinit dwc_otg_driver_probe(struct platform_device *pdev) +static int dwc_otg_driver_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; int retval = 0; @@ -795,7 +795,7 @@ static int __devinit dwc_otg_driver_probe(struct platform_device *pdev) return retval; } -static int __devexit dwc_otg_driver_remove(struct platform_device *pdev) +static int dwc_otg_driver_remove(struct platform_device *pdev) { return dwc_otg_driver_cleanup(pdev); } @@ -803,7 +803,7 @@ static int __devexit dwc_otg_driver_remove(struct platform_device *pdev) static struct platform_driver dwc_otg_platform_driver = { .driver.name = "dwc_otg", .probe = dwc_otg_driver_probe, - .remove = __devexit_p(dwc_otg_driver_remove), + .remove = dwc_otg_driver_remove, }; static int __init dwc_otg_init_module(void) diff --git a/target/linux/cns3xxx/files/drivers/usb/dwc/otg_pcd.c b/target/linux/cns3xxx/files/drivers/usb/dwc/otg_pcd.c index 85c6fd9074..823989a6f5 100644 --- a/target/linux/cns3xxx/files/drivers/usb/dwc/otg_pcd.c +++ b/target/linux/cns3xxx/files/drivers/usb/dwc/otg_pcd.c @@ -820,7 +820,7 @@ struct free_param { dma_addr_t dma_addr; uint32_t size; }; -void free_list_agent_fn(void *data){ +static void free_list_agent_fn(struct work_struct *work) { struct list_head free_list; struct free_param *cur,*next; @@ -830,7 +830,7 @@ void free_list_agent_fn(void *data){ spin_unlock(&tofree_list_lock); list_for_each_entry_safe(cur,next,&free_list,list){ - if(cur==&free_list) break; + if(&cur->list==&free_list) break; dma_free_coherent(NULL,cur->size,cur->addr,cur->dma_addr); list_del(&cur->list); kfree(cur); -- cgit v1.2.3