Module Name: src Committed By: kiyohara Date: Mon Dec 23 04:12:09 UTC 2013
Modified Files: src/sys/arch/arm/marvell: armadaxp.c kirkwood.c mvsoc.c mvsocreg.h mvsocvar.h src/sys/arch/evbarm/armadaxp: armadaxp_machdep.c src/sys/arch/evbarm/marvell: marvell_machdep.c Log Message: Support to check the clock gating for Armada XP in armadaxp.c. Also move the checking for clock gate of Kirkwood into kirkwood.c. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/marvell/armadaxp.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/marvell/kirkwood.c \ src/sys/arch/arm/marvell/mvsocreg.h cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/marvell/mvsoc.c cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/marvell/mvsocvar.h cvs rdiff -u -r1.5 -r1.6 src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c cvs rdiff -u -r1.25 -r1.26 src/sys/arch/evbarm/marvell/marvell_machdep.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/marvell/armadaxp.c diff -u src/sys/arch/arm/marvell/armadaxp.c:1.5 src/sys/arch/arm/marvell/armadaxp.c:1.6 --- src/sys/arch/arm/marvell/armadaxp.c:1.5 Mon Dec 23 03:19:43 2013 +++ src/sys/arch/arm/marvell/armadaxp.c Mon Dec 23 04:12:09 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: armadaxp.c,v 1.5 2013/12/23 03:19:43 kiyohara Exp $ */ +/* $NetBSD: armadaxp.c,v 1.6 2013/12/23 04:12:09 kiyohara Exp $ */ /******************************************************************************* Copyright (C) Marvell International Ltd. and its affiliates @@ -37,7 +37,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI *******************************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: armadaxp.c,v 1.5 2013/12/23 03:19:43 kiyohara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: armadaxp.c,v 1.6 2013/12/23 04:12:09 kiyohara Exp $"); #define _INTR_PRIVATE @@ -149,6 +149,37 @@ static struct pic_softc armadaxp_pic = { .pic_name = "armadaxp", }; +static struct { + bus_size_t offset; + uint32_t bits; +} clkgatings[]= { + { ARMADAXP_GBE3_BASE, (1 << 1) }, + { ARMADAXP_GBE2_BASE, (1 << 2) }, + { ARMADAXP_GBE1_BASE, (1 << 3) }, + { ARMADAXP_GBE0_BASE, (1 << 4) }, + { MVSOC_PEX_BASE, (1 << 5) }, + { ARMADAXP_PEX01_BASE, (1 << 6) }, + { ARMADAXP_PEX02_BASE, (1 << 7) }, + { ARMADAXP_PEX03_BASE, (1 << 8) }, + { ARMADAXP_PEX10_BASE, (1 << 9) }, + { ARMADAXP_PEX11_BASE, (1 << 10) }, + { ARMADAXP_PEX12_BASE, (1 << 11) }, + { ARMADAXP_PEX13_BASE, (1 << 12) }, +#if 0 + { NetA, (1 << 13) }, +#endif + { ARMADAXP_SATAHC_BASE, (1 << 14) | (1 << 15) | (1 << 29) | (1 << 30) }, + { ARMADAXP_LCD_BASE, (1 << 16) }, + { ARMADAXP_SDIO_BASE, (1 << 17) }, + { ARMADAXP_USB1_BASE, (1 << 19) }, + { ARMADAXP_USB2_BASE, (1 << 20) }, + { ARMADAXP_PEX2_BASE, (1 << 26) }, + { ARMADAXP_PEX3_BASE, (1 << 27) }, +#if 0 + { DDR, (1 << 28) }, +#endif +}; + /* * armadaxp_intr_bootstrap: * @@ -420,3 +451,22 @@ armadaxp_io_coherency_init(void) /* Mark as enabled */ iocc_state = 1; } + +int +armadaxp_clkgating(struct marvell_attach_args *mva) +{ + uint32_t val; + int i; + + for (i = 0; i < __arraycount(clkgatings); i++) { + if (clkgatings[i].offset == mva->mva_offset) { + val = read_miscreg(ARMADAXP_MISC_PMCGC); + if ((val & clkgatings[i].bits) == clkgatings[i].bits) + /* Clock enabled */ + return 0; + return 1; + } + } + /* Clock Gating not support */ + return 0; +} Index: src/sys/arch/arm/marvell/kirkwood.c diff -u src/sys/arch/arm/marvell/kirkwood.c:1.7 src/sys/arch/arm/marvell/kirkwood.c:1.8 --- src/sys/arch/arm/marvell/kirkwood.c:1.7 Thu Sep 6 03:05:41 2012 +++ src/sys/arch/arm/marvell/kirkwood.c Mon Dec 23 04:12:09 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: kirkwood.c,v 1.7 2012/09/06 03:05:41 msaitoh Exp $ */ +/* $NetBSD: kirkwood.c,v 1.8 2013/12/23 04:12:09 kiyohara Exp $ */ /* * Copyright (c) 2010 KIYOHARA Takashi * All rights reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kirkwood.c,v 1.7 2012/09/06 03:05:41 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kirkwood.c,v 1.8 2013/12/23 04:12:09 kiyohara Exp $"); #define _INTR_PRIVATE @@ -88,6 +88,27 @@ static struct pic_softc kirkwood_pic = { .pic_name = "kirkwood", }; +static struct { + bus_size_t offset; + uint32_t bits; +} clkgatings[]= { + { KIRKWOOD_GBE0_BASE, (1 << 0) }, + { MVSOC_PEX_BASE, (1 << 2) }, + { KIRKWOOD_USB_BASE, (1 << 3) }, + { KIRKWOOD_SDIO_BASE, (1 << 4) }, + { KIRKWOOD_MTS_BASE, (1 << 5) }, +#if 0 + { Dunit, (1 << 6) }, /* SDRAM Unit Clock */ + { Runit, (1 << 7) }, /* Runit Clock */ +#endif + { KIRKWOOD_IDMAC_BASE, (1 << 8) | (1 << 16) }, + { KIRKWOOD_AUDIO_BASE, (1 << 9) }, + { KIRKWOOD_SATAHC_BASE, (1 << 14) | (1 << 15) }, + { KIRKWOOD_CESA_BASE, (1 << 17) }, + { KIRKWOOD_GBE1_BASE, (1 << 19) }, + { KIRKWOOD_TDM_BASE, (1 << 20) }, +}; + /* * kirkwood_intr_bootstrap: @@ -260,3 +281,22 @@ kirkwood_getclks(bus_addr_t iobase) #undef MHz } + +int +kirkwood_clkgating(struct marvell_attach_args *mva) +{ + uint32_t val; + int i; + + for (i = 0; i < __arraycount(clkgatings); i++) { + if (clkgatings[i].offset == mva->mva_offset) { + val = read_mlmbreg(MVSOC_MLMB_CLKGATING); + if ((val & clkgatings[i].bits) == clkgatings[i].bits) + /* Clock enabled */ + return 0; + return 1; + } + } + /* Clock Gating not support */ + return 0; +} Index: src/sys/arch/arm/marvell/mvsocreg.h diff -u src/sys/arch/arm/marvell/mvsocreg.h:1.7 src/sys/arch/arm/marvell/mvsocreg.h:1.8 --- src/sys/arch/arm/marvell/mvsocreg.h:1.7 Mon Dec 23 03:19:43 2013 +++ src/sys/arch/arm/marvell/mvsocreg.h Mon Dec 23 04:12:09 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: mvsocreg.h,v 1.7 2013/12/23 03:19:43 kiyohara Exp $ */ +/* $NetBSD: mvsocreg.h,v 1.8 2013/12/23 04:12:09 kiyohara Exp $ */ /* * Copyright (c) 2007, 2008 KIYOHARA Takashi * All rights reserved. @@ -112,6 +112,10 @@ #define MVSOC_MLMB_MLMBIMR 0x114 /*Mb-L to Mb Bridge Intr Mask */ #define MVSOC_MLMB_CLKGATING 0x11c /* Clock Gating Control */ +#define MVSOC_MLMB_CLKGATING_LNR (1 << 13) /* Load New Ratio */ +#define MVSOC_MLMB_CLKGATING_GPH (1 << 12) /* Go To Power Half */ +#define MVSOC_MLMB_CLKGATING_GPS (1 << 11) /* Go To Power Save */ +#define MVSOC_MLMB_CLKGATING_CR (1 << 10) /* Production Realignment */ #define MVSOC_MLMB_CLKGATING_BIT(n) (1 << (n)) #define MVSOC_MLMB_L2CFG 0x128 /* L2 Cache Config */ Index: src/sys/arch/arm/marvell/mvsoc.c diff -u src/sys/arch/arm/marvell/mvsoc.c:1.15 src/sys/arch/arm/marvell/mvsoc.c:1.16 --- src/sys/arch/arm/marvell/mvsoc.c:1.15 Mon Dec 23 03:19:43 2013 +++ src/sys/arch/arm/marvell/mvsoc.c Mon Dec 23 04:12:09 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: mvsoc.c,v 1.15 2013/12/23 03:19:43 kiyohara Exp $ */ +/* $NetBSD: mvsoc.c,v 1.16 2013/12/23 04:12:09 kiyohara Exp $ */ /* * Copyright (c) 2007, 2008 KIYOHARA Takashi * All rights reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mvsoc.c,v 1.15 2013/12/23 03:19:43 kiyohara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mvsoc.c,v 1.16 2013/12/23 04:12:09 kiyohara Exp $"); #include "opt_cputypes.h" #include "opt_mvsoc.h" @@ -70,6 +70,7 @@ static vaddr_t regbase = 0xffffffff, dsc vaddr_t mlmb_base; void (*mvsoc_intr_init)(void); +int (*mvsoc_clkgating)(struct marvell_attach_args *); #ifdef MVSOC_CONSOLE_EARLY @@ -345,7 +346,6 @@ static const struct mvsoc_periph { int unit; bus_size_t offset; int irq; - uint32_t clkpwr_bit; } mvsoc_periphs[] = { #if defined(ORION) #define ORION_IRQ_TMR (32 + MVSOC_MLMB_MLMBI_CPUTIMER0INTREQ) @@ -490,23 +490,15 @@ static const struct mvsoc_periph { { KIRKWOOD(88F6281),"mvsocrtc",0, KIRKWOOD_RTC_BASE,IRQ_DEFAULT }, { KIRKWOOD(88F6281),"com", 0, MVSOC_COM0_BASE, KIRKWOOD_IRQ_UART0INT }, { KIRKWOOD(88F6281),"com", 1, MVSOC_COM1_BASE, KIRKWOOD_IRQ_UART1INT }, - { KIRKWOOD(88F6281),"ehci", 0, KIRKWOOD_USB_BASE,KIRKWOOD_IRQ_USB0CNT, - MVSOC_MLMB_CLKGATING_BIT(3) }, + { KIRKWOOD(88F6281),"ehci", 0, KIRKWOOD_USB_BASE,KIRKWOOD_IRQ_USB0CNT }, { KIRKWOOD(88F6281),"gtidmac", 0, KIRKWOOD_IDMAC_BASE,IRQ_DEFAULT }, { KIRKWOOD(88F6281),"gttwsi", 0, MVSOC_TWSI_BASE, KIRKWOOD_IRQ_TWSI }, - { KIRKWOOD(88F6281),"mvcesa", 0, KIRKWOOD_CESA_BASE,KIRKWOOD_IRQ_SECURITYINT, - MVSOC_MLMB_CLKGATING_BIT(17) }, - { KIRKWOOD(88F6281),"mvgbec", 0, KIRKWOOD_GBE0_BASE,IRQ_DEFAULT, - MVSOC_MLMB_CLKGATING_BIT(0) }, - { KIRKWOOD(88F6281),"mvgbec", 1, KIRKWOOD_GBE1_BASE,IRQ_DEFAULT, - MVSOC_MLMB_CLKGATING_BIT(19) }, - { KIRKWOOD(88F6281),"mvpex", 0, MVSOC_PEX_BASE, KIRKWOOD_IRQ_PEX0INT, - MVSOC_MLMB_CLKGATING_BIT(2) }, - { KIRKWOOD(88F6281),"mvsata", 0, KIRKWOOD_SATAHC_BASE,KIRKWOOD_IRQ_SATA, - MVSOC_MLMB_CLKGATING_BIT(14) | - MVSOC_MLMB_CLKGATING_BIT(15) }, - { KIRKWOOD(88F6281),"mvsdio", 0, KIRKWOOD_SDIO_BASE,KIRKWOOD_IRQ_SDIOINT, - MVSOC_MLMB_CLKGATING_BIT(4) }, + { KIRKWOOD(88F6281),"mvcesa", 0, KIRKWOOD_CESA_BASE,KIRKWOOD_IRQ_SECURITYINT }, + { KIRKWOOD(88F6281),"mvgbec", 0, KIRKWOOD_GBE0_BASE,IRQ_DEFAULT }, + { KIRKWOOD(88F6281),"mvgbec", 1, KIRKWOOD_GBE1_BASE,IRQ_DEFAULT }, + { KIRKWOOD(88F6281),"mvpex", 0, MVSOC_PEX_BASE, KIRKWOOD_IRQ_PEX0INT }, + { KIRKWOOD(88F6281),"mvsata", 0, KIRKWOOD_SATAHC_BASE,KIRKWOOD_IRQ_SATA }, + { KIRKWOOD(88F6281),"mvsdio", 0, KIRKWOOD_SDIO_BASE,KIRKWOOD_IRQ_SDIOINT }, { KIRKWOOD(88F6282),"mvsoctmr",0, MVSOC_TMR_BASE, KIRKWOOD_IRQ_TMR }, { KIRKWOOD(88F6282),"mvsocgpp",0, MVSOC_GPP_BASE, KIRKWOOD_IRQ_GPIOLO7_0}, @@ -561,7 +553,7 @@ static const struct mvsoc_periph { { ARMADAXP(MV78130), "com", 1, MVSOC_COM1_BASE, ARMADAXP_IRQ_UART1 }, { ARMADAXP(MV78130), "com", 2, ARMADAXP_COM2_BASE,ARMADAXP_IRQ_UART2 }, { ARMADAXP(MV78130), "com", 3, ARMADAXP_COM3_BASE,ARMADAXP_IRQ_UART3 }, - { ARMADAXP(MV78130), "mvsocrtc",0, ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC }, + { ARMADAXP(MV78130), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC }, { ARMADAXP(MV78130), "gttwsi", 0, MVSOC_TWSI_BASE, ARMADAXP_IRQ_TWSI0 }, { ARMADAXP(MV78130), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 }, { ARMADAXP(MV78130), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT }, @@ -587,7 +579,7 @@ static const struct mvsoc_periph { { ARMADAXP(MV78160), "com", 1, MVSOC_COM1_BASE, ARMADAXP_IRQ_UART1 }, { ARMADAXP(MV78160), "com", 2, ARMADAXP_COM2_BASE,ARMADAXP_IRQ_UART2 }, { ARMADAXP(MV78160), "com", 3, ARMADAXP_COM3_BASE,ARMADAXP_IRQ_UART3 }, - { ARMADAXP(MV78160), "mvsocrtc",0, ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC }, + { ARMADAXP(MV78160), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC }, { ARMADAXP(MV78160), "gttwsi", 0, MVSOC_TWSI_BASE, ARMADAXP_IRQ_TWSI0 }, { ARMADAXP(MV78160), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 }, { ARMADAXP(MV78160), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT }, @@ -615,7 +607,7 @@ static const struct mvsoc_periph { { ARMADAXP(MV78230), "com", 1, MVSOC_COM1_BASE, ARMADAXP_IRQ_UART1 }, { ARMADAXP(MV78230), "com", 2, ARMADAXP_COM2_BASE,ARMADAXP_IRQ_UART2 }, { ARMADAXP(MV78230), "com", 3, ARMADAXP_COM3_BASE,ARMADAXP_IRQ_UART3 }, - { ARMADAXP(MV78230), "mvsocrtc",0, ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC }, + { ARMADAXP(MV78230), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC }, { ARMADAXP(MV78230), "gttwsi", 0, MVSOC_TWSI_BASE, ARMADAXP_IRQ_TWSI0 }, { ARMADAXP(MV78230), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 }, { ARMADAXP(MV78230), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT }, @@ -642,7 +634,7 @@ static const struct mvsoc_periph { { ARMADAXP(MV78260), "com", 1, MVSOC_COM1_BASE, ARMADAXP_IRQ_UART1 }, { ARMADAXP(MV78260), "com", 2, ARMADAXP_COM2_BASE,ARMADAXP_IRQ_UART2 }, { ARMADAXP(MV78260), "com", 3, ARMADAXP_COM3_BASE,ARMADAXP_IRQ_UART3 }, - { ARMADAXP(MV78260), "mvsocrtc",0, ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC }, + { ARMADAXP(MV78260), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC }, { ARMADAXP(MV78260), "gttwsi", 0, MVSOC_TWSI_BASE, ARMADAXP_IRQ_TWSI0 }, { ARMADAXP(MV78260), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 }, { ARMADAXP(MV78260), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT }, @@ -670,7 +662,7 @@ static const struct mvsoc_periph { { ARMADAXP(MV78460), "com", 1, MVSOC_COM1_BASE, ARMADAXP_IRQ_UART1 }, { ARMADAXP(MV78460), "com", 2, ARMADAXP_COM2_BASE,ARMADAXP_IRQ_UART2 }, { ARMADAXP(MV78460), "com", 3, ARMADAXP_COM3_BASE,ARMADAXP_IRQ_UART3 }, - { ARMADAXP(MV78460), "mvsocrtc",0, ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC }, + { ARMADAXP(MV78460), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC }, { ARMADAXP(MV78460), "gttwsi", 0, MVSOC_TWSI_BASE, ARMADAXP_IRQ_TWSI0 }, { ARMADAXP(MV78460), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 }, { ARMADAXP(MV78460), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT }, @@ -716,7 +708,6 @@ mvsoc_attach(device_t parent, device_t s struct marvell_attach_args mva; uint16_t model; uint8_t rev; - uint32_t clkpwr, clkpwrbit; int i; sc->sc_dev = self; @@ -756,20 +747,6 @@ mvsoc_attach(device_t parent, device_t s if (mvsoc_periphs[i].model != model) continue; - /* Skip clock disabled devices */ - clkpwrbit = mvsoc_periphs[i].clkpwr_bit; - if (clkpwrbit != 0) { - clkpwr = read_mlmbreg(MVSOC_MLMB_CLKGATING); - - if ((clkpwr & clkpwrbit) == 0) { - aprint_normal("%s: %s%d clock disabled\n", - device_xname(self), - mvsoc_periphs[i].name, - mvsoc_periphs[i].unit); - continue; - } - } - mva.mva_name = mvsoc_periphs[i].name; mva.mva_model = model; mva.mva_revision = rev; @@ -782,6 +759,13 @@ mvsoc_attach(device_t parent, device_t s mva.mva_dmat = sc->sc_dmat; mva.mva_irq = mvsoc_periphs[i].irq; + /* Skip clock disabled devices */ + if (mvsoc_clkgating != NULL && mvsoc_clkgating(&mva)) { + aprint_normal_dev(self, "%s%d clock disabled\n", + mvsoc_periphs[i].name, mvsoc_periphs[i].unit); + continue; + } + config_found_sm_loc(sc->sc_dev, "mvsoc", NULL, &mva, mvsoc_print, mvsoc_search); } Index: src/sys/arch/arm/marvell/mvsocvar.h diff -u src/sys/arch/arm/marvell/mvsocvar.h:1.6 src/sys/arch/arm/marvell/mvsocvar.h:1.7 --- src/sys/arch/arm/marvell/mvsocvar.h:1.6 Mon Dec 23 03:19:43 2013 +++ src/sys/arch/arm/marvell/mvsocvar.h Mon Dec 23 04:12:09 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: mvsocvar.h,v 1.6 2013/12/23 03:19:43 kiyohara Exp $ */ +/* $NetBSD: mvsocvar.h,v 1.7 2013/12/23 04:12:09 kiyohara Exp $ */ /* * Copyright (c) 2007, 2010 KIYOHARA Takashi * All rights reserved. @@ -122,16 +122,20 @@ enum mvsoc_tags { }; int mvsoc_target(int, uint32_t *, uint32_t *, uint32_t *, uint32_t *); +extern int (*mvsoc_clkgating)(struct marvell_attach_args *); + void orion_intr_bootstrap(void); void orion_getclks(bus_addr_t); void kirkwood_intr_bootstrap(void); void kirkwood_getclks(bus_addr_t); +int kirkwood_clkgating(struct marvell_attach_args *); void mv78xx0_intr_bootstrap(void); void mv78xx0_getclks(bus_addr_t); void armadaxp_intr_bootstrap(bus_addr_t); void armadaxp_getclks(void); +int armadaxp_clkgating(struct marvell_attach_args *); #endif /* _MVSOCVAR_H_ */ Index: src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c diff -u src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c:1.5 src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c:1.6 --- src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c:1.5 Mon Dec 23 03:19:43 2013 +++ src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c Mon Dec 23 04:12:09 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: armadaxp_machdep.c,v 1.5 2013/12/23 03:19:43 kiyohara Exp $ */ +/* $NetBSD: armadaxp_machdep.c,v 1.6 2013/12/23 04:12:09 kiyohara Exp $ */ /******************************************************************************* Copyright (C) Marvell International Ltd. and its affiliates @@ -37,7 +37,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI *******************************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: armadaxp_machdep.c,v 1.5 2013/12/23 03:19:43 kiyohara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: armadaxp_machdep.c,v 1.6 2013/12/23 04:12:09 kiyohara Exp $"); #include "opt_machdep.h" #include "opt_mvsoc.h" @@ -356,6 +356,7 @@ initarm(void *arg) extern vaddr_t misc_base; misc_base = MARVELL_INTERREGS_VBASE + ARMADAXP_MISC_BASE; armadaxp_getclks(); + mvsoc_clkgating = armadaxp_clkgating; /* Preconfigure interrupts */ armadaxp_intr_bootstrap(MARVELL_INTERREGS_PBASE); Index: src/sys/arch/evbarm/marvell/marvell_machdep.c diff -u src/sys/arch/evbarm/marvell/marvell_machdep.c:1.25 src/sys/arch/evbarm/marvell/marvell_machdep.c:1.26 --- src/sys/arch/evbarm/marvell/marvell_machdep.c:1.25 Mon Dec 23 03:19:43 2013 +++ src/sys/arch/evbarm/marvell/marvell_machdep.c Mon Dec 23 04:12:09 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: marvell_machdep.c,v 1.25 2013/12/23 03:19:43 kiyohara Exp $ */ +/* $NetBSD: marvell_machdep.c,v 1.26 2013/12/23 04:12:09 kiyohara Exp $ */ /* * Copyright (c) 2007, 2008, 2010 KIYOHARA Takashi * All rights reserved. @@ -25,7 +25,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: marvell_machdep.c,v 1.25 2013/12/23 03:19:43 kiyohara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: marvell_machdep.c,v 1.26 2013/12/23 04:12:09 kiyohara Exp $"); #include "opt_evbarm_boardtype.h" #include "opt_ddb.h" @@ -314,6 +314,7 @@ initarm(void *arg) nremap = KIRKWOOD_MLMB_NREMAP; kirkwood_getclks(MARVELL_INTERREGS_VBASE); + mvsoc_clkgating = kirkwood_clkgating; break; #endif /* KIRKWOOD */ @@ -351,6 +352,7 @@ initarm(void *arg) extern vaddr_t misc_base; misc_base = MARVELL_INTERREGS_VBASE + ARMADAXP_MISC_BASE; armadaxp_getclks(); + mvsoc_clkgating = armadaxp_clkgating; #ifdef L2CACHE_ENABLE /* Initialize L2 Cache */