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

Reply via email to