From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48467) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fTGtJ-0000fF-2f for qemu-devel@nongnu.org; Wed, 13 Jun 2018 21:17:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fTGtH-00072X-Lx for qemu-devel@nongnu.org; Wed, 13 Jun 2018 21:17:33 -0400 Date: Thu, 14 Jun 2018 11:17:05 +1000 From: David Gibson Message-ID: <20180614011705.GS30690@umbus.fritz.box> References: <51f6ea83be6b66d61e3129edecddc3399a1df1b8.1528935420.git.balaton@eik.bme.hu> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="367OTzzFqQya5wJv" Content-Disposition: inline In-Reply-To: <51f6ea83be6b66d61e3129edecddc3399a1df1b8.1528935420.git.balaton@eik.bme.hu> Subject: Re: [Qemu-devel] [PATCH v3 2/9] ppc4xx_i2c: Implement directcntl register List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: BALATON Zoltan Cc: qemu-devel@nongnu.org, qemu-ppc@nongnu.org, Alexander Graf --367OTzzFqQya5wJv Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Jun 14, 2018 at 02:17:00AM +0200, BALATON Zoltan wrote: > Signed-off-by: BALATON Zoltan Patch looks good, but it needs a commit message. What is the directcntl register? Now does the bitbang interface play into that? (Note that I know the answer to those questions right now, but it needs to be in the commit message for the benefit of people looking back in the future). > --- > default-configs/ppc-softmmu.mak | 1 + > default-configs/ppcemb-softmmu.mak | 1 + > hw/i2c/ppc4xx_i2c.c | 13 ++++++++++++- > include/hw/i2c/ppc4xx_i2c.h | 4 ++++ > 4 files changed, 18 insertions(+), 1 deletion(-) >=20 > diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmm= u.mak > index 4d7be45..7d0dc2f 100644 > --- a/default-configs/ppc-softmmu.mak > +++ b/default-configs/ppc-softmmu.mak > @@ -26,6 +26,7 @@ CONFIG_USB_EHCI_SYSBUS=3Dy > CONFIG_SM501=3Dy > CONFIG_IDE_SII3112=3Dy > CONFIG_I2C=3Dy > +CONFIG_BITBANG_I2C=3Dy > =20 > # For Macs > CONFIG_MAC=3Dy > diff --git a/default-configs/ppcemb-softmmu.mak b/default-configs/ppcemb-= softmmu.mak > index 67d18b2..37af193 100644 > --- a/default-configs/ppcemb-softmmu.mak > +++ b/default-configs/ppcemb-softmmu.mak > @@ -19,3 +19,4 @@ CONFIG_USB_EHCI_SYSBUS=3Dy > CONFIG_SM501=3Dy > CONFIG_IDE_SII3112=3Dy > CONFIG_I2C=3Dy > +CONFIG_BITBANG_I2C=3Dy > diff --git a/hw/i2c/ppc4xx_i2c.c b/hw/i2c/ppc4xx_i2c.c > index 4e0aaae..c0a1930 100644 > --- a/hw/i2c/ppc4xx_i2c.c > +++ b/hw/i2c/ppc4xx_i2c.c > @@ -30,6 +30,7 @@ > #include "cpu.h" > #include "hw/hw.h" > #include "hw/i2c/ppc4xx_i2c.h" > +#include "bitbang_i2c.h" > =20 > #define PPC4xx_I2C_MEM_SIZE 18 > =20 > @@ -46,6 +47,11 @@ > =20 > #define IIC_XTCNTLSS_SRST (1 << 0) > =20 > +#define IIC_DIRECTCNTL_SDAC (1 << 3) > +#define IIC_DIRECTCNTL_SCLC (1 << 2) > +#define IIC_DIRECTCNTL_MSDA (1 << 1) > +#define IIC_DIRECTCNTL_MSCL (1 << 0) > + > static void ppc4xx_i2c_reset(DeviceState *s) > { > PPC4xxI2CState *i2c =3D PPC4xx_I2C(s); > @@ -289,7 +295,11 @@ static void ppc4xx_i2c_writeb(void *opaque, hwaddr a= ddr, uint64_t value, > i2c->xtcntlss =3D value; > break; > case 16: > - i2c->directcntl =3D value & 0x7; > + i2c->directcntl =3D value & (IIC_DIRECTCNTL_SDAC & IIC_DIRECTCNT= L_SCLC); > + i2c->directcntl |=3D (value & IIC_DIRECTCNTL_SCLC ? 1 : 0); > + bitbang_i2c_set(i2c->bitbang, BITBANG_I2C_SCL, i2c->directcntl &= 1); > + i2c->directcntl |=3D bitbang_i2c_set(i2c->bitbang, BITBANG_I2C_S= DA, > + (value & IIC_DIRECTCNTL_SDAC) !=3D 0) << = 1; > break; > default: > if (addr < PPC4xx_I2C_MEM_SIZE) { > @@ -322,6 +332,7 @@ static void ppc4xx_i2c_init(Object *o) > sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->iomem); > sysbus_init_irq(SYS_BUS_DEVICE(s), &s->irq); > s->bus =3D i2c_init_bus(DEVICE(s), "i2c"); > + s->bitbang =3D bitbang_i2c_init(s->bus); > } > =20 > static void ppc4xx_i2c_class_init(ObjectClass *klass, void *data) > diff --git a/include/hw/i2c/ppc4xx_i2c.h b/include/hw/i2c/ppc4xx_i2c.h > index e4b6ded..ea6c8e1 100644 > --- a/include/hw/i2c/ppc4xx_i2c.h > +++ b/include/hw/i2c/ppc4xx_i2c.h > @@ -31,6 +31,9 @@ > #include "hw/sysbus.h" > #include "hw/i2c/i2c.h" > =20 > +/* from hw/i2c/bitbang_i2c.h */ > +typedef struct bitbang_i2c_interface bitbang_i2c_interface; > + > #define TYPE_PPC4xx_I2C "ppc4xx-i2c" > #define PPC4xx_I2C(obj) OBJECT_CHECK(PPC4xxI2CState, (obj), TYPE_PPC4xx_= I2C) > =20 > @@ -42,6 +45,7 @@ typedef struct PPC4xxI2CState { > I2CBus *bus; > qemu_irq irq; > MemoryRegion iomem; > + bitbang_i2c_interface *bitbang; > uint8_t mdata; > uint8_t lmadr; > uint8_t hmadr; --=20 David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson --367OTzzFqQya5wJv Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEdfRlhq5hpmzETofcbDjKyiDZs5IFAlshwhEACgkQbDjKyiDZ s5KDGhAAxrE7wNwqu8jpRrdBdDkPXkXtOB+J1W/4dWw0b7+gvdfDHECt0YBMgZ8C hbGTCwi2xfZEHf91oTX511mXEOFBnjzR7TfB9gzTPhRbb/7uYholfDb7WgTjPUWT jHjL7/SGDxjK4EIjId8umL0oZKTUnk0iTJxm5c7yqR2+pOe6hmRn8fBsnR8u82IQ GB+esrpSlRzG78q42QNb3MdjwEeMoBnCT33hu0JffEtqTYrRGu159rI4p2aXCMie tWmZDD2nXACp1pMqJbcDEhoDlbRvqUdNAz9QcGEvReBx9yzOB/J7T4m6DCgEc7B4 UwIyo/ARzKMUD6OuV7ljeVEY+GyImVKn0KvIFVmYOda9xDipMuVcqX5RAu9ptK5t nOtmevUQGTCADmfP2RShJAxT+aYgAC7zowJ9avUQ9BDXVGgIS9Vra7aj+1g4I0HV PcJTA9G/MaNhTHGihnG1ZgGRJr9oqt1blWhTxL2/x6kSsm//pZ7t1SEKGGA7+C7d m+nSEm0qbf8TQsFltnyCtVwNwg7kHzONPtv+s/lOVdMSKF5Xa4vstZazYsyIIKy8 x7L5V2QSJvETyBvm0NUabz1ZA8eRZTz/e/Y2nYQcOqoix0BCRIwVpwSECcxg2SW6 Hx4eNKgUKEOu+/P5P7dW5Jx1cgkL5eDoqOezMWJptQL4Zb1b+fA= =tPW7 -----END PGP SIGNATURE----- --367OTzzFqQya5wJv--