Lines Matching refs:dev
44 static int bcma_wait_bits(struct bcma_device *dev, u16 reg, u32 bitmask, in bcma_wait_bits() argument
51 val = bcma_read32(dev, reg); in bcma_wait_bits()
60 static void bcma_hcd_4716wa(struct bcma_device *dev) in bcma_hcd_4716wa() argument
64 if (dev->bus->chipinfo.id == 0x4716) { in bcma_hcd_4716wa()
67 tmp = bcma_cpu_clock(&dev->bus->drv_mips); in bcma_hcd_4716wa()
79 bcma_write32(dev, 0x524, 0x1); /* write sel to enable */ in bcma_hcd_4716wa()
82 bcma_write32(dev, 0x524, tmp); in bcma_hcd_4716wa()
84 bcma_write32(dev, 0x524, 0x4ab); in bcma_hcd_4716wa()
86 bcma_read32(dev, 0x528); in bcma_hcd_4716wa()
87 bcma_write32(dev, 0x528, 0x80000000); in bcma_hcd_4716wa()
94 static void bcma_hcd_init_chip_mips(struct bcma_device *dev) in bcma_hcd_init_chip_mips() argument
108 if (!bcma_core_is_enabled(dev)) { in bcma_hcd_init_chip_mips()
109 bcma_core_enable(dev, 0); in bcma_hcd_init_chip_mips()
111 if (dev->id.rev >= 5) { in bcma_hcd_init_chip_mips()
113 tmp = bcma_read32(dev, 0x1e0); in bcma_hcd_init_chip_mips()
115 bcma_write32(dev, 0x1e0, tmp); in bcma_hcd_init_chip_mips()
116 if (bcma_wait_bits(dev, 0x1e0, 1 << 24, 100)) in bcma_hcd_init_chip_mips()
120 bcma_write32(dev, 0x200, 0x4ff); in bcma_hcd_init_chip_mips()
122 bcma_write32(dev, 0x200, 0x6ff); in bcma_hcd_init_chip_mips()
126 bcma_write32(dev, 0x524, 0x6b); in bcma_hcd_init_chip_mips()
128 tmp = bcma_read32(dev, 0x524); in bcma_hcd_init_chip_mips()
130 bcma_write32(dev, 0x524, 0xab); in bcma_hcd_init_chip_mips()
132 tmp = bcma_read32(dev, 0x524); in bcma_hcd_init_chip_mips()
134 bcma_write32(dev, 0x524, 0x2b); in bcma_hcd_init_chip_mips()
136 tmp = bcma_read32(dev, 0x524); in bcma_hcd_init_chip_mips()
138 bcma_write32(dev, 0x524, 0x10ab); in bcma_hcd_init_chip_mips()
140 tmp = bcma_read32(dev, 0x524); in bcma_hcd_init_chip_mips()
142 if (bcma_wait_bits(dev, 0x528, 0xc000, 10000)) { in bcma_hcd_init_chip_mips()
143 tmp = bcma_read32(dev, 0x528); in bcma_hcd_init_chip_mips()
147 bcma_write32(dev, 0x528, 0x80000000); in bcma_hcd_init_chip_mips()
148 tmp = bcma_read32(dev, 0x314); in bcma_hcd_init_chip_mips()
150 bcma_write32(dev, 0x200, 0x7ff); in bcma_hcd_init_chip_mips()
154 bcma_write32(dev, 0x510, 0); in bcma_hcd_init_chip_mips()
156 bcma_write32(dev, 0x200, 0x7ff); in bcma_hcd_init_chip_mips()
161 bcma_hcd_4716wa(dev); in bcma_hcd_init_chip_mips()
165 static void bcma_hcd_init_chip_arm_phy(struct bcma_device *dev) in bcma_hcd_init_chip_arm_phy() argument
170 arm_core = bcma_find_core(dev->bus, BCMA_CORE_ARMCA9); in bcma_hcd_init_chip_arm_phy()
172 dev_err(&dev->dev, "can not find ARM Cortex A9 ihost core\n"); in bcma_hcd_init_chip_arm_phy()
178 dev_err(&dev->dev, "can not map ARM Cortex A9 ihost core\n"); in bcma_hcd_init_chip_arm_phy()
194 static void bcma_hcd_init_chip_arm_hc(struct bcma_device *dev) in bcma_hcd_init_chip_arm_hc() argument
204 val = bcma_read32(dev, 0x94); in bcma_hcd_init_chip_arm_hc()
207 bcma_write32(dev, 0x94, val); in bcma_hcd_init_chip_arm_hc()
210 val = bcma_read32(dev, 0x9c); in bcma_hcd_init_chip_arm_hc()
212 bcma_write32(dev, 0x9c, val); in bcma_hcd_init_chip_arm_hc()
215 static void bcma_hcd_init_chip_arm(struct bcma_device *dev) in bcma_hcd_init_chip_arm() argument
217 bcma_core_enable(dev, 0); in bcma_hcd_init_chip_arm()
219 if (dev->bus->chipinfo.id == BCMA_CHIP_ID_BCM4707 || in bcma_hcd_init_chip_arm()
220 dev->bus->chipinfo.id == BCMA_CHIP_ID_BCM53018) { in bcma_hcd_init_chip_arm()
221 if (dev->bus->chipinfo.pkg == BCMA_PKG_ID_BCM4707 || in bcma_hcd_init_chip_arm()
222 dev->bus->chipinfo.pkg == BCMA_PKG_ID_BCM4708) in bcma_hcd_init_chip_arm()
223 bcma_hcd_init_chip_arm_phy(dev); in bcma_hcd_init_chip_arm()
225 bcma_hcd_init_chip_arm_hc(dev); in bcma_hcd_init_chip_arm()
229 static void bcma_hci_platform_power_gpio(struct bcma_device *dev, bool val) in bcma_hci_platform_power_gpio() argument
233 gpio = of_get_named_gpio(dev->dev.of_node, "vcc-gpio", 0); in bcma_hci_platform_power_gpio()
252 static struct platform_device *bcma_hcd_create_pdev(struct bcma_device *dev, bool ohci, u32 addr) in bcma_hcd_create_pdev() argument
264 hci_res[1].start = dev->irq; in bcma_hcd_create_pdev()
272 hci_dev->dev.parent = &dev->dev; in bcma_hcd_create_pdev()
273 hci_dev->dev.dma_mask = &hci_dev->dev.coherent_dma_mask; in bcma_hcd_create_pdev()
298 static int bcma_hcd_probe(struct bcma_device *dev) in bcma_hcd_probe() argument
305 chipinfo = &dev->bus->chipinfo; in bcma_hcd_probe()
309 if (dma_set_mask_and_coherent(dev->dma_dev, DMA_BIT_MASK(32))) in bcma_hcd_probe()
312 usb_dev = devm_kzalloc(&dev->dev, sizeof(struct bcma_hcd_device), in bcma_hcd_probe()
317 bcma_hci_platform_power_gpio(dev, true); in bcma_hcd_probe()
319 switch (dev->id.id) { in bcma_hcd_probe()
321 bcma_hcd_init_chip_arm(dev); in bcma_hcd_probe()
324 bcma_hcd_init_chip_mips(dev); in bcma_hcd_probe()
331 ohci_addr = dev->addr_s[0]; in bcma_hcd_probe()
337 usb_dev->ohci_dev = bcma_hcd_create_pdev(dev, true, ohci_addr); in bcma_hcd_probe()
341 usb_dev->ehci_dev = bcma_hcd_create_pdev(dev, false, dev->addr); in bcma_hcd_probe()
347 bcma_set_drvdata(dev, usb_dev); in bcma_hcd_probe()
355 static void bcma_hcd_remove(struct bcma_device *dev) in bcma_hcd_remove() argument
357 struct bcma_hcd_device *usb_dev = bcma_get_drvdata(dev); in bcma_hcd_remove()
366 bcma_core_disable(dev, 0); in bcma_hcd_remove()
369 static void bcma_hcd_shutdown(struct bcma_device *dev) in bcma_hcd_shutdown() argument
371 bcma_hci_platform_power_gpio(dev, false); in bcma_hcd_shutdown()
372 bcma_core_disable(dev, 0); in bcma_hcd_shutdown()
377 static int bcma_hcd_suspend(struct bcma_device *dev) in bcma_hcd_suspend() argument
379 bcma_hci_platform_power_gpio(dev, false); in bcma_hcd_suspend()
380 bcma_core_disable(dev, 0); in bcma_hcd_suspend()
385 static int bcma_hcd_resume(struct bcma_device *dev) in bcma_hcd_resume() argument
387 bcma_hci_platform_power_gpio(dev, true); in bcma_hcd_resume()
388 bcma_core_enable(dev, 0); in bcma_hcd_resume()