Changeset View
Changeset View
Standalone View
Standalone View
sys/arm/broadcom/bcm2835/bcm2835_cpufreq.c
Show All 12 Lines | |||||
VC_UNLOCK(sc); | VC_UNLOCK(sc); | ||||
/* add human readable temperature to dev.cpu node */ | /* add human readable temperature to dev.cpu node */ | ||||
cpu = device_get_parent(sc->dev); | cpu = device_get_parent(sc->dev); | ||||
if (cpu != NULL) { | if (cpu != NULL) { | ||||
ctx = device_get_sysctl_ctx(cpu); | ctx = device_get_sysctl_ctx(cpu); | ||||
SYSCTL_ADD_PROC(ctx, | SYSCTL_ADD_PROC(ctx, | ||||
SYSCTL_CHILDREN(device_get_sysctl_tree(cpu)), OID_AUTO, | SYSCTL_CHILDREN(device_get_sysctl_tree(cpu)), OID_AUTO, | ||||
"temperature", CTLTYPE_INT | CTLFLAG_RD, sc, 0, | "temperature", | ||||
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0, | |||||
sysctl_bcm2835_devcpu_temperature, "IK", | sysctl_bcm2835_devcpu_temperature, "IK", | ||||
"Current SoC temperature"); | "Current SoC temperature"); | ||||
} | } | ||||
/* release this hook (continue boot) */ | /* release this hook (continue boot) */ | ||||
config_intrhook_disestablish(&sc->init_hook); | config_intrhook_disestablish(&sc->init_hook); | ||||
} | } | ||||
Show All 24 Lines | |||||
sysctl_ctx_init(&bcm2835_sysctl_ctx); | sysctl_ctx_init(&bcm2835_sysctl_ctx); | ||||
/* create node for hw.cpufreq */ | /* create node for hw.cpufreq */ | ||||
oid = SYSCTL_ADD_NODE(&bcm2835_sysctl_ctx, | oid = SYSCTL_ADD_NODE(&bcm2835_sysctl_ctx, | ||||
SYSCTL_STATIC_CHILDREN(_hw), OID_AUTO, "cpufreq", | SYSCTL_STATIC_CHILDREN(_hw), OID_AUTO, "cpufreq", | ||||
CTLFLAG_RD, NULL, ""); | CTLFLAG_RD, NULL, ""); | ||||
/* Frequency (Hz) */ | /* Frequency (Hz) */ | ||||
SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | ||||
OID_AUTO, "arm_freq", CTLTYPE_INT | CTLFLAG_RW, sc, 0, | OID_AUTO, "arm_freq", | ||||
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, | |||||
sysctl_bcm2835_cpufreq_arm_freq, "IU", | sysctl_bcm2835_cpufreq_arm_freq, "IU", | ||||
"ARM frequency (Hz)"); | "ARM frequency (Hz)"); | ||||
SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | ||||
OID_AUTO, "core_freq", CTLTYPE_INT | CTLFLAG_RW, sc, 0, | OID_AUTO, "core_freq", | ||||
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, | |||||
sysctl_bcm2835_cpufreq_core_freq, "IU", | sysctl_bcm2835_cpufreq_core_freq, "IU", | ||||
"Core frequency (Hz)"); | "Core frequency (Hz)"); | ||||
SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | ||||
OID_AUTO, "sdram_freq", CTLTYPE_INT | CTLFLAG_RW, sc, 0, | OID_AUTO, "sdram_freq", | ||||
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, | |||||
sysctl_bcm2835_cpufreq_sdram_freq, "IU", | sysctl_bcm2835_cpufreq_sdram_freq, "IU", | ||||
"SDRAM frequency (Hz)"); | "SDRAM frequency (Hz)"); | ||||
/* Turbo state */ | /* Turbo state */ | ||||
SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | ||||
OID_AUTO, "turbo", CTLTYPE_INT | CTLFLAG_RW, sc, 0, | OID_AUTO, "turbo", | ||||
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, | |||||
sysctl_bcm2835_cpufreq_turbo, "IU", | sysctl_bcm2835_cpufreq_turbo, "IU", | ||||
"Disables dynamic clocking"); | "Disables dynamic clocking"); | ||||
/* Voltage (offset from 1.2V in units of 0.025V) */ | /* Voltage (offset from 1.2V in units of 0.025V) */ | ||||
SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | ||||
OID_AUTO, "voltage_core", CTLTYPE_INT | CTLFLAG_RW, sc, 0, | OID_AUTO, "voltage_core", | ||||
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, | |||||
sysctl_bcm2835_cpufreq_voltage_core, "I", | sysctl_bcm2835_cpufreq_voltage_core, "I", | ||||
"ARM/GPU core voltage" | "ARM/GPU core voltage" | ||||
"(offset from 1.2V in units of 0.025V)"); | "(offset from 1.2V in units of 0.025V)"); | ||||
SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | ||||
OID_AUTO, "voltage_sdram", CTLTYPE_INT | CTLFLAG_WR, sc, | OID_AUTO, "voltage_sdram", | ||||
CTLTYPE_INT | CTLFLAG_WR | CTLFLAG_NEEDGIANT, sc, | |||||
0, sysctl_bcm2835_cpufreq_voltage_sdram, "I", | 0, sysctl_bcm2835_cpufreq_voltage_sdram, "I", | ||||
"SDRAM voltage (offset from 1.2V in units of 0.025V)"); | "SDRAM voltage (offset from 1.2V in units of 0.025V)"); | ||||
/* Voltage individual SDRAM */ | /* Voltage individual SDRAM */ | ||||
SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | ||||
OID_AUTO, "voltage_sdram_c", CTLTYPE_INT | CTLFLAG_RW, sc, | OID_AUTO, "voltage_sdram_c", | ||||
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, | |||||
0, sysctl_bcm2835_cpufreq_voltage_sdram_c, "I", | 0, sysctl_bcm2835_cpufreq_voltage_sdram_c, "I", | ||||
"SDRAM controller voltage" | "SDRAM controller voltage" | ||||
"(offset from 1.2V in units of 0.025V)"); | "(offset from 1.2V in units of 0.025V)"); | ||||
SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | ||||
OID_AUTO, "voltage_sdram_i", CTLTYPE_INT | CTLFLAG_RW, sc, | OID_AUTO, "voltage_sdram_i", | ||||
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, | |||||
0, sysctl_bcm2835_cpufreq_voltage_sdram_i, "I", | 0, sysctl_bcm2835_cpufreq_voltage_sdram_i, "I", | ||||
"SDRAM I/O voltage (offset from 1.2V in units of 0.025V)"); | "SDRAM I/O voltage (offset from 1.2V in units of 0.025V)"); | ||||
SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | ||||
OID_AUTO, "voltage_sdram_p", CTLTYPE_INT | CTLFLAG_RW, sc, | OID_AUTO, "voltage_sdram_p", | ||||
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, | |||||
0, sysctl_bcm2835_cpufreq_voltage_sdram_p, "I", | 0, sysctl_bcm2835_cpufreq_voltage_sdram_p, "I", | ||||
"SDRAM phy voltage (offset from 1.2V in units of 0.025V)"); | "SDRAM phy voltage (offset from 1.2V in units of 0.025V)"); | ||||
/* Temperature */ | /* Temperature */ | ||||
SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | SYSCTL_ADD_PROC(&bcm2835_sysctl_ctx, SYSCTL_CHILDREN(oid), | ||||
OID_AUTO, "temperature", CTLTYPE_INT | CTLFLAG_RD, sc, 0, | OID_AUTO, "temperature", | ||||
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0, | |||||
sysctl_bcm2835_cpufreq_temperature, "I", | sysctl_bcm2835_cpufreq_temperature, "I", | ||||
"SoC temperature (thousandths of a degree C)"); | "SoC temperature (thousandths of a degree C)"); | ||||
} | } | ||||
/* ARM->VC lock */ | /* ARM->VC lock */ | ||||
sema_init(&vc_sema, 1, "vcsema"); | sema_init(&vc_sema, 1, "vcsema"); | ||||
/* register callback for using mbox when interrupts are enabled */ | /* register callback for using mbox when interrupts are enabled */ | ||||
Show All 12 Lines |