From nobody Tue Oct 28 04:11:05 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 1515016315244329.06271526711464; Wed, 3 Jan 2018 13:51:55 -0800 (PST) Received: from localhost ([::1]:38412 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqx0-0002AL-C1 for importer@patchew.org; Wed, 03 Jan 2018 16:51:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43974) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqus-0000ig-CH for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:49:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqur-0003sI-6b for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:49:42 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:44421) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqur-0003rp-1m for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:49:41 -0500 Received: by mail-qt0-x241.google.com with SMTP id m59so3854437qte.11 for ; Wed, 03 Jan 2018 13:49:40 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id l80sm1237566qki.96.2018.01.03.13.49.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:49:39 -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=SCK4EXh6glHZ/wpDDFN5ad8VoCu2bGEyTUUgwmgCeHk=; b=J3a9jpdO1nKOGfyFY3t4eihPz0r3U3/1nrP/URl9qOIlY7PYmAWsKZ4FIMOasJMb0s ka6swKX5Bt903Adc4olu/8pT+6g+S7iBoUxXWP1Pbtj/iTP5tBO2Bjh9kd0JZWWKZdE3 QJmvm30nXK0goeJAQ6/34siWi+J+yrjcFx/hAEG4euiVJVRKtDiqyaFgGOe00heMzN0+ iM68DrsZ5dsNzZeaiDrm0vouT4pi8JL0fdsZJPZMhbN2wFYdCs86tXt0w2D4zeCC3QTO vpzfC39Fg2fAQVB4RjHFJ6bIEOf9cBUi6Jp/2U+JfbdVZbdr2+mog/hsOzX0eXLj+ivP 9m7A== 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=SCK4EXh6glHZ/wpDDFN5ad8VoCu2bGEyTUUgwmgCeHk=; b=IZWtz7IPflRLv4T/Fm2pOVfr5imKzlgbVIGNEosxHoVCDh5bvSGeou+sxAqZWDhIhr HisRNIfTyV6OxFiInBpgXRmKQxkCOCpJQJzFzkjFKnlSMqpgIJ1iFjZjyKP2Ve7HQySS YpcnK+dY9Rxf4F1nkdhCOiSzzqkEdltO17n9tZY19KRWIjfTcVrBm+zoL93pmNBjo1s9 mGCVSpTcQrmElpvIr0PmNiD6Dbam49CZjQr/4a9QC/9neOIwmO5bz4Oi8YbQ9j8mgrCZ SLHRrOYsMJL85T6rOBDZrF4DJ0QGD2IoqFSIDGC1VbDSOOcgXYjfzWGkyry8Dk8wxuI+ aGZg== X-Gm-Message-State: AKGB3mKBY36GCpdPVzb3FKmR2beyEpzIQV9ex2qxhUW+euwzs5Zizi86 1mQECSDk02qLynFBY3Cphd4= X-Google-Smtp-Source: ACJfBot/HRqcOlX7DYA+L/aK2p859uLXZaV1pgt93dFalkVWsrfMmnWFR2HTxkCkyzjD3bXT13psPg== X-Received: by 10.200.55.231 with SMTP id e36mr3759120qtc.274.1515016180432; Wed, 03 Jan 2018 13:49:40 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Eric Blake , Paolo Bonzini , Kevin Wolf , Stefan Hajnoczi Date: Wed, 3 Jan 2018 18:49:23 -0300 Message-Id: <20180103214925.16677-3-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103214925.16677-1-f4bug@amsat.org> References: <20180103214925.16677-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::241 Subject: [Qemu-devel] [RFC PATCH v2 2/4] libqos: add a sdbus API 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: "Edgar E . Iglesias" , Thomas Huth , qemu-devel@nongnu.org, Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= 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 --- tests/libqos/sdbus.h | 45 ++++++++++++++++++++++++++++++ tests/libqos/sdbus.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++= ++++ tests/Makefile.include | 1 + 3 files changed, 120 insertions(+) create mode 100644 tests/libqos/sdbus.h create mode 100644 tests/libqos/sdbus.c diff --git a/tests/libqos/sdbus.h b/tests/libqos/sdbus.h new file mode 100644 index 0000000000..2057faf176 --- /dev/null +++ b/tests/libqos/sdbus.h @@ -0,0 +1,45 @@ +/* + * SD/MMC Bus libqos + * + * Copyright (c) 2017 Philippe Mathieu-Daud=C3=A9 + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ +#ifndef LIBQOS_SDBUS_H +#define LIBQOS_SDBUS_H + +enum NCmd { + GO_IDLE_STATE =3D 0, + ALL_SEND_CID =3D 2, + SEND_RELATIVE_ADDR =3D 3, + SELECT_CARD =3D 7, + SEND_IF_COND =3D 8, + SEND_CSD =3D 9, +}; + +enum ACmd { + SEND_STATUS =3D 13, + SEND_OP_COND =3D 41, + SEND_SCR =3D 51, +}; + +typedef struct SDBusAdapter SDBusAdapter; +struct SDBusAdapter { + + ssize_t (*do_command)(SDBusAdapter *adapter, enum NCmd cmd, uint32_t a= rg, + uint8_t **response); + void (*write_byte)(SDBusAdapter *adapter, uint8_t value); + uint8_t (*read_byte)(SDBusAdapter *adapter); +}; + +ssize_t sdbus_do_cmd(SDBusAdapter *adapter, enum NCmd cmd, uint32_t arg, + uint8_t **response); +ssize_t sdbus_do_acmd(SDBusAdapter *adapter, enum ACmd acmd, uint32_t arg, + uint16_t address, uint8_t **response); +void sdbus_write_byte(SDBusAdapter *adapter, uint8_t value); +uint8_t sdbus_read_byte(SDBusAdapter *adapter); + +SDBusAdapter *qmp_sdbus_create(const char *bus_name); + +#endif diff --git a/tests/libqos/sdbus.c b/tests/libqos/sdbus.c new file mode 100644 index 0000000000..15f38c2bb8 --- /dev/null +++ b/tests/libqos/sdbus.c @@ -0,0 +1,74 @@ +/* + * QTest SD/MMC Bus driver + * + * Copyright (c) 2017 Philippe Mathieu-Daud=C3=A9 + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ +#include "qemu/osdep.h" +#include "libqos/sdbus.h" +#include "libqtest.h" +#include "qemu-common.h" + +static bool verbose; +#define DPRINTF(fmt, ...) \ + do { \ + if (verbose) { \ + fprintf(stderr, fmt, ## __VA_ARGS__); \ + } \ + } while (0) + +static ssize_t do_cmd(SDBusAdapter *adapter, enum NCmd cmd, uint32_t arg, + uint8_t **response, bool is_app_cmd) +{ + const char *s_cmd =3D is_app_cmd ? "ACMD" : "CMD"; + ssize_t sz; + + verbose =3D !!getenv("V"); + if (verbose && !is_app_cmd && (cmd =3D=3D 55)) { + verbose =3D false; + } + + DPRINTF("-> %s%02u (0x%08x)\n", s_cmd, cmd, arg); + sz =3D adapter->do_command(adapter, cmd, arg, response); + if (response) { + if (sz < 0) { + DPRINTF("<- %s%02u (len: %ld)\n", s_cmd, cmd, sz); + } else if (verbose) { + char *pfx =3D g_strdup_printf("<- %s%02u (len: %ld)", s_cmd, c= md, sz); + + qemu_hexdump((const char *)*response, stderr, pfx, sz); + g_free(pfx); + } + } else { + DPRINTF("<- %s%02u\n", s_cmd, cmd); + } + + return sz; +} + +ssize_t sdbus_do_cmd(SDBusAdapter *adapter, enum NCmd cmd, uint32_t arg, + uint8_t **response) +{ + return do_cmd(adapter, cmd, arg, response, false); +} + +ssize_t sdbus_do_acmd(SDBusAdapter *adapter, enum ACmd acmd, uint32_t arg, + uint16_t address, uint8_t **response) +{ + do_cmd(adapter, 55, address << 16, NULL, false); + // TODO check rv? + + return do_cmd(adapter, acmd, arg, response, true); +} + +void sdbus_write_byte(SDBusAdapter *adapter, uint8_t value) +{ + adapter->write_byte(adapter, value); +} + +uint8_t sdbus_read_byte(SDBusAdapter *adapter) +{ + return adapter->read_byte(adapter); +} diff --git a/tests/Makefile.include b/tests/Makefile.include index cd18ab4519..c22925d4db 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -715,6 +715,7 @@ tests/test-crypto-block$(EXESUF): tests/test-crypto-blo= ck.o $(test-crypto-obj-y) =20 libqos-obj-y =3D tests/libqos/pci.o tests/libqos/fw_cfg.o tests/libqos/mal= loc.o libqos-obj-y +=3D tests/libqos/i2c.o tests/libqos/libqos.o +libqos-obj-y +=3D tests/libqos/sdbus.o libqos-spapr-obj-y =3D $(libqos-obj-y) tests/libqos/malloc-spapr.o libqos-spapr-obj-y +=3D tests/libqos/libqos-spapr.o libqos-spapr-obj-y +=3D tests/libqos/rtas.o --=20 2.15.1