FreeBSD kernel usb device Code
ehci_imx.c File Reference
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <sys/bus.h>
#include <sys/condvar.h>
#include <sys/rman.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usb_busdma.h>
#include <dev/usb/usb_process.h>
#include <dev/usb/usb_controller.h>
#include <dev/usb/usb_bus.h>
#include <dev/usb/controller/ehci.h>
#include <dev/usb/controller/ehcireg.h>
#include "usbdevs.h"
#include <machine/bus.h>
#include <machine/resource.h>
#include <arm/freescale/imx/imx_ccmvar.h>
#include "opt_platform.h"
Include dependency graph for ehci_imx.c:

Go to the source code of this file.

Data Structures

struct  imx_usbmisc_softc
 
struct  imx_ehci_softc
 

Macros

#define USBNC_OVER_CUR_POL   (1u << 8)
 
#define USBNC_OVER_CUR_DIS   (1u << 7)
 
#define IMX_EHCI_REG_OFF   0x100
 
#define IMX_EHCI_REG_SIZE   0x100
 

Functions

 __FBSDID ("$FreeBSD$")
 
static void imx_usbmisc_set_ctrl (device_t dev, u_int index, uint32_t bits)
 
static int imx_usbmisc_probe (device_t dev)
 
static int imx_usbmisc_detach (device_t dev)
 
static int imx_usbmisc_attach (device_t dev)
 
 EARLY_DRIVER_MODULE (imx_usbmisc, simplebus, imx_usbmisc_driver, imx_usbmisc_devclass, 0, 0, BUS_PASS_DEFAULT - 1000)
 
static void imx_ehci_post_reset (struct ehci_softc *ehci_softc)
 
static int imx_ehci_probe (device_t dev)
 
static int imx_ehci_detach (device_t dev)
 
static void imx_ehci_disable_oc (struct imx_ehci_softc *sc)
 
static int imx_ehci_attach (device_t dev)
 
 DRIVER_MODULE (imx_ehci, simplebus, ehci_driver, ehci_devclass, 0, 0)
 
 MODULE_DEPEND (imx_ehci, usb, 1, 1, 1)
 

Variables

static struct ofw_compat_data usbmisc_compat_data []
 
static device_method_t imx_usbmisc_methods []
 
static driver_t imx_usbmisc_driver
 
static devclass_t imx_usbmisc_devclass
 
static struct ofw_compat_data compat_data []
 
static device_method_t ehci_methods []
 
static driver_t ehci_driver
 
static devclass_t ehci_devclass
 

Macro Definition Documentation

◆ IMX_EHCI_REG_OFF

#define IMX_EHCI_REG_OFF   0x100

Definition at line 263 of file ehci_imx.c.

◆ IMX_EHCI_REG_SIZE

#define IMX_EHCI_REG_SIZE   0x100

Definition at line 264 of file ehci_imx.c.

◆ USBNC_OVER_CUR_DIS

#define USBNC_OVER_CUR_DIS   (1u << 7)

Definition at line 142 of file ehci_imx.c.

◆ USBNC_OVER_CUR_POL

#define USBNC_OVER_CUR_POL   (1u << 8)

Definition at line 141 of file ehci_imx.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ DRIVER_MODULE()

DRIVER_MODULE ( imx_ehci  ,
simplebus  ,
ehci_driver  ,
ehci_devclass  ,
,
 
)

◆ EARLY_DRIVER_MODULE()

EARLY_DRIVER_MODULE ( imx_usbmisc  ,
simplebus  ,
imx_usbmisc_driver  ,
imx_usbmisc_devclass  ,
,
,
BUS_PASS_DEFAULT -  1000 
)

◆ imx_ehci_attach()

◆ imx_ehci_detach()

static int imx_ehci_detach ( device_t  dev)
static

◆ imx_ehci_disable_oc()

static void imx_ehci_disable_oc ( struct imx_ehci_softc sc)
static

Definition at line 343 of file ehci_imx.c.

References imx_ehci_softc::dev, imx_usbmisc_set_ctrl(), index, size, and USBNC_OVER_CUR_DIS.

Referenced by imx_ehci_attach().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ imx_ehci_post_reset()

static void imx_ehci_post_reset ( struct ehci_softc ehci_softc)
static

Definition at line 285 of file ehci_imx.c.

References EHCI_UM_CM_HOST, EHCI_USBMODE_NOLPM, EOREAD4, and EOWRITE4.

Referenced by imx_ehci_attach().

Here is the caller graph for this function:

◆ imx_ehci_probe()

static int imx_ehci_probe ( device_t  dev)
static

Definition at line 297 of file ehci_imx.c.

References compat_data, and dev.

◆ imx_usbmisc_attach()

static int imx_usbmisc_attach ( device_t  dev)
static

Definition at line 208 of file ehci_imx.c.

References imx_usbmisc_softc::dev, imx_usbmisc_softc::mmio, and rid.

◆ imx_usbmisc_detach()

static int imx_usbmisc_detach ( device_t  dev)
static

Definition at line 195 of file ehci_imx.c.

References imx_usbmisc_softc::dev, and imx_usbmisc_softc::mmio.

◆ imx_usbmisc_probe()

static int imx_usbmisc_probe ( device_t  dev)
static

Definition at line 181 of file ehci_imx.c.

References imx_usbmisc_softc::dev, and usbmisc_compat_data.

◆ imx_usbmisc_set_ctrl()

static void imx_usbmisc_set_ctrl ( device_t  dev,
u_int  index,
uint32_t  bits 
)
static

Definition at line 157 of file ehci_imx.c.

References imx_usbmisc_softc::dev, index, imx_usbmisc_softc::mmio, and reg.

Referenced by imx_ehci_disable_oc().

Here is the caller graph for this function:

◆ MODULE_DEPEND()

MODULE_DEPEND ( imx_ehci  ,
usb  ,
,
,
 
)

Variable Documentation

◆ compat_data

struct ofw_compat_data compat_data[]
static
Initial value:
= {
{"fsl,imx6q-usb", 1},
{"fsl,imx53-usb", 1},
{"fsl,imx51-usb", 1},
{"fsl,imx28-usb", 1},
{"fsl,imx27-usb", 1},
{"fsl,imx25-usb", 1},
{"fsl,imx23-usb", 1},
{NULL, 0},
}

Definition at line 273 of file ehci_imx.c.

Referenced by imx_ehci_probe().

◆ ehci_devclass

devclass_t ehci_devclass
static

Definition at line 511 of file ehci_imx.c.

◆ ehci_driver

driver_t ehci_driver
static
Initial value:
= {
"ehci",
sizeof(struct imx_ehci_softc)
}
static device_method_t ehci_methods[]
Definition: ehci_imx.c:490

Definition at line 505 of file ehci_imx.c.

◆ ehci_methods

device_method_t ehci_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, imx_ehci_probe),
DEVMETHOD(device_attach, imx_ehci_attach),
DEVMETHOD(device_detach, imx_ehci_detach),
DEVMETHOD(device_suspend, bus_generic_suspend),
DEVMETHOD(device_resume, bus_generic_resume),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD_END
}
static int imx_ehci_attach(device_t dev)
Definition: ehci_imx.c:373
static int imx_ehci_probe(device_t dev)
Definition: ehci_imx.c:297
static int imx_ehci_detach(device_t dev)
Definition: ehci_imx.c:311

Definition at line 490 of file ehci_imx.c.

◆ imx_usbmisc_devclass

devclass_t imx_usbmisc_devclass
static

Definition at line 245 of file ehci_imx.c.

◆ imx_usbmisc_driver

driver_t imx_usbmisc_driver
static
Initial value:
= {
"imx_usbmisc",
sizeof(struct imx_usbmisc_softc)
}
static device_method_t imx_usbmisc_methods[]
Definition: ehci_imx.c:230

Definition at line 239 of file ehci_imx.c.

◆ imx_usbmisc_methods

device_method_t imx_usbmisc_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, imx_usbmisc_probe),
DEVMETHOD(device_attach, imx_usbmisc_attach),
DEVMETHOD(device_detach, imx_usbmisc_detach),
DEVMETHOD_END
}
static int imx_usbmisc_detach(device_t dev)
Definition: ehci_imx.c:195
static int imx_usbmisc_probe(device_t dev)
Definition: ehci_imx.c:181
static int imx_usbmisc_attach(device_t dev)
Definition: ehci_imx.c:208

Definition at line 230 of file ehci_imx.c.

◆ usbmisc_compat_data

struct ofw_compat_data usbmisc_compat_data[]
static
Initial value:
= {
{"fsl,imx6q-usbmisc", true},
{"fsl,imx51-usbmisc", true},
{"fsl,imx25-usbmisc", true},
{NULL, false},
}

Definition at line 149 of file ehci_imx.c.

Referenced by imx_usbmisc_probe().