From 59e6efefaccaa0d61a4280388c823b372bff55bb Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Mon, 22 Jan 2018 07:43:54 +0000 Subject: [PATCH] Add skeleton manual page for bcm283x_pwm (Feel free to improve this) --- share/man/man4/Makefile | 5 ++ share/man/man4/bcm283x_pwm.4 | 97 +++++++++++++++++++++++ sys/arm/broadcom/bcm2835/bcm2835_clkman.c | 4 +- 3 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 share/man/man4/bcm283x_pwm.4 diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index 38bb9e5e72bf..3525903c3ea2 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -78,6 +78,7 @@ MAN= aac.4 \ axe.4 \ axge.4 \ bce.4 \ + ${_bcm283x_pwm.4} \ bcma.4 \ bfe.4 \ bge.4 \ @@ -883,6 +884,10 @@ _vmm.4= vmm.4 _nvram2env.4= nvram2env.4 .endif +.if ${MACHINE_ARCH:Marmv[67]*} != "" || ${MACHINE_CPUARCH} == "aarch64" +_bcm283x_pwm.4= bcm283x_pwm.4 +.endif + .if exists(${.CURDIR}/man4.${MACHINE_CPUARCH}) SUBDIR= man4.${MACHINE_CPUARCH} .endif diff --git a/share/man/man4/bcm283x_pwm.4 b/share/man/man4/bcm283x_pwm.4 new file mode 100644 index 000000000000..2c232d35f75b --- /dev/null +++ b/share/man/man4/bcm283x_pwm.4 @@ -0,0 +1,97 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause-FreeBSD +.\" +.\" Copyright (c) 2017 Poul-Henning Kamp +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd January 22, 2017 +.Dt BCM283X_PWM 4 +.Os +.Sh NAME +.Nm bcm283x_pwm +.Nd bcm283x_pwm - driver for Raspberry Pi 2/3 PWM +.Sh SYNOPSIS +.Cd "kldload bcm283x_clkman" +.Cd "kldload bcm283x_pwm" +.Sh DESCRIPTION +The +.Nm +driver provides access to the PWM engine on GPIO12 of Rpi 2 and 3 hardware. +.Pp +The PWM hardware is controlled via the +.Xr sysctl 8 +interface: +.Bd -literal +dev.pwm.0.mode: 1 +dev.pwm.0.freq: 125000000 +dev.pwm.0.ratio: 2500 +dev.pwm.0.period: 10000 +dev.pwm.0.pwm_freq: 12500 +.Ed +.Bl -tag -width ".Va dev.pwm.0.mode" +.It Va dev.pwm.0.mode +Three modes exist, 0=off, 1=PWM, 2=N/M. +The N/M mode is a first order delta-sigma mode, which makes a quite +handy DAC output with a trivial RC lowpass filter. +.Pp +.It Va dev.pwm.0.freq +The input frequency to the PWM hardware in Hz. +Minmum frequency is 123 kHz, maximum frequency is 125 MHz. +.It Va dev.pwm.0.period +The period length in cycles. +In PWM mode, the output frequency will be +( +.Va dev.pwm.0.freq +/ +.Va dev.pwm.0.period . +) +In N/M mode this is the 'M' +.It Va dev.pwm.0.ratio +The "on" period in cycles. +In PWM mode, to get a 25% dutycycle, set this to 25% of +.Va dev.pwm.0.period . +In N/M mode this is the 'N' +.It Va dev.pwm.0.pwm_freq +The calculated PWM output frequency in PWM mode. +.El +.Pp +.Sh NOTES +Currently the +.Nm +driver ignores the 'status="disabled"' flag in the DTB, assuming that +if you load the driver, you want it to work. +.Sh SEE ALSO +.Xr sysctl 8 +.Sh HISTORY +The +.Nm +driver first appeared in +.Fx 12.0 . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver and this manual page were written by +.An Poul-Henning Kamp Aq Mt phk@FreeBSD.org . diff --git a/sys/arm/broadcom/bcm2835/bcm2835_clkman.c b/sys/arm/broadcom/bcm2835/bcm2835_clkman.c index 6ff33ac24a2e..d33ff1ff73f0 100644 --- a/sys/arm/broadcom/bcm2835/bcm2835_clkman.c +++ b/sys/arm/broadcom/bcm2835/bcm2835_clkman.c @@ -150,13 +150,13 @@ bcm2835_clkman_set_frequency(device_t dev, uint32_t unit, uint32_t hz) u = 500000000/hz; if (u < 4) { device_printf(sc->sc_dev, - "Frequency too high for unit 0x%x (max: 125MHz)", + "Frequency too high for unit 0x%x (max: 125 MHz)", unit); return (0); } if (u > 0xfff) { device_printf(sc->sc_dev, - "Frequency too low for unit 0x%x (min: 123Hz)", + "Frequency too low for unit 0x%x (min: 123 kHz)", unit); return (0); }