Changeset View
Changeset View
Standalone View
Standalone View
sys/arm/broadcom/bcm2835/bcm2835_pwm.c
Show All 12 Lines | |||||
* Add system sysctl tree/handlers. | * Add system sysctl tree/handlers. | ||||
*/ | */ | ||||
ctx = device_get_sysctl_ctx(sc->sc_dev); | ctx = device_get_sysctl_ctx(sc->sc_dev); | ||||
tree_node = device_get_sysctl_tree(sc->sc_dev); | tree_node = device_get_sysctl_tree(sc->sc_dev); | ||||
tree = SYSCTL_CHILDREN(tree_node); | tree = SYSCTL_CHILDREN(tree_node); | ||||
if (bootverbose) { | if (bootverbose) { | ||||
#define RR(x,y) \ | #define RR(x,y) \ | ||||
SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, y, \ | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, y, \ | ||||
CTLFLAG_RW | CTLTYPE_UINT, sc, 0x##x, \ | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, \ | ||||
bcm_pwm_reg_proc, "IU", "Register 0x" #x " " y); | sc, 0x##x, bcm_pwm_reg_proc, "IU", \ | ||||
"Register 0x" #x " " y); | |||||
RR(24, "DAT2") | RR(24, "DAT2") | ||||
RR(20, "RNG2") | RR(20, "RNG2") | ||||
RR(18, "FIF1") | RR(18, "FIF1") | ||||
RR(14, "DAT1") | RR(14, "DAT1") | ||||
RR(10, "RNG1") | RR(10, "RNG1") | ||||
RR(08, "DMAC") | RR(08, "DMAC") | ||||
RR(04, "STA") | RR(04, "STA") | ||||
RR(00, "CTL") | RR(00, "CTL") | ||||
#undef RR | #undef RR | ||||
} | } | ||||
SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "pwm_freq", | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "pwm_freq", | ||||
CTLFLAG_RD | CTLTYPE_UINT, sc, 0, | CTLFLAG_RD | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, | ||||
bcm_pwm_pwm_freq_proc, "IU", "PWM frequency ch 1 (Hz)"); | sc, 0, bcm_pwm_pwm_freq_proc, "IU", | ||||
"PWM frequency ch 1 (Hz)"); | |||||
SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "period", | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "period", | ||||
CTLFLAG_RW | CTLTYPE_UINT, sc, 0, | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, | ||||
bcm_pwm_period_proc, "IU", "PWM period ch 1 (#clocks)"); | sc, 0, bcm_pwm_period_proc, "IU", | ||||
"PWM period ch 1 (#clocks)"); | |||||
SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "ratio", | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "ratio", | ||||
CTLFLAG_RW | CTLTYPE_UINT, sc, 0, | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, | ||||
bcm_pwm_ratio_proc, "IU", "PWM ratio ch 1 (0...period)"); | sc, 0, bcm_pwm_ratio_proc, "IU", | ||||
"PWM ratio ch 1 (0...period)"); | |||||
SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "freq", | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "freq", | ||||
CTLFLAG_RW | CTLTYPE_UINT, sc, 0, | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, | ||||
bcm_pwm_freq_proc, "IU", "PWM clock (Hz)"); | sc, 0, bcm_pwm_freq_proc, "IU", | ||||
"PWM clock (Hz)"); | |||||
SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "mode", | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "mode", | ||||
CTLFLAG_RW | CTLTYPE_UINT, sc, 0, | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, | ||||
bcm_pwm_mode_proc, "IU", "PWM mode ch 1 (0=off, 1=pwm, 2=dither)"); | sc, 0, bcm_pwm_mode_proc, "IU", | ||||
"PWM mode ch 1 (0=off, 1=pwm, 2=dither)"); | |||||
SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "pwm_freq2", | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "pwm_freq2", | ||||
CTLFLAG_RD | CTLTYPE_UINT, sc, 0, | CTLFLAG_RD | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, | ||||
bcm_pwm_pwm_freq2_proc, "IU", "PWM frequency ch 2 (Hz)"); | sc, 0, bcm_pwm_pwm_freq2_proc, "IU", | ||||
"PWM frequency ch 2 (Hz)"); | |||||
SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "period2", | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "period2", | ||||
CTLFLAG_RW | CTLTYPE_UINT, sc, 0, | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, | ||||
bcm_pwm_period2_proc, "IU", "PWM period ch 2 (#clocks)"); | sc, 0, bcm_pwm_period2_proc, "IU", | ||||
"PWM period ch 2 (#clocks)"); | |||||
SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "ratio2", | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "ratio2", | ||||
CTLFLAG_RW | CTLTYPE_UINT, sc, 0, | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, | ||||
bcm_pwm_ratio2_proc, "IU", "PWM ratio ch 2 (0...period)"); | sc, 0, bcm_pwm_ratio2_proc, "IU", | ||||
"PWM ratio ch 2 (0...period)"); | |||||
SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "mode2", | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "mode2", | ||||
CTLFLAG_RW | CTLTYPE_UINT, sc, 0, | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, | ||||
bcm_pwm_mode2_proc, "IU", "PWM mode ch 2 (0=off, 1=pwm, 2=dither)"); | sc, 0, bcm_pwm_mode2_proc, "IU", | ||||
"PWM mode ch 2 (0=off, 1=pwm, 2=dither)"); | |||||
} | } | ||||
static int | static int | ||||
bcm_pwm_probe(device_t dev) | bcm_pwm_probe(device_t dev) | ||||
{ | { | ||||
if (!ofw_bus_status_okay(dev)) | if (!ofw_bus_status_okay(dev)) | ||||
return (ENXIO); | return (ENXIO); | ||||
Show All 12 Lines |