Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus

* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
[SSB] Initialise dma_mask for SSB_BUSTYPE_SSB devices
[MIPS] BCM47xx: Fix build error due to missing PCI functions
[MIPS] IP27: Switch to dynamic interrupt routing avoding panic on error.
[MIPS] au1000: Make sure GPIO value is zero or one

+97 -13
+2 -2
arch/mips/au1000/common/gpio.c
··· 48 48 { 49 49 gpio -= AU1XXX_GPIO_BASE; 50 50 51 - gpio2->output = (GPIO2_OUTPUT_ENABLE_MASK << gpio) | (value << gpio); 51 + gpio2->output = (GPIO2_OUTPUT_ENABLE_MASK << gpio) | ((!!value) << gpio); 52 52 } 53 53 54 54 static int au1xxx_gpio2_direction_input(unsigned gpio) ··· 62 62 { 63 63 gpio -= AU1XXX_GPIO_BASE; 64 64 gpio2->dir |= 0x01 << gpio; 65 - gpio2->output = (GPIO2_OUTPUT_ENABLE_MASK << gpio) | (value << gpio); 65 + gpio2->output = (GPIO2_OUTPUT_ENABLE_MASK << gpio) | ((!!value) << gpio); 66 66 return 0; 67 67 } 68 68
+1
arch/mips/pci/Makefile
··· 15 15 obj-$(CONFIG_PCI_VR41XX) += ops-vr41xx.o pci-vr41xx.o 16 16 obj-$(CONFIG_MARKEINS) += ops-emma2rh.o pci-emma2rh.o fixup-emma2rh.o 17 17 obj-$(CONFIG_PCI_TX4927) += ops-tx4927.o 18 + obj-$(CONFIG_BCM47XX) += pci-bcm47xx.o 18 19 19 20 # 20 21 # These are still pretty much in the old state, watch, go blind.
+60
arch/mips/pci/pci-bcm47xx.c
··· 1 + /* 2 + * Copyright (C) 2008 Aurelien Jarno <aurelien@aurel32.net> 3 + * 4 + * This program is free software; you can redistribute it and/or modify it 5 + * under the terms of the GNU General Public License as published by the 6 + * Free Software Foundation; either version 2 of the License, or (at your 7 + * option) any later version. 8 + * 9 + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 10 + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 11 + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 12 + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 13 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 14 + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 15 + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 16 + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 17 + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 18 + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 19 + * 20 + * You should have received a copy of the GNU General Public License along 21 + * with this program; if not, write to the Free Software Foundation, Inc., 22 + * 675 Mass Ave, Cambridge, MA 02139, USA. 23 + */ 24 + 25 + #include <linux/types.h> 26 + #include <linux/pci.h> 27 + #include <linux/ssb/ssb.h> 28 + 29 + int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) 30 + { 31 + return 0; 32 + } 33 + 34 + int pcibios_plat_dev_init(struct pci_dev *dev) 35 + { 36 + int res; 37 + u8 slot, pin; 38 + 39 + res = ssb_pcibios_plat_dev_init(dev); 40 + if (res < 0) { 41 + printk(KERN_ALERT "PCI: Failed to init device %s\n", 42 + pci_name(dev)); 43 + return res; 44 + } 45 + 46 + pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin); 47 + slot = PCI_SLOT(dev->devfn); 48 + res = ssb_pcibios_map_irq(dev, slot, pin); 49 + 50 + /* IRQ-0 and IRQ-1 are software interrupts. */ 51 + if (res < 2) { 52 + printk(KERN_ALERT "PCI: Failed to map IRQ of device %s\n", 53 + pci_name(dev)); 54 + return res; 55 + } 56 + 57 + dev->irq = res; 58 + return 0; 59 + } 60 +
+33 -11
arch/mips/pci/pci-ip27.c
··· 143 143 */ 144 144 int __devinit pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) 145 145 { 146 - struct bridge_controller *bc = BRIDGE_CONTROLLER(dev->bus); 147 - int irq = bc->pci_int[slot]; 146 + return 0; 147 + } 148 148 149 - if (irq == -1) { 150 - irq = bc->pci_int[slot] = request_bridge_irq(bc); 151 - if (irq < 0) 152 - panic("Can't allocate interrupt for PCI device %s\n", 153 - pci_name(dev)); 149 + /* Most MIPS systems have straight-forward swizzling needs. */ 150 + static inline u8 bridge_swizzle(u8 pin, u8 slot) 151 + { 152 + return (((pin - 1) + slot) % 4) + 1; 153 + } 154 + 155 + static inline struct pci_dev *bridge_root_dev(struct pci_dev *dev) 156 + { 157 + while (dev->bus->parent) { 158 + /* Move up the chain of bridges. */ 159 + dev = dev->bus->self; 154 160 } 155 161 156 - irq_to_bridge[irq] = bc; 157 - irq_to_slot[irq] = slot; 158 - 159 - return irq; 162 + return dev; 160 163 } 161 164 162 165 /* Do platform specific device initialization at pci_enable_device() time */ 163 166 int pcibios_plat_dev_init(struct pci_dev *dev) 164 167 { 168 + struct bridge_controller *bc = BRIDGE_CONTROLLER(dev->bus); 169 + struct pci_dev *rdev = bridge_root_dev(dev); 170 + int slot = PCI_SLOT(rdev->devfn); 171 + int irq; 172 + 173 + irq = bc->pci_int[slot]; 174 + if (irq == -1) { 175 + irq = request_bridge_irq(bc); 176 + if (irq < 0) 177 + return irq; 178 + 179 + bc->pci_int[slot] = irq; 180 + } 181 + 182 + irq_to_bridge[irq] = bc; 183 + irq_to_slot[irq] = slot; 184 + 185 + dev->irq = irq; 186 + 165 187 return 0; 166 188 } 167 189
+1
drivers/ssb/main.c
··· 471 471 #endif 472 472 break; 473 473 case SSB_BUSTYPE_SSB: 474 + dev->dma_mask = &dev->coherent_dma_mask; 474 475 break; 475 476 } 476 477