PERFORCE change 92312 for review
Warner Losh
imp at FreeBSD.org
Thu Feb 23 17:53:23 PST 2006
http://perforce.freebsd.org/chv.cgi?CH=92312
Change 92312 by imp at imp_Speedy on 2006/02/24 01:52:54
debug...
# I had it working, removed debug committed, and now it doesn't
# work :-(
Affected files ...
.. //depot/projects/arm/src/sys/arm/at91/at91_pmc.c#11 edit
.. //depot/projects/arm/src/sys/arm/at91/ohci_atmelarm.c#10 edit
Differences ...
==== //depot/projects/arm/src/sys/arm/at91/at91_pmc.c#11 (text+ko) ====
@@ -69,7 +69,7 @@
static struct at91_pmc_clock main_ck = {
.name = "main", // Main clock
- .refcnt = 1,
+ .refcnt = 0,
.id = 1,
.primary = 1,
.pmc_mask = PMC_IER_MOSCS,
@@ -113,7 +113,7 @@
static struct at91_pmc_clock mck = {
.name = "mck",
.pmc_mask = PMC_IER_MCKRDY,
- .refcnt = 1,
+ .refcnt = 0,
};
static struct at91_pmc_clock udc_clk = {
@@ -160,6 +160,7 @@
struct at91_pmc_softc *sc = pmc_softc;
uint32_t value;
+ printf("Turning PLLB %#x %s\n", sc->pllb_init, on ? "on" : "off");
if (on) {
on = PMC_IER_LOCKB;
value = sc->pllb_init;
@@ -169,6 +170,7 @@
WR4(sc, CKGR_PLLBR, value);
while ((RD4(sc, PMC_SR) & PMC_IER_LOCKB) != on)
continue;
+ printf("Done!\n");
}
static void
@@ -176,7 +178,15 @@
{
struct at91_pmc_softc *sc = pmc_softc;
+ printf("Turning SC %#x %s\n", clk->pmc_mask, on ? "on" : "off");
WR4(sc, on ? PMC_SCER : PMC_SCDR, clk->pmc_mask);
+ if (on)
+ while ((RD4(sc, PMC_SCSR) & clk->pmc_mask) != clk->pmc_mask)
+ continue;
+ else
+ while ((RD4(sc, PMC_SCSR) & clk->pmc_mask) == clk->pmc_mask)
+ continue;
+ printf("Done!\n");
}
static void
@@ -184,7 +194,15 @@
{
struct at91_pmc_softc *sc = pmc_softc;
+ printf("Turning PC %#x %s\n", clk->pmc_mask, on ? "on" : "off");
WR4(sc, on ? PMC_PCER : PMC_PCDR, clk->pmc_mask);
+ if (on)
+ while ((RD4(sc, PMC_PCSR) & clk->pmc_mask) != clk->pmc_mask)
+ continue;
+ else
+ while ((RD4(sc, PMC_PCSR) & clk->pmc_mask) == clk->pmc_mask)
+ continue;
+ printf("Done!\n");
}
struct at91_pmc_clock *
@@ -192,7 +210,6 @@
{
int i;
- /* XXX LOCKING? XXX */
for (i = 0; i < sizeof(clock_list) / sizeof(clock_list[0]); i++)
if (strcmp(name, clock_list[i]->name) == 0)
return (clock_list[i]);
@@ -208,6 +225,8 @@
void
at91_pmc_clock_enable(struct at91_pmc_clock *clk)
{
+ /* XXX LOCKING? XXX */
+ printf("Enable %s\n", clk->name);
if (clk->parent)
at91_pmc_clock_enable(clk->parent);
if (clk->refcnt++ == 0 && clk->set_mode)
@@ -217,6 +236,7 @@
void
at91_pmc_clock_disable(struct at91_pmc_clock *clk)
{
+ /* XXX LOCKING? XXX */
if (--clk->refcnt == 0 && clk->set_mode)
clk->set_mode(clk, 0);
if (clk->parent)
==== //depot/projects/arm/src/sys/arm/at91/ohci_atmelarm.c#10 (text+ko) ====
@@ -110,6 +110,7 @@
/*
* turn on the clocks from the AT91's point of view. Keep the unit in reset.
*/
+// bus_space_write_4(sc->sc_ohci.iot, sc->sc_ohci.ioh, OHCI_CONTROL, 0);
at91_pmc_clock_enable(sc->iclk);
at91_pmc_clock_enable(sc->fclk);
bus_space_write_4(sc->sc_ohci.iot, sc->sc_ohci.ioh, OHCI_CONTROL, 0);
More information about the p4-projects
mailing list