blob: 4c1c778672804ac8e99542c33840038bdf7f4f9b [file] [log] [blame]
Heiko Schocher124f9472019-07-16 10:49:07 +02001// 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, 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 .platdata_auto_alloc_size = sizeof(struct usb_platdata),
43 .priv_auto_alloc_size = 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);