Loading arch/powerpc/platforms/pasemi/iommu.c +9 −10 Original line number Diff line number Diff line /* * Copyright (C) 2005-2007, PA Semi, Inc * Copyright (C) 2005-2008, PA Semi, Inc * * Maintained by: Olof Johansson <olof@lixom.net> * Loading Loading @@ -27,7 +27,6 @@ #include <asm/abs_addr.h> #include <asm/firmware.h> #define IOBMAP_PAGE_SHIFT 12 #define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT) #define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1) Loading @@ -35,13 +34,13 @@ #define IOB_BASE 0xe0000000 #define IOB_SIZE 0x3000 /* Configuration registers */ #define IOBCAP_REG 0x10 #define IOBCOM_REG 0x40 #define IOBCAP_REG 0x40 #define IOBCOM_REG 0x100 /* Enable IOB address translation */ #define IOBCOM_ATEN 0x00000100 /* Address decode configuration register */ #define IOB_AD_REG 0x53 #define IOB_AD_REG 0x14c /* IOBCOM_AD_REG fields */ #define IOB_AD_VGPRT 0x00000e00 #define IOB_AD_VGAEN 0x00000100 Loading @@ -56,13 +55,13 @@ #define IOB_AD_TRNG_2G 0x00000001 #define IOB_AD_TRNG_128G 0x00000003 #define IOB_TABLEBASE_REG 0x55 #define IOB_TABLEBASE_REG 0x154 /* Base of the 64 4-byte L1 registers */ #define IOB_XLT_L1_REGBASE 0xac0 #define IOB_XLT_L1_REGBASE 0x2b00 /* Register to invalidate TLB entries */ #define IOB_AT_INVAL_TLB_REG 0xb40 #define IOB_AT_INVAL_TLB_REG 0x2d00 /* The top two bits of the level 1 entry contains valid and type flags */ #define IOBMAP_L1E_V 0x40000000 Loading @@ -76,7 +75,7 @@ #define IOBMAP_L2E_V 0x80000000 #define IOBMAP_L2E_V_CACHED 0xc0000000 static u32 __iomem *iob; static void __iomem *iob; static u32 iob_l1_emptyval; static u32 iob_l2_emptyval; static u32 *iob_l2_base; Loading Loading @@ -219,7 +218,7 @@ int __init iob_init(struct device_node *dn) for (i = 0; i < 64; i++) { /* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */ regword = IOBMAP_L1E_V | (__pa(iob_l2_base + i*0x2000) >> 12); out_le32(iob+IOB_XLT_L1_REGBASE+i, regword); out_le32(iob+IOB_XLT_L1_REGBASE+i*4, regword); } /* set 2GB translation window, based at 0 */ Loading arch/powerpc/sysdev/mpic.c +4 −5 Original line number Diff line number Diff line Loading @@ -1410,11 +1410,6 @@ void mpic_cpu_set_priority(int prio) mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), prio); } /* * XXX: someone who knows mpic should check this. * do we need to eoi the ipi including for kexec cpu here (see xics comments)? * or can we reset the mpic in the new kernel? */ void mpic_teardown_this_cpu(int secondary) { struct mpic *mpic = mpic_primary; Loading @@ -1434,6 +1429,10 @@ void mpic_teardown_this_cpu(int secondary) /* Set current processor priority to max */ mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf); /* We need to EOI the IPI since not all platforms reset the MPIC * on boot and new interrupts wouldn't get delivered otherwise. */ mpic_eoi(mpic); spin_unlock_irqrestore(&mpic_lock, flags); } Loading drivers/net/pasemi_mac.c +33 −2 Original line number Diff line number Diff line Loading @@ -404,6 +404,7 @@ static void pasemi_mac_free_csring(struct pasemi_mac_csring *csring) pasemi_dma_free_flag(csring->events[1]); pasemi_dma_free_ring(&csring->chan); pasemi_dma_free_chan(&csring->chan); pasemi_dma_free_fun(csring->fun); } static int pasemi_mac_setup_rx_resources(const struct net_device *dev) Loading Loading @@ -1150,7 +1151,10 @@ static int pasemi_mac_open(struct net_device *dev) if (!mac->tx) goto out_tx_ring; if (dev->mtu > 1500) { /* We might already have allocated rings in case mtu was changed * before interface was brought up. */ if (dev->mtu > 1500 && !mac->num_cs) { pasemi_mac_setup_csrings(mac); if (!mac->num_cs) goto out_tx_ring; Loading Loading @@ -1388,8 +1392,12 @@ static int pasemi_mac_close(struct net_device *dev) free_irq(mac->tx->chan.irq, mac->tx); free_irq(mac->rx->chan.irq, mac->rx); for (i = 0; i < mac->num_cs; i++) for (i = 0; i < mac->num_cs; i++) { pasemi_mac_free_csring(mac->cs[i]); mac->cs[i] = NULL; } mac->num_cs = 0; /* Free resources */ pasemi_mac_free_rx_resources(mac); Loading Loading @@ -1640,6 +1648,26 @@ static int pasemi_mac_poll(struct napi_struct *napi, int budget) return pkts; } #ifdef CONFIG_NET_POLL_CONTROLLER /* * Polling 'interrupt' - used by things like netconsole to send skbs * without having to re-enable interrupts. It's not called while * the interrupt routine is executing. */ static void pasemi_mac_netpoll(struct net_device *dev) { const struct pasemi_mac *mac = netdev_priv(dev); disable_irq(mac->tx->chan.irq); pasemi_mac_tx_intr(mac->tx->chan.irq, mac->tx); enable_irq(mac->tx->chan.irq); disable_irq(mac->rx->chan.irq); pasemi_mac_rx_intr(mac->rx->chan.irq, mac->rx); enable_irq(mac->rx->chan.irq); } #endif static int pasemi_mac_change_mtu(struct net_device *dev, int new_mtu) { struct pasemi_mac *mac = netdev_priv(dev); Loading Loading @@ -1799,6 +1827,9 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent) dev->mtu = PE_DEF_MTU; /* 1500 MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */ mac->bufsz = dev->mtu + ETH_HLEN + ETH_FCS_LEN + LOCAL_SKB_ALIGN + 128; #ifdef CONFIG_NET_POLL_CONTROLLER dev->poll_controller = pasemi_mac_netpoll; #endif dev->change_mtu = pasemi_mac_change_mtu; dev->ethtool_ops = &pasemi_mac_ethtool_ops; Loading Loading
arch/powerpc/platforms/pasemi/iommu.c +9 −10 Original line number Diff line number Diff line /* * Copyright (C) 2005-2007, PA Semi, Inc * Copyright (C) 2005-2008, PA Semi, Inc * * Maintained by: Olof Johansson <olof@lixom.net> * Loading Loading @@ -27,7 +27,6 @@ #include <asm/abs_addr.h> #include <asm/firmware.h> #define IOBMAP_PAGE_SHIFT 12 #define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT) #define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1) Loading @@ -35,13 +34,13 @@ #define IOB_BASE 0xe0000000 #define IOB_SIZE 0x3000 /* Configuration registers */ #define IOBCAP_REG 0x10 #define IOBCOM_REG 0x40 #define IOBCAP_REG 0x40 #define IOBCOM_REG 0x100 /* Enable IOB address translation */ #define IOBCOM_ATEN 0x00000100 /* Address decode configuration register */ #define IOB_AD_REG 0x53 #define IOB_AD_REG 0x14c /* IOBCOM_AD_REG fields */ #define IOB_AD_VGPRT 0x00000e00 #define IOB_AD_VGAEN 0x00000100 Loading @@ -56,13 +55,13 @@ #define IOB_AD_TRNG_2G 0x00000001 #define IOB_AD_TRNG_128G 0x00000003 #define IOB_TABLEBASE_REG 0x55 #define IOB_TABLEBASE_REG 0x154 /* Base of the 64 4-byte L1 registers */ #define IOB_XLT_L1_REGBASE 0xac0 #define IOB_XLT_L1_REGBASE 0x2b00 /* Register to invalidate TLB entries */ #define IOB_AT_INVAL_TLB_REG 0xb40 #define IOB_AT_INVAL_TLB_REG 0x2d00 /* The top two bits of the level 1 entry contains valid and type flags */ #define IOBMAP_L1E_V 0x40000000 Loading @@ -76,7 +75,7 @@ #define IOBMAP_L2E_V 0x80000000 #define IOBMAP_L2E_V_CACHED 0xc0000000 static u32 __iomem *iob; static void __iomem *iob; static u32 iob_l1_emptyval; static u32 iob_l2_emptyval; static u32 *iob_l2_base; Loading Loading @@ -219,7 +218,7 @@ int __init iob_init(struct device_node *dn) for (i = 0; i < 64; i++) { /* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */ regword = IOBMAP_L1E_V | (__pa(iob_l2_base + i*0x2000) >> 12); out_le32(iob+IOB_XLT_L1_REGBASE+i, regword); out_le32(iob+IOB_XLT_L1_REGBASE+i*4, regword); } /* set 2GB translation window, based at 0 */ Loading
arch/powerpc/sysdev/mpic.c +4 −5 Original line number Diff line number Diff line Loading @@ -1410,11 +1410,6 @@ void mpic_cpu_set_priority(int prio) mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), prio); } /* * XXX: someone who knows mpic should check this. * do we need to eoi the ipi including for kexec cpu here (see xics comments)? * or can we reset the mpic in the new kernel? */ void mpic_teardown_this_cpu(int secondary) { struct mpic *mpic = mpic_primary; Loading @@ -1434,6 +1429,10 @@ void mpic_teardown_this_cpu(int secondary) /* Set current processor priority to max */ mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf); /* We need to EOI the IPI since not all platforms reset the MPIC * on boot and new interrupts wouldn't get delivered otherwise. */ mpic_eoi(mpic); spin_unlock_irqrestore(&mpic_lock, flags); } Loading
drivers/net/pasemi_mac.c +33 −2 Original line number Diff line number Diff line Loading @@ -404,6 +404,7 @@ static void pasemi_mac_free_csring(struct pasemi_mac_csring *csring) pasemi_dma_free_flag(csring->events[1]); pasemi_dma_free_ring(&csring->chan); pasemi_dma_free_chan(&csring->chan); pasemi_dma_free_fun(csring->fun); } static int pasemi_mac_setup_rx_resources(const struct net_device *dev) Loading Loading @@ -1150,7 +1151,10 @@ static int pasemi_mac_open(struct net_device *dev) if (!mac->tx) goto out_tx_ring; if (dev->mtu > 1500) { /* We might already have allocated rings in case mtu was changed * before interface was brought up. */ if (dev->mtu > 1500 && !mac->num_cs) { pasemi_mac_setup_csrings(mac); if (!mac->num_cs) goto out_tx_ring; Loading Loading @@ -1388,8 +1392,12 @@ static int pasemi_mac_close(struct net_device *dev) free_irq(mac->tx->chan.irq, mac->tx); free_irq(mac->rx->chan.irq, mac->rx); for (i = 0; i < mac->num_cs; i++) for (i = 0; i < mac->num_cs; i++) { pasemi_mac_free_csring(mac->cs[i]); mac->cs[i] = NULL; } mac->num_cs = 0; /* Free resources */ pasemi_mac_free_rx_resources(mac); Loading Loading @@ -1640,6 +1648,26 @@ static int pasemi_mac_poll(struct napi_struct *napi, int budget) return pkts; } #ifdef CONFIG_NET_POLL_CONTROLLER /* * Polling 'interrupt' - used by things like netconsole to send skbs * without having to re-enable interrupts. It's not called while * the interrupt routine is executing. */ static void pasemi_mac_netpoll(struct net_device *dev) { const struct pasemi_mac *mac = netdev_priv(dev); disable_irq(mac->tx->chan.irq); pasemi_mac_tx_intr(mac->tx->chan.irq, mac->tx); enable_irq(mac->tx->chan.irq); disable_irq(mac->rx->chan.irq); pasemi_mac_rx_intr(mac->rx->chan.irq, mac->rx); enable_irq(mac->rx->chan.irq); } #endif static int pasemi_mac_change_mtu(struct net_device *dev, int new_mtu) { struct pasemi_mac *mac = netdev_priv(dev); Loading Loading @@ -1799,6 +1827,9 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent) dev->mtu = PE_DEF_MTU; /* 1500 MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */ mac->bufsz = dev->mtu + ETH_HLEN + ETH_FCS_LEN + LOCAL_SKB_ALIGN + 128; #ifdef CONFIG_NET_POLL_CONTROLLER dev->poll_controller = pasemi_mac_netpoll; #endif dev->change_mtu = pasemi_mac_change_mtu; dev->ethtool_ops = &pasemi_mac_ethtool_ops; Loading