svn commit: r368029 - in head/sys: arm/freescale/imx modules/imx/imx6_snvs
Ian Lepore
ian at FreeBSD.org
Wed Nov 25 19:10:21 UTC 2020
Author: ian
Date: Wed Nov 25 19:10:20 2020
New Revision: 368029
URL: https://svnweb.freebsd.org/changeset/base/368029
Log:
Convert the imx6_snvs RTC driver to access registers via the syscon device.
This is required for it to work correctly in the GENERIC kernel.
Modified:
head/sys/arm/freescale/imx/imx6_snvs.c
head/sys/modules/imx/imx6_snvs/Makefile
Modified: head/sys/arm/freescale/imx/imx6_snvs.c
==============================================================================
--- head/sys/arm/freescale/imx/imx6_snvs.c Wed Nov 25 19:08:22 2020 (r368028)
+++ head/sys/arm/freescale/imx/imx6_snvs.c Wed Nov 25 19:10:20 2020 (r368029)
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
#include <dev/ofw/ofw_bus_subr.h>
#include "clock_if.h"
+#include "syscon_if.h"
#define SNVS_LPCR 0x38 /* Control register */
#define LPCR_LPCALB_VAL_SHIFT 10 /* Calibration shift */
@@ -68,13 +69,12 @@ __FBSDID("$FreeBSD$");
struct snvs_softc {
device_t dev;
- struct resource * memres;
+ struct syscon *syscon;
uint32_t lpcr;
};
static struct ofw_compat_data compat_data[] = {
{"fsl,sec-v4.0-mon-rtc-lp", true},
- {"fsl,sec-v4.0-mon", true},
{NULL, false}
};
@@ -82,14 +82,14 @@ static inline uint32_t
RD4(struct snvs_softc *sc, bus_size_t offset)
{
- return (bus_read_4(sc->memres, offset));
+ return (SYSCON_READ_4(sc->syscon, offset));
}
static inline void
WR4(struct snvs_softc *sc, bus_size_t offset, uint32_t value)
{
- bus_write_4(sc->memres, offset, value);
+ SYSCON_WRITE_4(sc->syscon, offset, value);
}
static void
@@ -187,16 +187,12 @@ static int
snvs_attach(device_t dev)
{
struct snvs_softc *sc;
- int rid;
sc = device_get_softc(dev);
sc->dev = dev;
- rid = 0;
- sc->memres = bus_alloc_resource_any(sc->dev, SYS_RES_MEMORY, &rid,
- RF_ACTIVE);
- if (sc->memres == NULL) {
- device_printf(sc->dev, "could not allocate registers\n");
+ if (syscon_get_handle_default(sc->dev, &sc->syscon) != 0) {
+ device_printf(sc->dev, "Cannot get syscon handle\n");
return (ENXIO);
}
@@ -212,7 +208,6 @@ snvs_detach(device_t dev)
sc = device_get_softc(dev);
clock_unregister(sc->dev);
- bus_release_resource(sc->dev, SYS_RES_MEMORY, 0, sc->memres);
return (0);
}
Modified: head/sys/modules/imx/imx6_snvs/Makefile
==============================================================================
--- head/sys/modules/imx/imx6_snvs/Makefile Wed Nov 25 19:08:22 2020 (r368028)
+++ head/sys/modules/imx/imx6_snvs/Makefile Wed Nov 25 19:10:20 2020 (r368029)
@@ -11,5 +11,6 @@ SRCS+= \
clock_if.h \
device_if.h \
ofw_bus_if.h \
+ syscon_if.h \
.include <bsd.kmod.mk>
More information about the svn-src-head
mailing list