[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register
From: |
BALATON Zoltan |
Subject: |
[Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register |
Date: |
Wed, 06 Jun 2018 15:31:48 +0200 |
Signed-off-by: BALATON Zoltan <address@hidden>
---
default-configs/ppc-softmmu.mak | 1 +
default-configs/ppcemb-softmmu.mak | 1 +
hw/i2c/ppc4xx_i2c.c | 14 +++++++++++++-
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.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=y
CONFIG_SM501=y
CONFIG_IDE_SII3112=y
CONFIG_I2C=y
+CONFIG_BITBANG_I2C=y
# For Macs
CONFIG_MAC=y
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=y
CONFIG_SM501=y
CONFIG_IDE_SII3112=y
CONFIG_I2C=y
+CONFIG_BITBANG_I2C=y
diff --git a/hw/i2c/ppc4xx_i2c.c b/hw/i2c/ppc4xx_i2c.c
index a68b5f7..5806209 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"
#define PPC4xx_I2C_MEM_SIZE 18
@@ -46,7 +47,13 @@
#define IIC_XTCNTLSS_SRST (1 << 0)
+#define IIC_DIRECTCNTL_SDAC (1 << 3)
+#define IIC_DIRECTCNTL_SCLC (1 << 2)
+#define IIC_DIRECTCNTL_MSDA (1 << 1)
+#define IIC_DIRECTCNTL_MSCL (1 << 0)
+
typedef struct {
+ bitbang_i2c_interface *bitbang;
uint8_t mdata;
uint8_t lmadr;
uint8_t hmadr;
@@ -308,7 +315,11 @@ static void ppc4xx_i2c_writeb(void *opaque, hwaddr addr,
uint64_t value,
i2c->xtcntlss = value;
break;
case 16:
- i2c->directcntl = value & 0x7;
+ i2c->directcntl = value & (IIC_DIRECTCNTL_SDAC & IIC_DIRECTCNTL_SCLC);
+ i2c->directcntl |= (value & IIC_DIRECTCNTL_SCLC ? 1 : 0);
+ bitbang_i2c_set(i2c->bitbang, BITBANG_I2C_SCL, i2c->directcntl & 1);
+ i2c->directcntl |= bitbang_i2c_set(i2c->bitbang, BITBANG_I2C_SDA,
+ (value & IIC_DIRECTCNTL_SDAC) != 0) << 1;
break;
default:
if (addr < PPC4xx_I2C_MEM_SIZE) {
@@ -343,6 +354,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 = i2c_init_bus(DEVICE(s), "i2c");
+ r->bitbang = bitbang_i2c_init(s->bus);
}
static void ppc4xx_i2c_class_init(ObjectClass *klass, void *data)
--
2.7.6
- [Qemu-ppc] [PATCH v2 0/8] Misc sam460ex improvements, BALATON Zoltan, 2018/06/06
- [Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register,
BALATON Zoltan <=
- Re: [Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register, David Gibson, 2018/06/12
- Re: [Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register, BALATON Zoltan, 2018/06/13
- Re: [Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register, David Gibson, 2018/06/13
- Re: [Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register, BALATON Zoltan, 2018/06/13
- Re: [Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register, David Gibson, 2018/06/17
- Re: [Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register, BALATON Zoltan, 2018/06/19
- Re: [Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register, David Gibson, 2018/06/19
- Re: [Qemu-ppc] [PATCH v2 3/8] ppc4xx_i2c: Implement directcntl register, BALATON Zoltan, 2018/06/19
[Qemu-ppc] [PATCH v2 6/8] sam460ex: Add RTC device, BALATON Zoltan, 2018/06/06
[Qemu-ppc] [PATCH v2 1/8] ppc4xx_i2c: Clean up and improve error logging, BALATON Zoltan, 2018/06/06