コード例 #1
0
static int __init sa1111_ohci_init(void)
{
	int ret;

	/*
	 * Request memory resources.
	 */
//	if (!request_mem_region(_USB_OHCI_OP_BASE, _USB_EXTENT, "usb-ohci"))
//		return -EBUSY;

	sa1111_ohci_configure();

	/*
	 * Initialise the generic OHCI driver.
	 */
	ret = hc_add_ohci(SA1111_FAKE_PCIDEV, NIRQHCIM,
			  (void *)&USB_OHCI_OP_BASE, 0, &sa1111_ohci,
			  "usb-ohci", "sa1111");

//	if (ret)
//		release_mem_region(_USB_OHCI_OP_BASE, _USB_EXTENT);

#ifdef CONFIG_SA1100_BADGE4
	if (machine_is_badge4() && (!ret)) {
		/* found the controller, so now power the bus */
		badge4_set_5V(BADGE4_5V_USB, 1);
	}
#endif

	return ret;
}
コード例 #2
0
static int __devinit
hc_found_ohci (struct pci_dev *dev, int irq,
	void *mem_base, const struct pci_device_id *id)
{
	unsigned long flags = id->driver_data;
	
	printk(KERN_INFO __FILE__ ": usb-%s, %s\n", dev->slot_name, dev->name);
	
	/* Check for NSC87560. We have to look at the bridge (fn1) to identify
	   the USB (fn2). This quirk might apply to more or even all NSC stuff
	   I don't know.. */
	   
	if(dev->vendor == PCI_VENDOR_ID_NS)
	{
		struct pci_dev *fn1  = pci_find_slot(dev->bus->number, PCI_DEVFN(PCI_SLOT(dev->devfn), 1));
		if(fn1 && fn1->vendor == PCI_VENDOR_ID_NS && fn1->device == PCI_DEVICE_ID_NS_87560_LIO)
			flags |= OHCI_QUIRK_SUCKYIO;
		
	}
	
	if (flags & OHCI_QUIRK_SUCKYIO)
		printk (KERN_INFO __FILE__ ": Using NSC SuperIO setup\n");
	if (flags & OHCI_QUIRK_AMD756)
		printk (KERN_INFO __FILE__ ": AMD756 erratum 4 workaround\n");

	return hc_add_ohci(dev, irq, mem_base, flags,
			   ohci_pci_driver.name, dev->slot_name);
}
コード例 #3
0
ファイル: h5400_wifi.c プロジェクト: ManiacTwister/linux-hnd
static int 
h5400_ohci_probe (struct device *dev)
{
	struct platform_device *sdev;
	int irq;
	void *mem_base;
	unsigned long flags = 0;
	int result = 0;

	sdev = to_platform_device (dev);
	mem_base = (void *)sdev->resource[1].start;
	irq = sdev->resource[2].start;

	/* make sure the clocks are enabled */
	samcop_clock_enable (dev->parent, SAMCOP_CPM_CLKCON_USBHOST_CLKEN, 1);
	samcop_clock_enable (dev->parent, SAMCOP_CPM_CLKCON_UCLK_EN, 0);

	/* both needed? */
	samcop_set_gpio_b (dev->parent, SAMCOP_GPIO_GPB_RF_POWER_ON | SAMCOP_GPIO_GPB_WLAN_POWER_ON, 
			   SAMCOP_GPIO_GPB_RF_POWER_ON | SAMCOP_GPIO_GPB_WLAN_POWER_ON);

	led_trigger_event_shared(h5400_radio_trig, LED_FULL);
#if 0
#warning port to kernel 2.6
	msleep (100);

	result = hc_add_ohci (pcidev, irq, mem_base, flags, (ohci_t **)&dev->driver_data, "h5400-ohci", "asic");
	if (result)
		h5400_ohci_remove (dev);
#endif

	return result;
}
コード例 #4
0
/*
 * ps2_ohci_init
 * this will be run at kernel boot time or module insertion
 */
static int __init ps2_ohci_init(void)
{
	int ret;

	/*
	 * attach OHCI device
	 */
	ret = hc_add_ohci((struct pci_dev *)NULL, IRQ_SBUS_USB,
			  (void *)KSEG1ADDR(0x1f801600), 0, 
			  &ps2_ohci, "usb-ohci", "builtin");

	return ret;
}