From owner-freebsd-arm@FreeBSD.ORG Wed Apr 30 23:49:27 2014 Return-Path: Delivered-To: freebsd-arm@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 05E4A6D7; Wed, 30 Apr 2014 23:49:27 +0000 (UTC) Received: from mail-wg0-x22d.google.com (mail-wg0-x22d.google.com [IPv6:2a00:1450:400c:c00::22d]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 727EE1653; Wed, 30 Apr 2014 23:49:26 +0000 (UTC) Received: by mail-wg0-f45.google.com with SMTP id b13so2388384wgh.28 for ; Wed, 30 Apr 2014 16:49:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=QCvoVweNUWrp4Mu0YZnWw/kZUuiqvNkBWxUE3Ma5X2k=; b=Xyu3zB7StYJ9TVVrOsm94H9gps7n3ls6koeePb05ycZAFcap+wyIXmoK5T3dB1xkM0 yXRHNQoZi9HUrHGhN4qo2Uu/8zmcOLgNoc1xhB6Fk5Vx7NDnzfLXZaINLqfU7f3Dfqme q4hDQIQWBv2ZX2NN4NVgxw8LhunK44FtkGyNmRPUXC3h1pipSNVu8eTgd1dw3pjZmnBA WM8Vx/Z/q+X9FvAOgb4SeKSUiwBsWfs2aUt5o3n0yOGYxB6zrXZcHIIiNYYBGo6qF48w CzeYlVbUls2yrUUTH4N3DxFupOqE1CH3P//UP0mEpP2Sh3VP6YNaPTsTCQ852ToVh87c o39Q== MIME-Version: 1.0 X-Received: by 10.180.211.116 with SMTP id nb20mr5855034wic.5.1398901764742; Wed, 30 Apr 2014 16:49:24 -0700 (PDT) Received: by 10.217.10.195 with HTTP; Wed, 30 Apr 2014 16:49:24 -0700 (PDT) In-Reply-To: <1CFC3564-65F0-4DC8-950C-3D53BBB2761C@FreeBSD.org> References: <93181B67-1944-4DDD-A595-455D2AE9B110@grondar.org> <1CFC3564-65F0-4DC8-950C-3D53BBB2761C@FreeBSD.org> Date: Wed, 30 Apr 2014 19:49:24 -0400 Message-ID: Subject: Re: i2c on RPI-B not working From: Winston Smith To: Rui Paulo Content-Type: text/plain; charset=UTF-8 Cc: freebsd-arm , Mark R V Murray X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Apr 2014 23:49:27 -0000 On Tue, Apr 29, 2014 at 1:07 PM, Rui Paulo wrote: > This is because the controller doesn't support scanning. You need to write your own C program to issue iic ioctls for reading / writing to the i2c bus. I'm in the same process except on a BeagleBone Black (currently running 11-CURRENT). Running `i2c -sv` under `ktrace -t+`, it's returning: 956 i2c CALL ioctl(0x3,I2CRSTCARD,0xbffffcc8) 956 i2c RET ioctl 0 956 i2c CALL ioctl(0x3,I2CSTART,0xbffffcc8) 956 i2c RET ioctl -1 errno 6 Device not configured 956 i2c CALL ioctl(0x3,I2CSTOP,0xbffffcc8) 956 i2c RET ioctl -1 errno 22 Invalid argument I know from Linux on the BBB, that when you run `i2cdetect`, you need to specify the `-r` to use "read byte" commands to probe the i2c bus and indeed I've written i2c code previously using ioctl() with I2CRDWR. So I cobbled together a I2C bus scanner, i2cscan.c: http://pastebin.com/RxpRCyJU root@beaglebone:~ # ./i2cscan /dev/iic0 Checking device: /dev/iic0 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Hmmm ... on the BBB it's still not detecting anything; in fact according to `ktrace`, it seems to still return ENXIO (Device not configured): 988 i2cscan CALL ioctl(0x3,I2CRDWR,0xbffffc58) 988 i2cscan RET ioctl -1 errno 6 Device not configured Not entirely sure why it's not detecting anything since I *know* the BBB has an EEPROM at 0x50 on bus 0 (I2C0 @ 44e0b000), which according to ofwdump should be iic0: root@beaglebone:~ # ofwdump -a Node 0x38: Node 0xc4: am335x ... Node 0x1504: i2c@44e0b000 Node 0x1590: pmic@24 ... So: 1) Hopefully, you'll have more luck with the i2cscan.c tool I wrote than I did! 2) Does anyone know why I'm not detecting any i2c devices on the BBB? Thanks! -W