i2c on Pi3?

Karl Denninger karl at denninger.net
Fri Mar 24 19:37:15 UTC 2017


On 3/24/2017 13:56, Oleksandr Tymoshenko wrote:
> Karl Denninger (karl at denninger.net) wrote:
>> On 3/23/2017 12:53, Oleksandr Tymoshenko wrote:
>>> Karl Denninger (karl at denninger.net) wrote:
>>>> On 3/23/2017 12:34, John Howie wrote:
>>>>
>>>>> Hi Karl,
>>>>>
>>>>> I can only speak to the Raspberry Pi 2 kernel, but I2C is supported. For an example how to use it from userland, check out a project I posted on github eighteen months ago, that was for the PiFace RTC.
>>>>>
>>>>> https://github.com/jhowie/FreeBSDPiFaceRTC
>>>>>
>>>>> There are useful routines I created for working with devices on the I2C bus, which you are free to use. They are not RPI2-specific, so they should work on other boards. 
>>> .. skipped ..
>>>> It works on the Pi2; I am using it in production.
>>>>
>>>> The driver appears to be /missing /in the Pi3 kernel.
>>> Probably it's not enabled in DTB. Try adding this line to config.txt:
>>>
>>> dtparam=i2c_arm=on,spi=on
>>>
>> Nope, already in the base config.txt file:
>>
>> arm_control=0x200
>> dtparam=audio=on,i2c_arm=on,spi=on
>> dtoverlay=mmc
>> dtoverlay=pi3-disable-bt
>> device_tree_address=0x4000
>> kernel=u-boot.bin
> I just built latest HEAD, i2c driver is available in GENERIC kernel:
> # dmesg | grep iic
> iichb0: <BCM2708/2835 BSC controller> mem 0x7e804000-0x7e804fff irq 31
> on simplebus0
> iicbus0: <OFW I2C bus> on iichb0
> random: harvesting attach, 8 bytes (4 bits) from iicbus0
> random: harvesting attach, 8 bytes (4 bits) from iichb0
>
> The driver itself is sys/arm/broadcom/bcm2835/bcm2835_bsc.c
>
> Could you run this command on your Pi3 and send output? Thanks
>
>  sysctl -b hw.fdt.dtb | dtc -I dtb | grep -A 13 'i2c at .*{'
>

I have a copy of Generic with a couple of tweaks in it; I DO NOT get the
iic identifiers.

Here's what I have in the dtb; I will svn update and rebuild with
GENERIC (don't see why the tweaks would change anything, but will try
with GENERIC anyway and see if anything changes.

root at rpi3:~ # sysctl -b hw.fdt.dtb | dtc -I dtb | grep -A 13 'i2c at .*{'
<stdout>: Warning (unit_address_vs_reg): Node /axi/vc_mem has a reg or
ranges property, but no unit name
<stdout>: Warning (unit_address_vs_reg): Node /soc has a reg or ranges
property, but no unit name
<stdout>: Warning (unit_address_vs_reg): Node /soc/gpiomem has a reg or
ranges property, but no unit name
<stdout>: Warning (unit_address_vs_reg): Node /soc/vchiq has a reg or
ranges property, but no unit name
<stdout>: Warning (unit_address_vs_reg): Node /soc/local_intc has a reg
or ranges property, but no unit name
<stdout>: Warning (unit_address_vs_reg): Node /memory has a reg or
ranges property, but no unit name
<stdout>: Warning (avoid_default_addr_size): Relying on default
#address-cells value for /axi/vc_mem
<stdout>: Warning (avoid_default_addr_size): Relying on default
#size-cells value for /axi/vc_mem
                i2c at 7e205000 {
                        compatible = "brcm,bcm2835-i2c";
                        reg = <0x7e205000 0x1000>;
                        interrupts = <0x2 0x15>;
                        clocks = <0x7 0x14>;
                        #address-cells = <0x1>;
                        #size-cells = <0x0>;
                        status = "disabled";
                        pinctrl-names = "default";
                        pinctrl-0 = <0xf>;
                        clock-frequency = <0x186a0>;
                        phandle = <0x25>;
                };

--
                i2c at 7e804000 {
                        compatible = "brcm,bcm2835-i2c";
                        reg = <0x7e804000 0x1000>;
                        interrupts = <0x2 0x15>;
                        clocks = <0x7 0x14>;
                        #address-cells = <0x1>;
                        #size-cells = <0x0>;
                        status = "okay";
                        pinctrl-names = "default";
                        pinctrl-0 = <0x13>;
                        clock-frequency = <0x186a0>;
                        phandle = <0x26>;
                };

                i2c at 7e805000 {
                        compatible = "brcm,bcm2835-i2c";
                        reg = <0x7e805000 0x1000>;
                        interrupts = <0x2 0x15>;
                        clocks = <0x7 0x14>;
                        #address-cells = <0x1>;
                        #size-cells = <0x0>;
                        status = "disabled";
                        clock-frequency = <0x186a0>;
                        phandle = <0x14>;
                };

                vec at 7e806000 {
                        compatible = "brcm,bcm2835-vec";


-- 
Karl Denninger
karl at denninger.net <mailto:karl at denninger.net>
/The Market Ticker/
/[S/MIME encrypted email preferred]/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2993 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.freebsd.org/pipermail/freebsd-arm/attachments/20170324/528c5cc7/attachment.bin>


More information about the freebsd-arm mailing list