Module Name: src Committed By: matt Date: Sat Jun 29 20:19:54 UTC 2013
Modified Files: src/sys/arch/arm/omap: omap2_prcm.c Log Message: Make the softc static. Add a prcm_bootstrap(bus_space_handle_t) so that early bootstrap code can use prcm_read_4 and prcm_write_4. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/omap/omap2_prcm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/omap/omap2_prcm.c diff -u src/sys/arch/arm/omap/omap2_prcm.c:1.4 src/sys/arch/arm/omap/omap2_prcm.c:1.5 --- src/sys/arch/arm/omap/omap2_prcm.c:1.4 Tue Dec 11 18:51:38 2012 +++ src/sys/arch/arm/omap/omap2_prcm.c Sat Jun 29 20:19:54 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: omap2_prcm.c,v 1.4 2012/12/11 18:51:38 riastradh Exp $ */ +/* $NetBSD: omap2_prcm.c,v 1.5 2013/06/29 20:19:54 matt Exp $ */ /*- * Copyright (c) 2010 Adam Hoka @@ -28,7 +28,7 @@ #include "opt_omap.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: omap2_prcm.c,v 1.4 2012/12/11 18:51:38 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: omap2_prcm.c,v 1.5 2013/06/29 20:19:54 matt Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -52,14 +52,17 @@ struct prcm_softc { }; /* for external access to prcm operations */ -struct prcm_softc *prcm_sc; +struct prcm_softc prcm_sc = { + .sc_iot = &omap_bs_tag, + .sc_size = OMAP2_PRM_SIZE, +}; /* prototypes */ static int prcm_match(device_t, cfdata_t, void *); static void prcm_attach(device_t, device_t, void *); /* attach structures */ -CFATTACH_DECL_NEW(prcm, sizeof(struct prcm_softc), +CFATTACH_DECL_NEW(prcm, 0, prcm_match, prcm_attach, NULL, NULL); static int @@ -77,18 +80,16 @@ prcm_attach(device_t parent, device_t se { struct obio_attach_args *obio = aux; - KASSERT(prcm_sc == NULL); - prcm_sc = device_private(self); + KASSERT(prcm_sc.sc_dev == NULL); - prcm_sc->sc_dev = self; - prcm_sc->sc_iot = &omap_bs_tag; + self->dv_private = &prcm_sc; + prcm_sc.sc_dev = self; - prcm_sc->sc_base = obio->obio_addr; - prcm_sc->sc_size = OMAP2_PRM_SIZE; + prcm_sc.sc_base = obio->obio_addr; /* map i/o space for PRM */ - if (bus_space_map(prcm_sc->sc_iot, prcm_sc->sc_base, prcm_sc->sc_size, - 0, &prcm_sc->sc_ioh) != 0) { + if (bus_space_map(prcm_sc.sc_iot, prcm_sc.sc_base, prcm_sc.sc_size, + 0, &prcm_sc.sc_ioh) != 0) { aprint_error("prcm_attach: can't map i/o space for prm"); return; } @@ -96,22 +97,26 @@ prcm_attach(device_t parent, device_t se aprint_normal(": Power, Reset and Clock Management\n"); } +void +prcm_bootstrap(bus_space_handle_t ioh) +{ + prcm_sc.sc_ioh = ioh; +} + uint32_t prcm_read_4(bus_size_t module, bus_size_t reg) { - KASSERT(prcm_sc != NULL); - return bus_space_read_4(prcm_sc->sc_iot, prcm_sc->sc_ioh, - module + reg); + KASSERT(prcm_sc.sc_ioh != 0); + return bus_space_read_4(prcm_sc.sc_iot, prcm_sc.sc_ioh, module + reg); } void prcm_write_4(bus_size_t module, bus_size_t reg, uint32_t data) { - KASSERT(prcm_sc != NULL); - bus_space_write_4(prcm_sc->sc_iot, prcm_sc->sc_ioh, - module + reg, data); + KASSERT(prcm_sc.sc_ioh != 0); + bus_space_write_4(prcm_sc.sc_iot, prcm_sc.sc_ioh, module + reg, data); } void