Date: Sun, 12 Mar 2017 18:38:51 -0300 From: "Dr. Rolf Jansen" <rj@obsigna.com> To: freebsd-arm@FreeBSD.org Subject: Re: Enabling ADC on a Beaglebone Black running FreeBSD 12.0-CURRENT (BEAGLEBONE) Message-ID: <271AFD8F-BD2C-445C-AB95-D7D07593E487@obsigna.com> In-Reply-To: <0C4DCBB9-2642-4B0F-B15B-4139D5D8B249@obsigna.com> References: <0C4DCBB9-2642-4B0F-B15B-4139D5D8B249@obsigna.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Am 12.03.2017 um 10:57 schrieb Dr. Rolf Jansen <rj@obsigna.com>: > I experience problems to enable the ADC line of my BBB. >=20 > Apparently, in FreeBSD 10, the ADC lines would have been enabled by a = sysctl call: >=20 > sysctl dev.ti_adc.0.ain.0.enable=3D1 >=20 >=20 > On FreeBSD 12, this gives: >=20 > sysctl: unknown oid 'dev.ti_adc.0.ain.0.enable' >=20 >=20 > I thought, perhaps the driver has not been loaded into the kernel, = but: >=20 > kldload ti_adc > .... > kldload: can't load ti_adc: module already loaded or in kernel >=20 >=20 > Question: >=20 > What do I need to get the ADC working with FreeBSD 12? I am answering my own question. The ADC is disabled in the respective device tree file = am335x-boneblack.dtb. In order to enable the it, I did: 1. decompile the device tree blob (.dtb) into a device tree source file = (.dts): cd /boot/dtb dtc -I dtb -O dts am335x-boneblack.dtb > am335x-boneblack.dts 2. edit the .dts file, and change the entry for tscadc to the following: tscadc@44e0d000 { compatible =3D "ti,am3359-tscadc"; reg =3D <0x44e0d000 0x1000>; interrupt-parent =3D <0x1>; interrupts =3D <0x10>; ti,hwmods =3D "adc_tsc"; status =3D "okay"; dmas =3D <0x29 0x35 0x0 0x29 0x39 0x0>; dma-names =3D "fifo0", "fifo1"; tsc { compatible =3D "ti,am3359-tsc"; }; adc { #io-channel-cells =3D <0x1>; compatible =3D "ti,am3359-adc"; ti,adc-channels =3D <0 1 2 3 4 5 6>; }; }; ActualLy I changed the status from "disabled" to "okay" and I added the = ti,adc-channels descriptor to the adc section. 3. save the original DTB and compile the DTS: mv am335x-boneblack.dtb am335x-boneblack.dtb.orig dtc -O dtb -o am335x-boneblack.dtb -b 0 am335x-boneblack.dts 4. restart 5. check it: sysctl dev.ti_adc .... dev.ti_adc.0.ain.6.input: 0 dev.ti_adc.0.ain.6.samples_avg: 0 dev.ti_adc.0.ain.6.open_delay: 0 dev.ti_adc.0.ain.6.enable: 0 dev.ti_adc.0.ain.5.input: 0 dev.ti_adc.0.ain.5.samples_avg: 0 dev.ti_adc.0.ain.5.open_delay: 0 dev.ti_adc.0.ain.5.enable: 0 dev.ti_adc.0.ain.4.input: 0 dev.ti_adc.0.ain.4.samples_avg: 0 dev.ti_adc.0.ain.4.open_delay: 0 dev.ti_adc.0.ain.4.enable: 0 dev.ti_adc.0.ain.3.input: 0 dev.ti_adc.0.ain.3.samples_avg: 0 dev.ti_adc.0.ain.3.open_delay: 0 dev.ti_adc.0.ain.3.enable: 0 dev.ti_adc.0.ain.2.input: 0 dev.ti_adc.0.ain.2.samples_avg: 0 dev.ti_adc.0.ain.2.open_delay: 0 dev.ti_adc.0.ain.2.enable: 0 dev.ti_adc.0.ain.1.input: 0 dev.ti_adc.0.ain.1.samples_avg: 0 dev.ti_adc.0.ain.1.open_delay: 0 dev.ti_adc.0.ain.1.enable: 0 dev.ti_adc.0.ain.0.input: 3071 dev.ti_adc.0.ain.0.samples_avg: 0 dev.ti_adc.0.ain.0.open_delay: 0 dev.ti_adc.0.ain.0.enable: 1 dev.ti_adc.0.clockdiv: 2400 dev.ti_adc.0.%parent: simplebus0 dev.ti_adc.0.%pnpinfo: name=3Dtscadc@44e0d000 compat=3Dti,am3359-tscadc= dev.ti_adc.0.%location:=20 dev.ti_adc.0.%driver: ti_adc dev.ti_adc.0.%desc: TI ADC controller dev.ti_adc.%parent:=20 I can enable the ADC channels, and when connecting a 1002 mV DC source = to AIN0 the reading was 2279, which is perfectly in line with = 1002*4095/1800 =3D 2279.55. Best regards Rolf=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?271AFD8F-BD2C-445C-AB95-D7D07593E487>