1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (c) 2019 4 * Heiko Schocher, DENX Software Engineering, hs@denx.de. 5 * 6 */ 7 8#include <common.h> 9#include <dm.h> 10#include <errno.h> 11#include <pci.h> 12#include <usb.h> 13#include <asm/io.h> 14 15#include "ohci.h" 16 17static int ohci_pci_probe(struct udevice *dev) 18{ 19 struct ohci_regs *regs; 20 21 regs = dm_pci_map_bar(dev, PCI_BASE_ADDRESS_0, 0, 0, PCI_REGION_TYPE, PCI_REGION_MEM); 22 return ohci_register(dev, regs); 23} 24 25static int ohci_pci_remove(struct udevice *dev) 26{ 27 return ohci_deregister(dev); 28} 29 30static const struct udevice_id ohci_pci_ids[] = { 31 { .compatible = "ohci-pci" }, 32 { } 33}; 34 35U_BOOT_DRIVER(ohci_pci) = { 36 .name = "ohci_pci", 37 .id = UCLASS_USB, 38 .probe = ohci_pci_probe, 39 .remove = ohci_pci_remove, 40 .of_match = ohci_pci_ids, 41 .ops = &ohci_usb_ops, 42 .plat_auto = sizeof(struct usb_plat), 43 .priv_auto = sizeof(ohci_t), 44 .flags = DM_FLAG_ALLOC_PRIV_DMA, 45}; 46 47static struct pci_device_id ohci_pci_supported[] = { 48 { PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_OHCI, ~0) }, 49 {}, 50}; 51 52U_BOOT_PCI_DEVICE(ohci_pci, ohci_pci_supported); 53