From patchwork Tue Feb 13 04:07:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872565 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LkBSvry9"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTZF0HbRz9s7v for ; Tue, 13 Feb 2018 15:09:25 +1100 (AEDT) Received: from localhost ([::1]:37344 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuF-0000be-1q for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:09:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52550) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRtM-0000ZJ-2z for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtK-0007Da-Ou for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:28 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:33883) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRtK-0007DR-Jb for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:26 -0500 Received: by mail-qk0-x241.google.com with SMTP id o7so6663096qkc.1 for ; Mon, 12 Feb 2018 20:08:26 -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=YKpl9y6pwnPPi5RRUkmfnCoen/s+QmL5+HM2ye/nUXJEkIyo4MnufiE+KYoY/eT51v OK1GSxaaQ+1TgAY+hC/eVExUnInyXznq7wFG0anG5ujQc1VGm/W22n7UAuyK/yNvsMck edxuo8H/zuQikX6HP//ykpk7fK2hVE/2rTeeLTBvwNq9jibv8JnLRqSjsx3bO7eAyH/W LqijKx1y5m32JunFt/f/j2NP1kuSx3nGVlpAN8AYDJXbCnwFMhFB/xCVbzGq6tTZQZ2y j/OrgIgBS0n5O/+X+xbnANsgEJl6FSt6Dc9oWwEX9ia+DW6/g2ndxq9vseNcod4RQYPu nwzg== X-Gm-Message-State: APf1xPD8og09Xe4d6H6W+gWzBYZopfSTj1qWol0QRgemXufnHwUSQGmq CKWoQhEO3C2yV9U+9Ujzat8= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v13 02/30] sdhci: add qtest to check the SD capabilities register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" 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é 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é + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * 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[] = { + /* PC via PCI */ + { "x86_64", "pc", + {-1, 2, 0, {1, 0x057834b4} }, + .pci = { 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 = 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 = sdhci_readq(s, SDHC_CAPAB); + g_assert_cmphex(capab, ==, expected_capab); +} + +static QSDHCI *machine_start(const struct sdhci_t *test) +{ + QSDHCI *s = g_new0(QSDHCI, 1); + + if (test->pci.vendor_id) { + /* PCI */ + uint16_t vendor_id, device_id; + uint64_t barsize; + + global_qtest = qtest_startf("-machine %s -device sdhci-pci", + test->machine); + + s->pci.bus = qpci_init_pc(NULL); + + /* Find PCI device and verify it's the right one */ + s->pci.dev = qpci_device_find(s->pci.bus, QPCI_DEVFN(4, 0)); + g_assert_nonnull(s->pci.dev); + vendor_id = qpci_config_readw(s->pci.dev, PCI_VENDOR_ID); + device_id = qpci_config_readw(s->pci.dev, PCI_DEVICE_ID); + g_assert(vendor_id == test->pci.vendor_id); + g_assert(device_id == test->pci.device_id); + s->mem_bar = qpci_iomap(s->pci.dev, 0, &barsize); + qpci_device_enable(s->pci.dev); + } else { + /* SysBus */ + global_qtest = qtest_startf("-machine %s", test->machine); + s->addr = 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 = data; + QSDHCI *s; + + s = machine_start(test); + + check_capab_capareg(s, test->sdhci.capab.reg); + + machine_stop(s); +} + +int main(int argc, char *argv[]) +{ + const char *arch = qtest_get_arch(); + char *name; + int i; + + g_test_init(&argc, &argv, NULL); + for (i = 0; i < ARRAY_SIZE(models); i++) { + if (strcmp(arch, models[i].arch)) { + continue; + } + name = 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 += tests/migration-test$(EXESUF) check-qtest-i386-y += tests/test-x86-cpuid-compat$(EXESUF) check-qtest-i386-y += tests/numa-test$(EXESUF) check-qtest-x86_64-y += $(check-qtest-i386-y) +check-qtest-x86_64-y += tests/sdhci-test$(EXESUF) gcov-files-i386-y += i386-softmmu/hw/timer/mc146818rtc.c gcov-files-x86_64-y = $(subst i386-softmmu/,x86_64-softmmu/,$(gcov-files-i386-y)) @@ -367,6 +368,7 @@ gcov-files-arm-y += arm-softmmu/hw/block/virtio-blk.c check-qtest-arm-y += tests/test-arm-mptimer$(EXESUF) gcov-files-arm-y += hw/timer/arm_mptimer.c check-qtest-arm-y += tests/boot-serial-test$(EXESUF) +check-qtest-arm-y += tests/sdhci-test$(EXESUF) check-qtest-aarch64-y = tests/numa-test$(EXESUF) @@ -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 tests/acpi-utils.o +tests/sdhci-test$(EXESUF): tests/sdhci-test.o $(libqos-pc-obj-y) tests/migration/stress$(EXESUF): tests/migration/stress.o $(call quiet-command, $(LINKPROG) -static -O3 $(PTHREAD_LIB) -o $@ $< ,"LINK","$(TARGET_DIR)$@") From patchwork Tue Feb 13 04:07:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872568 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="qaLLYk2l"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTdx2BGvz9sPk for ; Tue, 13 Feb 2018 15:12:37 +1100 (AEDT) Received: from localhost ([::1]:37367 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRxL-0003UB-3X for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:12:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52575) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRtR-0000eh-77 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtN-0007Jm-RQ for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:33 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:33425) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRtN-0007JG-N0 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:29 -0500 Received: by mail-qk0-x241.google.com with SMTP id c82so21072111qka.0 for ; Mon, 12 Feb 2018 20:08:29 -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=Tw1gevDh56eMGVTX6IBsG+Kf+kBi1v3/q+Y3h63jQkwsa018VC1ao6BAPo6OIdTWRC LCvQ62u/nfbmr+9Dn0Dlvelx5aK63D17ZjN10R0PdCThahjZ3QLCrzOWYyeZt141EN1T ur03hT6+CB6Ubr3dPWSlUUcL3VmeGL1vvYlvSa0bzgd0vdPORBZ6lUrRGF26MWQ1oasd 1N7SnkUgxyQvFNPE0S9+LTYttVU/XYfGhlZets3xCJrUadhfTMlVh+rtVqsHknJTbu++ XIGOaCv87QmND4JLWB5CehTLpTIEKek01oaUBR3f0wN6xvRENy3t1HJLvoVxgW7UmjgJ 9myg== X-Gm-Message-State: APf1xPCjhHwlXrsfmGtMv1wORgX5fFl4QctS9rqFZ1mn7doaJRa1aFLv QqbLk3Bi2hQM0OYUJNyapuM= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v13 03/30] sdhci: add check_capab_readonly() qtest X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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; } +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 */ static void check_capab_capareg(QSDHCI *s, uint64_t expected_capab) @@ -75,6 +84,20 @@ static void check_capab_capareg(QSDHCI *s, uint64_t expected_capab) g_assert_cmphex(capab, ==, expected_capab); } +static void check_capab_readonly(QSDHCI *s) +{ + const uint64_t vrand = 0x123456789abcdef; + uint64_t capab0, capab1; + + capab0 = sdhci_readq(s, SDHC_CAPAB); + g_assert_cmpuint(capab0, !=, vrand); + + sdhci_writeq(s, SDHC_CAPAB, vrand); + capab1 = sdhci_readq(s, SDHC_CAPAB); + g_assert_cmpuint(capab1, !=, vrand); + g_assert_cmpuint(capab1, ==, capab0); +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s = g_new0(QSDHCI, 1); @@ -121,6 +144,7 @@ static void test_machine(const void *data) s = machine_start(test); check_capab_capareg(s, test->sdhci.capab.reg); + check_capab_readonly(s); machine_stop(s); } From patchwork Tue Feb 13 04:07:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872571 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="gVJbmyfC"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTjY3yH3z9sRW for ; Tue, 13 Feb 2018 15:15:45 +1100 (AEDT) Received: from localhost ([::1]:37395 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS0N-0006Ms-G9 for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:15:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52576) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRtR-0000em-7g for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtQ-0007LV-Dx for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:33 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:38310) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRtQ-0007L1-8m for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:32 -0500 Received: by mail-qt0-x244.google.com with SMTP id k13so2227030qtg.5 for ; Mon, 12 Feb 2018 20:08:32 -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=oc1HCF1d1bFTHTggM8pslldksg5UgtwWoJB7PTbQFD+ZyJ/4L7utl8ofV5zrWVlsZ4 3tTfe1ore/1+UzaCgh+yfPkp4QNSmiIXftRLbuWb3low22iaiYf4kzLN/fJ3m5ZXMk8g K2R+vyhKtclE6w9yfFA9QOK0Dt1tbmDEe0gEbjS2KoMdV6/IR3iYwzDzD7v5/ZCjb0bq jn2i4tJr+YmDFtRCqU661xuNV4AAX5LnFpdoW4NMAircDfUGrFbK8MGUYyil6ULxHxJq vaXLDy0gOsGWmozoGcZRZf1DYUdbaHUHoDFI1BvYkxMTYlhVmqAnnvxBjXcFFKjhtqfd IAQg== X-Gm-Message-State: APf1xPDA1nCulYY1LCt+3BhwIaopviiA3N4aWKcJv203OOEtSxuTWnlU HIljKoIv6Cy2/NONwWoyHTg= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PATCH v13 04/30] sdhci: add a check_capab_baseclock() qtest X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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" #define SDHC_CAPAB 0x40 +FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); /* since v2 */ #define SDHC_HCVER 0xFE static const struct sdhci_t { @@ -98,6 +99,18 @@ static void check_capab_readonly(QSDHCI *s) g_assert_cmpuint(capab1, ==, capab0); } +static void check_capab_baseclock(QSDHCI *s, uint8_t expected_freq) +{ + uint64_t capab, capab_freq; + + if (!expected_freq) { + return; + } + capab = sdhci_readq(s, SDHC_CAPAB); + capab_freq = FIELD_EX64(capab, SDHC_CAPAB, BASECLKFREQ); + g_assert_cmpuint(capab_freq, ==, expected_freq); +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s = g_new0(QSDHCI, 1); @@ -145,6 +158,7 @@ static void test_machine(const void *data) check_capab_capareg(s, test->sdhci.capab.reg); check_capab_readonly(s); + check_capab_baseclock(s, test->sdhci.baseclock); machine_stop(s); } From patchwork Tue Feb 13 04:07:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872566 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="YRN0YGKa"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTZV2pqKz9s7v for ; Tue, 13 Feb 2018 15:09:38 +1100 (AEDT) Received: from localhost ([::1]:37349 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuS-0000kN-BL for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:09:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52592) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRtU-0000hf-38 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtT-0007Ny-7N for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:36 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:36662) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRtT-0007Nj-1v for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:35 -0500 Received: by mail-qt0-x244.google.com with SMTP id q18so2236289qtl.3 for ; Mon, 12 Feb 2018 20:08:35 -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=MtjAU1cxzWG2FMn9vmvjaqiCXXPyrFLLBdSqDbFGdXzd6bxAUHtk9M6GuHhsor11C9 ZIM4GE6Fqiy++KCdeJ4Dr3pUafFosA54l9lT7hos1cI3VD7/4azIVg44qu4Zg8pIlusE EedEty2QJjIifNAnNT1wkHk5/ur19dzsXqKlNFQPWpi2tZ+ZpiTGyXPS3mmGnw+lhXhh eNeIEEnKQKX2T8xznczjOJRxb7TQOC6DO3PFY/tzH/8UAG7vzMP1LaJbRYYVmN3CSuMW hvz3nLm2J+hxlCFOOO4tIAN+MCy83RAkE6XypE50/w+1VLX2bcsE7IK+MdiWWDw5R+5d 8Igw== X-Gm-Message-State: APf1xPDGNbGs9t7nT5/uOB72LifYBcs69WiczNbGFzyAElcLLVlYkPz7 9DnLgW6LKwHMsoIfB5tJjdE= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PATCH v13 05/30] sdhci: add a check_capab_sdma() qtest X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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 @@ #define SDHC_CAPAB 0x40 FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); /* since v2 */ +FIELD(SDHC_CAPAB, SDMA, 22, 1); #define SDHC_HCVER 0xFE static const struct sdhci_t { @@ -111,6 +112,15 @@ static void check_capab_baseclock(QSDHCI *s, uint8_t expected_freq) g_assert_cmpuint(capab_freq, ==, expected_freq); } +static void check_capab_sdma(QSDHCI *s, bool supported) +{ + uint64_t capab, capab_sdma; + + capab = sdhci_readq(s, SDHC_CAPAB); + capab_sdma = FIELD_EX64(capab, SDHC_CAPAB, SDMA); + g_assert_cmpuint(capab_sdma, ==, supported); +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s = g_new0(QSDHCI, 1); @@ -158,6 +168,7 @@ static void test_machine(const void *data) 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); machine_stop(s); From patchwork Tue Feb 13 04:07:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872567 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="YG24sNyo"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTdw3FFMz9s7v for ; Tue, 13 Feb 2018 15:12:36 +1100 (AEDT) Received: from localhost ([::1]:37365 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRxK-0003Ty-FD for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:12:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52604) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRtX-0000jC-5S for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtW-0007UA-9g for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:39 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:34301) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRtW-0007TG-5n for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:38 -0500 Received: by mail-qt0-x242.google.com with SMTP id d14so2248704qtg.1 for ; Mon, 12 Feb 2018 20:08: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=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=iQcmghfVFMGxmsafT8v1Nue4Uu+naoxl5jKFEdVFHoGX4ew5C0WfgRXca25scnys8j 1l3D4ssbAHS4JZxSX7Jya9+7cFg8qMAOhXL2yEQ8NBClKVzWg/YLQlLyAU5gnBm51/Vr xgBhn7Y4wiBAY3ukLfhiC4mxnMY4JQ/ZMqyzgVLgNMbdqZvPdO+d0o98W+m/seAhMcgl PyRAUwmPqGVgsHoH8g+8Sr3vK0/Z+gdYxtVAwzfAU33jCGcp6w478sF6dM1tOS/bvLD/ +9GOV6PTWQ+zUeAJVq78It1NMZh7lmYASn5mS9zicJypgRFyQHPwi4iqde8j192gP3yF ZSgw== X-Gm-Message-State: APf1xPCYmTM6BYoENxyGEnG6i0gW8onIKtIWiIbmNCbIHhZuq80mziH/ KoG/pxJ+w4aaORkAIP7PgCg= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PATCH v13 06/30] sdhci: add qtest to check the SD Spec version X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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; +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 = 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) /* tests */ +static void check_specs_version(QSDHCI *s, uint8_t version) +{ + uint32_t v; + + v = sdhci_readl(s, SDHC_HCVER); + v &= 0xff; + v += 1; + g_assert_cmpuint(v, ==, 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) s = machine_start(test); + 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); From patchwork Tue Feb 13 04:07:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872570 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="tUvCWWAD"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTfJ6gX1z9s7v for ; Tue, 13 Feb 2018 15:12:56 +1100 (AEDT) Received: from localhost ([::1]:37380 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRxe-0003n5-U2 for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:12:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52618) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRtb-0000n9-19 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtZ-0007ZU-Q8 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:43 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:39278) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRtZ-0007ZG-KU for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:41 -0500 Received: by mail-qt0-x241.google.com with SMTP id f4so2229367qtj.6 for ; Mon, 12 Feb 2018 20:08: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=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=GPFo8Gqo9SPUboEbZ8N1Qx1NyZVdCfR1rY8v7lY7LbjKhBF//Il0Bh1WiWQIJGFNxd jqoOOcqmTQ7m+KodwLIAJk8GwmXIhdF1Ciy4OPIFpfE056YJEqIl4J44ilFAzwWXtB5j YqmaCNSWPk2uZPIdxa+4c7sX7favADByKoVtaUv2WInDHUY0KFV/u1eq4uujchMdalrd B6EyqXyDyYFRxDxsuafst5Cfb6QzkjVw+ac9ygSAmqhnqKxCYkx/lMq3bwuO+u0QQ/5K CG78qnprx2y7exLUsc0VMI87FDpyBvRCq4nR/C2K9+6/3crjTV0+qG5A8ZHROzxll3xh d+GA== X-Gm-Message-State: APf1xPCiQWWb0jTNkm2JGcHmpsWYWiPnZsDzbfpaEMif2JT8SZ55KX3s X7+WWWOxGiXPxC3Xg74EU7c= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PATCH v13 07/30] sdhci: add a 'spec_version property' (default to v2) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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 -/* 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 #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 */ 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; /* 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) 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 cleared * and assumed to always preserve their value, given to them during * initialization */ memset(&s->sdmasysad, 0, (uintptr_t)&s->capareg - (uintptr_t)&s->sdmasysad); @@ -918,7 +919,7 @@ static uint64_t sdhci_read(void *opaque, hwaddr offset, unsigned size) ret = (uint32_t)(s->admasysaddr >> 32); break; case SDHC_SLOT_INT_STATUS: - ret = (SD_HOST_SPECv2_VERS << 16) | sdhci_slotint(s); + ret = (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(SDHCIState *s) } } +static void sdhci_init_readonly_registers(SDHCIState *s, Error **errp) +{ + if (s->sd_spec_version != 2) { + error_setg(errp, "Only Spec v2 is supported"); + return; + } + s->version = (SDHC_HCVER_VENDOR << 8) | (s->sd_spec_version - 1); +} + /* --- qdev common --- */ #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) @@ -1206,6 +1218,13 @@ static void sdhci_uninitfn(SDHCIState *s) static void sdhci_common_realize(SDHCIState *s, Error **errp) { + Error *local_err = NULL; + + sdhci_init_readonly_registers(s, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } s->buf_maxsz = sdhci_get_fifolen(s); s->fifo_buffer = g_malloc0(s->buf_maxsz); From patchwork Tue Feb 13 04:07:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872572 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="R6qwbtKf"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTjY2ws7z9sPk for ; Tue, 13 Feb 2018 15:15:44 +1100 (AEDT) Received: from localhost ([::1]:37392 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS0L-0006L0-Ik for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:15:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52636) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRte-0000oH-Gh for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtc-0007aR-Ds for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:45 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:45378) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRtc-0007aF-8N for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:44 -0500 Received: by mail-qt0-x243.google.com with SMTP id x27so2203963qtm.12 for ; Mon, 12 Feb 2018 20:08:44 -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=VEhE5gb6htDL6xgJmA3UG5Jl1DvbkHM4rwI6b4LuU4P6kZzJ6T9Qe8lAaxZHnHB62x U6ROeW1Pv5h/hNrfcqb4RoeTEzqEY+ZEecda7KaAdmylYGtkgGZBV0122+jWVsPxyV+1 8XvwM0qWwMRlMXJWwzpbE2rz4J4sV8WSBJ9wSQ43Igg7nY2xFRyEh2BjH1cz5XlwaypI xoEyBffXTRHCwtdJZKsJcYHoxHPec++ZX4BH30DgdphO2QFyszAUn64j48yN7A9Md9J+ ziKLsMqUYkneZtdLqAHMxAiFPs4/HS/7sNau64E/ei18JKfCM5SRUSuf1PTiQ9eMSKTj cCmw== X-Gm-Message-State: APf1xPD6NSrv0jhuWqr+R/LNGZgrmtMX4AKtbDWAVbEDCO1NqXtO0Kho zeZVJALOPwunubZ4SNGhN3U= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v13 08/30] sdhci: use a numeric value for the default CAPAB register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" using many #defines is not portable when scaling to different HCI. Signed-off-by: Philippe Mathieu-Daudé 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) +#define MASKED_WRITE(reg, mask, val) (reg = (reg & (mask)) | (val)) + /* Default SD/MMC host controller features information, which will be * presented in CAPABILITIES register of generic SD host controller at reset. - * 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 == 512 -#define MAX_BLOCK_LENGTH 0ul -#elif SDHC_CAPAB_MAXBLOCKLENGTH == 1024 -#define MAX_BLOCK_LENGTH 1ul -#elif SDHC_CAPAB_MAXBLOCKLENGTH == 2048 -#define MAX_BLOCK_LENGTH 2ul -#else -#error Max host controller block size can have value 512, 1024 or 2048 only! -#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 = (reg & (mask)) | (val)) +#define SDHC_CAPAB_REG_DEFAULT 0x057834b4 static uint8_t sdhci_slotint(SDHCIState *s) { From patchwork Tue Feb 13 04:07:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872569 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="c7B4YXHo"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTf52QzLz9s7v for ; Tue, 13 Feb 2018 15:12:45 +1100 (AEDT) Received: from localhost ([::1]:37376 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRxT-0003e6-Co for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:12:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52656) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRtg-0000qR-LO for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtf-0007dT-O2 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:48 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:46157) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRtf-0007cb-Jk for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:47 -0500 Received: by mail-qk0-x243.google.com with SMTP id g129so6524368qkb.13 for ; Mon, 12 Feb 2018 20:08:47 -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=tXxo0s1NPXRcjTVWHrhJIY0T/1Q1viJLs0AM0l6R+R4ic/gUbHHAXdhKVr5vQAG0sL fmQxSkbsj8tknFZBOMI0tULHNldy4tXtsE8LUHIw9bBLNsjnvU+/wcg+nW75Y7Vulzez cARHLR39s/PGF5Vhggnd2Yy7NoPRgZjWo/mtGx/T793anzGx/PPc3M5vX2q0uGg11ZaV AKKegSIDb4GYMS11zBlnUa2cFaJMypG0D/p/8l/N5HCUh2oX1jCQ7oQFvP4W+sYxYl3M aKdDyfW29VW1lpO8RzSO/RFzqZBnyLJwy15GGOYLnks7zS7Roto/HEJpnS3mrmM0I2LY Zv/g== X-Gm-Message-State: APf1xPByMR0hWpO/FOH6rOjSonivSMp7fvslzyppThGOkfhabjFgsMod 1At9gKpENF+NOxHPAcls5Dk= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PATCH v13 09/30] sdhci: simplify sdhci_get_fifolen() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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 +#include "hw/registerfields.h" + /* R/W SDMA System Address register 0x0 */ #define SDHC_SYSAD 0x00 @@ -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); /* 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 +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->errintsigen) || @@ -1118,21 +1123,6 @@ static const MemoryRegionOps sdhci_mmio_ops = { .endianness = DEVICE_LITTLE_ENDIAN, }; -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 != 2) { From patchwork Tue Feb 13 04:07:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872575 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Z6MVvQJD"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTnK3X4jz9s7v for ; Tue, 13 Feb 2018 15:19:01 +1100 (AEDT) Received: from localhost ([::1]:37429 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS3X-0000cH-EO for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:18:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52677) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRtk-0000ue-Rh for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtj-0007gg-4K for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:52 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:43399) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRti-0007gH-Up for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:51 -0500 Received: by mail-qk0-x242.google.com with SMTP id i184so9974895qkf.10 for ; Mon, 12 Feb 2018 20:08: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=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=tZUMZt8b7m29nuHhyW3pcAYAO1zKrdrpgTKhLjlpMYtR0aYhMOG/pYaUotYW2UOgqr tg7ExIhKGljL54l/mK+vOcQZa11afPC+gV6W9GcTmPccrEWw5iz1AG64GXuTvy1AEEjx LyuF4rNQJnQogv9kaTBEKpI8VmEkbknDw4r5yNzrEq3jvMiNbRbNw5z4fA6lCyXWD3b4 IWoc4HjwifjITjH73vvCvhrotUQgeOlBQkmZUKPkvvlefgMYtJjSX//lr7N90VwP0aWh iH31KV0qSxx+Ia5U7eg7YUbEJjAm8KTkJOYRXUYgXXJ4SFhWkHtS2cQKEleQ/K7jSHxv x/Aw== X-Gm-Message-State: APf1xPAWqny7r5glqD+dvM1ZQPFQ2+PgLKAlu/PalcB3hI/F38ovzSiP uoiiLBT3m+Btzr60O1YNc7nzzgty 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PATCH v13 10/30] sdhci: check the Spec v1 capabilities correctness X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Incorrect value will throw an error. Note than Spec v2 is supported by default. Signed-off-by: Philippe Mathieu-Daudé 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 @@ /* 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); /* R/W Block Gap Control Register 0x0 */ #define SDHC_BLKGAP 0x2A @@ -124,6 +127,7 @@ /* R/W Timeout Control Register 0x0 */ #define SDHC_TIMEOUTCON 0x2E +FIELD(SDHC_TIMEOUTCON, COUNTER, 0, 4); /* R/W Software Reset Register 0x0 */ #define SDHC_SWRST 0x2F @@ -180,17 +184,31 @@ /* 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); /* 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); /* 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); /* 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 @@ */ #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)); } +/* 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 = s->capareg; + uint32_t val; + bool unit_mhz; + + switch (s->sd_spec_version) { + case 2: /* default version */ + + /* fallback */ + case 1: + unit_mhz = FIELD_EX64(s->capareg, SDHC_CAPAB, TOUNIT); + msk = FIELD_DP64(msk, SDHC_CAPAB, TOUNIT, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, TOCLKFREQ); + msk = 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 = FIELD_EX64(s->capareg, SDHC_CAPAB, BASECLKFREQ); + msk = 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 = FIELD_EX64(s->capareg, SDHC_CAPAB, MAXBLOCKLENGTH); + if (val >= 0b11) { + error_setg(errp, "block size can be 512, 1024 or 2048 only"); + return; + } + msk = FIELD_DP64(msk, SDHC_CAPAB, MAXBLOCKLENGTH, 0); + trace_sdhci_capareg("max block length", sdhci_get_fifolen(s)); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, HIGHSPEED); + msk = FIELD_DP64(msk, SDHC_CAPAB, HIGHSPEED, 0); + trace_sdhci_capareg("high speed", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, SDMA); + msk = FIELD_DP64(msk, SDHC_CAPAB, SDMA, 0); + trace_sdhci_capareg("SDMA", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, SUSPRESUME); + msk = FIELD_DP64(msk, SDHC_CAPAB, SUSPRESUME, 0); + trace_sdhci_capareg("suspend/resume", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, V33); + msk = FIELD_DP64(msk, SDHC_CAPAB, V33, 0); + trace_sdhci_capareg("3.3v", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, V30); + msk = FIELD_DP64(msk, SDHC_CAPAB, V30, 0); + trace_sdhci_capareg("3.0v", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, V18); + msk = 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_version); + } + 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->errintsigen) || @@ -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 &= ~SDHC_TRNS_DMA; } MASKED_WRITE(s->trnmod, mask, value & SDHC_TRNMOD_MASK); @@ -1125,11 +1212,19 @@ static const MemoryRegionOps sdhci_mmio_ops = { static void sdhci_init_readonly_registers(SDHCIState *s, Error **errp) { + Error *local_err = NULL; + if (s->sd_spec_version != 2) { error_setg(errp, "Only Spec v2 is supported"); return; } s->version = (SDHC_HCVER_VENDOR << 8) | (s->sd_spec_version - 1); + + sdhci_check_capareg(s, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } } /* --- 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 = value & (SDHC_CTRL_LED | + hostctl = 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 read from input buffer" sdhci_write_dataport(uint16_t data_count) "write buffer filled with %u bytes of data" +sdhci_capareg(const char *desc, uint16_t val) "%s: %u" # hw/sd/milkymist-memcard.c milkymist_memcard_memory_read(uint32_t addr, uint32_t value) "addr 0x%08x value 0x%08x" From patchwork Tue Feb 13 04:07:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872573 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="PNYGDj9q"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTjq5wLHz9sPk for ; Tue, 13 Feb 2018 15:15:59 +1100 (AEDT) Received: from localhost ([::1]:37400 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS0b-0006Vt-RP for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:15:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52704) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRtp-0000yh-ST for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtp-0007jl-34 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:57 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:36504) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRto-0007jW-Ui for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:08:57 -0500 Received: by mail-qk0-x241.google.com with SMTP id 15so21063194qkl.3 for ; 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=ZsGX2xKAuX9AxlwOQIMGXmIvxhUPUcFP/br3RCeG0mj1pQPk+kS1r/XGtrDondrmJ/ NIMKIMJyCXUl14J9CKORfJIs/0DiooYVg3Hl2+eIhgoxaOTcJvMfCNzhnWqwSTY3rh0r /EKZXHeZI5/UIBcUXaN9tj7eRiI0ms6XrarZRHyotMyNnhZaH0f40SICGZEo33OC+5FT AyYqU5jX+D9Tqrau6lLfEfHEfuaPvstbet2ARibfUyfSb4/eRenMGmoY6m5tayxTqK78 HjrvX+NWj27VeTxhYff+dy8K+7ZW0eIgX32Yqld9FiXwP14+b+wlabCe2UUMO3S2bnqY 1qpA== X-Gm-Message-State: APf1xPCKyi5eK92811MAaIMsXwWcu9034APSp3hC6Fi/3LSj5JDgUMSq B70P/TBXwwrVLHix4ev63nE= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v13 12/30] sdhci: Fix 64-bit ADMA2 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, Alistair Francis , Sai Pavan Boddu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" 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, ADMADescr *dscr) dscr->length = le16_to_cpu(dscr->length); dma_memory_read(s->dma_as, entry_addr + 4, (uint8_t *)(&dscr->addr), 8); - dscr->attr = le64_to_cpu(dscr->attr); - dscr->attr &= 0xfffffff8; + dscr->addr = le64_to_cpu(dscr->addr); + dscr->attr &= (uint8_t) ~0xC0; dscr->incr = 12; break; } From patchwork Tue Feb 13 04:07:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872580 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ZOe25NcC"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTrq0NCGz9s7v for ; Tue, 13 Feb 2018 15:22:02 +1100 (AEDT) Received: from localhost ([::1]:37478 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS6T-0003NM-01 for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:22:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52738) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRtx-00016g-2u for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtw-0007mA-3i for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:05 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:40913) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRtv-0007ls-Vn; Mon, 12 Feb 2018 23:09:04 -0500 Received: by mail-qk0-x243.google.com with SMTP id e20so21079297qkm.7; 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=nbYiHgNI8zPBNUQJhcJm9bRGbNgdapfZAgJFxDZucugzxpJUkbVkEdOQRGL+BWECqf 6M1Mv8LbokUeK74B8NJdYK1Bh1ursyVJnmt50ZQ0Cvb+pqzRuK2gYpEroe+CU/rusnbR MxmTqjfIRrbGB10D2U8b1B4a3BPIllqhJJD0idPcaWL3hUr1tmHb2/tOCqUy/j+6Z7Vi fhB+q1AKwE+jvdij8X8LbB+1KfHTXUL1AH79LvB54JLQicAuxce4tBNZUeFxZhGAU73H 42C5s5TsocA3owUkH8wlWwEHvCBaAeRyLG/uXeULUb+c+8Ke/bXXChhv0Y8CJj4YqxZO Nu4Q== X-Gm-Message-State: APf1xPAgNQOu1X1VB4L/hvOwvUuXJ+vVE6bpI2RJmLUywqG7bbEB9zDh K7GH+IXJVj9n797FSCs2Ayw= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PATCH v13 14/30] hw/arm/exynos4210: access the 64-bit capareg with qdev_prop_set_uint64() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis , Igor Mitsyanko , "open list:Exynos" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" 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é 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_mem) DriveInfo *di; dev = 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); busdev = SYS_BUS_DEVICE(dev); From patchwork Tue Feb 13 04:07:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872576 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="oTvUQJLk"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTnM3L0bz9s7v for ; Tue, 13 Feb 2018 15:19:03 +1100 (AEDT) Received: from localhost ([::1]:37438 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS3Z-0000dw-Ep for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:19:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52759) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRu0-00018U-Gr for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRtz-0007nW-KT for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:08 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:37162) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRtz-0007nM-F6; Mon, 12 Feb 2018 23:09:07 -0500 Received: by mail-qt0-x242.google.com with SMTP id d26so653696qtj.4; Mon, 12 Feb 2018 20:09:07 -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=LRZCjyk4RG7dCGMsInlHQz6rjhcRdIEgB4QPezaRdgG60NvC49MBv8XmvUnJtDBMnP aUfg91cNYcrML25h5PhwBL3j8h8TEbUQR4AS6UWM2WXVqp03t/g1Nvkb/3Uyc+NvVrFn wHV55hleqtNoKwjIbsOYIFshGlIK6p1Yw2tW6sIzIGHtOGwWloO3PBxpcFLBADfw4f78 bgZc9/kyTHzZQ3Sgh1DLWBE+1N48X+V8FVvDIBHeFSqcZbdNT6Z1N52N9qm4AbXg1n3H VnaIaSP3VTmvc/fask5BG5JIK8XfMrGBrLAXMBxXB5UPLMblN7kkstbxrn87Vxv59Lsd n91A== X-Gm-Message-State: APf1xPDApoTRZYr6V2eCpVJy2JOSCRmRsxYN0iSbvLaX+9gqV8pkG63c 4VkkD5CgOeVFPfTHCQMPGhOdzi+z 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PATCH v13 15/30] hw/arm/exynos4210: add a comment about a very similar SDHCI (Spec. v2) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis , Igor Mitsyanko , "open list:Exynos" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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; + /* 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 = qdev_create(NULL, TYPE_SYSBUS_SDHCI); qdev_prop_set_uint64(dev, "capareg", EXYNOS4210_SDHCI_CAPABILITIES); qdev_init_nofail(dev); From patchwork Tue Feb 13 04:07:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872584 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="j9yA8RV7"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTx90Sxlz9sPk for ; Tue, 13 Feb 2018 15:25:49 +1100 (AEDT) Received: from localhost ([::1]:37650 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elSA7-0006f8-2K for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:25:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52784) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRu4-0001Df-R4 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRu3-0007qM-Kx for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:12 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:37883) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRu3-0007qE-FM; Mon, 12 Feb 2018 23:09:11 -0500 Received: by mail-qk0-x241.google.com with SMTP id c128so21065666qkb.4; Mon, 12 Feb 2018 20:09:11 -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=cuVo1W+MfC1zgpR7DY+ak3PBqecPT52HNqvkJnBCvMcctQBXqEU+q6sJlMLFDOwM3K DbnvG6vTqmcYnP9sxCo0m7koxCEMMIRKrCZDvATH3BKC63DyEQZfp/PFNXchaFP7+/HI Peo5EkNNOs3tBMXKtZKtaRyIOm/PFY2/PrMtmz5/l0qJ/vl25QpgT1c9A1QyLlgGwLsq 7r+UGlExfOD52OpDNcObnhAjaidqSJuShHmaRIG1cykqs8X2q9j8/2a+2zJJ+JxjKCYd bFdt8V52mlPOAhg3VUk6j5kSNOxWAiC69lN5J+T9VqSxTXWcm0xC+y8xYhC8+t6lcOz2 +m3g== X-Gm-Message-State: APf1xPCGYhzjRjKyzTTdcji9A9cAZppf1TLJscpemzExGF8G+2G8GFWX uLDZ9380Oo/iHFTt0o38wJ0GoEAX 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v13 16/30] hw/arm/xilinx_zynq: fix the capabilities register to match the datasheet X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:Xilinx Zynq" , "Edgar E. Iglesias" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" checking Xilinx datasheet "UG585" (v1.12.1) Signed-off-by: Philippe Mathieu-Daudé 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] = { #define SLCR_XILINX_UNLOCK_KEY 0xdf0d #define SLCR_XILINX_LOCK_KEY 0x767b +#define ZYNQ_SDHCI_CAPABILITIES 0x69ec0080 /* Datasheet: UG585 (v1.12.1) */ + #define ARMV7_IMM16(x) (extract32((x), 0, 12) | \ extract32((x), 12, 4) << 16) @@ -165,10 +167,8 @@ static void zynq_init(MachineState *machine) MemoryRegion *address_space_mem = get_system_memory(); MemoryRegion *ext_ram = g_new(MemoryRegion, 1); MemoryRegion *ocm_ram = g_new(MemoryRegion, 1); - DeviceState *dev, *carddev; + DeviceState *dev; SysBusDevice *busdev; - DriveInfo *di; - BlockBackend *blk; qemu_irq pic[64]; int n; @@ -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]); - dev = 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 = drive_get_next(IF_SD); - blk = di ? blk_by_legacy_dinfo(di) : NULL; - carddev = 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); - - dev = 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 = drive_get_next(IF_SD); - blk = di ? blk_by_legacy_dinfo(di) : NULL; - carddev = 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); + for (n = 0; n < 2; n++) { + int hci_irq = n ? 79 : 56; + hwaddr hci_addr = 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 = 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_OFFSET]); + + di = drive_get_next(IF_SD); + blk = di ? blk_by_legacy_dinfo(di) : NULL; + carddev = 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); + } dev = 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} } }, + }; typedef struct QSDHCI { From patchwork Tue Feb 13 04:07:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872579 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="bN+DoELE"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTrn5NmWz9s7v for ; Tue, 13 Feb 2018 15:22:01 +1100 (AEDT) Received: from localhost ([::1]:37473 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS6R-0003Mq-Oh for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:21:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52831) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuA-0001K9-Gw for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRu9-00080B-BO for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:18 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:44784) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRu9-0007zW-74 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:17 -0500 Received: by mail-qk0-x242.google.com with SMTP id n188so21058031qkn.11 for ; Mon, 12 Feb 2018 20:09:17 -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=D7k0qfGFe7GXSxY6Z1ZfuJlnFK8GpNPEvFWGD7Uq3jzS8+iAPCrktCQUt2Rjn7+EkT +nKT86PFyxZtK4fckVcAqS/16Sgnc3DILzDhrVLlpxv5KWx41G/4vSr5s9cqZ86QVugO 5ndENz7EUKDodgVI0rE16iEy44P2OsQtOZVFTiE16sq6VTyW/wQEf9k25CWolRVqph9q 607Pj1HnUoPHEY0COmeVZi1SQdPRhYDyQGIZ2eiG58yh62/ItBLUC6ZZtJtif652Jrl2 iEMu74w7rG0PTBV1B3r2dI6k0JH2+9Fo3hcLF/RteACXmBYrgTs55Cmpxe+hgAJ235hg tw/w== X-Gm-Message-State: APf1xPDh4xbLRcEnR7ud7+vGnoplaX268ijd7vlOP6LVizjLTqzDsAMK Qe/vkSIwD1aCb6/H0+n2+wuwPv/p 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PATCH v13 18/30] sdhci: rename the hostctl1 register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" As per the Spec v3.00 Signed-off-by: Philippe Mathieu-Daudé 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, ADMADescr *dscr) uint32_t adma1 = 0; uint64_t adma2 = 0; hwaddr entry_addr = (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 = (SDHCIState *)opaque; 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 == 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 = s->prnsts; break; case SDHC_HOSTCTL: - ret = s->hostctl | (s->pwrcon << 8) | (s->blkgap << 16) | + ret = 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->blkcnt && - s->blksize && SDHC_DMA_TYPE(s->hostctl) == SDHC_CTRL_SDMA) { + s->blksize && SDHC_DMA_TYPE(s->hostctl1) == 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 = { 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 offset, unsigned size) * manipulation code see comments in a similar part of * usdhc_write() */ - hostctl = SDHC_DMA_TYPE(s->hostctl) << (8 - 3); + hostctl = SDHC_DMA_TYPE(s->hostctl1) << (8 - 3); - if (s->hostctl & SDHC_CTRL_8BITBUS) { + if (s->hostctl1 & SDHC_CTRL_8BITBUS) { hostctl |= ESDHC_CTRL_8BITBUS; } - if (s->hostctl & SDHC_CTRL_4BITBUS) { + if (s->hostctl1 & SDHC_CTRL_4BITBUS) { hostctl |= ESDHC_CTRL_4BITBUS; } From patchwork Tue Feb 13 04:07:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872586 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="OUGtjCSQ"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgV0T5pG5z9s7v for ; Tue, 13 Feb 2018 15:28:41 +1100 (AEDT) Received: from localhost ([::1]:37971 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elSCt-0001Gg-T5 for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:28:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52865) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuE-0001O7-3h for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuC-00086O-7y for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:22 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:37985) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuC-00085i-3C for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:20 -0500 Received: by mail-qk0-x241.google.com with SMTP id s198so4950823qke.5 for ; Mon, 12 Feb 2018 20:09:20 -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=E5J5U80NUzGprcfH1/wkjJBt0Mvtm3wlIwWeCurkqj7EB3fjMD56rPrEHttvxqDVqZ FJwMh2n/O3oYCqPIHYd9ARkYb5M/RTl0l9TJBwHpKNm/wlUlJmwvgh5EP8109Op7pxnh eh3/AldMKe1HhrCSGSqQUn9yX/q74ncRFLHN8caNtZIse8Ma3uqM5j4oE7tTSeWWHmI2 Dorqd2H9JRMSL0EFTBF1oqoA4BkbIRy54f1bUKO1mlrBFA7P0LKXvmHSRuxgrQDRgoE0 7hbZs9WvWbGC1a2wubx2s2meNAhM/IxKZTS6nN+s7jOt96KePYKCP60UupapDySumapm aF6g== X-Gm-Message-State: APf1xPCSWHjmX7vuwUB/vvfcjWQgC7E60pNkuqjV9DbdloK7JHwgx+R0 PuiFf4jMn5qAz5kpMHcXz94= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v13 19/30] sdhci: implement the Host Control 2 register (tuning sequence) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" [based on a patch from Alistair Francis from qemu/xilinx tag xilinx-v2015.2] Signed-off-by: Philippe Mathieu-Daudé 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); +/* 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 */ /* 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 = 0; + uint8_t data; + const uint16_t blk_size = s->blksize & BLOCK_SIZE_MASK; if ((s->trnmod & SDHC_TRNS_MULTI) && (s->trnmod & SDHC_TRNS_BLK_CNT_EN) && (s->blkcnt == 0)) { return; } - for (index = 0; index < (s->blksize & BLOCK_SIZE_MASK); index++) { - s->fifo_buffer[index] = sdbus_read_data(&s->sdbus); + for (index = 0; index < blk_size; index++) { + data = sdbus_read_data(&s->sdbus); + if (!FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, EXECUTE_TUNING)) { + /* Device is not in tunning */ + s->fifo_buffer[index] = data; + } + } + + if (FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, EXECUTE_TUNING)) { + /* Device is in tunning */ + s->hostctl2 &= ~R_SDHC_HOSTCTL2_EXECUTE_TUNING_MASK; + s->hostctl2 |= R_SDHC_HOSTCTL2_SAMPLING_CLKSEL_MASK; + s->prnsts &= ~(SDHC_DAT_LINE_ACTIVE | SDHC_DOING_READ | + SDHC_DATA_INHIBIT); + goto read_done; } /* New data now available for READ through Buffer Port Register */ @@ -440,6 +455,7 @@ static void sdhci_read_block_from_card(SDHCIState *s) } } +read_done: sdhci_update_irq(s); } @@ -1005,7 +1021,7 @@ static uint64_t sdhci_read(void *opaque, hwaddr offset, unsigned size) ret = s->norintsigen | (s->errintsigen << 16); break; case SDHC_ACMD12ERRSTS: - ret = s->acmd12errsts; + ret = s->acmd12errsts | (s->hostctl2 << 16); break; case SDHC_CAPAB: ret = (uint32_t)s->capareg; From patchwork Tue Feb 13 04:07:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872574 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Z+5rRn5L"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTk35j08z9s7v for ; Tue, 13 Feb 2018 15:16:11 +1100 (AEDT) Received: from localhost ([::1]:37417 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS0m-0006gf-L4 for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:16:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52890) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuG-0001PQ-1j for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuF-0008GE-2i for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:24 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:39449) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuE-0008Fr-VV for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:23 -0500 Received: by mail-qk0-x244.google.com with SMTP id z197so4213758qkb.6 for ; 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=gqHd4ucAWAmeaZWHHvi4zb4KQAUa+5wadiBeWHumDwjP0UD13GKnbKikESsK/ZyDW4 pV7jJm0whSi6I79SdvmCnbQmVOSLpwXo1kvnyVNvsQGPxnruzDySUFknxAJTMVz+eQ6D qmVqaVvz5lNLrO/tokRRhH4YKbFeF2wXHiBaWIAr/oq6rSakHJEn3XtmpWTuvCFoj6cz 5+4gdwxKxfQVij7ql+T/zLmFnIpaoZTA1MbuOtbamjbTucRZfQPgPhWNb+sIQrYvjWhw ULBAmIXKx+fs5VfC3PHX1IihI/++B8kIfbk2JIR2oSzdzu+fnN4oQM8RJu/DooYAGrbU 2iQw== X-Gm-Message-State: APf1xPCJ7I52xnI/b9Q5DSEY8PoQtwnMdAjUfDTZjO948c1rg/FsIFRO Wzus0IlS7E5tZEmk4EDeLTc9fpJo 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v13 20/30] sdbus: add trace events X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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; +} static SDState *get_card(SDBus *sdbus) { @@ -39,6 +45,7 @@ int sdbus_do_command(SDBus *sdbus, SDRequest *req, uint8_t *response) { SDState *card = get_card(sdbus); + trace_sdbus_command(sdbus_name(sdbus), req->cmd, req->arg, req->crc); if (card) { SDCardClass *sc = SD_CARD_GET_CLASS(card); @@ -52,6 +59,7 @@ void sdbus_write_data(SDBus *sdbus, uint8_t value) { SDState *card = get_card(sdbus); + trace_sdbus_write(sdbus_name(sdbus), value); if (card) { SDCardClass *sc = SD_CARD_GET_CLASS(card); @@ -62,14 +70,16 @@ void sdbus_write_data(SDBus *sdbus, uint8_t value) uint8_t sdbus_read_data(SDBus *sdbus) { SDState *card = get_card(sdbus); + uint8_t value = 0; if (card) { SDCardClass *sc = SD_CARD_GET_CLASS(card); - return sc->read_data(card); + value = sc->read_data(card); } + trace_sdbus_read(sdbus_name(sdbus), value); - return 0; + return value; } 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. +# 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]" From patchwork Tue Feb 13 04:08:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872577 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="DckGnQZB"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTnk0G5Zz9s7f for ; Tue, 13 Feb 2018 15:19:22 +1100 (AEDT) Received: from localhost ([::1]:37447 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS3s-0000v5-46 for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:19:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52917) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuJ-0001Sr-Ho for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuI-0008MK-5d for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:27 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:40916) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuH-0008La-VK for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:26 -0500 Received: by mail-qk0-x244.google.com with SMTP id e20so21079955qkm.7 for ; Mon, 12 Feb 2018 20:09: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=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=geyT6ZCfh6MsqEQXpXRnEzeOZcjtwIVUn5iRHrXi7VkJYhb8Sj2H86IExrpkWT+F63 71YJtnUQu0+SXx2zMJnfkDoPkaPhs9tskbZF8wUX+DcsPv0Lhaz9oTtrgU40ofKpMqRr D4yFEs0qyzzkMdf+qfLl21sFJROuQ7w6547vGbReUaJWcGvLfJe6StTLHNPQacCedioB 9A2GO8fUgvAGK8HrXOSe6Ue1GtEjvsGITZNWLpO9NwA12nEBE5kkbapPCu1hnp5Gkbco zUcrDi4bGfWfXj/NRi8EOgAJDnuXB1F0OIR+BR9l/DldZUomdmnBj7dLY93bhhAQdhzc 8pFA== X-Gm-Message-State: APf1xPD7jhsdsCrzm6R+W7IVOEXhIwlOoHOTljhLE7wolG4EsKsmxmay Q2Vztx9ZOBCnrMidwIpcvqU= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v13 21/30] sdhci: implement UHS-I voltage switch X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" [based on a patch from Alistair Francis from qemu/xilinx tag xilinx-v2015.2] Signed-off-by: Philippe Mathieu-Daudé 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 +typedef enum { + SD_VOLTAGE_0_4V = 400, /* currently not supported */ + SD_VOLTAGE_1_8V = 1800, + SD_VOLTAGE_3_0V = 3000, + SD_VOLTAGE_3_3V = 3300, +} sd_voltage_mv_t; + +typedef enum { + UHS_NOT_SUPPORTED = 0, + UHS_I = 1, + UHS_II = 2, /* currently not supported */ + UHS_III = 3, /* currently not supported */ +} sd_uhs_mode_t; + typedef enum { sd_none = -1, sd_bc = 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; /* 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); } +void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts) +{ + SDState *card = get_card(sdbus); + + trace_sdbus_set_voltage(sdbus_name(sdbus), millivolts); + if (card) { + SDCardClass *sc = 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 = 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; }; +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: %.3fV", + 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 *data) dc->reset = sd_reset; dc->bus_type = TYPE_SD_BUS; + sc->set_voltage = sd_set_voltage; sc->do_command = sd_do_command; sc->write_data = sd_write_data; sc->read_data = 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 val, 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 >= 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; case SDHC_CAPAB: @@ -1310,6 +1319,7 @@ static void sdhci_init_readonly_registers(SDHCIState *s, Error **errp) #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)" # hw/sd/sdhci.c sdhci_set_inserted(const char *level) "card state changed: %s" From patchwork Tue Feb 13 04:08:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872588 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="fJe5GT3t"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgV3c4sdbz9s82 for ; Tue, 13 Feb 2018 15:31:23 +1100 (AEDT) Received: from localhost ([::1]:38062 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elSFU-0003sN-HG for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:31:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52955) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuO-0001Yr-Rk for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuL-0008Q4-Fn for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:32 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:45244) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuL-0008PF-Af for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:29 -0500 Received: by mail-qk0-x244.google.com with SMTP id g2so31115qkd.12 for ; Mon, 12 Feb 2018 20:09:29 -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=ZS0q/MBy6H55WzjCrHqyKJG7QUl1d0tXSQWaNBKe6n4l6jHBIZJ6+wYfoKNBpNtQEd YHR3PWqrf9FBYaPCyJAZur0aDmOsY2e4hXNOzQezSClqZBg20thr7HAVyMBYjOS14899 YxXMMRK14Gc71IeORjlAAw5aLLUnR1lCu/xtpUAYpRA7riAhhMbHd5exr4FFEh/7+qDH cN7iU8LMNvdqNEYI/ZmwZjzkxhhEx2wgesd/extZoNJoEXdrsGDpVUqD3Bp5npv0YMmF QcUl6kIkFe5fpcD181aj/DneTAp2ap1JzCWc75TRjBDqkdwiwlZVtK3vIcUBwJUl8Rdt 7yQg== X-Gm-Message-State: APf1xPDVF75SosH0dVOkAd/E0R7ZWcHtkAqSHfXQjvVHqJ90IF9n0vdt 3Ebr4ss+Jx6d2Q6WR8VR+5k= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v13 22/30] sdhci: implement CMD/DAT[] fields in the Present State register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" [based on a patch from Alistair Francis from qemu/xilinx tag xilinx-v2015.2] Signed-off-by: Philippe Mathieu-Daudé 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)) 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); } +uint8_t sdbus_get_dat_lines(SDBus *sdbus) +{ + SDState *slave = get_card(sdbus); + uint8_t dat_lines = 0b1111; /* 4 bit bus width */ + + if (slave) { + SDCardClass *sc = SD_CARD_GET_CLASS(slave); + + if (sc->get_dat_lines) { + dat_lines = 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 = get_card(sdbus); + bool cmd_line = true; + + if (slave) { + SDCardClass *sc = SD_CARD_GET_CLASS(slave); + + if (sc->get_cmd_line) { + cmd_line = 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 = 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; bool enable; + uint8_t dat_lines; + bool cmd_line; }; +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 = 0x200; sd->pwd_len = 0; sd->expecting_acmd = false; + sd->dat_lines = 0xf; + sd->cmd_line = true; sd->multi_blk_cnt = 0; } @@ -1939,6 +1953,8 @@ static void sd_class_init(ObjectClass *klass, void *data) dc->bus_type = TYPE_SD_BUS; sc->set_voltage = sd_set_voltage; + sc->get_dat_lines = sd_get_dat_lines; + sc->get_cmd_line = sd_get_cmd_line; sc->do_command = sd_do_command; sc->write_data = sd_write_data; sc->read_data = 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 offset, unsigned size) break; case SDHC_PRNSTS: ret = s->prnsts; + ret = FIELD_DP32(ret, SDHC_PRNSTS, DAT_LVL, + sdbus_get_dat_lines(&s->sdbus)); + ret = FIELD_DP32(ret, SDHC_PRNSTS, CMD_LVL, + sdbus_get_cmd_line(&s->sdbus)); break; case SDHC_HOSTCTL: ret = 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 arg, 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_lines: %u" +sdbus_get_cmd_line(const char *bus_name, bool cmd_line) "@%s cmd_line: %u" # hw/sd/sdhci.c sdhci_set_inserted(const char *level) "card state changed: %s" From patchwork Tue Feb 13 04:08:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872581 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="q2IgqJdg"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTsD0xYYz9s7v for ; Tue, 13 Feb 2018 15:22:24 +1100 (AEDT) Received: from localhost ([::1]:37482 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS6o-0003dU-4e for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:22:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52964) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuP-0001Zf-EX for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuO-0008Rm-IA for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:33 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:37986) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuO-0008Re-Cn; Mon, 12 Feb 2018 23:09:32 -0500 Received: by mail-qk0-x241.google.com with SMTP id s198so4951197qke.5; Mon, 12 Feb 2018 20:09:32 -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=CkV+EqxRet+1hQjEDa2Vcol6mTQdGUwYeKVGEDI7iUojgMhondYjUEQcfezWMEjA+M nsz5wsusma4hdGWWK8rWSfMm/U1HyyCuanHvlPbUK8sVSbhp4s7wsIWmsNd3NuDKuOgW RdihFqJA4b9DXQCvMkK50OaROLBCF/+EtCFfsWTCi+0gilFxVW2BWvSZJrJjdA0WV/iO MgF9p4dyv3OYz37Zq9lOQbQTB5PMvVxRyM1/HIvx3W9B3xjetH7cLORAKGmQAJvmRZUE 5vpNF5Vm/Jsj2klJ2WWSjvqFDbq8xFUCU93q21R2t4TwXyiGB6G9Yg9wBGai5vHcwuDK d4qQ== X-Gm-Message-State: APf1xPCM5lR30eEqofifVBV9mrGQyVkE5ymqCmb01gFut/I8OpyPziN1 BMDIubKOBuN1/+aTUJXW5h0= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v13 23/30] hw/arm/bcm2835_peripherals: implement SDHCI Spec v3 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:ARM" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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)); - /* Extended Mass Media Controller */ - object_property_set_int(OBJECT(&s->sdhci), BCM2835_SDHC_CAPAREG, "capareg", - &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, "capareg", + &err); object_property_set_bool(OBJECT(&s->sdhci), true, "pending-insert-quirk", &err); if (err) { From patchwork Tue Feb 13 04:08:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872582 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="QGlBWJEn"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTwW3Xf6z9sPk for ; Tue, 13 Feb 2018 15:25:15 +1100 (AEDT) Received: from localhost ([::1]:37642 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS9Z-0006Cd-Aq for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:25:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53007) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuS-0001dK-Lm for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuR-0008T5-LY for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:36 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:40613) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuR-0008Sy-Gs; Mon, 12 Feb 2018 23:09:35 -0500 Received: by mail-qt0-x243.google.com with SMTP id c19so2226797qtm.7; Mon, 12 Feb 2018 20:09:35 -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=cJlcDVqgDHb2ZO0uvKf4ot4IJhYHrIj1ZoUEkFDNdrbp0qUu7Vov51t44TVqdQbQJy w9uIkwlTbIZo0sjrqIgOYWEXqA5K4SdoToMWW2aif2ZJnyCYzrCPr07kScB2ic0s4zGR EGPHaBzqrEhjYGEEGHmBL2mk7fHYTBC4lYeZaShXPv1Y5wIdzP0hPkKLFPHPHcrt8D9G +/sRXNaVQy2k/68aRdEJZafsO81t4BrfCKI+LAqni7FPk+HjRmUg0s9VKAAZcBZCdPPW rXjN1zyEewxMAeahvYQ++nAJejXCHWyNcQh/fx6lyQm86cuwkIR+AuG7o/w3Owtf970K bmbw== X-Gm-Message-State: APf1xPBZalKIHrxtmIClI5zAnIkglmEYMXipzCggFbl896/rfDy6W+o/ PPfokbFTkJVts0RoqgOWr90= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v13 24/30] hw/arm/bcm2835_peripherals: change maximum block size to 1kB X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:ARM" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" following the datasheet. Signed-off-by: Philippe Mathieu-Daudé 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 /* Capabilities for SD controller: no DMA, high-speed, default clocks etc. */ -#define BCM2835_SDHC_CAPAREG 0x52034b4 +#define BCM2835_SDHC_CAPAREG 0x52134b4 static void bcm2835_peripherals_init(Object *obj) { From patchwork Tue Feb 13 04:08:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872589 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="bu82+OUh"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgV6t5fX1z9sP9 for ; Tue, 13 Feb 2018 15:34:14 +1100 (AEDT) Received: from localhost ([::1]:38669 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elSIG-0006QP-MV for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:34:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53066) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuX-0001hg-NI for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuV-0008Up-2N for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:41 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:34305) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuU-0008Ue-Tg; Mon, 12 Feb 2018 23:09:38 -0500 Received: by mail-qt0-x241.google.com with SMTP id d14so2250666qtg.1; 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=qJYSxv8Yd4uyJ57iApPNl8FC2J0TgHo1+jKx+/JlpMVu0kyZS7Hq4YzmJV2R58gqSc J0u7i1YdC5SyHUtAcAGf2p7DQMKwK0tx/aNaVwoOZZ2lIYSIY7dw+LNPM0wPnQYDG69T vilUchcmvGSk/94eKsPikixmY87ZPLCzjrPM07sEOQcRTWYUL9SflsGXqq5PRojRF90S LpeXe2qyzgO3gmKzcsqV+1eKY8ujUzvsTZh70v1AoCUX8bGRCk2j3NZmYAX1oUBamgCC lBB4mQb2+05oVmdu3W80NQ84HSXE+0OgJwbbNVM9Uwc9xdCH+mJhAKq/B+JNsnQDZnw+ bsQQ== X-Gm-Message-State: APf1xPBViHaTrf1yihYfjitxs/jfx+7g522VbWOZFRmHbWBTYkmfMnQp WLMxH2x46GwPqdBsNglbRTc= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PATCH v13 25/30] hw/arm/fsl-imx6: implement SDHCI Spec. v3 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:ARM" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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" +#define IMX6_ESDHC_CAPABILITIES 0x057834b4 + #define NAME_SIZE 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 }, }; + /* 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_CAPABILITIES, + "capareg", &err); object_property_set_bool(OBJECT(&s->esdhc[i]), true, "realized", &err); if (err) { error_propagate(errp, err); From patchwork Tue Feb 13 04:08:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872578 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="e7Q0vjOZ"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTq83nS2z9s7v for ; Tue, 13 Feb 2018 15:20:36 +1100 (AEDT) Received: from localhost ([::1]:37461 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elS54-00023d-IC for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:20:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53082) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRuZ-0001jo-NC for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuY-0008WT-S3 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:43 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:36669) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuY-0008WI-My; Mon, 12 Feb 2018 23:09:42 -0500 Received: by mail-qt0-x243.google.com with SMTP id q18so2238433qtl.3; Mon, 12 Feb 2018 20:09:42 -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=cDze25uFfoTjkBmb0J4hUbqX3PQacAUCFtvu5v+8oUybkfIMdWUuM2R1TOzlQznida WUf42UbEGtgsef25eFtz9WvnBoSGCSxNXTbDZDKUysMt4bo6wYnV/qRks+I5VG+qpUeo oqJ9qdRBEaHzFuLFfwvvRZLoOzLyEUH3L+MctcTzn6Gb7Xx2wN9YywC+fILu7R2zhXxP eHMxeiAik87OaOGT1jiRypCea4+n3bnV2CqeWS06h2xAO9pLUgu9/tV+MwYIu1xtZxyr yCh85I4ScHiW6yboaRG1G9qycBqoMkR3QcZoIGfIKJjkaQ3PRAM1Ns+98PhQd8JENR6u OGDw== X-Gm-Message-State: APf1xPBetevnjlpWq6pyrjBr8tLTQU2WGIcHKQPjkOhlEQzq9E8suxsX 0aIc26NlL8UrwNXEXY7n+VFzcseO 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v13 26/30] hw/arm/xilinx_zynqmp: fix the capabilities/spec version to match the datasheet X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:Xilinx ZynqMP" , "Edgar E. Iglesias" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" checking Xilinx datasheet "UG1085" (v1.7) Signed-off-by: Philippe Mathieu-Daudé 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 +#define SDHCI_CAPABILITIES 0x280737ec6481 /* Datasheet: UG1085 (v1.7) */ + static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, }; @@ -387,22 +389,27 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, gic_spi[SATA_INTR]); for (i = 0; i < XLNX_ZYNQMP_NUM_SDHCI; i++) { - char *bus_name; - - object_property_set_bool(OBJECT(&s->sdhci[i]), true, - "realized", &err); + char *bus_name = g_strdup_printf("sd-bus%d", i); + SysBusDevice *sbd = SYS_BUS_DEVICE(&s->sdhci[i]); + Object *sdhci = 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", &err); + 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 = 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); } From patchwork Tue Feb 13 04:08:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872585 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="k4Q/dpW8"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgV0F5xK5z9s7v for ; Tue, 13 Feb 2018 15:28:29 +1100 (AEDT) Received: from localhost ([::1]:37934 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elSCh-00011j-Sz for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:28:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53121) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRud-0001li-3k for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuc-00006B-69 for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:47 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:38317) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuc-00005x-14; Mon, 12 Feb 2018 23:09:46 -0500 Received: by mail-qt0-x241.google.com with SMTP id k13so2229375qtg.5; Mon, 12 Feb 2018 20:09: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=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=XaHHiTEcXc28ImmiahcshXvrRtYlnzJiOGFKAPn4emL+y4iBde+QFvBkMCxzL/J/PD hpTyz8o50QOAbWtDsZlvWZ5zrcrN4UZ88t70jDkkeWaN/Zpz7JNLF1Bqw37SUEddzDSD MCBk9/xrYdPG0XNsOqVra/bfnKMmurUVOH0+cHYoNUk8T62nvfdJJUeErsPQxkkNz5nm IBf6y6K3ENro8uyEj3ngubLlV3ChvhTQadNX3uD8EpfEVA3mC5IrFIaweB+kymUkAAwj h7D5pbZykX24fmT2XNILc6cG6Xt+LPsiNco3L0J/sAQKE48mV+qwkkeDwzFZRrU6KTn9 Ez1g== X-Gm-Message-State: APf1xPBmWNWBvXdvLcE2+JRr/hTkmrd0EUuKtP7zIH3lrBWFyxuo3cN3 m85dmqB1MVxFacIGabxaaWA= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PATCH v13 27/30] hw/arm/xilinx_zynqmp: enable the UHS-I mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:Xilinx ZynqMP" , "Edgar E. Iglesias" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" see the Xilinx datasheet "UG1085" (v1.7) Signed-off-by: Philippe Mathieu-Daudé 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", &err); + object_property_set_uint(sdhci, UHS_I, "uhs", &err); object_property_set_bool(sdhci, true, "realized", &err); if (err) { error_propagate(errp, err); From patchwork Tue Feb 13 04:08:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872587 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="vR4pxGVa"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgV3B6V8tz9s82 for ; Tue, 13 Feb 2018 15:31:02 +1100 (AEDT) Received: from localhost ([::1]:38049 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elSFA-0003cv-Uh for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:31:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53139) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRug-0001q1-GN for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuf-00007Q-2L for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:50 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:42328) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRue-00007C-Uo for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:49 -0500 Received: by mail-qt0-x244.google.com with SMTP id l9so1990626qtj.9 for ; 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=js8ZZzHIUVL98BRWu2LrY/bfEB0MbXVEUa4oZv63IrgkBuOey/GlbI3Gxg7Ay1KNdq ZA0A1Cy/ckdOltDUpqrwwpuQg7IuxyN7uU/w834gUn997JBdqx63qF+8xJplJkNiSZpi R8nSG/ozngR2hi8tQ7JagU0huRjFaMKywjgBKYee20KwLMFuPNlZ8JxvB8zgAdbhZmed IzZy05jRswhOh8caD0qUiJ8yB7pkufeStFnvUL7jXhZzjB3yB2QzgDCtQXSJTQbn56CB vMtdx4Ml2SFPPoT/4di06ZNx6fdGG5AhySo3dvqmSs76NSh8fUwzr7/WyOH3tU4s/FXt sXJw== X-Gm-Message-State: APf1xPBx7LCpBZWHrVa1gg8p75BunD77rK/YMDIOm94fxvgtS0fGNOMh X9X6aClCGXhIdE9/0ymDBY0= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PATCH v13 28/30] sdhci: check Spec v3 capabilities qtest X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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} } }, + /* 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} } }, + /* ZynqMP */ + { "aarch64", "xlnx-zcu102", /* Datasheet: UG1085 (v1.7) */ + {0xff160000, 3, 0, {1, 0x280737ec6481} } }, + }; 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 += tests/boot-serial-test$(EXESUF) check-qtest-arm-y += tests/sdhci-test$(EXESUF) check-qtest-aarch64-y = tests/numa-test$(EXESUF) +check-qtest-aarch64-y += tests/sdhci-test$(EXESUF) check-qtest-microblazeel-y = $(check-qtest-microblaze-y) From patchwork Tue Feb 13 04:08:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872583 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="oXdts8+2"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgTx91wfkz9sRW for ; Tue, 13 Feb 2018 15:25:49 +1100 (AEDT) Received: from localhost ([::1]:37656 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elSA7-0006gU-9O for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:25:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53173) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRui-0001sW-UA for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuh-00008w-Vo for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:52 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:33064) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuh-00008n-Qx for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:51 -0500 Received: by mail-qt0-x241.google.com with SMTP id d8so2253285qtm.0 for ; Mon, 12 Feb 2018 20:09:51 -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=WiTCtbfJkDo1S1GXQfvG1W0yDihU4ZfBzRcjROjq6hcOWE0cp8yJZdTEYbx2m825h9 x3ROonDNmShjHrLX2sIJqRjt9exsIHcXGN5OuBKit0r1wyMvRPCOLvHBkza3cgJNc8yS lPh2OxaoAGl9WteWeqc7vF1XAMTPnh7X8Tw3JSFL6MpR6/PpAylu444hou8Vy5OMbFkP BoPn4QLBMEAfXZNYmXFik9ZUO28u6n5r0C+E0p8me/f7c8nHegBDKPTR7oMdqw6Gfvfk Wq6h6j2xBEQXgo45f4A79bfDbsk7cfrAQYZXn9LppTWhudKMq0xlBYBzXZXl3bYKbdut 2Bow== X-Gm-Message-State: APf1xPDn7NAK5195NhW4ply9nf94wzrnJtJgHqiZYswnPxfa7JiZ9NlL vgEiYRmDi/Zk7fN07AJuhfQ= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PATCH v13 29/30] sdhci: add a check_capab_v3() qtest X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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 static const struct sdhci_t { @@ -161,6 +163,20 @@ static void check_capab_sdma(QSDHCI *s, bool supported) g_assert_cmpuint(capab_sdma, ==, supported); } +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 = sdhci_readq(s, SDHC_CAPAB); + capab_v3 = FIELD_EX64(capab, SDHC_CAPAB, SDR); + g_assert_cmpuint(capab_v3, ==, 0); + capab_v3 = FIELD_EX64(capab, SDHC_CAPAB, DRIVER); + g_assert_cmpuint(capab_v3, ==, 0); + } +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s = 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); From patchwork Tue Feb 13 04:08:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 872590 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="taDaHokW"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zgV9m4jFRz9sBZ for ; Tue, 13 Feb 2018 15:36:43 +1100 (AEDT) Received: from localhost ([::1]:39254 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elSKe-0000id-UG for incoming@patchwork.ozlabs.org; Mon, 12 Feb 2018 23:36:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53191) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elRul-0001w2-Rh for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:10:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elRuk-0000A4-NS for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:55 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:39288) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1elRuk-00009t-Hs for qemu-devel@nongnu.org; Mon, 12 Feb 2018 23:09:54 -0500 Received: by mail-qt0-x244.google.com with SMTP id f4so2231610qtj.6 for ; Mon, 12 Feb 2018 20:09:54 -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=FaiU0L1onPyyrNn0EANoDK6qyvAl+7KKQmIHNi5xZok+8+iCtAG5wYCd8Du4/awnWo 8RSy13ppMHLS3cq9Tp0btI5JTJR69oWS3ba84XXAOs+foUbRbCvXlMsfwB/jaPAweCvP 5KEfk4CovMuS9q6c6Bluss8Y5+KoUYIItNuPZUf60c2zoVHmW386K8sc+fEOsm/h68K5 elpPae5ZhUHMmYFE14ez1/UeCDDWB8Z0O13nUroy/Q6/odl2387MM00/lVTKAwvK7qAG fGxcYgAi0qO3qLBSQDQzXgdTvBt8tUBMRNEc7hFiplftNLFVBgUzB2IFpTWzYNTSvQYA FBsQ== X-Gm-Message-State: APf1xPA3+XkLAl54oPv1BHA633fdp977cmQsbtiyrK4Afadx4ArkRj2c 74AyYJ7LAY1hMX9F9aggyOE= 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) 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) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini 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 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PATCH v13 30/30] sdhci: add Spec v4.2 register definitions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , Fam Zheng , qemu-devel@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Alistair Francis Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé 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); @@ -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); /* 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 */ +FIELD(SDHC_CAPAB, ADMA3, 59, 1); /* since v4.20 */ +FIELD(SDHC_CAPAB, V18_VDD2, 60, 1); /* since v4.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 */ /* 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 **errp) bool unit_mhz; switch (s->sd_spec_version) { + case 4: + val = FIELD_EX64(s->capareg, SDHC_CAPAB, BUS64BIT_V4); + msk = FIELD_DP64(msk, SDHC_CAPAB, BUS64BIT_V4, 0); + trace_sdhci_capareg("64-bit system bus (v4)", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, UHS_II); + msk = FIELD_DP64(msk, SDHC_CAPAB, UHS_II, 0); + trace_sdhci_capareg("UHS-II", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, ADMA3); + msk = FIELD_DP64(msk, SDHC_CAPAB, ADMA3, 0); + trace_sdhci_capareg("ADMA3", val); + + /* fallback */ case 3: val = FIELD_EX64(s->capareg, SDHC_CAPAB, ASYNC_INT); trace_sdhci_capareg("async interrupt", val);