Some mundane tweaks and cleanups to help de-clutter the diffs of some

upcoming functional changes.

Add an ofw_compat_data table for probing compat strings, and use it to add
PNP data.  Remove some stray semicolons at the end of macro definitions,
and add a PWM_LOCK_ASSERT macro to round out the usual suite.  Move the
device_t and driver_methods structs to the end of the file.  Tweak comments.
This commit is contained in:
Ian Lepore 2019-06-21 14:01:02 +00:00
parent b72236b407
commit 3103a7eef7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=349269

View File

@ -53,13 +53,14 @@ __FBSDID("$FreeBSD$");
#define PWM_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx)
#define PWM_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx)
#define PWM_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->sc_mtx, MA_OWNED)
#define PWM_LOCK_INIT(_sc) mtx_init(&(_sc)->sc_mtx, \
device_get_nameunit(_sc->sc_dev), "am335x_ehrpwm softc", MTX_DEF)
#define PWM_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->sc_mtx)
#define EPWM_READ2(_sc, reg) bus_read_2((_sc)->sc_mem_res, reg);
#define EPWM_READ2(_sc, reg) bus_read_2((_sc)->sc_mem_res, reg)
#define EPWM_WRITE2(_sc, reg, value) \
bus_write_2((_sc)->sc_mem_res, reg, value);
bus_write_2((_sc)->sc_mem_res, reg, value)
#define EPWM_TBCTL 0x00
#define TBCTL_FREERUN (2 << 14)
@ -140,7 +141,8 @@ struct am335x_ehrpwm_softc {
struct mtx sc_mtx;
struct resource *sc_mem_res;
int sc_mem_rid;
/* sysctl for configuration */
/* Things used for configuration via sysctl [deprecated]. */
int sc_pwm_clkdiv;
int sc_pwm_freq;
struct sysctl_oid *sc_clkdiv_oid;
@ -153,21 +155,12 @@ struct am335x_ehrpwm_softc {
uint32_t sc_pwm_dutyB;
};
static device_method_t am335x_ehrpwm_methods[] = {
DEVMETHOD(device_probe, am335x_ehrpwm_probe),
DEVMETHOD(device_attach, am335x_ehrpwm_attach),
DEVMETHOD(device_detach, am335x_ehrpwm_detach),
DEVMETHOD_END
static struct ofw_compat_data compat_data[] = {
{"ti,am33xx-ehrpwm", true},
{NULL, false},
};
SIMPLEBUS_PNP_INFO(compat_data);
static driver_t am335x_ehrpwm_driver = {
"am335x_ehrpwm",
am335x_ehrpwm_methods,
sizeof(struct am335x_ehrpwm_softc),
};
static devclass_t am335x_ehrpwm_devclass;
static void
am335x_ehrpwm_freq(struct am335x_ehrpwm_softc *sc)
@ -337,7 +330,7 @@ am335x_ehrpwm_probe(device_t dev)
if (!ofw_bus_status_okay(dev))
return (ENXIO);
if (!ofw_bus_is_compatible(dev, "ti,am33xx-ehrpwm"))
if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data)
return (ENXIO);
device_set_desc(dev, "AM335x EHRPWM");
@ -365,7 +358,7 @@ am335x_ehrpwm_attach(device_t dev)
goto fail;
}
/* Init backlight interface */
/* Init sysctl interface */
ctx = device_get_sysctl_ctx(sc->sc_dev);
tree = device_get_sysctl_tree(sc->sc_dev);
@ -442,6 +435,22 @@ am335x_ehrpwm_detach(device_t dev)
return (0);
}
static device_method_t am335x_ehrpwm_methods[] = {
DEVMETHOD(device_probe, am335x_ehrpwm_probe),
DEVMETHOD(device_attach, am335x_ehrpwm_attach),
DEVMETHOD(device_detach, am335x_ehrpwm_detach),
DEVMETHOD_END
};
static driver_t am335x_ehrpwm_driver = {
"pwm",
am335x_ehrpwm_methods,
sizeof(struct am335x_ehrpwm_softc),
};
static devclass_t am335x_ehrpwm_devclass;
DRIVER_MODULE(am335x_ehrpwm, am335x_pwmss, am335x_ehrpwm_driver, am335x_ehrpwm_devclass, 0, 0);
MODULE_VERSION(am335x_ehrpwm, 1);
MODULE_DEPEND(am335x_ehrpwm, am335x_pwmss, 1, 1, 1);