From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) client-ip=209.85.216.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f195.google.com (mail-qt0-f195.google.com [209.85.216.195]) by mx.zohomail.com with SMTPS id 1518494903573382.36786250164164; Mon, 12 Feb 2018 20:08:23 -0800 (PST) Received: by mail-qt0-f195.google.com with SMTP id u6so2205734qtg.13 for ; Mon, 12 Feb 2018 20:08:23 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08: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=G+Gj0c1bHU3235KQlhOJsjI7crhWaUKbayXI0IA3zKE=; b=NSuoJGEBtFA6bqkyLj83wgt6YahcanX4yUXXcqBrDntVVVnNgMZN4GgpFgkFUNSWYE ndGG2goPH7kXs6oW70rIpGVo51AK6n/zAidC2jpEUvVloxoiYE2PzKo9+Ge4r0t23YgO 7FwoF1I0S2/TJdjyNXQmLX34osjhAXf2BxeOxAbvmdyqRbjTZIiyCu4/vjigRUyb+u9m Z4QwBM3ev3yzgL3zrbAd4kourUfa0YwQ8JSEDUsXucEB6dQDnk+KsVvG4jopx0+tZz0u RqSmGCbXyHqSgJbr5TiCawFW6dq63mjmszGyK5tB6gmotc+7LJ3u+vX5suoXx02mEorL ny9g== 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=G+Gj0c1bHU3235KQlhOJsjI7crhWaUKbayXI0IA3zKE=; b=aDYeRr02y9+J7GdhjmqI1e9/6gNMMw7/pok2z359NqZnQC11gnbB3eh6TSU5vjzxzP x39PJvflXNNypDV8Hc0CXxrqzDfe/amZgPrc90AknrTPOWLAiUTS1uOkW+UjbY2Pkffo iZHKKmt1VaOswpSXKioHbS0X/7RqFSIdppJsNPe543bgKXFCT6nvhs5HLVG313JWJt0t 9nd+B0JOrQxmEHhxPb7f7V12ggDPBO8K4x02npE/HOvI5bs8ueOzD8LPuzBImprplNRD m0fP5DWkMFoQRhZ8DEC5lJ4t4BrsQwV3pwKgvDzRhO3sizxGMS8DzvXFUGoqgE9tODld bBAA== X-Gm-Message-State: APf1xPDcyHvo/AUY3oaq2g9eD7Rhy08Kaz7ihnaqCBdbdHykOVV3CfFg CPrDz7uVIS8MGxo0ZuJW6+I= X-Google-Smtp-Source: AH8x225k3EpvXdpER10MSkXUJ4LHAeZ9I6aSOrZLI+/tgyk0cojcNWo3cCaUeYynn9kl/ggO63agtQ== X-Received: by 10.237.63.28 with SMTP id p28mr20808781qtf.104.1518494902581; Mon, 12 Feb 2018 20:08:22 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 01/30] sdhci: use error_propagate(local_err) in realize() Date: Tue, 13 Feb 2018 01:07:40 -0300 Message-Id: <20180213040809.26021-2-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 avoid the "errp && *errp" pattern (not recommended in "qapi/error.h" commen= ts). Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index ee95e78aeb..3602286f46 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1302,10 +1302,12 @@ static Property sdhci_pci_properties[] =3D { static void sdhci_pci_realize(PCIDevice *dev, Error **errp) { SDHCIState *s =3D PCI_SDHCI(dev); + Error *local_err =3D NULL; =20 sdhci_initfn(s); sdhci_common_realize(s, errp); - if (errp && *errp) { + if (local_err) { + error_propagate(errp, local_err); return; } =20 @@ -1383,9 +1385,11 @@ static void sdhci_sysbus_realize(DeviceState *dev, E= rror ** errp) { SDHCIState *s =3D SYSBUS_SDHCI(dev); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); + Error *local_err =3D NULL; =20 sdhci_common_realize(s, errp); - if (errp && *errp) { + if (local_err) { + error_propagate(errp, local_err); return; } =20 --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.196 as permitted sender) client-ip=209.85.220.196; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f196.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.196 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by mx.zohomail.com with SMTPS id 1518494907189338.93268907641414; Mon, 12 Feb 2018 20:08:27 -0800 (PST) Received: by mail-qk0-f196.google.com with SMTP id h129so1099970qke.8 for ; Mon, 12 Feb 2018 20:08:26 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:25 -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=Z4FASCEUvqUvC0+szYHxgDAw1bVHuiNDfdpt5p/lp3A=; b=LkBSvry9u3bFGrYU2dTTvDJ2uZSM0ZLqKH0i/Dl8HSSiDT7sqcQVHCBA3s6cDNjtRz MWLWl0XJ/RYRFECxvsEqQR+DC1w98FFRJdqeDoHcoCWVcj4mmlOy3E7JZMO5CIrsftSo zncfEoaLhQWB9hX+IKIWKFrUfUxEeGi2n2db4xTgxueDBuYblzIu35FzUClOnUv1FZVc OrQpfvWoiKic9GG1K02PxwW7hR3qDAWzFrIFI291ZhnQKvttLEIWdyiiA2b0CdrEy9AV q4xZUDa9VqXWzoypiPrRhAB2KhOo6liUuXkik2u3YCq1mFOq5eUJ1PgkZVSOjMmoQ1o5 UoSw== 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=Z4FASCEUvqUvC0+szYHxgDAw1bVHuiNDfdpt5p/lp3A=; b=r9KmSYWNa973gBh5qMH0cAaYJNHlLGcQFEQKUG89Uy7RBl0gj1VZVc7jhTROHT6BwW 81hAtoEYvWeA3tphWhBx4hlv3L+eFjkYUpA0Y+DGZ8N7ZhhIbu6wxoknccd9uIJT9k2i Iwo04vFKembSXkdwGZIHz93VtD9K3bYSpmlJBjcKScwh/XqAmjFyntP9XYWF2msi7nRX +oMF2l5qveH3N1R/NWonQYtXm2V8bsnmDbQ3AO9IqDIngISk3czrwVQ6E01bnJfpYnhr GEC06hm1YHH0Bf1FklTAvSxJdzfwuyzn7weJm9aZWpKwN54UX+STQ+XDRzjKwEMQq3lq v9lg== X-Gm-Message-State: APf1xPCxVuFnNwXsGtoZTJHn0xv0okx+KrTvCFyseq1ApnwhPvaQMRUu zLDFA/E3tw8pTI2DhfihC8A= X-Google-Smtp-Source: AH8x2272HTnlkAg+Ll/eLrxA9R2R1azkKm3cq94Ww2KwZIOYpeepLE/qrUzytsX7tNmMJ+kAO2MdtA== X-Received: by 10.55.144.2 with SMTP id s2mr20237685qkd.257.1518494906011; Mon, 12 Feb 2018 20:08:26 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 02/30] sdhci: add qtest to check the SD capabilities register Date: Tue, 13 Feb 2018 01:07:41 -0300 Message-Id: <20180213040809.26021-3-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 The PCI model is tested with the pc/x86_64 machine, the SysBus model with the smdkc210/arm machine. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Paolo Bonzini --- tests/sdhci-test.c | 145 +++++++++++++++++++++++++++++++++++++++++++++= ++++ tests/Makefile.include | 3 + 2 files changed, 148 insertions(+) create mode 100644 tests/sdhci-test.c diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c new file mode 100644 index 0000000000..82f3785a72 --- /dev/null +++ b/tests/sdhci-test.c @@ -0,0 +1,145 @@ +/* + * QTest testcase for SDHCI controllers + * + * Written by 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. + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include "qemu/osdep.h" +#include "hw/registerfields.h" +#include "libqtest.h" +#include "libqos/pci-pc.h" +#include "hw/pci/pci.h" + +#define SDHC_CAPAB 0x40 +#define SDHC_HCVER 0xFE + +static const struct sdhci_t { + const char *arch, *machine; + struct { + uintptr_t addr; + uint8_t version; + uint8_t baseclock; + struct { + bool sdma; + uint64_t reg; + } capab; + } sdhci; + struct { + uint16_t vendor_id, device_id; + } pci; +} models[] =3D { + /* PC via PCI */ + { "x86_64", "pc", + {-1, 2, 0, {1, 0x057834b4} }, + .pci =3D { PCI_VENDOR_ID_REDHAT, PCI_DEVICE_ID_REDHAT_SDHCI } }, + + /* Exynos4210 */ + { "arm", "smdkc210", + {0x12510000, 2, 0, {1, 0x5e80080} } }, +}; + +typedef struct QSDHCI { + struct { + QPCIBus *bus; + QPCIDevice *dev; + } pci; + union { + QPCIBar mem_bar; + uint64_t addr; + }; +} QSDHCI; + +static uint64_t sdhci_readq(QSDHCI *s, uint32_t reg) +{ + uint64_t val; + + if (s->pci.dev) { + qpci_memread(s->pci.dev, s->mem_bar, reg, &val, sizeof(val)); + } else { + val =3D qtest_readq(global_qtest, s->addr + reg); + } + + return val; +} + +/* tests */ + +static void check_capab_capareg(QSDHCI *s, uint64_t expected_capab) +{ + uint64_t capab; + + capab =3D sdhci_readq(s, SDHC_CAPAB); + g_assert_cmphex(capab, =3D=3D, expected_capab); +} + +static QSDHCI *machine_start(const struct sdhci_t *test) +{ + QSDHCI *s =3D g_new0(QSDHCI, 1); + + if (test->pci.vendor_id) { + /* PCI */ + uint16_t vendor_id, device_id; + uint64_t barsize; + + global_qtest =3D qtest_startf("-machine %s -device sdhci-pci", + test->machine); + + s->pci.bus =3D qpci_init_pc(NULL); + + /* Find PCI device and verify it's the right one */ + s->pci.dev =3D qpci_device_find(s->pci.bus, QPCI_DEVFN(4, 0)); + g_assert_nonnull(s->pci.dev); + vendor_id =3D qpci_config_readw(s->pci.dev, PCI_VENDOR_ID); + device_id =3D qpci_config_readw(s->pci.dev, PCI_DEVICE_ID); + g_assert(vendor_id =3D=3D test->pci.vendor_id); + g_assert(device_id =3D=3D test->pci.device_id); + s->mem_bar =3D qpci_iomap(s->pci.dev, 0, &barsize); + qpci_device_enable(s->pci.dev); + } else { + /* SysBus */ + global_qtest =3D qtest_startf("-machine %s", test->machine); + s->addr =3D test->sdhci.addr; + } + + return s; +} + +static void machine_stop(QSDHCI *s) +{ + g_free(s->pci.dev); + qtest_quit(global_qtest); +} + +static void test_machine(const void *data) +{ + const struct sdhci_t *test =3D data; + QSDHCI *s; + + s =3D machine_start(test); + + check_capab_capareg(s, test->sdhci.capab.reg); + + machine_stop(s); +} + +int main(int argc, char *argv[]) +{ + const char *arch =3D qtest_get_arch(); + char *name; + int i; + + g_test_init(&argc, &argv, NULL); + for (i =3D 0; i < ARRAY_SIZE(models); i++) { + if (strcmp(arch, models[i].arch)) { + continue; + } + name =3D g_strdup_printf("sdhci/%s", models[i].machine); + qtest_add_data_func(name, &models[i], test_machine); + g_free(name); + } + + return g_test_run(); +} diff --git a/tests/Makefile.include b/tests/Makefile.include index f41da235ae..52be9b3fa5 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -294,6 +294,7 @@ check-qtest-i386-y +=3D tests/migration-test$(EXESUF) check-qtest-i386-y +=3D tests/test-x86-cpuid-compat$(EXESUF) check-qtest-i386-y +=3D tests/numa-test$(EXESUF) check-qtest-x86_64-y +=3D $(check-qtest-i386-y) +check-qtest-x86_64-y +=3D tests/sdhci-test$(EXESUF) gcov-files-i386-y +=3D i386-softmmu/hw/timer/mc146818rtc.c gcov-files-x86_64-y =3D $(subst i386-softmmu/,x86_64-softmmu/,$(gcov-files= -i386-y)) =20 @@ -367,6 +368,7 @@ gcov-files-arm-y +=3D arm-softmmu/hw/block/virtio-blk.c check-qtest-arm-y +=3D tests/test-arm-mptimer$(EXESUF) gcov-files-arm-y +=3D hw/timer/arm_mptimer.c check-qtest-arm-y +=3D tests/boot-serial-test$(EXESUF) +check-qtest-arm-y +=3D tests/sdhci-test$(EXESUF) =20 check-qtest-aarch64-y =3D tests/numa-test$(EXESUF) =20 @@ -822,6 +824,7 @@ tests/test-arm-mptimer$(EXESUF): tests/test-arm-mptimer= .o tests/test-qapi-util$(EXESUF): tests/test-qapi-util.o $(test-util-obj-y) tests/numa-test$(EXESUF): tests/numa-test.o tests/vmgenid-test$(EXESUF): tests/vmgenid-test.o tests/boot-sector.o test= s/acpi-utils.o +tests/sdhci-test$(EXESUF): tests/sdhci-test.o $(libqos-pc-obj-y) =20 tests/migration/stress$(EXESUF): tests/migration/stress.o $(call quiet-command, $(LINKPROG) -static -O3 $(PTHREAD_LIB) -o $@ $< ,"L= INK","$(TARGET_DIR)$@") --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) client-ip=209.85.220.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f194.google.com (mail-qk0-f194.google.com [209.85.220.194]) by mx.zohomail.com with SMTPS id 1518494910394979.6884683227529; Mon, 12 Feb 2018 20:08:30 -0800 (PST) Received: by mail-qk0-f194.google.com with SMTP id c128so21064343qkb.4 for ; Mon, 12 Feb 2018 20:08:29 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:28 -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=KYxQWY71SW2g4HYPzmz9r9jCN3AyBdWQH802Ccas7e8=; b=qaLLYk2l9b6hDLBYYDmRlfB2X5WY7xita3jp5U2dzG/XONbULZ0uGhKmiK4kKK5XbJ 5GY7MPGx1TsbHZFxKqvIloQsxRb+xf6aRLaR35eqxJn5CktnQWa7nCmGQywR9Jz+GurM 9M81HXaOYtITTEnOCYV//E89p/mXNYT+BYo7cCjvh9j9GBntZw72bjIAJCT3QDeEbZpq SfWZuIHJ76NjKCXuZz5aK+k6fThhzAevg7omNV0uhavgi8LmGJXxzvS9ggHQhMaT5njf jp1ngsB3kdDqGWz8hNYFSc8omoLTC1G1R6HeKa953ACEMjCLR2+Mkjrr5Az/PAtxXiyY TM/A== 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=KYxQWY71SW2g4HYPzmz9r9jCN3AyBdWQH802Ccas7e8=; b=Ts0uVqSERHsSp49CLUOEdsISdf0WEJ4FQgCROHW7yW+F94gD0cYR3r8n9oZWnsHNSN 9aNsj2YT86E/YvLuTtRXbS7ZHK/OGJnvnzXv14qs8Tri9rEzPS741K2Gs9JvIGRdvuWw VKpzAgMyvyLc7orj2p8TpCvd5X8kaZeVWC4utyvYZ6t0Pcrtw1JThJCyyoXK+gqlSf29 JkS4kY6rE5T4PFSY557x81piTB/vhpXIvoAmYeoO2FzmPexkkKHq1nSXTSSt69WSk5WH 776l3tY0HQqqA3KI8jWt2/lfF4AZGIYuu4r/NIHebdf30ahvgrbRU8GMs53sUhrLbTI4 Qz/w== X-Gm-Message-State: APf1xPDqZbiOXwQAAHqHosYoa45wYui0ZQiaV6D6oPY6ce4mvROhF3iB A1fYFDeWI7A4uOebLDgf/vo= X-Google-Smtp-Source: AH8x224mes0xK0dXpe3KGg1dFhLXUVN7jbqbeKdRZM7RwSo4/K7jSh7Gi2N3k1Tj7q7canqJx3IMtg== X-Received: by 10.55.66.77 with SMTP id p74mr20093457qka.205.1518494909211; Mon, 12 Feb 2018 20:08:29 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 03/30] sdhci: add check_capab_readonly() qtest Date: Tue, 13 Feb 2018 01:07:42 -0300 Message-Id: <20180213040809.26021-4-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Stefan Hajnoczi --- tests/sdhci-test.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c index 82f3785a72..51af5eac67 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -65,6 +65,15 @@ static uint64_t sdhci_readq(QSDHCI *s, uint32_t reg) return val; } =20 +static void sdhci_writeq(QSDHCI *s, uint32_t reg, uint64_t val) +{ + if (s->pci.dev) { + qpci_memwrite(s->pci.dev, s->mem_bar, reg, &val, sizeof(val)); + } else { + qtest_writeq(global_qtest, s->addr + reg, val); + } +} + /* tests */ =20 static void check_capab_capareg(QSDHCI *s, uint64_t expected_capab) @@ -75,6 +84,20 @@ static void check_capab_capareg(QSDHCI *s, uint64_t expe= cted_capab) g_assert_cmphex(capab, =3D=3D, expected_capab); } =20 +static void check_capab_readonly(QSDHCI *s) +{ + const uint64_t vrand =3D 0x123456789abcdef; + uint64_t capab0, capab1; + + capab0 =3D sdhci_readq(s, SDHC_CAPAB); + g_assert_cmpuint(capab0, !=3D, vrand); + + sdhci_writeq(s, SDHC_CAPAB, vrand); + capab1 =3D sdhci_readq(s, SDHC_CAPAB); + g_assert_cmpuint(capab1, !=3D, vrand); + g_assert_cmpuint(capab1, =3D=3D, capab0); +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s =3D g_new0(QSDHCI, 1); @@ -121,6 +144,7 @@ static void test_machine(const void *data) s =3D machine_start(test); =20 check_capab_capareg(s, test->sdhci.capab.reg); + check_capab_readonly(s); =20 machine_stop(s); } --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) client-ip=209.85.216.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f195.google.com (mail-qt0-f195.google.com [209.85.216.195]) by mx.zohomail.com with SMTPS id 1518494912765378.8513531442537; Mon, 12 Feb 2018 20:08:32 -0800 (PST) Received: by mail-qt0-f195.google.com with SMTP id d26so2207565qtk.10 for ; Mon, 12 Feb 2018 20:08:32 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:31 -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=SauahonrmTtixgwy8mK3ZO5tl7yNBs9Ewk65/VkyDcA=; b=gVJbmyfCRMJHcsH+beA5WQfGhoVjFJ56lakUNKKlcGu481gaXbfnFAhgwVKlx6lVPs 3sLcmvqPp1ahiI5y0QAhNXuBxSpsUwdYvo0ZkAFrSYRsC20dggcIKhAjg9KJWOD7PA6n 2YDJj4lSEY7Zb/vwDY2H7ovNMcilNu8og6s5P8xYhzDX03hC9MjmebCR0ODl4iYz5MFL OPfMSVENfUiyyPcw5wE2XgaIhthziNicoJAeNR5CPadeorsr33zh5CkltjkK5IXsjAl4 rLwOOD0KCTF2r4R7XE0W816ApvbsVVlkEh+4ianE3XgnZkc/3a/Fwo8d1C1E9zTnM6Nn xhEA== 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=SauahonrmTtixgwy8mK3ZO5tl7yNBs9Ewk65/VkyDcA=; b=SB23Wqsg/EjFIA/6clZyuPJU+zL2+xQjnxVzZaV+71i+yT35CqmyjUs6tMWRORx1Gp BtQHfzIyYkKUGnbFGfVb+ielEe32ddx8DOBUkBLg9x1sojXZEkiwkmb4tzFqOMwSgRzR TGdWgfxKD0UULk53QGZNeVZ3XzutSkhYGVAfhvWi52+qp41ZwfPtzlcTPVHbGFxHsZGD weQaaK60zx9ZkM/ROgYVDO8YB3m0k5Kg31Wwt7odyvdmK2I7ZofJPZlLlWZcbbLX5X5q MJ8i24fSCevmyU61vbUENRcJ/v2CkLs1V882Vv/rZ7WuI5Eqk3yckGw0vEpDzLQwGyML jnIg== X-Gm-Message-State: APf1xPBiwnJA8vbcMHuRVvK4nu7MW6A+sUX4sbX3STPz+ctzcoOoh3WL Yhwco/C+gacNFIiZqCLVFSc= X-Google-Smtp-Source: AH8x227aTlrWy04cqC8uU0E1FBOQE4Ah8NROSgGl0eiqiC3Pii45FY7pmyMYhlVvLYfZzWp4VXse4Q== X-Received: by 10.200.12.138 with SMTP id n10mr21714603qti.186.1518494911928; Mon, 12 Feb 2018 20:08:31 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 04/30] sdhci: add a check_capab_baseclock() qtest Date: Tue, 13 Feb 2018 01:07:43 -0300 Message-Id: <20180213040809.26021-5-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Stefan Hajnoczi --- tests/sdhci-test.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c index 51af5eac67..d6eb3c3a48 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -14,6 +14,7 @@ #include "hw/pci/pci.h" =20 #define SDHC_CAPAB 0x40 +FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); /* since v2 */ #define SDHC_HCVER 0xFE =20 static const struct sdhci_t { @@ -98,6 +99,18 @@ static void check_capab_readonly(QSDHCI *s) g_assert_cmpuint(capab1, =3D=3D, capab0); } =20 +static void check_capab_baseclock(QSDHCI *s, uint8_t expected_freq) +{ + uint64_t capab, capab_freq; + + if (!expected_freq) { + return; + } + capab =3D sdhci_readq(s, SDHC_CAPAB); + capab_freq =3D FIELD_EX64(capab, SDHC_CAPAB, BASECLKFREQ); + g_assert_cmpuint(capab_freq, =3D=3D, expected_freq); +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s =3D g_new0(QSDHCI, 1); @@ -145,6 +158,7 @@ static void test_machine(const void *data) =20 check_capab_capareg(s, test->sdhci.capab.reg); check_capab_readonly(s); + check_capab_baseclock(s, test->sdhci.baseclock); =20 machine_stop(s); } --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.196 as permitted sender) client-ip=209.85.216.196; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f196.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.196 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f196.google.com (mail-qt0-f196.google.com [209.85.216.196]) by mx.zohomail.com with SMTPS id 1518494915709215.01007918369282; Mon, 12 Feb 2018 20:08:35 -0800 (PST) Received: by mail-qt0-f196.google.com with SMTP id f4so2229187qtj.6 for ; Mon, 12 Feb 2018 20:08:35 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:34 -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=1d4J1U5LXDO0yqCTUXqrk9Gir3hMmhvKwibceVNCHEY=; b=YRN0YGKa+xm+VGKt+ZHxXgyN7aAZk6QXaSmhUD7HfztyUs3yEdAehU/0/IC56RA+SZ vY7gxGCifvHJtVYptkcuh3T+z4fGe6TDbnj89nsV87JqKy6EDv5T5ILNkElrmKUyueoj j5OGeRE24A1D37vtXhx9jFiJ1nl4JtopsnKwJYNG/IRm5vUCRMjd3DcaVbpvbOHrgV2v ppB/T74hGs1KsUay3WemUBrBuGkcNFoXQI0zmipgH38wUzBeZQcuEYkdIiDges6oiZb3 1rkrmx3xiuwIr5kBoF4OiEeMWYJek8Y/nh4RKKXcldNoTv0t36ExDGXIOdiNlUE1/PEb wsXA== 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=1d4J1U5LXDO0yqCTUXqrk9Gir3hMmhvKwibceVNCHEY=; b=Ox1I3hIUZVMjnXFV5ZwsdAAdEa/+ggmuKpdQNnGWjZrMP631utFaH2Zr4L7i5T02JE rt+ZNV/xfidNCheEZVh8dUCbgj13T9jZhO39D9TA7l3C+c+qxEcIl4T6WS9OCjJ7XW5v GW3M069ihvOVHjlDk4W1dFFKf7xE5DNrQ5EI11a5OTPNqe1mTbv/7lBPLKmqLuZeGRjU J29WE9147GXdftXjTngDJGnJlX1YOBUA0hCtCEqCA9CXdbCUq0tB/Ab/PWvJUT/wjAH0 hNBiqzPgpduIssiL53phgO7GZlLmlFu0R6F7zqTESuLenWI/3aOGI7QkHdC/xe6arZwe kRrg== X-Gm-Message-State: APf1xPA/9dgX3/mkh275kSfiaD7122wlLimD8yNca1k4kyIVSaSzvpeI C9nzxEW5LVO2yK1rBXXXJeQ= X-Google-Smtp-Source: AH8x224WS7+CYe/WIqW4W8JowU5caiT06yYyAE45u/LqbW1Fbeto/PyneUX8TZzbWnznaLh3hAGUvg== X-Received: by 10.237.45.97 with SMTP id h88mr1731579qtd.284.1518494914726; Mon, 12 Feb 2018 20:08:34 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 05/30] sdhci: add a check_capab_sdma() qtest Date: Tue, 13 Feb 2018 01:07:44 -0300 Message-Id: <20180213040809.26021-6-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Stefan Hajnoczi --- tests/sdhci-test.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c index d6eb3c3a48..7c50c0482b 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -15,6 +15,7 @@ =20 #define SDHC_CAPAB 0x40 FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); /* since v2 */ +FIELD(SDHC_CAPAB, SDMA, 22, 1); #define SDHC_HCVER 0xFE =20 static const struct sdhci_t { @@ -111,6 +112,15 @@ static void check_capab_baseclock(QSDHCI *s, uint8_t e= xpected_freq) g_assert_cmpuint(capab_freq, =3D=3D, expected_freq); } =20 +static void check_capab_sdma(QSDHCI *s, bool supported) +{ + uint64_t capab, capab_sdma; + + capab =3D sdhci_readq(s, SDHC_CAPAB); + capab_sdma =3D FIELD_EX64(capab, SDHC_CAPAB, SDMA); + g_assert_cmpuint(capab_sdma, =3D=3D, supported); +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s =3D g_new0(QSDHCI, 1); @@ -158,6 +168,7 @@ static void test_machine(const void *data) =20 check_capab_capareg(s, test->sdhci.capab.reg); check_capab_readonly(s); + check_capab_sdma(s, test->sdhci.capab.sdma); check_capab_baseclock(s, test->sdhci.baseclock); =20 machine_stop(s); --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.193 as permitted sender) client-ip=209.85.216.193; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f193.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.193 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f193.google.com (mail-qt0-f193.google.com [209.85.216.193]) by mx.zohomail.com with SMTPS id 1518494918572185.56221362237295; Mon, 12 Feb 2018 20:08:38 -0800 (PST) Received: by mail-qt0-f193.google.com with SMTP id c19so2224974qtm.7 for ; Mon, 12 Feb 2018 20:08:38 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:37 -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=9GkCd2o33roPUiEBbNgJarqIeD0fCwOumOTkz9kSBb4=; b=YG24sNyoAcrZTspMb2vJkeRC0AmjD/X4ci+/w0/mfbvbQ4HEvtTNG/Zvu0gFDis474 u7B5qlQ4glFvwtd7JPgszAfl51oLU88KobHULFplsVR6Z48u58v5keb+wxzDZJYvdB3L Gwtdpsp3ItCHvgCYIunYLKnSKjWxiwI8103m0fKa+Ty7ftkBnZUACXNI9VhMtS90ym2L 10kNor/svtQHRZ7YLYv/DEv9zqZjBNMsMacOuGjYWq4D6Potg9mW2XRQS2k/feHqEoH1 li2OC4Qp+wQAr8JaaivdK2Fp33q4HS1ThYepghOVE55LTmmx5UY5CmmbM9j0T4d4+fNM dpvQ== 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=9GkCd2o33roPUiEBbNgJarqIeD0fCwOumOTkz9kSBb4=; b=gNA19m44Tc6/nUKKZu/CcAPTS5OPE7uYlM+Zsi9chIP8TE9LE3g0wWtetxOERi+W0E yQXwgEcUu8OoJZWQ5tm4z0yfkCn3ZJQ06iRavlMF92PAtrdljqL1+mIzc8B2KM4mLmEI No6+6/aqAWiAe/Gf8fSTbhJefb8U90ujXJSlRJQUwdqtcFt+vzau7hveqAf4rza7qH0J xUL0xWHyf76Nd8oMV1PEiGfEwtkBniOZ3u8Z4QkxnwY2oP2ugXBfV2UbA6wUMss9pIcu M+PrFSmVbDz/LZCLrF5W16g7GknD3vzxWj7XazIkAISEotOujLJRtM8SedZqqP51U8J+ VSyA== X-Gm-Message-State: APf1xPAbXw9H+hY899wf1/9ZyYmbSBh+IQTc7s9UlDDiSFAfcUFEW1MC XfDu7A0HREFw/nPYPHUfDEs= X-Google-Smtp-Source: AH8x226SaqJyFsgKj7SCulT6tdc6R6YKb93kMn3OQMQwB3yLmUWZYJ6EE3dGCPrWOo73iNVFPY/+PQ== X-Received: by 10.200.33.195 with SMTP id 3mr21742543qtz.1.1518494917767; Mon, 12 Feb 2018 20:08:37 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 06/30] sdhci: add qtest to check the SD Spec version Date: Tue, 13 Feb 2018 01:07:45 -0300 Message-Id: <20180213040809.26021-7-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Stefan Hajnoczi --- tests/sdhci-test.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c index 7c50c0482b..24feea744a 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -54,6 +54,19 @@ typedef struct QSDHCI { }; } QSDHCI; =20 +static uint32_t sdhci_readl(QSDHCI *s, uint32_t reg) +{ + uint32_t val; + + if (s->pci.dev) { + qpci_memread(s->pci.dev, s->mem_bar, reg, &val, sizeof(val)); + } else { + val =3D qtest_readl(global_qtest, s->addr + reg); + } + + return val; +} + static uint64_t sdhci_readq(QSDHCI *s, uint32_t reg) { uint64_t val; @@ -78,6 +91,16 @@ static void sdhci_writeq(QSDHCI *s, uint32_t reg, uint64= _t val) =20 /* tests */ =20 +static void check_specs_version(QSDHCI *s, uint8_t version) +{ + uint32_t v; + + v =3D sdhci_readl(s, SDHC_HCVER); + v &=3D 0xff; + v +=3D 1; + g_assert_cmpuint(v, =3D=3D, version); +} + static void check_capab_capareg(QSDHCI *s, uint64_t expected_capab) { uint64_t capab; @@ -166,6 +189,7 @@ static void test_machine(const void *data) =20 s =3D machine_start(test); =20 + check_specs_version(s, test->sdhci.version); check_capab_capareg(s, test->sdhci.capab.reg); check_capab_readonly(s); check_capab_sdma(s, test->sdhci.capab.sdma); --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) client-ip=209.85.216.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f195.google.com (mail-qt0-f195.google.com [209.85.216.195]) by mx.zohomail.com with SMTPS id 1518494922071536.9671792769745; Mon, 12 Feb 2018 20:08:42 -0800 (PST) Received: by mail-qt0-f195.google.com with SMTP id f18so2210936qth.11 for ; Mon, 12 Feb 2018 20:08:41 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:40 -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=fIxg5fEdAV5AYm4UaAC8xvRG6zbVJk07FMpliAZ8/n0=; b=tUvCWWADN0Zmy8B+ZQ5K4sdU6Oa5z9tXzOvERdPPNMeWw+0Nj2iegThxS3lHJf8Izp t+kmYhkFRRzrP1ZEeksGDvFnbKQ5YagiaP4QFfq5AQ38jVPhRaCVs1KIngx18SAk8ekY l4/doRnUG2aEAPv9P2q5cB7lmoqD8eo1qDVL90jl6+bowk/JwFb8roCn5ieM3Boykj4M 8MYHcBL76zPYZmzX1VRbbEey0gEV+CKKJ5/9WPDfxy+X8E+YjDhzKR9Y8+Iq99UYDVUj QuAM4ZRP1Y5uVYL96MGCtCYa5XpNqZu2ClzH6Wca2lZaSwUflzUgd9WojWxa3c+gf8rW dcNA== 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=fIxg5fEdAV5AYm4UaAC8xvRG6zbVJk07FMpliAZ8/n0=; b=WD33C4OPl9JUItGMHTNVGLHsY4u1zmUT0fHXAOlAoZ7wMYThbRDDr2E+D62OiIORM7 AFV/awEckjGIWPg6ninwjIeF8iT9zmGDKb61SaPGUADK6s7WchUkS7yncps8/WkIccc2 dVgY+j47Y3/c68A3vZh62i9dO1tOjpHWcUQwRHWh+uILLIJzzBtIZ50dcaPxa6HNVX2k tsjQEtVThzdIvliIU5FMDm7W10p9isN3oj/Sdj7w4LURVkR2rwzvYEvkWS/uDulKefBA DIo9+ef3v19weu+8nHqCORHiHDFC3B8dL146qnmz1j6/p/SXHmgdpk7bRm+PFPRftRd8 QaDQ== X-Gm-Message-State: APf1xPDFlnW1dYiblKbs6cT+fMOSBSTOlLRMwqfBW5lC5hSFGvxEcwxk gUJRmXVKaaahA6tqrk8wBCM= X-Google-Smtp-Source: AH8x226K2H/XWtz+enImnEueBlj9nXINL80jghFlB3T0gUA8o4FpIlOXQ/PwR1B9/Tc7O1D3TLFUng== X-Received: by 10.237.53.195 with SMTP id d3mr2768370qte.276.1518494921056; Mon, 12 Feb 2018 20:08:41 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 07/30] sdhci: add a 'spec_version property' (default to v2) Date: Tue, 13 Feb 2018 01:07:46 -0300 Message-Id: <20180213040809.26021-8-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 4 ++-- include/hw/sd/sdhci.h | 2 ++ hw/sd/sdhci.c | 27 +++++++++++++++++++++++---- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 0991acd724..64556480a9 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -216,9 +216,9 @@ /* Slot interrupt status */ #define SDHC_SLOT_INT_STATUS 0xFC =20 -/* HWInit Host Controller Version Register 0x0401 */ +/* HWInit Host Controller Version Register */ #define SDHC_HCVER 0xFE -#define SD_HOST_SPECv2_VERS 0x2401 +#define SDHC_HCVER_VENDOR 0x24 =20 #define SDHC_REGISTERS_MAP_SIZE 0x100 #define SDHC_INSERTION_DELAY (NANOSECONDS_PER_SECOND) diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index f8d1ba3538..2a26b46f05 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -78,6 +78,7 @@ typedef struct SDHCIState { /* Read-only registers */ uint64_t capareg; /* Capabilities Register */ uint64_t maxcurr; /* Maximum Current Capabilities Register */ + uint16_t version; /* Host Controller Version Register */ =20 uint8_t *fifo_buffer; /* SD host i/o FIFO buffer */ uint32_t buf_maxsz; @@ -93,6 +94,7 @@ typedef struct SDHCIState { /* Configurable properties */ bool pending_insert_quirk; /* Quirk for Raspberry Pi card insert int */ uint32_t quirks; + uint8_t sd_spec_version; } SDHCIState; =20 /* diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 3602286f46..17a1348f0f 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -173,7 +173,8 @@ static void sdhci_reset(SDHCIState *s) =20 timer_del(s->insert_timer); timer_del(s->transfer_timer); - /* Set all registers to 0. Capabilities registers are not cleared + + /* Set all registers to 0. Capabilities/Version registers are not clea= red * and assumed to always preserve their value, given to them during * initialization */ memset(&s->sdmasysad, 0, (uintptr_t)&s->capareg - (uintptr_t)&s->sdmas= ysad); @@ -918,7 +919,7 @@ static uint64_t sdhci_read(void *opaque, hwaddr offset,= unsigned size) ret =3D (uint32_t)(s->admasysaddr >> 32); break; case SDHC_SLOT_INT_STATUS: - ret =3D (SD_HOST_SPECv2_VERS << 16) | sdhci_slotint(s); + ret =3D (s->version << 16) | sdhci_slotint(s); break; default: qemu_log_mask(LOG_UNIMP, "SDHC rd_%ub @0x%02" HWADDR_PRIx " " @@ -1174,11 +1175,22 @@ static inline unsigned int sdhci_get_fifolen(SDHCIS= tate *s) } } =20 +static void sdhci_init_readonly_registers(SDHCIState *s, Error **errp) +{ + if (s->sd_spec_version !=3D 2) { + error_setg(errp, "Only Spec v2 is supported"); + return; + } + s->version =3D (SDHC_HCVER_VENDOR << 8) | (s->sd_spec_version - 1); +} + /* --- qdev common --- */ =20 #define DEFINE_SDHCI_COMMON_PROPERTIES(_state) \ - /* Capabilities registers provide information on supported features - * of this specific host controller implementation */ \ + DEFINE_PROP_UINT8("sd-spec-version", _state, sd_spec_version, 2), \ + \ + /* Capabilities registers provide information on supported + * features of this specific host controller implementation */ \ DEFINE_PROP_UINT64("capareg", _state, capareg, SDHC_CAPAB_REG_DEFAULT)= , \ DEFINE_PROP_UINT64("maxcurr", _state, maxcurr, 0) =20 @@ -1206,6 +1218,13 @@ static void sdhci_uninitfn(SDHCIState *s) =20 static void sdhci_common_realize(SDHCIState *s, Error **errp) { + Error *local_err =3D NULL; + + sdhci_init_readonly_registers(s, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } s->buf_maxsz =3D sdhci_get_fifolen(s); s->fifo_buffer =3D g_malloc0(s->buf_maxsz); =20 --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) client-ip=209.85.216.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f195.google.com (mail-qt0-f195.google.com [209.85.216.195]) by mx.zohomail.com with SMTPS id 1518494924743863.1834223018304; Mon, 12 Feb 2018 20:08:44 -0800 (PST) Received: by mail-qt0-f195.google.com with SMTP id d26so652992qtj.4 for ; Mon, 12 Feb 2018 20:08:44 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:43 -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=XTZmfXOY6fAvPyNEon7H7ucW/EQvs+p2LBUOUBtkWk8=; b=R6qwbtKf63NA+wran+f4fFiC8BlQE0BtGIxZzTm+t3wcBivE+Bk8fFwSU0y91Gu54e iBC7uos3UZ0hNMEsGbDPbhFYSbIMyDtG29eywcHLh3oVIoLCKcGW7ACbqOYeiDMpMYF3 aOssQCiWkcIKRuvkmSiAdRnY6VYddaO3anwzeH2dnNxkAkmgc8GNWKEj48pw84Idbh3n 3TB9VY7kX076IRwxivkDHJubt4nfpq0GgAEQv4uS/Z2cYFews4QljYjs0iDmvmUm0g3F ebGaTlBsyg2lcHtng7FxTnsw92Nj2Tkqlijp+iy9SbHDW46UOfNTsPZ33FsJWnd63FEP xK0g== 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=XTZmfXOY6fAvPyNEon7H7ucW/EQvs+p2LBUOUBtkWk8=; b=MYoXkC81jQJlQCyMZG13+2jsZrn5cPaVwTkQ6M43MojpakYSugiWv58wsNPSNthLdP vk/zBHplMN4YgkXya6LmcSaZeazAusS+Oob9rZxK53QcpFZdCYPzYoBPrGNfxidMgrgG y0gDldRTHmThYt/i+l3wHnQK2HNilMsvao3tVHLCdoNwYT0j4NllX1pKtWwDDeHcXcEB Y56Ta0y3c+u8U8eVE0iyRGNlep/TP8mDbhc3iaKcoh8MG/Gv7axZuCuU4BZq5ZjpD8e9 GERK/WXnr9G6AS+DcKRBYN3vt75lMPJTTxRufB7oWSFqik3MjraubC5EyKqskeJc5/Ss ECeg== X-Gm-Message-State: APf1xPDACg27o4NzYCxXGD/8HMW3+g3XkK/YC3V6QaY5hXcrUy5ShyAe jOL/Ad2iRQS4SOBhfdSpvlM= X-Google-Smtp-Source: AH8x224pjs1ZluYa0/TkPiT5ZVe19ZAKwy9bUEFwpekqvmaiiFpkZrnbmTKWuxddRztOuiu5mzajMg== X-Received: by 10.200.70.10 with SMTP id p10mr21928584qtn.5.1518494923778; Mon, 12 Feb 2018 20:08:43 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 08/30] sdhci: use a numeric value for the default CAPAB register Date: Tue, 13 Feb 2018 01:07:47 -0300 Message-Id: <20180213040809.26021-9-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 using many #defines is not portable when scaling to different HCI. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci.c | 74 +++++++++++++------------------------------------------= ---- 1 file changed, 16 insertions(+), 58 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 17a1348f0f..491e624262 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -38,67 +38,25 @@ #define TYPE_SDHCI_BUS "sdhci-bus" #define SDHCI_BUS(obj) OBJECT_CHECK(SDBus, (obj), TYPE_SDHCI_BUS) =20 +#define MASKED_WRITE(reg, mask, val) (reg =3D (reg & (mask)) | (val)) + /* Default SD/MMC host controller features information, which will be * presented in CAPABILITIES register of generic SD host controller at res= et. - * If not stated otherwise: - * 0 - not supported, 1 - supported, other - prohibited. + * + * support: + * - 3.3v and 1.8v voltages + * - SDMA/ADMA1/ADMA2 + * - high-speed + * max host controller R/W buffers size: 512B + * max clock frequency for SDclock: 52 MHz + * timeout clock frequency: 52 MHz + * + * does not support: + * - 3.0v voltage + * - 64-bit system bus + * - suspend/resume */ -#define SDHC_CAPAB_64BITBUS 0ul /* 64-bit System Bus Support = */ -#define SDHC_CAPAB_18V 1ul /* Voltage support 1.8v */ -#define SDHC_CAPAB_30V 0ul /* Voltage support 3.0v */ -#define SDHC_CAPAB_33V 1ul /* Voltage support 3.3v */ -#define SDHC_CAPAB_SUSPRESUME 0ul /* Suspend/resume support */ -#define SDHC_CAPAB_SDMA 1ul /* SDMA support */ -#define SDHC_CAPAB_HIGHSPEED 1ul /* High speed support */ -#define SDHC_CAPAB_ADMA1 1ul /* ADMA1 support */ -#define SDHC_CAPAB_ADMA2 1ul /* ADMA2 support */ -/* Maximum host controller R/W buffers size - * Possible values: 512, 1024, 2048 bytes */ -#define SDHC_CAPAB_MAXBLOCKLENGTH 512ul -/* Maximum clock frequency for SDclock in MHz - * value in range 10-63 MHz, 0 - not defined */ -#define SDHC_CAPAB_BASECLKFREQ 52ul -#define SDHC_CAPAB_TOUNIT 1ul /* Timeout clock unit 0 - kHz, 1 - = MHz */ -/* Timeout clock frequency 1-63, 0 - not defined */ -#define SDHC_CAPAB_TOCLKFREQ 52ul - -/* Now check all parameters and calculate CAPABILITIES REGISTER value */ -#if SDHC_CAPAB_64BITBUS > 1 || SDHC_CAPAB_18V > 1 || SDHC_CAPAB_30V > 1 ||= \ - SDHC_CAPAB_33V > 1 || SDHC_CAPAB_SUSPRESUME > 1 || SDHC_CAPAB_SDMA > 1= || \ - SDHC_CAPAB_HIGHSPEED > 1 || SDHC_CAPAB_ADMA2 > 1 || SDHC_CAPAB_ADMA1 >= 1 ||\ - SDHC_CAPAB_TOUNIT > 1 -#error Capabilities features can have value 0 or 1 only! -#endif - -#if SDHC_CAPAB_MAXBLOCKLENGTH =3D=3D 512 -#define MAX_BLOCK_LENGTH 0ul -#elif SDHC_CAPAB_MAXBLOCKLENGTH =3D=3D 1024 -#define MAX_BLOCK_LENGTH 1ul -#elif SDHC_CAPAB_MAXBLOCKLENGTH =3D=3D 2048 -#define MAX_BLOCK_LENGTH 2ul -#else -#error Max host controller block size can have value 512, 1024 or 2048 onl= y! -#endif - -#if (SDHC_CAPAB_BASECLKFREQ > 0 && SDHC_CAPAB_BASECLKFREQ < 10) || \ - SDHC_CAPAB_BASECLKFREQ > 63 -#error SDclock frequency can have value in range 0, 10-63 only! -#endif - -#if SDHC_CAPAB_TOCLKFREQ > 63 -#error Timeout clock frequency can have value in range 0-63 only! -#endif - -#define SDHC_CAPAB_REG_DEFAULT \ - ((SDHC_CAPAB_64BITBUS << 28) | (SDHC_CAPAB_18V << 26) | \ - (SDHC_CAPAB_30V << 25) | (SDHC_CAPAB_33V << 24) | \ - (SDHC_CAPAB_SUSPRESUME << 23) | (SDHC_CAPAB_SDMA << 22) | \ - (SDHC_CAPAB_HIGHSPEED << 21) | (SDHC_CAPAB_ADMA1 << 20) | \ - (SDHC_CAPAB_ADMA2 << 19) | (MAX_BLOCK_LENGTH << 16) | \ - (SDHC_CAPAB_BASECLKFREQ << 8) | (SDHC_CAPAB_TOUNIT << 7) | \ - (SDHC_CAPAB_TOCLKFREQ)) - -#define MASKED_WRITE(reg, mask, val) (reg =3D (reg & (mask)) | (val)) +#define SDHC_CAPAB_REG_DEFAULT 0x057834b4 =20 static uint8_t sdhci_slotint(SDHCIState *s) { --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) client-ip=209.85.220.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f194.google.com (mail-qk0-f194.google.com [209.85.220.194]) by mx.zohomail.com with SMTPS id 1518494928000266.1511757704385; Mon, 12 Feb 2018 20:08:48 -0800 (PST) Received: by mail-qk0-f194.google.com with SMTP id i184so9974807qkf.10 for ; Mon, 12 Feb 2018 20:08:47 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:46 -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=bQS09yqaJLhruC8O55IZOMAVRrnrL4iBqnUYFHJyNDo=; b=c7B4YXHoS0puIGLHEUEEDdF5bX/RT7Z+V7DLALMhNBbWcWwK9pYPpe5b/PE8EryY76 GPP68mm7AIuKg2gr4zskqag5fO6Dv9jHVLsCYLT/QLlMcZgEswjwOZI9ASoxgGt3Jhbl rNT7ko+pHS2wrSMVuj25r9zjsC2tZJK6pHFsXA+0RvnNCuQ262LFZ4+s1CJNgBmcFKGG /RF15vPae0EnQrYLbC6NidVaqIItClyKLtkA/WCY3g2fi+MeBHPFzMz/JJDkTnLYPsGw 4CCyGVW+4oKzQb3JPjXdiPC/Jy5lz6SpvTPyICWCk/bE5VqY4rU7mmOcjqQWO7EgC++E quHg== 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=bQS09yqaJLhruC8O55IZOMAVRrnrL4iBqnUYFHJyNDo=; b=t1upH1EcgBxvV9tyMeIhTfQrH7cX0PH8Kg6ZvTm8tT2hRINODE1iIWTVzvWJgRuhlK SdZxl97xEFxLjB9pHLxgv5O49H6jKclhDzCAFg4C/utftSPZD9pQ1ql2+WqXEItgXcHq Hy806mgvhMav52bVTJY1nHW2g3tVrvT6hzmDnx3twMj4lD3+3wt6T178NsJthFjAr2uf Om+9H+Z8e+pXgJJGuFllSbg/q3Hc5t232HsCN3M+woM27ATUdic/24EnuxXRLjYouOcu HdT/8jd/JJ42pbM8zRkwCaaMsZ5PKPhKD41BFxvHv88GTzc5zclpkwI46xjcmpUQaAQr lntw== X-Gm-Message-State: APf1xPCVjNn7aT/xcVFAB6D0p85P5ugZWyUVTO42JWkCG5MDi/0HDmX6 spH4fbdmNJjEhWy4tqQ2u5xqFBhz X-Google-Smtp-Source: AH8x225+zzVbcnAlVa8yiLJfJZh2FSK6RnluE4OZtYqeaEDxjDR+JJ3SzPHNh1qm1NZsvxbIAYFdBg== X-Received: by 10.55.50.141 with SMTP id y135mr20552187qky.165.1518494927163; Mon, 12 Feb 2018 20:08:47 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 09/30] sdhci: simplify sdhci_get_fifolen() Date: Tue, 13 Feb 2018 01:07:48 -0300 Message-Id: <20180213040809.26021-10-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 4 +++- hw/sd/sdhci.c | 20 +++++--------------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 64556480a9..def1c7f7aa 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -24,6 +24,8 @@ #ifndef SDHCI_INTERNAL_H #define SDHCI_INTERNAL_H =20 +#include "hw/registerfields.h" + /* R/W SDMA System Address register 0x0 */ #define SDHC_SYSAD 0x00 =20 @@ -185,7 +187,7 @@ #define SDHC_CAN_DO_ADMA2 0x00080000 #define SDHC_CAN_DO_ADMA1 0x00100000 #define SDHC_64_BIT_BUS_SUPPORT (1 << 28) -#define SDHC_CAPAB_BLOCKSIZE(x) (((x) >> 16) & 0x3) +FIELD(SDHC_CAPAB, MAXBLOCKLENGTH, 16, 2); =20 /* HWInit Maximum Current Capabilities Register 0x0 */ #define SDHC_MAXCURR 0x48 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 491e624262..f22ed9181c 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -58,6 +58,11 @@ */ #define SDHC_CAPAB_REG_DEFAULT 0x057834b4 =20 +static inline unsigned int sdhci_get_fifolen(SDHCIState *s) +{ + return 1 << (9 + FIELD_EX32(s->capareg, SDHC_CAPAB, MAXBLOCKLENGTH)); +} + static uint8_t sdhci_slotint(SDHCIState *s) { return (s->norintsts & s->norintsigen) || (s->errintsts & s->errintsig= en) || @@ -1118,21 +1123,6 @@ static const MemoryRegionOps sdhci_mmio_ops =3D { .endianness =3D DEVICE_LITTLE_ENDIAN, }; =20 -static inline unsigned int sdhci_get_fifolen(SDHCIState *s) -{ - switch (SDHC_CAPAB_BLOCKSIZE(s->capareg)) { - case 0: - return 512; - case 1: - return 1024; - case 2: - return 2048; - default: - hw_error("SDHC: unsupported value for maximum block size\n"); - return 0; - } -} - static void sdhci_init_readonly_registers(SDHCIState *s, Error **errp) { if (s->sd_spec_version !=3D 2) { --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) client-ip=209.85.220.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by mx.zohomail.com with SMTPS id 1518494931504532.6351223997101; Mon, 12 Feb 2018 20:08:51 -0800 (PST) Received: by mail-qk0-f195.google.com with SMTP id o7so6663875qkc.1 for ; Mon, 12 Feb 2018 20:08:51 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:49 -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=rwD4a72iAswsAnE67t4PwqO31gB/G4oTmne7hZBJ1gI=; b=Z6MVvQJD+TFxcv3njSrpZq4aNUJsogrs9OOfX6hFPvYqRkhommoatH5fxPFf+gEOD/ GAxfVluK0IRxwShWmXbeTilmElEyjAHBUoxku9KPVLYKR5N0410IUzyk9C9+h1EqbBvh ZG953dqrIGwC9wUOeGR1lzUKJi8x4wVegMIfZvlLvvXU6wMprjh803c7zDCY1Dwpvo1/ OmP7TudGU7Xps5i/zIy26gDrzxEXJ2FNg2ewFZj/Op0ysoE9itgqk+ZBWdfrs7EJniSl S62shDrLpHnfvZg2Hjd2ePu5zfNpHxVGR/uQOGiTAIsfpzq8av1QyHv6Yvz6MOU1wo9a gpAA== 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=rwD4a72iAswsAnE67t4PwqO31gB/G4oTmne7hZBJ1gI=; b=VFM/jVDq4Ft9mCvKZmG8o5X5aEi7sstQofy66Tk4c+puguKVZlm7daYE1w/t/XRndj 18AX2rxA5RfsiCwmlrzWCIP9/HhYCo0Ci+yEni4hFhGQbGwTYUemruIEUKQZwlCn65RA B/4fSBATzPVVWSyhRTah5KZSHxF//woHsN86XLLLAOZ4Z+VOLle3/wB1XZx16c5LmpSA OT+u+jaDlLqGy7lcCJckEt4tQNkDL24Ha8SFIcEKHrr3VN55Y8XKKnw6I+CI7DIBVQ7o cbY2ZTCq2e/qv36e24u+cWSvS6yVvAN4VH9iJabThAYLyNTeLPxXL2miolGmQuw6kbqk 8M5Q== X-Gm-Message-State: APf1xPBZ0nyXq7f9EWRmOVua78bPaq9GIURz8lpE6Ymw+LDVTeNFrY03 FFswkOnskURKPMgUlIA6eSM= X-Google-Smtp-Source: AH8x226ZRoAPXyolXl4PBKroZvnSmSVppYndpKcNrMNZ90gM/QHZTAl5EmIB4cgJbW8jNaqJG44HAg== X-Received: by 10.55.104.142 with SMTP id d136mr20762086qkc.306.1518494930288; Mon, 12 Feb 2018 20:08:50 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 10/30] sdhci: check the Spec v1 capabilities correctness Date: Tue, 13 Feb 2018 01:07:49 -0300 Message-Id: <20180213040809.26021-11-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Incorrect value will throw an error. Note than Spec v2 is supported by default. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 22 ++++++++++- hw/sd/sdhci.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++= +++- hw/sd/trace-events | 1 + 3 files changed, 118 insertions(+), 4 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index def1c7f7aa..96d7f4dde7 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -86,7 +86,9 @@ =20 /* R/W Host control Register 0x0 */ #define SDHC_HOSTCTL 0x28 -#define SDHC_CTRL_LED 0x01 +FIELD(SDHC_HOSTCTL, LED_CTRL, 0, 1); +FIELD(SDHC_HOSTCTL, DATATRANSFERWIDTH, 1, 1); /* SD mode only */ +FIELD(SDHC_HOSTCTL, HIGH_SPEED, 2, 1); #define SDHC_CTRL_DMA_CHECK_MASK 0x18 #define SDHC_CTRL_SDMA 0x00 #define SDHC_CTRL_ADMA1_32 0x08 @@ -102,6 +104,7 @@ /* R/W Power Control Register 0x0 */ #define SDHC_PWRCON 0x29 #define SDHC_POWER_ON (1 << 0) +FIELD(SDHC_PWRCON, BUS_VOLTAGE, 1, 3); =20 /* R/W Block Gap Control Register 0x0 */ #define SDHC_BLKGAP 0x2A @@ -124,6 +127,7 @@ =20 /* R/W Timeout Control Register 0x0 */ #define SDHC_TIMEOUTCON 0x2E +FIELD(SDHC_TIMEOUTCON, COUNTER, 0, 4); =20 /* R/W Software Reset Register 0x0 */ #define SDHC_SWRST 0x2F @@ -180,17 +184,31 @@ =20 /* ROC Auto CMD12 error status register 0x0 */ #define SDHC_ACMD12ERRSTS 0x3C +FIELD(SDHC_ACMD12ERRSTS, TIMEOUT_ERR, 1, 1); +FIELD(SDHC_ACMD12ERRSTS, CRC_ERR, 2, 1); +FIELD(SDHC_ACMD12ERRSTS, INDEX_ERR, 4, 1); =20 /* HWInit Capabilities Register 0x05E80080 */ #define SDHC_CAPAB 0x40 -#define SDHC_CAN_DO_DMA 0x00400000 #define SDHC_CAN_DO_ADMA2 0x00080000 #define SDHC_CAN_DO_ADMA1 0x00100000 #define SDHC_64_BIT_BUS_SUPPORT (1 << 28) +FIELD(SDHC_CAPAB, TOCLKFREQ, 0, 6); +FIELD(SDHC_CAPAB, TOUNIT, 7, 1); +FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); FIELD(SDHC_CAPAB, MAXBLOCKLENGTH, 16, 2); +FIELD(SDHC_CAPAB, HIGHSPEED, 21, 1); +FIELD(SDHC_CAPAB, SDMA, 22, 1); +FIELD(SDHC_CAPAB, SUSPRESUME, 23, 1); +FIELD(SDHC_CAPAB, V33, 24, 1); +FIELD(SDHC_CAPAB, V30, 25, 1); +FIELD(SDHC_CAPAB, V18, 26, 1); =20 /* HWInit Maximum Current Capabilities Register 0x0 */ #define SDHC_MAXCURR 0x48 +FIELD(SDHC_MAXCURR, V33_VDD1, 0, 8); +FIELD(SDHC_MAXCURR, V30_VDD1, 8, 8); +FIELD(SDHC_MAXCURR, V18_VDD1, 16, 8); =20 /* W Force Event Auto CMD12 Error Interrupt Register 0x0000 */ #define SDHC_FEAER 0x50 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index f22ed9181c..bd3581502a 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -23,6 +23,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/error-report.h" #include "qapi/error.h" #include "hw/hw.h" #include "sysemu/block-backend.h" @@ -63,6 +64,92 @@ static inline unsigned int sdhci_get_fifolen(SDHCIState = *s) return 1 << (9 + FIELD_EX32(s->capareg, SDHC_CAPAB, MAXBLOCKLENGTH)); } =20 +/* return true on error */ +static bool sdhci_check_capab_freq_range(SDHCIState *s, const char *desc, + uint8_t freq, Error **errp) +{ + switch (freq) { + case 0: + case 10 ... 63: + break; + default: + error_setg(errp, "SD %s clock frequency can have value" + "in range 0-63 only", desc); + return true; + } + return false; +} + +static void sdhci_check_capareg(SDHCIState *s, Error **errp) +{ + uint64_t msk =3D s->capareg; + uint32_t val; + bool unit_mhz; + + switch (s->sd_spec_version) { + case 2: /* default version */ + + /* fallback */ + case 1: + unit_mhz =3D FIELD_EX64(s->capareg, SDHC_CAPAB, TOUNIT); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, TOUNIT, 0); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, TOCLKFREQ); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, TOCLKFREQ, 0); + trace_sdhci_capareg(unit_mhz ? "timeout (MHz)" : "timeout (KHz)", = val); + if (sdhci_check_capab_freq_range(s, "timeout", val, errp)) { + return; + } + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, BASECLKFREQ); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, BASECLKFREQ, 0); + trace_sdhci_capareg(unit_mhz ? "base (MHz)" : "Base (KHz)", val); + if (sdhci_check_capab_freq_range(s, "base", val, errp)) { + return; + } + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, MAXBLOCKLENGTH); + if (val >=3D 0b11) { + error_setg(errp, "block size can be 512, 1024 or 2048 only"); + return; + } + msk =3D FIELD_DP64(msk, SDHC_CAPAB, MAXBLOCKLENGTH, 0); + trace_sdhci_capareg("max block length", sdhci_get_fifolen(s)); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, HIGHSPEED); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, HIGHSPEED, 0); + trace_sdhci_capareg("high speed", val); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, SDMA); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, SDMA, 0); + trace_sdhci_capareg("SDMA", val); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, SUSPRESUME); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, SUSPRESUME, 0); + trace_sdhci_capareg("suspend/resume", val); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, V33); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, V33, 0); + trace_sdhci_capareg("3.3v", val); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, V30); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, V30, 0); + trace_sdhci_capareg("3.0v", val); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, V18); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, V18, 0); + trace_sdhci_capareg("1.8v", val); + break; + + default: + error_setg(errp, "Unsupported spec version: %u", s->sd_spec_versio= n); + } + if (msk) { + qemu_log_mask(LOG_UNIMP, + "SDHCI: unknown CAPAB mask: 0x%016" PRIx64 "\n", msk= ); + } +} + static uint8_t sdhci_slotint(SDHCIState *s) { return (s->norintsts & s->norintsigen) || (s->errintsts & s->errintsig= en) || @@ -990,7 +1077,7 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val,= unsigned size) case SDHC_TRNMOD: /* DMA can be enabled only if it is supported as indicated by * capabilities register */ - if (!(s->capareg & SDHC_CAN_DO_DMA)) { + if (!(s->capareg & R_SDHC_CAPAB_SDMA_MASK)) { value &=3D ~SDHC_TRNS_DMA; } MASKED_WRITE(s->trnmod, mask, value & SDHC_TRNMOD_MASK); @@ -1125,11 +1212,19 @@ static const MemoryRegionOps sdhci_mmio_ops =3D { =20 static void sdhci_init_readonly_registers(SDHCIState *s, Error **errp) { + Error *local_err =3D NULL; + if (s->sd_spec_version !=3D 2) { error_setg(errp, "Only Spec v2 is supported"); return; } s->version =3D (SDHC_HCVER_VENDOR << 8) | (s->sd_spec_version - 1); + + sdhci_check_capareg(s, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } } =20 /* --- qdev common --- */ @@ -1537,7 +1632,7 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t val= , unsigned size) /* * First, save bits 7 6 and 0 since they are identical */ - hostctl =3D value & (SDHC_CTRL_LED | + hostctl =3D value & (R_SDHC_HOSTCTL_LED_CTRL_MASK | SDHC_CTRL_CDTEST_INS | SDHC_CTRL_CDTEST_EN); /* diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 0a121156a3..78d8707669 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -13,6 +13,7 @@ sdhci_adma_transfer_completed(void) "" sdhci_access(const char *access, unsigned int size, uint64_t offset, const= char *dir, uint64_t val, uint64_t val2) "%s%u: addr[0x%04" PRIx64 "] %s 0x= %08" PRIx64 " (%" PRIu64 ")" sdhci_read_dataport(uint16_t data_count) "all %u bytes of data have been r= ead from input buffer" sdhci_write_dataport(uint16_t data_count) "write buffer filled with %u byt= es of data" +sdhci_capareg(const char *desc, uint16_t val) "%s: %u" =20 # hw/sd/milkymist-memcard.c milkymist_memcard_memory_read(uint32_t addr, uint32_t value) "addr 0x%08x = value 0x%08x" --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) client-ip=209.85.220.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f194.google.com (mail-qk0-f194.google.com [209.85.220.194]) by mx.zohomail.com with SMTPS id 1518494934439363.620035026559; Mon, 12 Feb 2018 20:08:54 -0800 (PST) Received: by mail-qk0-f194.google.com with SMTP id e20so21079014qkm.7 for ; Mon, 12 Feb 2018 20:08:54 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:53 -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=pzJhd2r2HE4Yduw9a0QOFDyrtDrZfAe6iRmrCXDDKkk=; b=V9fRqKeWRpdrKo5QJEsnDQ8R87UDbIFdFkQ1CNlaKgnQ2Gpvd97p4vu6114fszKrv8 hXn3Qro5nRD1s1N0G0OY3tOJKpm0zg/P6CIU8c4mii44C7kKsCf50bX26XHQLoNL99QS A9MsCegP0cscMS0kAZ2L8fsg4bVQdNHEBcyhrd/vDbLvuCGoBEDyl3s12UA5CfF851Rm PvEnch4e//LAaleM/8BTHNFhO+zZMMV9Z4ywl/tr/VAMgGwpLvmkxeLfItwP3byUy4+J 33WM9agj4OOS9O6Ed+X5YCtNkJzfxJFKGWnDF8YbzFPIl18GZjI8ZBE+fPlY9gC/4AKx O63w== 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=pzJhd2r2HE4Yduw9a0QOFDyrtDrZfAe6iRmrCXDDKkk=; b=FPmP3YkkLBbBLy2OTJez6Atag+wYxNPwBaPIJdVKT5M0HMlo4jnoqQS12jGJDb3Ueq DdHsRkV2YQf3B/CzXpJsKgbtyKfAWOHVa3SmOvFL+tMe87/fp48aiEc+cV99zEcQ+UKq DocFDHhii0SltdufbPnnc34r4vUsSGUiXoTrZTm1sCU/CvqM9HqHIs8sGPTojliMSp5j EBbhow+UBrAi6T/srKbRTNBVfKvHvlqET1XjNeXXRgQvpT3NB8hn6VyetvPdcdH/eCD6 jCy0Dq5S2X76kLHjszYo1PNihywa+gKm0aAKPb3vrZGj+ZYJr6gebqbbkFCdJtecNoIc ApsA== X-Gm-Message-State: APf1xPCue9yILQd5L6YwBGAypoupW1WJwoE9zHXOXd8PIZfwNK44oKTT bVj3PA0HW6M5cke9Agg7Yjw= X-Google-Smtp-Source: AH8x224/RCFamKRnF2OdC8PmsQW64+W+jtvYA38SEhdHfKkSaKiwzImE8SF+t+9zh6V8/4r2aZrkhQ== X-Received: by 10.55.77.80 with SMTP id a77mr19964574qkb.239.1518494933606; Mon, 12 Feb 2018 20:08:53 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 11/30] sdhci: replace DMA magic value by BLOCK_SIZE_MASK Date: Tue, 13 Feb 2018 01:07:50 -0300 Message-Id: <20180213040809.26021-12-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index bd3581502a..650265a472 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -34,6 +34,7 @@ #include "hw/sd/sdhci.h" #include "sdhci-internal.h" #include "qemu/log.h" +#include "qemu/cutils.h" #include "trace.h" =20 #define TYPE_SDHCI_BUS "sdhci-bus" @@ -343,6 +344,7 @@ static void sdhci_end_transfer(SDHCIState *s) /* * Programmed i/o data transfer */ +#define BLOCK_SIZE_MASK (4 * K_BYTE - 1) =20 /* Fill host controller's read buffer with BLKSIZE bytes of data from card= */ static void sdhci_read_block_from_card(SDHCIState *s) @@ -354,7 +356,7 @@ static void sdhci_read_block_from_card(SDHCIState *s) return; } =20 - for (index =3D 0; index < (s->blksize & 0x0fff); index++) { + for (index =3D 0; index < (s->blksize & BLOCK_SIZE_MASK); index++) { s->fifo_buffer[index] =3D sdbus_read_data(&s->sdbus); } =20 @@ -399,7 +401,7 @@ static uint32_t sdhci_read_dataport(SDHCIState *s, unsi= gned size) value |=3D s->fifo_buffer[s->data_count] << i * 8; s->data_count++; /* check if we've read all valid data (blksize bytes) from buffer = */ - if ((s->data_count) >=3D (s->blksize & 0x0fff)) { + if ((s->data_count) >=3D (s->blksize & BLOCK_SIZE_MASK)) { trace_sdhci_read_dataport(s->data_count); s->prnsts &=3D ~SDHC_DATA_AVAILABLE; /* no more data in a buff= er */ s->data_count =3D 0; /* next buff read must start at position= [0] */ @@ -446,7 +448,7 @@ static void sdhci_write_block_to_card(SDHCIState *s) } } =20 - for (index =3D 0; index < (s->blksize & 0x0fff); index++) { + for (index =3D 0; index < (s->blksize & BLOCK_SIZE_MASK); index++) { sdbus_write_data(&s->sdbus, s->fifo_buffer[index]); } =20 @@ -491,7 +493,7 @@ static void sdhci_write_dataport(SDHCIState *s, uint32_= t value, unsigned size) s->fifo_buffer[s->data_count] =3D value & 0xFF; s->data_count++; value >>=3D 8; - if (s->data_count >=3D (s->blksize & 0x0fff)) { + if (s->data_count >=3D (s->blksize & BLOCK_SIZE_MASK)) { trace_sdhci_write_dataport(s->data_count); s->data_count =3D 0; s->prnsts &=3D ~SDHC_SPACE_AVAILABLE; @@ -511,8 +513,8 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIState= *s) { bool page_aligned =3D false; unsigned int n, begin; - const uint16_t block_size =3D s->blksize & 0x0fff; - uint32_t boundary_chk =3D 1 << (((s->blksize & 0xf000) >> 12) + 12); + const uint16_t block_size =3D s->blksize & BLOCK_SIZE_MASK; + uint32_t boundary_chk =3D 1 << (((s->blksize & ~BLOCK_SIZE_MASK) >> 12= ) + 12); uint32_t boundary_count =3D boundary_chk - (s->sdmasysad % boundary_ch= k); =20 if (!(s->trnmod & SDHC_TRNS_BLK_CNT_EN) || !s->blkcnt) { @@ -601,7 +603,7 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIState= *s) static void sdhci_sdma_transfer_single_block(SDHCIState *s) { int n; - uint32_t datacnt =3D s->blksize & 0x0fff; + uint32_t datacnt =3D s->blksize & BLOCK_SIZE_MASK; =20 if (s->trnmod & SDHC_TRNS_READ) { for (n =3D 0; n < datacnt; n++) { @@ -677,7 +679,7 @@ static void get_adma_description(SDHCIState *s, ADMADes= cr *dscr) static void sdhci_do_adma(SDHCIState *s) { unsigned int n, begin, length; - const uint16_t block_size =3D s->blksize & 0x0fff; + const uint16_t block_size =3D s->blksize & BLOCK_SIZE_MASK; ADMADescr dscr =3D {}; int i; =20 --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) client-ip=209.85.220.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by mx.zohomail.com with SMTPS id 1518494937434808.0150561204465; Mon, 12 Feb 2018 20:08:57 -0800 (PST) Received: by mail-qk0-f195.google.com with SMTP id g2so30099qkd.12 for ; Mon, 12 Feb 2018 20:08:57 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:56 -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; bh=F3DsUrUkNz1+Uljbpcv+JWr3tF9Rh1qgAvwGmJqEQRU=; b=PNYGDj9qlQ/go2Khc7ShJFUaA/xZJTroXr0RymehnFpSnsyhCOoa5DyJ7SdRcrriFC p/zObi9h3piC6yS4VVn5fF6uu1uQisL6LF87wbeDYdPnX4Ep3NmRy0H72QuxOhrLuo8g q1xdaqSliALZVxm6KyLwU+NaZbQeG6aUkeWLoe/1qlzhf9Ac4j9f05F5JaGmjT13xRKr 7Dz/PK04pgYpYOWkdrG2BZL4NyVghrhwGa05il461pGBfx5TDss/rXbGqeD4nR7QfUlN lw6Cy/j1Mrj4n6IpIXhIAVmfhjJXCgRDk5n66zw0Y5HL7wlgkyIsd+Pmg+nnDZDacmNW beYg== 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; bh=F3DsUrUkNz1+Uljbpcv+JWr3tF9Rh1qgAvwGmJqEQRU=; b=PN4lqG9Dg/vf9iXZaDsyy72wrtwe8S86ZALxXig40sW6y7lp4zzoJbM2m/tHCqBjP8 JlMT+7skGtGHPfQy6b5lwaSdf/H6RpeiMN33Lf249p89Z+HMP0saWqTScprWmXwWQUoU A7QQRuGsJiVD5dgQszeCgpNsis7e5Xp1T5Hw61LxlvrvEoKF7iqwwdUgbXKMsVoOrQWg WPdqeW+pdrTqWcFFTATsJ21L/CyXkS5pt9IJymhnoEMYSKiNmdCSmy1eXKNYoKraTN1w /OE4tfy+yxfQ3UVxtP8z9HFOZT4+L9bGW6piy3fa6xgkmp8j8hKZmGWUtdH14kRQ/zd2 ONvA== X-Gm-Message-State: APf1xPBMltcp2TaLCoeEU/BurRBPiYZSaL6BLlMuGbIJXdrjo8EmtFtV dnZpKAMcXZeqANMW23sxNBy0vFnF X-Google-Smtp-Source: AH8x227M4uxiyUGuvzg3k+9mj8yo1zhRisUkuTiuNcrWApX1HOGuzdmiXtnowUIrHuuNoDffpREB9Q== X-Received: by 10.55.21.158 with SMTP id 30mr11370470qkv.1.1518494936605; Mon, 12 Feb 2018 20:08:56 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: Sai Pavan Boddu , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 12/30] sdhci: Fix 64-bit ADMA2 Date: Tue, 13 Feb 2018 01:07:51 -0300 Message-Id: <20180213040809.26021-13-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sai Pavan Boddu The 64-bit ADMA address is not converted to the cpu endianes correctly. This patch fixes the issue and uses a valid mask for the attribute data. Signed-off-by: Sai Pavan Boddu [AF: Re-write commit message] Reviewed-by: Alistair Francis --- hw/sd/sdhci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 650265a472..4bd35078a9 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -667,8 +667,8 @@ static void get_adma_description(SDHCIState *s, ADMADes= cr *dscr) dscr->length =3D le16_to_cpu(dscr->length); dma_memory_read(s->dma_as, entry_addr + 4, (uint8_t *)(&dscr->addr), 8); - dscr->attr =3D le64_to_cpu(dscr->attr); - dscr->attr &=3D 0xfffffff8; + dscr->addr =3D le64_to_cpu(dscr->addr); + dscr->attr &=3D (uint8_t) ~0xC0; dscr->incr =3D 12; break; } --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.194 as permitted sender) client-ip=209.85.216.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f194.google.com (mail-qt0-f194.google.com [209.85.216.194]) by mx.zohomail.com with SMTPS id 1518494940860251.6986494817188; Mon, 12 Feb 2018 20:09:00 -0800 (PST) Received: by mail-qt0-f194.google.com with SMTP id a9so2220279qtj.8 for ; Mon, 12 Feb 2018 20:09:00 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.08.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:08:59 -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=J76b+MGbBUUp9nyBMcRYEZ+lyfM30pI/jS3VFo/GVV4=; b=NdlTkLUnt1C2liFuo5pi2xM+q/RxXvKbfzW2yqp8ZiNQu8+aBJflXNZORpAnb2KiES TJIlSliWfk7S4+StQGQCCCqwOHyZraMxBHs775axKUWcOwvVyQrNWs/IoGEQu7rxBhuw qH/R17ho+D42RrUQMREDOUGu93xljSZ/8L0NbWY+8abYkFDFEsYS1KFP2qHBuDLjBU+l VfYaJ4sW3dScpY24x2gRxb4UqOJl4anZ3WB8PyQuZj9RgwK0FdhkOamXtr97hn6k6GUD X5hLNsZD1mOYJd/L/0XBJTb7WizCu1HI3YxeswlaSALcoBU42U97NKzM+9kA5yPgthLz dB0w== 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=J76b+MGbBUUp9nyBMcRYEZ+lyfM30pI/jS3VFo/GVV4=; b=ZNv0C6rNnAZSGZQxQYWs5EfM3ZYu0JLM7jDUK8JFY0CJ9CNM8vUeQjNJ+0PcmHBh1a VPlv+nYRuAoIW3bIpYVepL5EaldshZ0mm2tGBoUTDmIsWBJnZxrupcstpX79z8Un5laK +OdrHDmc6Q//nZiTDZw0GhezGDam4xsazAB/nmunXaFxA7OexTjviJJaEDYBQ7g04Tzi MaSkrMFzNb68AMiu2ZUrVp4kHc5MHjEfMXfal2tPMF+zXS9xZNWcQWrM6U5KUAq/nADc cou19AEFtp7Zq4oV8rSxDNsqKaGYUfNiiPGHG1jkVOFedCEk2zddbJaAwvGc4L8YDacm 6d8Q== X-Gm-Message-State: APf1xPBtY/I4eZXcILnJL5adD2BN76ewL3q/NrzlcMUMf1bSP10U/rkp XMhAv86oLWyqwffzzRvx+bQ= X-Google-Smtp-Source: AH8x226SogdC/ea+G6zc85uMbBdhGnyIqsGR9KXJdMbfdNuqtNmsTOgUrbR+Lsl3pa+8pptljWGl1Q== X-Received: by 10.200.81.83 with SMTP id h19mr21438007qtn.63.1518494939925; Mon, 12 Feb 2018 20:08:59 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 13/30] sdhci: check Spec v2 capabilities (DMA and 64-bit bus) Date: Tue, 13 Feb 2018 01:07:52 -0300 Message-Id: <20180213040809.26021-14-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Incorrect value will throw an error. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 14 +++++++------- hw/sd/sdhci.c | 19 +++++++++++++++---- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 96d7f4dde7..fe68b21e92 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -89,12 +89,12 @@ FIELD(SDHC_HOSTCTL, LED_CTRL, 0, 1); FIELD(SDHC_HOSTCTL, DATATRANSFERWIDTH, 1, 1); /* SD mode only */ FIELD(SDHC_HOSTCTL, HIGH_SPEED, 2, 1); -#define SDHC_CTRL_DMA_CHECK_MASK 0x18 +FIELD(SDHC_HOSTCTL, DMA, 3, 2); #define SDHC_CTRL_SDMA 0x00 -#define SDHC_CTRL_ADMA1_32 0x08 +#define SDHC_CTRL_ADMA1_32 0x08 /* NOT ALLOWED since v2 */ #define SDHC_CTRL_ADMA2_32 0x10 -#define SDHC_CTRL_ADMA2_64 0x18 -#define SDHC_DMA_TYPE(x) ((x) & SDHC_CTRL_DMA_CHECK_MASK) +#define SDHC_CTRL_ADMA2_64 0x18 /* only v1 & v2 (v3 optional) = */ +#define SDHC_DMA_TYPE(x) ((x) & R_SDHC_HOSTCTL_DMA_MASK) #define SDHC_CTRL_4BITBUS 0x02 #define SDHC_CTRL_8BITBUS 0x20 #define SDHC_CTRL_CDTEST_INS 0x40 @@ -190,19 +190,19 @@ FIELD(SDHC_ACMD12ERRSTS, INDEX_ERR, 4, 1); =20 /* HWInit Capabilities Register 0x05E80080 */ #define SDHC_CAPAB 0x40 -#define SDHC_CAN_DO_ADMA2 0x00080000 -#define SDHC_CAN_DO_ADMA1 0x00100000 -#define SDHC_64_BIT_BUS_SUPPORT (1 << 28) FIELD(SDHC_CAPAB, TOCLKFREQ, 0, 6); FIELD(SDHC_CAPAB, TOUNIT, 7, 1); FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); FIELD(SDHC_CAPAB, MAXBLOCKLENGTH, 16, 2); +FIELD(SDHC_CAPAB, ADMA2, 19, 1); /* since v2 */ +FIELD(SDHC_CAPAB, ADMA1, 20, 1); /* v1 only? */ FIELD(SDHC_CAPAB, HIGHSPEED, 21, 1); FIELD(SDHC_CAPAB, SDMA, 22, 1); FIELD(SDHC_CAPAB, SUSPRESUME, 23, 1); FIELD(SDHC_CAPAB, V33, 24, 1); FIELD(SDHC_CAPAB, V30, 25, 1); FIELD(SDHC_CAPAB, V18, 26, 1); +FIELD(SDHC_CAPAB, BUS64BIT, 28, 1); /* since v2 */ =20 /* HWInit Maximum Current Capabilities Register 0x0 */ #define SDHC_MAXCURR 0x48 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 4bd35078a9..a0775e266a 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -89,6 +89,17 @@ static void sdhci_check_capareg(SDHCIState *s, Error **e= rrp) =20 switch (s->sd_spec_version) { case 2: /* default version */ + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, ADMA2); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, ADMA2, 0); + trace_sdhci_capareg("ADMA2", val); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, ADMA1); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, ADMA1, 0); + trace_sdhci_capareg("ADMA1", val); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, BUS64BIT); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, BUS64BIT, 0); + trace_sdhci_capareg("64-bit system bus", val); =20 /* fallback */ case 1: @@ -832,7 +843,7 @@ static void sdhci_data_transfer(void *opaque) =20 break; case SDHC_CTRL_ADMA1_32: - if (!(s->capareg & SDHC_CAN_DO_ADMA1)) { + if (!(s->capareg & R_SDHC_CAPAB_ADMA1_MASK)) { trace_sdhci_error("ADMA1 not supported"); break; } @@ -840,7 +851,7 @@ static void sdhci_data_transfer(void *opaque) sdhci_do_adma(s); break; case SDHC_CTRL_ADMA2_32: - if (!(s->capareg & SDHC_CAN_DO_ADMA2)) { + if (!(s->capareg & R_SDHC_CAPAB_ADMA2_MASK)) { trace_sdhci_error("ADMA2 not supported"); break; } @@ -848,8 +859,8 @@ static void sdhci_data_transfer(void *opaque) sdhci_do_adma(s); break; case SDHC_CTRL_ADMA2_64: - if (!(s->capareg & SDHC_CAN_DO_ADMA2) || - !(s->capareg & SDHC_64_BIT_BUS_SUPPORT)) { + if (!(s->capareg & R_SDHC_CAPAB_ADMA2_MASK) || + !(s->capareg & R_SDHC_CAPAB_BUS64BIT_MASK)) { trace_sdhci_error("64 bit ADMA not supported"); break; } --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) client-ip=209.85.220.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by mx.zohomail.com with SMTPS id 1518494944451510.43953777279; Mon, 12 Feb 2018 20:09:04 -0800 (PST) Received: by mail-qk0-f195.google.com with SMTP id z197so4213144qkb.6 for ; Mon, 12 Feb 2018 20:09:04 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:03 -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=wY//D2TOSIUxA/+3Tz/qnHcjRg6V0zzmBzdlX6DyMlw=; b=ZOe25NcCeivb1F+yjl8p1uJMLSoBSoQhqvPkcYwu1mib/reipwiVy02jHUVn1CivWV FuTxdivkmNlKcsfzy+4+5nD+4onMRTH0E86Vp9e3/lAVUIH4TmlPkD3gtLX2lNLsRwBd Daz81peQyDe9xcG0UgNVM23ZAAj6lg0zEiSaDRloatzfP+L9a7qGJOW7ofDeutENM0Nv B6DJBOimYILnypgrVdeykSCOSVC/LA92EYakJx3r5vxM0evsHY5RuzdlvyRtUsJrTIWX 21SxXpFydNRmkp/rYlBVMwOUXJJQBSppTUg2aLtnJEOXuiIT6r87GUNYp5I5i9t3MgIe xy+g== 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=wY//D2TOSIUxA/+3Tz/qnHcjRg6V0zzmBzdlX6DyMlw=; b=KNr1DtDlbKaIHB0UXm33j5+rmwkGnRBQOTJogQ8zUldsD9FFyR/1hBACWFgF7Tm+Rt z22wEU0aY/GUQkJoxVsYPGOAhPc/FPYPjJMn4RhSWGBtevq83EVnLZhwkdU61JhBr2oO xiN6Wv0vJdIo7QJbj8mOCTxYhJCK6xHNf5/gYxrNoxBWQ78pT4AokApcfUDGVY84NduM 2wI5zJccfZgWuzP1o+QZZZI27hhHJSudk4T1Fs2JjfIG1VFiDga7s8wEVlsCOWMi4OaR akS0zp/Q9kgt41GntPs80wfNaal7o3yj4P1EwICWlcIVvpe8yQQVGKmqdyiqh33dOUgN mlMA== X-Gm-Message-State: APf1xPDKzhxNWCAOjO8GK+/9Pcr48y9nV3+9nwYrnblvbhIHjO+JUKf2 2FguahyUQHCijsNlLMpk12JZOQao X-Google-Smtp-Source: AH8x227yenu1FIXxhZfeN1RGtvkDyZilvloEGx8W9EVDqsvd42FmK4sT4xms7w+utQ9QdCDAEeXItg== X-Received: by 10.55.66.77 with SMTP id p74mr20095026qka.205.1518494943649; Mon, 12 Feb 2018 20:09:03 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng , Igor Mitsyanko , qemu-arm@nongnu.org (open list:Exynos) Subject: [PATCH v13 14/30] hw/arm/exynos4210: access the 64-bit capareg with qdev_prop_set_uint64() Date: Tue, 13 Feb 2018 01:07:53 -0300 Message-Id: <20180213040809.26021-15-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 We only set a 32-bit value, but this is a good practice in case this code is used as reference. (missed in 5efc9016e52) Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/arm/exynos4210.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index e8e1d81e62..d89322c7ea 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -378,7 +378,7 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_m= em) DriveInfo *di; =20 dev =3D qdev_create(NULL, TYPE_SYSBUS_SDHCI); - qdev_prop_set_uint32(dev, "capareg", EXYNOS4210_SDHCI_CAPABILITIES= ); + qdev_prop_set_uint64(dev, "capareg", EXYNOS4210_SDHCI_CAPABILITIES= ); qdev_init_nofail(dev); =20 busdev =3D SYS_BUS_DEVICE(dev); --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.196 as permitted sender) client-ip=209.85.216.196; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f196.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.196 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f196.google.com (mail-qt0-f196.google.com [209.85.216.196]) by mx.zohomail.com with SMTPS id 1518494947895104.85549728356114; Mon, 12 Feb 2018 20:09:07 -0800 (PST) Received: by mail-qt0-f196.google.com with SMTP id d26so2208689qtk.10 for ; Mon, 12 Feb 2018 20:09:07 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:06 -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=sZp8aF6avIv4FuO7MfmdU5DFjxinRjlcQGqTNkIJbBA=; b=oTvUQJLkTV81W0dCZP8gI0EFQkP/IO/lQD2MixIW2+RX9MYd9Cq7oUNxnFDPQCl35z in68Fs9yvSc57SSPG9Qz1rUOzj1MCBpk1l2tCJulmcLMoojVT3g8T9tGG7JFJ4YrUHIp Fxiv/G+XpHWZyvncdQ4B1bMnywh94hhct9Fpi1GXCn97xrGrdkIFFUDqC1r0kM9TzBM3 aOJEnj0K1udqBV+im2PHRpC4q3Ao4uOSnIrVJ/9hZg+fj8GySL8cvk1JYTaJYbYakH9K gWlL/P4vx82tVYoVeKhi68Y6O9dKgF+N9QgNgtwKJcGaL+ZHnuSlWGPTu/aVus5bvCiO 0dWA== 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=sZp8aF6avIv4FuO7MfmdU5DFjxinRjlcQGqTNkIJbBA=; b=NrrkqP5Fapk7fqmzQGM8C6zmRW+KoUVk0t/2JH0/twws6lUZQGtRJ8he+EYdxTgKQo XmkEjG4JnlDFWSJlZ4DMBm2yHZ1GWK1F7QYywYW939FQc7knfNct5J65fHDiyXMWIU4c Rb9zXdtkCgVpndOGO0J03DcXpjNO8UyShScONowWQaTOkNWsUOqIkHyP1WUJo41xeKzo FHYcU6LbSf4qvfJELSwuYLLUBxS984qFgMlMUCMqssvAIwAuyYlShjrZnC/Yfkqy19/S dQs4N/jRxDd9crgZ+wkzwnu/Lkqs4+92HhGfpV8tHB+kGYGbHyW0hwZHR78GZUx5tMNt KE8g== X-Gm-Message-State: APf1xPB6LhLGFsTGHfsuVZuzo6ttvqkg2xI9dE4oLb69pQG0rJ9ieLSo mW78C9FvwXHIpSKaCEBqPdw= X-Google-Smtp-Source: AH8x227hdXvEoWnROZiSBuSWwGdVyjX+KWR78RPpIFaJjfxh9oLbTZV/YB4SlhDiL1/FP2yX8xnHTw== X-Received: by 10.237.52.228 with SMTP id x91mr21861968qtd.112.1518494947090; Mon, 12 Feb 2018 20:09:07 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng , Igor Mitsyanko , qemu-arm@nongnu.org (open list:Exynos) Subject: [PATCH v13 15/30] hw/arm/exynos4210: add a comment about a very similar SDHCI (Spec. v2) Date: Tue, 13 Feb 2018 01:07:54 -0300 Message-Id: <20180213040809.26021-16-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Alistair Francis --- hw/arm/exynos4210.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index d89322c7ea..06f9d1ffa4 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -377,6 +377,18 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_= mem) BlockBackend *blk; DriveInfo *di; =20 + /* Compatible with: + * - SD Host Controller Specification Version 2.0 + * - SDIO Specification Version 2.0 + * - MMC Specification Version 4.3 + * - SDMA + * - ADMA2 + * + * As this part of the Exynos4210 is not publically available, + * we used the "HS-MMC Controller S3C2416X RISC Microprocessor" + * public datasheet which is very similar (implementing + * MMC Specification Version 4.0 being the only difference noted) + */ dev =3D qdev_create(NULL, TYPE_SYSBUS_SDHCI); qdev_prop_set_uint64(dev, "capareg", EXYNOS4210_SDHCI_CAPABILITIES= ); qdev_init_nofail(dev); --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.196 as permitted sender) client-ip=209.85.220.196; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f196.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.196 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by mx.zohomail.com with SMTPS id 151849495199635.9237858940312; Mon, 12 Feb 2018 20:09:11 -0800 (PST) Received: by mail-qk0-f196.google.com with SMTP id z197so4213399qkb.6 for ; Mon, 12 Feb 2018 20:09:11 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:10 -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=6I0eLeCnx4eW7xx/FEABgkNDEMBh/XvlA3Ez3K+OV/Q=; b=j9yA8RV7Ko/lrpTp31+xiCGBcv6NNSvB93jDgLiFaRcJmZt9uChe2llie4InDlrTBO 1oXCsPTA3oVSxcLj6BTPxRKfj59jg6UkKbTshZLc1TiydtL9gruCBbrzr590P8Z15Jwq wjrqIVFJpIRRJNwbymqsqX4I0w9fUou+NCdmeXZFouTxDNM3qI0kF7ozHthlgxE8FyOv RpwxQiyS8kMC1rVMu1Q0ala/TXCitISp4RsKlPkyOkGvOiqAqHpdtwkvFCNXXegCZqAA K/v8Y2cuL4KLVsbrDyZ9tiNiBXqZAY8nsxyxOXfe9jQk/rUP+Rv4dt3OdGcVRD3ebugw 5OYQ== 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=6I0eLeCnx4eW7xx/FEABgkNDEMBh/XvlA3Ez3K+OV/Q=; b=Gq8Z6jyBulL2IU2yjvfybukgMW32alzg+dWt+3Zo9lKPlITlusNewBbzwENJaiUdyX t11enPSdYkeOOn5CAm9OHq7iTSHBETw0z1cK2gafNxPfXj/0sTssaaz51i6uveVQDwzz 5njJyTzrNxf2qGSfcZCN9hS8YhS04yzpluzFlMXLNXQUmN6/CV82dz3SNWCzL88Cfmxu S8ocz1hRj2a3aUrMiekejc2jD6lejRE0trEQKUkyEe994/b+QiLWZsPJspjgglevaUzD fGySh3MwPZ8gxDmqFWAoldF0WnbB9TiVT7tojAlr6tggORmYKwScqmiwA5spad2e8mAB ODWQ== X-Gm-Message-State: APf1xPAnDGvOVJl8dsWpwv8qRWVPZFXRb6NL/U7TyhJxyg51VvgatYYZ K6V5nXaoj0cASlc06/BD9Uw= X-Google-Smtp-Source: AH8x226YPWcFKjrc/UfnCY21LH/tMUM5unn/SKDIRnxqsRtwD2HU6EESNe2AHRvrA4xcw/iRrRR93A== X-Received: by 10.55.24.34 with SMTP id j34mr17325123qkh.294.1518494950894; Mon, 12 Feb 2018 20:09:10 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng , "Edgar E. Iglesias" , qemu-arm@nongnu.org (open list:Xilinx Zynq) Subject: [PATCH v13 16/30] hw/arm/xilinx_zynq: fix the capabilities register to match the datasheet Date: Tue, 13 Feb 2018 01:07:55 -0300 Message-Id: <20180213040809.26021-17-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 checking Xilinx datasheet "UG585" (v1.12.1) Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/arm/xilinx_zynq.c | 53 ++++++++++++++++++++++++++++--------------------= ---- tests/sdhci-test.c | 5 +++++ 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 1836a4ed45..0f76333770 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -61,6 +61,8 @@ static const int dma_irqs[8] =3D { #define SLCR_XILINX_UNLOCK_KEY 0xdf0d #define SLCR_XILINX_LOCK_KEY 0x767b =20 +#define ZYNQ_SDHCI_CAPABILITIES 0x69ec0080 /* Datasheet: UG585 (v1.12.1) = */ + #define ARMV7_IMM16(x) (extract32((x), 0, 12) | \ extract32((x), 12, 4) << 16) =20 @@ -165,10 +167,8 @@ static void zynq_init(MachineState *machine) MemoryRegion *address_space_mem =3D get_system_memory(); MemoryRegion *ext_ram =3D g_new(MemoryRegion, 1); MemoryRegion *ocm_ram =3D g_new(MemoryRegion, 1); - DeviceState *dev, *carddev; + DeviceState *dev; SysBusDevice *busdev; - DriveInfo *di; - BlockBackend *blk; qemu_irq pic[64]; int n; =20 @@ -247,27 +247,32 @@ static void zynq_init(MachineState *machine) gem_init(&nd_table[0], 0xE000B000, pic[54-IRQ_OFFSET]); gem_init(&nd_table[1], 0xE000C000, pic[77-IRQ_OFFSET]); =20 - dev =3D qdev_create(NULL, TYPE_SYSBUS_SDHCI); - qdev_init_nofail(dev); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xE0100000); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[56-IRQ_OFFSET]); - - di =3D drive_get_next(IF_SD); - blk =3D di ? blk_by_legacy_dinfo(di) : NULL; - carddev =3D qdev_create(qdev_get_child_bus(dev, "sd-bus"), TYPE_SD_CAR= D); - qdev_prop_set_drive(carddev, "drive", blk, &error_fatal); - object_property_set_bool(OBJECT(carddev), true, "realized", &error_fat= al); - - dev =3D qdev_create(NULL, TYPE_SYSBUS_SDHCI); - qdev_init_nofail(dev); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xE0101000); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[79-IRQ_OFFSET]); - - di =3D drive_get_next(IF_SD); - blk =3D di ? blk_by_legacy_dinfo(di) : NULL; - carddev =3D qdev_create(qdev_get_child_bus(dev, "sd-bus"), TYPE_SD_CAR= D); - qdev_prop_set_drive(carddev, "drive", blk, &error_fatal); - object_property_set_bool(OBJECT(carddev), true, "realized", &error_fat= al); + for (n =3D 0; n < 2; n++) { + int hci_irq =3D n ? 79 : 56; + hwaddr hci_addr =3D n ? 0xE0101000 : 0xE0100000; + DriveInfo *di; + BlockBackend *blk; + DeviceState *carddev; + + /* Compatible with: + * - SD Host Controller Specification Version 2.0 Part A2 + * - SDIO Specification Version 2.0 + * - MMC Specification Version 3.31 + */ + dev =3D qdev_create(NULL, TYPE_SYSBUS_SDHCI); + qdev_prop_set_uint8(dev, "sd-spec-version", 2); + qdev_prop_set_uint64(dev, "capareg", ZYNQ_SDHCI_CAPABILITIES); + qdev_init_nofail(dev); + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, hci_addr); + sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[hci_irq - IRQ_OFFSE= T]); + + di =3D drive_get_next(IF_SD); + blk =3D di ? blk_by_legacy_dinfo(di) : NULL; + carddev =3D qdev_create(qdev_get_child_bus(dev, "sd-bus"), TYPE_SD= _CARD); + qdev_prop_set_drive(carddev, "drive", blk, &error_fatal); + object_property_set_bool(OBJECT(carddev), true, "realized", + &error_fatal); + } =20 dev =3D qdev_create(NULL, TYPE_ZYNQ_XADC); qdev_init_nofail(dev); diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c index 24feea744a..898c43ff4f 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -41,6 +41,11 @@ static const struct sdhci_t { /* Exynos4210 */ { "arm", "smdkc210", {0x12510000, 2, 0, {1, 0x5e80080} } }, + + /* Zynq-7000 */ + { "arm", "xilinx-zynq-a9", /* Datasheet: UG585 (v1.12.1) */ + {0xe0100000, 2, 0, {1, 0x69ec0080} } }, + }; =20 typedef struct QSDHCI { --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) client-ip=209.85.220.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by mx.zohomail.com with SMTPS id 1518494955111108.73353165372703; Mon, 12 Feb 2018 20:09:15 -0800 (PST) Received: by mail-qk0-f195.google.com with SMTP id n188so21057929qkn.11 for ; Mon, 12 Feb 2018 20:09:14 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:13 -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=x3xRuCz5oAMlz8xBc1AR1pWqfZdkWnVa+b8snqcVGb0=; b=Uq/L8JAX3plWvKRfXASw7Hsa+HD8eK3NW0fvIsIg778AVlnyS6Rh3DPdtFS3p7HYBc X8OX63kUoq0aulGVfardIs9mY55BugyuwvoIwoe+1VxN7SXGJXYeHkmF2K9if2r3B/sQ vmOMNeen258gTLItZSp0iQlgLPYevommpe59jwWkRItb8ZN6JAbSqaU0PXBuTkbe8SIG qlxBnIm5uWKdtTNmGLItrXKTWi6ux44mVDD1sdeFsBs20hvO2h3RB/QQ2qU7habb3fRm Csh+SPJXyhsJzWxOHoi6DgTVrW/v7mt7DKd2WvfAz9e4aWhgSp4VFsk6Jv3+pP4gXTES sVUA== 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=x3xRuCz5oAMlz8xBc1AR1pWqfZdkWnVa+b8snqcVGb0=; b=gVa4Q7UwoVeLeoX/mulOJiYOkKIL+x7S11YpHVSnHJYlrt4SKKhODr/GFDhW7ZQAv4 ovubpkwCmOyNPGcF8JOwNxtuNvXQYA9TDxpMjFo3uh3vVCg2zll/G+RBSTTh57/FnFAv d9t/FlJcIJOLE9hOu3tsE4K+quB7q3hREnhE0TFN6J5jeIFbK5k1RWmk/RJ6qxbTEkZB gXA2nvjxWnpCdNHQM/x/cPj5sWeqsi+FOLlWOHXu8wOdTsQj/eGSJ5Qvau0G2W9nWd3U NOtSQ4OmOjTr7qJPR6B+A6Qfxl4MqDN2iQLY0oFdFUQl6am0LoFf2VHFbQetRGMuegMP JA2w== X-Gm-Message-State: APf1xPDrglCXhsW2vNW21pxWLQbXm8HfrakfAG3Y19drRpuDq9B9fxv7 NF/M52BV1hID1pOFRBYmS/s= X-Google-Smtp-Source: AH8x225tsMgEHPYH48KKecDbApzHPUezTtNwkCnQRzQDMJ5tKvuAwTCclT/AVmAUCTxWw0/OkVIfUQ== X-Received: by 10.55.98.149 with SMTP id w143mr3851836qkb.338.1518494954091; Mon, 12 Feb 2018 20:09:14 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 17/30] sdhci: add support for v3 capabilities Date: Tue, 13 Feb 2018 01:07:56 -0300 Message-Id: <20180213040809.26021-18-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 13 ++++++++++++ hw/sd/sdhci.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++= ++-- 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index fe68b21e92..bfb39d614b 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -43,6 +43,7 @@ #define SDHC_TRNS_DMA 0x0001 #define SDHC_TRNS_BLK_CNT_EN 0x0002 #define SDHC_TRNS_ACMD12 0x0004 +#define SDHC_TRNS_ACMD23 0x0008 /* since v3 */ #define SDHC_TRNS_READ 0x0010 #define SDHC_TRNS_MULTI 0x0020 #define SDHC_TRNMOD_MASK 0x0037 @@ -194,6 +195,7 @@ FIELD(SDHC_CAPAB, TOCLKFREQ, 0, 6); FIELD(SDHC_CAPAB, TOUNIT, 7, 1); FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); FIELD(SDHC_CAPAB, MAXBLOCKLENGTH, 16, 2); +FIELD(SDHC_CAPAB, EMBEDDED_8BIT, 18, 1); /* since v3 */ FIELD(SDHC_CAPAB, ADMA2, 19, 1); /* since v2 */ FIELD(SDHC_CAPAB, ADMA1, 20, 1); /* v1 only? */ FIELD(SDHC_CAPAB, HIGHSPEED, 21, 1); @@ -203,6 +205,17 @@ FIELD(SDHC_CAPAB, V33, 24, 1); FIELD(SDHC_CAPAB, V30, 25, 1); FIELD(SDHC_CAPAB, V18, 26, 1); FIELD(SDHC_CAPAB, BUS64BIT, 28, 1); /* since v2 */ +FIELD(SDHC_CAPAB, ASYNC_INT, 29, 1); /* since v3 */ +FIELD(SDHC_CAPAB, SLOT_TYPE, 30, 2); /* since v3 */ +FIELD(SDHC_CAPAB, BUS_SPEED, 32, 3); /* since v3 */ +FIELD(SDHC_CAPAB, DRIVER_STRENGTH, 36, 3); /* since v3 */ +FIELD(SDHC_CAPAB, DRIVER_TYPE_A, 36, 1); /* since v3 */ +FIELD(SDHC_CAPAB, DRIVER_TYPE_C, 37, 1); /* since v3 */ +FIELD(SDHC_CAPAB, DRIVER_TYPE_D, 38, 1); /* since v3 */ +FIELD(SDHC_CAPAB, TIMER_RETUNING, 40, 4); /* since v3 */ +FIELD(SDHC_CAPAB, SDR50_TUNING, 45, 1); /* since v3 */ +FIELD(SDHC_CAPAB, RETUNING_MODE, 46, 2); /* since v3 */ +FIELD(SDHC_CAPAB, CLOCK_MULT, 48, 8); /* since v3 */ =20 /* HWInit Maximum Current Capabilities Register 0x0 */ #define SDHC_MAXCURR 0x48 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index a0775e266a..e7214d6f60 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -69,6 +69,9 @@ static inline unsigned int sdhci_get_fifolen(SDHCIState *= s) static bool sdhci_check_capab_freq_range(SDHCIState *s, const char *desc, uint8_t freq, Error **errp) { + if (s->sd_spec_version >=3D 3) { + return false; + } switch (freq) { case 0: case 10 ... 63: @@ -88,6 +91,50 @@ static void sdhci_check_capareg(SDHCIState *s, Error **e= rrp) bool unit_mhz; =20 switch (s->sd_spec_version) { + case 3: + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, ASYNC_INT); + trace_sdhci_capareg("async interrupt", val); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, ASYNC_INT, 0); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, SLOT_TYPE); + if (val) { + error_setg(errp, "slot-type not supported"); + return; + } + trace_sdhci_capareg("slot type", val); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, SLOT_TYPE, 0); + + if (val !=3D 0b10) { + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, EMBEDDED_8BIT); + trace_sdhci_capareg("8-bit bus", val); + } + msk =3D FIELD_DP64(msk, SDHC_CAPAB, EMBEDDED_8BIT, 0); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, BUS_SPEED); + trace_sdhci_capareg("bus speed mask", val); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, BUS_SPEED, 0); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, DRIVER_STRENGTH); + trace_sdhci_capareg("driver strength mask", val); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, DRIVER_STRENGTH, 0); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, TIMER_RETUNING); + trace_sdhci_capareg("timer re-tuning", val); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, TIMER_RETUNING, 0); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, SDR50_TUNING); + trace_sdhci_capareg("use SDR50 tuning", val); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, SDR50_TUNING, 0); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, RETUNING_MODE); + trace_sdhci_capareg("re-tuning mode", val); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, RETUNING_MODE, 0); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, CLOCK_MULT); + trace_sdhci_capareg("clock multiplier", val); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, CLOCK_MULT, 0); + + /* fallback */ case 2: /* default version */ val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, ADMA2); msk =3D FIELD_DP64(msk, SDHC_CAPAB, ADMA2, 0); @@ -1227,8 +1274,11 @@ static void sdhci_init_readonly_registers(SDHCIState= *s, Error **errp) { Error *local_err =3D NULL; =20 - if (s->sd_spec_version !=3D 2) { - error_setg(errp, "Only Spec v2 is supported"); + switch (s->sd_spec_version) { + case 2 ... 3: + break; + default: + error_setg(errp, "Only Spec v2/v3 are supported"); return; } s->version =3D (SDHC_HCVER_VENDOR << 8) | (s->sd_spec_version - 1); --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.193 as permitted sender) client-ip=209.85.220.193; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f193.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.193 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f193.google.com (mail-qk0-f193.google.com [209.85.220.193]) by mx.zohomail.com with SMTPS id 1518494957899562.5273213643595; Mon, 12 Feb 2018 20:09:17 -0800 (PST) Received: by mail-qk0-f193.google.com with SMTP id g2so30756qkd.12 for ; Mon, 12 Feb 2018 20:09:17 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:16 -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=8KIL1mlqy0cJvSwgDTXGQzMuuOThfZTfuL6MCrnSaBA=; b=bN+DoELE+w1wND/vmBPQP5ryPFZ+ZKg++QMkxvnKm8IIUvtVFB+1yfub/qbg2SNI5P 3lZjxM1cFc5OX2Mzf28LUBt1pdJUNLyBmp+rZXCc0PVhoZA0zo08cHBNhJ4iRgz2+YQX LBExhkXj3TFL0uf9viIpQ2ZP02q7ljTpccEyp9U1Qfge1ASEcJKGWP34VkDeF6bgBnJr NC4hNF7u95FKIP5+YErDnmsrmp4BaXPggaeR7/mu7BgfjhDc/jQ2eK9Sn9VM+pWl9IsK 5cZxesEdZNwGF4lbnJnhWZH2wA28euusc4lfuki31pT+kibBLluKhRLMVK7AXBZfF0Ut qFDQ== 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=8KIL1mlqy0cJvSwgDTXGQzMuuOThfZTfuL6MCrnSaBA=; b=KpOJoNBiEXOVyJWv/so4IrvueznUY6iE2NRTgardg2QbN61NPGhXCjVlEjSzOb/1fl MlsZoPTKJL9mMVNpA76QU1lsNOzRXN2WJ9kwN3mQ647B0hv/Sqz0OFx7UIxr0vwlj1Zy 1hgDHs2YoWBcmXzRo5z3rmLB0CcxE5syUzz+YzDQO80kP6yi093PZwcVLvTXoNYHY7tg 6YehVi0sGzE/k7HQ7pjX6Ge9R6RdOVs93D0GS4UwwYGRokybG/EGqbO/tEqgNmnsi4Zk 9G0rljgfrl/4aVbRGWquDPIcYZ+0h4vbHIxjnUp3vSp5GuqgXgbU8+ArphboAFYcII9h WezQ== X-Gm-Message-State: APf1xPDfsuH/dhUZLZHBtCWTuLfk68FgB0qGdVmw6tPrZlpa7caOODyP mM5ZWcguXnUFi6wwkCPDQeE= X-Google-Smtp-Source: AH8x225H5SOkdbPPWuqEu0ukNgvNpi6eQnDYToe5bxxDe7GbQng9IkH9b19iGHZB2jaU7TCNghTfig== X-Received: by 10.55.200.197 with SMTP id t66mr13474635qkl.93.1518494956811; Mon, 12 Feb 2018 20:09:16 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 18/30] sdhci: rename the hostctl1 register Date: Tue, 13 Feb 2018 01:07:57 -0300 Message-Id: <20180213040809.26021-19-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 As per the Spec v3.00 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- include/hw/sd/sdhci.h | 2 +- hw/sd/sdhci.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index 2a26b46f05..54594845ce 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -59,7 +59,7 @@ typedef struct SDHCIState { uint16_t cmdreg; /* Command Register */ uint32_t rspreg[4]; /* Response Registers 0-3 */ uint32_t prnsts; /* Present State Register */ - uint8_t hostctl; /* Host Control Register */ + uint8_t hostctl1; /* Host Control Register */ uint8_t pwrcon; /* Power control Register */ uint8_t blkgap; /* Block Gap Control Register */ uint8_t wakcon; /* WakeUp Control Register */ diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index e7214d6f60..9a8cdd551c 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -691,7 +691,7 @@ static void get_adma_description(SDHCIState *s, ADMADes= cr *dscr) uint32_t adma1 =3D 0; uint64_t adma2 =3D 0; hwaddr entry_addr =3D (hwaddr)s->admasysaddr; - switch (SDHC_DMA_TYPE(s->hostctl)) { + switch (SDHC_DMA_TYPE(s->hostctl1)) { case SDHC_CTRL_ADMA2_32: dma_memory_read(s->dma_as, entry_addr, (uint8_t *)&adma2, sizeof(adma2)); @@ -880,7 +880,7 @@ static void sdhci_data_transfer(void *opaque) SDHCIState *s =3D (SDHCIState *)opaque; =20 if (s->trnmod & SDHC_TRNS_DMA) { - switch (SDHC_DMA_TYPE(s->hostctl)) { + switch (SDHC_DMA_TYPE(s->hostctl1)) { case SDHC_CTRL_SDMA: if ((s->blkcnt =3D=3D 1) || !(s->trnmod & SDHC_TRNS_MULTI)) { sdhci_sdma_transfer_single_block(s); @@ -989,7 +989,7 @@ static uint64_t sdhci_read(void *opaque, hwaddr offset,= unsigned size) ret =3D s->prnsts; break; case SDHC_HOSTCTL: - ret =3D s->hostctl | (s->pwrcon << 8) | (s->blkgap << 16) | + ret =3D s->hostctl1 | (s->pwrcon << 8) | (s->blkgap << 16) | (s->wakcon << 24); break; case SDHC_CLKCON: @@ -1107,7 +1107,7 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val= , unsigned size) MASKED_WRITE(s->sdmasysad, mask, value); /* Writing to last byte of sdmasysad might trigger transfer */ if (!(mask & 0xFF000000) && TRANSFERRING_DATA(s->prnsts) && s->blk= cnt && - s->blksize && SDHC_DMA_TYPE(s->hostctl) =3D=3D SDHC_CTRL_S= DMA) { + s->blksize && SDHC_DMA_TYPE(s->hostctl1) =3D=3D SDHC_CTRL_= SDMA) { if (s->trnmod & SDHC_TRNS_MULTI) { sdhci_sdma_transfer_multi_blocks(s); } else { @@ -1159,7 +1159,7 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val= , unsigned size) if (!(mask & 0xFF0000)) { sdhci_blkgap_write(s, value >> 16); } - MASKED_WRITE(s->hostctl, mask, value); + MASKED_WRITE(s->hostctl1, mask, value); MASKED_WRITE(s->pwrcon, mask >> 8, value >> 8); MASKED_WRITE(s->wakcon, mask >> 24, value >> 24); if (!(s->prnsts & SDHC_CARD_PRESENT) || ((s->pwrcon >> 1) & 0x7) <= 5 || @@ -1380,7 +1380,7 @@ const VMStateDescription sdhci_vmstate =3D { VMSTATE_UINT16(cmdreg, SDHCIState), VMSTATE_UINT32_ARRAY(rspreg, SDHCIState, 4), VMSTATE_UINT32(prnsts, SDHCIState), - VMSTATE_UINT8(hostctl, SDHCIState), + VMSTATE_UINT8(hostctl1, SDHCIState), VMSTATE_UINT8(pwrcon, SDHCIState), VMSTATE_UINT8(blkgap, SDHCIState), VMSTATE_UINT8(wakcon, SDHCIState), @@ -1598,13 +1598,13 @@ static uint64_t usdhc_read(void *opaque, hwaddr off= set, unsigned size) * manipulation code see comments in a similar part of * usdhc_write() */ - hostctl =3D SDHC_DMA_TYPE(s->hostctl) << (8 - 3); + hostctl =3D SDHC_DMA_TYPE(s->hostctl1) << (8 - 3); =20 - if (s->hostctl & SDHC_CTRL_8BITBUS) { + if (s->hostctl1 & SDHC_CTRL_8BITBUS) { hostctl |=3D ESDHC_CTRL_8BITBUS; } =20 - if (s->hostctl & SDHC_CTRL_4BITBUS) { + if (s->hostctl1 & SDHC_CTRL_4BITBUS) { hostctl |=3D ESDHC_CTRL_4BITBUS; } =20 --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) client-ip=209.85.220.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by mx.zohomail.com with SMTPS id 1518494960576583.4470751258954; Mon, 12 Feb 2018 20:09:20 -0800 (PST) Received: by mail-qk0-f195.google.com with SMTP id o7so6664795qkc.1 for ; Mon, 12 Feb 2018 20:09:20 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:19 -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=4/ror28n6iMpojRkYcaOsFC+NEsmvSoKOzUYYNNqdNw=; b=OUGtjCSQ3FyOhms2iN3ZVN1gBuVEyKHHz86Bzjsjv7ipIDOwooNau2L++BxNometNw s8+ptad+BGPWhMGSw+D6gJ1ArTBXZgY3lWJWiTqlCsNW1DTA+LNwVNZICwKiFnzjZq33 jAuRsLOyPl7BWM4tDTACG25NSi9pvtkj3m58Qze0zh4HErSG+lIIqphzr48vKxQQR2dG 1+SRYjRE0VG9N8Lo7bnwdq2KH3QhTDKzTkO9AkPiLtGbsFHM6wqtG8lsmqgVfM1GSRKU B4YUEG8qVcZMjGQtFM38mP9QEGKCPPoG106U50tWsV0P1I4LJkg/tCCRMNgolN75POY+ CDnw== 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=4/ror28n6iMpojRkYcaOsFC+NEsmvSoKOzUYYNNqdNw=; b=Yjaeuwfbhh0Gdqxzq+f49tDUsrSkrUZAIZX4YcWQ6C//eI2A9/mjLyH7GSd+V0lli6 cWTguP5MLpAj0MYBM66H6wZGJ34Vo9ZlIh85tNZUgS3ldvW84SXm679avCE4DYD++rx1 owO+UDfQttGQpFFWnKO9xaIWmT3Z1xtC2DdIU5rTsAXtcnCEDYMol+M7X81XZ3nYHEZ0 8FaZLdaUF4PLarJ+x1DG4yGwYomNMSBskitWZrE2mMp4HPLNQGF1Al4UT2oDHYM50HF/ emtG7khDwCI5hxp0akYBk6aXQ4SszRbTuvR6v6XMZ47H3++dhjo3Lbj0vd06hpePe1Q9 KMyQ== X-Gm-Message-State: APf1xPDilgDJUSSeSo+Zx86y/E0+h3J57mkDZPah1QRrqyWGy2QBc4Al h/gP7HBPQujOSeZjkxPb2QY= X-Google-Smtp-Source: AH8x226H+HwoxULtwWNf2xdQC3R30t9uAU6nggR1AFRegkkGi4NG2qBo+2ib2nRsptIQYMjvsDExlw== X-Received: by 10.55.144.2 with SMTP id s2mr20240168qkd.257.1518494959695; Mon, 12 Feb 2018 20:09:19 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 19/30] sdhci: implement the Host Control 2 register (tuning sequence) Date: Tue, 13 Feb 2018 01:07:58 -0300 Message-Id: <20180213040809.26021-20-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 [based on a patch from Alistair Francis from qemu/xilinx tag xilinx-v2015.2] Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 10 ++++++++++ include/hw/sd/sdhci.h | 1 + hw/sd/sdhci.c | 22 +++++++++++++++++++--- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index bfb39d614b..5c69270988 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -189,6 +189,16 @@ FIELD(SDHC_ACMD12ERRSTS, TIMEOUT_ERR, 1, 1); FIELD(SDHC_ACMD12ERRSTS, CRC_ERR, 2, 1); FIELD(SDHC_ACMD12ERRSTS, INDEX_ERR, 4, 1); =20 +/* Host Control Register 2 (since v3) */ +#define SDHC_HOSTCTL2 0x3E +FIELD(SDHC_HOSTCTL2, UHS_MODE_SEL, 0, 3); +FIELD(SDHC_HOSTCTL2, V18_ENA, 3, 1); /* UHS-I only */ +FIELD(SDHC_HOSTCTL2, DRIVER_STRENGTH, 4, 2); /* UHS-I only */ +FIELD(SDHC_HOSTCTL2, EXECUTE_TUNING, 6, 1); /* UHS-I only */ +FIELD(SDHC_HOSTCTL2, SAMPLING_CLKSEL, 7, 1); /* UHS-I only */ +FIELD(SDHC_HOSTCTL2, ASYNC_INT, 14, 1); +FIELD(SDHC_HOSTCTL2, PRESET_ENA, 15, 1); + /* HWInit Capabilities Register 0x05E80080 */ #define SDHC_CAPAB 0x40 FIELD(SDHC_CAPAB, TOCLKFREQ, 0, 6); diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index 54594845ce..fd606e9928 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -73,6 +73,7 @@ typedef struct SDHCIState { uint16_t norintsigen; /* Normal Interrupt Signal Enable Register */ uint16_t errintsigen; /* Error Interrupt Signal Enable Register */ uint16_t acmd12errsts; /* Auto CMD12 error status register */ + uint16_t hostctl2; /* Host Control 2 */ uint64_t admasysaddr; /* ADMA System Address Register */ =20 /* Read-only registers */ diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 9a8cdd551c..1dbcb99f52 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -408,14 +408,29 @@ static void sdhci_end_transfer(SDHCIState *s) static void sdhci_read_block_from_card(SDHCIState *s) { int index =3D 0; + uint8_t data; + const uint16_t blk_size =3D s->blksize & BLOCK_SIZE_MASK; =20 if ((s->trnmod & SDHC_TRNS_MULTI) && (s->trnmod & SDHC_TRNS_BLK_CNT_EN) && (s->blkcnt =3D=3D 0)) { return; } =20 - for (index =3D 0; index < (s->blksize & BLOCK_SIZE_MASK); index++) { - s->fifo_buffer[index] =3D sdbus_read_data(&s->sdbus); + for (index =3D 0; index < blk_size; index++) { + data =3D sdbus_read_data(&s->sdbus); + if (!FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, EXECUTE_TUNING)) { + /* Device is not in tunning */ + s->fifo_buffer[index] =3D data; + } + } + + if (FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, EXECUTE_TUNING)) { + /* Device is in tunning */ + s->hostctl2 &=3D ~R_SDHC_HOSTCTL2_EXECUTE_TUNING_MASK; + s->hostctl2 |=3D R_SDHC_HOSTCTL2_SAMPLING_CLKSEL_MASK; + s->prnsts &=3D ~(SDHC_DAT_LINE_ACTIVE | SDHC_DOING_READ | + SDHC_DATA_INHIBIT); + goto read_done; } =20 /* New data now available for READ through Buffer Port Register */ @@ -440,6 +455,7 @@ static void sdhci_read_block_from_card(SDHCIState *s) } } =20 +read_done: sdhci_update_irq(s); } =20 @@ -1005,7 +1021,7 @@ static uint64_t sdhci_read(void *opaque, hwaddr offse= t, unsigned size) ret =3D s->norintsigen | (s->errintsigen << 16); break; case SDHC_ACMD12ERRSTS: - ret =3D s->acmd12errsts; + ret =3D s->acmd12errsts | (s->hostctl2 << 16); break; case SDHC_CAPAB: ret =3D (uint32_t)s->capareg; --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) client-ip=209.85.220.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f194.google.com (mail-qk0-f194.google.com [209.85.220.194]) by mx.zohomail.com with SMTPS id 1518494963428662.7470852602146; Mon, 12 Feb 2018 20:09:23 -0800 (PST) Received: by mail-qk0-f194.google.com with SMTP id g129so6525479qkb.13 for ; Mon, 12 Feb 2018 20:09:23 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09: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=PRVVrWr1dkuT1tVe6teh0w/edU9ae96q3kRiLd5UG5I=; b=Z+5rRn5L8TP6ZG1ojbUt308C9yG/GGAqhidPxNsF3Z7apNiblwaxzLfgYfwppD2CEK fdJspeT7Yd7jxfx+7a58xizOYaJ7XklQc1NyfWi8ILWkGMYuawuj1Uv+Bi3sw8aRsfG+ Hp3lTCSW9kV1gROKvtWJIYWdbYvRC88/V0Yh/JL9iSIOBOZmNwXrqPZjpkWHqS+1h4gQ 6yH2yHN3og81APabex7jdTrEMVrZfG5y45Hg4XvhwfDj6qj4ckX5wcbxcmCyDh18NuKl zzfLaru3tfnmtSbeJmnQ8NgZO4GFJ6Rm6HZTCdhN95zAw9nAlDk8A1zakvqELULJqlfU wgjQ== 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=PRVVrWr1dkuT1tVe6teh0w/edU9ae96q3kRiLd5UG5I=; b=IRB6hRaAz3Khofn3TMKPqc08J7t4KCg5kaWgwdTDCcHVzFj1H5kJhjGo2mhFEomhYm YdJe4+spenbfNKsjipOiVN6yl+T4XxtND3dq/+LFkAwcyhL7ts/QKpWwPINm3UfIZxBo xKbl85qM66Iph+hbzCGN8mdS7w+TFnrRrLiCnPQYXFSCpa9d0fDGqW354biw990ijcEH na4w5Lep5dCu8vnkzMTGXZrkZNcnjOhLkRehhj4/8999p9wOV/yOH2TOwIkVF8QPmY4w hlZH1ezOw6ineGTTXRBKzdJ2vVXageanEUYCej+slVWZEDU3Q2Qi1hWRdAL8RUlV5pIF /E5A== X-Gm-Message-State: APf1xPDKLsnRq2MsbRiSibsMELA3AzoZvDSqo+H9LarnA0dEWXPqB79c BtnxaHogPwKYjIFlGKwET58= X-Google-Smtp-Source: AH8x227Y6jY77hHBrInll6owTmdpMJkJTaQaiqbstw++NYidNdVmDCNOv8P2x3Y2d8hWBdGtbnAPqA== X-Received: by 10.55.74.2 with SMTP id x2mr3733175qka.314.1518494962567; Mon, 12 Feb 2018 20:09:22 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 20/30] sdbus: add trace events Date: Tue, 13 Feb 2018 01:07:59 -0300 Message-Id: <20180213040809.26021-21-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/core.c | 14 ++++++++++++-- hw/sd/trace-events | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/hw/sd/core.c b/hw/sd/core.c index 295dc44ab7..498284f109 100644 --- a/hw/sd/core.c +++ b/hw/sd/core.c @@ -23,6 +23,12 @@ #include "hw/qdev-core.h" #include "sysemu/block-backend.h" #include "hw/sd/sd.h" +#include "trace.h" + +static inline const char *sdbus_name(SDBus *sdbus) +{ + return sdbus->qbus.name; +} =20 static SDState *get_card(SDBus *sdbus) { @@ -39,6 +45,7 @@ int sdbus_do_command(SDBus *sdbus, SDRequest *req, uint8_= t *response) { SDState *card =3D get_card(sdbus); =20 + trace_sdbus_command(sdbus_name(sdbus), req->cmd, req->arg, req->crc); if (card) { SDCardClass *sc =3D SD_CARD_GET_CLASS(card); =20 @@ -52,6 +59,7 @@ void sdbus_write_data(SDBus *sdbus, uint8_t value) { SDState *card =3D get_card(sdbus); =20 + trace_sdbus_write(sdbus_name(sdbus), value); if (card) { SDCardClass *sc =3D SD_CARD_GET_CLASS(card); =20 @@ -62,14 +70,16 @@ void sdbus_write_data(SDBus *sdbus, uint8_t value) uint8_t sdbus_read_data(SDBus *sdbus) { SDState *card =3D get_card(sdbus); + uint8_t value =3D 0; =20 if (card) { SDCardClass *sc =3D SD_CARD_GET_CLASS(card); =20 - return sc->read_data(card); + value =3D sc->read_data(card); } + trace_sdbus_read(sdbus_name(sdbus), value); =20 - return 0; + return value; } =20 bool sdbus_data_ready(SDBus *sdbus) diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 78d8707669..ea2746c8b7 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -1,5 +1,10 @@ # See docs/devel/tracing.txt for syntax documentation. =20 +# hw/sd/core.c +sdbus_command(const char *bus_name, uint8_t cmd, uint32_t arg, uint8_t crc= ) "@%s CMD%02d arg 0x%08x crc 0x%02x" +sdbus_read(const char *bus_name, uint8_t value) "@%s value 0x%02x" +sdbus_write(const char *bus_name, uint8_t value) "@%s value 0x%02x" + # hw/sd/sdhci.c sdhci_set_inserted(const char *level) "card state changed: %s" sdhci_send_command(uint8_t cmd, uint32_t arg) "CMD%02u ARG[0x%08x]" --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.193 as permitted sender) client-ip=209.85.220.193; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f193.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.193 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f193.google.com (mail-qk0-f193.google.com [209.85.220.193]) by mx.zohomail.com with SMTPS id 151849496650335.691815993730415; Mon, 12 Feb 2018 20:09:26 -0800 (PST) Received: by mail-qk0-f193.google.com with SMTP id c82so21073898qka.0 for ; Mon, 12 Feb 2018 20:09:26 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:24 -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=W1dvevAzbspS08HAeZHGH4wTLKC5MdZpgLRt4mgZ3K8=; b=DckGnQZB2CHxeVvzCIMusn481bBluGoD0Q76S4xiBCdG5yqYJEtvTJcP1l1dZRbqVQ xDGju7eC8kx7DjUom6ZRZDMigh6AikHY/BjOjAXSmn7/R4zikWyS7ltXfnkLLswBDjG6 eu3C5G4Ddjfl+RRRE4ch+HOZQG60VZdKxV3NTdbtb8YIS9U86dA0V62R7vk0kdJQ6Vy3 HYiVHXPKSSJriczi4tKi38wjk9bgGpuGK6mrOp8/xNSV92Asif0Wz5eWB3UQAGPT/0/N ViP5j4jo8ks9UfvKXctxbU5OKb7OzWHWxDGHHamiOSKJc3G+AQv4Bn9pGi0zhcuv3SkI oXwA== 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=W1dvevAzbspS08HAeZHGH4wTLKC5MdZpgLRt4mgZ3K8=; b=a2UnQi086m7Iy+ZVuHW8GGCZHmFI2Cweglxt2/ZZiO3VfvC4WRFd/LWYBY4PXoqkxw FVJEoCwIcz9QtTJwYwinlvcHPtYRrbIGNcoONNz1b1XR+ptPuh4ME73eENnwGHRj5sT8 AYDeHYxx2tkxxvRSHseHzZfLaWXrB7TqEiItyoSl9GO2gs9U4oKW6Zd3Wf5nM+DmAQl9 JRYFFP/59n9kLtzprGHu7azTTSP5UCVWwqi0lAc6jVN5JQ3mMP1IW4hKz9Eua+i0hr6a B8+Amt5qkrO/FCRb2daHt3IpM2sNnXwNjTYS76Ce0f0c8a/wuw/u1laWjqUGshSe0APe J0Nw== X-Gm-Message-State: APf1xPCPGh092qSczqIG+JnZx4lvS9Ytnp327hmiSZsCXnOtVwBIZ1op XH7ZQqYX61N+FW4UymU1nKc= X-Google-Smtp-Source: AH8x227d4nyYX8qUNbwrW5CBNxmsWJ1SSYiPdHwQxJKuS93exdplbH2Ak/gXathPDbV2BXmngxSfEA== X-Received: by 10.55.66.77 with SMTP id p74mr20096088qka.205.1518494965564; Mon, 12 Feb 2018 20:09:25 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 21/30] sdhci: implement UHS-I voltage switch Date: Tue, 13 Feb 2018 01:08:00 -0300 Message-Id: <20180213040809.26021-22-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 [based on a patch from Alistair Francis from qemu/xilinx tag xilinx-v2015.2] Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- include/hw/sd/sd.h | 16 ++++++++++++++++ include/hw/sd/sdhci.h | 1 + hw/sd/core.c | 13 +++++++++++++ hw/sd/sd.c | 13 +++++++++++++ hw/sd/sdhci.c | 12 +++++++++++- hw/sd/trace-events | 1 + 6 files changed, 55 insertions(+), 1 deletion(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index 96caefe373..f086679493 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -55,6 +55,20 @@ #define AKE_SEQ_ERROR (1 << 3) #define OCR_CCS_BITN 30 =20 +typedef enum { + SD_VOLTAGE_0_4V =3D 400, /* currently not supported */ + SD_VOLTAGE_1_8V =3D 1800, + SD_VOLTAGE_3_0V =3D 3000, + SD_VOLTAGE_3_3V =3D 3300, +} sd_voltage_mv_t; + +typedef enum { + UHS_NOT_SUPPORTED =3D 0, + UHS_I =3D 1, + UHS_II =3D 2, /* currently not supported */ + UHS_III =3D 3, /* currently not supported */ +} sd_uhs_mode_t; + typedef enum { sd_none =3D -1, sd_bc =3D 0, /* broadcast -- no response */ @@ -88,6 +102,7 @@ typedef struct { void (*write_data)(SDState *sd, uint8_t value); uint8_t (*read_data)(SDState *sd); bool (*data_ready)(SDState *sd); + void (*set_voltage)(SDState *sd, uint16_t millivolts); void (*enable)(SDState *sd, bool enable); bool (*get_inserted)(SDState *sd); bool (*get_readonly)(SDState *sd); @@ -134,6 +149,7 @@ void sd_enable(SDState *sd, bool enable); /* Functions to be used by qdevified callers (working via * an SDBus rather than directly with SDState) */ +void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts); int sdbus_do_command(SDBus *sd, SDRequest *req, uint8_t *response); void sdbus_write_data(SDBus *sd, uint8_t value); uint8_t sdbus_read_data(SDBus *sd); diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index fd606e9928..f321767c56 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -96,6 +96,7 @@ typedef struct SDHCIState { bool pending_insert_quirk; /* Quirk for Raspberry Pi card insert int */ uint32_t quirks; uint8_t sd_spec_version; + uint8_t uhs_mode; } SDHCIState; =20 /* diff --git a/hw/sd/core.c b/hw/sd/core.c index 498284f109..6d198ea775 100644 --- a/hw/sd/core.c +++ b/hw/sd/core.c @@ -41,6 +41,19 @@ static SDState *get_card(SDBus *sdbus) return SD_CARD(kid->child); } =20 +void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts) +{ + SDState *card =3D get_card(sdbus); + + trace_sdbus_set_voltage(sdbus_name(sdbus), millivolts); + if (card) { + SDCardClass *sc =3D SD_CARD_GET_CLASS(card); + + assert(sc->set_voltage); + sc->set_voltage(card, millivolts); + } +} + int sdbus_do_command(SDBus *sdbus, SDRequest *req, uint8_t *response) { SDState *card =3D get_card(sdbus); diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 73e405a04f..a8d7a522c0 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -128,6 +128,18 @@ struct SDState { bool enable; }; =20 +static void sd_set_voltage(SDState *sd, uint16_t millivolts) +{ + switch (millivolts) { + case 3001 ... 3600: /* SD_VOLTAGE_3_3V */ + case 2001 ... 3000: /* SD_VOLTAGE_3_0V */ + break; + default: + qemu_log_mask(LOG_GUEST_ERROR, "SD card voltage not supported: %.3= fV", + millivolts / 1000.f); + } +} + static void sd_set_mode(SDState *sd) { switch (sd->state) { @@ -1926,6 +1938,7 @@ static void sd_class_init(ObjectClass *klass, void *d= ata) dc->reset =3D sd_reset; dc->bus_type =3D TYPE_SD_BUS; =20 + sc->set_voltage =3D sd_set_voltage; sc->do_command =3D sd_do_command; sc->write_data =3D sd_write_data; sc->read_data =3D sd_read_data; diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 1dbcb99f52..4e717117e1 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1255,7 +1255,16 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t va= l, unsigned size) sdhci_update_irq(s); break; case SDHC_ACMD12ERRSTS: - MASKED_WRITE(s->acmd12errsts, mask, value); + MASKED_WRITE(s->acmd12errsts, mask, value & UINT16_MAX); + if (s->uhs_mode >=3D UHS_I) { + MASKED_WRITE(s->hostctl2, mask >> 16, value >> 16); + + if (FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, V18_ENA)) { + sdbus_set_voltage(&s->sdbus, SD_VOLTAGE_1_8V); + } else { + sdbus_set_voltage(&s->sdbus, SD_VOLTAGE_3_3V); + } + } break; =20 case SDHC_CAPAB: @@ -1310,6 +1319,7 @@ static void sdhci_init_readonly_registers(SDHCIState = *s, Error **errp) =20 #define DEFINE_SDHCI_COMMON_PROPERTIES(_state) \ DEFINE_PROP_UINT8("sd-spec-version", _state, sd_spec_version, 2), \ + DEFINE_PROP_UINT8("uhs", _state, uhs_mode, UHS_NOT_SUPPORTED), \ \ /* Capabilities registers provide information on supported * features of this specific host controller implementation */ \ diff --git a/hw/sd/trace-events b/hw/sd/trace-events index ea2746c8b7..84d2f398b1 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -4,6 +4,7 @@ sdbus_command(const char *bus_name, uint8_t cmd, uint32_t arg, uint8_t crc= ) "@%s CMD%02d arg 0x%08x crc 0x%02x" sdbus_read(const char *bus_name, uint8_t value) "@%s value 0x%02x" sdbus_write(const char *bus_name, uint8_t value) "@%s value 0x%02x" +sdbus_set_voltage(const char *bus_name, uint16_t millivolts) "@%s %u (mV)" =20 # hw/sd/sdhci.c sdhci_set_inserted(const char *level) "card state changed: %s" --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) client-ip=209.85.220.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by mx.zohomail.com with SMTPS id 1518494969862548.6410364279386; Mon, 12 Feb 2018 20:09:29 -0800 (PST) Received: by mail-qk0-f195.google.com with SMTP id b130so3945266qkg.9 for ; Mon, 12 Feb 2018 20:09:29 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:28 -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=v/2grtOfWJVA/7KYN/IirEijI2MjUkNTOj7K3KsM4L8=; b=fJe5GT3tV9FE46GH5f0HBPHPnX/wsMEpi0eIJUM6i6xNmiLhCICg1+N38JHJlKTj+P 1dZJJ6ieWlA6N0WW8N0QhlVEpJbqlIjVJTzCkDmFW1eX4Hd7+F9e6A/E8O9KwIyVfWJB VsGPXhrRz9nbSkLccdEYlSoyaNpo/DMP1ZgZDjKDaMXrMtks7hmF5foD5hu07Kgx0M2C BwZE4Xeo+fdUnvEfA7K9vddxShDaY3hN1fL5y5v8e71XarhkvhT1F+x+nFH3+lJCk5ty P6ZW9Rc9AiG8e3Y12JIinCQBRnuXhLnmw9S0QMJBNVmwZ4ZtcqeVnTeizcduK+gnMiI0 QETA== 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=v/2grtOfWJVA/7KYN/IirEijI2MjUkNTOj7K3KsM4L8=; b=Dzralz/x8flq9/G54/HxfZhpTSf7p+BRZ3mgasDAJI9wfZpjOHJf4S6GCpMKP/Kvtd rUjJD8hTSE1pWoCdKgRpd9xHhKXasROIHCK/k/KbIpaNCzTT/OguaqKpNMqFuHeasId6 xKF6y2Cs0IgKqx3mPQOjn4WK9tzEp/dk5hRUhu/8mQvu/vIY9KKDBzmy+4Gd0aiQiPjt R5UeTYet6SB2ToT61l4LttYopazMxzXfFRrvrWJg92qdmP/oibCeO9hrxezlZnTEZm5e 2Sj0/YDIDrLpP7u78SqM4huG4pLJGaUFVEi9N9Hx9rXDPm+dBJcSB5IROZE8LtZUZ+cd hb6g== X-Gm-Message-State: APf1xPAmeoXnJNtnDFighk0bk7iyaw4CbwSn0Yi4HVhLNuhbkg6eS3QL 5JySelHFX9MQwfuFgljW4PI8r3dw X-Google-Smtp-Source: AH8x225BVmEkwtBog95f18LzKlZ8SX25d6zFESwlpsQSZjK0WFkTY/q7mOytCdhjwvXhsW5tpXpKHg== X-Received: by 10.55.24.34 with SMTP id j34mr17325973qkh.294.1518494968845; Mon, 12 Feb 2018 20:09:28 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 22/30] sdhci: implement CMD/DAT[] fields in the Present State register Date: Tue, 13 Feb 2018 01:08:01 -0300 Message-Id: <20180213040809.26021-23-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 [based on a patch from Alistair Francis from qemu/xilinx tag xilinx-v2015.2] Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 2 ++ include/hw/sd/sd.h | 4 ++++ hw/sd/core.c | 34 ++++++++++++++++++++++++++++++++++ hw/sd/sd.c | 16 ++++++++++++++++ hw/sd/sdhci.c | 4 ++++ hw/sd/trace-events | 2 ++ 6 files changed, 62 insertions(+) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 5c69270988..0092627076 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -82,6 +82,8 @@ #define SDHC_CARD_PRESENT 0x00010000 #define SDHC_CARD_DETECT 0x00040000 #define SDHC_WRITE_PROTECT 0x00080000 +FIELD(SDHC_PRNSTS, DAT_LVL, 20, 4); +FIELD(SDHC_PRNSTS, CMD_LVL, 24, 1); #define TRANSFERRING_DATA(x) \ ((x) & (SDHC_DOING_READ | SDHC_DOING_WRITE)) =20 diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index f086679493..bf1eb0713c 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -103,6 +103,8 @@ typedef struct { uint8_t (*read_data)(SDState *sd); bool (*data_ready)(SDState *sd); void (*set_voltage)(SDState *sd, uint16_t millivolts); + uint8_t (*get_dat_lines)(SDState *sd); + bool (*get_cmd_line)(SDState *sd); void (*enable)(SDState *sd, bool enable); bool (*get_inserted)(SDState *sd); bool (*get_readonly)(SDState *sd); @@ -150,6 +152,8 @@ void sd_enable(SDState *sd, bool enable); * an SDBus rather than directly with SDState) */ void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts); +uint8_t sdbus_get_dat_lines(SDBus *sdbus); +bool sdbus_get_cmd_line(SDBus *sdbus); int sdbus_do_command(SDBus *sd, SDRequest *req, uint8_t *response); void sdbus_write_data(SDBus *sd, uint8_t value); uint8_t sdbus_read_data(SDBus *sd); diff --git a/hw/sd/core.c b/hw/sd/core.c index 6d198ea775..3c6eae6c88 100644 --- a/hw/sd/core.c +++ b/hw/sd/core.c @@ -41,6 +41,40 @@ static SDState *get_card(SDBus *sdbus) return SD_CARD(kid->child); } =20 +uint8_t sdbus_get_dat_lines(SDBus *sdbus) +{ + SDState *slave =3D get_card(sdbus); + uint8_t dat_lines =3D 0b1111; /* 4 bit bus width */ + + if (slave) { + SDCardClass *sc =3D SD_CARD_GET_CLASS(slave); + + if (sc->get_dat_lines) { + dat_lines =3D sc->get_dat_lines(slave); + } + } + trace_sdbus_get_dat_lines(sdbus_name(sdbus), dat_lines); + + return dat_lines; +} + +bool sdbus_get_cmd_line(SDBus *sdbus) +{ + SDState *slave =3D get_card(sdbus); + bool cmd_line =3D true; + + if (slave) { + SDCardClass *sc =3D SD_CARD_GET_CLASS(slave); + + if (sc->get_cmd_line) { + cmd_line =3D sc->get_cmd_line(slave); + } + } + trace_sdbus_get_cmd_line(sdbus_name(sdbus), cmd_line); + + return cmd_line; +} + void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts) { SDState *card =3D get_card(sdbus); diff --git a/hw/sd/sd.c b/hw/sd/sd.c index a8d7a522c0..9ac9b63ff8 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -126,8 +126,20 @@ struct SDState { BlockBackend *blk; =20 bool enable; + uint8_t dat_lines; + bool cmd_line; }; =20 +static uint8_t sd_get_dat_lines(SDState *sd) +{ + return sd->enable ? sd->dat_lines : 0; +} + +static bool sd_get_cmd_line(SDState *sd) +{ + return sd->enable ? sd->cmd_line : false; +} + static void sd_set_voltage(SDState *sd, uint16_t millivolts) { switch (millivolts) { @@ -457,6 +469,8 @@ static void sd_reset(DeviceState *dev) sd->blk_len =3D 0x200; sd->pwd_len =3D 0; sd->expecting_acmd =3D false; + sd->dat_lines =3D 0xf; + sd->cmd_line =3D true; sd->multi_blk_cnt =3D 0; } =20 @@ -1939,6 +1953,8 @@ static void sd_class_init(ObjectClass *klass, void *d= ata) dc->bus_type =3D TYPE_SD_BUS; =20 sc->set_voltage =3D sd_set_voltage; + sc->get_dat_lines =3D sd_get_dat_lines; + sc->get_cmd_line =3D sd_get_cmd_line; sc->do_command =3D sd_do_command; sc->write_data =3D sd_write_data; sc->read_data =3D sd_read_data; diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 4e717117e1..0cd968fc6b 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1003,6 +1003,10 @@ static uint64_t sdhci_read(void *opaque, hwaddr offs= et, unsigned size) break; case SDHC_PRNSTS: ret =3D s->prnsts; + ret =3D FIELD_DP32(ret, SDHC_PRNSTS, DAT_LVL, + sdbus_get_dat_lines(&s->sdbus)); + ret =3D FIELD_DP32(ret, SDHC_PRNSTS, CMD_LVL, + sdbus_get_cmd_line(&s->sdbus)); break; case SDHC_HOSTCTL: ret =3D s->hostctl1 | (s->pwrcon << 8) | (s->blkgap << 16) | diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 84d2f398b1..0f8536db32 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -5,6 +5,8 @@ sdbus_command(const char *bus_name, uint8_t cmd, uint32_t a= rg, uint8_t crc) "@%s sdbus_read(const char *bus_name, uint8_t value) "@%s value 0x%02x" sdbus_write(const char *bus_name, uint8_t value) "@%s value 0x%02x" sdbus_set_voltage(const char *bus_name, uint16_t millivolts) "@%s %u (mV)" +sdbus_get_dat_lines(const char *bus_name, uint8_t dat_lines) "@%s dat_line= s: %u" +sdbus_get_cmd_line(const char *bus_name, bool cmd_line) "@%s cmd_line: %u" =20 # hw/sd/sdhci.c sdhci_set_inserted(const char *level) "card state changed: %s" --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) client-ip=209.85.220.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f194.google.com (mail-qk0-f194.google.com [209.85.220.194]) by mx.zohomail.com with SMTPS id 1518494972831783.7249154099961; Mon, 12 Feb 2018 20:09:32 -0800 (PST) Received: by mail-qk0-f194.google.com with SMTP id c128so21066269qkb.4 for ; Mon, 12 Feb 2018 20:09:32 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:31 -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=KFpgQEhaZBgnPE0U5fVE+w0zSSdDn/i3ICfYlKUYVZU=; b=q2IgqJdgK7ZluQp/Ab9XSJ32J3TTHTj/K3oWvVeZtFMgkY2bvLwfdVS0+VbwI9yVDd R9b36hCQaghjjd5Ny1cUIRCG8ivnqqYDZDbCl8Ao65lTApZxTKB1sp2WcGR0/cNM0uQ1 GXamXMmIp8T31GfuiAuQzD6Oq5tbidKuCorD/NVmUZ6p90N8AAXP0bdsCaeuQLMNAI2C jVbadu2aJ9/QgY9eYb2oYRc4ACuv3q4lCYm0zY4W0dYrx4j65RXZjdQsn1MdAfrbHhZP XCzFcH1RCodPAwXCkDNZyeefTtkny7F9Fk5So1jlbK83ux9aa7uSRh3HvoXeHjs+4JdN flWg== 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=KFpgQEhaZBgnPE0U5fVE+w0zSSdDn/i3ICfYlKUYVZU=; b=IkK4jaZvKA67G0HqsTAduZN/37ZBfj39oHR+VEZib7UB9Ihdk/ySD42rT/BbLFHutL J6w25UKm5QMEtJW+y6vM0bIqE5d4FQK0ggSPGs1nf3Uvzb7Qp3jYa2nwXYY7OWK/fKLo K8FmSgFF0ce721yivuaqHVJh9jih2iVjG13h+TZMSEiEpPhlQvXqCG2eREVY+/hJK76x 5szjjYndNjCWfqrkLfTWg0A9SG2YZ/5r136MMRryQYGYas8GTvdZZEWPe4nRjmVlsplt 2KQSniR7llVX00eYD1KTC13WCWKKQ738GOdCKEO9UX43ITXjmCexgORUEwH5ViFnlEhR WJng== X-Gm-Message-State: APf1xPCUWLFeE/8k01gGUx4n9QnXMMuPbGn73w2J0VkREyUoElicEEpH 8WMDEJ72XhM6lPi3CfbYPIUCHpZ0 X-Google-Smtp-Source: AH8x2277QRc8ByEFOEc9RT2uTOPJyTBQm+FvLIU+jHbH7+tBd3Coyfxg0lPLpzdUWPsackHRCUHRCw== X-Received: by 10.55.112.132 with SMTP id l126mr20889336qkc.296.1518494972006; Mon, 12 Feb 2018 20:09:32 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng , qemu-arm@nongnu.org (open list:ARM) Subject: [PATCH v13 23/30] hw/arm/bcm2835_peripherals: implement SDHCI Spec v3 Date: Tue, 13 Feb 2018 01:08:02 -0300 Message-Id: <20180213040809.26021-24-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/arm/bcm2835_peripherals.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c index 12e0dd11af..ca971e83e0 100644 --- a/hw/arm/bcm2835_peripherals.c +++ b/hw/arm/bcm2835_peripherals.c @@ -254,14 +254,19 @@ static void bcm2835_peripherals_realize(DeviceState *= dev, Error **errp) memory_region_add_subregion(&s->peri_mr, RNG_OFFSET, sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->rng), 0)); =20 - /* Extended Mass Media Controller */ - object_property_set_int(OBJECT(&s->sdhci), BCM2835_SDHC_CAPAREG, "capa= reg", - &err); - if (err) { - error_propagate(errp, err); - return; - } - + /* Extended Mass Media Controller + * + * Compatible with: + * - SD Host Controller Specification Version 3.0 Draft 1.0 + * - SDIO Specification Version 3.0 + * - MMC Specification Version 4.4 + * + * For the exact details please refer to the Arasan documentation: + * SD3.0_Host_AHB_eMMC4.4_Usersguide_ver5.9_jan11_10.pdf + */ + object_property_set_uint(OBJECT(&s->sdhci), 3, "sd-spec-version", &err= ); + object_property_set_uint(OBJECT(&s->sdhci), BCM2835_SDHC_CAPAREG, "cap= areg", + &err); object_property_set_bool(OBJECT(&s->sdhci), true, "pending-insert-quir= k", &err); if (err) { --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.196 as permitted sender) client-ip=209.85.216.196; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f196.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.196 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f196.google.com (mail-qt0-f196.google.com [209.85.216.196]) by mx.zohomail.com with SMTPS id 1518494975973467.519904090786; Mon, 12 Feb 2018 20:09:35 -0800 (PST) Received: by mail-qt0-f196.google.com with SMTP id d26so654550qtj.4 for ; Mon, 12 Feb 2018 20:09:35 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:34 -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=fXbDYPKBtb1ob/8HMTylq1noEaiAiTKM5rsfys7N0tc=; b=QGlBWJEnGwL8fy0Xmb5X5p/FKhy9t8X3g3fob3mnsD2Kgw3XZxD6j5ofFwD05v4+tL Cm/EwANaBVIQtWwAjbJVzic47UV6MNbkX5nMzcSQLscE9ILYPGkPJQR5TaWsYZgAOeT7 gfrXeT7kIQ4rp3AAQIdif58TaVbHnFZYso8zZ9snJGoY0KTJKD6GqFRQ3tODw/exHAxW sgA+4//xyAg9kPnSMlXGEFYTBu/RqMZjaEPyFujSOoNeTCjKCER/+j97Zuk5BUchE34D WOIrQAUpRb6vNZ+GzCs/0kRw/mG+0gJ58RNQxtazrjimci+5lGxu005mnQ/jKUYmZm0p U5cQ== 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=fXbDYPKBtb1ob/8HMTylq1noEaiAiTKM5rsfys7N0tc=; b=hR9BJqw///lIkGy0bb4zJbduNSJ5v+F6wBwEx9laRTdtwkuRlGkF6QvYl0Rf17wInB /qtOj//HRzEyXNqknAFAwRjXnQeHRmx8jK/tuRUTAI5v/VbdaTKI9UFNC6a8/6EENv6F Ex9sJgNQsJG/Esb+n6NoNOBE2ah7fCo8SYRoExrA5vLcURy7RYQvzLs0LASgAcIjhy8T j4xEMjx2KMLh4MHIAlax0CjsI5doLmtGTfMuh5xgOx407yGwUjaPlWAZv+NrtRO0gr5i shYLDpxg1/IMPsEGxzH9ZgqdOVPFAagIGZmQnBP7dDGkXdbVU3LJU1l8AFlOw5VLTb5R L/+Q== X-Gm-Message-State: APf1xPC8jTLhTiQ2T/hLo3VKh0F9yg05ummZFQoff1SnNv2k5MH7rYbE gA8tOvND2RjLWYveGmMex24= X-Google-Smtp-Source: AH8x226eHdv5Ai4M47tZiMtWbF/0ij+A5U8E5X0DxCegH5HwRZgnlf3WmvT/4f8lg/iyGk68CU0rQg== X-Received: by 10.200.36.130 with SMTP id s2mr21747664qts.0.1518494975170; Mon, 12 Feb 2018 20:09:35 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng , qemu-arm@nongnu.org (open list:ARM) Subject: [PATCH v13 24/30] hw/arm/bcm2835_peripherals: change maximum block size to 1kB Date: Tue, 13 Feb 2018 01:08:03 -0300 Message-Id: <20180213040809.26021-25-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 following the datasheet. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Alistair Francis --- hw/arm/bcm2835_peripherals.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c index ca971e83e0..13b63970d7 100644 --- a/hw/arm/bcm2835_peripherals.c +++ b/hw/arm/bcm2835_peripherals.c @@ -19,7 +19,7 @@ #define BCM2835_VC_PERI_BASE 0x7e000000 =20 /* Capabilities for SD controller: no DMA, high-speed, default clocks etc.= */ -#define BCM2835_SDHC_CAPAREG 0x52034b4 +#define BCM2835_SDHC_CAPAREG 0x52134b4 =20 static void bcm2835_peripherals_init(Object *obj) { --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.194 as permitted sender) client-ip=209.85.216.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f194.google.com (mail-qt0-f194.google.com [209.85.216.194]) by mx.zohomail.com with SMTPS id 1518494979393213.45366092901259; Mon, 12 Feb 2018 20:09:39 -0800 (PST) Received: by mail-qt0-f194.google.com with SMTP id q18so2238307qtl.3 for ; Mon, 12 Feb 2018 20:09:39 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:38 -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=v457jH8C5UirGQbVe7z02s40zgDFDhiKAvbmiOY6FF4=; b=bu82+OUht2fGWhGsbRyV+QgBzCZHmQTgsrXn3lRuWNlT1bVtRUGpXojTl4xfMrxQ5Y 9ceiDBayKzvUhdwuJugkbOe7hSf2u2Q/b3oM+Kz03HwqEHShdERK/XJd21HEK5un0CyW LHlDj8nFP7BFdYHn/m2PSFeesbYmcYYtuggiMy+dLzwMaarsCG1y3VQ6Nnh5dY5a4Uws WEySyUYlpS1EdAEZwJeif84FjEisSYixm+xV1B43GJYHFTsHiVqhkbD5xHscFGjZU87R aNK9BG9bZCyrvj+9H+W4LOxnsI27BqY8dLYw8aJjhAOe5E0QKC2d8m4wGiUGwpDNXEsr Kf5Q== 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=v457jH8C5UirGQbVe7z02s40zgDFDhiKAvbmiOY6FF4=; b=oc6s/mf56zmhRTKnSY24W+FdDUrjr2wCutT9A7OMeDdwK8pxxIrtulQWar52ucxmkQ 6Ey1KBajqtE4WduLlorNhKJ6VqZcpSS+QUqmtcwyk3ktBabMAYaCoxTlbInEqEDF/Bjl 8QeFBVf8fg22wL55PJ5I5H0NVHZvtlrFgALNvAFr+O3Et72WpPw0caKJYvlFPHnnQELb uuk4BXLgPvIaf9rZryrgDQIClHdfrxOkW/lpu51pjGs2UiCjjzx0XH9QrtTczszQ6rKk q0uJOZ1YmUGhiNaFzzszjDZe3gVkCunSQm6GZXbYAqW4gPM4WfzeNf+FGc6U05D+t1Yq /EEQ== X-Gm-Message-State: APf1xPBjIFSk8d4Cecfqmga9sS+YZbESzTXPo4EvvdLkUd56W6NrwyjA Lh2jLbpKtLV/MSoD1NpjNBM= X-Google-Smtp-Source: AH8x226JNnmXdYhTSqk0S50Ds/2XMZfgFykamn5b0tjl35gooJYCXmLClJFxGSqESQsbxgPN27lTOA== X-Received: by 10.237.45.97 with SMTP id h88mr1734772qtd.284.1518494978554; Mon, 12 Feb 2018 20:09:38 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng , qemu-arm@nongnu.org (open list:ARM) Subject: [PATCH v13 25/30] hw/arm/fsl-imx6: implement SDHCI Spec. v3 Date: Tue, 13 Feb 2018 01:08:04 -0300 Message-Id: <20180213040809.26021-26-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Alistair Francis --- hw/arm/fsl-imx6.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index e6559a8b12..b6ac72de27 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -27,6 +27,8 @@ #include "chardev/char.h" #include "qemu/error-report.h" =20 +#define IMX6_ESDHC_CAPABILITIES 0x057834b4 + #define NAME_SIZE 20 =20 static void fsl_imx6_init(Object *obj) @@ -348,6 +350,11 @@ static void fsl_imx6_realize(DeviceState *dev, Error *= *errp) { FSL_IMX6_uSDHC4_ADDR, FSL_IMX6_uSDHC4_IRQ }, }; =20 + /* UHS-I SDIO3.0 SDR104 1.8V ADMA */ + object_property_set_uint(OBJECT(&s->esdhc[i]), 3, "sd-spec-version= ", + &err); + object_property_set_uint(OBJECT(&s->esdhc[i]), IMX6_ESDHC_CAPABILI= TIES, + "capareg", &err); object_property_set_bool(OBJECT(&s->esdhc[i]), true, "realized", &= err); if (err) { error_propagate(errp, err); --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.193 as permitted sender) client-ip=209.85.216.193; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f193.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.193 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f193.google.com (mail-qt0-f193.google.com [209.85.216.193]) by mx.zohomail.com with SMTPS id 1518494984142116.86678044248129; Mon, 12 Feb 2018 20:09:44 -0800 (PST) Received: by mail-qt0-f193.google.com with SMTP id f18so2212813qth.11 for ; Mon, 12 Feb 2018 20:09:42 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:41 -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=5qaGRwDZfwX37p33tGyHNiBbUOeIBUssXi21Pjx552M=; b=e7Q0vjOZMjFNqTibOZT7ah02n1F9Wns8Tr058+5eQ6R8t8lc/ewceoXcdwn8YNvemD Pz/AblUcEr5U9YBOXRi4wJvQm7HTBqlVZ1ni6Xk/hF66eNjfZlRA0hWVTRC+2xIxsKBb WP4XXvmsRwMl+pl4qwNy8VkM74dILrygyDQhLbp+v/aNiLbzTOW25bosdYggfzJ8w8nt 6cXuRPkDNupyGeCxhOEvxlpUmN+mP9mIZvL8eiNkhjmtEP+n/l6WeUrxWW5gZ8nhJ9xP 5JFBgXNIzGfcTx7N/lULxwUO7r4MqdVgPR6koUnhD1IKu6u37hrTFQEcubXqHbmn2HAS 3pqQ== 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=5qaGRwDZfwX37p33tGyHNiBbUOeIBUssXi21Pjx552M=; b=LdUm5GxLD5hstebf/xbKyPwV5L0ImpVZAIAHeNGsLmvHEt3cyvcOtfVrAzC7E7odkA 5CepHhxZlYjlh/N/J7NsdHyO9qyDIPkkb1+R8rRJJAZwEONzzbRIJSbBWOIKWWvBzNR4 29sqMteRKtWXBET2GIwv8v5Ku0EJiOTPC97GEBLjkukoAJvMMZHnO88uwseVcfsoYrZV Ez6NKfN0LuWEOujwFSsFdN57IzAcXs4IctWBHKMOdR/X+rmopMIQakcraug8THkfpCci cMfHEBhvSSROxWWeec4Dyb6NCeS+bAOriYo9cZIs6SKioFfjMyWvM5NWK49anCftsEhh TDMw== X-Gm-Message-State: APf1xPAXxhbUsBWjzr18BhHXXM7VVgUtQVlUAKMzaSoCYFSmNtsYcbpH Ta2bBC2PQcTTq8auu/72o8k= X-Google-Smtp-Source: AH8x224x8290Qv1Ui/JJ2busYWhxCf8rPkSc7Bz3QaaXq0HDAITvCl/7KUX2df/9IOFlSPUlRh/vgA== X-Received: by 10.200.33.195 with SMTP id 3mr21745779qtz.1.1518494982334; Mon, 12 Feb 2018 20:09:42 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng , "Edgar E. Iglesias" , qemu-arm@nongnu.org (open list:Xilinx ZynqMP) Subject: [PATCH v13 26/30] hw/arm/xilinx_zynqmp: fix the capabilities/spec version to match the datasheet Date: Tue, 13 Feb 2018 01:08:05 -0300 Message-Id: <20180213040809.26021-27-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 checking Xilinx datasheet "UG1085" (v1.7) Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/arm/xlnx-zynqmp.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index ca398c4159..e39ad73bec 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -53,6 +53,8 @@ #define IPI_ADDR 0xFF300000 #define IPI_IRQ 64 =20 +#define SDHCI_CAPABILITIES 0x280737ec6481 /* Datasheet: UG1085 (v1.7) */ + static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] =3D { 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, }; @@ -387,22 +389,27 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Err= or **errp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, gic_spi[SATA_INTR]); =20 for (i =3D 0; i < XLNX_ZYNQMP_NUM_SDHCI; i++) { - char *bus_name; - - object_property_set_bool(OBJECT(&s->sdhci[i]), true, - "realized", &err); + char *bus_name =3D g_strdup_printf("sd-bus%d", i); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(&s->sdhci[i]); + Object *sdhci =3D OBJECT(&s->sdhci[i]); + + /* Compatible with: + * - SD Host Controller Specification Version 3.00 + * - SDIO Specification Version 3.0 + * - eMMC Specification Version 4.51 + */ + object_property_set_uint(sdhci, 3, "sd-spec-version", &err); + object_property_set_uint(sdhci, SDHCI_CAPABILITIES, "capareg", &er= r); + object_property_set_bool(sdhci, true, "realized", &err); if (err) { error_propagate(errp, err); return; } - sysbus_mmio_map(SYS_BUS_DEVICE(&s->sdhci[i]), 0, - sdhci_addr[i]); - sysbus_connect_irq(SYS_BUS_DEVICE(&s->sdhci[i]), 0, - gic_spi[sdhci_intr[i]]); + sysbus_mmio_map(sbd, 0, sdhci_addr[i]); + sysbus_connect_irq(sbd, 0, gic_spi[sdhci_intr[i]]); + /* Alias controller SD bus to the SoC itself */ - bus_name =3D g_strdup_printf("sd-bus%d", i); - object_property_add_alias(OBJECT(s), bus_name, - OBJECT(&s->sdhci[i]), "sd-bus", + object_property_add_alias(OBJECT(s), bus_name, sdhci, "sd-bus", &error_abort); g_free(bus_name); } --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.196 as permitted sender) client-ip=209.85.216.196; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f196.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.196 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f196.google.com (mail-qt0-f196.google.com [209.85.216.196]) by mx.zohomail.com with SMTPS id 1518494986483981.6092597221752; Mon, 12 Feb 2018 20:09:46 -0800 (PST) Received: by mail-qt0-f196.google.com with SMTP id d26so654937qtj.4 for ; Mon, 12 Feb 2018 20:09:46 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:45 -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=Ro6NsGQE95TgqhEe4cM+3fq55Nj7p/DfcTmAK0a7k7c=; b=k4Q/dpW885NghB5qN4hh6kUXsMWHlg5S9r0FH1MzgZMWxowi5GpbEYAoOWPABC3q9R TbwdMVxUDrojSjwVEBvL553n5mrXPVeNyjCpUoSQttPGqB/e9YpuF0sK8AvoyC8Bvdmq xxm9ABU2Yfvez4neehbLk36C2g3vh4b8VZS7VuYagSuVG0U7JBRnxIDxHIVONY2eh4vk yMLBMcs7RUVor+ktozv/i5hFJiBm/j4HOOEApYgeQeDOHhh8rSqesSeKyrf0InMYS9fd xcghC7O1rln2ysQcWne95JGOFxsMvRg6RJ+XlyHkz9+bNXhUu0YYtCTPZVFEbJ2N70TE JVLw== 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=Ro6NsGQE95TgqhEe4cM+3fq55Nj7p/DfcTmAK0a7k7c=; b=t2wD2gkBjkHu8qS2M7RfMLQWDM5DNZ//Ax4DVhz1oKsidmqMeIEwiqkUDWJvoZiZQx WicaA/typ5sYYw8KG7Q+k20FCkBFcgTfSGoAZh9LdLqAOh8KPmjsY1xMBZj/pUroBdxE FA6uQPLSmJY5Alj4MY/1toZRSODEiRpHl1vShga7gfxP76KINwyO1Cfu9dBsIsWxpi/t wrrYRqth3gOHC60/AWlyyFPo/EWpezeP28/BH3TnqN0K/fe2r7hqWBKYrNINPGdn0Gga PEiPHMFS8zCmV2YIDKPMLr7scWvGaFgvOg4JGTpP4zEpAqKEhVqkRkrHoEwhA7J5Fqeg 86FQ== X-Gm-Message-State: APf1xPBrsjVvmYE6QybtYhTgnACdvg1ytXvQ64unL08cNQaCmYu+W3Z1 LHSI8ZauXNzuQRMtDEOryeU= X-Google-Smtp-Source: AH8x227JUcCGAQousRg6P6x6V089+dnfUB3h4loGuVywS7lfZwEJYMW18fAprwU1KL8EWk82Lxf+KQ== X-Received: by 10.200.27.67 with SMTP id p3mr22127741qtk.254.1518494985645; Mon, 12 Feb 2018 20:09:45 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng , "Edgar E. Iglesias" , qemu-arm@nongnu.org (open list:Xilinx ZynqMP) Subject: [PATCH v13 27/30] hw/arm/xilinx_zynqmp: enable the UHS-I mode Date: Tue, 13 Feb 2018 01:08:06 -0300 Message-Id: <20180213040809.26021-28-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 see the Xilinx datasheet "UG1085" (v1.7) Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/arm/xlnx-zynqmp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index e39ad73bec..4b93a3abd2 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -400,6 +400,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) */ object_property_set_uint(sdhci, 3, "sd-spec-version", &err); object_property_set_uint(sdhci, SDHCI_CAPABILITIES, "capareg", &er= r); + object_property_set_uint(sdhci, UHS_I, "uhs", &err); object_property_set_bool(sdhci, true, "realized", &err); if (err) { error_propagate(errp, err); --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.194 as permitted sender) client-ip=209.85.216.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f194.google.com (mail-qt0-f194.google.com [209.85.216.194]) by mx.zohomail.com with SMTPS id 1518494989385588.9333688852255; Mon, 12 Feb 2018 20:09:49 -0800 (PST) Received: by mail-qt0-f194.google.com with SMTP id f4so2231437qtj.6 for ; Mon, 12 Feb 2018 20:09:49 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:48 -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=ZRvml1ZGUdaKPUofppn7Ev0zvZpYZ87NNd9NukKAQjs=; b=vR4pxGVa8M56nfmBeYrHYcFmH9ajFP0QwHGP5gI1jsEP5QD+3RwdpCgOvzF7akD7b9 qbaCusN4X4Upq6qmu8KZg2HbOkx63eDCXuyte8Ymuif6+EAK2bszQKC692Mi7tBhv/4K SAh5THV7E0dx80qYLbEH0RtM7AkwRQ0vOlEHfpupHC08RwaNhJ1fx5iqnZEAEjm+tUFF FW/gR8f6pl7BzZ0P/6VeUV7byK+KRge6GKODRGZMmZbyZw1LYkPZFt3fr4dVgqW75YGz tyKEdqUbvjmVTLayYcVxTSpDzb5pnm8msJmv24jZLJUfGuNti/c8O6DY/X+a5TjtLIDQ Ok1g== 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=ZRvml1ZGUdaKPUofppn7Ev0zvZpYZ87NNd9NukKAQjs=; b=j5bwqMPAlgE6vzLGmVq4akv9F1POXHxfxVi7qZbZ3Y64MGOiis2GErpj6uTHxmq5Xh rL39sP8VZck9Rq2PGeVPfNVhWuY52cjZXNfPPp8VjXdTvwsYm/d9Rftb6RRl2UJLfQne kTjGpbOsvvHjSZLdiIXJnrd3iZ8Fjmp52/Ht5DpwSvGaE81FAcIx7qXxd9uLdqHFzhOa X/hKPyMGe8OCol3s2H2fvsnUpI+K44hqqLa2+2wg3KRKp2XYe674ydn/L++wiqYN2XNI UxOVyb4L5sx7HgzZBrqbCi0PnR1OAcJfuYnFdkoHLFaEtQcjhH0WAgm7HiLSomyVW7N9 TLZQ== X-Gm-Message-State: APf1xPBBjhezX7Rj6anMPz2ivGnGOEnb0jqVo3JHB9cK3oU1vw3GbBEQ tHXPf610T6loEoPPqd6APJz2+TTT X-Google-Smtp-Source: AH8x226pIFRjscdP2m1+kfPMBPH3pZCVLT3N3iVNJ1ANNpe0jjoGfA/q8sh+gSLpHaqKPUuwyUOUrw== X-Received: by 10.237.53.195 with SMTP id d3mr2771711qte.276.1518494988564; Mon, 12 Feb 2018 20:09:48 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 28/30] sdhci: check Spec v3 capabilities qtest Date: Tue, 13 Feb 2018 01:08:07 -0300 Message-Id: <20180213040809.26021-29-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Alistair Francis --- tests/sdhci-test.c | 12 ++++++++++++ tests/Makefile.include | 1 + 2 files changed, 13 insertions(+) diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c index 898c43ff4f..39d0f87788 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -42,10 +42,22 @@ static const struct sdhci_t { { "arm", "smdkc210", {0x12510000, 2, 0, {1, 0x5e80080} } }, =20 + /* i.MX 6 */ + { "arm", "sabrelite", + {0x02190000, 3, 0, {1, 0x057834b4} } }, + + /* BCM2835 */ + { "arm", "raspi2", + {0x3f300000, 3, 52, {0, 0x052134b4} } }, + /* Zynq-7000 */ { "arm", "xilinx-zynq-a9", /* Datasheet: UG585 (v1.12.1) */ {0xe0100000, 2, 0, {1, 0x69ec0080} } }, =20 + /* ZynqMP */ + { "aarch64", "xlnx-zcu102", /* Datasheet: UG1085 (v1.7) */ + {0xff160000, 3, 0, {1, 0x280737ec6481} } }, + }; =20 typedef struct QSDHCI { diff --git a/tests/Makefile.include b/tests/Makefile.include index 52be9b3fa5..278c13aa93 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -371,6 +371,7 @@ check-qtest-arm-y +=3D tests/boot-serial-test$(EXESUF) check-qtest-arm-y +=3D tests/sdhci-test$(EXESUF) =20 check-qtest-aarch64-y =3D tests/numa-test$(EXESUF) +check-qtest-aarch64-y +=3D tests/sdhci-test$(EXESUF) =20 check-qtest-microblazeel-y =3D $(check-qtest-microblaze-y) =20 --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.193 as permitted sender) client-ip=209.85.216.193; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f193.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.193 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f193.google.com (mail-qt0-f193.google.com [209.85.216.193]) by mx.zohomail.com with SMTPS id 1518494992295304.67698954250613; Mon, 12 Feb 2018 20:09:52 -0800 (PST) Received: by mail-qt0-f193.google.com with SMTP id u6so2208427qtg.13 for ; Mon, 12 Feb 2018 20:09:52 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:50 -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=CSw+keFj0KiM8UJfh3gLP/ZZp830fZk9bqy5fPHP4cc=; b=oXdts8+2jgeUr0Ow7M9Mzfr46fWpo8lrZLliaq8nziR51TnlApZR+pX6FmzT7qo+zi cX3nWXj0JcBSlw2EZa3qoL5n25/nnATLi7QFY+SWf+dcVEqrAO3+pibVt2VX8WzvHLuD AyjGq3p9vU3R7XtPRlbRaFGVbebTOnBvE2b6pDVWoHHXzQebnIEOfy9ewQD9i9Yg11uk +p64dbJtv/6AjikftTAr0++Ps0+X+VPdxZ4Ac32ebfOjU7dtYkSljz3WnKGp0n8li5Qz IMfYP73Tdr7//cYYNg7gD5OD2wA1eOqqUnWwE+WFqQl5xm5xSRjQ608nk+qFq16eajUx 6X9w== 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=CSw+keFj0KiM8UJfh3gLP/ZZp830fZk9bqy5fPHP4cc=; b=PQhw5Bc2dkbV6RZ13h8UVJhkZLeZsDTiSKj013NI834FgSxhG5fGd0iyjEoSRAm7Qe ZzpXKfKtccjAxw86NalhZczdS0c3kz7Ob5kyrBjWzEcUmkSVOCOUxDXNimxFkwoinGbk g6cbxA4+ewgU8uwj8OySAd1HlYzK9QeA05ZbqjdLbO/OXTPN8nf4seTFVIDDP41NGyQY dRgcdvt1Dq4BLYzMyh3bFFoO/d5DD+wzcl8Q1mql2LD+gi2Fp2aWoR0o3XeKsgk1KyqL 67u6z/gb2Gx0OIxzRsxIlIKXGLx8jHZr0giUGe4+gQkmTxUdM8IxvGQALLUpwBk/1kNg 1RZQ== X-Gm-Message-State: APf1xPB49LsCDfkYJhX1syM8o3gs5UyzTJlIAXihae94Fya8dZtp3WTE 45FtBBlThxErGZTJlrZwopQ= X-Google-Smtp-Source: AH8x225C2ElWppb8gPc2D+mi+bsiLydW9QP+vngJbuF2LAKvdtAsIndlYBKODWfuPVZJY3t+Dv3OTw== X-Received: by 10.200.23.235 with SMTP id r40mr5195657qtk.314.1518494991467; Mon, 12 Feb 2018 20:09:51 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 29/30] sdhci: add a check_capab_v3() qtest Date: Tue, 13 Feb 2018 01:08:08 -0300 Message-Id: <20180213040809.26021-30-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Stefan Hajnoczi --- tests/sdhci-test.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c index 39d0f87788..c0b45da88a 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -16,6 +16,8 @@ #define SDHC_CAPAB 0x40 FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); /* since v2 */ FIELD(SDHC_CAPAB, SDMA, 22, 1); +FIELD(SDHC_CAPAB, SDR, 32, 3); /* since v3 */ +FIELD(SDHC_CAPAB, DRIVER, 36, 3); /* since v3 */ #define SDHC_HCVER 0xFE =20 static const struct sdhci_t { @@ -161,6 +163,20 @@ static void check_capab_sdma(QSDHCI *s, bool supported) g_assert_cmpuint(capab_sdma, =3D=3D, supported); } =20 +static void check_capab_v3(QSDHCI *s, uint8_t version) +{ + uint64_t capab, capab_v3; + + if (version < 3) { + /* before v3 those fields are RESERVED */ + capab =3D sdhci_readq(s, SDHC_CAPAB); + capab_v3 =3D FIELD_EX64(capab, SDHC_CAPAB, SDR); + g_assert_cmpuint(capab_v3, =3D=3D, 0); + capab_v3 =3D FIELD_EX64(capab, SDHC_CAPAB, DRIVER); + g_assert_cmpuint(capab_v3, =3D=3D, 0); + } +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s =3D g_new0(QSDHCI, 1); @@ -209,6 +225,7 @@ static void test_machine(const void *data) check_specs_version(s, test->sdhci.version); check_capab_capareg(s, test->sdhci.capab.reg); check_capab_readonly(s); + check_capab_v3(s, test->sdhci.version); check_capab_sdma(s, test->sdhci.capab.sdma); check_capab_baseclock(s, test->sdhci.baseclock); =20 --=20 2.16.1 From nobody Sun May 5 21:48:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.196 as permitted sender) client-ip=209.85.216.196; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f196.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.196 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f196.google.com (mail-qt0-f196.google.com [209.85.216.196]) by mx.zohomail.com with SMTPS id 1518494995008117.28650388593132; Mon, 12 Feb 2018 20:09:55 -0800 (PST) Received: by mail-qt0-f196.google.com with SMTP id d8so2253373qtm.0 for ; Mon, 12 Feb 2018 20:09:54 -0800 (PST) Return-Path: Return-Path: Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id q2sm7350435qki.10.2018.02.12.20.09.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 20:09:53 -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=qzHtdnZrRJ0hEaL2wDSquAWweg4F6IHgvx79gycYgf8=; b=taDaHokW2q4X9tzQIrm6PsN1cIW/0cSGSIuOoE1P95Jpg43AZxVM6LzzZOhNeLWBB1 /7kKLZLwZ3cWKnGSITrR5udTznQ5aWX9+Wd4GMvyUhyu0GVisrKguBfkgRasIHsihu9j fhLecMbt8LxsOyVl0/BBvBVcGw1JCbeMZg2R+bZ5hDn8HhqgYSprcYhv1psH30QmyEaP gGlTRsI8TUuTmvNWO+2gTh5XW1NACLLnYK2yX0VMLZFwLqSOg9+0E3m1is893ud1ib0I MdM3EHcGE/vG1dp1VgP7MMg4Z26EeC+c5kiEqUKnamAhHFtUGwZBNcPJInAdi+n7yLLa wDPg== 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=qzHtdnZrRJ0hEaL2wDSquAWweg4F6IHgvx79gycYgf8=; b=s1XobiawxS5OnBM9cmJfKw5KxA3wIjBUQu7UeiZwAhFEbmiG94AuCTWLAg5PgsVFcc UoLjpjwIKkiX4kk+kQpk6hObqgPbpjxIxLjZv5QM6voBbCtsKsYr7CEu3deyM06wuPpD JjOgawvgpP9/eYOp5Snf/1ZD0LKSim6JkVBgv7XVm/A2Zr5w+gGfBiIEdrkmol32c8Jt IdP+TZjbFckyneHX/GGb6VDy3Tu7ih4XmeRSB8yzWEmR/d8q4y3rRmbx88DDyXru6zdg NWHaTM65b9lJZ2LnNblbSObzPz4Ibqc4sg5Ay6KvjerFBXFUU/h0sQoJViuiSWzzkbdE ObeQ== X-Gm-Message-State: APf1xPDcFvXA0N5nprniMb7tpiYjgfVhBGFpQc2hmcrhlo14pdABiFyZ zzZ3T5NHZHFtcq8AO9LUQGg= X-Google-Smtp-Source: AH8x225r/OudpiZxHobEo+3ZhSr9zeYW5Z+UHSQnlSDHb3YRe19BI9woabtF+R7+wjcWsVbqf6Az3Q== X-Received: by 10.200.4.21 with SMTP id v21mr4811880qtg.69.1518494994171; Mon, 12 Feb 2018 20:09:54 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Paolo Bonzini Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Peter Maydell , Alistair Francis , "Edgar E . Iglesias" , Fam Zheng Subject: [PATCH v13 30/30] sdhci: add Spec v4.2 register definitions Date: Tue, 13 Feb 2018 01:08:09 -0300 Message-Id: <20180213040809.26021-31-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180213040809.26021-1-f4bug@amsat.org> References: <20180213040809.26021-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 9 +++++++++ hw/sd/sdhci.c | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 0092627076..e1bb733aed 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -198,6 +198,10 @@ FIELD(SDHC_HOSTCTL2, V18_ENA, 3, 1); /* UHS-I= only */ FIELD(SDHC_HOSTCTL2, DRIVER_STRENGTH, 4, 2); /* UHS-I only */ FIELD(SDHC_HOSTCTL2, EXECUTE_TUNING, 6, 1); /* UHS-I only */ FIELD(SDHC_HOSTCTL2, SAMPLING_CLKSEL, 7, 1); /* UHS-I only */ +FIELD(SDHC_HOSTCTL2, UHS_II_ENA, 8, 1); /* since v4 */ +FIELD(SDHC_HOSTCTL2, ADMA2_LENGTH, 10, 1); /* since v4 */ +FIELD(SDHC_HOSTCTL2, CMD23_ENA, 11, 1); /* since v4 */ +FIELD(SDHC_HOSTCTL2, VERSION4, 12, 1); /* since v4 */ FIELD(SDHC_HOSTCTL2, ASYNC_INT, 14, 1); FIELD(SDHC_HOSTCTL2, PRESET_ENA, 15, 1); =20 @@ -216,10 +220,12 @@ FIELD(SDHC_CAPAB, SUSPRESUME, 23, 1); FIELD(SDHC_CAPAB, V33, 24, 1); FIELD(SDHC_CAPAB, V30, 25, 1); FIELD(SDHC_CAPAB, V18, 26, 1); +FIELD(SDHC_CAPAB, BUS64BIT_V4, 27, 1); /* since v4.10 */ FIELD(SDHC_CAPAB, BUS64BIT, 28, 1); /* since v2 */ FIELD(SDHC_CAPAB, ASYNC_INT, 29, 1); /* since v3 */ FIELD(SDHC_CAPAB, SLOT_TYPE, 30, 2); /* since v3 */ FIELD(SDHC_CAPAB, BUS_SPEED, 32, 3); /* since v3 */ +FIELD(SDHC_CAPAB, UHS_II, 35, 8); /* since v4.20 */ FIELD(SDHC_CAPAB, DRIVER_STRENGTH, 36, 3); /* since v3 */ FIELD(SDHC_CAPAB, DRIVER_TYPE_A, 36, 1); /* since v3 */ FIELD(SDHC_CAPAB, DRIVER_TYPE_C, 37, 1); /* since v3 */ @@ -228,12 +234,15 @@ FIELD(SDHC_CAPAB, TIMER_RETUNING, 40, 4); /* sinc= e v3 */ FIELD(SDHC_CAPAB, SDR50_TUNING, 45, 1); /* since v3 */ FIELD(SDHC_CAPAB, RETUNING_MODE, 46, 2); /* since v3 */ FIELD(SDHC_CAPAB, CLOCK_MULT, 48, 8); /* since v3 */ +FIELD(SDHC_CAPAB, ADMA3, 59, 1); /* since v4.20 */ +FIELD(SDHC_CAPAB, V18_VDD2, 60, 1); /* since v4.20 */ =20 /* HWInit Maximum Current Capabilities Register 0x0 */ #define SDHC_MAXCURR 0x48 FIELD(SDHC_MAXCURR, V33_VDD1, 0, 8); FIELD(SDHC_MAXCURR, V30_VDD1, 8, 8); FIELD(SDHC_MAXCURR, V18_VDD1, 16, 8); +FIELD(SDHC_MAXCURR, V18_VDD2, 32, 8); /* since v4.20 */ =20 /* W Force Event Auto CMD12 Error Interrupt Register 0x0000 */ #define SDHC_FEAER 0x50 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 0cd968fc6b..74b1802503 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -91,6 +91,20 @@ static void sdhci_check_capareg(SDHCIState *s, Error **e= rrp) bool unit_mhz; =20 switch (s->sd_spec_version) { + case 4: + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, BUS64BIT_V4); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, BUS64BIT_V4, 0); + trace_sdhci_capareg("64-bit system bus (v4)", val); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, UHS_II); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, UHS_II, 0); + trace_sdhci_capareg("UHS-II", val); + + val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, ADMA3); + msk =3D FIELD_DP64(msk, SDHC_CAPAB, ADMA3, 0); + trace_sdhci_capareg("ADMA3", val); + + /* fallback */ case 3: val =3D FIELD_EX64(s->capareg, SDHC_CAPAB, ASYNC_INT); trace_sdhci_capareg("async interrupt", val); --=20 2.16.1