From owner-p4-projects@FreeBSD.ORG Tue Nov 21 17:20:53 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0AE0B16CF07; Tue, 21 Nov 2006 17:20:40 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 42EB016AF06 for ; Tue, 21 Nov 2006 17:20:36 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.FreeBSD.org (Postfix) with ESMTP id 107D743F85 for ; Tue, 21 Nov 2006 17:14:43 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id kALHF1sg066707 for ; Tue, 21 Nov 2006 17:15:01 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id kALHF1uW066704 for perforce@freebsd.org; Tue, 21 Nov 2006 17:15:01 GMT (envelope-from sam@freebsd.org) Date: Tue, 21 Nov 2006 17:15:01 GMT Message-Id: <200611211715.kALHF1uW066704@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 110182 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Nov 2006 17:20:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=110182 Change 110182 by sam@sam_ebb on 2006/11/18 02:52:03 Get it working: o slave address in avila docs is correct; don't believe what linux print probes, it's the 7-bit address >> 1 o correct set method to send register pointer before 4 bytes of data in a single transaction Affected files ... .. //depot/projects/arm/src/sys/arm/xscale/ixp425/ds1672.c#3 edit Differences ... ==== //depot/projects/arm/src/sys/arm/xscale/ixp425/ds1672.c#3 (text+ko) ==== @@ -54,8 +54,7 @@ #define IIC_M_WR 0 /* write operation */ -/* NB: Gateworks doc say this is 0x80 but Linux uses 0x68 */ -#define DS1672_ADDR 0x68 /* slave address */ +#define DS1672_ADDR 0xd0 /* slave address */ #define DS1672_COUNTER 0 /* counter (bytes 0-3) */ #define DS1672_CTRL 4 /* control (1 byte) */ @@ -89,7 +88,7 @@ static int ds1672_gettime(device_t dev, struct timespec *ts) { - uint8_t addr[2] = { 0, DS1672_COUNTER }; + uint8_t addr[1] = { DS1672_COUNTER }; uint8_t secs[4]; struct iic_msg msgs[2] = { { DS1672_ADDR, IIC_M_WR, 1, addr }, @@ -110,19 +109,18 @@ static int ds1672_settime(device_t dev, struct timespec *ts) { - uint8_t addr[2] = { 0, DS1672_COUNTER }; - uint8_t secs[4]; - struct iic_msg msgs[2] = { - { DS1672_ADDR, IIC_M_WR, 1, addr }, - { DS1672_ADDR, IIC_M_WR, 4, secs }, + /* NB: register pointer precedes actual data */ + uint8_t data[5] = { DS1672_COUNTER }; + struct iic_msg msgs[1] = { + { DS1672_ADDR, IIC_M_WR, 5, data }, }; - secs[1] = (ts->tv_sec >> 0) & 0xff; - secs[2] = (ts->tv_sec >> 8) & 0xff; - secs[3] = (ts->tv_sec >> 16) & 0xff; - secs[4] = (ts->tv_sec >> 24) & 0xff; + data[1] = (ts->tv_sec >> 0) & 0xff; + data[2] = (ts->tv_sec >> 8) & 0xff; + data[3] = (ts->tv_sec >> 16) & 0xff; + data[4] = (ts->tv_sec >> 24) & 0xff; - return iicbus_transfer(dev, msgs, 2); + return iicbus_transfer(dev, msgs, 1); } static device_method_t ds1672_methods[] = {