From patchwork Fri Feb 9 14:54:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 871416 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="R3333Z5i"; 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 3zdJ9Q4Qwdz9s1h for ; Sat, 10 Feb 2018 01:58:50 +1100 (AEDT) Received: from localhost ([::1]:60214 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA8W-0004NH-KQ for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 09:58:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33575) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA4b-0001YO-7b for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA4Y-0004w0-EK for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:45 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:37028) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA4Y-0004vf-9o for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:42 -0500 Received: by mail-qt0-x242.google.com with SMTP id s27so10833132qts.4 for ; Fri, 09 Feb 2018 06:54:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cxvoLeLgOTAA8Ua2y+GoG/6l7qwUH6JgyGpjAlhAYM4=; b=R3333Z5is4GCGTwXOjs0rtMbC+L1rY6ZyXXefEkZK2/pMk2DHOM3BNaHSI2xN/KpvF RB8lYuBG/ZO6cxWZLSHwIob3s1+qnDw+Ag3gR3oZ9e+YGt4+bcAgutcOuhC+i6FJiDmN TmZ8Sxt3NEJiJ+tPOFNpSOTCbelGDF8sd6XyD+xDVDtLNGIXwHGA8LzpVCcfhwyj+Quf 4Au77SkYmE7oqZMyXpaMrQrXjo1jS5Diaa/ICH1V7q7oYg1FUJk1gik8q8TrDmiwv/EA 4rEL8BmT1qpiEhlLOfN8dn1NuymKaNW9g8MCfsG4lOlu5yyEsnrY7/f0cVOv2qNxcc1u KiEw== 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=cxvoLeLgOTAA8Ua2y+GoG/6l7qwUH6JgyGpjAlhAYM4=; b=iodc5iNCGUM2YELRzT/hoaggCNb2GH9D4qFvX1PI8xZMI32Yb48W1LCGWgiTQ2Z7OC LRaslJ58/Bkl511vnrEFW/4jmS0sIdDOR+6Lz2xvTBPdNWOMzUI0wzTNshipORR+p0Fw E3/h8KzWZNUzeatj5fUS2gcdcKOik/zINSjyuqBwYHJ98KSbCieBuBitdxzljTSdUi6R w6vzWcwh0vQYtKhhaWsKyBQ5THHB32EjGmVCmnR5luCnxFLryHIXK0v25X9uyYpxaq2i RzxPSpAv1P/fI/DzNKAYC4rs+iJv2A9wLDZuWW5ZMaxZSW6OF+vpt5CP+7IBXkBpnUU6 P4SA== X-Gm-Message-State: APf1xPCUih6i5ROiWMjR+TnB+1Zdltzi4DZ7COpKcqp6le1feKbUZ59f m7+Kez720FPQmG+bpWf0lcw= X-Google-Smtp-Source: AH8x226tFyA+VGdZ5w7/eZNGLRX3Lyrg6xV/uOZUt0IV1oQ/fQ5PWMGeyzJORMvIGl2PA7toLPmoIg== X-Received: by 10.237.48.2 with SMTP id 2mr4681591qte.232.1518188081725; Fri, 09 Feb 2018 06:54:41 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.54.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:54:41 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:01 -0300 Message-Id: <20180209145430.26007-2-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 01/30] 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" , Peter Maydell , 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 b395ac577d..f20a58068b 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1303,10 +1303,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; } @@ -1384,9 +1386,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 Fri Feb 9 14:54:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 871410 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="SCEjEgl+"; 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 3zdJ5m0Kp5z9s7g for ; Sat, 10 Feb 2018 01:55:40 +1100 (AEDT) Received: from localhost ([::1]:60185 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5S-0001cG-3G for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 09:55:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33592) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA4c-0001ZB-S8 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA4b-0004xB-JW for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:46 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:44890) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA4b-0004wv-Ds for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:45 -0500 Received: by mail-qk0-x241.google.com with SMTP id n188so10266319qkn.11 for ; Fri, 09 Feb 2018 06:54:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2wBVbOhGyHHi+tsuttipqDYs9jNr5nYfekMhF1BiN8g=; b=SCEjEgl+JCWu7iayTmI7/zqxlv6ck/+t7/VnIkymORUD7GMeQs6Pb5pEYmtHz9GZdd ST1ZJRDTOFZBWnH13wy+fDj+Le4m/In0VKom3UyGtmDgRCiCpVjRM4u41vnRIcSSQFlk KotjCjq6yFy0k6jyZzUgnNZZLY7c7HqRZlb9LVZdtD+hZBKroYFRc7SeWlomwqo9ENg4 BLUUoUoK1YtCN35BI2gy760l3I/ry8wNtN8pJWtPSs4ub6R2xkC23/ztbPa6OZWz+USp NZeoIAWwH/jz2QllnjWtPsCT79lWRtIqaiAI7FdILyJ19s+3Oy6uJRm8RdtPjv+yWviA BRIw== 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=2wBVbOhGyHHi+tsuttipqDYs9jNr5nYfekMhF1BiN8g=; b=GkPWLzPPMx5k7ecKqiHZIydNfZjtnR2C7U5rt5usZtgkeAU8MN7oU70YlGTP1OWIHC 0rsMRzfuDtIcNmaRElm3iULDhiCMLx5nXQn/FMfb5zXpkRLcvwPNTjIosQKZr14kaNd/ JtQjDqBTRaCoDuMd7esI0l9pjUUhCENQ4UKDZPjiuJJfKysMv7d4MAxqIoP3wuwgpcZA Z4ttBykRfgu1IKCY4F3IeX4FrlphRMUoqa/6+vMkfGml4xi+2kB8h+n9TSaNStUBF/Ni WUchTVSeW1EOkEntncxi7UFoV/LHsx4WKAd/veBVgCpO3HR0s0juK3PXnjp7zMw9alkA 0KSw== X-Gm-Message-State: APf1xPCp0fUFuJssnrS1IH/hApto+sOmBE0jRoUYRTjukNkYpBXGB0uX QK/APL6WQ+Xyw73FfEseyBs= X-Google-Smtp-Source: AH8x227JOhjSCPT4EVa+CJRls0IcfwEtp7dL4xxJUDJwS8xVaCg9no9I+sii6ZsPFSPrLjwonr04VQ== X-Received: by 10.55.163.211 with SMTP id m202mr4151826qke.77.1518188084776; Fri, 09 Feb 2018 06:54:44 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.54.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:54:44 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:02 -0300 Message-Id: <20180209145430.26007-3-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 02/30] sdhci: add qtest to check the SD capabilities register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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. Suggested-by: Paolo Bonzini Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Paolo Bonzini --- tests/sdhci-test.c | 145 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/Makefile.include | 3 + 2 files changed, 148 insertions(+) create mode 100644 tests/sdhci-test.c diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c new file mode 100644 index 0000000000..82f3785a72 --- /dev/null +++ b/tests/sdhci-test.c @@ -0,0 +1,145 @@ +/* + * QTest testcase for SDHCI controllers + * + * Written by Philippe Mathieu-Daudé + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include "qemu/osdep.h" +#include "hw/registerfields.h" +#include "libqtest.h" +#include "libqos/pci-pc.h" +#include "hw/pci/pci.h" + +#define SDHC_CAPAB 0x40 +#define SDHC_HCVER 0xFE + +static const struct sdhci_t { + const char *arch, *machine; + struct { + uintptr_t addr; + uint8_t version; + uint8_t baseclock; + struct { + bool sdma; + uint64_t reg; + } capab; + } sdhci; + struct { + uint16_t vendor_id, device_id; + } pci; +} models[] = { + /* PC via PCI */ + { "x86_64", "pc", + {-1, 2, 0, {1, 0x057834b4} }, + .pci = { PCI_VENDOR_ID_REDHAT, PCI_DEVICE_ID_REDHAT_SDHCI } }, + + /* Exynos4210 */ + { "arm", "smdkc210", + {0x12510000, 2, 0, {1, 0x5e80080} } }, +}; + +typedef struct QSDHCI { + struct { + QPCIBus *bus; + QPCIDevice *dev; + } pci; + union { + QPCIBar mem_bar; + uint64_t addr; + }; +} QSDHCI; + +static uint64_t sdhci_readq(QSDHCI *s, uint32_t reg) +{ + uint64_t val; + + if (s->pci.dev) { + qpci_memread(s->pci.dev, s->mem_bar, reg, &val, sizeof(val)); + } else { + val = qtest_readq(global_qtest, s->addr + reg); + } + + return val; +} + +/* tests */ + +static void check_capab_capareg(QSDHCI *s, uint64_t expected_capab) +{ + uint64_t capab; + + capab = sdhci_readq(s, SDHC_CAPAB); + g_assert_cmphex(capab, ==, expected_capab); +} + +static QSDHCI *machine_start(const struct sdhci_t *test) +{ + QSDHCI *s = g_new0(QSDHCI, 1); + + if (test->pci.vendor_id) { + /* PCI */ + uint16_t vendor_id, device_id; + uint64_t barsize; + + global_qtest = qtest_startf("-machine %s -device sdhci-pci", + test->machine); + + s->pci.bus = qpci_init_pc(NULL); + + /* Find PCI device and verify it's the right one */ + s->pci.dev = qpci_device_find(s->pci.bus, QPCI_DEVFN(4, 0)); + g_assert_nonnull(s->pci.dev); + vendor_id = qpci_config_readw(s->pci.dev, PCI_VENDOR_ID); + device_id = qpci_config_readw(s->pci.dev, PCI_DEVICE_ID); + g_assert(vendor_id == test->pci.vendor_id); + g_assert(device_id == test->pci.device_id); + s->mem_bar = qpci_iomap(s->pci.dev, 0, &barsize); + qpci_device_enable(s->pci.dev); + } else { + /* SysBus */ + global_qtest = qtest_startf("-machine %s", test->machine); + s->addr = test->sdhci.addr; + } + + return s; +} + +static void machine_stop(QSDHCI *s) +{ + g_free(s->pci.dev); + qtest_quit(global_qtest); +} + +static void test_machine(const void *data) +{ + const struct sdhci_t *test = data; + QSDHCI *s; + + s = machine_start(test); + + check_capab_capareg(s, test->sdhci.capab.reg); + + machine_stop(s); +} + +int main(int argc, char *argv[]) +{ + const char *arch = qtest_get_arch(); + char *name; + int i; + + g_test_init(&argc, &argv, NULL); + for (i = 0; i < ARRAY_SIZE(models); i++) { + if (strcmp(arch, models[i].arch)) { + continue; + } + name = g_strdup_printf("sdhci/%s", models[i].machine); + qtest_add_data_func(name, &models[i], test_machine); + g_free(name); + } + + return g_test_run(); +} diff --git a/tests/Makefile.include b/tests/Makefile.include index f41da235ae..52be9b3fa5 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -294,6 +294,7 @@ check-qtest-i386-y += tests/migration-test$(EXESUF) check-qtest-i386-y += tests/test-x86-cpuid-compat$(EXESUF) check-qtest-i386-y += tests/numa-test$(EXESUF) check-qtest-x86_64-y += $(check-qtest-i386-y) +check-qtest-x86_64-y += tests/sdhci-test$(EXESUF) gcov-files-i386-y += i386-softmmu/hw/timer/mc146818rtc.c gcov-files-x86_64-y = $(subst i386-softmmu/,x86_64-softmmu/,$(gcov-files-i386-y)) @@ -367,6 +368,7 @@ gcov-files-arm-y += arm-softmmu/hw/block/virtio-blk.c check-qtest-arm-y += tests/test-arm-mptimer$(EXESUF) gcov-files-arm-y += hw/timer/arm_mptimer.c check-qtest-arm-y += tests/boot-serial-test$(EXESUF) +check-qtest-arm-y += tests/sdhci-test$(EXESUF) check-qtest-aarch64-y = tests/numa-test$(EXESUF) @@ -822,6 +824,7 @@ tests/test-arm-mptimer$(EXESUF): tests/test-arm-mptimer.o tests/test-qapi-util$(EXESUF): tests/test-qapi-util.o $(test-util-obj-y) tests/numa-test$(EXESUF): tests/numa-test.o tests/vmgenid-test$(EXESUF): tests/vmgenid-test.o tests/boot-sector.o tests/acpi-utils.o +tests/sdhci-test$(EXESUF): tests/sdhci-test.o $(libqos-pc-obj-y) tests/migration/stress$(EXESUF): tests/migration/stress.o $(call quiet-command, $(LINKPROG) -static -O3 $(PTHREAD_LIB) -o $@ $< ,"LINK","$(TARGET_DIR)$@") From patchwork Fri Feb 9 14:54:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 871434 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="c2I+b5MA"; 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 3zdJFP2wyLz9s1h for ; Sat, 10 Feb 2018 02:02:17 +1100 (AEDT) Received: from localhost ([::1]:60256 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekABr-0007I4-Em for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:02:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33603) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA4e-0001b3-Pm for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA4d-0004yi-Ve for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:48 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:33610) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA4d-0004yO-Qk for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:47 -0500 Received: by mail-qk0-x243.google.com with SMTP id c82so10272245qka.0 for ; Fri, 09 Feb 2018 06:54:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KYxQWY71SW2g4HYPzmz9r9jCN3AyBdWQH802Ccas7e8=; b=c2I+b5MA9mhciJydJs8x2I5ICFyBNT40heYwy9HaIqvsD0me37t0jOCKJnUar6Clyu MtzAkTo0FZrUXQg8UajDmGvnY0Sm+eXm5ze2I9gQ+ic6U+khL6MOAgYX4TvDIxFEnoMh 6od3lFaXCsnbMJcFam8YOq28UNcDWPn3a+btQpjceP3ttGdJpbbu7xPB7J3me+lauvOe v+O9yV7ezuF9V6eIwaMQvwQR7piwOrPH314PC+7IDFDL2geksAIAfUpzfMVI33tgTZJR usP/IBNY8twHI5NZPB3StEzalqGntntWCCGWCCX8VVIcPcVsyIaso4YGmLrYoRf1cCLi X0qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=KYxQWY71SW2g4HYPzmz9r9jCN3AyBdWQH802Ccas7e8=; b=EGztlwscrA8EOUWfO7YROoC+vKxmjQMGPGKR2S/jgzX1yexj5G8kzgOvafM9qdb37x hTT9PbAW+yuOy5U9LbVWMjHc0on3b/Z/sBSHhlDb2YHXkFfGbcjPnMWmf+yuGaK4UZNI YcXCc8eUi9FkMMniNU8GLUHxpC0ZhpIo4j7UfB7uY+lC78mXNKkUCDR77eUwMhGdonrk 9AnwlBN4/JqjFsQH9os+IJTzrlSEiFHkhD9XAG/CgzuZAoTkrv3MLzrqs+h2YUxvgshs ZHhHazjoHGOgXj1h5sa0fHSUf0fRQ8wr9/j6MTpd2eAhM+bJmvMlzwhd5jST9OBklUHb HKog== X-Gm-Message-State: APf1xPADUhmCHtMTcgo7DTJ2Rtehblv0nruCW6OaM1pLQ4cKMvrDKryQ I7GpfGwNpxXk15UC9s9kS10= X-Google-Smtp-Source: AH8x2258ePm8R3ccFIMQCQvUIAJ9vvmUVdWPXXr0amZRJ+HepePJeJz0f/Mac1QsxS2lY8C1llNkFg== X-Received: by 10.55.19.76 with SMTP id d73mr2045318qkh.288.1518188087248; Fri, 09 Feb 2018 06:54:47 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.54.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:54:46 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:03 -0300 Message-Id: <20180209145430.26007-4-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 03/30] sdhci: add check_capab_readonly() qtest X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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 82f3785a72..51af5eac67 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -65,6 +65,15 @@ static uint64_t sdhci_readq(QSDHCI *s, uint32_t reg) return val; } +static void sdhci_writeq(QSDHCI *s, uint32_t reg, uint64_t val) +{ + if (s->pci.dev) { + qpci_memwrite(s->pci.dev, s->mem_bar, reg, &val, sizeof(val)); + } else { + qtest_writeq(global_qtest, s->addr + reg, val); + } +} + /* tests */ static void check_capab_capareg(QSDHCI *s, uint64_t expected_capab) @@ -75,6 +84,20 @@ static void check_capab_capareg(QSDHCI *s, uint64_t expected_capab) g_assert_cmphex(capab, ==, expected_capab); } +static void check_capab_readonly(QSDHCI *s) +{ + const uint64_t vrand = 0x123456789abcdef; + uint64_t capab0, capab1; + + capab0 = sdhci_readq(s, SDHC_CAPAB); + g_assert_cmpuint(capab0, !=, vrand); + + sdhci_writeq(s, SDHC_CAPAB, vrand); + capab1 = sdhci_readq(s, SDHC_CAPAB); + g_assert_cmpuint(capab1, !=, vrand); + g_assert_cmpuint(capab1, ==, capab0); +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s = g_new0(QSDHCI, 1); @@ -121,6 +144,7 @@ static void test_machine(const void *data) s = machine_start(test); check_capab_capareg(s, test->sdhci.capab.reg); + check_capab_readonly(s); machine_stop(s); } From patchwork Fri Feb 9 14:54:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 871417 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="ux05f8ZA"; 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 3zdJ9Z25vYz9s1h for ; Sat, 10 Feb 2018 01:58:58 +1100 (AEDT) Received: from localhost ([::1]:60223 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA8e-0004SU-Bb for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 09:58:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33614) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA4h-0001eB-JL for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA4g-0004ze-NP for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:51 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:37109) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA4g-0004zW-Ic for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:50 -0500 Received: by mail-qk0-x242.google.com with SMTP id c128so10271522qkb.4 for ; Fri, 09 Feb 2018 06:54:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SauahonrmTtixgwy8mK3ZO5tl7yNBs9Ewk65/VkyDcA=; b=ux05f8ZAYmHSzDpR8YTZYkWgEKxTRLd12tImAXF3AfUFNYjkKeUwWxZEfhT2wuI0X5 0hUtm0dEgf3PLeCtUVHXCMzLHXFiWEdzgBVsWMHKqyju4s1pkPdU0y+gnc3oHIoNRLtm 5p/b6w/1z0znBKYxnQPLXkJzXmdTkX5uSlIwLCEgchGi6eQOafgwXS6wjXmCZ9tyJxK+ x4oKbIU1xv0lMOJiQAVPXFoW2jddxFa2yw4x4XXWYopPgaUix2wRPvFwu8cLOqTXoIxu tLACBL8ln+91C+FJizvqAlqUe/WtqXwI0Hoah/XAZg38F1FkHQSdh9jRMGN3aaUWu4dJ Pa3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=SauahonrmTtixgwy8mK3ZO5tl7yNBs9Ewk65/VkyDcA=; b=CmF/oeOE9H9ip95Cx5cE6BFIwOFlRMUqr0qI2SJeqT0Z9H+I7PH9aBrBKvzNVvZr6V NDCUi5HURAS6gSMwbkZIOFsD+W1UzW1erxVRukmxk4FCR5MYT9vFfv3A1iCs3BRzzhlZ jJFj40h7TzC7lj/Ii9AVeS1A6Et+SiXfLWLTL21uwGQlMHw5QKPra1CAF3XteCP3SZyR o0IwubSYmjqTeuiTcPBOHCfRrMOrE7o+WQNGlIS/sefCq91GWbhWYGcG0u60SlPIiegx aSftfj6nlDLxkuRjR+I95O3Vmv5zC+7eGt58UAMc0muk/3OCoTH427+unKBOAYHKhru2 uA+A== X-Gm-Message-State: APf1xPCwlKTOOJ43omMarXma5byGo8H1RrA4cOC2657C8TtEk9GZo9zA FOmWHhCtsPCvmEk3u3Rwtz4Lxw3L X-Google-Smtp-Source: AH8x227Un15OZBnhkPSHQyRc9dN19gQiIIRyVhu5k8MSshOVFVpP0rG/7HUyLWIi/ho5Wu2Z/w5j1w== X-Received: by 10.55.154.13 with SMTP id c13mr4225852qke.197.1518188089979; Fri, 09 Feb 2018 06:54:49 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.54.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:54:49 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:04 -0300 Message-Id: <20180209145430.26007-5-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 04/30] sdhci: add a check_capab_baseclock() qtest X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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 51af5eac67..d6eb3c3a48 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -14,6 +14,7 @@ #include "hw/pci/pci.h" #define SDHC_CAPAB 0x40 +FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); /* since v2 */ #define SDHC_HCVER 0xFE static const struct sdhci_t { @@ -98,6 +99,18 @@ static void check_capab_readonly(QSDHCI *s) g_assert_cmpuint(capab1, ==, capab0); } +static void check_capab_baseclock(QSDHCI *s, uint8_t expected_freq) +{ + uint64_t capab, capab_freq; + + if (!expected_freq) { + return; + } + capab = sdhci_readq(s, SDHC_CAPAB); + capab_freq = FIELD_EX64(capab, SDHC_CAPAB, BASECLKFREQ); + g_assert_cmpuint(capab_freq, ==, expected_freq); +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s = g_new0(QSDHCI, 1); @@ -145,6 +158,7 @@ static void test_machine(const void *data) check_capab_capareg(s, test->sdhci.capab.reg); check_capab_readonly(s); + check_capab_baseclock(s, test->sdhci.baseclock); machine_stop(s); } From patchwork Fri Feb 9 14:54:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 871436 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="HioCGj6s"; 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 3zdJFV6j55z9s1h for ; Sat, 10 Feb 2018 02:02:22 +1100 (AEDT) Received: from localhost ([::1]:60259 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekABx-0007Ow-0j for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:02:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33664) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA4n-0001i9-Hy for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA4j-00050a-67 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:56 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:46965) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA4j-00050G-1U for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:53 -0500 Received: by mail-qk0-x242.google.com with SMTP id d144so3446569qkg.13 for ; Fri, 09 Feb 2018 06:54: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=1d4J1U5LXDO0yqCTUXqrk9Gir3hMmhvKwibceVNCHEY=; b=HioCGj6stgB6VyvpMKper68xS1YynSI3Ja7hju5RtlT71y658m1hCVE5mVML3b6qx7 wkzw9DPYPXaTro+nV6PHLrzXySXXyRJ3yud6YId/R1Onrd1uT+8OU8wIbUilz+0nzFZC nATMJfh+D9pj3z+DV9ekKQDS118p4RL/u26XNdRyPai0Wd8AWa9yxTy0Pr5/nI9J4cmd Rjb9WL+AqHOa96tbKYciPDjIQdVOmbya0aMJn+lRq8KacJDX77YMRp37bBaXYd1KBvXt l8tDXlB17KS8dS3NGiiwNZHyVE++bLOYGtrL1JeHxIQHvFiPq2pARpeqlHwx6a+hR45m Rbdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=1d4J1U5LXDO0yqCTUXqrk9Gir3hMmhvKwibceVNCHEY=; b=RL8qxJbpem4aAGIoQgNZDHfQPf4AXbNjZ/Vz8aLyLMNJJLLhtAY7Cwmqh11kjIrCp2 9p8/rv6DQa3Ox8u8/eZ12eI+hKzzyoZm3MSh9HUbsxOUhqVEAHjLv7FQnYcYZrOGoNdh vZAFW6zkk26NXZm0Sew6NxKiPX3qWylcZECKLKDD8Ol/ajWV6B6f6Smjt9e4OyrsqWFY zyq4mdo8zUHgbokZ1sdBD0LLwmO0b33j0faS7nwkrHYQ8XZ5NFRiVjwW7HcmHfhXKuDK O9UxUmncj5iTFPqX6NEeVUvCjtN4AbksYxOOBLf5LazmAf/P0adyV+/WpOLyFo50JkJ5 eHrw== X-Gm-Message-State: APf1xPBkKHeUe6KNFctJSZ56QrLxr6whebC7XKJR57af6Pv49/qecXed R27fl3ld1uRwsYVLMNDWWys= X-Google-Smtp-Source: AH8x224XnlPqhj53Fc3/pkNRTQrLZTwU3eKZ+xVXOY+pGM2HPxukP9q/9ECbc3S10/ug7iMARPmQZA== X-Received: by 10.55.86.195 with SMTP id k186mr4135875qkb.338.1518188092528; Fri, 09 Feb 2018 06:54:52 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.54.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:54:52 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:05 -0300 Message-Id: <20180209145430.26007-6-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 05/30] sdhci: add a check_capab_sdma() qtest X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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 d6eb3c3a48..7c50c0482b 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -15,6 +15,7 @@ #define SDHC_CAPAB 0x40 FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); /* since v2 */ +FIELD(SDHC_CAPAB, SDMA, 22, 1); #define SDHC_HCVER 0xFE static const struct sdhci_t { @@ -111,6 +112,15 @@ static void check_capab_baseclock(QSDHCI *s, uint8_t expected_freq) g_assert_cmpuint(capab_freq, ==, expected_freq); } +static void check_capab_sdma(QSDHCI *s, bool supported) +{ + uint64_t capab, capab_sdma; + + capab = sdhci_readq(s, SDHC_CAPAB); + capab_sdma = FIELD_EX64(capab, SDHC_CAPAB, SDMA); + g_assert_cmpuint(capab_sdma, ==, supported); +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s = g_new0(QSDHCI, 1); @@ -158,6 +168,7 @@ static void test_machine(const void *data) check_capab_capareg(s, test->sdhci.capab.reg); check_capab_readonly(s); + check_capab_sdma(s, test->sdhci.capab.sdma); check_capab_baseclock(s, test->sdhci.baseclock); machine_stop(s); From patchwork Fri Feb 9 14:54:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 871443 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="nL/Dx6VL"; 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 3zdJKk32WNz9s7g for ; Sat, 10 Feb 2018 02:06:01 +1100 (AEDT) Received: from localhost ([::1]:60284 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAFU-0001uy-0e for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:06:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33663) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA4n-0001i8-Hx for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA4l-00051z-Lr for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:56 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:36632) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA4l-00051q-GZ for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:55 -0500 Received: by mail-qt0-x242.google.com with SMTP id q18so4072745qtl.3 for ; Fri, 09 Feb 2018 06:54: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=9GkCd2o33roPUiEBbNgJarqIeD0fCwOumOTkz9kSBb4=; b=nL/Dx6VLVwdFyG2eezf4P7mzUIcW6fXlacTMFe1juC7J4tT7Y1YuX9sLeDek7ueLKi 7KxdX1Dc7vNefiOA7ow8ydw2X4LfTNMAO9p+Y1yl9VBAmH2sbB/zOd4jLDh82HrFIF9n XgJkReuHmRA2rKdjent/psi8eoyry9WJTZi30JJ/xFodj2Hr53IQYgS0Umub4SdUCIqI 6F74kRIKg5osbZqjFk6y/rYAUAUNV9IFnc9BdgZjFly5mNX0wTlrQCjfHWkvOA7M6XJA nBMmKEqkuM3g6JHcxeeFXcDcsMGTFp2IR+3QdRm4m3L6XnqWk2BTg/UQD1rUBQX7OkDE n70Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=9GkCd2o33roPUiEBbNgJarqIeD0fCwOumOTkz9kSBb4=; b=DcWgYvAFEOBfh6Un8mD9QlZLnfaGocXz11YxPjeT+TSf9QZ3TT32wdhOBoIsMUMjfF 2GpfdxfdTZToupcOo8j9PxN9JLdbyiwo/lU9ue1QqaQATze8uvKkoYc/WJdfe9+mqZwi zZF79eOGu26gYzNIZkfDzLsuahVEn1NtE6X2cp72YPOtbPPUlWhTxErfggzo5WKuTUAA x0z2G9NkAlJwSW4G/kF6n+YrYQjZcucb0tNmnBCFooOTUMEJx9DyOVNbA/L1tTS+nWoL rR+M2iHzNmcdTyEpbrflSbLkd0G92SZR/uWmzKg6VI3FtqQL8petsXHs2K9AsccOArz3 INzA== X-Gm-Message-State: APf1xPCYkcgRCAk+xeYXesIgAdebYF+0cVrLJ5OBwLRXeQT1ErRrFcBW m1qwebU58Zx3ViriLDnNxKnkQeKz X-Google-Smtp-Source: AH8x227MtiWim26WgarAgWex6ZXsPnmBWBEIlOtKt6DKKpMjL6Lc5hgRE50kdpop1wrjpoDiZZD05Q== X-Received: by 10.200.24.21 with SMTP id q21mr952640qtj.309.1518188094991; Fri, 09 Feb 2018 06:54:54 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.54.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:54:54 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:06 -0300 Message-Id: <20180209145430.26007-7-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 06/30] sdhci: add qtest to check the SD Spec version X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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 7c50c0482b..24feea744a 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -54,6 +54,19 @@ typedef struct QSDHCI { }; } QSDHCI; +static uint32_t sdhci_readl(QSDHCI *s, uint32_t reg) +{ + uint32_t val; + + if (s->pci.dev) { + qpci_memread(s->pci.dev, s->mem_bar, reg, &val, sizeof(val)); + } else { + val = qtest_readl(global_qtest, s->addr + reg); + } + + return val; +} + static uint64_t sdhci_readq(QSDHCI *s, uint32_t reg) { uint64_t val; @@ -78,6 +91,16 @@ static void sdhci_writeq(QSDHCI *s, uint32_t reg, uint64_t val) /* tests */ +static void check_specs_version(QSDHCI *s, uint8_t version) +{ + uint32_t v; + + v = sdhci_readl(s, SDHC_HCVER); + v &= 0xff; + v += 1; + g_assert_cmpuint(v, ==, version); +} + static void check_capab_capareg(QSDHCI *s, uint64_t expected_capab) { uint64_t capab; @@ -166,6 +189,7 @@ static void test_machine(const void *data) s = machine_start(test); + check_specs_version(s, test->sdhci.version); check_capab_capareg(s, test->sdhci.capab.reg); check_capab_readonly(s); check_capab_sdma(s, test->sdhci.capab.sdma); From patchwork Fri Feb 9 14:54:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 871414 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="WYOGXofo"; 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 3zdJ643PqQz9s1h for ; Sat, 10 Feb 2018 01:55:56 +1100 (AEDT) Received: from localhost ([::1]:60192 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5i-0001pp-Cd for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 09:55:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33768) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA4q-0001lF-77 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA4o-00055N-TH for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:00 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:33610) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA4o-00054c-MS for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:54:58 -0500 Received: by mail-qk0-x241.google.com with SMTP id c82so10272953qka.0 for ; Fri, 09 Feb 2018 06:54: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=4iCWfg5fxX+7zuhf56hm7SeVtAR3s4JuI1VjF2jKSn8=; b=WYOGXofohzLrRhF7dRFecW/lVYoxsHdeoMp9e7JXKlyX4g7aUWwDkkjzzrYCngzhMc Mn5rYqReAG/zl7yTuWNedBr05+LOuH4mXjC5pOTvsvHWgge1hn65awmAqAs5ua5xWHwR DYMFuTajiQvZnzp8q8bzOIQrWsCAVSXt/3xAvnaxRkw6UpZhw5pmI8CTKgvUoZZDVrZo 808pXozVrVvPlPOX3cvdOd8rKus37d6NqEpdtUS4iD8hL102EfJsBJYG+E/3ZxR+lIRL GfIKrP51iMJoDDTcRXnWzZRa5rV38uHStL2pafOnaXKSDbsa2uTO0KB7dgUaOYkYgjSz IYNg== 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=4iCWfg5fxX+7zuhf56hm7SeVtAR3s4JuI1VjF2jKSn8=; b=f6NS203UQ9ckKOEbhIyHiDLDXppmrCKol+N4ZA/8SSIUIBdSffrNzOFuRZ3NukXMlc 8wqeABhiJ5TeHNHbuRb2/NJYYPTBbDePViyIU9F2YM6Gbq2aNWjfPCvej30FefblZMPb xXZ9CQPSLctvoWsuP8Gl04pDLKzgBsprTBaaFsU1MSOzCit1SIhqoEeZkIBRa81idKNE WwIX5HSUCrk5H6Sn8mDSM583PVQ1p7O2r3hTscOn/qLvMgCMKXtH7dxVlJ/6IeY8Rzqx X3zNDAGE940JKMi6c/FV2x0wAMGwfSSrLdXfWuklW1CCSX7ueO3c+zYzWrCdDLFvVrEG NFhw== X-Gm-Message-State: APf1xPDQ/K7iC+GJicW+sDqBwJtyc+I4aWNk8TuyCe49R/SDKb0txIhv 7YiH1g3mC634Hcvihvt5ICQ= X-Google-Smtp-Source: AH8x226naSZWEYRRS/ZTBsCkF7GynAz+fp+LS6/I64l5/ov+lv80CD9aD2cIML+xMIS0NS+bXvUONw== X-Received: by 10.55.146.195 with SMTP id u186mr4106861qkd.278.1518188098010; Fri, 09 Feb 2018 06:54:58 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.54.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:54:57 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:07 -0300 Message-Id: <20180209145430.26007-8-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 07/30] sdhci: add a 'spec_version property' (default to v2) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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 0991acd724..64556480a9 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -216,9 +216,9 @@ /* Slot interrupt status */ #define SDHC_SLOT_INT_STATUS 0xFC -/* HWInit Host Controller Version Register 0x0401 */ +/* HWInit Host Controller Version Register */ #define SDHC_HCVER 0xFE -#define SD_HOST_SPECv2_VERS 0x2401 +#define SDHC_HCVER_VENDOR 0x24 #define SDHC_REGISTERS_MAP_SIZE 0x100 #define SDHC_INSERTION_DELAY (NANOSECONDS_PER_SECOND) diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index f8d1ba3538..2a26b46f05 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -78,6 +78,7 @@ typedef struct SDHCIState { /* Read-only registers */ uint64_t capareg; /* Capabilities Register */ uint64_t maxcurr; /* Maximum Current Capabilities Register */ + uint16_t version; /* Host Controller Version Register */ uint8_t *fifo_buffer; /* SD host i/o FIFO buffer */ uint32_t buf_maxsz; @@ -93,6 +94,7 @@ typedef struct SDHCIState { /* Configurable properties */ bool pending_insert_quirk; /* Quirk for Raspberry Pi card insert int */ uint32_t quirks; + uint8_t sd_spec_version; } SDHCIState; /* diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index f20a58068b..48924feb07 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); @@ -919,7 +920,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 " " @@ -1175,11 +1176,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) @@ -1207,6 +1219,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 Fri Feb 9 14:54:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 871442 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="MtMtGr2B"; 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 3zdJKk32T9z9s7f for ; Sat, 10 Feb 2018 02:05:59 +1100 (AEDT) Received: from localhost ([::1]:60282 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAFR-0001pv-8v for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:05:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33887) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA4x-0001uR-1b for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA4r-00058M-BN for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:07 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:46968) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA4r-00057s-77 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:01 -0500 Received: by mail-qk0-x243.google.com with SMTP id d144so3447094qkg.13 for ; Fri, 09 Feb 2018 06:55:01 -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=XgcV1DxPbwecE+x/PSLVariBirqTZYxkPoMnXlwq4/s=; b=MtMtGr2BTS/zl0QAIpq8YU6rwHT4ExwP8ZYHPZEvDgQVWUEkN1xy5YNykoFnT39v2n TL8k4qeSH9Dt+ncBRP0jezK5yH7OL6L9GlsgHLMeVZ1xKAc2hQyFOxuiwyDEjqUNE18M 1LhJYHt1mwUvR9QSMsogk9htzu5wA5N8lt09kvEuOgthtiwCsYdr9cVye5uJd8GZWWUO jcxnkne0zHpzlDiCUjvb4lltDVQ+UPwcxmbU8fwWTgulNXRGRSQugJMDEdpBTVTUgnNg SthUFwPPjth/xrebSRTx0C3FoyFjWwuKhP8Y/zM7oGfI/rerZg5Sid5x8aHGHro/jBig 818Q== 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=XgcV1DxPbwecE+x/PSLVariBirqTZYxkPoMnXlwq4/s=; b=b2PMiqXjf0c2tTZEi1O2s99Sw4QV0IGFpvWxONCb1L6nkrTmmAVV1tcps+qSvVDHhu kfSDqCT7R8zh9uumD7bDbi/zEhETbL4tk+Hr+8qAebOiBkMj3NcnZgIU/RyEzDEFJinC 3FtLD0HnwWx6aob1K3Vs2nuuW5taxGNb2lgxTcCTjg1+zxqcoV2BNT08k9rRkvmoMkX3 77N0ko5rxlLBVPca0GS4x9XgA1iSblnS/reDf9zZ0n2m4Ax4tcTY9u2qz7M7gHrwlgyH 32GUCE2YEY6HwoF3vF1EjYUFEoQb6FshWG/KOtYtsxTZAnxsiIGWFtaK28O0XqJYQBfs 2xnA== X-Gm-Message-State: APf1xPAxx+7GShIt/l7yr/9Dqc630Fuedr9e8gYa2DsYXqHv7qaUZ5DL io9g0Rw079s6YbeoL22Qe90= X-Google-Smtp-Source: AH8x225Ma2Dpm+cDAxmoUnTLoTkPtMRFCvwttipt9BBifULnieCRetP4/JUdydhiQ4w65cvuQSdLRA== X-Received: by 10.55.154.13 with SMTP id c13mr4226614qke.197.1518188100648; Fri, 09 Feb 2018 06:55:00 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.54.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:00 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:08 -0300 Message-Id: <20180209145430.26007-9-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 08/30] sdhci: use a numeric value for the default CAPAB register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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 48924feb07..39eeccc4d5 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 Fri Feb 9 14:54:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 871446 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="ICMMJmJZ"; 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 3zdJPZ4ZYgz9s72 for ; Sat, 10 Feb 2018 02:09:22 +1100 (AEDT) Received: from localhost ([::1]:60307 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAIi-0004qs-Dh for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:09:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33929) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA4z-0001wQ-0Q for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA4u-0005BZ-2H for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:08 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:45098) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA4t-0005B8-To for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:03 -0500 Received: by mail-qk0-x244.google.com with SMTP id x127so10258560qkb.12 for ; Fri, 09 Feb 2018 06:55:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X0+X5z6pINiMGVyX/F3m+b6yOLcj2g4p4BPRq/lVCoY=; b=ICMMJmJZ7AaNHx21kqvaMkJSIu8lCr6y523g5qAi3sxbTLfOfknA25F05w8bFQlzqc Er2V7qEkcETuSVOVd2/DMvGSvrZU3j9id6Pt3CCj3GTkKYzo2H5RrDPvHEogRc1fo3mT K/cCpdCa985MgIAALyQi3dmL10sf7g1+h3f2Ed6bKmLjVMpioWRVPOhCzY2c3hC02W6s /zswIsAUmEZ0fzDESwDeLg58VsZEBH7ILZZnhdUcH+1guiYc/tgy7SAhLUZZbxaDWnNl S1sO2dcAB9goByWsAoYRWzd0E4JkXbJ8sth5FG0k+sgtGy1r1iMISNRwSw3FPXiW1xNL gqDg== 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=X0+X5z6pINiMGVyX/F3m+b6yOLcj2g4p4BPRq/lVCoY=; b=DbFHQEa7WAQDGh3uXXhKdiFm12TVhKiAOWATn0LSjYACg4OkZlDJN3EbEwEQPTVjpq 1KiHy8ZVPig3mzD6Zc8HQcvmWc1OEuJU4ruxdXi1e0mw9bH9A4DXU7NMYSNNrxrEBsK3 NNROUuMkl1q0Vri3QmqDIaVAUiuu2JNpPjDj8UW61YPlRc6LDr9a5Y+5qNQTdQR5Ahjg 7EhcuMJLiGefIbFZwkUWMcByua9SQSliQIttMYtwoXXSnBk2eTcc6iOhdYaAZT+cOA+9 bYUl1Gvr5qyQlFxzEMduEeRqWXPvbylVfyGT3ba5uwE1//kDjJE0nT66jE0/n70ghGEr hciQ== X-Gm-Message-State: APf1xPABoWUPMrsTFCdrc5djBJwC02UDCrC+jY8fFcSgiSY50Yc2LfIH IhXE1ibwgQGhtwYdcNZc0fo= X-Google-Smtp-Source: AH8x226DUhdL29AFRDBzJ40bwWhQ0dZ9/s5nmVsCqahH+BFFpnH0Rxa1KeLzcdJYTTB0U1Lj1NYHvQ== X-Received: by 10.55.222.5 with SMTP id h5mr4375892qkj.312.1518188103326; Fri, 09 Feb 2018 06:55:03 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:02 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:09 -0300 Message-Id: <20180209145430.26007-10-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 09/30] sdhci: simplify sdhci_get_fifolen() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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 64556480a9..def1c7f7aa 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -24,6 +24,8 @@ #ifndef SDHCI_INTERNAL_H #define SDHCI_INTERNAL_H +#include "hw/registerfields.h" + /* R/W SDMA System Address register 0x0 */ #define SDHC_SYSAD 0x00 @@ -185,7 +187,7 @@ #define SDHC_CAN_DO_ADMA2 0x00080000 #define SDHC_CAN_DO_ADMA1 0x00100000 #define SDHC_64_BIT_BUS_SUPPORT (1 << 28) -#define SDHC_CAPAB_BLOCKSIZE(x) (((x) >> 16) & 0x3) +FIELD(SDHC_CAPAB, MAXBLOCKLENGTH, 16, 2); /* HWInit Maximum Current Capabilities Register 0x0 */ #define SDHC_MAXCURR 0x48 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 39eeccc4d5..e25f1da0f3 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) || @@ -1119,21 +1124,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 Fri Feb 9 14:54:10 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: 871415 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="OMmLCPh1"; 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 3zdJ6N6TDRz9s1h for ; Sat, 10 Feb 2018 01:56:12 +1100 (AEDT) Received: from localhost ([::1]:60206 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5y-00022J-UL for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 09:56:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33925) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA4y-0001wH-Ud for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA4w-0005EK-T0 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:08 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:37033) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA4w-0005Dv-NV for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:06 -0500 Received: by mail-qt0-x243.google.com with SMTP id s27so10834780qts.4 for ; Fri, 09 Feb 2018 06:55:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yCTRlpOm+RJtvree0QsWpvkOni6/xEmifvqw+2Eg4Qc=; b=OMmLCPh1as4QmnVUvkEJ71/l6gf1jn72FMfKUwl/+jvMUNKlRPyBe4Utv6YGNj16OE v3ERfy49ixskznKzVSVEGHEHtJNM8zMWZUcO11GgLkVz3TOOmZhilox3LUCEvgZQRpxT FZB9gJi7QF96l02IceWRbDt+6RBaIVSlQyVZjSlo/tvdngeigQpbEZGkS26GcX+d9iSI cRD8ts3r3Eq0fwLaXUMNDyAO8F1b+6/RAmIy7MCewbXq5zMxCevpPVhh/WG2ZTcGiZO5 uAcBrAXAD4hERi5ewllQbRVDTXOJPBU9MFCfq55RCwh/0byHuqYZ/fB0idpBP+ecNMS4 dM6g== 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=yCTRlpOm+RJtvree0QsWpvkOni6/xEmifvqw+2Eg4Qc=; b=VN3IHlbTmDvn/btVMrDr4h7SgC5wFAn4AUUE3ZypXqn065/XsZDXIIUY3Wv1mInzjS yMCp2CDsdMNzZV61bvErUEtnIni1L/v5MN0IHy3Uqw5lEPZ1f3rImifA3b3aS7aybzng DwJ55paT4kq8r9GzjNzsHUwVAjyImcL2TpYD+TOr4InAdSG+1NSxqAo3bglsp98FND1G DqdbSMlWI1JJ4v01qPlX5/SYh3TyypAitUz2OXr2a53hXE0A6zDGvnG5nOoQq9m+4Yb1 bnWLUbi8SK86y4oUH55jQtncOd28n0N8UOJeirPPKC8/G5lv3ckrPi/2Bmh1txyV6kQw BVlg== X-Gm-Message-State: APf1xPBb5LZFCwmv9luS3gXN7q2IwDLv75rftUBt2eEHFnl7XrAxqQDq ITNdJuDSFrtCgwbo+5e6nCU= X-Google-Smtp-Source: AH8x224Uht/H4ZzvSyd7YmhWvzZIdr0Pi9RUR7S1FIhG+eJB4pMnwZzoGjmSIEl8ZvJhnFM016Ujtw== X-Received: by 10.200.42.168 with SMTP id b37mr4779732qta.321.1518188106038; Fri, 09 Feb 2018 06:55:06 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:05 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:10 -0300 Message-Id: <20180209145430.26007-11-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v12 10/30] sdhci: check the Spec v1 capabilities correctness X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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 | 22 ++++++++++- hw/sd/sdhci.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++- hw/sd/trace-events | 1 + 3 files changed, 118 insertions(+), 4 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index def1c7f7aa..96d7f4dde7 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -86,7 +86,9 @@ /* R/W Host control Register 0x0 */ #define SDHC_HOSTCTL 0x28 -#define SDHC_CTRL_LED 0x01 +FIELD(SDHC_HOSTCTL, LED_CTRL, 0, 1); +FIELD(SDHC_HOSTCTL, DATATRANSFERWIDTH, 1, 1); /* SD mode only */ +FIELD(SDHC_HOSTCTL, HIGH_SPEED, 2, 1); #define SDHC_CTRL_DMA_CHECK_MASK 0x18 #define SDHC_CTRL_SDMA 0x00 #define SDHC_CTRL_ADMA1_32 0x08 @@ -102,6 +104,7 @@ /* R/W Power Control Register 0x0 */ #define SDHC_PWRCON 0x29 #define SDHC_POWER_ON (1 << 0) +FIELD(SDHC_PWRCON, BUS_VOLTAGE, 1, 3); /* R/W Block Gap Control Register 0x0 */ #define SDHC_BLKGAP 0x2A @@ -124,6 +127,7 @@ /* R/W Timeout Control Register 0x0 */ #define SDHC_TIMEOUTCON 0x2E +FIELD(SDHC_TIMEOUTCON, COUNTER, 0, 4); /* R/W Software Reset Register 0x0 */ #define SDHC_SWRST 0x2F @@ -180,17 +184,31 @@ /* ROC Auto CMD12 error status register 0x0 */ #define SDHC_ACMD12ERRSTS 0x3C +FIELD(SDHC_ACMD12ERRSTS, TIMEOUT_ERR, 1, 1); +FIELD(SDHC_ACMD12ERRSTS, CRC_ERR, 2, 1); +FIELD(SDHC_ACMD12ERRSTS, INDEX_ERR, 4, 1); /* HWInit Capabilities Register 0x05E80080 */ #define SDHC_CAPAB 0x40 -#define SDHC_CAN_DO_DMA 0x00400000 #define SDHC_CAN_DO_ADMA2 0x00080000 #define SDHC_CAN_DO_ADMA1 0x00100000 #define SDHC_64_BIT_BUS_SUPPORT (1 << 28) +FIELD(SDHC_CAPAB, TOCLKFREQ, 0, 6); +FIELD(SDHC_CAPAB, TOUNIT, 7, 1); +FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); FIELD(SDHC_CAPAB, MAXBLOCKLENGTH, 16, 2); +FIELD(SDHC_CAPAB, HIGHSPEED, 21, 1); +FIELD(SDHC_CAPAB, SDMA, 22, 1); +FIELD(SDHC_CAPAB, SUSPRESUME, 23, 1); +FIELD(SDHC_CAPAB, V33, 24, 1); +FIELD(SDHC_CAPAB, V30, 25, 1); +FIELD(SDHC_CAPAB, V18, 26, 1); /* HWInit Maximum Current Capabilities Register 0x0 */ #define SDHC_MAXCURR 0x48 +FIELD(SDHC_MAXCURR, V33_VDD1, 0, 8); +FIELD(SDHC_MAXCURR, V30_VDD1, 8, 8); +FIELD(SDHC_MAXCURR, V18_VDD1, 16, 8); /* W Force Event Auto CMD12 Error Interrupt Register 0x0000 */ #define SDHC_FEAER 0x50 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index e25f1da0f3..5ed463ca77 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 unit_mhz; + + switch (s->sd_spec_version) { + case 2: /* default version */ + + /* fallback */ + case 1: + unit_mhz = FIELD_EX64(s->capareg, SDHC_CAPAB, TOUNIT); + msk = FIELD_DP64(msk, SDHC_CAPAB, TOUNIT, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, TOCLKFREQ); + msk = FIELD_DP64(msk, SDHC_CAPAB, TOCLKFREQ, 0); + trace_sdhci_capareg(unit_mhz ? "timeout (MHz)" : "timeout (KHz)", val); + if (sdhci_check_capab_freq_range(s, "timeout", val, errp)) { + return; + } + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, BASECLKFREQ); + msk = FIELD_DP64(msk, SDHC_CAPAB, BASECLKFREQ, 0); + trace_sdhci_capareg(unit_mhz ? "base (MHz)" : "Base (KHz)", val); + if (sdhci_check_capab_freq_range(s, "base", val, errp)) { + return; + } + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, MAXBLOCKLENGTH); + if (val >= 0b11) { + error_setg(errp, "block size can be 512, 1024 or 2048 only"); + return; + } + msk = FIELD_DP64(msk, SDHC_CAPAB, MAXBLOCKLENGTH, 0); + trace_sdhci_capareg("max block length", sdhci_get_fifolen(s)); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, HIGHSPEED); + msk = FIELD_DP64(msk, SDHC_CAPAB, HIGHSPEED, 0); + trace_sdhci_capareg("high speed", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, SDMA); + msk = FIELD_DP64(msk, SDHC_CAPAB, SDMA, 0); + trace_sdhci_capareg("SDMA", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, SUSPRESUME); + msk = FIELD_DP64(msk, SDHC_CAPAB, SUSPRESUME, 0); + trace_sdhci_capareg("suspend/resume", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, V33); + msk = FIELD_DP64(msk, SDHC_CAPAB, V33, 0); + trace_sdhci_capareg("3.3v", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, V30); + msk = FIELD_DP64(msk, SDHC_CAPAB, V30, 0); + trace_sdhci_capareg("3.0v", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, V18); + msk = FIELD_DP64(msk, SDHC_CAPAB, V18, 0); + trace_sdhci_capareg("1.8v", val); + break; + + default: + error_setg(errp, "Unsupported spec version: %u", s->sd_spec_version); + } + if (msk) { + qemu_log_mask(LOG_UNIMP, + "SDHCI: unknown CAPAB mask: 0x%016" PRIx64 "\n", msk); + } +} + static uint8_t sdhci_slotint(SDHCIState *s) { return (s->norintsts & s->norintsigen) || (s->errintsts & s->errintsigen) || @@ -991,7 +1078,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); @@ -1126,11 +1213,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 --- */ @@ -1538,7 +1633,7 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) /* * First, save bits 7 6 and 0 since they are identical */ - hostctl = value & (SDHC_CTRL_LED | + hostctl = value & (R_SDHC_HOSTCTL_LED_CTRL_MASK | SDHC_CTRL_CDTEST_INS | SDHC_CTRL_CDTEST_EN); /* diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 0a121156a3..78d8707669 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -13,6 +13,7 @@ sdhci_adma_transfer_completed(void) "" sdhci_access(const char *access, unsigned int size, uint64_t offset, const char *dir, uint64_t val, uint64_t val2) "%s%u: addr[0x%04" PRIx64 "] %s 0x%08" PRIx64 " (%" PRIu64 ")" sdhci_read_dataport(uint16_t data_count) "all %u bytes of data have been read from input buffer" sdhci_write_dataport(uint16_t data_count) "write buffer filled with %u bytes of data" +sdhci_capareg(const char *desc, uint16_t val) "%s: %u" # hw/sd/milkymist-memcard.c milkymist_memcard_memory_read(uint32_t addr, uint32_t value) "addr 0x%08x value 0x%08x" From patchwork Fri Feb 9 14:54:12 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: 871418 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="aGTVW+N3"; 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 3zdJ9v6ZfHz9s7f for ; Sat, 10 Feb 2018 01:59:15 +1100 (AEDT) Received: from localhost ([::1]:60231 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA8v-0004lL-VF for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 09:59:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33985) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA53-00024I-4u for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA52-0005Og-6L for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:13 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:43019) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA52-0005OS-22 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:12 -0500 Received: by mail-qk0-x241.google.com with SMTP id d129so6979048qke.10 for ; Fri, 09 Feb 2018 06:55:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=kSxivJpOo+GjEiiXG4H2Phz9DgkkN/1ScOhxKDdWyLo=; b=aGTVW+N3A9YJoBaKk0OJ9G4MiBpSWvkDl3mGZgHM2AdpG0qMGPgjW1zCNARrCuc9LM ixj0T3XWM6lYSoW2a4h2lpMUFlmwivXvVKxOMtzlsDIqCh6iaPoVfjGubjX+RPzDiRn8 JumJtehii5HJtmYFFrtFNkdmFb/WE6nK2Oy/2evfPmcY3K2vNQ75y716MbH6wnF94NFG 4CzsCEKuaJ2fU7HYwEse/9BZ1Tlw6AJF50gBCwRVlcDfcH57/8ilB3oWlbRoussu0xqL vQQfK3Xq+eYQnbnEUeRUxoXJVBRJPO8ZL3CxrKgj0FodF1q3OlPr+3Bd0AF/rYBIhG5g 43sw== 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=kSxivJpOo+GjEiiXG4H2Phz9DgkkN/1ScOhxKDdWyLo=; b=g5T8cU+edVPrUkMaREbUAVWrq52GLYyHo27SA2s8Hwj4leorrs+9Fn5grj0g3ro1Kp s15q0fM9bEdI4G8bMuVhyCaqHMbnev576XwWAcSCRY17GCjQAkgfum7/8zIlnjf+SQXk Q5NJD3+IeF5XzAIGYPBMdECsZzeMrDiM7WslxKOaRAqCxuV+/Up0mdvTBKXzIbEY1iU+ fDgexRa8wGXtkqZFcff9/fAubvjCwkIZrJXXPQaOnYpZW2NKm2n/94nS2kbc33cimD0W Mlf/0awc7WiJbWwb3//kG/Oy+pNE06ZfPk2W4uVOEjCApXEZ/ktoLc2pRBAuhz7vi0wi ScHQ== X-Gm-Message-State: APf1xPDmkmOgTxgIwo357JLXT76Ygs63AnxhbtA/m0O+ycaXYK/GqztD OPGKi84JTzS4YWSz+f3uoJE= X-Google-Smtp-Source: AH8x224CzYR3qrkpALMR+L8MrxD8fCBtzzLYIm/Hdg1ztk4YwmLIJ5M8n0XlurxroILyllOl8Cojcw== X-Received: by 10.55.209.12 with SMTP id s12mr4091246qki.219.1518188111545; Fri, 09 Feb 2018 06:55:11 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:11 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:12 -0300 Message-Id: <20180209145430.26007-13-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 12/30] sdhci: Fix 64-bit ADMA2 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sai Pavan Boddu , Peter Maydell , "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 a563a7c88d..4c8a321942 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -668,8 +668,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 Fri Feb 9 14:54:13 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: 871444 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="BwPm9nFx"; 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 3zdJL74RdVz9s7f for ; Sat, 10 Feb 2018 02:06:23 +1100 (AEDT) Received: from localhost ([::1]:60290 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAFp-0002IR-L8 for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:06:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34015) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5A-0002B2-44 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA55-0005Qk-8L for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:20 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:41316) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA54-0005QJ-Tl for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:15 -0500 Received: by mail-qk0-x241.google.com with SMTP id p23so10268689qke.8 for ; Fri, 09 Feb 2018 06:55: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 :mime-version:content-transfer-encoding; bh=2s754x+11PNC9BmbOyVtsVLUKQ5qCVNfc9leD6hTvZQ=; b=BwPm9nFxnOYvdVoMtowpUK3pCIME/ACW9m8+8pNTOrPDaHGZJNGEpT6D4JiSSOA+Ag K5AJHisACv3eFPFPrDToDRq4d7EmfLeN1AmfwFBeYfke5W/cxFthjH7wfs+3Bvs7HPoh KU8ZkGJtoP9nR+Z0idoZhupOY8TnxvKf+Rn5unWHNW6oWQ7sQ8ZTnES1Szrhc6Sy1Zvm ejuLMaVgT+LZZmqMi0iPnn7zlDUMJq6aU8QTUySlUKXwBV6k8FzcrhJh54nG7AtnSYXN C3N+ocnsnsCflTn2VQJJqXn7QXlGDIfXaKJjjIyAYBS9YGihXuenDhRkKyE6pBF7mEKI 09Yw== 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=2s754x+11PNC9BmbOyVtsVLUKQ5qCVNfc9leD6hTvZQ=; b=VqHCGlj+M1ueUk6BOJJk0aVwcDPaOE2aLsYKvPb+WxZwoIK6u2XKx8tGR9kxeCAbEN DTvHoJ9nGrlvjYuM4j7uRFrBoaF9D9MWT9jMoNnDtLjPNENmBrM/AFGKYpL2EKF3A9bY cwivmuZCwm9opzZwdUmOuxhhRxMsk+yMDfWR2OA+hVfboB1Fxo6ScjozfhVDH8+4VpoF Y+M3mWDbQTE5COcifAVkrMoSaSfsucoQ2N6A3KYzoNHNHxcXhRohlJqfvwQynlWEOSKA zJkrUCGH4z4WQ5Sbi68w0sBweipgm20epHtuvWUauXSK12Xpe6m//9Ywq4IAyYLS6re5 Ve1g== X-Gm-Message-State: APf1xPD0GPw/lKFlVIl7CpOlk5Hd+1c3EK0BglYz3rd+mqIcym9fJYl8 WBrev+85ysa0tMxjT/BWSW4= X-Google-Smtp-Source: AH8x224VqbqthKcdrkp0Ufx9v4ha3r/3ydJH/s+MoObFpDWUChJuAgA+9vBtli4d7aopYPxlxQgoqw== X-Received: by 10.55.1.78 with SMTP id 75mr3974389qkb.310.1518188114365; Fri, 09 Feb 2018 06:55:14 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:13 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:13 -0300 Message-Id: <20180209145430.26007-14-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 13/30] 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" , Peter Maydell , 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 96d7f4dde7..fe68b21e92 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -89,12 +89,12 @@ FIELD(SDHC_HOSTCTL, LED_CTRL, 0, 1); FIELD(SDHC_HOSTCTL, DATATRANSFERWIDTH, 1, 1); /* SD mode only */ FIELD(SDHC_HOSTCTL, HIGH_SPEED, 2, 1); -#define SDHC_CTRL_DMA_CHECK_MASK 0x18 +FIELD(SDHC_HOSTCTL, DMA, 3, 2); #define SDHC_CTRL_SDMA 0x00 -#define SDHC_CTRL_ADMA1_32 0x08 +#define SDHC_CTRL_ADMA1_32 0x08 /* NOT ALLOWED since v2 */ #define SDHC_CTRL_ADMA2_32 0x10 -#define SDHC_CTRL_ADMA2_64 0x18 -#define SDHC_DMA_TYPE(x) ((x) & SDHC_CTRL_DMA_CHECK_MASK) +#define SDHC_CTRL_ADMA2_64 0x18 /* only v1 & v2 (v3 optional) */ +#define SDHC_DMA_TYPE(x) ((x) & R_SDHC_HOSTCTL_DMA_MASK) #define SDHC_CTRL_4BITBUS 0x02 #define SDHC_CTRL_8BITBUS 0x20 #define SDHC_CTRL_CDTEST_INS 0x40 @@ -190,19 +190,19 @@ FIELD(SDHC_ACMD12ERRSTS, INDEX_ERR, 4, 1); /* 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 4c8a321942..f0b9af4976 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); + msk = FIELD_DP64(msk, SDHC_CAPAB, ADMA2, 0); + trace_sdhci_capareg("ADMA2", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, ADMA1); + msk = FIELD_DP64(msk, SDHC_CAPAB, ADMA1, 0); + trace_sdhci_capareg("ADMA1", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, BUS64BIT); + msk = FIELD_DP64(msk, SDHC_CAPAB, BUS64BIT, 0); + trace_sdhci_capareg("64-bit system bus", val); /* fallback */ case 1: @@ -833,7 +844,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; } @@ -841,7 +852,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; } @@ -849,8 +860,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 Fri Feb 9 14:54: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: 871439 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="mgxwE91z"; 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 3zdJFx2mpvz9s1h for ; Sat, 10 Feb 2018 02:02:45 +1100 (AEDT) Received: from localhost ([::1]:60265 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekACJ-0007dK-E8 for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:02:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5A-0002B1-3O for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA58-0005Sp-6y for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:20 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:40828) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA58-0005ST-1p; Fri, 09 Feb 2018 09:55:18 -0500 Received: by mail-qt0-x244.google.com with SMTP id s39so10838642qth.7; Fri, 09 Feb 2018 06:55:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wY//D2TOSIUxA/+3Tz/qnHcjRg6V0zzmBzdlX6DyMlw=; b=mgxwE91zGV7qQTeHjAxwLKu2ekBxwkWYW4JLMRhm0zWb545LnoALZvAe9aLv3+6lif G9ys6giKe2sUSdqkX7DFdLHyl9q/lBo6spGI6rXPiX4IzOzQoRAetNJS3GREmILns/a5 Wi4BgfokPsU1y1KWf8iSoFf5YPCaU422oJWAEeWACGFo1ff2kAf/w9vQfNQSkvlCSusw /9Lg00N8v9+S5zF/Sd6VeTtd3aEn/e8/GLPOQObt6LqLhRpRWpjZ9EJ7l9WOutr8lsEH HGSA/P83zWmNJFSVt6r+JrfjlQIXKG0GjDmh4EbaKzLgSaRckUVtfPYLMHantM2mWHxI 90UQ== 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=LDrID36fCNCvO6kQEu4M63OYJAyvshO6gifh2cCBA9U6jXV+QaOX/6m1Fwt2m0hQ38 g1F6ukT4M35bFFliYhxRY4MrrXJ6o5dLVG4BzMqzGa9/LrWN3C/HVtJ+WG8EqY37K+d6 9OJk2boBE76T0qfSP+4A94dm4XJXseo0oaX01RSN6zLfCbUpKrbGNw24wPa4a8ASzQmg 6CRINmrsw7OrJjvXOWx5a2Y08jAdaCI0TfG19wMzPBCRExQv1A/JrjNUTgV606WVEM5c vyMjJ6Juu/lBgv9X1LN4OmvSSiXeJBh/lb4BytNHcpxdI3125SdErNbf41n/JE8xRCgn Zssg== X-Gm-Message-State: APf1xPAyS3rRuxeYZZhvpvZyiSu1p3k5V2gs9sLsnw/7fHGKlOGnfnbM anX46awYp6mcAt0kc1aPLWI= X-Google-Smtp-Source: AH8x226MPxzK3hVAC+7YZF+PPpX2wRaSNuEkQ91e4uvaUwA2Q9WSpGpr/i4+PSCpHaJ85InxEzNk6g== X-Received: by 10.237.55.33 with SMTP id i30mr4948536qtb.95.1518188117449; Fri, 09 Feb 2018 06:55:17 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:16 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:14 -0300 Message-Id: <20180209145430.26007-15-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 14/30] hw/arm/exynos4210: access the 64-bit capareg with qdev_prop_set_uint64() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , qemu-devel@nongnu.org, Igor Mitsyanko , =?utf-8?q?Philippe_Mathieu-Daud=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 Fri Feb 9 14:54: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: 871449 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="JmytaxZ+"; 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 3zdJQy6VVFz9s7f for ; Sat, 10 Feb 2018 02:10:34 +1100 (AEDT) Received: from localhost ([::1]:60328 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAJs-0005vP-R3 for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:10:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34034) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5C-0002Bl-6i for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5B-0005V6-1f for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:22 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:35348) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5A-0005Ul-SU; Fri, 09 Feb 2018 09:55:20 -0500 Received: by mail-qt0-x244.google.com with SMTP id g14so10840748qti.2; Fri, 09 Feb 2018 06:55:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=sZp8aF6avIv4FuO7MfmdU5DFjxinRjlcQGqTNkIJbBA=; b=JmytaxZ+0c/EVJcOVm76U65GDwNhkbFUZNx7oKgU6dUsZO/hRblay9n40yOY2l6Vsl hdwZMUOYI94aLHoo2hTsnmDiJNzlz4lnuk4iLMtmtAnf/SvPlcihGMdnpohoq7b1oiWV 7ubrnl9gHi5cgqP3HjIR4kNiFJ3ozNUJEF6O4FhZGqzvi7nXFENO2/8G5j29VIWlRe3L o8VGt+UcPb2Th4veDszbRrCQ0FZ9AOITfNCoDvBWZKoGO/1WWnhAgcZa2+N/5q+oWH1l VLdtKbJgtU6yjwYfPzPgj1SFZyjsqcW93YBqYc+bvnRvAVjWOFeQePCINblCnGHYux7f zKeg== 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=umImZsOROATDwQgay7CdS1NOEh7O2Gsd1uYLjPXwpQFGpX4XW6JwtEbJt25iJDGtsc 65qGFk2PSNOgfvAoC3AcHJ3KF+KDQyYpLweuoJoI8FKUqi/22FzWeEj16AJL+GKe5Vkt Haz6FES+ZG5PIBgbJAGyH6yDHJE3etzOwErp9VnItyAkQ0ubmwl4vXsVrY4PdqyWvCAd yjssJM92vwfoY6iRSiCJlXhuqgHX8ztPBpO08lWI4DBP5xid8JC3TYG1h+gJnawAbrdr lMjBA6HOGLJUkOb0DQydnVPb1UuXdcpw6QRT5wq3dc7KFTLVgelM+RbmkLf/AeCRQBAE sTrg== X-Gm-Message-State: APf1xPD7ZS4+0uZHRHJ5FUyt5cye4NytF273Bj5BTw1zmxc1Ij62I1Eq adnuXjd91TyfLBW/EujKTaa8/50Z X-Google-Smtp-Source: AH8x2279e6ID9QWhwfCIU4RR2MxmMZcFUJvwyljy9162TOdGYfVmpCZ4Wr6lHTRbpT+D0b++YBd+Eg== X-Received: by 10.200.55.182 with SMTP id d51mr4787218qtc.61.1518188120364; Fri, 09 Feb 2018 06:55:20 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:19 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:15 -0300 Message-Id: <20180209145430.26007-16-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 15/30] hw/arm/exynos4210: add a comment about a very similar SDHCI (Spec. v2) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , qemu-devel@nongnu.org, Igor Mitsyanko , =?utf-8?q?Philippe_Mathieu-Daud=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 Fri Feb 9 14:54: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: 871452 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="rDqfizuN"; 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 3zdJW637xSz9s7h for ; Sat, 10 Feb 2018 02:14:10 +1100 (AEDT) Received: from localhost ([::1]:60378 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekANL-0000Vm-UO for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:14:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34077) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5F-0002Fy-Ev for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5E-0005Y0-CI for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:25 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:37113) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5E-0005Xe-5O; Fri, 09 Feb 2018 09:55:24 -0500 Received: by mail-qk0-x242.google.com with SMTP id c128so10273779qkb.4; Fri, 09 Feb 2018 06:55: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=6I0eLeCnx4eW7xx/FEABgkNDEMBh/XvlA3Ez3K+OV/Q=; b=rDqfizuNjVrExvSn0QNf0SUJrYxB7xLebDQ6YTfbkvbcsUKkJ7HyA/rgDddZclFU/J xIH2l6d3tcuBGvUZfMws5GFwT6hcWH94K5jPIu6veLlp8VMDK9E5294rZnOJO7kB/iN6 3cECc1S1jeln5bwyDqHCdSUc08M9CSWhYugThKowb9lEeN4o7U9O5aV1kU034mjeLBZw E7VbPVAW5UPI7U8mLQykN8y0fujFsr7KWqsKSe3pMD138YY4lX7LlPBxexJHkuo1jImJ h6ZFH5D9Tsfhu9/oQeDUYHNSgUe8nH1uit/AieaeWrM/pT6WV9g++wIncNyYnYaCTQv0 +Bgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=6I0eLeCnx4eW7xx/FEABgkNDEMBh/XvlA3Ez3K+OV/Q=; b=UzLnbhsogDf2m5HSlFX9XdrVFMe0Ru+of72eno3r+Ay6tT6UO1/XowOX6DLBSnOCjD TwZFW7uSPfQD1Oo6Pp6XFJgUptRA+kPhr1tQlNQQwFFUcXmoTgc7v35ZceF1C3i5+frw 4/S0na+6cnRrgkh3eIuOh8izRu8iZySJQSj34ZcXF9T1TtU6EVPNk/d9Pp8L3aaX+obY zOU/VyTdSlMDFYuPcZm/MECA791S/9/JnQ15Kbt8jSMn+MHMQ4+eqCLusxuHsHWj7z2h UpJj7aJa9M9wBbHkEmLuC/LH7wCjeO14zWDGR4kWGkmQ9dtaZ/EoOV9PaV9oB5ZUNX7B u0Sg== X-Gm-Message-State: APf1xPDyJIzMZaSlmOUf0OQ5bpK/+yQFFla5V2aZ2CncQLFem9MGJYyq XZKfuwcjrMfhOEGWA12H/wz5bptm X-Google-Smtp-Source: AH8x226fXUioPQZMG/BlH8W/su0lp5ILnPX5pZPiaH/IqPxK1Q/rEv0Dl4pFt5MrEQ4QI9Z+ug4h2A== X-Received: by 10.55.215.132 with SMTP id t4mr4422220qkt.64.1518188123528; Fri, 09 Feb 2018 06:55:23 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:23 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:16 -0300 Message-Id: <20180209145430.26007-17-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 16/30] hw/arm/xilinx_zynq: fix the capabilities register to match the datasheet X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , qemu-devel@nongnu.org, =?utf-8?q?Philippe?= =?utf-8?q?_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:Xilinx Zynq" , "Edgar E. Iglesias" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" checking Xilinx datasheet "UG585" (v1.12.1) Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis --- hw/arm/xilinx_zynq.c | 53 ++++++++++++++++++++++++++++------------------------ tests/sdhci-test.c | 5 +++++ 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 1836a4ed45..0f76333770 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -61,6 +61,8 @@ static const int dma_irqs[8] = { #define SLCR_XILINX_UNLOCK_KEY 0xdf0d #define SLCR_XILINX_LOCK_KEY 0x767b +#define ZYNQ_SDHCI_CAPABILITIES 0x69ec0080 /* Datasheet: UG585 (v1.12.1) */ + #define ARMV7_IMM16(x) (extract32((x), 0, 12) | \ extract32((x), 12, 4) << 16) @@ -165,10 +167,8 @@ static void zynq_init(MachineState *machine) MemoryRegion *address_space_mem = get_system_memory(); MemoryRegion *ext_ram = g_new(MemoryRegion, 1); MemoryRegion *ocm_ram = g_new(MemoryRegion, 1); - DeviceState *dev, *carddev; + DeviceState *dev; SysBusDevice *busdev; - DriveInfo *di; - BlockBackend *blk; qemu_irq pic[64]; int n; @@ -247,27 +247,32 @@ static void zynq_init(MachineState *machine) gem_init(&nd_table[0], 0xE000B000, pic[54-IRQ_OFFSET]); gem_init(&nd_table[1], 0xE000C000, pic[77-IRQ_OFFSET]); - dev = qdev_create(NULL, TYPE_SYSBUS_SDHCI); - qdev_init_nofail(dev); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xE0100000); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[56-IRQ_OFFSET]); - - di = drive_get_next(IF_SD); - blk = di ? blk_by_legacy_dinfo(di) : NULL; - carddev = qdev_create(qdev_get_child_bus(dev, "sd-bus"), TYPE_SD_CARD); - qdev_prop_set_drive(carddev, "drive", blk, &error_fatal); - object_property_set_bool(OBJECT(carddev), true, "realized", &error_fatal); - - dev = qdev_create(NULL, TYPE_SYSBUS_SDHCI); - qdev_init_nofail(dev); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xE0101000); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[79-IRQ_OFFSET]); - - di = drive_get_next(IF_SD); - blk = di ? blk_by_legacy_dinfo(di) : NULL; - carddev = qdev_create(qdev_get_child_bus(dev, "sd-bus"), TYPE_SD_CARD); - qdev_prop_set_drive(carddev, "drive", blk, &error_fatal); - object_property_set_bool(OBJECT(carddev), true, "realized", &error_fatal); + for (n = 0; n < 2; n++) { + int hci_irq = n ? 79 : 56; + hwaddr hci_addr = n ? 0xE0101000 : 0xE0100000; + DriveInfo *di; + BlockBackend *blk; + DeviceState *carddev; + + /* Compatible with: + * - SD Host Controller Specification Version 2.0 Part A2 + * - SDIO Specification Version 2.0 + * - MMC Specification Version 3.31 + */ + dev = qdev_create(NULL, TYPE_SYSBUS_SDHCI); + qdev_prop_set_uint8(dev, "sd-spec-version", 2); + qdev_prop_set_uint64(dev, "capareg", ZYNQ_SDHCI_CAPABILITIES); + qdev_init_nofail(dev); + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, hci_addr); + sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[hci_irq - IRQ_OFFSET]); + + di = drive_get_next(IF_SD); + blk = di ? blk_by_legacy_dinfo(di) : NULL; + carddev = qdev_create(qdev_get_child_bus(dev, "sd-bus"), TYPE_SD_CARD); + qdev_prop_set_drive(carddev, "drive", blk, &error_fatal); + object_property_set_bool(OBJECT(carddev), true, "realized", + &error_fatal); + } dev = qdev_create(NULL, TYPE_ZYNQ_XADC); qdev_init_nofail(dev); diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c index 24feea744a..898c43ff4f 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -41,6 +41,11 @@ static const struct sdhci_t { /* Exynos4210 */ { "arm", "smdkc210", {0x12510000, 2, 0, {1, 0x5e80080} } }, + + /* Zynq-7000 */ + { "arm", "xilinx-zynq-a9", /* Datasheet: UG585 (v1.12.1) */ + {0xe0100000, 2, 0, {1, 0x69ec0080} } }, + }; typedef struct QSDHCI { From patchwork Fri Feb 9 14:54: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: 871451 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="p0gRfz7w"; 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 3zdJW24LxJz9s7f for ; Sat, 10 Feb 2018 02:14:06 +1100 (AEDT) Received: from localhost ([::1]:60373 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekANI-0000Pm-IT for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:14:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34124) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5L-0002LL-Qq for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5H-0005ac-2c for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:31 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:33867) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5G-0005a4-TF for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:26 -0500 Received: by mail-qt0-x243.google.com with SMTP id d14so10836144qtg.1 for ; Fri, 09 Feb 2018 06:55: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=uL/ORiM0tTjbREeZZkyqnChgNMxDxFDsIUckKvLN1Qw=; b=p0gRfz7w5S3oojhQBQFGjWNwCp2hVkgcizIGSHwpDH6g3udusZzrdW6FpfPOR731LX JjtXWkNF4sh0kEthN8+3MWNmqqm1w2xTjYXnlWq2H5T4ceu4JyViiILH1BdGrwYDF+Uy i834Ql0gMJiCNwj/sHi1NIx5jnZSRxZ6xGyEgFQm7VsgVqsOqf37Ni7ahcHbnpHE54Cd 8a3xVqfgpVLq5x8uxuj/qQ9TuqU1vcm9kKQHhxEMmrIlLxMgUXQmGUGrovGZnQrs1KEf Jz5+DHXndVvBqzP9O1KChCJzrZUYhft5aqxdwi+Dpj98Xkcop58nXB5nDcIOzQTPtsKW s6GQ== 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=uL/ORiM0tTjbREeZZkyqnChgNMxDxFDsIUckKvLN1Qw=; b=svXj+o+7gz9vNaJitIB1v345rHRM+eFqMLdXHANXNeCxuVMZb8ZAlHiZb8QOjSlhp7 jjIgiskMGdtDwLYhTG2Q+Moksp8HnCZlwi1jClCapCO1G6L4Gd+JtWyGdFFjbwLNF/VM 9iqyIeDWY0VHTx5n9Uy+egdF48Z7yknUWzAPKGuUtXCE1p09fD2gJ/XZY0EWLswehwwg za+jJ2E7yxSVB6lVvgiQsoeM8acE2//ZEoN5kxG7jYoxiYkLAZ3SJApkm5m4y6btLHvT omy4h0a2QnfYhnNFMpHLONVr7nre2U77H6V3j6psi6hB+SNqI84MaiqkbBigOes4ht2G OE9Q== X-Gm-Message-State: APf1xPB6mz9Jb3vbvo8A7CyDMNUvQ12yAOn5g/3fBohRhKkiXGGawtWE IEKPIFO0hSnjl+RX/oJY/rGuTKM8 X-Google-Smtp-Source: AH8x224gZVgZG2XyrvL44zWIlPB0+0HIk//EQD5JgNyM8Ep88F+QSnLOmksa9fl73SrbBH2/NwW5ag== X-Received: by 10.237.48.2 with SMTP id 2mr4685129qte.232.1518188126328; Fri, 09 Feb 2018 06:55:26 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:25 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:17 -0300 Message-Id: <20180209145430.26007-18-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v12 17/30] sdhci: add support for v3 capabilities X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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 | 13 ++++++++++++ hw/sd/sdhci.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index fe68b21e92..bfb39d614b 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -43,6 +43,7 @@ #define SDHC_TRNS_DMA 0x0001 #define SDHC_TRNS_BLK_CNT_EN 0x0002 #define SDHC_TRNS_ACMD12 0x0004 +#define SDHC_TRNS_ACMD23 0x0008 /* since v3 */ #define SDHC_TRNS_READ 0x0010 #define SDHC_TRNS_MULTI 0x0020 #define SDHC_TRNMOD_MASK 0x0037 @@ -194,6 +195,7 @@ FIELD(SDHC_CAPAB, TOCLKFREQ, 0, 6); FIELD(SDHC_CAPAB, TOUNIT, 7, 1); FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); FIELD(SDHC_CAPAB, MAXBLOCKLENGTH, 16, 2); +FIELD(SDHC_CAPAB, EMBEDDED_8BIT, 18, 1); /* since v3 */ FIELD(SDHC_CAPAB, ADMA2, 19, 1); /* since v2 */ FIELD(SDHC_CAPAB, ADMA1, 20, 1); /* v1 only? */ FIELD(SDHC_CAPAB, HIGHSPEED, 21, 1); @@ -203,6 +205,17 @@ FIELD(SDHC_CAPAB, V33, 24, 1); FIELD(SDHC_CAPAB, V30, 25, 1); FIELD(SDHC_CAPAB, V18, 26, 1); FIELD(SDHC_CAPAB, BUS64BIT, 28, 1); /* since v2 */ +FIELD(SDHC_CAPAB, ASYNC_INT, 29, 1); /* since v3 */ +FIELD(SDHC_CAPAB, SLOT_TYPE, 30, 2); /* since v3 */ +FIELD(SDHC_CAPAB, BUS_SPEED, 32, 3); /* since v3 */ +FIELD(SDHC_CAPAB, DRIVER_STRENGTH, 36, 3); /* since v3 */ +FIELD(SDHC_CAPAB, DRIVER_TYPE_A, 36, 1); /* since v3 */ +FIELD(SDHC_CAPAB, DRIVER_TYPE_C, 37, 1); /* since v3 */ +FIELD(SDHC_CAPAB, DRIVER_TYPE_D, 38, 1); /* since v3 */ +FIELD(SDHC_CAPAB, TIMER_RETUNING, 40, 4); /* since v3 */ +FIELD(SDHC_CAPAB, SDR50_TUNING, 45, 1); /* since v3 */ +FIELD(SDHC_CAPAB, RETUNING_MODE, 46, 2); /* since v3 */ +FIELD(SDHC_CAPAB, CLOCK_MULT, 48, 8); /* since v3 */ /* HWInit Maximum Current Capabilities Register 0x0 */ #define SDHC_MAXCURR 0x48 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index f0b9af4976..0fa58cea84 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -70,6 +70,9 @@ static inline unsigned int sdhci_get_fifolen(SDHCIState *s) static bool sdhci_check_capab_freq_range(SDHCIState *s, const char *desc, uint8_t freq, Error **errp) { + if (s->sd_spec_version >= 3) { + return false; + } switch (freq) { case 0: case 10 ... 63: @@ -89,6 +92,50 @@ static void sdhci_check_capareg(SDHCIState *s, Error **errp) bool unit_mhz; switch (s->sd_spec_version) { + case 3: + val = FIELD_EX64(s->capareg, SDHC_CAPAB, ASYNC_INT); + trace_sdhci_capareg("async interrupt", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, ASYNC_INT, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, SLOT_TYPE); + if (val) { + error_setg(errp, "slot-type not supported"); + return; + } + trace_sdhci_capareg("slot type", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, SLOT_TYPE, 0); + + if (val != 0b10) { + val = FIELD_EX64(s->capareg, SDHC_CAPAB, EMBEDDED_8BIT); + trace_sdhci_capareg("8-bit bus", val); + } + msk = FIELD_DP64(msk, SDHC_CAPAB, EMBEDDED_8BIT, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, BUS_SPEED); + trace_sdhci_capareg("bus speed mask", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, BUS_SPEED, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, DRIVER_STRENGTH); + trace_sdhci_capareg("driver strength mask", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, DRIVER_STRENGTH, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, TIMER_RETUNING); + trace_sdhci_capareg("timer re-tuning", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, TIMER_RETUNING, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, SDR50_TUNING); + trace_sdhci_capareg("use SDR50 tuning", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, SDR50_TUNING, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, RETUNING_MODE); + trace_sdhci_capareg("re-tuning mode", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, RETUNING_MODE, 0); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, CLOCK_MULT); + trace_sdhci_capareg("clock multiplier", val); + msk = FIELD_DP64(msk, SDHC_CAPAB, CLOCK_MULT, 0); + + /* fallback */ case 2: /* default version */ val = FIELD_EX64(s->capareg, SDHC_CAPAB, ADMA2); msk = FIELD_DP64(msk, SDHC_CAPAB, ADMA2, 0); @@ -1228,8 +1275,11 @@ 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"); + switch (s->sd_spec_version) { + case 2 ... 3: + break; + default: + error_setg(errp, "Only Spec v2/v3 are supported"); return; } s->version = (SDHC_HCVER_VENDOR << 8) | (s->sd_spec_version - 1); From patchwork Fri Feb 9 14:54: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: 871419 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="hhDHiP22"; 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 3zdJBD0rxLz9s7g for ; Sat, 10 Feb 2018 01:59:32 +1100 (AEDT) Received: from localhost ([::1]:60238 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA9C-00050V-7i for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 09:59:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34123) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5L-0002LK-Qm for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5J-0005bL-KZ for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:31 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:35285) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5J-0005bF-Eo for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:29 -0500 Received: by mail-qk0-x241.google.com with SMTP id c4so7979267qkm.2 for ; Fri, 09 Feb 2018 06:55: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=XTj7Y84mqjTTRro2jwjDDpltuIiILCbtnYf/b24nk9A=; b=hhDHiP22ED/8DgX3wXU1KQgyhMfraRfmDcyZydSzAe2RmL/w5qtd8RmB5bHTkcmTPR KhurZK8uHL0ZGdkdsNhSfEOUCkAtdVfwl9ma1tHLjiyIjYYo3g2gbfA4xiqsD2MNxbAR E6pouHBXUJjD4Gy6vEcVUhlVkxACtbj/6MYIPPOfaGtpC/6xChaopbS6RO66iMe9amHP Z75KS5LBPaJAIr6bXQ8gHqP82aBUP3IIzRn8YYh/FZPc7UQjoZoDtGFLp5kV+B1gFVMi ARU6gx8Ne+UX6kgej78ImCGWxfcUT/PYj8iKlQwwYI2Q8M8KWmptOP/lEV1GKNznLqxB eZ9w== 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=XTj7Y84mqjTTRro2jwjDDpltuIiILCbtnYf/b24nk9A=; b=EWHCWAGQpLLkFmb8SC2KYiZXIShz7an1/O+u5qSair23DYZRdYvFKZFmMOw2xIHwXu aOoOQsIpuUjZqP0RF/LfQIstIO+eUx3MyuMvhy8vn/FOr7FxmkTGl5L2NHFTDUp2g97b 6RRZ9/j/yJhfdUTqJ90BzJuZyPr6fr0hqcg2ehEyQ5/cgmn1NgceVwFVwK0cvLyTV2y3 rwoxHfC2OCZadONVzh/lKZFLtTiTYQFlJTJ3rgE8IwDgw/3OvvVVpP8ojkyp3PvxWQtg hz/N30e/2Pji9/ucobdltSheUubumr4DQhMuuevmxEGRWeu2azxZXuBvF1vhtGO/3RBc NV0A== X-Gm-Message-State: APf1xPC2Fp2Ixnfi0YOioY6i+SkWJp7ddIwVgOezfvGJYGraLfwkO84b DdB1SigCzeGu+0+HldxNi/E= X-Google-Smtp-Source: AH8x224v8WZLzS/5Bp0A9dlehr/UawY686HVMWxKMzzhnRHir7B6jcZFK0okEZ9Qjuv7OWAvyTIvIw== X-Received: by 10.55.106.193 with SMTP id f184mr4440432qkc.211.1518188128920; Fri, 09 Feb 2018 06:55:28 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:28 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:18 -0300 Message-Id: <20180209145430.26007-19-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 18/30] sdhci: rename the hostctl1 register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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" As per the Spec v3.00 Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis --- include/hw/sd/sdhci.h | 2 +- hw/sd/sdhci.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index 2a26b46f05..54594845ce 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -59,7 +59,7 @@ typedef struct SDHCIState { uint16_t cmdreg; /* Command Register */ uint32_t rspreg[4]; /* Response Registers 0-3 */ uint32_t prnsts; /* Present State Register */ - uint8_t hostctl; /* Host Control Register */ + uint8_t hostctl1; /* Host Control Register */ uint8_t pwrcon; /* Power control Register */ uint8_t blkgap; /* Block Gap Control Register */ uint8_t wakcon; /* WakeUp Control Register */ diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 0fa58cea84..f18264688c 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -692,7 +692,7 @@ static void get_adma_description(SDHCIState *s, ADMADescr *dscr) uint32_t adma1 = 0; uint64_t adma2 = 0; hwaddr entry_addr = (hwaddr)s->admasysaddr; - switch (SDHC_DMA_TYPE(s->hostctl)) { + switch (SDHC_DMA_TYPE(s->hostctl1)) { case SDHC_CTRL_ADMA2_32: dma_memory_read(s->dma_as, entry_addr, (uint8_t *)&adma2, sizeof(adma2)); @@ -881,7 +881,7 @@ static void sdhci_data_transfer(void *opaque) SDHCIState *s = (SDHCIState *)opaque; if (s->trnmod & SDHC_TRNS_DMA) { - switch (SDHC_DMA_TYPE(s->hostctl)) { + switch (SDHC_DMA_TYPE(s->hostctl1)) { case SDHC_CTRL_SDMA: if ((s->blkcnt == 1) || !(s->trnmod & SDHC_TRNS_MULTI)) { sdhci_sdma_transfer_single_block(s); @@ -990,7 +990,7 @@ static uint64_t sdhci_read(void *opaque, hwaddr offset, unsigned size) ret = s->prnsts; break; case SDHC_HOSTCTL: - ret = s->hostctl | (s->pwrcon << 8) | (s->blkgap << 16) | + ret = s->hostctl1 | (s->pwrcon << 8) | (s->blkgap << 16) | (s->wakcon << 24); break; case SDHC_CLKCON: @@ -1108,7 +1108,7 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) MASKED_WRITE(s->sdmasysad, mask, value); /* Writing to last byte of sdmasysad might trigger transfer */ if (!(mask & 0xFF000000) && TRANSFERRING_DATA(s->prnsts) && s->blkcnt && - s->blksize && SDHC_DMA_TYPE(s->hostctl) == SDHC_CTRL_SDMA) { + s->blksize && SDHC_DMA_TYPE(s->hostctl1) == SDHC_CTRL_SDMA) { if (s->trnmod & SDHC_TRNS_MULTI) { sdhci_sdma_transfer_multi_blocks(s); } else { @@ -1160,7 +1160,7 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) if (!(mask & 0xFF0000)) { sdhci_blkgap_write(s, value >> 16); } - MASKED_WRITE(s->hostctl, mask, value); + MASKED_WRITE(s->hostctl1, mask, value); MASKED_WRITE(s->pwrcon, mask >> 8, value >> 8); MASKED_WRITE(s->wakcon, mask >> 24, value >> 24); if (!(s->prnsts & SDHC_CARD_PRESENT) || ((s->pwrcon >> 1) & 0x7) < 5 || @@ -1381,7 +1381,7 @@ const VMStateDescription sdhci_vmstate = { VMSTATE_UINT16(cmdreg, SDHCIState), VMSTATE_UINT32_ARRAY(rspreg, SDHCIState, 4), VMSTATE_UINT32(prnsts, SDHCIState), - VMSTATE_UINT8(hostctl, SDHCIState), + VMSTATE_UINT8(hostctl1, SDHCIState), VMSTATE_UINT8(pwrcon, SDHCIState), VMSTATE_UINT8(blkgap, SDHCIState), VMSTATE_UINT8(wakcon, SDHCIState), @@ -1599,13 +1599,13 @@ static uint64_t usdhc_read(void *opaque, hwaddr offset, unsigned size) * manipulation code see comments in a similar part of * usdhc_write() */ - hostctl = SDHC_DMA_TYPE(s->hostctl) << (8 - 3); + hostctl = SDHC_DMA_TYPE(s->hostctl1) << (8 - 3); - if (s->hostctl & SDHC_CTRL_8BITBUS) { + if (s->hostctl1 & SDHC_CTRL_8BITBUS) { hostctl |= ESDHC_CTRL_8BITBUS; } - if (s->hostctl & SDHC_CTRL_4BITBUS) { + if (s->hostctl1 & SDHC_CTRL_4BITBUS) { hostctl |= ESDHC_CTRL_4BITBUS; } From patchwork Fri Feb 9 14:54: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: 871455 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="DpNzA+QB"; 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 3zdJbJ3f5Zz9s7f for ; Sat, 10 Feb 2018 02:17:48 +1100 (AEDT) Received: from localhost ([::1]:60449 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAQs-0003T3-F6 for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:17:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34153) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5N-0002Ms-CF for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5M-0005dQ-GO for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:33 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:45099) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5M-0005d4-Cj for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:32 -0500 Received: by mail-qk0-x241.google.com with SMTP id x127so10260489qkb.12 for ; Fri, 09 Feb 2018 06:55:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fLXniCBEvYse2I7KnyjLoe1KjF35FPAJzLTP9L3OKt8=; b=DpNzA+QBdedvXzXNv7W6n8RthjhLCfEg7eICj8YUc+blidaHYjPY05g9pYXAyevYUp ygHPqRAH6E7B0E62KwzjalTy2WSQNk1NIfVlNQWlk0wsicqWgn30s+oH9uimx2/VpOFi sd9nOTVDaH7fA+6P/YUOiWED3AWW2YR00mgJca9PD5710cXNaaCMFpoqTqr0ygf2+Egw 5k3Xty5tfy7kRHd0C4z1YxjRtDmh5/iqKg7quZ6qA0kKuRx+6IZQtx2gLTIUArJ9cw+C G0kIpz2bWdj4nXu6i5oMfQd2UF/erggNSkSampvp9h0fLlWjIkDWP0kSCvAXe9/DFFLj KRcQ== 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=fLXniCBEvYse2I7KnyjLoe1KjF35FPAJzLTP9L3OKt8=; b=uFGNi9s/x0Y07/jwZoiuYQGG5nRjf/CRYvW4LLG8xOk+6mUeHeCzaYTSZXA/14IOa+ wQLImvuFocL6XJB2VicNZ5e0P3+qH+3goXbsD964M5o3xtrUBhqBBhwGQ6SKPwmyiEW/ f6HZ/AsbfPi2BuPoOcMvqOkfvmM8A7HkzsnMbRc9No+eAQi9rZ++qkh4HH5yBqT+fadl 6okQbTvT4zM/05qqjQVx/+CkUgUJGkhzvVzyS5Eu2Cly4un15rMFdsJ9cDZhCCUZ/rwr ILZWKrPardsFBOmFE2H4xi4EGUAdEZUMsl6n17dXlUQ1dA6DKhLAabMNXuBzNLix+yPR HDIA== X-Gm-Message-State: APf1xPCHmfTIvmY0Ofg55fY1/VASPqAVYO43EU63rQr7jzPuDIJxG+yL IcgNjPNxMGXfVIZfd6cJrVHqqLGL X-Google-Smtp-Source: AH8x227ON6k814bUaXJEUoBXB7CF6jgEoCVdOuKvpa/Twn5a118UNmcZloHw17w5TCbvYZ7lata9WA== X-Received: by 10.55.154.13 with SMTP id c13mr4229021qke.197.1518188131828; Fri, 09 Feb 2018 06:55:31 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:31 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:19 -0300 Message-Id: <20180209145430.26007-20-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 19/30] sdhci: implement the Host Control 2 register (tuning sequence) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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" [based on a patch from Alistair Francis from qemu/xilinx tag xilinx-v2015.2] Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 10 ++++++++++ include/hw/sd/sdhci.h | 1 + hw/sd/sdhci.c | 22 +++++++++++++++++++--- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index bfb39d614b..5c69270988 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -189,6 +189,16 @@ FIELD(SDHC_ACMD12ERRSTS, TIMEOUT_ERR, 1, 1); FIELD(SDHC_ACMD12ERRSTS, CRC_ERR, 2, 1); FIELD(SDHC_ACMD12ERRSTS, INDEX_ERR, 4, 1); +/* Host Control Register 2 (since v3) */ +#define SDHC_HOSTCTL2 0x3E +FIELD(SDHC_HOSTCTL2, UHS_MODE_SEL, 0, 3); +FIELD(SDHC_HOSTCTL2, V18_ENA, 3, 1); /* UHS-I only */ +FIELD(SDHC_HOSTCTL2, DRIVER_STRENGTH, 4, 2); /* UHS-I only */ +FIELD(SDHC_HOSTCTL2, EXECUTE_TUNING, 6, 1); /* UHS-I only */ +FIELD(SDHC_HOSTCTL2, SAMPLING_CLKSEL, 7, 1); /* UHS-I only */ +FIELD(SDHC_HOSTCTL2, ASYNC_INT, 14, 1); +FIELD(SDHC_HOSTCTL2, PRESET_ENA, 15, 1); + /* HWInit Capabilities Register 0x05E80080 */ #define SDHC_CAPAB 0x40 FIELD(SDHC_CAPAB, TOCLKFREQ, 0, 6); diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index 54594845ce..fd606e9928 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -73,6 +73,7 @@ typedef struct SDHCIState { uint16_t norintsigen; /* Normal Interrupt Signal Enable Register */ uint16_t errintsigen; /* Error Interrupt Signal Enable Register */ uint16_t acmd12errsts; /* Auto CMD12 error status register */ + uint16_t hostctl2; /* Host Control 2 */ uint64_t admasysaddr; /* ADMA System Address Register */ /* Read-only registers */ diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index f18264688c..b8bc4fd032 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -409,14 +409,29 @@ static void sdhci_end_transfer(SDHCIState *s) static void sdhci_read_block_from_card(SDHCIState *s) { int index = 0; + uint8_t data; + const uint16_t blk_size = s->blksize & BLOCK_SIZE_MASK; if ((s->trnmod & SDHC_TRNS_MULTI) && (s->trnmod & SDHC_TRNS_BLK_CNT_EN) && (s->blkcnt == 0)) { return; } - for (index = 0; index < (s->blksize & BLOCK_SIZE_MASK); index++) { - s->fifo_buffer[index] = sdbus_read_data(&s->sdbus); + for (index = 0; index < blk_size; index++) { + data = sdbus_read_data(&s->sdbus); + if (!FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, EXECUTE_TUNING)) { + /* Device is not in tunning */ + s->fifo_buffer[index] = data; + } + } + + if (FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, EXECUTE_TUNING)) { + /* Device is in tunning */ + s->hostctl2 &= ~R_SDHC_HOSTCTL2_EXECUTE_TUNING_MASK; + s->hostctl2 |= R_SDHC_HOSTCTL2_SAMPLING_CLKSEL_MASK; + s->prnsts &= ~(SDHC_DAT_LINE_ACTIVE | SDHC_DOING_READ | + SDHC_DATA_INHIBIT); + goto read_done; } /* New data now available for READ through Buffer Port Register */ @@ -441,6 +456,7 @@ static void sdhci_read_block_from_card(SDHCIState *s) } } +read_done: sdhci_update_irq(s); } @@ -1006,7 +1022,7 @@ static uint64_t sdhci_read(void *opaque, hwaddr offset, unsigned size) ret = s->norintsigen | (s->errintsigen << 16); break; case SDHC_ACMD12ERRSTS: - ret = s->acmd12errsts; + ret = s->acmd12errsts | (s->hostctl2 << 16); break; case SDHC_CAPAB: ret = (uint32_t)s->capareg; From patchwork Fri Feb 9 14:54: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: 871440 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="bLlj6hOo"; 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 3zdJGL1lMrz9s1h for ; Sat, 10 Feb 2018 02:03:06 +1100 (AEDT) Received: from localhost ([::1]:60268 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekACe-0007wQ-7g for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:03:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34171) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5P-0002Pu-U8 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5P-0005fX-2W for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:35 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:35349) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5O-0005fG-Uc for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:35 -0500 Received: by mail-qt0-x243.google.com with SMTP id g14so10841717qti.2 for ; Fri, 09 Feb 2018 06:55:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PRVVrWr1dkuT1tVe6teh0w/edU9ae96q3kRiLd5UG5I=; b=bLlj6hOoxCQ7LznnmMUU4hsBl/yLuekC0s8khpxKGSChgaUCWeJwwsgOMszrho9Yad g2U30GQ1cbB0yLpbPpMEqp++FUCaGLd7f1wixg6kWM+f7RywHOWOBlV72m6eZuzU0t6X P+otuQZT6y17Kcz/4lOBUjkgMOL75FutAQ0asLoJ9WpRx6HTWwJ6Yk5AmLu0ZFXdERX9 bakhRjcv8H66xUe0kC1lOm3lEwO4O33/Q1HvL2H5M0sfFHSua44cKdP2UaC4LfExvMH/ NyXnu7qZb2Jpl2zjW4ovFUNa68+RWKkcsqiZTEnGZoG1iH0f+hsFk6T1B5l+ZUiVONhM MvLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=PRVVrWr1dkuT1tVe6teh0w/edU9ae96q3kRiLd5UG5I=; b=gSKN5Vbhm3EakjS6ung+OzVMYSRszMS2bmBDrvDWEatCIzyOdG98fmnbp6IwqC6VCj kiO+YJPmHvT+iVpUJAbKnzCWyEUKMTg0Je3KCu7ANVVSeI1ah389THsxE4kd3BvM5hln Ij+/Qs9Ztst+uxzqIP/EP1HGdD3rPrAOJdywsUwAOaEREhcquGpQPTX3YdKu/4yXv8yn tJu6jMlg+wQ7WARP56npbtG3qQZUDoTsU+GHjv1ZMZ9pWhSTeEYwyIOqWRLJ6DOInOMw 1JmyAhNqfSYe0Er+6CtECUSVn4jBrugQFV2Z8jpJWYD87ZiSFX508S5rGlddWzDtohyD 0Pbw== X-Gm-Message-State: APf1xPDkVwH4pR98AsaIDkQb5VoWXqSmSbUWUSUxrijVseK2yxDuhVaY APXhwATKIQxHWjdu5Ns/T+M= X-Google-Smtp-Source: AH8x226os5ydsv+DPUmxwD9JL6qRbDguLPkxtYEMaGhRFVf3zDTH36gbJQ48sTKN0gFxAltwKAWMhw== X-Received: by 10.237.52.70 with SMTP id w64mr4901812qtd.152.1518188134419; Fri, 09 Feb 2018 06:55:34 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:33 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:20 -0300 Message-Id: <20180209145430.26007-21-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v12 20/30] sdbus: add trace events X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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/core.c | 14 ++++++++++++-- hw/sd/trace-events | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/hw/sd/core.c b/hw/sd/core.c index 295dc44ab7..498284f109 100644 --- a/hw/sd/core.c +++ b/hw/sd/core.c @@ -23,6 +23,12 @@ #include "hw/qdev-core.h" #include "sysemu/block-backend.h" #include "hw/sd/sd.h" +#include "trace.h" + +static inline const char *sdbus_name(SDBus *sdbus) +{ + return sdbus->qbus.name; +} static SDState *get_card(SDBus *sdbus) { @@ -39,6 +45,7 @@ int sdbus_do_command(SDBus *sdbus, SDRequest *req, uint8_t *response) { SDState *card = get_card(sdbus); + trace_sdbus_command(sdbus_name(sdbus), req->cmd, req->arg, req->crc); if (card) { SDCardClass *sc = SD_CARD_GET_CLASS(card); @@ -52,6 +59,7 @@ void sdbus_write_data(SDBus *sdbus, uint8_t value) { SDState *card = get_card(sdbus); + trace_sdbus_write(sdbus_name(sdbus), value); if (card) { SDCardClass *sc = SD_CARD_GET_CLASS(card); @@ -62,14 +70,16 @@ void sdbus_write_data(SDBus *sdbus, uint8_t value) uint8_t sdbus_read_data(SDBus *sdbus) { SDState *card = get_card(sdbus); + uint8_t value = 0; if (card) { SDCardClass *sc = SD_CARD_GET_CLASS(card); - return sc->read_data(card); + value = sc->read_data(card); } + trace_sdbus_read(sdbus_name(sdbus), value); - return 0; + return value; } bool sdbus_data_ready(SDBus *sdbus) diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 78d8707669..ea2746c8b7 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -1,5 +1,10 @@ # See docs/devel/tracing.txt for syntax documentation. +# hw/sd/core.c +sdbus_command(const char *bus_name, uint8_t cmd, uint32_t arg, uint8_t crc) "@%s CMD%02d arg 0x%08x crc 0x%02x" +sdbus_read(const char *bus_name, uint8_t value) "@%s value 0x%02x" +sdbus_write(const char *bus_name, uint8_t value) "@%s value 0x%02x" + # hw/sd/sdhci.c sdhci_set_inserted(const char *level) "card state changed: %s" sdhci_send_command(uint8_t cmd, uint32_t arg) "CMD%02u ARG[0x%08x]" From patchwork Fri Feb 9 14:54: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: 871456 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="pA+CjchF"; 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 3zdJgX6xpgz9s7f for ; Sat, 10 Feb 2018 02:21:28 +1100 (AEDT) Received: from localhost ([::1]:60625 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAUQ-0006ct-Vi for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:21:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34217) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5W-0002X0-Pq for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5R-0005gd-U6 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:42 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:42845) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5R-0005gX-P9 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:37 -0500 Received: by mail-qt0-x242.google.com with SMTP id i8so10831375qtj.9 for ; Fri, 09 Feb 2018 06:55:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=G8i+MgSsW5Ni9zcPGhe4EKCMX+N3tAwxaC3byNEkYxU=; b=pA+CjchFatu4/XMBSY1rOqv3IIvS6bXNmxH0NGro/1nHRxCIKFda+Ai+b8c8oY6IRZ RX8MxPDrowI6N5kp2unDo7IHENmkofDpAKoURwBIQ6CeBvOaqw1k8xbG2YYUhMTU39De 8BprycJXnqv+kvknzBAvb/t6+fjfmLt26YHwOq/+EOJCQUdB3qeT9IpPB6Rm3MtfVSsj U9pmLt503bItk7ix3N4jML7kPKnhMpYZwtuqHsfqYQgfbEke107D/5eu8918A+2+8PM+ 2kA1dfnLJsY2Yt9sFTRQZggoZz324DQNwpscPxGKCC9gGbkiqFVq2qmo7QiO87TC/ZOH wLnA== 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=G8i+MgSsW5Ni9zcPGhe4EKCMX+N3tAwxaC3byNEkYxU=; b=N14aE1Sax4uh43IwhWv6Ni8QIgMIwN0BDp4kxNFTEqFSB8UUMaN/4jMpBtudnr3zgR ZhNCa1JGkuJAfITx4fBhHy9ZV/mDfcpzOHwiPMsPzWLXhVqX4j5AXqqffysRFk4QGfln X3TRblrFaqjPR2W+i9UOTZ3hnFyGZiquOyL+pDtGvnbqMJJeu1OliB0y6jlb4MNFQSqJ M4gZ7SopcAqkfaYNaQDwfG1isycW/nVQ8gyDfmUKQ2clpLHOLxMxL23iw+KdNJ+8bRMe NAFdXaF5HoKAV29dCssxACJb/5//RzS5kOlbXJYUzvJ7IGOsW6vc/U0hi/gvTpeYK1DI sahA== X-Gm-Message-State: APf1xPCdp8qdbPgRAcdbpxA1H0WSM3VLhO2xB+E8eEMBTqYopY0RycrS 93ac39CzODGhJvvERGl3Qvk= X-Google-Smtp-Source: AH8x226Xb3ZsB1+p31PZszFGNACAumZFKdvmObZoSE8fm3qI0dFhg3cxkh2/9vxiCBPumwG5qKgAqg== X-Received: by 10.200.42.168 with SMTP id b37mr4782354qta.321.1518188137209; Fri, 09 Feb 2018 06:55:37 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:36 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:21 -0300 Message-Id: <20180209145430.26007-22-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 21/30] sdhci: implement UHS-I voltage switch X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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" [based on a patch from Alistair Francis from qemu/xilinx tag xilinx-v2015.2] Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis --- include/hw/sd/sd.h | 16 ++++++++++++++++ include/hw/sd/sdhci.h | 1 + hw/sd/core.c | 13 +++++++++++++ hw/sd/sd.c | 13 +++++++++++++ hw/sd/sdhci.c | 12 +++++++++++- hw/sd/trace-events | 1 + 6 files changed, 55 insertions(+), 1 deletion(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index 96caefe373..f086679493 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -55,6 +55,20 @@ #define AKE_SEQ_ERROR (1 << 3) #define OCR_CCS_BITN 30 +typedef enum { + SD_VOLTAGE_0_4V = 400, /* currently not supported */ + SD_VOLTAGE_1_8V = 1800, + SD_VOLTAGE_3_0V = 3000, + SD_VOLTAGE_3_3V = 3300, +} sd_voltage_mv_t; + +typedef enum { + UHS_NOT_SUPPORTED = 0, + UHS_I = 1, + UHS_II = 2, /* currently not supported */ + UHS_III = 3, /* currently not supported */ +} sd_uhs_mode_t; + typedef enum { sd_none = -1, sd_bc = 0, /* broadcast -- no response */ @@ -88,6 +102,7 @@ typedef struct { void (*write_data)(SDState *sd, uint8_t value); uint8_t (*read_data)(SDState *sd); bool (*data_ready)(SDState *sd); + void (*set_voltage)(SDState *sd, uint16_t millivolts); void (*enable)(SDState *sd, bool enable); bool (*get_inserted)(SDState *sd); bool (*get_readonly)(SDState *sd); @@ -134,6 +149,7 @@ void sd_enable(SDState *sd, bool enable); /* Functions to be used by qdevified callers (working via * an SDBus rather than directly with SDState) */ +void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts); int sdbus_do_command(SDBus *sd, SDRequest *req, uint8_t *response); void sdbus_write_data(SDBus *sd, uint8_t value); uint8_t sdbus_read_data(SDBus *sd); diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index fd606e9928..f321767c56 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -96,6 +96,7 @@ typedef struct SDHCIState { bool pending_insert_quirk; /* Quirk for Raspberry Pi card insert int */ uint32_t quirks; uint8_t sd_spec_version; + uint8_t uhs_mode; } SDHCIState; /* diff --git a/hw/sd/core.c b/hw/sd/core.c index 498284f109..6d198ea775 100644 --- a/hw/sd/core.c +++ b/hw/sd/core.c @@ -41,6 +41,19 @@ static SDState *get_card(SDBus *sdbus) return SD_CARD(kid->child); } +void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts) +{ + SDState *card = get_card(sdbus); + + trace_sdbus_set_voltage(sdbus_name(sdbus), millivolts); + if (card) { + SDCardClass *sc = SD_CARD_GET_CLASS(card); + + assert(sc->set_voltage); + sc->set_voltage(card, millivolts); + } +} + int sdbus_do_command(SDBus *sdbus, SDRequest *req, uint8_t *response) { SDState *card = get_card(sdbus); diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 73e405a04f..a8d7a522c0 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -128,6 +128,18 @@ struct SDState { bool enable; }; +static void sd_set_voltage(SDState *sd, uint16_t millivolts) +{ + switch (millivolts) { + case 3001 ... 3600: /* SD_VOLTAGE_3_3V */ + case 2001 ... 3000: /* SD_VOLTAGE_3_0V */ + break; + default: + qemu_log_mask(LOG_GUEST_ERROR, "SD card voltage not supported: %.3fV", + millivolts / 1000.f); + } +} + static void sd_set_mode(SDState *sd) { switch (sd->state) { @@ -1926,6 +1938,7 @@ static void sd_class_init(ObjectClass *klass, void *data) dc->reset = sd_reset; dc->bus_type = TYPE_SD_BUS; + sc->set_voltage = sd_set_voltage; sc->do_command = sd_do_command; sc->write_data = sd_write_data; sc->read_data = sd_read_data; diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index b8bc4fd032..18bf28efda 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1256,7 +1256,16 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) sdhci_update_irq(s); break; case SDHC_ACMD12ERRSTS: - MASKED_WRITE(s->acmd12errsts, mask, value); + MASKED_WRITE(s->acmd12errsts, mask, value & UINT16_MAX); + if (s->uhs_mode >= UHS_I) { + MASKED_WRITE(s->hostctl2, mask >> 16, value >> 16); + + if (FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, V18_ENA)) { + sdbus_set_voltage(&s->sdbus, SD_VOLTAGE_1_8V); + } else { + sdbus_set_voltage(&s->sdbus, SD_VOLTAGE_3_3V); + } + } break; case SDHC_CAPAB: @@ -1311,6 +1320,7 @@ static void sdhci_init_readonly_registers(SDHCIState *s, Error **errp) #define DEFINE_SDHCI_COMMON_PROPERTIES(_state) \ DEFINE_PROP_UINT8("sd-spec-version", _state, sd_spec_version, 2), \ + DEFINE_PROP_UINT8("uhs", _state, uhs_mode, UHS_NOT_SUPPORTED), \ \ /* Capabilities registers provide information on supported * features of this specific host controller implementation */ \ diff --git a/hw/sd/trace-events b/hw/sd/trace-events index ea2746c8b7..84d2f398b1 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -4,6 +4,7 @@ sdbus_command(const char *bus_name, uint8_t cmd, uint32_t arg, uint8_t crc) "@%s CMD%02d arg 0x%08x crc 0x%02x" sdbus_read(const char *bus_name, uint8_t value) "@%s value 0x%02x" sdbus_write(const char *bus_name, uint8_t value) "@%s value 0x%02x" +sdbus_set_voltage(const char *bus_name, uint16_t millivolts) "@%s %u (mV)" # hw/sd/sdhci.c sdhci_set_inserted(const char *level) "card state changed: %s" From patchwork Fri Feb 9 14:54: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: 871454 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="WdkTCjoS"; 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 3zdJb70mgRz9s7f for ; Sat, 10 Feb 2018 02:17:39 +1100 (AEDT) Received: from localhost ([::1]:60445 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAQi-0003N9-VF for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:17:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34216) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5W-0002Wz-Pp for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5U-0005hR-S3 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:42 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:33166) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5U-0005hJ-M3 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:40 -0500 Received: by mail-qt0-x242.google.com with SMTP id d8so10861587qtm.0 for ; Fri, 09 Feb 2018 06:55: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=twLnjiaLfXwzSS/yTHmicjo35rbkB9F+b0tfO3DYpk4=; b=WdkTCjoSp56nrgFmzEL9veLyNoSfdSR89ubrmY8dCdacWKLypZuPKDiWsVq5YpQeaJ oxAMtWy24hGDI0h5eidOC7wPVDmrUCnxc0cu00wc5glWOqdP4ugOMnnjXELLZ2dYj2an R9OhR/FBoOadQZHpGoKifRWoKAbk/d6XQE7jLxWOUwpnvG+Tw/Pj08pw5o6bpMD08eog gWctOe/9KGS1XxZHD2OlM/JWOxONSU1+WS1n4ad6uP3i/V9D7MM4MjW3o4KP3EmIxlQi wxn2qPdX231fHXI6zfBHPyYrGIvxiQ1rnNGTe6d/odBuJIrypBhb0OPPSBRli16SI3+P Z07w== 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=twLnjiaLfXwzSS/yTHmicjo35rbkB9F+b0tfO3DYpk4=; b=Sga8oQ7uVswWRz92o56BcejLwvzAcprBvo8mmBPO0+ZiUX9eOiCwPdIFHo6WDdpxYG 35YO5dyqnhEnt++fITSrs0odRJYPGJGGMO7u/iR2j5kdiQWZJI8VnIsog4az1aMUPkZO cuFpQpvqMIqRwMVCRZw6K0WPjktQuEojgyfG3dNHwqNRk+oMIJ8Man7EY6hjlXQSTujD PRIdkYW1vWvg3ofVOWNvVO94pEeXj8tEkV9rtwL72woZ9bzbgCbYhAHIbab7juNC7Si/ LjDCxGIkdUTVxaQKXNC8j8n2754ha71Z1+xdu+rKdF+jOPZ1y1yblQcAqdUFZYacDkH3 uSXg== X-Gm-Message-State: APf1xPBAdfaDJ3rM5V1nWJSr/BzNTywvFSn/YxegatdBsA99wDKptr1C gAfHNmejpEcxMwbsfwIf4LI= X-Google-Smtp-Source: AH8x22511G/gMwUCjsVqDLUiT4ByxPv3lcZshV1rG50Fq0ZBrCubMwU412fvolPQ3ezdArrdxpDsGg== X-Received: by 10.237.54.41 with SMTP id e38mr4965995qtb.49.1518188140049; Fri, 09 Feb 2018 06:55:40 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:39 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:22 -0300 Message-Id: <20180209145430.26007-23-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 22/30] sdhci: implement CMD/DAT[] fields in the Present State register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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" [based on a patch from Alistair Francis from qemu/xilinx tag xilinx-v2015.2] Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis --- hw/sd/sdhci-internal.h | 2 ++ include/hw/sd/sd.h | 4 ++++ hw/sd/core.c | 34 ++++++++++++++++++++++++++++++++++ hw/sd/sd.c | 16 ++++++++++++++++ hw/sd/sdhci.c | 4 ++++ hw/sd/trace-events | 2 ++ 6 files changed, 62 insertions(+) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 5c69270988..0092627076 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -82,6 +82,8 @@ #define SDHC_CARD_PRESENT 0x00010000 #define SDHC_CARD_DETECT 0x00040000 #define SDHC_WRITE_PROTECT 0x00080000 +FIELD(SDHC_PRNSTS, DAT_LVL, 20, 4); +FIELD(SDHC_PRNSTS, CMD_LVL, 24, 1); #define TRANSFERRING_DATA(x) \ ((x) & (SDHC_DOING_READ | SDHC_DOING_WRITE)) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index f086679493..bf1eb0713c 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -103,6 +103,8 @@ typedef struct { uint8_t (*read_data)(SDState *sd); bool (*data_ready)(SDState *sd); void (*set_voltage)(SDState *sd, uint16_t millivolts); + uint8_t (*get_dat_lines)(SDState *sd); + bool (*get_cmd_line)(SDState *sd); void (*enable)(SDState *sd, bool enable); bool (*get_inserted)(SDState *sd); bool (*get_readonly)(SDState *sd); @@ -150,6 +152,8 @@ void sd_enable(SDState *sd, bool enable); * an SDBus rather than directly with SDState) */ void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts); +uint8_t sdbus_get_dat_lines(SDBus *sdbus); +bool sdbus_get_cmd_line(SDBus *sdbus); int sdbus_do_command(SDBus *sd, SDRequest *req, uint8_t *response); void sdbus_write_data(SDBus *sd, uint8_t value); uint8_t sdbus_read_data(SDBus *sd); diff --git a/hw/sd/core.c b/hw/sd/core.c index 6d198ea775..3c6eae6c88 100644 --- a/hw/sd/core.c +++ b/hw/sd/core.c @@ -41,6 +41,40 @@ static SDState *get_card(SDBus *sdbus) return SD_CARD(kid->child); } +uint8_t sdbus_get_dat_lines(SDBus *sdbus) +{ + SDState *slave = get_card(sdbus); + uint8_t dat_lines = 0b1111; /* 4 bit bus width */ + + if (slave) { + SDCardClass *sc = SD_CARD_GET_CLASS(slave); + + if (sc->get_dat_lines) { + dat_lines = sc->get_dat_lines(slave); + } + } + trace_sdbus_get_dat_lines(sdbus_name(sdbus), dat_lines); + + return dat_lines; +} + +bool sdbus_get_cmd_line(SDBus *sdbus) +{ + SDState *slave = get_card(sdbus); + bool cmd_line = true; + + if (slave) { + SDCardClass *sc = SD_CARD_GET_CLASS(slave); + + if (sc->get_cmd_line) { + cmd_line = sc->get_cmd_line(slave); + } + } + trace_sdbus_get_cmd_line(sdbus_name(sdbus), cmd_line); + + return cmd_line; +} + void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts) { SDState *card = get_card(sdbus); diff --git a/hw/sd/sd.c b/hw/sd/sd.c index a8d7a522c0..9ac9b63ff8 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -126,8 +126,20 @@ struct SDState { BlockBackend *blk; bool enable; + uint8_t dat_lines; + bool cmd_line; }; +static uint8_t sd_get_dat_lines(SDState *sd) +{ + return sd->enable ? sd->dat_lines : 0; +} + +static bool sd_get_cmd_line(SDState *sd) +{ + return sd->enable ? sd->cmd_line : false; +} + static void sd_set_voltage(SDState *sd, uint16_t millivolts) { switch (millivolts) { @@ -457,6 +469,8 @@ static void sd_reset(DeviceState *dev) sd->blk_len = 0x200; sd->pwd_len = 0; sd->expecting_acmd = false; + sd->dat_lines = 0xf; + sd->cmd_line = true; sd->multi_blk_cnt = 0; } @@ -1939,6 +1953,8 @@ static void sd_class_init(ObjectClass *klass, void *data) dc->bus_type = TYPE_SD_BUS; sc->set_voltage = sd_set_voltage; + sc->get_dat_lines = sd_get_dat_lines; + sc->get_cmd_line = sd_get_cmd_line; sc->do_command = sd_do_command; sc->write_data = sd_write_data; sc->read_data = sd_read_data; diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 18bf28efda..6e5bea804c 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1004,6 +1004,10 @@ static uint64_t sdhci_read(void *opaque, hwaddr offset, unsigned size) break; case SDHC_PRNSTS: ret = s->prnsts; + ret = FIELD_DP32(ret, SDHC_PRNSTS, DAT_LVL, + sdbus_get_dat_lines(&s->sdbus)); + ret = FIELD_DP32(ret, SDHC_PRNSTS, CMD_LVL, + sdbus_get_cmd_line(&s->sdbus)); break; case SDHC_HOSTCTL: ret = s->hostctl1 | (s->pwrcon << 8) | (s->blkgap << 16) | diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 84d2f398b1..0f8536db32 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -5,6 +5,8 @@ sdbus_command(const char *bus_name, uint8_t cmd, uint32_t arg, uint8_t crc) "@%s sdbus_read(const char *bus_name, uint8_t value) "@%s value 0x%02x" sdbus_write(const char *bus_name, uint8_t value) "@%s value 0x%02x" sdbus_set_voltage(const char *bus_name, uint16_t millivolts) "@%s %u (mV)" +sdbus_get_dat_lines(const char *bus_name, uint8_t dat_lines) "@%s dat_lines: %u" +sdbus_get_cmd_line(const char *bus_name, bool cmd_line) "@%s cmd_line: %u" # hw/sd/sdhci.c sdhci_set_inserted(const char *level) "card state changed: %s" From patchwork Fri Feb 9 14:54: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: 871445 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="C/tUbwqw"; 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 3zdJLX3Nfwz9s7g for ; Sat, 10 Feb 2018 02:06:44 +1100 (AEDT) Received: from localhost ([::1]:60296 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAGA-0002ZA-Hx for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:06:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34247) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5Y-0002Yu-LI for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5X-0005im-ST for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:44 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:33867) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5X-0005iX-NW; Fri, 09 Feb 2018 09:55:43 -0500 Received: by mail-qt0-x241.google.com with SMTP id d14so10837249qtg.1; Fri, 09 Feb 2018 06:55: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=KFpgQEhaZBgnPE0U5fVE+w0zSSdDn/i3ICfYlKUYVZU=; b=C/tUbwqwI9SGlIyKoSQLDPwFKN3X/+13ghWT8ECdlr+F4I6uV293x+34IBajxrUgZs WK467xwGW49lUKhO2GXxPdpgX6mh5tpZHrQpIKJFxfHPT++1FgKVY1v9M4XJEuxxHOlL D1dEkCFN9c8udY8X6Di1dSkYLVuwOBp/I894g9Jtb4Fynv9QlZ+T1we7sbbVYxK/m0Yb JHi10IZ1Mgo5uEWp7EOPUur/x4qUd51jOKFWj+yeI0OYdt8IL+w+yNmn9UmLwBImQLng nwKJxbcAi8mTktMq4S2jbnRlVGtuVnxg2uaPmRQMMxovXHwopSN622xX4vzTuuZ2ft1g IyHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=KFpgQEhaZBgnPE0U5fVE+w0zSSdDn/i3ICfYlKUYVZU=; b=dW5FLOTOI7slsT5YKndOi2/L/+Rbhzwg5RoEm7kZewCOhvQTAUAjI1tddk80wuRf3E iVvWAO20NPNN5Ms4pQflTWD5pK+3a7uy0BQTDdfAw/7qwSIoGkXoEiLi5Sasjgd/gVaX kBCj83iWDvc9kkHmJXXRp/zwzCM4FYk1ovPSIsCR0IOMRSHy6RiQ5ZuK0TF0YiLtY3HJ 2aLQkBS8EGgTxapFXueABaG0ZyPx3RhQM9hzfTzFZtQX36gTcZbXnRqsLPJQht+SX+Oj eKsnbda/GzHSrEqxeN6zlHU2r0+aYtxKPcZVCOd/0EGLno4ghKdYkI1MXRbBwxe8OYhP bQjA== X-Gm-Message-State: APf1xPD4sFmO+IqI82I11D66/oTCvAykDf+JekQX4upzTy4uHE5+hJLY 9agedHYbw+GU1GhaT8hIuMg= X-Google-Smtp-Source: AH8x226vAh0iRBkwdjNLa6OnY6yxlvy2vTJcY1/xcAJ5uLNt4594ygO/N079qbE708q0Rln0YyORLg== X-Received: by 10.200.46.73 with SMTP id s9mr4936541qta.317.1518188143138; Fri, 09 Feb 2018 06:55:43 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:42 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:23 -0300 Message-Id: <20180209145430.26007-24-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 23/30] hw/arm/bcm2835_peripherals: implement SDHCI Spec v3 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , qemu-devel@nongnu.org, =?utf-8?q?Philippe?= =?utf-8?q?_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:ARM" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis --- hw/arm/bcm2835_peripherals.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c index 12e0dd11af..ca971e83e0 100644 --- a/hw/arm/bcm2835_peripherals.c +++ b/hw/arm/bcm2835_peripherals.c @@ -254,14 +254,19 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp) memory_region_add_subregion(&s->peri_mr, RNG_OFFSET, sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->rng), 0)); - /* Extended Mass Media Controller */ - object_property_set_int(OBJECT(&s->sdhci), BCM2835_SDHC_CAPAREG, "capareg", - &err); - if (err) { - error_propagate(errp, err); - return; - } - + /* Extended Mass Media Controller + * + * Compatible with: + * - SD Host Controller Specification Version 3.0 Draft 1.0 + * - SDIO Specification Version 3.0 + * - MMC Specification Version 4.4 + * + * For the exact details please refer to the Arasan documentation: + * SD3.0_Host_AHB_eMMC4.4_Usersguide_ver5.9_jan11_10.pdf + */ + object_property_set_uint(OBJECT(&s->sdhci), 3, "sd-spec-version", &err); + object_property_set_uint(OBJECT(&s->sdhci), BCM2835_SDHC_CAPAREG, "capareg", + &err); object_property_set_bool(OBJECT(&s->sdhci), true, "pending-insert-quirk", &err); if (err) { From patchwork Fri Feb 9 14:54:24 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: 871447 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="t5hIj5wU"; 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 3zdJQN5CBwz9s7f for ; Sat, 10 Feb 2018 02:10:04 +1100 (AEDT) Received: from localhost ([::1]:60316 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAJO-0005Tz-Lq for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:10:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34321) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5b-0002bm-Aj for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5a-0005lG-EZ for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:47 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:37037) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5a-0005k4-A2; Fri, 09 Feb 2018 09:55:46 -0500 Received: by mail-qt0-x242.google.com with SMTP id s27so10837471qts.4; Fri, 09 Feb 2018 06:55: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=fXbDYPKBtb1ob/8HMTylq1noEaiAiTKM5rsfys7N0tc=; b=t5hIj5wUYraEyFbXc2jGoiKe28TK6MqXm/eqJ+Cwuve5vRzld+slG+Qk6qVtW1yHWJ 0kqmXvQVoQcBIhdgIeT3XyKmIIaL34XPd0PfZ5ZoGobhuLmZJEFTMyv9koZuG6ct2hLn N/wBOTctXoLgjZGh/elLNOstbRaa/euZEnimRKOPaEXR+RT8MUvxlKITUk5lwxpQFGwL VsEWMJKH9vMfcC20LWn/CCAMCuLSYfct8rIZP0DLDTyivSC/cG4W5JcT1bv63sZ6aeLG IyTP1llR/aGAEceI2rL5QuUKVC6mM+CK+/o6fN1z3+krKOOzg/feeeq/UeNr1Q1D2xyG QGVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=fXbDYPKBtb1ob/8HMTylq1noEaiAiTKM5rsfys7N0tc=; b=tw3BPypFA0mlixAFSUh15/BdFKi8g+LV9t6ZTw6oz8veIC1vuvbVJF+eoIlj8N2w0M Jf/+Shj2N4H9Utry7MmzhIcZuKcz30RmCwyBxYzxheZZrOUuhhB+4sW1AohrYP7vx1mC HY+5LC4a7fcb/dTfTBoiNBdap27wNrFDz4+2Gls+A7ixNfi3oUSAel8fnz63Eg51xEBR jbzrq1akg0HhQSbFSzJT2GIYXH1ResC8N7JMvcb5HQXO/Px3sElFUyC/WpgaYaL84qH4 xEHDTD9worGEQoLjJ/OLy/Wi1QEstZuq8PhMuNaMgYqWzJXF/Sout4cX0850UDRbvwOA JdtA== X-Gm-Message-State: APf1xPDk21xb1q8F1ca+I1D63L+UR+qcynwwWIvtXFrD3TafHTyQkjke 8V5BUQNg+xzsU6BVoUsxIsRdF01s X-Google-Smtp-Source: AH8x227jnuiwHubi0pR57xYh+KgD+map2BXVQutOkm073tIaITZfsTdCpR3a0dHhS04X9uOjArWKLA== X-Received: by 10.237.57.100 with SMTP id l91mr5031419qte.25.1518188145796; Fri, 09 Feb 2018 06:55:45 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:45 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:24 -0300 Message-Id: <20180209145430.26007-25-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 24/30] hw/arm/bcm2835_peripherals: change maximum block size to 1kB X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , qemu-devel@nongnu.org, =?utf-8?q?Philippe?= =?utf-8?q?_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:ARM" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" following the datasheet. Signed-off-by: Philippe Mathieu-Daudé Acked-by: Alistair Francis --- hw/arm/bcm2835_peripherals.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c index ca971e83e0..13b63970d7 100644 --- a/hw/arm/bcm2835_peripherals.c +++ b/hw/arm/bcm2835_peripherals.c @@ -19,7 +19,7 @@ #define BCM2835_VC_PERI_BASE 0x7e000000 /* Capabilities for SD controller: no DMA, high-speed, default clocks etc. */ -#define BCM2835_SDHC_CAPAREG 0x52034b4 +#define BCM2835_SDHC_CAPAREG 0x52134b4 static void bcm2835_peripherals_init(Object *obj) { From patchwork Fri Feb 9 14:54:25 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: 871448 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="H27zWaZN"; 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 3zdJQb0YMMz9s7f for ; Sat, 10 Feb 2018 02:10:15 +1100 (AEDT) Received: from localhost ([::1]:60325 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAJZ-0005br-3Q for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:10:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34444) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5h-0002hd-G7 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5d-0005oS-MY for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:53 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:46976) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5d-0005oD-Hg; Fri, 09 Feb 2018 09:55:49 -0500 Received: by mail-qk0-x243.google.com with SMTP id d144so3450388qkg.13; Fri, 09 Feb 2018 06:55: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=v457jH8C5UirGQbVe7z02s40zgDFDhiKAvbmiOY6FF4=; b=H27zWaZNY8GNDzY1WoEnLkistvkC8MgZDHYDxhXmTdpDHqwg8C1FjhPO21rfpbDkob gq2YpsiQ48uara7fr973FfpT9eXAhPE/pe2YLWoSXr3naqAGGipCKM50Fkr5ooNn2ffK SByI9tCTacLmlz2zQmEZPstvNhqnCyt19aiHo2yK0p+ltSucP39A91yhWrA7bNOV+fDE SwlNd4vMNRRw/xjt7xJog3VQKMrcHzmo340lzEFbxGx9v7gUqaxO5/IQuRqPbzULs53o m3CDJzk4irtqi0/hde8eI52yZBYf3EdK1c0989c6toWqaQgGTANBCBUGlysk8K7XHqbU BqrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=v457jH8C5UirGQbVe7z02s40zgDFDhiKAvbmiOY6FF4=; b=IHgPjAAhNaJ4Mj9D6DeMdDrIewK/u7AkUMGZfvucek0DnruF8Lp1hsvF3ReyJpbSB/ M+ruE/hEBTvRVzsLNgTmMPLWaz09w5ETZSiESkFAqVxLeUaHQjOQ/1WfA47PV+mWAgVa VmXpE/Vd2LF+d9Zp96Dfq7bPYQE4IZE1/8mZxx0DlxQ7cFkkFE0fuGwqyxYhm1Q9IjsI FQGKEONLUxe8qbfKeBZZUwSKmUPGNzQL4asOzPUITGQLXaCHDQ67qK3kpK6od9V8Nayf RslHAopdJ6SvjMLKp06TpZ4US8nDm/tIXUCrbPloOWAaMDxVN3AkcVV7oCEQ/6E4I6Qr rO0g== X-Gm-Message-State: APf1xPDGqjLNTyZ7+AW6XWNgEATQMLcfYWPVkXABSLgOMyha4iSvJYPy H8GcYWzoIn3i9yxtHCFvHWs= X-Google-Smtp-Source: AH8x227ULpY4ceRpKjFy8kr5lz9Ndg3yZNBV+4HsSJZDLkE3P9q5jyt9Emdi3f+e7HIt9C1xk/jm8w== X-Received: by 10.55.56.84 with SMTP id f81mr4477279qka.25.1518188148903; Fri, 09 Feb 2018 06:55:48 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:48 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:25 -0300 Message-Id: <20180209145430.26007-26-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 25/30] hw/arm/fsl-imx6: implement SDHCI Spec. v3 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , qemu-devel@nongnu.org, =?utf-8?q?Philippe?= =?utf-8?q?_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:ARM" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé Acked-by: Alistair Francis --- hw/arm/fsl-imx6.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index e6559a8b12..b6ac72de27 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -27,6 +27,8 @@ #include "chardev/char.h" #include "qemu/error-report.h" +#define IMX6_ESDHC_CAPABILITIES 0x057834b4 + #define NAME_SIZE 20 static void fsl_imx6_init(Object *obj) @@ -348,6 +350,11 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp) { FSL_IMX6_uSDHC4_ADDR, FSL_IMX6_uSDHC4_IRQ }, }; + /* UHS-I SDIO3.0 SDR104 1.8V ADMA */ + object_property_set_uint(OBJECT(&s->esdhc[i]), 3, "sd-spec-version", + &err); + object_property_set_uint(OBJECT(&s->esdhc[i]), IMX6_ESDHC_CAPABILITIES, + "capareg", &err); object_property_set_bool(OBJECT(&s->esdhc[i]), true, "realized", &err); if (err) { error_propagate(errp, err); From patchwork Fri Feb 9 14:54: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: 871461 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="rVhuzKvO"; 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 3zdJm50v7Zz9s7f for ; Sat, 10 Feb 2018 02:25:25 +1100 (AEDT) Received: from localhost ([::1]:32994 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAYF-0001b8-3k for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:25:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34447) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5h-0002hf-H6 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5g-0005q0-Ln for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:53 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:41210) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5g-0005ps-Fq; Fri, 09 Feb 2018 09:55:52 -0500 Received: by mail-qt0-x241.google.com with SMTP id a9so4245436qtj.8; Fri, 09 Feb 2018 06:55: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=5qaGRwDZfwX37p33tGyHNiBbUOeIBUssXi21Pjx552M=; b=rVhuzKvORaISLKAs5lYk2tjXOpjAiin4NZqvyvyJvY6IigHYW6i4xgUG2qOrak3S2V tjMZHozrT82oBxi6XL22GP8mFnBnpnn4N/Pb8hiQ/ZQbx1l8Ul/848Uz7s0DYJUi+eui 2oeaVeiKHnssfLQkcuoS/lqY1rGEhtPcjoGV8DLao1a9bkYz9XUlRn3PQOUExOG5vdfA t5IZpQ1kaCZgfISBh14BBXGdq6CeJCSXRGpCsOVx+qw/MY85IQezzexquHEGRZVdcoj+ dbWnOqBcX++q0PCgqTSxsPYunXMDLn7lJzLOVlh2qHky6HnUAzx6cYIyqyMJK4xmNew4 1qkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=5qaGRwDZfwX37p33tGyHNiBbUOeIBUssXi21Pjx552M=; b=hXh0thoY16OP3/tWYyF0dACSv9wNtiPo2UUbbf6sDjOSS/jqUZlIgiods09BOO5SPO LfJE8yPjhz/APViDtiNKwA966E3hrmPCPT+AhCzJqWjGf5phVmmkuMg2hbSY6d+zaGog uakn4mWNeTli6XPj5TlJS/WsP2gOp9B84Y7jGzNDAvtoVtVenmBYM1TKEXp11gb/mnTt h2/OMtxfUTRg8S8i7lq220JGLhbhNJharw68zfoY+mjmk/yrKE2+/ZbOlXMLGfBtlar0 lIlwnQwXE9rftjtQ+FyeQf1CvgvRQ+ODxGRnoy+Unrh1ygWSOuQHWOYUYx2mLGGlNbnL sxEw== X-Gm-Message-State: APf1xPCOg5XK8wd2bpK6lnnbwYGjsYsm5kMx5zCiPLc/BQzbZk9N7Qgo wfQtJFhpkfDx83srRHYTQLddd8FP X-Google-Smtp-Source: AH8x225lRbMK02Ja6UIV9PXtrgzW3P922qfV7bYptIzairrWgwlXUDEDQsASRs0eDTbv7BwVDPivqw== X-Received: by 10.200.42.168 with SMTP id b37mr4783587qta.321.1518188151949; Fri, 09 Feb 2018 06:55:51 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:51 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:26 -0300 Message-Id: <20180209145430.26007-27-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 26/30] hw/arm/xilinx_zynqmp: fix the capabilities/spec version to match the datasheet X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , qemu-devel@nongnu.org, =?utf-8?q?Philippe?= =?utf-8?q?_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:Xilinx ZynqMP" , "Edgar E. Iglesias" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" checking Xilinx datasheet "UG1085" (v1.7) Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis --- hw/arm/xlnx-zynqmp.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index ca398c4159..e39ad73bec 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -53,6 +53,8 @@ #define IPI_ADDR 0xFF300000 #define IPI_IRQ 64 +#define SDHCI_CAPABILITIES 0x280737ec6481 /* Datasheet: UG1085 (v1.7) */ + static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, }; @@ -387,22 +389,27 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, gic_spi[SATA_INTR]); for (i = 0; i < XLNX_ZYNQMP_NUM_SDHCI; i++) { - char *bus_name; - - object_property_set_bool(OBJECT(&s->sdhci[i]), true, - "realized", &err); + char *bus_name = g_strdup_printf("sd-bus%d", i); + SysBusDevice *sbd = SYS_BUS_DEVICE(&s->sdhci[i]); + Object *sdhci = OBJECT(&s->sdhci[i]); + + /* Compatible with: + * - SD Host Controller Specification Version 3.00 + * - SDIO Specification Version 3.0 + * - eMMC Specification Version 4.51 + */ + object_property_set_uint(sdhci, 3, "sd-spec-version", &err); + object_property_set_uint(sdhci, SDHCI_CAPABILITIES, "capareg", &err); + object_property_set_bool(sdhci, true, "realized", &err); if (err) { error_propagate(errp, err); return; } - sysbus_mmio_map(SYS_BUS_DEVICE(&s->sdhci[i]), 0, - sdhci_addr[i]); - sysbus_connect_irq(SYS_BUS_DEVICE(&s->sdhci[i]), 0, - gic_spi[sdhci_intr[i]]); + sysbus_mmio_map(sbd, 0, sdhci_addr[i]); + sysbus_connect_irq(sbd, 0, gic_spi[sdhci_intr[i]]); + /* Alias controller SD bus to the SoC itself */ - bus_name = g_strdup_printf("sd-bus%d", i); - object_property_add_alias(OBJECT(s), bus_name, - OBJECT(&s->sdhci[i]), "sd-bus", + object_property_add_alias(OBJECT(s), bus_name, sdhci, "sd-bus", &error_abort); g_free(bus_name); } From patchwork Fri Feb 9 14:54: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: 871457 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="DT7mHXpV"; 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 3zdJgj51qmz9s7f for ; Sat, 10 Feb 2018 02:21:37 +1100 (AEDT) Received: from localhost ([::1]:60626 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAUZ-0006hZ-Gu for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:21:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34529) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5p-0002mu-7I for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:56:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5j-0005ri-PC for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:56:01 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:38047) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5j-0005rP-KA; Fri, 09 Feb 2018 09:55:55 -0500 Received: by mail-qt0-x242.google.com with SMTP id z10so10828122qti.5; Fri, 09 Feb 2018 06:55: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=Ro6NsGQE95TgqhEe4cM+3fq55Nj7p/DfcTmAK0a7k7c=; b=DT7mHXpV9PbgupSuLdMzNROwhgf6cHONcaLOUluO1NRn6tfPA6TsG/iWs+0ol32M7Q k/+Hc6XiA4UwCkK9uH8FbEhTAmOhaR5qlRggeSIqB/fHQogalmscBTnfS4IGiIE0+Jev blsy5w0SIupb6fRbFIXcbIl+m1SjlCe0ao22yYy/SXOHvp0H2c6Y1Mb5dGXrf4NIuhT+ dx2pI5FH1MDy/q5HlexgfjioirAhEJkFj0KLjyC6XYXF93+u8kI9Wx9dErsRgm115qT8 98rsniuHBBBORtzAwI5qG1dJi+3LeEyqi5a2yKQ3Pdmzxed/O8YeJpr/XOI1SJzJWoOw NCuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Ro6NsGQE95TgqhEe4cM+3fq55Nj7p/DfcTmAK0a7k7c=; b=RRgIuC1Tbxw4rbW/haCszdM5neUWjGNwWKSP+rUMjy9Uj7R4dC1tDxuMS2WqvvWU5M PJY8cguiAM283CBUmeB95Qf2KlErqXMnwCkw0FmxNJAU0zl/s/TUC9UChBeWskSK/XfD jb4ChaKsocuEaEkHIMCntMzKJ9pDDZ33Moz9zbAQR5nH0j4KaSs73RwYV21N4nCnmncB qLUDyYzad9FZMykXdq/ZrNVnUWcThZe4CJcR/EADU4gCuFiRjyzy0SedT4kdMyO8Mm06 X8OzhECdL5zF5u4TZIYAY+AGnuG8XozONxFuvKf3A38trc67UUwPuQKN/KJsSr2CUPOA ukYw== X-Gm-Message-State: APf1xPD4sw1qRtzR+OqR/YmgBv9EV7d5qCqOWqFNAMLEKrx2WpdEBD2s 39GjOf0vcVJc/z/I3cjTGoQ= X-Google-Smtp-Source: AH8x226O/PTlMT9fYQ4BlUwHXt58pfK5LVVJ88GWrRuxrEFs6OlXLhKj8rn1ZE/7pbagrbOqchwz1Q== X-Received: by 10.200.39.241 with SMTP id x46mr4630076qtx.266.1518188155087; Fri, 09 Feb 2018 06:55:55 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:54 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:27 -0300 Message-Id: <20180209145430.26007-28-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 27/30] hw/arm/xilinx_zynqmp: enable the UHS-I mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , qemu-devel@nongnu.org, =?utf-8?q?Philippe?= =?utf-8?q?_Mathieu-Daud=C3=A9?= , Alistair Francis , "open list:Xilinx ZynqMP" , "Edgar E. Iglesias" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" see the Xilinx datasheet "UG1085" (v1.7) Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis --- hw/arm/xlnx-zynqmp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index e39ad73bec..4b93a3abd2 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -400,6 +400,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) */ object_property_set_uint(sdhci, 3, "sd-spec-version", &err); object_property_set_uint(sdhci, SDHCI_CAPABILITIES, "capareg", &err); + object_property_set_uint(sdhci, UHS_I, "uhs", &err); object_property_set_bool(sdhci, true, "realized", &err); if (err) { error_propagate(errp, err); From patchwork Fri Feb 9 14:54: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: 871464 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="uODUgObu"; 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 3zdJrc2wjCz9rxj for ; Sat, 10 Feb 2018 02:29:20 +1100 (AEDT) Received: from localhost ([::1]:33361 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAc2-0004xe-DR for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:29:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34518) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5n-0002md-As for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:56:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5m-0005sh-G4 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:59 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:39319) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5m-0005sb-Bk for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:55:58 -0500 Received: by mail-qt0-x244.google.com with SMTP id f4so10832325qtj.6 for ; Fri, 09 Feb 2018 06:55: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=ZRvml1ZGUdaKPUofppn7Ev0zvZpYZ87NNd9NukKAQjs=; b=uODUgObu3/j0i7py39bJGzjyYLUJDgNOiBTcvBAXShaojqFHUEtVpo3C3wCx15euFH Ve2kYRPy5ySJTbcQhNO834gPlxt8xwRN5iBBa2qfWTYLxnZb9CZtkdPbstbga0vVJbnb Q1zMqAaQl4qXEcbFD9vj/b7aFEJO6cbz3wJwn24a1hNdlyzGYEn+nxR2Y1zjeD9KEoDB hzdbNxW5KmqDAtUVZiqzkHUYTbQj8H4KpeWvXCclOSQ23VlI38+U9OM+1YkiaWN+JFja bTRlgKMFY//Te6zEerjuSFcch4ECRbKWm9JU/SMmeLeE1CWFhd7ZA0ynDhSvrngMZV9N GozQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ZRvml1ZGUdaKPUofppn7Ev0zvZpYZ87NNd9NukKAQjs=; b=MUqxeD+Z2CcU1F1lDKn/aLqG+oiBP6U5Q5ZdKnhmD8elGWK5t6uTc/nhmtScHfdxVj cuioHWpDnDmuO1HSmMLx3a47gmnNU4xkdIHSJiTsYha496UzW2RFCoExBvHzXDsmUxwu TE5fVU4DziEPCd7DTbudOERqLHvJ92OdrB2+r1duS6B+aWcTuxMOBP3VCYaJCGIXCCru c+7TcaaCOGTShXaLpShJ63FSb65AIG8ZK8STVzm+oSDdWlvW5eDtuTqWDIGAkEbpt4HP DYXylwMz74uoTv1hEBMXF3p/VKCy/f5vv/UJ2FGLwcUvtknuk/UPwhOndOZqp2lXTNPB 1psg== X-Gm-Message-State: APf1xPCc0Bt4riUegnOI2C7DD4TXX3X8W2aDoy0XnqHc6fd91iJokw7g oJKb3p2RK1vTRBrkaGdN/aE= X-Google-Smtp-Source: AH8x2267Hfmzvin0d4I5I5WWF1gajlm7XHv2LcyxFGp9nQcJjENfZdAAZEfxfdoLvFaJGIH7Fi4ppQ== X-Received: by 10.237.32.74 with SMTP id 68mr4902474qta.129.1518188157842; Fri, 09 Feb 2018 06:55:57 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:55:57 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:28 -0300 Message-Id: <20180209145430.26007-29-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 28/30] sdhci: check Spec v3 capabilities qtest X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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é Acked-by: Alistair Francis --- tests/sdhci-test.c | 12 ++++++++++++ tests/Makefile.include | 1 + 2 files changed, 13 insertions(+) diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c index 898c43ff4f..39d0f87788 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -42,10 +42,22 @@ static const struct sdhci_t { { "arm", "smdkc210", {0x12510000, 2, 0, {1, 0x5e80080} } }, + /* i.MX 6 */ + { "arm", "sabrelite", + {0x02190000, 3, 0, {1, 0x057834b4} } }, + + /* BCM2835 */ + { "arm", "raspi2", + {0x3f300000, 3, 52, {0, 0x052134b4} } }, + /* Zynq-7000 */ { "arm", "xilinx-zynq-a9", /* Datasheet: UG585 (v1.12.1) */ {0xe0100000, 2, 0, {1, 0x69ec0080} } }, + /* ZynqMP */ + { "aarch64", "xlnx-zcu102", /* Datasheet: UG1085 (v1.7) */ + {0xff160000, 3, 0, {1, 0x280737ec6481} } }, + }; typedef struct QSDHCI { diff --git a/tests/Makefile.include b/tests/Makefile.include index 52be9b3fa5..278c13aa93 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -371,6 +371,7 @@ check-qtest-arm-y += tests/boot-serial-test$(EXESUF) check-qtest-arm-y += tests/sdhci-test$(EXESUF) check-qtest-aarch64-y = tests/numa-test$(EXESUF) +check-qtest-aarch64-y += tests/sdhci-test$(EXESUF) check-qtest-microblazeel-y = $(check-qtest-microblaze-y) From patchwork Fri Feb 9 14:54: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: 871462 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="KUNi4iDx"; 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 3zdJm65lR6z9s7f for ; Sat, 10 Feb 2018 02:25:26 +1100 (AEDT) Received: from localhost ([::1]:32996 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAYG-0001dr-OU for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:25:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34561) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5s-0002sL-At for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:56:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5p-0005tU-8R for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:56:04 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:38048) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5p-0005tL-49 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:56:01 -0500 Received: by mail-qt0-x242.google.com with SMTP id z10so10828508qti.5 for ; Fri, 09 Feb 2018 06:56:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CSw+keFj0KiM8UJfh3gLP/ZZp830fZk9bqy5fPHP4cc=; b=KUNi4iDx1xMqa/2SvljHimBVGI5BgmJw2kbW/AzDR2wwb/hVyD9UPOSxvA1AIq+4Yq wzXCwrGc0nSDAiYa8FADbHxhXNrLMEypcIDVt/CMJEyEagJ0YnK+VjCl/2TpSYQZ0QGW AbHu9eJIlV6ytx8X/pJXje/Fz7o7V6mykDTYNysFXXp/CdlOkcGUHj9CpETHj3ktVZ6B PXkiMXCAMGbmBvdtbLZd+5qVPhGiQfHHUXZUkRNNJOKTswe910R0s2u+hq5zu8XWbaeo 7RinYFjjqX3n1RmuPG6D8sbjOuzdFRDAiuV8yLrmkJjScIff5sfQ73XS0RFeohOhoI4O L/sA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=CSw+keFj0KiM8UJfh3gLP/ZZp830fZk9bqy5fPHP4cc=; b=twTFRR9AD9qpRUo2OpoxWbuFR/RpYxAjZO355waNZyQw4/BSMvFGfzW6Y3niNdeAU2 KqgigWTIuuq9mOVn2CN2JC6sjJVW0yHYOZOfrirx/10cTcjPOMZvxDixfU/1c50lFYFB /k8cWj6foiWgk27aX8kVcZVbXc1LSVPjRhbrGkVHf9pkjN/oaGRblODGm20uhX9HSmR6 t8AO2MT3clwVr//fFXatUgSKzswUpU8HlK+xFPfZOZnJbO0dC12DNJ9nbJCLe7WIFg0F WmK947i6AeEaQ3Uxs4Vc7O6eWmWfrwegFq00rssYLfqDlnfx7MNfN8mF9FqtJY6A3RDU I2Sg== X-Gm-Message-State: APf1xPCxVFQ9NFTQalZpZjzHu6Ms2bnSd24EyQqJSjMzYBaC3hRKK2wQ HRRQwLaKYuIFf/tvFOly3uI= X-Google-Smtp-Source: AH8x224v4kh6nUFF3I7/mQCXS1w8FxvYhU5kQCi2ulL58lMVBVIr9WCZ153K8WgExIwHhadF6a6YOg== X-Received: by 10.237.41.164 with SMTP id o33mr4816590qtd.2.1518188160606; Fri, 09 Feb 2018 06:56:00 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.55.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:56:00 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:29 -0300 Message-Id: <20180209145430.26007-30-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 29/30] sdhci: add a check_capab_v3() qtest X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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 | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/sdhci-test.c b/tests/sdhci-test.c index 39d0f87788..c0b45da88a 100644 --- a/tests/sdhci-test.c +++ b/tests/sdhci-test.c @@ -16,6 +16,8 @@ #define SDHC_CAPAB 0x40 FIELD(SDHC_CAPAB, BASECLKFREQ, 8, 8); /* since v2 */ FIELD(SDHC_CAPAB, SDMA, 22, 1); +FIELD(SDHC_CAPAB, SDR, 32, 3); /* since v3 */ +FIELD(SDHC_CAPAB, DRIVER, 36, 3); /* since v3 */ #define SDHC_HCVER 0xFE static const struct sdhci_t { @@ -161,6 +163,20 @@ static void check_capab_sdma(QSDHCI *s, bool supported) g_assert_cmpuint(capab_sdma, ==, supported); } +static void check_capab_v3(QSDHCI *s, uint8_t version) +{ + uint64_t capab, capab_v3; + + if (version < 3) { + /* before v3 those fields are RESERVED */ + capab = sdhci_readq(s, SDHC_CAPAB); + capab_v3 = FIELD_EX64(capab, SDHC_CAPAB, SDR); + g_assert_cmpuint(capab_v3, ==, 0); + capab_v3 = FIELD_EX64(capab, SDHC_CAPAB, DRIVER); + g_assert_cmpuint(capab_v3, ==, 0); + } +} + static QSDHCI *machine_start(const struct sdhci_t *test) { QSDHCI *s = g_new0(QSDHCI, 1); @@ -209,6 +225,7 @@ static void test_machine(const void *data) check_specs_version(s, test->sdhci.version); check_capab_capareg(s, test->sdhci.capab.reg); check_capab_readonly(s); + check_capab_v3(s, test->sdhci.version); check_capab_sdma(s, test->sdhci.capab.sdma); check_capab_baseclock(s, test->sdhci.baseclock); From patchwork Fri Feb 9 14:54:30 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: 871453 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="ErFjRuPG"; 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 3zdJZt1RpBz9s8J for ; Sat, 10 Feb 2018 02:17:24 +1100 (AEDT) Received: from localhost ([::1]:60442 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekAQT-0003A2-Rr for incoming@patchwork.ozlabs.org; Fri, 09 Feb 2018 10:17:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34579) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ekA5t-0002tW-9I for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:56:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ekA5s-0005uo-67 for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:56:05 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:43473) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ekA5s-0005ud-1E for qemu-devel@nongnu.org; Fri, 09 Feb 2018 09:56:04 -0500 Received: by mail-qt0-x241.google.com with SMTP id d26so381645qtk.10 for ; Fri, 09 Feb 2018 06:56:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Q0BNPdP5ghGEGWQaV3NtsLbNa8nxSkL1ry+NjVps0YY=; b=ErFjRuPG4Y4hdmzXx3zqLWNc9s8qWI/BwkFEg/cDEpPCfW6vtMVC+Hrqoeke2/1Ldt a3oHBdDbttX4E5+MB8e7V/T53i8Q1KaiKrl8ndVpJGXuvn8QPjtn9LfsPcsaH/k9fNFU qCUNDUHPiR7hm8CApMjAa2h5qC3gGS2NK3lUW+JrlnpEDXfQq7x87342eL4qfTg0qk5z i6jSrlCyg0iqO4ai2lwPS5+LtfppNcfgaj3RiNCVxNetwBzGS7loLdY2yoWa+0vbINg7 yKTu2tSAgG9RGV912bK4NMxJZ7s9n5FY1aPm3aA+d8uZC7u8gk08aMNIow9FInAgkpVN NkRQ== 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=Q0BNPdP5ghGEGWQaV3NtsLbNa8nxSkL1ry+NjVps0YY=; b=Qy6OXwuRDKI5N5B7+H04eBZYy30iKD7oZZUupEwTDmwfl4zMjDnoxGOUEl6Bx6+mfW dna5ZR5Mw2tKsF+Dw35LQiX5nuVNpfW25u7zJhcGBmaFUAuDRuC0nmuYUFXDhrbu9YpA Gfv+B0DbJVuc+D/dIWWzAGXPsZEFLGHTcLgW9IcHYZQejPOwgbbekxnoYO4qEOQZy3of At3zaZe8GsdKzhqHi4wr9ApMLDxxDX/COcYSKu42HuxTYa5EdZFW0ZJzjXToxLFFXsh4 uLCvAAXoqwDAqtfWakMM4o/zIeC4scIzpDO68Jp/OJ1kW9KypIM3CbLrhpS9R/WB6BRo c28g== X-Gm-Message-State: APf1xPAM6/OZYkhRfxtk1KaT++kKoCiQo8lyoiLTmMB3anjymK38utD3 8R7XI6fRtlv5cqwa4lbYssc= X-Google-Smtp-Source: AH8x224bkNaSmRmcBxBTLFfg3hGA8WHchPKjM3GJCCySS4I3Z46KazoApSAg/dEkEo5QhCq2cbvnMw== X-Received: by 10.200.46.73 with SMTP id s9mr4938257qta.317.1518188163488; Fri, 09 Feb 2018 06:56:03 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id b29sm747841qkb.28.2018.02.09.06.56.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Feb 2018 06:56:02 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Paolo Bonzini Date: Fri, 9 Feb 2018 11:54:30 -0300 Message-Id: <20180209145430.26007-31-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180209145430.26007-1-f4bug@amsat.org> References: <20180209145430.26007-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 v12 30/30] sdhci: add Spec v4.2 register definitions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Peter Maydell , 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é --- hw/sd/sdhci-internal.h | 9 +++++++++ hw/sd/sdhci.c | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 0092627076..e1bb733aed 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -198,6 +198,10 @@ FIELD(SDHC_HOSTCTL2, V18_ENA, 3, 1); /* UHS-I only */ FIELD(SDHC_HOSTCTL2, DRIVER_STRENGTH, 4, 2); /* UHS-I only */ FIELD(SDHC_HOSTCTL2, EXECUTE_TUNING, 6, 1); /* UHS-I only */ FIELD(SDHC_HOSTCTL2, SAMPLING_CLKSEL, 7, 1); /* UHS-I only */ +FIELD(SDHC_HOSTCTL2, UHS_II_ENA, 8, 1); /* since v4 */ +FIELD(SDHC_HOSTCTL2, ADMA2_LENGTH, 10, 1); /* since v4 */ +FIELD(SDHC_HOSTCTL2, CMD23_ENA, 11, 1); /* since v4 */ +FIELD(SDHC_HOSTCTL2, VERSION4, 12, 1); /* since v4 */ FIELD(SDHC_HOSTCTL2, ASYNC_INT, 14, 1); FIELD(SDHC_HOSTCTL2, PRESET_ENA, 15, 1); @@ -216,10 +220,12 @@ FIELD(SDHC_CAPAB, SUSPRESUME, 23, 1); FIELD(SDHC_CAPAB, V33, 24, 1); FIELD(SDHC_CAPAB, V30, 25, 1); FIELD(SDHC_CAPAB, V18, 26, 1); +FIELD(SDHC_CAPAB, BUS64BIT_V4, 27, 1); /* since v4.10 */ FIELD(SDHC_CAPAB, BUS64BIT, 28, 1); /* since v2 */ FIELD(SDHC_CAPAB, ASYNC_INT, 29, 1); /* since v3 */ FIELD(SDHC_CAPAB, SLOT_TYPE, 30, 2); /* since v3 */ FIELD(SDHC_CAPAB, BUS_SPEED, 32, 3); /* since v3 */ +FIELD(SDHC_CAPAB, UHS_II, 35, 8); /* since v4.20 */ FIELD(SDHC_CAPAB, DRIVER_STRENGTH, 36, 3); /* since v3 */ FIELD(SDHC_CAPAB, DRIVER_TYPE_A, 36, 1); /* since v3 */ FIELD(SDHC_CAPAB, DRIVER_TYPE_C, 37, 1); /* since v3 */ @@ -228,12 +234,15 @@ FIELD(SDHC_CAPAB, TIMER_RETUNING, 40, 4); /* since v3 */ FIELD(SDHC_CAPAB, SDR50_TUNING, 45, 1); /* since v3 */ FIELD(SDHC_CAPAB, RETUNING_MODE, 46, 2); /* since v3 */ FIELD(SDHC_CAPAB, CLOCK_MULT, 48, 8); /* since v3 */ +FIELD(SDHC_CAPAB, ADMA3, 59, 1); /* since v4.20 */ +FIELD(SDHC_CAPAB, V18_VDD2, 60, 1); /* since v4.20 */ /* HWInit Maximum Current Capabilities Register 0x0 */ #define SDHC_MAXCURR 0x48 FIELD(SDHC_MAXCURR, V33_VDD1, 0, 8); FIELD(SDHC_MAXCURR, V30_VDD1, 8, 8); FIELD(SDHC_MAXCURR, V18_VDD1, 16, 8); +FIELD(SDHC_MAXCURR, V18_VDD2, 32, 8); /* since v4.20 */ /* W Force Event Auto CMD12 Error Interrupt Register 0x0000 */ #define SDHC_FEAER 0x50 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 6e5bea804c..c2e4b7003d 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -92,6 +92,20 @@ static void sdhci_check_capareg(SDHCIState *s, Error **errp) bool unit_mhz; switch (s->sd_spec_version) { + case 4: + val = FIELD_EX64(s->capareg, SDHC_CAPAB, BUS64BIT_V4); + msk = FIELD_DP64(msk, SDHC_CAPAB, BUS64BIT_V4, 0); + trace_sdhci_capareg("64-bit system bus (v4)", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, UHS_II); + msk = FIELD_DP64(msk, SDHC_CAPAB, UHS_II, 0); + trace_sdhci_capareg("UHS-II", val); + + val = FIELD_EX64(s->capareg, SDHC_CAPAB, ADMA3); + msk = FIELD_DP64(msk, SDHC_CAPAB, ADMA3, 0); + trace_sdhci_capareg("ADMA3", val); + + /* fallback */ case 3: val = FIELD_EX64(s->capareg, SDHC_CAPAB, ASYNC_INT); trace_sdhci_capareg("async interrupt", val);