From nobody Tue Oct 28 01:56:36 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1516109062976353.2214864188893; Tue, 16 Jan 2018 05:24:22 -0800 (PST) Received: from localhost ([::1]:35833 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebRDo-0000mQ-Vs for importer@patchew.org; Tue, 16 Jan 2018 08:24:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59302) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebR6H-0003DA-IL for qemu-devel@nongnu.org; Tue, 16 Jan 2018 08:16:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebR6F-0007BV-OI for qemu-devel@nongnu.org; Tue, 16 Jan 2018 08:16:25 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:33511) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebR6F-0007An-Js for qemu-devel@nongnu.org; Tue, 16 Jan 2018 08:16:23 -0500 Received: by mail-qt0-x244.google.com with SMTP id e2so18129395qti.0 for ; Tue, 16 Jan 2018 05:16:23 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id k29sm1436180qtc.87.2018.01.16.05.16.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 05:16:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=92B8MwE05QTx3Q7jsLelAYBGI20ibU1vSUashW8Hju0=; b=QUELpoyYT/RJN3sTpETdakvRWhVIC3km28TMNa7DPTDNqCt5DkyOT1fo9zyllJh0BE 67g0dhZ30dcMR+RJtN10E5Hb3D2J0LH7zy4MgFgCKsKn6jZVa9besZC3PjQ8QKpkpbEo NBSWUqKhYG3Yv1QPn2oV3x4zIca19V0KBQydYd35g8U0kABUEeLXoQfFf5GmFIGiB4Kn qLpDU/CFM2TkYSQQlDNfI1KX/StWZ/A5qlwtRcdlyULLXtrJJkXwPUqf5aZD8RTsYEG1 vOov+g6PfW1pLGaEorrj6cKPBxDeU+Uznf4qKbaaW8tlpNGqVH0jiBqsPBegzphZlFhY dISA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=92B8MwE05QTx3Q7jsLelAYBGI20ibU1vSUashW8Hju0=; b=e/3bVRn4OV5xGkGgpSCuRsOhRhD0nl1TZ8b9POAeMPFHMqicyuQ8vhRCXt9l1Tqpxm obDt8CJN/nlDR2PxoKtHX+xTksApgvwtnkK4FeGKW9Hp7Y4gi4BS5KBecg4CvLmpjOkm SmETMrFOSxzBO1xkWcMBUZKexX5Zd1wE7xQdzxScXKbCgP+23Ve5ZOQBZuAREFiIkBX9 i4rtSYGhcadiQsEN+3IcsE0G4Z+Sv6roQPea+trs4VFVVQVyHf6WI0Q4QTynluvynLsk Qr7xNOQuAHwhSF8I16CXeSWpUhVqkPJJDrhYpvZYupslpp+hNj3FvYqgesTYLaWX4DvR VbKg== X-Gm-Message-State: AKwxytdHnMHEXCXsOlf1CG2ZNyhULWOjwwmo8N51joz524nPpUo7WE39 jraTWfLYCo3lJRz2YP4cjBg= X-Google-Smtp-Source: ACJfBos/8ePAhJIiYMGF5B+aZu7Vo6ORkAFLTIzhD6bKKzaRpZivCkOo0N4FzJxzlLMSs5Q7ulMnIg== X-Received: by 10.200.27.135 with SMTP id z7mr36644873qtj.58.1516108583126; Tue, 16 Jan 2018 05:16:23 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Eduardo Habkost , Markus Armbruster , Peter Maydell , Paolo Bonzini , Eric Blake , Marcel Apfelbaum Date: Tue, 16 Jan 2018 10:15:47 -0300 Message-Id: <20180116131555.14242-4-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180116131555.14242-1-f4bug@amsat.org> References: <20180116131555.14242-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PATCH 03/11] hw/i2c: convert I2CSlaveClass::init -> realize X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/i2c/i2c.h | 2 +- include/hw/i2c/smbus.h | 2 +- hw/audio/wm8750.c | 8 +++----- hw/display/ssd0303.c | 5 ++--- hw/gpio/max7310.c | 6 ++---- hw/i2c/core.c | 10 ++++------ hw/i2c/smbus.c | 10 ++++------ hw/input/lm832x.c | 5 ++--- hw/misc/tmp105.c | 6 ++---- hw/misc/tmp421.c | 6 ++---- hw/nvram/eeprom_at24c.c | 24 +++++++++++------------- hw/timer/twl92230.c | 12 +++++------- 12 files changed, 39 insertions(+), 57 deletions(-) diff --git a/include/hw/i2c/i2c.h b/include/hw/i2c/i2c.h index 2ce611d4c8..4a9344b75c 100644 --- a/include/hw/i2c/i2c.h +++ b/include/hw/i2c/i2c.h @@ -30,7 +30,7 @@ typedef struct I2CSlaveClass DeviceClass parent_class; =20 /* Callbacks provided by the device. */ - int (*init)(I2CSlave *dev); + void (*realize)(I2CSlave *slave, Error **errp); =20 /* Master to slave. Returns non-zero for a NAK, 0 for success. */ int (*send)(I2CSlave *s, uint8_t data); diff --git a/include/hw/i2c/smbus.h b/include/hw/i2c/smbus.h index 544bbc1957..da31894383 100644 --- a/include/hw/i2c/smbus.h +++ b/include/hw/i2c/smbus.h @@ -38,7 +38,7 @@ typedef struct SMBusDeviceClass { I2CSlaveClass parent_class; - int (*init)(SMBusDevice *dev); + void (*realize)(SMBusDevice *dev, Error **errp); void (*quick_cmd)(SMBusDevice *dev, uint8_t read); void (*send_byte)(SMBusDevice *dev, uint8_t val); uint8_t (*receive_byte)(SMBusDevice *dev); diff --git a/hw/audio/wm8750.c b/hw/audio/wm8750.c index 8bb44a7cc1..c209334f4e 100644 --- a/hw/audio/wm8750.c +++ b/hw/audio/wm8750.c @@ -618,14 +618,12 @@ static const VMStateDescription vmstate_wm8750 =3D { } }; =20 -static int wm8750_init(I2CSlave *i2c) +static void wm8750_realize(I2CSlave *slave, Error **errp) { - WM8750State *s =3D WM8750(i2c); + WM8750State *s =3D WM8750(slave); =20 AUD_register_card(CODEC, &s->card); wm8750_reset(I2C_SLAVE(s)); - - return 0; } =20 #if 0 @@ -709,7 +707,7 @@ static void wm8750_class_init(ObjectClass *klass, void = *data) DeviceClass *dc =3D DEVICE_CLASS(klass); I2CSlaveClass *sc =3D I2C_SLAVE_CLASS(klass); =20 - sc->init =3D wm8750_init; + sc->realize =3D wm8750_realize; sc->event =3D wm8750_event; sc->recv =3D wm8750_rx; sc->send =3D wm8750_tx; diff --git a/hw/display/ssd0303.c b/hw/display/ssd0303.c index 68a80b9d64..c4cd059a52 100644 --- a/hw/display/ssd0303.c +++ b/hw/display/ssd0303.c @@ -297,13 +297,12 @@ static const GraphicHwOps ssd0303_ops =3D { .gfx_update =3D ssd0303_update_display, }; =20 -static int ssd0303_init(I2CSlave *i2c) +static void ssd0303_realize(I2CSlave *i2c, Error **errp) { ssd0303_state *s =3D SSD0303(i2c); =20 s->con =3D graphic_console_init(DEVICE(i2c), 0, &ssd0303_ops, s); qemu_console_resize(s->con, 96 * MAGNIFY, 16 * MAGNIFY); - return 0; } =20 static void ssd0303_class_init(ObjectClass *klass, void *data) @@ -311,7 +310,7 @@ static void ssd0303_class_init(ObjectClass *klass, void= *data) DeviceClass *dc =3D DEVICE_CLASS(klass); I2CSlaveClass *k =3D I2C_SLAVE_CLASS(klass); =20 - k->init =3D ssd0303_init; + k->realize =3D ssd0303_realize; k->event =3D ssd0303_event; k->recv =3D ssd0303_recv; k->send =3D ssd0303_send; diff --git a/hw/gpio/max7310.c b/hw/gpio/max7310.c index f82e3e6555..070da0e4dc 100644 --- a/hw/gpio/max7310.c +++ b/hw/gpio/max7310.c @@ -182,14 +182,12 @@ static void max7310_gpio_set(void *opaque, int line, = int level) =20 /* MAX7310 is SMBus-compatible (can be used with only SMBus protocols), * but also accepts sequences that are not SMBus so return an I2C device. = */ -static int max7310_init(I2CSlave *i2c) +static void max7310_realize(I2CSlave *i2c, Error **errp) { MAX7310State *s =3D MAX7310(i2c); =20 qdev_init_gpio_in(&i2c->qdev, max7310_gpio_set, 8); qdev_init_gpio_out(&i2c->qdev, s->handler, 8); - - return 0; } =20 static void max7310_class_init(ObjectClass *klass, void *data) @@ -197,7 +195,7 @@ static void max7310_class_init(ObjectClass *klass, void= *data) DeviceClass *dc =3D DEVICE_CLASS(klass); I2CSlaveClass *k =3D I2C_SLAVE_CLASS(klass); =20 - k->init =3D max7310_init; + k->realize =3D max7310_realize; k->event =3D max7310_event; k->recv =3D max7310_rx; k->send =3D max7310_tx; diff --git a/hw/i2c/core.c b/hw/i2c/core.c index 59068f157e..f9f48a1666 100644 --- a/hw/i2c/core.c +++ b/hw/i2c/core.c @@ -276,16 +276,14 @@ const VMStateDescription vmstate_i2c_slave =3D { } }; =20 -static int i2c_slave_qdev_init(DeviceState *dev) +static void i2c_slave_realize(DeviceState *dev, Error **errp) { I2CSlave *s =3D I2C_SLAVE(dev); I2CSlaveClass *sc =3D I2C_SLAVE_GET_CLASS(s); =20 - if (sc->init) { - return sc->init(s); + if (sc->realize) { + return sc->realize(s, errp); } - - return 0; } =20 DeviceState *i2c_create_slave(I2CBus *bus, const char *name, uint8_t addr) @@ -301,7 +299,7 @@ DeviceState *i2c_create_slave(I2CBus *bus, const char *= name, uint8_t addr) static void i2c_slave_class_init(ObjectClass *klass, void *data) { DeviceClass *k =3D DEVICE_CLASS(klass); - k->init =3D i2c_slave_qdev_init; + k->realize =3D i2c_slave_realize; set_bit(DEVICE_CATEGORY_MISC, k->categories); k->bus_type =3D TYPE_I2C_BUS; k->props =3D i2c_props; diff --git a/hw/i2c/smbus.c b/hw/i2c/smbus.c index a90d65ef37..a5293c2552 100644 --- a/hw/i2c/smbus.c +++ b/hw/i2c/smbus.c @@ -202,16 +202,14 @@ static int smbus_i2c_send(I2CSlave *s, uint8_t data) return 0; } =20 -static int smbus_device_init(I2CSlave *i2c) +static void smbus_device_realize(I2CSlave *i2c, Error **errp) { SMBusDevice *dev =3D SMBUS_DEVICE(i2c); SMBusDeviceClass *sc =3D SMBUS_DEVICE_GET_CLASS(dev); =20 - if (sc->init) { - return sc->init(dev); + if (sc->realize) { + sc->realize(dev, errp); } - - return 0; } =20 /* Master device commands. */ @@ -354,7 +352,7 @@ static void smbus_device_class_init(ObjectClass *klass,= void *data) { I2CSlaveClass *sc =3D I2C_SLAVE_CLASS(klass); =20 - sc->init =3D smbus_device_init; + sc->realize =3D smbus_device_realize; sc->event =3D smbus_i2c_event; sc->recv =3D smbus_i2c_recv; sc->send =3D smbus_i2c_send; diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c index 2340523da0..818b6af585 100644 --- a/hw/input/lm832x.c +++ b/hw/input/lm832x.c @@ -464,7 +464,7 @@ static const VMStateDescription vmstate_lm_kbd =3D { }; =20 =20 -static int lm8323_init(I2CSlave *i2c) +static void lm8323_realize(I2CSlave *i2c, Error **errp) { LM823KbdState *s =3D LM8323(i2c); =20 @@ -477,7 +477,6 @@ static int lm8323_init(I2CSlave *i2c) lm_kbd_reset(s); =20 qemu_register_reset((void *) lm_kbd_reset, s); - return 0; } =20 void lm832x_key_event(DeviceState *dev, int key, int state) @@ -505,7 +504,7 @@ static void lm8323_class_init(ObjectClass *klass, void = *data) DeviceClass *dc =3D DEVICE_CLASS(klass); I2CSlaveClass *k =3D I2C_SLAVE_CLASS(klass); =20 - k->init =3D lm8323_init; + k->realize =3D lm8323_realize; k->event =3D lm_i2c_event; k->recv =3D lm_i2c_rx; k->send =3D lm_i2c_tx; diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c index 04e83787d4..62f4f191e4 100644 --- a/hw/misc/tmp105.c +++ b/hw/misc/tmp105.c @@ -229,15 +229,13 @@ static void tmp105_reset(I2CSlave *i2c) tmp105_interrupt_update(s); } =20 -static int tmp105_init(I2CSlave *i2c) +static void tmp105_realize(I2CSlave *i2c, Error **errp) { TMP105State *s =3D TMP105(i2c); =20 qdev_init_gpio_out(&i2c->qdev, &s->pin, 1); =20 tmp105_reset(&s->i2c); - - return 0; } =20 static void tmp105_initfn(Object *obj) @@ -252,7 +250,7 @@ static void tmp105_class_init(ObjectClass *klass, void = *data) DeviceClass *dc =3D DEVICE_CLASS(klass); I2CSlaveClass *k =3D I2C_SLAVE_CLASS(klass); =20 - k->init =3D tmp105_init; + k->realize =3D tmp105_realize; k->event =3D tmp105_event; k->recv =3D tmp105_rx; k->send =3D tmp105_tx; diff --git a/hw/misc/tmp421.c b/hw/misc/tmp421.c index 4a505abbce..3347a53d7d 100644 --- a/hw/misc/tmp421.c +++ b/hw/misc/tmp421.c @@ -335,13 +335,11 @@ static void tmp421_reset(I2CSlave *i2c) s->status =3D 0; } =20 -static int tmp421_init(I2CSlave *i2c) +static void tmp421_realize(I2CSlave *i2c, Error **errp) { TMP421State *s =3D TMP421(i2c); =20 tmp421_reset(&s->i2c); - - return 0; } =20 static void tmp421_initfn(Object *obj) @@ -366,7 +364,7 @@ static void tmp421_class_init(ObjectClass *klass, void = *data) I2CSlaveClass *k =3D I2C_SLAVE_CLASS(klass); TMP421Class *sc =3D TMP421_CLASS(klass); =20 - k->init =3D tmp421_init; + k->realize =3D tmp421_realize; k->event =3D tmp421_event; k->recv =3D tmp421_rx; k->send =3D tmp421_tx; diff --git a/hw/nvram/eeprom_at24c.c b/hw/nvram/eeprom_at24c.c index efa3621ac6..691cadb4a8 100644 --- a/hw/nvram/eeprom_at24c.c +++ b/hw/nvram/eeprom_at24c.c @@ -117,31 +117,29 @@ int at24c_eeprom_send(I2CSlave *s, uint8_t data) return 0; } =20 -static -int at24c_eeprom_init(I2CSlave *i2c) +static void at24c_eeprom_realize(I2CSlave *slave, Error **errp) { - EEPROMState *ee =3D AT24C_EE(i2c); - - ee->mem =3D g_malloc0(ee->rsize); + EEPROMState *ee =3D AT24C_EE(slave); =20 if (ee->blk) { int64_t len =3D blk_getlength(ee->blk); =20 if (len !=3D ee->rsize) { - ERR(TYPE_AT24C_EE " : Backing file size %lu !=3D %u\n", - (unsigned long)len, (unsigned)ee->rsize); - exit(1); + error_setg(errp, TYPE_AT24C_EE ": Backing file size %ld !=3D %= u", + len, ee->rsize); + return; } =20 if (blk_set_perm(ee->blk, BLK_PERM_CONSISTENT_READ | BLK_PERM_WRIT= E, BLK_PERM_ALL, &error_fatal) < 0) { - ERR(TYPE_AT24C_EE - " : Backing file incorrect permission\n"); - exit(1); + error_setg(errp, TYPE_AT24C_EE + ": Backing file incorrect permission"); + return; } } - return 0; + + ee->mem =3D g_malloc0(ee->rsize); } =20 static @@ -179,7 +177,7 @@ void at24c_eeprom_class_init(ObjectClass *klass, void *= data) DeviceClass *dc =3D DEVICE_CLASS(klass); I2CSlaveClass *k =3D I2C_SLAVE_CLASS(klass); =20 - k->init =3D &at24c_eeprom_init; + k->realize =3D &at24c_eeprom_realize; k->event =3D &at24c_eeprom_event; k->recv =3D &at24c_eeprom_recv; k->send =3D &at24c_eeprom_send; diff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c index eb58c378e0..4f18080c95 100644 --- a/hw/timer/twl92230.c +++ b/hw/timer/twl92230.c @@ -853,10 +853,10 @@ static const VMStateDescription vmstate_menelaus =3D { } }; =20 -static int twl92230_init(I2CSlave *i2c) +static void twl92230_realize(I2CSlave *slave, Error **errp) { - DeviceState *dev =3D DEVICE(i2c); - MenelausState *s =3D TWL92230(i2c); + DeviceState *dev =3D DEVICE(slave); + MenelausState *s =3D TWL92230(slave); =20 s->rtc.hz_tm =3D timer_new_ms(rtc_clock, menelaus_rtc_hz, s); /* Three output pins plus one interrupt pin. */ @@ -865,9 +865,7 @@ static int twl92230_init(I2CSlave *i2c) /* Three input pins plus one power-button pin. */ qdev_init_gpio_in(dev, menelaus_gpio_set, 4); =20 - menelaus_reset(i2c); - - return 0; + menelaus_reset(slave); } =20 static void twl92230_class_init(ObjectClass *klass, void *data) @@ -875,7 +873,7 @@ static void twl92230_class_init(ObjectClass *klass, voi= d *data) DeviceClass *dc =3D DEVICE_CLASS(klass); I2CSlaveClass *sc =3D I2C_SLAVE_CLASS(klass); =20 - sc->init =3D twl92230_init; + sc->realize =3D twl92230_realize; sc->event =3D menelaus_event; sc->recv =3D menelaus_rx; sc->send =3D menelaus_tx; --=20 2.15.1