From patchwork Wed Feb 7 18:19:14 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: 870576 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="INLmj0FD"; 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 3zc8lB6cxnz9s4q for ; Thu, 8 Feb 2018 05:20:38 +1100 (AEDT) Received: from localhost ([::1]:42103 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKi-0001ju-Ux for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:20:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33751) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUJp-0001j0-Ko for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUJo-0004qM-Qe for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:41 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:40223) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUJo-0004q3-Ms for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:40 -0500 Received: by mail-qk0-x242.google.com with SMTP id e20so2316489qkm.7 for ; Wed, 07 Feb 2018 10:19:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pxzWQFhwWBCzjvVrhx+sd+KGw0B9UoGBPtq/CdVw0Mk=; b=INLmj0FDx9ygkzVg8y/Q5O7qBXR5rAJVCq4e7DNgFBu0lNJTJ4Ioz+tqU8p/4lOGbL hLRiZOCWj2DSREUf3H6dmzzEMc7CNNGC4/RW6pG2+ls/lXxdQZLDrKalIwSNK1EJN2tD p4fAGBcPoNJE8PJ9MXtEQ2kbKzNExbpIXrdoiKjtHEPEdqb1xfqVxyZeDLsp4MD9XvE9 wn7U4zV9xINAfAwYzPAEy+vS9b9hZ8sk3dLow6iap7VEHzkbnb0tlfGiA06nJAZ2oleA Uf7cmbjgxFWZbjEvtraqGOXLMzAdc/BwfVLPa6R+Raq+Kx6hDCDKBhJNL+I1/fQPfGqD x41g== 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=pxzWQFhwWBCzjvVrhx+sd+KGw0B9UoGBPtq/CdVw0Mk=; b=aixLl+aBM7aHNhPk2q462tUzTaUYo8GmX2fqKvpTkQvJg7xe/fWHauwsn+FGG6iYUo 1jkB8KEDMnVdEhAOhe3p7iUHw23GVD3ZkupNiNjl7oZiGrSJ0FCZps3PObWrkzdGh93F ++AE93KeydCz8orEZKnw5VqjQ7IUkfGGwpdwSDEErWwLlrtTze75VtKBcIANsbQjnvoR 2bCYD6hVgE0Hc26J83alYeeUt+Aj49/UpG/YoSWsiUWJnp1cU9vI/vp8NYIo8mEeD3n4 Wm+mhwc9QTKWFn/vm8pv37RDAEj0uv3pcoqV9f1tJEHeT6GBInWMpLytRKtgFymnz2Bt X47g== X-Gm-Message-State: APf1xPD+AHfp+2FdsnCzTjkuEUCOHEgIPJNUHmulne7qe4yxcpTbChpy NAPYfVhVI2iOUYuZlHzsE7c= X-Google-Smtp-Source: AH8x227Edn1F8TxP+43FFxHx2LFmbzeiJ4rtSJyBkFTnG7OEQ3PcpUMSOmFbP61DBFp2Wut0CTdYkg== X-Received: by 10.55.188.199 with SMTP id m190mr10439089qkf.92.1518027580260; Wed, 07 Feb 2018 10:19:40 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.19.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:19:39 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:14 -0300 Message-Id: <20180207181929.8701-2-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 01/16] sdhci: use error_propagate(local_err) in realize() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" avoid the "errp && *errp" pattern (not recommended in "qapi/error.h" comments). Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis --- hw/sd/sdhci.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index fac7fa5c72..817c2525e6 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1300,10 +1300,12 @@ static Property sdhci_pci_properties[] = { static void sdhci_pci_realize(PCIDevice *dev, Error **errp) { SDHCIState *s = PCI_SDHCI(dev); + Error *local_err = NULL; sdhci_initfn(s); sdhci_common_realize(s, errp); - if (errp && *errp) { + if (local_err) { + error_propagate(errp, local_err); return; } @@ -1381,9 +1383,11 @@ static void sdhci_sysbus_realize(DeviceState *dev, Error ** errp) { SDHCIState *s = SYSBUS_SDHCI(dev); SysBusDevice *sbd = SYS_BUS_DEVICE(dev); + Error *local_err = NULL; sdhci_common_realize(s, errp); - if (errp && *errp) { + if (local_err) { + error_propagate(errp, local_err); return; } From patchwork Wed Feb 7 18:19:15 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: 870577 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="LKnj6brQ"; 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 3zc8lH5n6Vz9ryr for ; Thu, 8 Feb 2018 05:20:43 +1100 (AEDT) Received: from localhost ([::1]:42108 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKn-0001mj-Nt for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:20:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33790) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUJt-0001kV-7p for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUJs-0004sC-3T for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:45 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:36780) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUJr-0004rz-Tp for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:44 -0500 Received: by mail-qt0-x241.google.com with SMTP id t25so2881336qtg.3 for ; Wed, 07 Feb 2018 10:19:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QbPc0iey8vhCqpRNUSqZryCGjRIFIxPiHKglA22uxhI=; b=LKnj6brQn+FI/sJi+bfaeEKgD99z/66bSRxMFzhcFH/7oq/pKCWf/G+hzR6pY1mkcu oprJOoNAdDWsDb3PxT/iSlyHBb5zpeLcJV8lHkCfM/f6Y558OdlN25FD7RZmGff1CAu7 S051kXTz82rb34ynPeONCjiDzi8TH//pzT+7M3MHJh8zdmF8r9UmNfCC6mUQHd2K9lpR kRpCh2uwLMWaxiNr9YBR0FMTwlE4g+CXIs/M46bAXcKs96epNdDJ9zsvK5i0FyzOqxS8 pxbjUHn5ecckZwnkmeNu4bo1j35ukkSI8w3fZH4NlmDjwjuKPIFiH2HXVBQRI9z5Hgu5 uGZA== 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=QbPc0iey8vhCqpRNUSqZryCGjRIFIxPiHKglA22uxhI=; b=qGBtEccHJemQt9j4HM6paqHgQbhUpLDy1SoGATgMKCDbxh3Eq0a0/PkLsZw+4+2q+S 5EJHPI4dOq7oCyTYSEJ4Wd/kXF8abiDdUWcDZiXJdKa0zH9JFdLdOjxHEhDMjie41hyp sPm5YSVJlHuWmpEaErfAV6gnp9sYFIskyTLgnEuj8rE4A8zk86bbFmIu87Ygwzlb+jLt sfUW9xY5n0xQSL9ZgFwnUI1DXPtBUGmr6KO47ukCQ65Ud0sbz8mP4BGJKh7iDO3nhd+F OfgfAajVOV2KNMglq8P60rdMWLxaOQ+iju8xzq4UT+9t0/Im2uKqiRwIdifRwYICthkI 2NoA== X-Gm-Message-State: APf1xPAeraCAFMkpbSallkQlkPm8evuvPA+YR9ovmXyxHS0LppX6erVO WCoFgPG7/9JJM3/2N+2s+qXZODc0 X-Google-Smtp-Source: AH8x224XvPjSaBYxojxl6rGOtd4MqtU0RkS0Kr8I8Y5TX1vHBmLcaYN0cMnR8TCpZ8d8/76AY09+uA== X-Received: by 10.237.38.132 with SMTP id q4mr10835039qtd.121.1518027583373; Wed, 07 Feb 2018 10:19:43 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.19.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:19:42 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:15 -0300 Message-Id: <20180207181929.8701-3-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 02/16] 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" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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é --- tests/sdhci-test.c | 139 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/Makefile.include | 3 ++ 2 files changed, 142 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..1105e07093 --- /dev/null +++ b/tests/sdhci-test.c @@ -0,0 +1,139 @@ +/* + * 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; + QPCIBar mem_bar; + } pci; +} QSDHCI; + +static uint64_t sdhci_readq(QSDHCI *s, uintptr_t base, uint32_t reg) +{ + uint64_t val; + + if (s->pci.dev) { + qpci_memread(s->pci.dev, s->pci.mem_bar, reg, &val, sizeof(val)); + } else { + val = qtest_readq(global_qtest, base + reg); + } + + return val; +} + +static void check_capab_capareg(QSDHCI *s, uintptr_t addr, uint64_t expec_capab) +{ + uint64_t capab; + + capab = sdhci_readq(s, addr, SDHC_CAPAB); + g_assert_cmphex(capab, ==, expec_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 -d unimp -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->pci.mem_bar = qpci_iomap(s->pci.dev, 0, &barsize); + qpci_device_enable(s->pci.dev); + } else { + /* SysBus */ + global_qtest = qtest_startf("-machine %s -d unimp", test->machine); + } + + 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.addr, 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 Wed Feb 7 18:19:16 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: 870578 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="j+Bq2Ovf"; 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 3zc8lP3kHGz9ryr for ; Thu, 8 Feb 2018 05:20:49 +1100 (AEDT) Received: from localhost ([::1]:42114 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKt-0001rH-F1 for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:20:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33813) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUJy-0001pM-2c for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUJu-0004tP-Ts for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:50 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:41342) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUJu-0004tF-PG for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:46 -0500 Received: by mail-qt0-x241.google.com with SMTP id r13so2876329qtm.8 for ; Wed, 07 Feb 2018 10:19: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=1mEtlMLrU6x2Vbd/TsPxjggteE9O0/oNhoWd4E/qgGo=; b=j+Bq2Ovf+0n8CqzYFaEdN0hvcX0H7oeIGWL9vlKsvIO6fdMq8ceTHKd/mkoagsVxor HszvrCBc/+9aN4c3x9nr6ind1hKkDbZ/HgbpR/HEZRxuyXzMD4WTxswobl8f1ctHGazV koCem4e0bYmYDWWIMvzgIvg9jZhAdSnxAKQYeWLrxW5pz8VrVkRg+mcHospJDxoaZOfe pFmctZJQOCSO6iBTLvPMifZjF7Shu3gsI/9Yc5TK//zPUb18sLr1Ui+i4O5mY1jB//jP tRP7XXXol1xNnuCTIhlqeeA9eN/BGF/beOInhWeITQvew5UrtDYeluA7fkrLgy5ILMTw +m8A== 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=1mEtlMLrU6x2Vbd/TsPxjggteE9O0/oNhoWd4E/qgGo=; b=tbMWDe02hC2K19q6iCX+m9Kgiku8lXtKQjYbeUFmSoIcS201sYih4xmTtm2bXh6YR5 vqYZBtO24NwDEmVgR9pd13MmnenPaHUQraU9Sd/FpkfqeHaEGdR+NImObX+/KnzLJJJC V+iqNf2cQlZCZMwh/1HUzMKVvP21QjGrgXAW9BZf18jyOpn6yPsJeoBYRqbUgGh/AVb0 iNOtHa8rKbQgZxiU7/AAKwN2HglcYLgzs7yI9TBuAH99RdscFzI3K8pvz2kzZXeCPTly BpNZukRP0Ttq9pXLgP/DV6Kn9jaIvs3d3DtvI+H9jSG9kVKoco2tbR1xvuktyR7KaVWX lkCw== X-Gm-Message-State: APf1xPAPT+KeLGuiei4iF0T47I8u/TUAoeDZlddCPPf2B8NJ3FDfUElj 5ENp+//VyYohk9qpAngpVjROTnJq X-Google-Smtp-Source: AH8x226MwF0lloHAnkWOowPpDd34wnfoNuuhsdU/8EERNf0Ln9A8kb84N89MQI2Y7GzscdxMWs+3KA== X-Received: by 10.200.63.50 with SMTP id c47mr10999863qtk.286.1518027586403; Wed, 07 Feb 2018 10:19:46 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.19.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:19:45 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:16 -0300 Message-Id: <20180207181929.8701-4-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 03/16] 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" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 1105e07093..e961f2b997 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -62,6 +62,15 @@ static uint64_t sdhci_readq(QSDHCI *s, uintptr_t base, uint32_t reg) return val; } +static void sdhci_writeq(QSDHCI *s, uintptr_t base, uint32_t reg, uint64_t val) +{ + if (s->pci.dev) { + qpci_memwrite(s->pci.dev, s->pci.mem_bar, reg, &val, sizeof(val)); + } else { + qtest_writeq(global_qtest, base + reg, val); + } +} + static void check_capab_capareg(QSDHCI *s, uintptr_t addr, uint64_t expec_capab) { uint64_t capab; @@ -70,6 +79,20 @@ static void check_capab_capareg(QSDHCI *s, uintptr_t addr, uint64_t expec_capab) g_assert_cmphex(capab, ==, expec_capab); } +static void check_capab_readonly(QSDHCI *s, uintptr_t addr) +{ + const uint64_t vrand = 0x123456789abcdef; + uint64_t capab0, capab1; + + capab0 = sdhci_readq(s, addr, SDHC_CAPAB); + g_assert_cmpuint(capab0, !=, vrand); + + sdhci_writeq(s, addr, SDHC_CAPAB, vrand); + capab1 = sdhci_readq(s, addr, 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); @@ -115,6 +138,7 @@ static void test_machine(const void *data) s = machine_start(test); check_capab_capareg(s, test->sdhci.addr, test->sdhci.capab.reg); + check_capab_readonly(s, test->sdhci.addr); machine_stop(s); } From patchwork Wed Feb 7 18:19:17 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: 870581 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="NLfF2obt"; 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 3zc8qr6jj6z9s4q for ; Thu, 8 Feb 2018 05:24:40 +1100 (AEDT) Received: from localhost ([::1]:42161 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUOc-0005UK-RB for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:24:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33824) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUJy-0001pz-NJ for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUJx-0004uj-TL for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:50 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:46549) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUJx-0004uV-OF for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:49 -0500 Received: by mail-qt0-x244.google.com with SMTP id u6so2450043qtg.13 for ; Wed, 07 Feb 2018 10:19:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AZcMY6xPmBEfotEw61DJKIDTlhztcBppL/0d6W7Pgyw=; b=NLfF2obtvZMIGR/pomuPJi8kOoeybdh2UC7uUI5FEo5zGgkFzYJdi2faQpOXDvXMyZ j2fNxMdmvUc84hdAZD/AyTKN07zPGT9acPxvP0yCivzF6eiu/QuxO4OVC2e/+tCLAV6t xI8YpI2tr1CRnyQkxtFQUGfMmDZYx30Ic+XO+T3Mb/wdJHPurejNPv8s4T07CnXEy4wl o4XjuhPp3DdSwqhvQApluEp/QPZFq968Pv8//gt2d5ymHB4hPL6MstPEPwTDHqv2WI7B ywA/GHXYYrrJXYQ0lyrFG7p6tcDKunQdkgV8uy9qxzkbrU5BTP5vMruGQVrUn5AlLhK7 pN0g== 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=AZcMY6xPmBEfotEw61DJKIDTlhztcBppL/0d6W7Pgyw=; b=aZvr2eSLmCRhp/C8XEfKroiI9o1blJF6IrXvN1M7j6Q4WEjQQ/m8h7wM7UkONevwRT 0MtUEkXbVe7UgIwfAay7X6ZSOOrJmdDUuJ5v5Kz9AF2SRbPBxv3N6qDhrvTNZZd0WbLU AmxuavfQni4I44R7QQ16ip6fFIcRbuH2fLBPWR0E2bfmDghaBQykyXxXsj8Z5s7AyOpz yLsaHbTuFixyE0LHkvnTWuOGwofbYqHRQWimWf4cskMl6vzd38zUDcjo9CvF3RR5FuTo BW1G7u4eluDqsHRz/KZYwzUgGipOfjl4K+ozodSmFb7kDryfeICXz6yMpBYYTIHVaIXR XZoQ== X-Gm-Message-State: APf1xPCCfmD24jC9ZauctwXoOcvo2K8Wd5ZJh2fl6KCdhuS4OaDejt1x mivUkoCYSOBiCNdtmuo1MFo= X-Google-Smtp-Source: AH8x225AgODS0xKvgNniW3cW1KGInDFDuSQTGZT88OyF0v28U8GaTErZ8K3WMDMmIoKNgr2K59GV+A== X-Received: by 10.200.56.17 with SMTP id q17mr10604706qtb.313.1518027589395; Wed, 07 Feb 2018 10:19:49 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.19.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:19:48 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:17 -0300 Message-Id: <20180207181929.8701-5-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 04/16] 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" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 e961f2b997..45caf66455 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 { @@ -93,6 +94,18 @@ static void check_capab_readonly(QSDHCI *s, uintptr_t addr) g_assert_cmpuint(capab1, ==, capab0); } +static void check_capab_baseclock(QSDHCI *s, uintptr_t addr, uint8_t expec_freq) +{ + uint64_t capab, capab_freq; + + if (!expec_freq) { + return; + } + capab = sdhci_readq(s, addr, SDHC_CAPAB); + capab_freq = FIELD_EX64(capab, SDHC_CAPAB, BASECLKFREQ); + g_assert_cmpuint(capab_freq, ==, expec_freq); +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s = g_new0(QSDHCI, 1); @@ -139,6 +152,7 @@ static void test_machine(const void *data) check_capab_capareg(s, test->sdhci.addr, test->sdhci.capab.reg); check_capab_readonly(s, test->sdhci.addr); + check_capab_baseclock(s, test->sdhci.addr, test->sdhci.baseclock); machine_stop(s); } From patchwork Wed Feb 7 18:19:18 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: 870579 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="nXOa+1mK"; 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 3zc8pj5P1Kz9ryr for ; Thu, 8 Feb 2018 05:23:41 +1100 (AEDT) Received: from localhost ([::1]:42142 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUNf-0004br-Mg for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:23:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33836) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUK2-0001rU-50 for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUK0-0004wD-Vf for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:54 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:39949) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUK0-0004vu-Rn for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:52 -0500 Received: by mail-qt0-x242.google.com with SMTP id s39so2880267qth.7 for ; Wed, 07 Feb 2018 10:19:52 -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=nMeDQc+xHa/wjEnA3FHWa6LiUoI94VEVTT7OvTsRAI8=; b=nXOa+1mKzz7qN9TlpVvhUqeV56kYVx2GBZic3ISUHeWBUm6DnnHXHWcytr/Wo9+dqZ KjlBZKsxoNZNfa4E2+nmag8wYGVSCi9sYSSTvDmAe3AnWxwQEVNMnS+1jW2SAV/VVNnU YjJSIRaW+IIT6VDizWBRn0UoTki0VYgm7hQtjaJhc5IajSYkmxT2F7QG1Jc47XF8XEGl IdcF54bcP68he1ZFtezcEeFn8tE4esAvr+ckElMQ937t8svPb60g15Z8vnPxERdVZSnb Dql3wsHJtGvUthFxCl2xNZxkQeGOj1+QcXUttghBQmfZBlOlu7zvuofecL+x69vHZuLc sL4Q== 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=nMeDQc+xHa/wjEnA3FHWa6LiUoI94VEVTT7OvTsRAI8=; b=W3p61tzQGSiOmPqbh82/yuVSA+FaB/25klkPDDTeklr6fiu46HaEz9QAMceOQ9Z8/J vA9vmHcq8ztBJfPHvFOzTZeL2hc0I6mThdi1Vq9UmI/azmcwsmvWGmJrPiflvNu2Z2HG xHFcqsyWMgNX80Yq9recd8WT30C69nCzOvOUlbdtFjub1Wot4LvGFEp+bCkJtNcDgM+A zzXfQwWTkvURZeF6FdSo8rXVTDvN0D4AcP8eQLDQtd39MOF/L9xEd6cjqQzNU/+XBLGw DP41yzBUJQ5b6cdpNxPOdZ0AnsDE7HZB/7wDCEkDu07MgZ7QxK41vwSycLEv+hcwtCbR ZpMQ== X-Gm-Message-State: APf1xPAdx5Kq+xWVgdyrn1lQPJggpVMk8ekl7NVKGSTm4Q43mNnrE8ep 48dyt5Vbeqmlh2V0QQQEzDQ= X-Google-Smtp-Source: AH8x227eGtM3QBliD9789Y2L57axiKLcIYAOeQqNF1J8oXkbMKlFZv+/Lh3xs9HEwVQoY84LBRqVeA== X-Received: by 10.200.28.85 with SMTP id j21mr10635485qtk.188.1518027592395; Wed, 07 Feb 2018 10:19:52 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.19.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:19:51 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:18 -0300 Message-Id: <20180207181929.8701-6-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 05/16] 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" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 45caf66455..4b901b6cf1 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 { @@ -106,6 +107,15 @@ static void check_capab_baseclock(QSDHCI *s, uintptr_t addr, uint8_t expec_freq) g_assert_cmpuint(capab_freq, ==, expec_freq); } +static void check_capab_sdma(QSDHCI *s, uintptr_t addr, bool supported) +{ + uint64_t capab, capab_sdma; + + capab = sdhci_readq(s, addr, 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); @@ -152,6 +162,7 @@ static void test_machine(const void *data) check_capab_capareg(s, test->sdhci.addr, test->sdhci.capab.reg); check_capab_readonly(s, test->sdhci.addr); + check_capab_sdma(s, test->sdhci.addr, test->sdhci.capab.sdma); check_capab_baseclock(s, test->sdhci.addr, test->sdhci.baseclock); machine_stop(s); From patchwork Wed Feb 7 18:19:19 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: 870585 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="Ba+sxZiS"; 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 3zc8v75cTWz9s4q for ; Thu, 8 Feb 2018 05:27:31 +1100 (AEDT) Received: from localhost ([::1]:42195 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejURN-0008Ct-Pe for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:27:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33871) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUK7-0001wT-2M for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUK3-0004xO-UF for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:59 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:33807) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUK3-0004xB-P7 for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:55 -0500 Received: by mail-qt0-x242.google.com with SMTP id d14so2893099qtg.1 for ; Wed, 07 Feb 2018 10:19:55 -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=Z6JHDtpvh7aPwfRfELeGraseu72gp81rNfh30hH6GMg=; b=Ba+sxZiSto2MdltazSR1fo2GlNQucLo/aMUX3SYDDoPi65lt3XyPGXtqulg3abuNdg I2yz4aFp0oXiFoGgt7wfVzpFhoSLaYxiqAAUMVbcZTy632nz8tQN2DAnUOzYSIpSgv+T YXuNtTL9Ixx4HQ75ndpwhiRWBs36Ct3TgGZoivSvx1H81HF9+H902iEXgb87kxYV6/jZ tz3MWOBOTsfHXp20t188MtDM9Gn5alnn2QP2Rv6QmDw/qnty5P+n8zRdJ0efwupXVFfk u5oKRqZw9BY5OJtxYgpXsjdB7786Mv/zA8rJer/Y5sBEJDHHvz1Hqgz37xvzSOENNb3g Qocw== 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=Z6JHDtpvh7aPwfRfELeGraseu72gp81rNfh30hH6GMg=; b=YXSo43ydbiwOel4pnNRx1SU2cabeseiN4yeJ6J3EBD3+SoaJ2y7QrSzyq3GrXtQ9vk bw/BA9MeDgNPZh4IaeWkgcHLVKcPb1VEIqSkFZpNNylrTjXFZrHdU0dAN3jthJVWNKC9 iTaakGR/ODcjeZdMmauiDWsg3PRt8NwZ3UC6lcFIl9dY+x1pryVi9F6ZfSB32Ho/EqYZ daWkLfJmdmbynLQczeS2mQwaj3tZdIosmbjdSl3tcZYqo0hNShdz7NCGNsT/XQTrbhZ2 U6MKCDTAHKktwIubDW8lhJYg12MHojZg/kNnPoC1Kq1X3LPanIZyntJZblYxdLq/IVDa 0paw== X-Gm-Message-State: APf1xPDCrSJTm6adL+x6bR7MbXhzNaikU1pxflomL21IKT9d943NGoWb ihxQjfFEY5tCB+alzhdcocacCAgw X-Google-Smtp-Source: AH8x227ucg+Cu9P0G8lVn9+/mUshTivfwhN+Zn+bA7xQEs3KTaEXJJ9LeU8ImeHdS9pS+Wccc0GO3Q== X-Received: by 10.237.42.120 with SMTP id k53mr11227862qtf.283.1518027595406; Wed, 07 Feb 2018 10:19:55 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.19.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:19:54 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:19 -0300 Message-Id: <20180207181929.8701-7-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 06/16] 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" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 4b901b6cf1..ee12c4be7b 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -51,6 +51,19 @@ typedef struct QSDHCI { } pci; } QSDHCI; +static uint32_t sdhci_readl(QSDHCI *s, uintptr_t base, uint32_t reg) +{ + uint32_t val; + + if (s->pci.dev) { + qpci_memread(s->pci.dev, s->pci.mem_bar, reg, &val, sizeof(val)); + } else { + val = qtest_readl(global_qtest, base + reg); + } + + return val; +} + static uint64_t sdhci_readq(QSDHCI *s, uintptr_t base, uint32_t reg) { uint64_t val; @@ -73,6 +86,16 @@ static void sdhci_writeq(QSDHCI *s, uintptr_t base, uint32_t reg, uint64_t val) } } +static void check_specs_version(QSDHCI *s, uintptr_t addr, uint8_t version) +{ + uint32_t v; + + v = sdhci_readl(s, addr, SDHC_HCVER); + v &= 0xff; + v += 1; + g_assert_cmpuint(v, ==, version); +} + static void check_capab_capareg(QSDHCI *s, uintptr_t addr, uint64_t expec_capab) { uint64_t capab; @@ -160,6 +183,7 @@ static void test_machine(const void *data) s = machine_start(test); + check_specs_version(s, test->sdhci.addr, test->sdhci.version); check_capab_capareg(s, test->sdhci.addr, test->sdhci.capab.reg); check_capab_readonly(s, test->sdhci.addr); check_capab_sdma(s, test->sdhci.addr, test->sdhci.capab.sdma); From patchwork Wed Feb 7 18:19:20 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: 870587 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="u1FV+WIp"; 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 3zc8yS46MZz9ryr for ; Thu, 8 Feb 2018 05:30:24 +1100 (AEDT) Received: from localhost ([::1]:42459 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUUA-0002lr-GL for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:30:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33886) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUK8-0001xy-9S for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUK7-0004z5-2Q for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:00 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:36548) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUK6-0004yi-Ru for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:19:58 -0500 Received: by mail-qk0-x241.google.com with SMTP id 15so2319737qkl.3 for ; Wed, 07 Feb 2018 10:19:58 -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=jfJ5JVCbj5Si/oNj2Xvnjg1R4RmTNbGWUbn6NjfkixM=; b=u1FV+WIpT7ws3lUlFYxofp+7bhmlDheAs5BRooP8CiuuT5KeGvCmUB0FFT/HI5dPP5 Oz6TOfRoUtJN3BXNijbMqgnsUyLFDuiPB1k7ULvZrx5C2vRXiI9Z7zUQxFpPYP7NGWqy OnvlR68EkwyLg9q42MBsP1JtJlG+rTloBU093dzN2YSRM3vbsORZAjnJ40TJ5Yup9Ysi QjopTLm4f9kvwZWMaRqKwO8a4adojI74xjf/DiOsHTGrmKMHSM6FdjHjfML+l62WgY/o TdCN16Kh3/2TUPETTlABQuX1bvahEz2+IrB5Ny9EN/MRJlWRpbh4tmsjjCrSzzsEigQS A3Rg== 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=jfJ5JVCbj5Si/oNj2Xvnjg1R4RmTNbGWUbn6NjfkixM=; b=FzIoklbQWVG1bW6mZ9qqSRangdIbDw99URcVOkB5XLcCu7qrCRIEji1uEe25Qo0u+5 F/bGXG1WITzzbavT2NX6woDqR86VJlmsmqJDl34YtFSCrdGtysvsBjU9UhEi8K7os7hz Zt3G3NVofp79ynvrCIUOWiEdBWFMz8YatxR8LW8DQHdGBDDKSGhnxNU3kABCMmkLwGZO S5G0bTmM+a3xnhO7cR+PzOfHyqn5oMRJSGCpHxE/niMKRIaWGhUivZiEmfWoE9k+tg0W 2UoswCr5NIm7RyYJHMNyTK1CCNzXWhtNYtHIsqK7GMF+vLhNWvslEYdtzCPVvM3OWON5 4XIQ== X-Gm-Message-State: APf1xPDMYhNXxZp2+RY+hUAfg+7jDR1SvDrlEEWheyJAWUuEZ9Gq94x8 1dCF4iKkXyCWeSgehB4v/Cs= X-Google-Smtp-Source: AH8x224Tc9l4ZMk1XiRQVzq1AFKbqna/rA9NGwWYeXoiA55lACmqz9CSGrqsm46ZbYZt9tAhKzj4JA== X-Received: by 10.55.81.198 with SMTP id f189mr10237627qkb.204.1518027598345; Wed, 07 Feb 2018 10:19:58 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.19.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:19:57 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:20 -0300 Message-Id: <20180207181929.8701-8-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 07/16] 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" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 fc807f08f3..b7751c815f 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -210,9 +210,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 1cf70f8c23..40798aed58 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -77,6 +77,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; @@ -91,6 +92,7 @@ typedef struct SDHCIState { /* Configurable properties */ bool pending_insert_quirk; /* Quirk for Raspberry Pi card insert int */ + uint8_t sd_spec_version; } SDHCIState; #define TYPE_PCI_SDHCI "sdhci-pci" diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 817c2525e6..2bcc5ff58a 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -174,7 +174,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) @@ -1204,6 +1216,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 Wed Feb 7 18:19:21 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: 870582 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="YgKm+VZj"; 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 3zc8t22LwCz9ryr for ; Thu, 8 Feb 2018 05:26:33 +1100 (AEDT) Received: from localhost ([::1]:42177 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUQQ-0007HJ-SU for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:26:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33923) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKE-00024e-BO for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUKA-00050V-8E for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:06 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:44511) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUKA-00050H-3j for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:02 -0500 Received: by mail-qt0-x242.google.com with SMTP id f18so2706608qth.11 for ; Wed, 07 Feb 2018 10:20:02 -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=vPITX2oYC0q9EseKGELh7RVsGlJQHH80NROxdINBdIk=; b=YgKm+VZjbSxBqqHSrQO6Rk9f1Ml0SfZwqHFfSJvOiJKg44W3vhNGFuMRDcBA9h9p93 ea1hQfBwSDni2bG5D2QSYM/7mfUVYihIbA+SmvvlWir+7EaExspY/Q7Vj7urfK51sYV+ 5VGZd4Tp3K24NEbloP6VKpRlnIKFojhgTKGtxK8CAWChwhaC2qecML4Pzobjyj/ZYlxD lvPCcvAc86nS90olGNlcPlRtxRccXu1E8qN9t0JKIsNSfquRTcXPQ0db7pDuILNaq9p3 2IRqPkVKWpdepF6nCrPrQ7Vd56eGmMrZQVeo6y/m0H5lrFeF3gLkE/uHboYVwaNEq80X 9Lvg== 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=vPITX2oYC0q9EseKGELh7RVsGlJQHH80NROxdINBdIk=; b=kLtyXbb7f6P/1PDEA/tIe4aHgFF4RLVqnZr5RCxi820uJIxIcniqZGc+lvTL3H1PPL Ew4dl5bpB+r59PkyQuTCsx1ya1x3ggJJMT2LvI+aJoU3MClWU8EA9qu8duRl1zlsUCUT lr3cJWniAwBtrbHAPYZnN3Bw7rsp/xGWZef4pqz4+zAcXHdGPQG6lxSWpuvJ1p9nRLrF 9SQFGtHl99rbgw8mNyUeRx+eIWsEsmw2Aw/h8+paWb6rJTPKh3XkT7+uv9paJeOXY8dp 595lGtKL3gQLBRdgJ975XJ1QjsUnzufnhdGNjq+ERycezi/Coj8EJeQTpLxXmjd17Tkr 4XAA== X-Gm-Message-State: APf1xPBIUCj1j0VkuZcXQdDy+ddcqnTma9T/fVeLyYzBXu5CAnWezO+R EzCqVEcppKzLZ4ZKl3YUcuA= X-Google-Smtp-Source: AH8x226wXEUdqKsNbXIkEvsol0IRLrBD6LJwPoOdRdJJti06jL8tKjfwgHij0YphtMkI8h84J26svw== X-Received: by 10.200.54.10 with SMTP id m10mr11075687qtb.304.1518027601688; Wed, 07 Feb 2018 10:20:01 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.19.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:20:01 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:21 -0300 Message-Id: <20180207181929.8701-9-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 08/16] 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" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 2bcc5ff58a..da30b58723 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -39,67 +39,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 Wed Feb 7 18:19:22 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: 870580 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="GxrwqCR6"; 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 3zc8pp6qJ8z9s4q for ; Thu, 8 Feb 2018 05:23:46 +1100 (AEDT) Received: from localhost ([::1]:42155 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUNk-0004fs-VD for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:23:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33947) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKI-00029s-Lx for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUKC-00051L-Us for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:10 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:37156) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUKC-00051B-Q7 for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:04 -0500 Received: by mail-qk0-x244.google.com with SMTP id c128so2318619qkb.4 for ; Wed, 07 Feb 2018 10:20:04 -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=CJcCd45F8+A4vABbq5ncEfOD1zDCAnlEhafaIXycSmQ=; b=GxrwqCR6eGYS9o8MacfD01Vm6GhVlBEnt5AuVYUnKhH0Gi0VZY3a0Tcfc6CFBbXNHs LDxuQEUDKM6kIwhcERvAmJ6QvvPpxlHzTBhKdP7dSx3Hgx81Y8z5a98zECEYClQJwj1B h+JQFgQhoJx0HipnXLuEHziPl5Zyt5eIi6pSSoZfKAoEVKSp0jFCLAQFx0XKhFfIlV1B 6QhikkP7aMAvOxaztfrwGuBqUSzQLFE/hRgbnufcrdrq6hsmEp/4qXr/PgKbVXvMfe5x 4wdSb8P/KJMrDyyz/UNEuSlw1siY0JqnOnf05NetczkZ+AIXqZNvr1tOEAu/mJsXwYvC 4KCA== 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=CJcCd45F8+A4vABbq5ncEfOD1zDCAnlEhafaIXycSmQ=; b=fWWhRnJTRPYHUTo6qBxVS/nVPd/MZQusJl5jU2iwQikJP5NxBjP7xVinjys4YYPGE0 bpnjZ60KVeiO2aeWoa3Qy/4fW+BtogO8k2pNntZ3/01X4mUiBhlZTEbGNQy9fIVQPU2y nVCirJNiatSY+kDCkXQZFWvtmRUOp1RbaE8CHN+pAT0fZwBdLGkyVD5fWOsYUJU+o2D5 mpoOZv7Z47Hje0r3yzs8TSxrcPMr84msMMFl3JUooV4yvhJeDQJ7TxRPMagsgEmXq5Wa L75tQdn682AFpaYUTALsioX08u5p/3nFVyKjHHSASeT32EvsuWfaeEVPdt/aRNpXaMSZ 7qwg== X-Gm-Message-State: APf1xPCaVrqmHjGElOzrkY1uIc6mvaI7CeI0B1X2mdsve1pcNzVaS/Te iJTM7894CEEZYa+3ADThV+c= X-Google-Smtp-Source: AH8x226t/NoElYsahWVX2zAct+Rpi17tuQxni0Mr+wM3RBo6G+j95v08G1lzfsn2I1ZgT49VfwpXJg== X-Received: by 10.55.74.206 with SMTP id x197mr9864893qka.201.1518027604327; Wed, 07 Feb 2018 10:20:04 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.20.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:20:03 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:22 -0300 Message-Id: <20180207181929.8701-10-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 09/16] 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" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 b7751c815f..577ca9da54 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 @@ -179,7 +181,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 da30b58723..b1bcaa6153 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -59,6 +59,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 Wed Feb 7 18:19:23 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: 870592 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="G9fmPZKD"; 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 3zc91W3VTFz9s4q for ; Thu, 8 Feb 2018 05:33:03 +1100 (AEDT) Received: from localhost ([::1]:42551 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUWj-00057x-HD for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:33:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33938) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKH-00027x-7F for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUKF-00052g-Pn for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:09 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:36551) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUKF-00052U-KE for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:07 -0500 Received: by mail-qk0-x244.google.com with SMTP id 15so2320412qkl.3 for ; Wed, 07 Feb 2018 10:20: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=5zI5Ip/IMknVAP2v18QAKsGOcu9wG4h8ti5WIi4M254=; b=G9fmPZKDJ9Fn8MOjNlO/Mq7CC7G1dGcEFlTR+SJQQkrIrW5JP8MJoELftM/VNlAkXv 1HHs02v+3aQozowkBpQEkRC92E8TLcUlFAMYPry++jM3W2TlxTQ4WUExTAnE8NrSmTx3 N9hJg902WbjwTR7Yi/r/D8/sZod5kCAipB1h91YE1NieNDdzPFEV3fSzdYu4x2AmLfYQ 5nrUgLLcj72+AWy5dVgMdTF54GRMCCH5ig5Bxyi4feV83UYSbpm0pCVv7Y0IhaJz7XX/ 6YiALfhxghFRPlLlWwuRkH2k4tUNh75axVHnqphk4nNlQkeBk94ugwVMFvUiVzHf7cNy v1qw== 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=5zI5Ip/IMknVAP2v18QAKsGOcu9wG4h8ti5WIi4M254=; b=Zkel90GURpHtnCD04U9u3onYGvi1/4Yamc/Z5IILusKpv581L0Z8HBJFmtMHt8991Y zMInEJ4DN6N0bpQ4JyNJ7eN/O0W/EPFvaaE3vArDe9Q+DxwRzrCmfYBPup+CUZ+kpe0J IV98uuyoiWlvSTTt/rtGHhP6Gxlnw/zdZ1vypsMgwkQ7igsv5YXTxNkI93+drFZI8mcW 8YHQ7+4+7RVpB6HL1PE8qd6l/J0JJ9xlQpeTs/046Z1PbWk+GytPqEzlWshYhaWeCGk6 oLSoogHxckQtyGIxTRiFmHv2epYwkKWZ35618ssW6Cn845KIM0ePQet9p3ToI9Jex+8Y LfNA== X-Gm-Message-State: APf1xPCMgFm3TlPMrDNUIDu5XjOthkyQqLGWBT1b0ZJJejd9LeBgKsHx FpOa26zRAYoWt/iyWtYDNnM= X-Google-Smtp-Source: AH8x224qDhNnU0X2I3YqA22GBV7W7D4UXvJ4xA9N43X6bDI20ncfIF08jz7se/uGDOfOMSvLLY3UZQ== X-Received: by 10.55.41.68 with SMTP id p65mr10263018qkh.337.1518027607128; Wed, 07 Feb 2018 10:20:07 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.20.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:20:06 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:23 -0300 Message-Id: <20180207181929.8701-11-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 10/16] 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" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 | 21 ++++++++++- hw/sd/sdhci.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++- hw/sd/trace-events | 1 + 3 files changed, 117 insertions(+), 2 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 577ca9da54..c5e26bf8f3 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -86,6 +86,9 @@ /* R/W Host control Register 0x0 */ #define SDHC_HOSTCTL 0x28 +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 @@ -96,6 +99,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 @@ -118,6 +122,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 @@ -174,17 +179,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 b1bcaa6153..48f2f962f0 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" @@ -64,6 +65,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 y; + + switch (s->sd_spec_version) { + case 2: /* default version */ + + /* fallback */ + case 1: + y = FIELD_EX64(s->capareg, SDHC_CAPAB, TOUNIT); + msk = FIELD_DP64(msk, SDHC_CAPAB, TOUNIT, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, TOCLKFREQ); + trace_sdhci_capareg(y ? "timeout (MHz)" : "Timeout (KHz)", val); + if (sdhci_check_capab_freq_range(s, "timeout", val, errp)) { + return; + } + msk = FIELD_DP64(msk, SDHC_CAPAB, TOCLKFREQ, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, BASECLKFREQ); + trace_sdhci_capareg(y ? "base (MHz)" : "Base (KHz)", val); + if (sdhci_check_capab_freq_range(s, "base", val, errp)) { + return; + } + msk = FIELD_DP64(msk, SDHC_CAPAB, BASECLKFREQ, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, MAXBLOCKLENGTH); + if (val >= 0b11) { + error_setg(errp, "block size can be 512, 1024 or 2048 only"); + return; + } + trace_sdhci_capareg("max block length", sdhci_get_fifolen(s)); + msk = FIELD_DP64(msk, SDHC_CAPAB, MAXBLOCKLENGTH, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, HIGHSPEED); + trace_sdhci_capareg("high speed", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, HIGHSPEED, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, SDMA); + trace_sdhci_capareg("SDMA", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, SDMA, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, SUSPRESUME); + trace_sdhci_capareg("suspend/resume", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, SUSPRESUME, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, V33); + trace_sdhci_capareg("3.3v", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, V33, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, V30); + trace_sdhci_capareg("3.0v", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, V30, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, V18); + trace_sdhci_capareg("1.8v", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, V18, 0); + 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 --- */ 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 Wed Feb 7 18:19:25 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: 870584 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="J1LOfxod"; 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 3zc8t64QbQz9s4q for ; Thu, 8 Feb 2018 05:26:38 +1100 (AEDT) Received: from localhost ([::1]:42191 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUQW-0007PF-Iz for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:26:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33992) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKQ-0002JQ-2o for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUKM-00057S-Tf for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:18 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:41252) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUKM-00057C-Oj for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:14 -0500 Received: by mail-qk0-x241.google.com with SMTP id p23so2313721qke.8 for ; Wed, 07 Feb 2018 10:20:14 -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=RldiyJtXgKSv6aIyDF4Bw2DSLRJ/Lqj5qevxnbkIgfU=; b=J1LOfxodX6ZAroJTv5X14X/2AZkwJn0rGzBaoXSy59xIk9soiarCdQxxcXi/zOeI2/ RnR5w3252IB4UwvI0eke9jfuEp8SMvsaCdAYvuPMVWYEcnOnJVIBCbY6iKumT3C7Oado LMpbgsZ7HcNCQCfHJ8b4RmqPonP0fjBhqRMBJc7BVH52GswbkH8GVz8qULnEmANZP2lf UxSOLWIb3uAfUzQOFuN5cGU6mpm9WRVui1v7hK5WtUf/iozR2g3DGmz2o7c0XxBHsVcu Ozaf7+9QdrOzCp53Mj2yRiPhJtbHHdxJtBUQEffIF9/CEdYmamO+Qxq2gtJvS7LB8nH1 Susg== 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=RldiyJtXgKSv6aIyDF4Bw2DSLRJ/Lqj5qevxnbkIgfU=; b=MnCeEX1/JOktdlDzm9ssA+Wfon3f/q5o9OKoNFcOnNDtUtBCMXwiIw0glBaZ3IPzH/ 3ejzYZME3IpyEp+aYtfKCKy8z9cr0aihRn/qBGXeJmNk6ILummqFDpiZAjecYcYUvL8N Xc4UGOy3e7DqwI7YY5FEqiJpmP0o6VL0CxYw+Jz9+jlKOYU3EWptrddhHxtz4gRq2fAV lbuIrbVUMyVursiKGFaPZ5URVIlcYOkKk0Dec6tbFQPK+W/rUEutG+KZmG+Ifg/QIJea Q+NCJ+T8h4L9HxDL6+K/IaUPfXeMz/jbvyf0TqBYRk8madKbhzRk8FX6HqrU98jMAKoG 16xQ== X-Gm-Message-State: APf1xPCEn6LrA1PExwPfZGdt76fAQIDimBWLuj7va2qCxN5yVOPJpMOI 4DJU3vePpikv+h3W0xhuOSQ= X-Google-Smtp-Source: AH8x226qD1hrlyiWRHWdjFppDIkxFHkhAv5XYZXF/NP18+/GcBF1oL6ZH5SeLseAzWKplRpiRZKMKw== X-Received: by 10.55.20.24 with SMTP id e24mr9564525qkh.287.1518027614403; Wed, 07 Feb 2018 10:20:14 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.20.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:20:13 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:25 -0300 Message-Id: <20180207181929.8701-13-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 12/16] 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: Sai Pavan Boddu , "Edgar E . Iglesias" , qemu-devel@nongnu.org, Alistair Francis 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 8d7a1469f7..8962070f24 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 Wed Feb 7 18:19:26 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: 870583 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="XpkGsNi/"; 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 3zc8t40khyz9s4q for ; Thu, 8 Feb 2018 05:26:36 +1100 (AEDT) Received: from localhost ([::1]:42185 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUQU-0007LT-2e for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:26:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34015) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKS-0002Mv-PL for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUKR-0005Cv-KU for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:20 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:36553) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUKR-0005Ca-Gj for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:19 -0500 Received: by mail-qk0-x243.google.com with SMTP id 15so2321250qkl.3 for ; Wed, 07 Feb 2018 10:20:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cyomTGh/4LH13rvpwRrlSzh0rKmlM/KPjQtrWrbrb+I=; b=XpkGsNi/1fE1NE+XcptXnoSi+a4sG131OtT+5xfVDZSn+BrVNgdqlg191F1v7aPnBx 7gpEsJ6PFSJmmmzAwrb1t0Bl9G2dic4hwl4pidGgSgwco85rgqwnZ7hCgWThjULCFl3V TnzpuZAjIvJdTUjCm7OCsgbuoUV0vS71STrKSxTtJDh2rJZDNcsYQqrBDt91/9vJ8inC FhbI3R44lK4IKzmk6eUDU80B9b0J9eD4RYGi2Xm0GeOEKBbHPgEsCl9cShsPbtjZ0Lf6 BTASmfoZUmrp4fxXKtu0TRPiUifNJwAj8vngEU4KXiO7xxm+V2/jBfYpRq6mAbOzojIS h2HQ== 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=cyomTGh/4LH13rvpwRrlSzh0rKmlM/KPjQtrWrbrb+I=; b=OZIo7988BhKjXqhd0hqAdRhhiCsOQgfPJEBY2BTJPilpuorTuU3depIQKNcdSYwF8L piZpYeArQxhfBO6CVkoNIAPlLkPtTIbMD1XSjCMQm4lwwuO0l+udtcp/1AqxiKwSUsyC ttLkWXa4rgvkxI0u/ZUSta/Fd/M4dVG8nalAdKNpNS0uN/Cd7DjGhMikB0d7+6JLCHm+ nSol1csHu0k6BFba+tF7kS8vGxsauvoYuCoFOCVZd5kIqThUJihAP2s+cKKQkfoaW95r bfKZ9vf4I1pmklr8Wfh5pwi5+LzuPc2EwzevBtu27Ya22CGuZ+M3knK/O71lg8tjl9dZ A1ug== X-Gm-Message-State: APf1xPBEjAk/KNSsArheIXlxupGi5DDjbM8thkJRAmfvmYj4Td6XWzVG s30pTIAeY9x/UFpqdNgOH+M= X-Google-Smtp-Source: AH8x226zZ3Dfv2QuJlv/R6nVqZiRsDvQ++E1pktmvPKWy0w34KCgt+hNEEENd2k7W1rKH7PqTbl6+w== X-Received: by 10.55.215.29 with SMTP id m29mr9644519qki.305.1518027619052; Wed, 07 Feb 2018 10:20:19 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.20.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:20:18 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:26 -0300 Message-Id: <20180207181929.8701-14-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 13/16] sdhci: check Spec v2 capabilities (DMA and 64-bit bus) 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" , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Incorrect value will throw an error. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 14 +++++++------- hw/sd/sdhci.c | 19 +++++++++++++++---- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index c5e26bf8f3..4ed9727ec3 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -89,12 +89,12 @@ FIELD(SDHC_HOSTCTL, LED_CTRL, 0, 1); FIELD(SDHC_HOSTCTL, DATATRANSFERWIDTH, 1, 1); /* SD mode only */ FIELD(SDHC_HOSTCTL, HIGH_SPEED, 2, 1); -#define SDHC_CTRL_DMA_CHECK_MASK 0x18 +FIELD(SDHC_HOSTCTL, DMA, 3, 2); #define SDHC_CTRL_SDMA 0x00 -#define SDHC_CTRL_ADMA1_32 0x08 +#define SDHC_CTRL_ADMA1_32 0x08 /* NOT ALLOWED since v2 */ #define SDHC_CTRL_ADMA2_32 0x10 -#define SDHC_CTRL_ADMA2_64 0x18 -#define SDHC_DMA_TYPE(x) ((x) & SDHC_CTRL_DMA_CHECK_MASK) +#define SDHC_CTRL_ADMA2_64 0x18 /* only v1 & v2 (v3 optional) */ +#define SDHC_DMA_TYPE(x) ((x) & R_SDHC_HOSTCTL_DMA_MASK) /* R/W Power Control Register 0x0 */ #define SDHC_PWRCON 0x29 @@ -185,19 +185,19 @@ FIELD(SDHC_ACMD12ERRSTS, INDEX_ERR, 4, 1); /* HWInit Capabilities Register 0x05E80080 */ #define SDHC_CAPAB 0x40 -#define SDHC_CAN_DO_ADMA2 0x00080000 -#define SDHC_CAN_DO_ADMA1 0x00100000 -#define SDHC_64_BIT_BUS_SUPPORT (1 << 28) FIELD(SDHC_CAPAB, TOCLKFREQ, 0, 6); FIELD(SDHC_CAPAB, TOUNIT, 7, 1); FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); FIELD(SDHC_CAPAB, MAXBLOCKLENGTH, 16, 2); +FIELD(SDHC_CAPAB, ADMA2, 19, 1); /* since v2 */ +FIELD(SDHC_CAPAB, ADMA1, 20, 1); /* v1 only? */ FIELD(SDHC_CAPAB, HIGHSPEED, 21, 1); FIELD(SDHC_CAPAB, SDMA, 22, 1); FIELD(SDHC_CAPAB, SUSPRESUME, 23, 1); FIELD(SDHC_CAPAB, V33, 24, 1); FIELD(SDHC_CAPAB, V30, 25, 1); FIELD(SDHC_CAPAB, V18, 26, 1); +FIELD(SDHC_CAPAB, BUS64BIT, 28, 1); /* since v2 */ /* HWInit Maximum Current Capabilities Register 0x0 */ #define SDHC_MAXCURR 0x48 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 8962070f24..aa2cbcd981 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -90,6 +90,17 @@ static void sdhci_check_capareg(SDHCIState *s, Error **errp) switch (s->sd_spec_version) { case 2: /* default version */ + val = FIELD_EX64(s->capareg, SDHC_CAPAB, ADMA2); + trace_sdhci_capareg("ADMA2", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, ADMA2, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, ADMA1); + trace_sdhci_capareg("ADMA1", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, ADMA1, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, BUS64BIT); + trace_sdhci_capareg("64-bit system bus", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, BUS64BIT, 0); /* fallback */ case 1: @@ -832,7 +843,7 @@ static void sdhci_data_transfer(void *opaque) break; case SDHC_CTRL_ADMA1_32: - if (!(s->capareg & SDHC_CAN_DO_ADMA1)) { + if (!(s->capareg & R_SDHC_CAPAB_ADMA1_MASK)) { trace_sdhci_error("ADMA1 not supported"); break; } @@ -840,7 +851,7 @@ static void sdhci_data_transfer(void *opaque) sdhci_do_adma(s); break; case SDHC_CTRL_ADMA2_32: - if (!(s->capareg & SDHC_CAN_DO_ADMA2)) { + if (!(s->capareg & R_SDHC_CAPAB_ADMA2_MASK)) { trace_sdhci_error("ADMA2 not supported"); break; } @@ -848,8 +859,8 @@ static void sdhci_data_transfer(void *opaque) sdhci_do_adma(s); break; case SDHC_CTRL_ADMA2_64: - if (!(s->capareg & SDHC_CAN_DO_ADMA2) || - !(s->capareg & SDHC_64_BIT_BUS_SUPPORT)) { + if (!(s->capareg & R_SDHC_CAPAB_ADMA2_MASK) || + !(s->capareg & R_SDHC_CAPAB_BUS64BIT_MASK)) { trace_sdhci_error("64 bit ADMA not supported"); break; } From patchwork Wed Feb 7 18:19:27 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: 870586 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="V3/gXe9a"; 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 3zc8xZ4kmPz9ryr for ; Thu, 8 Feb 2018 05:29:38 +1100 (AEDT) Received: from localhost ([::1]:42238 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUTQ-0001dZ-NV for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:29:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34039) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKW-0002QY-3a for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUKV-0005Fe-7S for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:24 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:45167) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUKV-0005FR-3I; Wed, 07 Feb 2018 13:20:23 -0500 Received: by mail-qt0-x244.google.com with SMTP id x27so2869535qtm.12; Wed, 07 Feb 2018 10:20:23 -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=V3/gXe9a/lwduyV4hHBd7RFU5Ttcw1gdz0GM0XIduOtdjcsyaTjWMK3e2sEHDQ1n0l 7GB0Du9gj+mjA70oVbeWqPuNgo1118QxQGA2xFRQowdXGnR+TmbCqJrWNNJjUkmiozp4 uGLPGPmZmrToWIqWnM2RHmRyP5K/M5Lm9DGAHQIglym0wdTxV0S3ksRlTFGXhOfjiU9h qTzRAtvYY0UvV+ZhPV/ZzmKtKJkWkuXrS1E/dP1TATaFyaeRuriy91hYbGAbEOpUEdP/ /+oHOA6PjE79NPKS52CmGSVPE9ZOe6d7LJe1Kq2HwXU3vpG3AGMXcqJLIS7DRDTPlX1h Bh6w== 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=C3e5+XHjP5tQxA3IbUyVkK4w5D3GIXGIHmj0wKEcYVWBjz7576tEQv9+wPafXarK6m QOfzs4zhMOepqEtLzBndeS3rj0dBSkB9hIco4BFP47sXR8c0y4jtUYXQz+/Kl2eV+E8E nZ3DdhDo/tScWpB5RVk1VooNM9AZAw2u3NCcYGpHeWwpT3cmYrtr3L+jh2p2bbBtry+T xKT7h0s9xIqbOlmRz6Oq4ESQ0sTjdGA2Lymif055FLteZBD/lSsTKsgp2eImKpnPUdyr nFNzvTXD4gGgGeguxGZwG+JAofgK7w+trRTB8dxDlL88K+gIziH3kVznFuvyFyAmn/S5 a3Ig== X-Gm-Message-State: APf1xPBnCaiW4tMxSpKL2oE7UCzOKotJ1saVvdu501QkSdB/f6IfcnMK F1z5Z+dWCSRTSTZGf12KmUA= X-Google-Smtp-Source: AH8x224GhQBcB5gdFFAljxHufauFHjABLf7N/pX8zomrNKfkQs8xfqQ2x8gPRDIYP94+S6jseM3+xA== X-Received: by 10.237.38.101 with SMTP id z92mr10358047qtc.62.1518027622702; Wed, 07 Feb 2018 10:20:22 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.20.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:20:22 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:27 -0300 Message-Id: <20180207181929.8701-15-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 14/16] 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" , qemu-devel@nongnu.org, Igor Mitsyanko , =?utf-8?q?Philippe_Mathieu-Da?= =?utf-8?q?ud=C3=A9?= , Alistair Francis , "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 Wed Feb 7 18:19:28 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: 870593 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="gltfbpzk"; 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 3zc9524QB6z9s4q for ; Thu, 8 Feb 2018 05:36:06 +1100 (AEDT) Received: from localhost ([::1]:42964 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUZg-0008Ig-HA for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:36:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34064) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKa-0002U6-2b for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUKY-0005Hb-TR for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:27 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:39478) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUKY-0005HH-Ai; Wed, 07 Feb 2018 13:20:26 -0500 Received: by mail-qk0-x244.google.com with SMTP id d72so2314389qkc.6; Wed, 07 Feb 2018 10:20: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=sZp8aF6avIv4FuO7MfmdU5DFjxinRjlcQGqTNkIJbBA=; b=gltfbpzkF1/mICmxFK7nNRp6CoJp+7nBrLgypKJlm0K5xtycAeg+CoKR92I/sUOF1O XpNUadsX50yz+FUBa6a63jsICOyqLgVfSljm/GoCjvknrCQmJRm8+tVCzHFBzNgnlTiu O96TuohZOPXhG9XV9DoQAB4Ed7Bjfmhbwaq65/uxqe/MQg/GQvl0yUShUYQfT3tyPbbm N6fFJDtloWux1R2FcRjmSN9ObTzHtTdYZ8sWnefRvjrjmJWqvbhpIgfYTJm8nolIIN+S Ii9IJbpI5Z1EaL8eOLXhoVDaj36V1ubNFWg+QqJ59MT99IGwrdfpMTYL6n7V9BRaPKWW sICQ== 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=eRNbRFaBroO8Vqbb8eR+5rLS25RdR3PPXO+d0f0ls1Vn1E+lNPYgfFJCOvPmMu+tod 7ISsedj8CkL6M04Es67OcoHLwXvJFUhKFutKK6iMOiYuDb4WkCEUqcplrkFLrc3qVmmb UI23fru4nphxYxpePSg63NH6PtYwD4uSw5FgUSKsm78BlB8c79KL8z4S0f/VxN6CXdAE IMOLGS6aQOJg0iGvKJ311mSeP26iyZ0bmiqDnx0zuwYQG/mbGb/eUR1+akLCmsbvnEzb tlEXLI6ZmjlFwQj8bnzS/dbG8AKNtDV9YSyWwazdd1UtaargqCnSTYzc0y6vBOATO2rE tiIw== X-Gm-Message-State: APf1xPB+Izg/1TTsgQ4bEA7ih7IRjbXs6wfZiqDZ0lOpcvbhTHtVQru0 g5FIKLJYDwg3DadcMWAA2Ws= X-Google-Smtp-Source: AH8x224EdalXviU2sn8RA5xK2EKE8dwCm1YvO0EFVfc38NmewKQAyscnm5tqIUnFtTskmGud7gjwTA== X-Received: by 10.55.188.199 with SMTP id m190mr10442827qkf.92.1518027625910; Wed, 07 Feb 2018 10:20:25 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.20.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:20:25 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:28 -0300 Message-Id: <20180207181929.8701-16-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 15/16] 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" , qemu-devel@nongnu.org, Igor Mitsyanko , =?utf-8?q?Philippe_Mathieu-Da?= =?utf-8?q?ud=C3=A9?= , Alistair Francis , "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 Wed Feb 7 18:19:29 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: 870591 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="iBVpUlu0"; 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 3zc90n292nz9s4q for ; Thu, 8 Feb 2018 05:32:25 +1100 (AEDT) Received: from localhost ([::1]:42534 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUW7-0004ar-Ax for incoming@patchwork.ozlabs.org; Wed, 07 Feb 2018 13:32:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34089) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejUKd-0002Wa-3j for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejUKb-0005Iu-OY for qemu-devel@nongnu.org; Wed, 07 Feb 2018 13:20:31 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:35388) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejUKb-0005If-Im; Wed, 07 Feb 2018 13:20:29 -0500 Received: by mail-qk0-x242.google.com with SMTP id c4so11990qkm.2; Wed, 07 Feb 2018 10:20: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=ock4UlQiXSIb1+bjGBvPGEVA5R9CjG92nk3F3M888HQ=; b=iBVpUlu0bOBXi2TSqBfncNlqUFd4HI32OLq8w/mhdWqu6CdAhi/VfC8GT28Gxosq6P 4hWBrA0/YCzCRtKtYcgzmw3l4qOZs1Vv0v7X3hp73Zrjs/me6umjWcfaeh4xxKbDa1St ar2Koe/FTgkN8Ua/fkPXFiblQKTdPJ9+KuDdn0bj+Jfruzsgd8r+AuhAqO3ZY88CR7uJ WBaQ0dT4TCSx0bc3ZCoKoA3ScYyKep1lSP1uPOilD3PoUNaphrwYoGbZuOvPh6aOyaPO xViAviprW5GX/9gSv/pWwCloDd6Zs6kNi2e01F4B05jvQCh56xV7Q+KdKG8T8DRfuD/G fLdA== 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=ock4UlQiXSIb1+bjGBvPGEVA5R9CjG92nk3F3M888HQ=; b=APhHAcxPqOg3cFRJ7fRLP4sMOBVNcramNNeuHn1WmsBacOMFAAl5zYpqLjNQsv5C5O VLlKTSyu4axPCq+PfDoPjCjoRvNusimP7YgwqaTEnJqpGTUTXgRKCbK4p/1dNBo0L30d zrXid9Vwi29zdUg9R3aWEHX9BMQbc0lCw/tb7pGWhOJEgNQQSZNg4VTQcDM3bZIA44Zd eBno3boJFGgfa3IgNex1xiZKwzmgAtRqgzwfS1tHpM4351e+FtuwNXMtcOwZTRWrYzdh bARK0HWVkCEr1r9FtU0LzSYlZRBNvjg/BbVo788uk+TSQ+4dsd4BKKOAslpD8q9Bcp1I GyIg== X-Gm-Message-State: APf1xPChqDj1m6kpf6llwL+XNlpdWhYujQq5oZQpHGUnL31xesWdkVgI V1djIpxCC8L7uGFHZ5wDZetYqxtH X-Google-Smtp-Source: AH8x224KWngiWJWZvbRnHvXeDOrsxbOlEmQlz5zQv9XfYl7BhX2zdYkJw7kGhW99qZaAov/SC1JcfA== X-Received: by 10.55.79.83 with SMTP id d80mr7529842qkb.339.1518027629101; Wed, 07 Feb 2018 10:20:29 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id f7sm1426248qtm.21.2018.02.07.10.20.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Feb 2018 10:20:28 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini , Stefan Hajnoczi , Peter Maydell Date: Wed, 7 Feb 2018 15:19:29 -0300 Message-Id: <20180207181929.8701-17-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180207181929.8701-1-f4bug@amsat.org> References: <20180207181929.8701-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 v10 16/16] 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" , 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 ee12c4be7b..3f3370e224 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 {