From patchwork Thu Feb 22 15:22:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129259 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2137515edc; Thu, 22 Feb 2018 07:26:24 -0800 (PST) X-Google-Smtp-Source: AH8x224W4FuOCZqCI4nuSNGeK9iOes+h7ED8UjUGQOOGoRnUiKgWGisRCchY/gC2Da2jYZe+i3PZ X-Received: by 10.129.238.16 with SMTP id l16mr4936001ywm.221.1519313184564; Thu, 22 Feb 2018 07:26:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313184; cv=none; d=google.com; s=arc-20160816; b=H92DsG3zE1ju6vdtfS31cP9in3gsBjlvBy4AZVMGOk/fH0crCuI4n5fBmDT647DFUd ekeDZlUUx92udg8ONTqwfO63Ph2+VsnpSQ/WoQflVFRF8w4wkEZW+dgwi76HZ4vigB1r 21UR9LLA/5+5MW2RVUpwPBbnhHI9dIIu0LzLEW4YvH9RpgSG/XQTgF3FgkjJJLRbCHTI vieGQW8xZFdVeaaAOqX+JSJfqyYgkbZ97QOJnlUqPxKAW1m69ostaiK2CJ4Z3o05ZhEi ZiycNcaZCbH0ohpSv7N3extD/PlggOPMRqAE2SlwDBDvyMGvDAWiqdicPMUzQSV/L3BR Cmmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=j9KzgepI0Fc0748kH49pQGbbSXWj51xgiIVgtINoEok=; b=yvsQoMfyarCO2L1cyFd/GM/oQGhuUvRDbewLYEufxcw9/lr445ZN1Z9No4n8SPxIN6 q0N16sLWbeZ/aMJYMZLc0WtobBIaeJJ/884krj4irDNmq96K+YAhbGHvfIa4lkds05qX GGmXhW6GOdeiTBHJrpLkpgCxZ8UELYbcnE+36wDx6hqspgllaLX5mzUU/2+FscNZUyRr pMX8EfiFKGNCn9X7xphOokD1aX3NlFNaRa4fo9wgHUPhfOrjfrOlOeTrTvcfigu0KI/k 1TBl48jcXAJGgN/Huw/ybC3jWUanU7pId/2keeWgwJMXbPRO4Fu7WXDJA+7zGE8geErH yWyQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id m11-v6si45692ybk.541.2018.02.22.07.26.24 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:26:24 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38982 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eoslL-0007D0-Td for patch@linaro.org; Thu, 22 Feb 2018 10:26:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38281) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiV-0004hI-HY for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiP-0001XT-MR for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:27 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46584) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiP-0001RM-Dm for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:21 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiL-00020I-Ui for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:17 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:36 +0000 Message-Id: <20180222152307.7499-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 01/32] target/arm: Fix register definitions for VMIDR and VMPIDR 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" The register definitions for VMIDR and VMPIDR have separate reginfo structs for the AArch32 and AArch64 registers. However the 32-bit versions are wrong: * they use offsetof instead of offsetoflow32 to mark where the 32-bit value lives in the uint64_t CPU state field * they don't mark themselves as ARM_CP_ALIAS In particular this means that if you try to use an Arm guest CPU which enables EL2 on a big-endian host it will assert at reset: target/arm/cpu.c:114: cp_reg_check_reset: Assertion `oldvalue == newvalue' failed. because the reset of the 32-bit register writes to the top half of the uint64_t. Correct the errors in the structures. Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé --- This is necessary for 'make check' to pass on big endian systems with the 'raspi3' board enabled, which is the first board which has an EL2-enabled-by-default CPU. --- target/arm/helper.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -- 2.16.1 diff --git a/target/arm/helper.c b/target/arm/helper.c index 32e4fd4732..c5bc69b961 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -5069,8 +5069,8 @@ void register_cp_regs_for_features(ARMCPU *cpu) { .name = "VPIDR", .state = ARM_CP_STATE_AA32, .cp = 15, .opc1 = 4, .crn = 0, .crm = 0, .opc2 = 0, .access = PL2_RW, .accessfn = access_el3_aa32ns, - .resetvalue = cpu->midr, - .fieldoffset = offsetof(CPUARMState, cp15.vpidr_el2) }, + .resetvalue = cpu->midr, .type = ARM_CP_ALIAS, + .fieldoffset = offsetoflow32(CPUARMState, cp15.vpidr_el2) }, { .name = "VPIDR_EL2", .state = ARM_CP_STATE_AA64, .opc0 = 3, .opc1 = 4, .crn = 0, .crm = 0, .opc2 = 0, .access = PL2_RW, .resetvalue = cpu->midr, @@ -5078,8 +5078,8 @@ void register_cp_regs_for_features(ARMCPU *cpu) { .name = "VMPIDR", .state = ARM_CP_STATE_AA32, .cp = 15, .opc1 = 4, .crn = 0, .crm = 0, .opc2 = 5, .access = PL2_RW, .accessfn = access_el3_aa32ns, - .resetvalue = vmpidr_def, - .fieldoffset = offsetof(CPUARMState, cp15.vmpidr_el2) }, + .resetvalue = vmpidr_def, .type = ARM_CP_ALIAS, + .fieldoffset = offsetoflow32(CPUARMState, cp15.vmpidr_el2) }, { .name = "VMPIDR_EL2", .state = ARM_CP_STATE_AA64, .opc0 = 3, .opc1 = 4, .crn = 0, .crm = 0, .opc2 = 5, .access = PL2_RW, From patchwork Thu Feb 22 15:22:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129262 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2139967edc; Thu, 22 Feb 2018 07:28:40 -0800 (PST) X-Google-Smtp-Source: AH8x2246Z9T1zTmcgXMxXaSaOPdwF+wvKu72/feqscWN+3T60lWC3hy7jErmawXu93FXBYNDHYzw X-Received: by 10.13.212.196 with SMTP id w187mr5013292ywd.143.1519313320087; Thu, 22 Feb 2018 07:28:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313320; cv=none; d=google.com; s=arc-20160816; b=vWmZYRqIg14O6k+3dxkmWWOwEllmVhPcvUINAfjBN8tL2ohHiQ+EcVDvoJnmMeKls7 gi64ojLPxreymzECZWfd1qPvqvB+gxanE3b7ubT+a67KHLPN5kCEnjfEmcQ5v5xg1hsp rMJK1br4xYLDHL5lj4i06pVdxiBucWNxIqAPXOs+5DFqACfBR73UArqqmin4MhqF+Mpf rigQdZ++s9Hig+fza4RjFL8wN+19tGOflvkToOVeiD0doIN3S9i6isMHm4w7q3pYzh+Y X5+Kndp+UR1vdzp+aPfhoE+3dUZt6vV6edAc0EnPD7Ps0fAqQf001jyp9qKz8ncrfJkd eObQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=zQGFBouAS+wrf8FCU+gFCyzT+3HQ+Cz5Q3BffqPGJyk=; b=iRKwWPkqAqPFrQ1z3cP8fAZV/n6lBqZGxQwl/+3iIZJnC5JY69RoNadSd88EjL9tLX ZQ5c15Kg9N7ghcbWFFbA776CrAJ8YS9kYPMgtNWdNas4sdhboS+xx6K5r++8rdXdgQos DsW9giqgkeOz8wukMccEX/5lN+Cde8Q9U+9LsfZrhXFQO0Wgsy8NWgJdOPeYBEXhiouP CEmaLk0o0wRyQu7Q9UlrK1wyMIWrB5+y/bAm0XHzc96GIFezXOywlyWpCKQA1UPpnkI5 Rx+dOZVnEt7CaeylgMdppl8P7MAHghLhWt0lX2FttgvQlL6LcfhoBxgjQum0bExgaZ6p cl0g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id l206-v6si46971ybc.689.2018.02.22.07.28.39 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:28:40 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38991 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosnX-0008W1-F4 for patch@linaro.org; Thu, 22 Feb 2018 10:28:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38252) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiU-0004gB-20 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiS-0001Z6-Ah for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:26 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46586) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiS-0001Ye-0w for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:24 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiR-00020Z-2M for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:23 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:37 +0000 Message-Id: <20180222152307.7499-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 02/32] raspi: Add "raspi3" machine type 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Pekka Enberg This patch adds a "raspi3" machine type, which can now be selected as the machine to run on by users via the "-M" command line option to QEMU. The machine type does *not* ignore memory transaction failures so we likely need to add some dummy devices later when people run something more complicated than what I'm using for testing. Signed-off-by: Pekka Enberg [PMM: added #ifdef TARGET_AARCH64 so we don't provide the 64-bit board in the 32-bit only arm-softmmu build.] Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Peter Maydell --- hw/arm/raspi.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) -- 2.16.1 diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 93121c56bf..a37881433c 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -187,3 +187,26 @@ static void raspi2_machine_init(MachineClass *mc) mc->ignore_memory_transaction_failures = true; }; DEFINE_MACHINE("raspi2", raspi2_machine_init) + +#ifdef TARGET_AARCH64 +static void raspi3_init(MachineState *machine) +{ + raspi_init(machine, 3); +} + +static void raspi3_machine_init(MachineClass *mc) +{ + mc->desc = "Raspberry Pi 3"; + mc->init = raspi3_init; + mc->block_default_type = IF_SD; + mc->no_parallel = 1; + mc->no_floppy = 1; + mc->no_cdrom = 1; + mc->default_cpu_type = ARM_CPU_TYPE_NAME("cortex-a53"); + mc->max_cpus = BCM2836_NCPUS; + mc->min_cpus = BCM2836_NCPUS; + mc->default_cpus = BCM2836_NCPUS; + mc->default_ram_size = 1024 * 1024 * 1024; +} +DEFINE_MACHINE("raspi3", raspi3_machine_init) +#endif From patchwork Thu Feb 22 15:22:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129257 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2134832edc; Thu, 22 Feb 2018 07:23:53 -0800 (PST) X-Google-Smtp-Source: AH8x2254gn4sFeqNehjuyRq6TkC9cDNoB1qFKdlawo0cgwXzlKujAApFvCnWTh8yxB4tcHZKs++D X-Received: by 10.129.62.33 with SMTP id l33mr5027333ywa.501.1519313033536; Thu, 22 Feb 2018 07:23:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313033; cv=none; d=google.com; s=arc-20160816; b=auQTSH4Mf8ZxJeF2DfzjOu6VS1d1V+FkJb/QzM+wglyqQSU1k1tLYzc0dpNnUa6sdP 27utZZ0JMA5s9idwi2cbWFfn1LyESU9eClAJ0cgse4ER0NBD+YILbG9hUAcGx6Nz+VGM DvkVuJEhn0EURaXCyyWPQxW1sFtcpSqHtR7LpQmnXWSkvbnsdg4Mml1/jA6P8rZm1T5T I5mVaV6+aYl0SmlbOL89UYT5P9g69jscGbdO3A3ZEpBtQEeVnsYoEvwM0EQN3U39sY5S /aGqeb1du+KJfL6F2KpwJtUQnVxCVnBD29oi9a4NrkkCcgGOMRRYyFYmRmwrVmlKodwN K8Bg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=jhW1H+gffGhKTaZ5m+oiehE7qBFsKf7vfbVQehyU998=; b=jzrfvbDCBGCR5ytwrXaQgRDy1K7RYx7OLuOhD5ZBiPqrWPeEC3ioxjgiI/xZu6G0TC 11GYqeyKIe9K79tYRSy93A2r8jHT8f3IpXsGgt1m/nJFeFhe0ftdQ8cQ9u6rPCXFhgGW LepZLcuWPEHrAyPA61zjqLWXOBvuGdSP5NJ8hGR+Vy3txYi1UgI53wFidP3CFbZM+SO6 VQAXW51L6ZOnEwHfEEbO6ihto8j8ZZVYXyD4t1w26hC4hCfFHK17uvyF/MZacyxLTVpF xHMUFWA+mEx3Z4xlWTvtXnJWp/v8TiseItWLr90t9qrprgHipwvSX+TqXJORKv47J7T2 BSzg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id t29-v6si48367ybt.202.2018.02.22.07.23.53 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:23:53 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38965 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiu-0004iF-QT for patch@linaro.org; Thu, 22 Feb 2018 10:23:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38257) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiU-0004gU-Ft for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiT-0001Zi-7g for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:26 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46586) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiT-0001Ye-0f for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:25 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiR-00020n-QU for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:23 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:38 +0000 Message-Id: <20180222152307.7499-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 03/32] hw/char/stm32f2xx_usart: fix TXE/TC bit handling 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Braun I/O currently being synchronous, there is no reason to ever clear the SR_TXE bit. However the SR_TC bit may be cleared by software writing to the SR register, so set it on each write. In addition, fix the reset value of the USART status register. Signed-off-by: Richard Braun Reviewed-by: Alistair Francis [PMM: removed XXX tag from comment, since it isn't something we need to come back and fix in QEMU] Signed-off-by: Peter Maydell --- include/hw/char/stm32f2xx_usart.h | 7 ++++++- hw/char/stm32f2xx_usart.c | 12 ++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) -- 2.16.1 diff --git a/include/hw/char/stm32f2xx_usart.h b/include/hw/char/stm32f2xx_usart.h index 9d03a7527c..84c4029777 100644 --- a/include/hw/char/stm32f2xx_usart.h +++ b/include/hw/char/stm32f2xx_usart.h @@ -37,7 +37,12 @@ #define USART_CR3 0x14 #define USART_GTPR 0x18 -#define USART_SR_RESET 0x00C00000 +/* + * NB: The reset value mentioned in "24.6.1 Status register" seems bogus. + * Looking at "Table 98 USART register map and reset values", it seems it + * should be 0xc0, and that's how real hardware behaves. + */ +#define USART_SR_RESET (USART_SR_TXE | USART_SR_TC) #define USART_SR_TXE (1 << 7) #define USART_SR_TC (1 << 6) diff --git a/hw/char/stm32f2xx_usart.c b/hw/char/stm32f2xx_usart.c index 07b462d4b6..032b5fda13 100644 --- a/hw/char/stm32f2xx_usart.c +++ b/hw/char/stm32f2xx_usart.c @@ -96,12 +96,10 @@ static uint64_t stm32f2xx_usart_read(void *opaque, hwaddr addr, switch (addr) { case USART_SR: retvalue = s->usart_sr; - s->usart_sr &= ~USART_SR_TC; qemu_chr_fe_accept_input(&s->chr); return retvalue; case USART_DR: DB_PRINT("Value: 0x%" PRIx32 ", %c\n", s->usart_dr, (char) s->usart_dr); - s->usart_sr |= USART_SR_TXE; s->usart_sr &= ~USART_SR_RXNE; qemu_chr_fe_accept_input(&s->chr); qemu_set_irq(s->irq, 0); @@ -137,7 +135,9 @@ static void stm32f2xx_usart_write(void *opaque, hwaddr addr, switch (addr) { case USART_SR: if (value <= 0x3FF) { - s->usart_sr = value; + /* I/O being synchronous, TXE is always set. In addition, it may + only be set by hardware, so keep it set here. */ + s->usart_sr = value | USART_SR_TXE; } else { s->usart_sr &= value; } @@ -151,8 +151,12 @@ static void stm32f2xx_usart_write(void *opaque, hwaddr addr, /* XXX this blocks entire thread. Rewrite to use * qemu_chr_fe_write and background I/O callbacks */ qemu_chr_fe_write_all(&s->chr, &ch, 1); + /* XXX I/O are currently synchronous, making it impossible for + software to observe transient states where TXE or TC aren't + set. Unlike TXE however, which is read-only, software may + clear TC by writing 0 to the SR register, so set it again + on each write. */ s->usart_sr |= USART_SR_TC; - s->usart_sr &= ~USART_SR_TXE; } return; case USART_BRR: From patchwork Thu Feb 22 15:22:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129261 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2139897edc; Thu, 22 Feb 2018 07:28:36 -0800 (PST) X-Google-Smtp-Source: AH8x226IjVYbfGa2I7RvA5a9DLqAt3QDWTMXvxim40dAeZpGK2B0Y2VpGUS7B9O6H6sopsdBCCSV X-Received: by 2002:a25:cc8c:: with SMTP id l134-v6mr5095328ybf.275.1519313316002; Thu, 22 Feb 2018 07:28:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313315; cv=none; d=google.com; s=arc-20160816; b=QyRazX4SVLo3t7hrVKvbIcERmCCu5O+ubSv37ZFx+PXsVSIOjluCXceQYh9S7y+IUD 0dh2YOSPNOJQYnm/W+9iIpN3OfHHbQIJsjK+bAAbyAqMbXebGoHToBP6wkW+EgyXZCKC EDkltvr1NnyItqB2kc8mbHdWueFMH6R3h/4Azj6i8VBu328nzk3nWW5XrPhW9SGEZyaG W6Y2bgj0a8w16NPO5EmdqrnHZw23hFkRD95scjFqQ3S7epyKS389fvUPKxg1vphG/A76 4RbAAp+1Tr9rlAYywQAEpwKgu305GUyScNALnPOw/QQoVkGFl54lk0LccFFvc/RYQoYh m45g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=9hmjqCE0xHSV9uHiek8tzdX3D1gby2v4u15JRNAtfCA=; b=bcw6ZXRdE0eL5hMHZbPwc/0XaP+e2K66hXWOgb10o9UHBtqojshTTP6YODvrIb+xlm EoolVCMOPKTdQrLZS/njOG2K63MwKXF4C9X/fKsJTKHPGFc1Q1hny/jsN0zxm2zwrv+h fOEfxrXIAWpIbs8nSBujbnv0WEumOPo1kqQJ/0QWFifTxaPGm2oOWx3o5uWY22eY8Nqb l5St7M0WpzyNpfMkZFFxUh2pa5ODHTpcvXeQ1nK8vOLm2MbZa34v7iIhGUhFx3SaGk0i yKZr7ksuYHNaJID62N9PDe8rVS3sekwZyUXJotFYQNd/i1KmgKmk5I9U0W+pxCUL+87z 85Rg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id d189-v6si43510ybc.728.2018.02.22.07.28.35 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:28:35 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38990 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosnT-0008Tq-Du for patch@linaro.org; Thu, 22 Feb 2018 10:28:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38268) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiU-0004gt-W4 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiT-0001a0-PP for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:26 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46588) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiT-0001ZQ-HQ for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:25 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiS-000213-Iy for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:24 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:39 +0000 Message-Id: <20180222152307.7499-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 04/32] Fix ast2500 protection register emulation 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Hugo Landau Some register blocks of the ast2500 are protected by protection key registers which require the right magic value to be written to those registers to allow those registers to be mutated. Register manuals indicate that writing the correct magic value to these registers should cause subsequent reads from those values to return 1, and writing any other value should cause subsequent reads to return 0. Previously, qemu implemented these registers incorrectly: the registers were handled as simple memory, meaning that writing some value x to a protection key register would result in subsequent reads from that register returning the same value x. The protection was implemented by ensuring that the current value of that register equaled the magic value. This modifies qemu to have the correct behaviour: attempts to write to a ast2500 protection register results in a transition to 1 or 0 depending on whether the written value is the correct magic. The protection logic is updated to ensure that the value of the register is nonzero. This bug caused deadlocks with u-boot HEAD: when u-boot is done with a protectable register block, it attempts to lock it by writing the bitwise inverse of the correct magic value, and then spinning forever until the register reads as zero. Since qemu implemented writes to these registers as ordinary memory writes, writing the inverse of the magic value resulted in subsequent reads returning that value, leading to u-boot spinning forever. Signed-off-by: Hugo Landau Reviewed-by: Cédric Le Goater Acked-by: Andrew Jeffery Message-id: 20180220132627.4163-1-hlandau@devever.net [PMM: fixed incorrect code indentation] Signed-off-by: Peter Maydell --- hw/misc/aspeed_scu.c | 6 +++++- hw/misc/aspeed_sdmc.c | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) -- 2.16.1 diff --git a/hw/misc/aspeed_scu.c b/hw/misc/aspeed_scu.c index 74537ce975..5e6d5744ee 100644 --- a/hw/misc/aspeed_scu.c +++ b/hw/misc/aspeed_scu.c @@ -191,7 +191,7 @@ static void aspeed_scu_write(void *opaque, hwaddr offset, uint64_t data, } if (reg > PROT_KEY && reg < CPU2_BASE_SEG1 && - s->regs[PROT_KEY] != ASPEED_SCU_PROT_KEY) { + !s->regs[PROT_KEY]) { qemu_log_mask(LOG_GUEST_ERROR, "%s: SCU is locked!\n", __func__); return; } @@ -199,6 +199,10 @@ static void aspeed_scu_write(void *opaque, hwaddr offset, uint64_t data, trace_aspeed_scu_write(offset, size, data); switch (reg) { + case PROT_KEY: + s->regs[reg] = (data == ASPEED_SCU_PROT_KEY) ? 1 : 0; + return; + case FREQ_CNTR_EVAL: case VGA_SCRATCH1 ... VGA_SCRATCH8: case RNG_DATA: diff --git a/hw/misc/aspeed_sdmc.c b/hw/misc/aspeed_sdmc.c index f0b3053fae..0df008e52a 100644 --- a/hw/misc/aspeed_sdmc.c +++ b/hw/misc/aspeed_sdmc.c @@ -110,7 +110,12 @@ static void aspeed_sdmc_write(void *opaque, hwaddr addr, uint64_t data, return; } - if (addr != R_PROT && s->regs[R_PROT] != PROT_KEY_UNLOCK) { + if (addr == R_PROT) { + s->regs[addr] = (data == PROT_KEY_UNLOCK) ? 1 : 0; + return; + } + + if (!s->regs[R_PROT]) { qemu_log_mask(LOG_GUEST_ERROR, "%s: SDMC is locked!\n", __func__); return; } @@ -123,6 +128,7 @@ static void aspeed_sdmc_write(void *opaque, hwaddr addr, uint64_t data, data &= ~ASPEED_SDMC_READONLY_MASK; break; case AST2500_A0_SILICON_REV: + case AST2500_A1_SILICON_REV: data &= ~ASPEED_SDMC_AST2500_READONLY_MASK; break; default: From patchwork Thu Feb 22 15:22:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129258 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2137126edc; Thu, 22 Feb 2018 07:26:03 -0800 (PST) X-Google-Smtp-Source: AH8x225wGBV4hQVUxl4EjG24qqDHWEsBtznBf5qQxTwaYuLyZoF4R4ZlEsAL8Ys0q9d/zqpL8b+/ X-Received: by 10.129.52.195 with SMTP id b186mr5031238ywa.327.1519313163147; Thu, 22 Feb 2018 07:26:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313163; cv=none; d=google.com; s=arc-20160816; b=c6xbPp5TlMup101SE+ZGOS+ZU1eWEM+wFdPX9Ncf8QZKfIZHiX/JHbBuzTWCKMOPxg hxEz+SW12A9jklC2b+sY12AlQJYCtrXaS8haXAiJyvjCfbqIAxnO7jfPjjVnRUSTn1TK YX1pKebroNTFYfZ9PhBg86phOAGj/R2USog3UfPfY4tKgyYLFieOKJJzhwaxK3Ebx19Q 0cPDbDZo1PzRvjCAo8Vn+f8J9dYvR3xM69E2MtlixWnvdET7f8mLuenvlTooSw6LnYQv vy8m1Q7bcMzpXT/tkx4YPkr4KY5pn+gK7AYHNLvsy1YGtzaS811h1zVdZNVQlbfhApya D+Tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=j7xzYLewLr7vNrLJhoVroK2xJKqXZE4wPk2MGw5Zyq0=; b=cwPkc4J/ANWn3Uk7SDcZlsNHDF3I88OMrtHKvOypOmkxBbFs59VusUW3yxZelzkY0M 3S07O4HVHRG1GGodC3Ywp1Xwawlz5ljqw/BnBC2fpcdV95aLf2is4vrKQVRZn9mBubUR l8JIXrW+jngMkLtkcprSdsrSnQlUnu8Vpi/oE4gqAJW2ZelNR+Lbo1WDuDCjb9fDqlsT SXeF2M8Tt2VyxDOJhpzYwAQqPvSzBM+HCrTeY9u134pTgmVJcEsbk9QUfxCTlPqqpZB8 PqCpqdRbY94GFcL+eJq0tiNooZv7r9p8kMZhLZG5ydrNVpYW5cMfekIJu0QcNq65MIrr rbvg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id o1-v6si43994ybm.766.2018.02.22.07.26.02 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:26:03 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38973 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosl0-00060q-9H for patch@linaro.org; Thu, 22 Feb 2018 10:26:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38284) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiV-0004hX-SJ for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiU-0001ae-Oi for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:27 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46590) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiU-0001a9-Hp for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:26 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiT-00021I-JQ for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:25 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:40 +0000 Message-Id: <20180222152307.7499-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 05/32] hw/sd/milkymist-memcard: use qemu_log_mask() 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Acked-by: Michael Walle Message-id: 20180216022933.10945-2-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/milkymist-memcard.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) -- 2.16.1 diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c index 341da88552..1292c0c099 100644 --- a/hw/sd/milkymist-memcard.c +++ b/hw/sd/milkymist-memcard.c @@ -22,11 +22,12 @@ */ #include "qemu/osdep.h" +#include "qemu/log.h" #include "hw/hw.h" #include "hw/sysbus.h" #include "sysemu/sysemu.h" #include "trace.h" -#include "qemu/error-report.h" +#include "include/qapi/error.h" #include "sysemu/block-backend.h" #include "sysemu/blockdev.h" #include "hw/sd/sd.h" @@ -138,8 +139,8 @@ static uint64_t memcard_read(void *opaque, hwaddr addr, } else { r = s->response[s->response_read_ptr++]; if (s->response_read_ptr > s->response_len) { - error_report("milkymist_memcard: " - "read more cmd bytes than available. Clipping."); + qemu_log_mask(LOG_GUEST_ERROR, "milkymist_memcard: " + "read more cmd bytes than available. Clipping."); s->response_read_ptr = 0; } } @@ -163,8 +164,9 @@ static uint64_t memcard_read(void *opaque, hwaddr addr, break; default: - error_report("milkymist_memcard: read access to unknown register 0x" - TARGET_FMT_plx, addr << 2); + qemu_log_mask(LOG_UNIMP, "milkymist_memcard: " + "read access to unknown register 0x%" HWADDR_PRIx "\n", + addr << 2); break; } @@ -220,8 +222,9 @@ static void memcard_write(void *opaque, hwaddr addr, uint64_t value, break; default: - error_report("milkymist_memcard: write access to unknown register 0x" - TARGET_FMT_plx, addr << 2); + qemu_log_mask(LOG_UNIMP, "milkymist_memcard: " + "write access to unknown register 0x%" HWADDR_PRIx " " + "(value 0x%" PRIx64 ")\n", addr << 2, value); break; } } From patchwork Thu Feb 22 15:22:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129264 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2140439edc; Thu, 22 Feb 2018 07:29:03 -0800 (PST) X-Google-Smtp-Source: AH8x225kJz7Z3EVDpsmbw+YgrzsJU32G2LiWXtkUaeKcGx0Sw6URWvymiDYgM+mDc6vAhcbKVMlm X-Received: by 10.129.81.22 with SMTP id f22mr4989666ywb.77.1519313343588; Thu, 22 Feb 2018 07:29:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313343; cv=none; d=google.com; s=arc-20160816; b=PxjuG3FfGa/z85+8KBOqyolvmWyyS7Qapv21/RxDH5K8xHRuKCwKsAsAHFxUKbmNWV WDU0hMhpRr7hXbJbkIRXi8OcVIsBxfh8ijgRNvu58gADsgw78dMzokXN/ZtmSKMgp3+e jK+rAghm0UhG9432yWdKdRPDSh96T+Ec9mBufNAfyvuKhdDbH/ZvcXuCbFmAq8grxojQ bDHuQosKXRpT0O04ySHv4Mo8pX6xN+tG3nHnnEFCxXg7guwndIrcBaGg+cpbnMML+ucp ifsMMizfMv9LaLoHyCdr+lbhhG+Va3OLSX/jbsEpfvR9i/5pUd5KA0hrhCOsojvEhUv4 Jvvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=rXiVD4jsC+n/KPaVGtWBiq7GI0OP1ISkNLUZGLrVw24=; b=z0IGxmbK0yW9kNuzdQwrPfCj9Ue9adIGjgZv7IjbiYzai7PY3znazwCkX90mZ79ZyQ CrqXKgPyVXIyEu9NeuqQR8WOrTh3peyw8+dt17wYjx2xOR+ikO8RkHVNPxWMlzEGbR6x YlLMrLrQScCht/CdmD6yA7jIVereiOeZ7KHv77Kgjgvjob7tM5xmBUwPYK3KSMOJMgcT oB9jaYc+VZPett9Wd+2GThtdKmnGfUoeWOTOE63/ARA0DUeLA9khFjOr777e0XYSX07S fZySH0fB3hutV6EOvQZs7085V8dasrSvzmsuEVoxBLfxV5IUZ3IkUw5q9oO9bFhPEk15 GDJw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id g4-v6si45228ybm.787.2018.02.22.07.29.03 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:29:03 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38996 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosnu-0001EW-Rn for patch@linaro.org; Thu, 22 Feb 2018 10:29:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38305) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiW-0004i4-MV for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiV-0001bR-MQ for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:28 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46590) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiV-0001a9-FU for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:27 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiU-00021W-CA for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:26 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:41 +0000 Message-Id: <20180222152307.7499-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 06/32] hw/sd/milkymist-memcard: split realize() out of SysBusDevice init() 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Create the SDCard in the realize() function. Suggested-by: Michael Walle Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Acked-by: Michael Walle Message-id: 20180216022933.10945-3-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/milkymist-memcard.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) -- 2.16.1 diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c index 1292c0c099..a8e65892c7 100644 --- a/hw/sd/milkymist-memcard.c +++ b/hw/sd/milkymist-memcard.c @@ -257,27 +257,31 @@ static void milkymist_memcard_reset(DeviceState *d) device_reset(DEVICE(s->card)); } -static int milkymist_memcard_init(SysBusDevice *dev) +static void milkymist_memcard_init(Object *obj) +{ + MilkymistMemcardState *s = MILKYMIST_MEMCARD(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); + + memory_region_init_io(&s->regs_region, OBJECT(s), &memcard_mmio_ops, s, + "milkymist-memcard", R_MAX * 4); + sysbus_init_mmio(dev, &s->regs_region); +} + +static void milkymist_memcard_realize(DeviceState *dev, Error **errp) { MilkymistMemcardState *s = MILKYMIST_MEMCARD(dev); - DriveInfo *dinfo; BlockBackend *blk; + DriveInfo *dinfo; /* FIXME use a qdev drive property instead of drive_get_next() */ dinfo = drive_get_next(IF_SD); blk = dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; s->card = sd_init(blk, false); if (s->card == NULL) { - return -1; + error_setg(errp, "failed to init SD card"); + return; } - s->enabled = blk && blk_is_inserted(blk); - - memory_region_init_io(&s->regs_region, OBJECT(s), &memcard_mmio_ops, s, - "milkymist-memcard", R_MAX * 4); - sysbus_init_mmio(dev, &s->regs_region); - - return 0; } static const VMStateDescription vmstate_milkymist_memcard = { @@ -300,9 +304,8 @@ static const VMStateDescription vmstate_milkymist_memcard = { static void milkymist_memcard_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - k->init = milkymist_memcard_init; + dc->realize = milkymist_memcard_realize; dc->reset = milkymist_memcard_reset; dc->vmsd = &vmstate_milkymist_memcard; /* Reason: init() method uses drive_get_next() */ @@ -313,6 +316,7 @@ static const TypeInfo milkymist_memcard_info = { .name = TYPE_MILKYMIST_MEMCARD, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(MilkymistMemcardState), + .instance_init = milkymist_memcard_init, .class_init = milkymist_memcard_class_init, }; From patchwork Thu Feb 22 15:22:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129263 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2140331edc; Thu, 22 Feb 2018 07:28:58 -0800 (PST) X-Google-Smtp-Source: AH8x227eEPq2tSKtpIAZtqPkd5mij8sUQLcPIdaBF9AcC1WCCq5Yu5xccDJjUoh+ItwvnfeZ1tDs X-Received: by 2002:a25:610e:: with SMTP id v14-v6mr5120204ybb.21.1519313338572; Thu, 22 Feb 2018 07:28:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313338; cv=none; d=google.com; s=arc-20160816; b=0/JA0J00VKrTiE49pE3Ek2pw9e2dKNYhYO8wf8pfgWkWTKygsU9BmVkDBYcosf+EV0 yPC5/0PjgL+ncfuOs8K4So7q6NavE8q92ys2sn39enkrg9VtQ56FtMoQq9SMTVJuj8T7 xf670vkEB78RCYj7vBnvPUvMzFQph44NFoprZ4lYqVFTtHiBJKEh069CZeyDTkq/EdXH 6KEePRbyU6D4Xt9pnt/YbkpSVvVx8MMO8svOxH8GeWTELTOjQRY2l4CNbeYRDRe8vA/i vEOs4ASOVyCqiALnaWOnm+lXHfP9cmoH8rVwel0nCUUdypY1vEFBSJnT6+s6pvV+dG7j Cfvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=2y7qIC95LirzlUSTrLcKmJGKAK0iRfIbMgx6suckWkI=; b=VPIGJ0sczHEhvyUwXitrkg3NqL55l0XIN6ku0dfYZJ/3h2qJo/CsHfw12faL8HuC5o kCa32TDXi5Ic01VPos0Gt9MFrq6AfPW3klon9/l2RL9z5MfHeuqBbz7bjtdpWchiQVcR 7jp7tdXjfHwiROBVkF6sfgAV+6fbR5UVFmoWw7WvVXFvoc/N30yBfS6xcPYAZYiZw2sH W+MyEvG/wE4TkColdoddESRDr+/M3oKEqdAlfnc+XLamgjkXd3FwbAUOAfi+rGlIek+Z euYoD1jLOVGz4W0EWtkJml5bznzZW58iBHBrvuVYSHEIzqcgkyuJQcf6zN5B7HuHN2DR NX+A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id x9si47705ywl.628.2018.02.22.07.28.58 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:28:58 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38994 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosnq-0001AT-0F for patch@linaro.org; Thu, 22 Feb 2018 10:28:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38315) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiX-0004ip-B0 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiW-0001bk-9L for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:29 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46592) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiW-0001b9-1x for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:28 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiV-00021n-4o for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:27 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:42 +0000 Message-Id: <20180222152307.7499-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 07/32] hw/sd/milkymist-memcard: expose a SDBus and connect the SDCard to it 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé using the sdbus_*() API. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Acked-by: Michael Walle Message-id: 20180216022933.10945-4-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/milkymist-memcard.c | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) -- 2.16.1 diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c index a8e65892c7..5570c1e9a0 100644 --- a/hw/sd/milkymist-memcard.c +++ b/hw/sd/milkymist-memcard.c @@ -69,7 +69,7 @@ struct MilkymistMemcardState { SysBusDevice parent_obj; MemoryRegion regs_region; - SDState *card; + SDBus sdbus; int command_write_ptr; int response_read_ptr; @@ -105,7 +105,7 @@ static void memcard_sd_command(MilkymistMemcardState *s) req.crc = s->command[5]; s->response[0] = req.cmd; - s->response_len = sd_do_command(s->card, &req, s->response+1); + s->response_len = sdbus_do_command(&s->sdbus, &req, s->response + 1); s->response_read_ptr = 0; if (s->response_len == 16) { @@ -150,10 +150,10 @@ static uint64_t memcard_read(void *opaque, hwaddr addr, r = 0xffffffff; } else { r = 0; - r |= sd_read_data(s->card) << 24; - r |= sd_read_data(s->card) << 16; - r |= sd_read_data(s->card) << 8; - r |= sd_read_data(s->card); + r |= sdbus_read_data(&s->sdbus) << 24; + r |= sdbus_read_data(&s->sdbus) << 16; + r |= sdbus_read_data(&s->sdbus) << 8; + r |= sdbus_read_data(&s->sdbus); } break; case R_CLK2XDIV: @@ -207,10 +207,10 @@ static void memcard_write(void *opaque, hwaddr addr, uint64_t value, if (!s->enabled) { break; } - sd_write_data(s->card, (value >> 24) & 0xff); - sd_write_data(s->card, (value >> 16) & 0xff); - sd_write_data(s->card, (value >> 8) & 0xff); - sd_write_data(s->card, value & 0xff); + sdbus_write_data(&s->sdbus, (value >> 24) & 0xff); + sdbus_write_data(&s->sdbus, (value >> 16) & 0xff); + sdbus_write_data(&s->sdbus, (value >> 8) & 0xff); + sdbus_write_data(&s->sdbus, value & 0xff); break; case R_ENABLE: s->regs[addr] = value; @@ -251,10 +251,6 @@ static void milkymist_memcard_reset(DeviceState *d) for (i = 0; i < R_MAX; i++) { s->regs[i] = 0; } - /* Since we're still using the legacy SD API the card is not plugged - * into any bus, and we must reset it manually. - */ - device_reset(DEVICE(s->card)); } static void milkymist_memcard_init(Object *obj) @@ -270,15 +266,23 @@ static void milkymist_memcard_init(Object *obj) static void milkymist_memcard_realize(DeviceState *dev, Error **errp) { MilkymistMemcardState *s = MILKYMIST_MEMCARD(dev); + DeviceState *carddev; BlockBackend *blk; DriveInfo *dinfo; + Error *err = NULL; + qbus_create_inplace(&s->sdbus, sizeof(s->sdbus), TYPE_SD_BUS, + dev, "sd-bus"); + + /* Create and plug in the sd card */ /* FIXME use a qdev drive property instead of drive_get_next() */ dinfo = drive_get_next(IF_SD); blk = dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; - s->card = sd_init(blk, false); - if (s->card == NULL) { - error_setg(errp, "failed to init SD card"); + carddev = qdev_create(&s->sdbus.qbus, TYPE_SD_CARD); + qdev_prop_set_drive(carddev, "drive", blk, &err); + object_property_set_bool(OBJECT(carddev), true, "realized", &err); + if (err) { + error_setg(errp, "failed to init SD card: %s", error_get_pretty(err)); return; } s->enabled = blk && blk_is_inserted(blk); From patchwork Thu Feb 22 15:22:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129270 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp722352lja; Thu, 22 Feb 2018 07:34:28 -0800 (PST) X-Google-Smtp-Source: AH8x226Ym3U6l/zskh3d2bqKtfpqw2duWr2EfYIyJc8sXX8w4D/GyFzlunSAHGMLFuGROnU7Iu8O X-Received: by 10.129.174.20 with SMTP id m20mr5099859ywh.401.1519313668541; Thu, 22 Feb 2018 07:34:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313668; cv=none; d=google.com; s=arc-20160816; b=XQIynTGRXwne8Ymdj1mSSKeD/+vvOo6upQo8pzrlhRVaUaaKZXoL98ogfmcyuaQi3a er756D4wg2Bm/F79nr7eoJ6b7ii49Ozp3GfIEeTvUTqMMyNRYrPVvT8P9bTknEghbRiZ s/dWrv5z6/n9perVPNRSFN56JhbLyVJsn0ijxnjkQ6Su+oqFTptM5dVW3ABQ1iiOyR5q Ql4gqaXDZMK05e4hr8iuLIxSFDuNVZTvbPqLz4KTk4bVZlbwzgdhdtMfxiIZVfbEXm0N HdRpwBJHQ0+SvlRYOInF3uW0vrsma2VikusvKi7soO4uWkxxvs9Oe7COo+cBDQrjdb3Z yXsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=0Yzvu4idyVYTbDEQ65H+XxgMQBMxzlBeiMcm/dL1cjU=; b=JxEYMaDMDjhGsctKkHYkO2KpVFknyOPyK2p/jH81ATPdRV4YPmH7876H7MdqB+3c7X hsMOxB+6s5Xqc71VS5u6ds9fBK4KODPZXFq3cDGF4PId1l+0WKBZBys5z9a+1MX3c9gN 5o0rmeyrO0fYJBGYEbOnWTiNaEezY1N/J1Wpm+dKmjgKQu/Z6JLPl/vFbuhb7Z7qteDY uTGWyORAn0kje/44JaT+YE4o5DHb5R9bNOGFbi3VH/Wdpo4v6e9Ewb3I1+VmcNd3h7fU wNV3w+7S6EXC3SICTiZ5PWleQi2NEu+ucFF4pvdB8MuZvUssoXtc8G3QdlXiM9mXzEfH QG/Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id m65si47144ywb.779.2018.02.22.07.34.28 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:34:28 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39019 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eost9-00050Y-UW for patch@linaro.org; Thu, 22 Feb 2018 10:34:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38341) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiY-0004jf-E5 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiX-0001cX-8n for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:30 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46594) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiX-0001bp-1a for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:29 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiW-000222-4D for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:28 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:43 +0000 Message-Id: <20180222152307.7499-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 08/32] hw/sd/ssi-sd: use the SDBus API, connect the SDCard to the 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé On reset the bus will reset the card, we can now drop the device_reset() call. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180216022933.10945-5-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/ssi-sd.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) -- 2.16.1 diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index f88f509e0a..ae04b6641b 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -47,7 +47,7 @@ typedef struct { int32_t arglen; int32_t response_pos; int32_t stopping; - SDState *sd; + SDBus sdbus; } ssi_sd_state; #define TYPE_SSI_SD "ssi-sd" @@ -100,7 +100,7 @@ static uint32_t ssi_sd_transfer(SSISlave *dev, uint32_t val) request.arg = (s->cmdarg[0] << 24) | (s->cmdarg[1] << 16) | (s->cmdarg[2] << 8) | s->cmdarg[3]; DPRINTF("CMD%d arg 0x%08x\n", s->cmd, request.arg); - s->arglen = sd_do_command(s->sd, &request, longresp); + s->arglen = sdbus_do_command(&s->sdbus, &request, longresp); if (s->arglen <= 0) { s->arglen = 1; s->response[0] = 4; @@ -177,7 +177,7 @@ static uint32_t ssi_sd_transfer(SSISlave *dev, uint32_t val) DPRINTF("Response 0x%02x\n", s->response[s->response_pos]); return s->response[s->response_pos++]; } - if (sd_data_ready(s->sd)) { + if (sdbus_data_ready(&s->sdbus)) { DPRINTF("Data read\n"); s->mode = SSI_SD_DATA_START; } else { @@ -190,8 +190,8 @@ static uint32_t ssi_sd_transfer(SSISlave *dev, uint32_t val) s->mode = SSI_SD_DATA_READ; return 0xfe; case SSI_SD_DATA_READ: - val = sd_read_data(s->sd); - if (!sd_data_ready(s->sd)) { + val = sdbus_read_data(&s->sdbus); + if (!sdbus_data_ready(&s->sdbus)) { DPRINTF("Data read end\n"); s->mode = SSI_SD_CMD; } @@ -242,13 +242,24 @@ static const VMStateDescription vmstate_ssi_sd = { static void ssi_sd_realize(SSISlave *d, Error **errp) { ssi_sd_state *s = FROM_SSI_SLAVE(ssi_sd_state, d); + DeviceState *carddev; DriveInfo *dinfo; + Error *err = NULL; + qbus_create_inplace(&s->sdbus, sizeof(s->sdbus), TYPE_SD_BUS, + DEVICE(d), "sd-bus"); + + /* Create and plug in the sd card */ /* FIXME use a qdev drive property instead of drive_get_next() */ dinfo = drive_get_next(IF_SD); - s->sd = sd_init(dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, true); - if (s->sd == NULL) { - error_setg(errp, "Device initialization failed."); + carddev = qdev_create(&s->sdbus.qbus, TYPE_SD_CARD); + if (dinfo) { + qdev_prop_set_drive(carddev, "drive", blk_by_legacy_dinfo(dinfo), &err); + } + object_property_set_bool(OBJECT(carddev), true, "spi", &err); + object_property_set_bool(OBJECT(carddev), true, "realized", &err); + if (err) { + error_setg(errp, "failed to init SD card: %s", error_get_pretty(err)); return; } } @@ -264,11 +275,6 @@ static void ssi_sd_reset(DeviceState *dev) s->arglen = 0; s->response_pos = 0; s->stopping = 0; - - /* Since we're still using the legacy SD API the card is not plugged - * into any bus, and we must reset it manually. - */ - device_reset(DEVICE(s->sd)); } static void ssi_sd_class_init(ObjectClass *klass, void *data) From patchwork Thu Feb 22 15:22:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129271 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp722807lja; Thu, 22 Feb 2018 07:34:55 -0800 (PST) X-Google-Smtp-Source: AH8x226hxB5hZiA4YIw1MzgsllK3AV2kd6e9bqJU7/yR/KBjT4DBRJb21+R3+VvA0BpRm7qZKfmg X-Received: by 2002:a25:2608:: with SMTP id m8-v6mr4947006ybm.97.1519313695608; Thu, 22 Feb 2018 07:34:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313695; cv=none; d=google.com; s=arc-20160816; b=vPSatBKScTTeYYMtIQoeDu4E85PpeAJeUoHPg+Wk+iSMq8lXmb8MLR35wEteDIpwUk iQmw10mhS4vqVg0WAwCPMLc/jjoa/nP/6S9o8zIHfX5WkgxFtb/SFH/dhRYEzhOozpgW LfGauIOsEMax6DrqZHLwgVmyO7mtCHajlhmZj7Xj6+XI5gwnPZpXe4gtmMeX30e0yjtk WMZhtoaush/WX5OtObxCtqQhrJu8vuwPHrvcrufXNnibWikkm60jwd261l5XdoUq5vrv eQ0D5ZRZXRpBlm7rMTPUC2ccRBeKQ81w/Bgnj09L+TflnzvHP2SkqksawRsXmfSxjN/q YuKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=YxhCBkn7ERrmJtFv6CQOggPUpAd+iJPQrPhsy+3tqyQ=; b=QD85IR7cE/09YceIQ2DguRSGfMOav53w3kFOJQwyQIcet1/YzooFxPx2t6agE9OTXN BrCT8c0RCCyHEEoaF2E8yisWUxjlBXWc5Lmu0xS2XVJZ5sR7p8+h1JXOJt+NNudssR00 Z+nMQ9UcJsiJrUSwaA9EYCsT25sdVoennPKMsH2K5z2ZHzo+sa5QijHOiTdWNLkAhX1Z kGnOYdO6Fj4baaCGmKOGFNBXZEQmUBxDX44bgxTbsmVBzg+y3PtYMadV9Nnnu1mMTeLe L7n2CJW50PpyVLjI8dOfs8lbZbaDQO8jq14xuvXuMy8rMwhSTia68591ReASI04vyHcE BdMg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id o128si51299ywf.227.2018.02.22.07.34.55 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:34:55 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39026 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosta-0006Hx-VU for patch@linaro.org; Thu, 22 Feb 2018 10:34:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38353) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiZ-0004kW-9D for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiY-0001dk-7c for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:31 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46596) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiY-0001cp-0c for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:30 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiX-00022G-4C for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:29 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:44 +0000 Message-Id: <20180222152307.7499-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 09/32] sdcard: reorder SDState struct members 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé place card registers first, this will ease further code movements. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215220540.6556-2-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 9ac9b63ff8..ce1f2fdf76 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -88,16 +88,21 @@ enum SDCardStates { struct SDState { DeviceState parent_obj; - uint32_t mode; /* current card mode, one of SDCardModes */ - int32_t state; /* current card state, one of SDCardStates */ + /* SD Memory Card Registers */ uint32_t ocr; - QEMUTimer *ocr_power_timer; uint8_t scr[8]; uint8_t cid[16]; uint8_t csd[16]; uint16_t rca; uint32_t card_status; uint8_t sd_status[64]; + + /* Configurable properties */ + BlockBackend *blk; + bool spi; + + uint32_t mode; /* current card mode, one of SDCardModes */ + int32_t state; /* current card state, one of SDCardStates */ uint32_t vhs; bool wp_switch; unsigned long *wp_groups; @@ -110,8 +115,6 @@ struct SDState { uint8_t pwd[16]; uint32_t pwd_len; uint8_t function_group[6]; - - bool spi; uint8_t current_cmd; /* True if we will handle the next command as an ACMD. Note that this does * *not* track the APP_CMD status bit! @@ -123,8 +126,7 @@ struct SDState { uint8_t data[512]; qemu_irq readonly_cb; qemu_irq inserted_cb; - BlockBackend *blk; - + QEMUTimer *ocr_power_timer; bool enable; uint8_t dat_lines; bool cmd_line; From patchwork Thu Feb 22 15:22:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129268 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp719691lja; Thu, 22 Feb 2018 07:31:51 -0800 (PST) X-Google-Smtp-Source: AH8x226s8Ax/+nmoF94k5thU9HLp0d2lxAX4EqFYxeWlYlkM5zqLcD0LSrehaDGoBLoqVzucvhi5 X-Received: by 10.129.145.202 with SMTP id i193mr5018694ywg.219.1519313511717; Thu, 22 Feb 2018 07:31:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313511; cv=none; d=google.com; s=arc-20160816; b=ZVOwE42rdwADGNwsiIhgWp0rUFb4VjnePZeFDwbQNQGnyyeh9YbBhNDNBQEo++L9la Q5D7se7rWV4SwIXIYR72uWPyyXPZAZs+B2/ej95TsE6ofXb/LrYlZ1+MxlsanCCtm5DW yDnPaDOBJxF+dXzI3SG5gghD5RTGpUM7Cj76Nl0vsQbh7unb/qRESdU8+xliZEc7OgVp lAvqR5mk4fYWlJsLlpF7aDrmKFhO3g8ZSS+XmnbwKFkJGQUczMryYsz9XPSE128VsxFa xRKkY0QnvDjU2DZGpMac1OCy5/3UomZ5EaAgLv9iQz7K7I7AEwJRXCeNg/61v3zGE8Fn uItg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=TfPQYA8dcL+8UtSsEUL5eC44O7JqjuZO5zo8Or9Ur6Q=; b=IdDNYW1kgahO5TvkI7KztA0jV+N8YtGwUsE4N+UW15/yxJExRhibeHZnC4pYPvO8yc EhI+jMNKSvsuRKaUnAA3oxebDMiF982PQhWpsb/sKMtCTVpLYZPfm2x17iAhnBdQeiH0 ewhRcnppi9y1OwkOkXIGg1xvIuC/BR/tfcH4wQaVHS8E3QXom9iRLxo2xdseSeHSuyvK BDT2v1xc3yyjonh9glUQEi5Hb5H0lbJ7fA+Ex8NxLouxx24oYovqgDjCkrJXCBq/lUdB +KGtkc2DPKevz3hol9WGdJD9x2czL4W9YvdPhzIb70HNBBCg/+MCPoruuoqD6T94rTPo F3wA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id t84si51457ywe.28.2018.02.22.07.31.49 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:31:51 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39012 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosqb-0003kX-Dq for patch@linaro.org; Thu, 22 Feb 2018 10:31:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38367) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosia-0004lv-Ht for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiZ-0001ef-9s for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:32 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46598) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiZ-0001dy-03 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:31 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiY-00022U-0q for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:30 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:45 +0000 Message-Id: <20180222152307.7499-11-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 10/32] sdcard: replace DPRINTF() by 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215220540.6556-3-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 32 ++++++++++++++++++++++++++------ hw/sd/trace-events | 6 ++++++ 2 files changed, 32 insertions(+), 6 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ce1f2fdf76..72e9b47e34 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -40,6 +40,7 @@ #include "qemu/error-report.h" #include "qemu/timer.h" #include "qemu/log.h" +#include "trace.h" //#define DEBUG_SD 1 @@ -132,6 +133,26 @@ struct SDState { bool cmd_line; }; +static const char *sd_state_name(enum SDCardStates state) +{ + static const char *state_name[] = { + [sd_idle_state] = "idle", + [sd_ready_state] = "ready", + [sd_identification_state] = "identification", + [sd_standby_state] = "standby", + [sd_transfer_state] = "transfer", + [sd_sendingdata_state] = "sendingdata", + [sd_receivingdata_state] = "receivingdata", + [sd_programming_state] = "programming", + [sd_disconnect_state] = "disconnect", + }; + if (state == sd_inactive_state) { + return "inactive"; + } + assert(state <= ARRAY_SIZE(state_name)); + return state_name[state]; +} + static uint8_t sd_get_dat_lines(SDState *sd) { return sd->enable ? sd->dat_lines : 0; @@ -776,6 +797,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, uint32_t rca = 0x0000; uint64_t addr = (sd->ocr & (1 << 30)) ? (uint64_t) req.arg << 9 : req.arg; + trace_sdcard_normal_command(req.cmd, req.arg, sd_state_name(sd->state)); + /* Not interpreting this as an app command */ sd->card_status &= ~APP_CMD; @@ -790,7 +813,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, sd->multi_blk_cnt = 0; } - DPRINTF("CMD%d 0x%08x state %d\n", req.cmd, req.arg, sd->state); switch (req.cmd) { /* Basic commands (Class 0 and Class 1) */ case 0: /* CMD0: GO_IDLE_STATE */ @@ -1310,8 +1332,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, return sd_r1; case 56: /* CMD56: GEN_CMD */ - fprintf(stderr, "SD: GEN_CMD 0x%08x\n", req.arg); - switch (sd->state) { case sd_transfer_state: sd->data_offset = 0; @@ -1345,7 +1365,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, static sd_rsp_type_t sd_app_command(SDState *sd, SDRequest req) { - DPRINTF("ACMD%d 0x%08x\n", req.cmd, req.arg); + trace_sdcard_app_command(req.cmd, req.arg); sd->card_status |= APP_CMD; switch (req.cmd) { case 6: /* ACMD6: SET_BUS_WIDTH */ @@ -1606,8 +1626,7 @@ send_response: static void sd_blk_read(SDState *sd, uint64_t addr, uint32_t len) { - DPRINTF("sd_blk_read: addr = 0x%08llx, len = %d\n", - (unsigned long long) addr, len); + trace_sdcard_read_block(addr, len); if (!sd->blk || blk_pread(sd->blk, addr, sd->data, len) < 0) { fprintf(stderr, "sd_blk_read: read error on host side\n"); } @@ -1615,6 +1634,7 @@ static void sd_blk_read(SDState *sd, uint64_t addr, uint32_t len) static void sd_blk_write(SDState *sd, uint64_t addr, uint32_t len) { + trace_sdcard_write_block(addr, len); if (!sd->blk || blk_pwrite(sd->blk, addr, sd->data, len, 0) < 0) { fprintf(stderr, "sd_blk_write: write error on host side\n"); } diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 0f8536db32..75dac5a2cd 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -23,6 +23,12 @@ sdhci_read_dataport(uint16_t data_count) "all %u bytes of data have been read fr 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/sd.c +sdcard_normal_command(uint8_t cmd, uint32_t arg, const char *state) "CMD%d arg 0x%08x (state %s)" +sdcard_app_command(uint8_t acmd, uint32_t arg) "ACMD%d arg 0x%08x" +sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x" +sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x" + # hw/sd/milkymist-memcard.c milkymist_memcard_memory_read(uint32_t addr, uint32_t value) "addr 0x%08x value 0x%08x" milkymist_memcard_memory_write(uint32_t addr, uint32_t value) "addr 0x%08x value 0x%08x" From patchwork Thu Feb 22 15:22:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129260 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2138063edc; Thu, 22 Feb 2018 07:26:53 -0800 (PST) X-Google-Smtp-Source: AH8x227lu75i7NKFAmlGWtaZhe0/wUbzkEpi44NOnRrV5Y6nwEhF+bZro5clqNWxp814scMAmt5i X-Received: by 2002:a25:aca2:: with SMTP id x34-v6mr4930510ybi.355.1519313213391; Thu, 22 Feb 2018 07:26:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313213; cv=none; d=google.com; s=arc-20160816; b=E7x0vWCULpBC9/9FKA5O00jJfL2m/qpzPpeLRuZYvTL9GWeY3w9kqu59a1sn3hod5W KfYUrIFq05GPYLzAvkAwTgTAf8OuxrCAzrF1QrSmD+DgMOebaTx14dceXjXa701B9wpA mSmfTxzsDOklr02/LMslwfvEwLma1w6mmiJMSKKMKK50VQuqRc9PVhYenEPc08zr//pw NcYF0b7+PQWkk6q/FLYqMtcl8eZcpUpsYXglzt/mCNmJo28oRkCWrIKqlJ3ltlw2cg3H IjFC5ebTLgfoCwwDX+nwk5qtK6ENgbsEmF7PVgxEUEOP8bu8y8K0wnNypFN2XmdNgLwl XQeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=nP4CEhAVWRax89V9okwKRozrWCwJjIV4jfGhLGj845E=; b=COdgtWbe11xwmo7+RCbnUu0P4YGdrk2sc9j31kYxr60QgtGW9J9kCoYYXoZQs5GUBM dZc+q9Gi9jLWqZluIi2wZbTyMnGAkFRjwiOcDv15imMfRs/tD7XbJlWqVkpsZkzjeYPG onejd7VmK1jcCKClUv/0jyCcOmDiUAn6TU6ZB7u5tyuFBK5w98UoERL9BXojaPQKYyuZ im2kQHQUv8hVgZ19dS7nEXRaABF3hKnUIJrKs8jqUUJJ/bYYTEFXzPtwXlC9Gmw8R+x0 DzO4n2KjRfFJPhR7pBPVQKSCRqRuTuo3Zy/lvyVCgYZsqbHKX8YHL4JRV+N7sHLSdKzC IDdg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id r5-v6si49511ybb.79.2018.02.22.07.26.53 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:26:53 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38980 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eoslo-0006sS-Pe for patch@linaro.org; Thu, 22 Feb 2018 10:26:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38377) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosib-0004my-7m for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosia-0001fQ-8p for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:33 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46598) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosia-0001dy-0i for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:32 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiY-00022i-RO for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:30 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:46 +0000 Message-Id: <20180222152307.7499-12-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 11/32] sdcard: add a trace event for command responses 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Message-id: 20180215220540.6556-4-f4bug@amsat.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/sd/sd.c | 27 ++++++++++++++++++++++++--- hw/sd/trace-events | 1 + 2 files changed, 25 insertions(+), 3 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 72e9b47e34..8f72cde534 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -153,6 +153,27 @@ static const char *sd_state_name(enum SDCardStates state) return state_name[state]; } +static const char *sd_response_name(sd_rsp_type_t rsp) +{ + static const char *response_name[] = { + [sd_r0] = "RESP#0 (no response)", + [sd_r1] = "RESP#1 (normal cmd)", + [sd_r2_i] = "RESP#2 (CID reg)", + [sd_r2_s] = "RESP#2 (CSD reg)", + [sd_r3] = "RESP#3 (OCR reg)", + [sd_r6] = "RESP#6 (RCA)", + [sd_r7] = "RESP#7 (operating voltage)", + }; + if (rsp == sd_illegal) { + return "ILLEGAL RESP"; + } + if (rsp == sd_r1b) { + rsp = sd_r1; + } + assert(rsp <= ARRAY_SIZE(response_name)); + return response_name[rsp]; +} + static uint8_t sd_get_dat_lines(SDState *sd) { return sd->enable ? sd->dat_lines : 0; @@ -1596,10 +1617,12 @@ send_response: case sd_r0: case sd_illegal: - default: rsplen = 0; break; + default: + g_assert_not_reached(); } + trace_sdcard_response(sd_response_name(rtype), rsplen); if (rtype != sd_illegal) { /* Clear the "clear on valid command" status bits now we've @@ -1616,8 +1639,6 @@ send_response: DPRINTF(" %02x", response[i]); } DPRINTF(" state %d\n", sd->state); - } else { - DPRINTF("No response %d\n", sd->state); } #endif diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 75dac5a2cd..b2aa19ec0d 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -26,6 +26,7 @@ sdhci_capareg(const char *desc, uint16_t val) "%s: %u" # hw/sd/sd.c sdcard_normal_command(uint8_t cmd, uint32_t arg, const char *state) "CMD%d arg 0x%08x (state %s)" sdcard_app_command(uint8_t acmd, uint32_t arg) "ACMD%d arg 0x%08x" +sdcard_response(const char *rspdesc, int rsplen) "%s (sz:%d)" sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x" sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x" From patchwork Thu Feb 22 15:22:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129284 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2158719edc; Thu, 22 Feb 2018 07:45:47 -0800 (PST) X-Google-Smtp-Source: AH8x227/tYSAESiRsAF3UEW3KElIqewqNmOoIEIvBvde5ztPXb8rPfO1yfqaN4ap7tE2UDekj5Yw X-Received: by 10.129.72.83 with SMTP id v80mr4071392ywa.153.1519314347359; Thu, 22 Feb 2018 07:45:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314347; cv=none; d=google.com; s=arc-20160816; b=DBHg/RyRRKGyc85B+pVnLc+q0G5mCrrK6d/clAUei2RRluZcI2B6hhNTUOM1sA3r1i g2wPdp/vLaJOkulzvT3Frjbu093qR8OSWSjQdzpOxYtrPD+T7AuLISEWJBB6yEMlQnb+ 1UDEV+JJfn5WgZsZXhGL0n3FCfNlWH3ZH6dvarjKUgrT3pjCrEEH//sRgf/8++de+cnu I3YbTUIqTX1JFOzq6Pp0bn6jeLY2wi+PvV1FbflBrqaMK/ekPVEEmc4Mo/IEh7FobPa5 M7XAOdTpvRbSMpW/VKGLggNVjvPqMqhTeP/507BxNN2K2EzOI669etfwPcx0Jy23XkOi FPNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=nzBkexvVwF5gk9zF3EzEz9cT+2v98SRY8nvDYEhMBKM=; b=ftlAFgFyJt4em298jmBDNCOfL6y3MaxxVOkLn1IvtUfChctf8EQX+Hds9gh0Tpsxt2 AdhJnaqn1+Ox/K0/kMYcDTQguO/p9ZxwxdWYV96tg2jiIc6sakR1+5VFpyPrQAzjXIOp 2HDXOuTK9DgU9mYfhI38DCpw5wSnxtKK8XzOVMN0vPnMJQbHpjRa/Oh1u4GPfyCejnCN oeAkAnXRKH9xzpyebGyA6uxBhvDMktokcZceUgqp5cc6NQVhG8sBWBFr/0Rd1PW6ZoEw QAsT9Y8TE9oz3CMGsO8kxJ+FUG9kbax81rfC1Es2WmBS294tCQtBVa0fLs4i70TXq62Y C4KA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id b3-v6si55034ybo.146.2018.02.22.07.45.47 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:45:47 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39083 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eot46-0006z7-Nk for patch@linaro.org; Thu, 22 Feb 2018 10:45:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38408) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosid-0004pQ-7i for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosia-0001fp-Qp for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:35 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46600) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosia-0001fC-JR for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:32 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiZ-00022z-Lk for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:31 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:47 +0000 Message-Id: <20180222152307.7499-13-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 12/32] sdcard: replace fprintf() by qemu_hexdump() 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215220540.6556-5-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 8f72cde534..ceab263970 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -44,13 +44,6 @@ //#define DEBUG_SD 1 -#ifdef DEBUG_SD -#define DPRINTF(fmt, ...) \ -do { fprintf(stderr, "SD: " fmt , ## __VA_ARGS__); } while (0) -#else -#define DPRINTF(fmt, ...) do {} while(0) -#endif - #define ACMD41_ENQUIRY_MASK 0x00ffffff #define OCR_POWER_UP 0x80000000 #define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ @@ -1632,14 +1625,7 @@ send_response: } #ifdef DEBUG_SD - if (rsplen) { - int i; - DPRINTF("Response:"); - for (i = 0; i < rsplen; i++) { - DPRINTF(" %02x", response[i]); - } - DPRINTF(" state %d\n", sd->state); - } + qemu_hexdump((const char *)response, stderr, "Response", rsplen); #endif return rsplen; From patchwork Thu Feb 22 15:22:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129278 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp728224lja; Thu, 22 Feb 2018 07:40:15 -0800 (PST) X-Google-Smtp-Source: AH8x224Alj+doOn72IJMfwRHGgjL/SKvc4bSCbxk8EmnqEIlHrrJmdHZDb4BfxMtCBkWgpHcgq7z X-Received: by 10.129.168.10 with SMTP id f10mr1323777ywh.486.1519314015129; Thu, 22 Feb 2018 07:40:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314015; cv=none; d=google.com; s=arc-20160816; b=Zbm4IEZ/gPycpSpEfYQds5gcMIRRAVHJEg6Y7DY+HyZtS4VmqeKvOn8YU7pOxKq+Bu 3N7fKvluflXPIb3miFwIijiqb/FTCx5ZVjlpOEQ3BOPEC/dTG8388tkTtRqEERBAx/z+ DQStX1CC4jMHMdqXOP8o5fBcqhN3xFGKuQ+xQFT4Wu5iH8F0utAbKg7ZUqxFiP64zuAI s7kx+pEvPALM7VU87OdVF4HzyLJ2gsLKKjO56uJF5St8BmMCZ4PPANS3CwiXA/5Sb2GU brDcu5/wZZBLSALNHBzeqGOzjaskG9JQq+hnwIdyGfA92SdW929SaqJqC9xkzFqhjgBP wRWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=A3669P4rw8GgqTc2fJGZnge81zgUSu50Qh9f+pjmROY=; b=i1QhALYQXmJvgh8+6Js3SxyErGUCaDNrrQbvw8VSlsQolJ6ojxjHVjKhgxnMRXQtij w1UWycvBKj4EmCtcXiyltapCDx4bIiKi0dEvxt/E3raJ4mgf5o6NAsXuZm/9zZ3Iwb8w LTaG02wLs5fSLsSTM4KHKwQWQzWImBCzjXzKaaW8M9ddLTqcExSUDJD19xCsoprH8Yxi X7jhLjydTrzRQviNlnFLe/9uR5YaXYpsaiAOtOG8BXbU0leQjpVwBvTQoTX54sMmI7a3 5ZW49xSD2vMJxqeqnzfjwllaxViyqhNo7fJu9FvEsVtFDF0wCAv2LmXiHLxY3fk38lWj Aujw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id v2si51770ywb.323.2018.02.22.07.40.14 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:40:15 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39051 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosyk-000206-CD for patch@linaro.org; Thu, 22 Feb 2018 10:40:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38406) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosid-0004pL-5B for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosib-0001gd-Pt for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:35 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46600) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosib-0001fC-Hd for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:33 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosia-00023D-Fk for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:32 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:48 +0000 Message-Id: <20180222152307.7499-14-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 13/32] sdcard: add more 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Acked-by: Alistair Francis Message-id: 20180215220540.6556-6-f4bug@amsat.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/sd/sd.c | 32 ++++++++++++++++++++++++++------ hw/sd/trace-events | 13 +++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ceab263970..564f7a9bfd 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -179,6 +179,8 @@ static bool sd_get_cmd_line(SDState *sd) static void sd_set_voltage(SDState *sd, uint16_t millivolts) { + trace_sdcard_set_voltage(millivolts); + switch (millivolts) { case 3001 ... 3600: /* SD_VOLTAGE_3_3V */ case 2001 ... 3000: /* SD_VOLTAGE_3_0V */ @@ -274,6 +276,7 @@ static void sd_ocr_powerup(void *opaque) { SDState *sd = opaque; + trace_sdcard_powerup(); /* Set powered up bit in OCR */ assert(!(sd->ocr & OCR_POWER_UP)); sd->ocr |= OCR_POWER_UP; @@ -477,6 +480,7 @@ static void sd_reset(DeviceState *dev) uint64_t size; uint64_t sect; + trace_sdcard_reset(); if (sd->blk) { blk_get_geometry(sd->blk, §); } else { @@ -530,7 +534,10 @@ static void sd_cardchange(void *opaque, bool load, Error **errp) bool readonly = sd_get_readonly(sd); if (inserted) { + trace_sdcard_inserted(readonly); sd_reset(dev); + } else { + trace_sdcard_ejected(); } /* The IRQ notification is for legacy non-QOM SD controller devices; @@ -662,6 +669,7 @@ static void sd_erase(SDState *sd) uint64_t erase_start = sd->erase_start; uint64_t erase_end = sd->erase_end; + trace_sdcard_erase(); if (!sd->erase_start || !sd->erase_end) { sd->card_status |= ERASE_SEQ_ERROR; return; @@ -751,6 +759,11 @@ static void sd_lock_command(SDState *sd) else pwd_len = 0; + if (lock) { + trace_sdcard_lock(); + } else { + trace_sdcard_unlock(); + } if (erase) { if (!(sd->card_status & CARD_IS_LOCKED) || sd->blk_len > 1 || set_pwd || clr_pwd || lock || sd->wp_switch || @@ -1077,10 +1090,12 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, case 16: /* CMD16: SET_BLOCKLEN */ switch (sd->state) { case sd_transfer_state: - if (req.arg > (1 << HWBLOCK_SHIFT)) + if (req.arg > (1 << HWBLOCK_SHIFT)) { sd->card_status |= BLOCK_LEN_ERROR; - else + } else { + trace_sdcard_set_blocklen(req.arg); sd->blk_len = req.arg; + } return sd_r1; @@ -1452,10 +1467,13 @@ static sd_rsp_type_t sd_app_command(SDState *sd, if ((req.arg & ACMD41_ENQUIRY_MASK) != 0) { timer_del(sd->ocr_power_timer); sd_ocr_powerup(sd); - } else if (!timer_pending(sd->ocr_power_timer)) { - timer_mod_ns(sd->ocr_power_timer, - (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - + OCR_POWER_DELAY_NS)); + } else { + trace_sdcard_inquiry_cmd41(); + if (!timer_pending(sd->ocr_power_timer)) { + timer_mod_ns(sd->ocr_power_timer, + (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + + OCR_POWER_DELAY_NS)); + } } } @@ -1668,6 +1686,7 @@ void sd_write_data(SDState *sd, uint8_t value) if (sd->card_status & (ADDRESS_ERROR | WP_VIOLATION)) return; + trace_sdcard_write_data(sd->current_cmd, value); switch (sd->current_cmd) { case 24: /* CMD24: WRITE_SINGLE_BLOCK */ sd->data[sd->data_offset ++] = value; @@ -1805,6 +1824,7 @@ uint8_t sd_read_data(SDState *sd) io_len = (sd->ocr & (1 << 30)) ? 512 : sd->blk_len; + trace_sdcard_read_data(sd->current_cmd, io_len); switch (sd->current_cmd) { case 6: /* CMD6: SWITCH_FUNCTION */ ret = sd->data[sd->data_offset ++]; diff --git a/hw/sd/trace-events b/hw/sd/trace-events index b2aa19ec0d..3040d32560 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -27,8 +27,21 @@ sdhci_capareg(const char *desc, uint16_t val) "%s: %u" sdcard_normal_command(uint8_t cmd, uint32_t arg, const char *state) "CMD%d arg 0x%08x (state %s)" sdcard_app_command(uint8_t acmd, uint32_t arg) "ACMD%d arg 0x%08x" sdcard_response(const char *rspdesc, int rsplen) "%s (sz:%d)" +sdcard_powerup(void) "" +sdcard_inquiry_cmd41(void) "" +sdcard_set_enable(bool current_state, bool new_state) "%u -> %u" +sdcard_reset(void) "" +sdcard_set_blocklen(uint16_t length) "0x%04x" +sdcard_inserted(bool readonly) "read_only: %u" +sdcard_ejected(void) "" +sdcard_erase(void) "" +sdcard_lock(void) "" +sdcard_unlock(void) "" sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x" sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x" +sdcard_write_data(uint8_t cmd, uint8_t value) "CMD%02d value 0x%02x" +sdcard_read_data(uint8_t cmd, int length) "CMD%02d len %d" +sdcard_set_voltage(uint16_t millivolts) "%u mV" # hw/sd/milkymist-memcard.c milkymist_memcard_memory_read(uint32_t addr, uint32_t value) "addr 0x%08x value 0x%08x" From patchwork Thu Feb 22 15:22:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129265 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2140560edc; Thu, 22 Feb 2018 07:29:10 -0800 (PST) X-Google-Smtp-Source: AH8x226fzMRpf8WJ9EU3Dn1D3Vss6VkEQu9mhb2i2UDXfLWNKxWYvsTiCpJVqXdnwsSZw/hvEMWd X-Received: by 2002:a25:6b0f:: with SMTP id g15-v6mr4957499ybc.222.1519313350584; Thu, 22 Feb 2018 07:29:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313350; cv=none; d=google.com; s=arc-20160816; b=aOEH0Yd/Xj66kqDJ1wAazDLEh2h3uEpaLVKZftqr1T7yqIygh79cqookl2yqsUlbhI wX3FkJ4tJVu8/CigIbb8gV1x7ZgoSN1s6etNF3ja83hjDpoZSLauY3hr4HscE5YE1m4u qGgiyOpV2JsmvEMiJmhIepuqmI6veo1tFsJh6yjX1T4D9ay6ilTS1U99V3dYm6kftPKG vTFqJBTlZc9W9hPoF3uNTmPRVs3xhclPQtT5ya7MlTJwP9hFMWNG69LQShDIB07Pp/WP 3jtlmqNBNGqyAbCM0ISmvfL7EJkkNdgaI3A8G7ZF2Q6XsQSSGGmmL0GEPF8OKJyE931u ya4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=Y+hrCXj8o6kF2wrqtZTTcNzJr8Qj65HAW6sXRHIMqq4=; b=lLo8bjSsecEmIvGf0khitLpMN3c64lVe7dXXtVCZDGgOrzVDqNKviksgVO9IlPK2nj B96S2HZxhCqei8uE8MU7ubwtG8kByBOHXrIIyRtKqtE3DA2YbTSMR6ssiNvk5NApbYH2 mEnG0mIvQxkIHa4IMzK8i7JKGtsYhuB7AOl+aGoPTj51+fACdJI7Etfb+q/os3eq+cif 1OKFEWPzqlIekGKy4F6x2cy3pP2DjgJPVldeu7gSJyKssFODqVRt+X+iJtFZPL++w/bh 9EUgN5Yg2uM7CQaT49F/aMtGq5sZsc8y45lmR8EF6rhS/drvkTPKjb4mOCMTEyaveVEJ XLgQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id p197-v6si46186yba.630.2018.02.22.07.29.10 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:29:10 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38999 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eoso1-0001Kh-7d for patch@linaro.org; Thu, 22 Feb 2018 10:29:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38427) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosie-0004qz-Mh for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosic-0001hF-EX for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:36 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46602) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosic-0001gY-6u for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:34 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosib-00023U-98 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:33 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:49 +0000 Message-Id: <20180222152307.7499-15-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 14/32] sdcard: define SDMMC_CMD_MAX instead of using the magic '64' 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215220540.6556-8-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sdmmc-internal.h | 15 +++++++++++++++ hw/sd/sd.c | 22 ++++++++++++++++------ 2 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 hw/sd/sdmmc-internal.h -- 2.16.1 diff --git a/hw/sd/sdmmc-internal.h b/hw/sd/sdmmc-internal.h new file mode 100644 index 0000000000..0e96cb0081 --- /dev/null +++ b/hw/sd/sdmmc-internal.h @@ -0,0 +1,15 @@ +/* + * SD/MMC cards common + * + * Copyright (c) 2018 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 + */ +#ifndef SD_INTERNAL_H +#define SD_INTERNAL_H + +#define SDMMC_CMD_MAX 64 + +#endif diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 564f7a9bfd..90d1e27ee7 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -40,6 +40,7 @@ #include "qemu/error-report.h" #include "qemu/timer.h" #include "qemu/log.h" +#include "sdmmc-internal.h" #include "trace.h" //#define DEBUG_SD 1 @@ -215,18 +216,21 @@ static void sd_set_mode(SDState *sd) } } -static const sd_cmd_type_t sd_cmd_type[64] = { +static const sd_cmd_type_t sd_cmd_type[SDMMC_CMD_MAX] = { sd_bc, sd_none, sd_bcr, sd_bcr, sd_none, sd_none, sd_none, sd_ac, sd_bcr, sd_ac, sd_ac, sd_adtc, sd_ac, sd_ac, sd_none, sd_ac, + /* 16 */ sd_ac, sd_adtc, sd_adtc, sd_none, sd_none, sd_none, sd_none, sd_none, sd_adtc, sd_adtc, sd_adtc, sd_adtc, sd_ac, sd_ac, sd_adtc, sd_none, + /* 32 */ sd_ac, sd_ac, sd_none, sd_none, sd_none, sd_none, sd_ac, sd_none, sd_none, sd_none, sd_bc, sd_none, sd_none, sd_none, sd_none, sd_none, + /* 48 */ sd_none, sd_none, sd_none, sd_none, sd_none, sd_none, sd_none, sd_ac, sd_adtc, sd_none, sd_none, sd_none, sd_none, sd_none, sd_none, sd_none, }; -static const int sd_cmd_class[64] = { +static const int sd_cmd_class[SDMMC_CMD_MAX] = { 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 6, 6, 6, 6, 5, 5, 10, 10, 10, 10, 5, 9, 9, 9, 7, 7, 7, 7, 7, 7, @@ -829,8 +833,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, /* Not interpreting this as an app command */ sd->card_status &= ~APP_CMD; - if (sd_cmd_type[req.cmd & 0x3F] == sd_ac - || sd_cmd_type[req.cmd & 0x3F] == sd_adtc) { + if (sd_cmd_type[req.cmd] == sd_ac + || sd_cmd_type[req.cmd] == sd_adtc) { rca = req.arg >> 16; } @@ -1542,8 +1546,8 @@ static int cmd_valid_while_locked(SDState *sd, SDRequest *req) if (req->cmd == 16 || req->cmd == 55) { return 1; } - return sd_cmd_class[req->cmd & 0x3F] == 0 - || sd_cmd_class[req->cmd & 0x3F] == 7; + return sd_cmd_class[req->cmd] == 0 + || sd_cmd_class[req->cmd] == 7; } int sd_do_command(SDState *sd, SDRequest *req, @@ -1562,6 +1566,12 @@ int sd_do_command(SDState *sd, SDRequest *req, goto send_response; } + if (req->cmd >= SDMMC_CMD_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "SD: incorrect command 0x%02x\n", + req->cmd); + req->cmd &= 0x3f; + } + if (sd->card_status & CARD_IS_LOCKED) { if (!cmd_valid_while_locked(sd, req)) { sd->card_status |= ILLEGAL_COMMAND; From patchwork Thu Feb 22 15:22:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129286 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2159312edc; Thu, 22 Feb 2018 07:46:18 -0800 (PST) X-Google-Smtp-Source: AH8x2279T/oP7h3pzT9WTvavG1tYN0Yzm2Mkk8kXydkAT2ksmswvmg8TTNy3VOG/huca1ODvl+Cj X-Received: by 2002:a25:824e:: with SMTP id d14-v6mr5052543ybn.246.1519314378525; Thu, 22 Feb 2018 07:46:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314378; cv=none; d=google.com; s=arc-20160816; b=fMAQ+O90XknS2b7fJtpIWeBqSgVOk3dN/P+dlL5AogWa7YBfcvz0N5LKEN4D3bJkio r+4wibc0uPjnWuWq9KD+jOgAS6sDSQS3KKyYTsQYK2oRWdlOBpR+OzSYU9KRwq0hcjxS CvIKNG6CnJkKT5XX0AAiW5CfNHOR5sSIqzw1lkd9tcHu4XB8jnnz085yl657vjPk+m7K UITRcLbishrLGHx1xC9hZfP3AYt3rZIXi3Qr42Zqb3g2q8IPgl/bpyskN1tfeC5v1fSJ S5scFLN1Xs0lkdz/PHfkrpMraPb8eb1QHBXcyv0l8k5baC9osUAXvrQVzqkM7WbGrwYI +rbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=c47ACkCnKO69WWeo9Up2RfVukuDAUjjqDw8T1nsE5+g=; b=QVUkk/29gOzO+uVh0qCymil2U3xT82YkVdNA0JmDHovI9d3xvmE4jtVW9w/bAZf+SP Vhps3jzUQ1HFXIAJ1LwJKYSew1ZwUPFITVkiQ2xaVoR2RAxAWgqLKhwCs90+gLsa6E1t j0D4tP4zRL3fTUePbjDOJpOJmU4MrQtCBS/0RM7DhSzMXPpbwj1Cpg6w/wcKAFs2d9xV MOw42Z36q+8afyCRlKOTkXuxB94tL9dy6FFsnIwG3aNPJqdv5a/3h3B173vYdtwFKNGP XPXggP4I4RkTnbRE5qNYGngQ/AUT4VpMqJlbZiHqTe0u/MYCjpl4wlqexmHSq73uS0hI DqDg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 63si55686ywb.21.2018.02.22.07.46.18 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:46:18 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39101 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eot4b-0008KU-CL for patch@linaro.org; Thu, 22 Feb 2018 10:46:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38483) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosih-0004ur-UX for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosid-0001iG-DM for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:39 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46604) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosid-0001hW-6e for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:35 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosic-00023i-8x for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:34 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:50 +0000 Message-Id: <20180222152307.7499-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 15/32] sdcard: use G_BYTE from cutils 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé code is now easier to read. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215220540.6556-11-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 90d1e27ee7..b3698e34ad 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -36,6 +36,7 @@ #include "hw/sd/sd.h" #include "qapi/error.h" #include "qemu/bitmap.h" +#include "qemu/cutils.h" #include "hw/qdev-properties.h" #include "qemu/error-report.h" #include "qemu/timer.h" @@ -343,7 +344,7 @@ static void sd_set_csd(SDState *sd, uint64_t size) uint32_t sectsize = (1 << (SECTOR_SHIFT + 1)) - 1; uint32_t wpsize = (1 << (WPGROUP_SHIFT + 1)) - 1; - if (size <= 0x40000000) { /* Standard Capacity SD */ + if (size <= 1 * G_BYTE) { /* Standard Capacity SD */ sd->csd[0] = 0x00; /* CSD structure */ sd->csd[1] = 0x26; /* Data read access-time-1 */ sd->csd[2] = 0x00; /* Data read access-time-2 */ From patchwork Thu Feb 22 15:22:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129279 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp728257lja; Thu, 22 Feb 2018 07:40:17 -0800 (PST) X-Google-Smtp-Source: AH8x227qIFxuxGoK+BXxHNwnG2LUjzkpYXqSZVMfJ4+42Q+se+jAGn7ntta/PIrC12c7FC1Ya2fK X-Received: by 2002:a25:e6d4:: with SMTP id d203-v6mr5146251ybh.519.1519314017741; Thu, 22 Feb 2018 07:40:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314017; cv=none; d=google.com; s=arc-20160816; b=cQgCkI72AWu2dwS2rdYNDf1v6keUbXpycve5gmC/AyxWl8axbjRrlKYXItwfGnE192 SNM0jeAMxiKTOQYKuuM5PrTZMU9dkUSRzkvI0t79ajZFkgYIaOzbXrckowOWwwUkjKd3 PqoseUU1ifteG78YiUZ/YY4zE7DtTBTUzFVAo1yzlje0Hdqm0tn3e7VO5UYmm4x3ax+r R0eHvf/8n9YfIr5qqI5OJs8vcI8qaPTe59SVneDizNMhXzhrNF9fFDJqNanoaxMndPvP ZdfKPw74vSR30YbDuBnL4ydHSfO40NQ3ZNyJVukmGPLa/JneJOFo7VRLWf1/KW5EEwYm zcuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=pNKUdSSDhpPcloa/Vg2Doc+bDEotm7szwLMHEfCZPGs=; b=Mq91emy/VUmJXI1aS+BGVfaj75QSftv9kBHLK3N3GptcdDznDAbRg5nXTVnGt+kd+Z I6BnU2qKdrHDEPYppIV42vnqJ+9NSeb8QUuoz7Df6NYGisjuhNUadgtxybL0OBsEunDx FuSa/Yug7Edg5GPCWNYx2vN2cqUZUGDk8nSUeXbs3uU7aBrCX0fBSYhbYjt2av7GZJj/ eMtVtyWJZrkpbovmTM4WZaC9+8R7Jn0JoIqIRDVII+UgSGRPexg4hboIqfXO2I1lV/LD 0xFr/uqvJ5dtwBMuQdetjLb4yLe9hO/qmrnl1WIR8BUR9qW9Skng7i871dx0X1rK5lrb AkZw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 133-v6si49766ybw.121.2018.02.22.07.40.17 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:40:17 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39052 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosym-00023k-Sm for patch@linaro.org; Thu, 22 Feb 2018 10:40:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38446) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosif-0004s6-Ic for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosie-0001jL-C5 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:37 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46604) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosie-0001hW-43 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:36 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosid-00023w-10 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:35 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:51 +0000 Message-Id: <20180222152307.7499-17-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 16/32] sdcard: use the registerfields API to access the OCR 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215220540.6556-12-f4bug@amsat.org Signed-off-by: Peter Maydell --- include/hw/sd/sd.h | 1 - hw/sd/sd.c | 21 +++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) -- 2.16.1 diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index bf1eb0713c..9bdb3c9285 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -53,7 +53,6 @@ #define READY_FOR_DATA (1 << 8) #define APP_CMD (1 << 5) #define AKE_SEQ_ERROR (1 << 3) -#define OCR_CCS_BITN 30 typedef enum { SD_VOLTAGE_0_4V = 400, /* currently not supported */ diff --git a/hw/sd/sd.c b/hw/sd/sd.c index b3698e34ad..706cb52668 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -32,6 +32,7 @@ #include "qemu/osdep.h" #include "hw/qdev.h" #include "hw/hw.h" +#include "hw/registerfields.h" #include "sysemu/block-backend.h" #include "hw/sd/sd.h" #include "qapi/error.h" @@ -47,8 +48,6 @@ //#define DEBUG_SD 1 #define ACMD41_ENQUIRY_MASK 0x00ffffff -#define OCR_POWER_UP 0x80000000 -#define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ typedef enum { sd_r0 = 0, /* no response */ @@ -271,6 +270,11 @@ static uint16_t sd_crc16(void *message, size_t width) return shift_reg; } +#define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ + +FIELD(OCR, CARD_CAPACITY, 30, 1) /* 0:SDSC, 1:SDHC/SDXC */ +FIELD(OCR, CARD_POWER_UP, 31, 1) + static void sd_set_ocr(SDState *sd) { /* All voltages OK, Standard Capacity SD Memory Card, not yet powered up */ @@ -282,9 +286,10 @@ static void sd_ocr_powerup(void *opaque) SDState *sd = opaque; trace_sdcard_powerup(); - /* Set powered up bit in OCR */ - assert(!(sd->ocr & OCR_POWER_UP)); - sd->ocr |= OCR_POWER_UP; + assert(!FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP)); + + /* card power-up OK */ + sd->ocr = FIELD_DP32(sd->ocr, OCR, CARD_POWER_UP, 1); } static void sd_set_scr(SDState *sd) @@ -570,7 +575,7 @@ static bool sd_ocr_vmstate_needed(void *opaque) SDState *sd = opaque; /* Include the OCR state (and timer) if it is not yet powered up */ - return !(sd->ocr & OCR_POWER_UP); + return !FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP); } static const VMStateDescription sd_ocr_vmstate = { @@ -680,7 +685,7 @@ static void sd_erase(SDState *sd) return; } - if (extract32(sd->ocr, OCR_CCS_BITN, 1)) { + if (FIELD_EX32(sd->ocr, OCR, CARD_CAPACITY)) { /* High capacity memory card: erase units are 512 byte blocks */ erase_start *= 512; erase_end *= 512; @@ -1468,7 +1473,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd, * UEFI, which sends an initial enquiry ACMD41, but * assumes that the card is in ready state as soon as it * sees the power up bit set. */ - if (!(sd->ocr & OCR_POWER_UP)) { + if (!FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP)) { if ((req.arg & ACMD41_ENQUIRY_MASK) != 0) { timer_del(sd->ocr_power_timer); sd_ocr_powerup(sd); From patchwork Thu Feb 22 15:22:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129280 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp728771lja; Thu, 22 Feb 2018 07:40:48 -0800 (PST) X-Google-Smtp-Source: AH8x226cKDBx77q86X9WKgxDTsGTml4MW/EH/OZ8qIqaF0wweNgAGzOJtSD2fZ9eWhevm1p1Whpv X-Received: by 10.13.232.21 with SMTP id r21mr5151601ywe.395.1519314048274; Thu, 22 Feb 2018 07:40:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314048; cv=none; d=google.com; s=arc-20160816; b=U0eDikQzArBfGMu4XT0CwauZqFsDQ2s6I+/7bD8xEgt5zojG1nFCfdE7YDI58SxXDd lb9FVUgJHibmmlf7ovoakDTg8bkzyvCqPeK7LCmzq7eEz4TfpHTK1YOEN0PHPo3SiK+0 RFVf6UNy4G/2uecYI3Ii5qjHcxPwu+/VvUkeC78JTNg6murLMZwdjk9C2H8uSmP3w+8q tlYVmUTAdEx+utK0fxapRue3gda/3chPlNl6rctcI9EX8xvyERgpZHkiXQzPOsqNTJ6h gSBBMEfd0MrKjv34zlNlBD3QiY0icA2+BCvSyX/LP7Rgc1q7JiH2AKhiHJFFHvW//HQg iymA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=0gUEcE41n7dWOGmgmDxH8Ts6hGHhAfx/49KpA2kuH00=; b=erKg8XJWyJH/Muc5P9MmYZQi7XUnyHHMaQ62BnQpTg/3S3DnJNUYviDeC6FbeDcdau sguym7fHssCxrp/sJKtDG3rUX99y7jtDxqODuHWZCOlYSIDtXHV9A3258fNqEjuxEHk8 q7uP9+swt5itXRTCih8PSStK2VpTubdKvbdEcbhq80uV1Hw2Eqd+EqG4ZbBgFGqBAEWA eZ88dkzkKPwJ3/HLbE3h38vTnsK//nMlK+HogLWjfhvPb0AV+KV/RAKRQqZjSVjD40XY cJuGYyLW5gsb1oFQo6VN3cX259Ulm1IovfLEHY8lWttYsSrtmSd4EdKl1vVAKcUEeviu L8/Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id b4-v6si53566yba.100.2018.02.22.07.40.45 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:40:48 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39060 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eoszE-0003HS-Lw for patch@linaro.org; Thu, 22 Feb 2018 10:40:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38451) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosif-0004sU-Q5 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosie-0001k4-T8 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:37 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46606) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosie-0001ix-Mc for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:36 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosid-00024C-O4 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:35 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:52 +0000 Message-Id: <20180222152307.7499-18-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 17/32] sdcard: Don't always set the high capacity bit 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Don't set the high capacity bit by default as it will be set if required in the sd_set_csd() function. [based on a patch from Alistair Francis and Peter Ogden from qemu/xilinx tag xilinx-v2015.4] Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-2-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 706cb52668..cc347ff782 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -290,6 +290,10 @@ static void sd_ocr_powerup(void *opaque) /* card power-up OK */ sd->ocr = FIELD_DP32(sd->ocr, OCR, CARD_POWER_UP, 1); + + if (sd->size > 1 * G_BYTE) { + sd->ocr = FIELD_DP32(sd->ocr, OCR, CARD_CAPACITY, 1); + } } static void sd_set_scr(SDState *sd) @@ -394,7 +398,6 @@ static void sd_set_csd(SDState *sd, uint64_t size) sd->csd[13] = 0x40; sd->csd[14] = 0x00; sd->csd[15] = 0x00; - sd->ocr |= 1 << 30; /* High Capacity SD Memory Card */ } } From patchwork Thu Feb 22 15:22:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129287 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2162521edc; Thu, 22 Feb 2018 07:49:29 -0800 (PST) X-Google-Smtp-Source: AH8x225+I6UZ1fHYHWqsogDpLLiyQA77RF+4/xVkvGKkTyX7n7LchZS734yMnEMxGDzTkSCJkZKw X-Received: by 2002:a25:ad04:: with SMTP id y4-v6mr5058901ybi.168.1519314569478; Thu, 22 Feb 2018 07:49:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314569; cv=none; d=google.com; s=arc-20160816; b=Wi7pXwdB02ZEd1iD1tjXl2ORL4L+iU8yX63rqBFXeHlggPHolxkXqaIhXjTOj3MJUW 5ZainI+qp4qFRvhl5gij2ygAqokW5DjjaatyInYo60gj6k49MRT+e8oSJg3nsDshPF5c tD9PjVtnApcMzIchyA1NMet1B5leRzweebahxdbr7dVMtcDNwMarSILx7TG2d1rM97mI hI0RqRYUVKE890NdoMtU4GKBDztFaLmH/bZ0hq0Oi9HuD+TqNGt+8HrSM/15wTCQNeq7 8HMUbDZLoRqRJdR8Ti8XyjgoY7c8xB3CGgrun9Azx4EEkxTNR5JlLt6NgT8COSdsLV1w hM0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=TUjM8ZnvwDcsRSzuWL/1OlFiFCuFGx63G95WPryDhfw=; b=NhfpAfD90I+dWQDnuG3LIQ11TPL/lrc2TBEnjo4tWFuFU1vXnkWW4flE6OipZxqxmU KR44sJdC+ReIl4vaYe6i5NU0dbsR4j0SO9msSlTuvMtdGUpvn81LJ2Nsmt8jHMNuy3nn zdNNWyJxnSm2ukxmbHBYJCJiNVTfwWkuqgVkeoZNL4JFP+bBzJPFHokethMHlLx1JgbG oi2o3YBNokd12j3O9Jc9Dv6ifPJVtot2Zlu6NKGH3Qy2ngVRsjHKmjQaIki3J+IcT+Dy PjqiMxRYvURDQBeQie2CSxTl3ngrBdv1IuuMNfoXtNriWRfhhaseRf1TDZdCbYlr3IXM Osgw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id f8-v6si52492ybk.590.2018.02.22.07.49.29 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:49:29 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39121 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eot7g-0002Oz-Td for patch@linaro.org; Thu, 22 Feb 2018 10:49:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38517) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosij-0004xN-UR for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosif-0001kw-QA for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:41 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46606) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosif-0001ix-IX for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:37 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosie-00024R-G7 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:36 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:53 +0000 Message-Id: <20180222152307.7499-19-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 18/32] sdcard: update the CSD CRC register regardless the CSD structure 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-3-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index cc347ff782..110f2f1d0a 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -378,7 +378,6 @@ static void sd_set_csd(SDState *sd, uint64_t size) sd->csd[13] = 0x20 | /* Max. write data block length */ ((HWBLOCK_SHIFT << 6) & 0xc0); sd->csd[14] = 0x00; /* File format group */ - sd->csd[15] = (sd_crc7(sd->csd, 15) << 1) | 1; } else { /* SDHC */ size /= 512 * 1024; size -= 1; @@ -397,8 +396,8 @@ static void sd_set_csd(SDState *sd, uint64_t size) sd->csd[12] = 0x0a; sd->csd[13] = 0x40; sd->csd[14] = 0x00; - sd->csd[15] = 0x00; } + sd->csd[15] = (sd_crc7(sd->csd, 15) << 1) | 1; } static void sd_set_rca(SDState *sd) From patchwork Thu Feb 22 15:22:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129275 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp725468lja; Thu, 22 Feb 2018 07:37:24 -0800 (PST) X-Google-Smtp-Source: AH8x224CTkDb4V/HoGbQk//dw3iCIpXVU4A4bqydZ8asur79KSDgzT5mw0drhzox1S7gEXddh1A8 X-Received: by 10.129.68.18 with SMTP id r18mr2250976ywa.184.1519313844215; Thu, 22 Feb 2018 07:37:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313844; cv=none; d=google.com; s=arc-20160816; b=P3863LDorMeILpdw7qe7vItMZYX68r3w47XJEVHHZfG0vXlLBTePs2T8OdXbXGm50N jzSTA09nZ98FW8T9oidVJkY6rfH0R7cG7eKSUv16Gyb+zQM/IQIZYv6Kn/nYEOIxvzgj 1Fd7NtAwsd2zXuLc3wALdHroww7YQIfDKQEtOOXf8z5mvQOr1ekCuIwZQhV0R/DQaZRz lJtJujq7hmsPkBy08nlQAzmSy3AUpmkj8I3c7MwTjJMGb/OOIUQOgsHjkaeF7/ylpSll KwAmhClmmQofSABmceejoNtOq+KCogu941dF5knd1UsFlxmAcRbesP6eFE/w1+hY52Rr eXRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=CoilRR8C8kGm2vlP2eMciAj36YNUsjBFZLi2MmDwV3I=; b=TmMnC/h1lyJN/QnR/+ezhfCSVuOpyO1HJlVUvg0Mb5nCuzgfdJAfjAGqaJWHdMVkXV VHLSPZpdve7O0l5+opOio0T98r6JmYeKcgjs2I8C4oKVf0RkDItW/czP1qnSIA4FKgl8 HiYMYNz3d/tDiAmmqPoFev1zhPjyz5tlO1m4yTFPlvpi3WQZEkdLd9tajzCnr4GN6+za +wHtMG5JrN39k6t37L3Dr722v4kvL3jVjVT3tn+si8x87TESR0gJp6DuYtzZCy698vCJ rUA2Tj1m3P/LqQlX5Bf+sB/R8yst0/Ih3IzRt3Veyw3z/C8Gj8IMnMG+vCIUft+1gb5l Vorw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id s24si49206ywa.746.2018.02.22.07.37.24 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:37:24 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39039 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosvz-0007dZ-Gl for patch@linaro.org; Thu, 22 Feb 2018 10:37:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38468) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosih-0004u2-6p for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosig-0001lJ-Ap for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:39 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46608) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosig-0001ke-3U for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:38 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosif-00024i-6E for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:37 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:54 +0000 Message-Id: <20180222152307.7499-20-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 19/32] sdcard: fix the 'maximum data transfer rate' to 25MHz 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé To comply with Spec v1.10 (and 2.00, 3.01): . TRAN_SPEED for current SD Memory Cards that field must be always 0_0110_010b (032h) which is equal to 25MHz - the mandatory maximum operating frequency of SD Memory Card. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-4-f4bug@amsat.org [PMM: fixed comment indent] Signed-off-by: Peter Maydell --- hw/sd/sd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 110f2f1d0a..3526269dbe 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -357,7 +357,7 @@ static void sd_set_csd(SDState *sd, uint64_t size) sd->csd[0] = 0x00; /* CSD structure */ sd->csd[1] = 0x26; /* Data read access-time-1 */ sd->csd[2] = 0x00; /* Data read access-time-2 */ - sd->csd[3] = 0x5a; /* Max. data transfer rate */ + sd->csd[3] = 0x32; /* Max. data transfer rate: 25 MHz */ sd->csd[4] = 0x5f; /* Card Command Classes */ sd->csd[5] = 0x50 | /* Max. read data block length */ HWBLOCK_SHIFT; From patchwork Thu Feb 22 15:22:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129269 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp719935lja; Thu, 22 Feb 2018 07:32:05 -0800 (PST) X-Google-Smtp-Source: AH8x226uLSrk/Vh1jAUO7fYm0I+7wsuOaCzfdJUxA4GApXCyuhnkxuy5z86EUinpHQ2kyixVmjEq X-Received: by 2002:a25:3f83:: with SMTP id m125-v6mr5073405yba.120.1519313525807; Thu, 22 Feb 2018 07:32:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313525; cv=none; d=google.com; s=arc-20160816; b=z2GpC3z1rMVg/IVvvM6VtKoDoD96Iu75L6bX+xjORSneFMomEHlW5kxcnDcVOzQmlR TCLAQWxzURJ/o19vX8csLkKd8H9yBbQi2HGL9tiPOM5I8Z+Ik5aWtEwe482Id7rcqDMF Wc0erDdzHTCgdkhMRl06R9ABcr7A8wLrTIjWdMS4cn4ydqhkxsblqo5dwcHyKCQPkgRG o3PzPRIfBQ/iOK5D9noYobvWrBS13B1imCUWVetRjc6sCPdAa6V8LzQqAVR+nY+UFzzc T1hnFVkuamWEZa1AweonjhGpGGKYx5SJ8jxXKv1ZvpqBTYcM7O4xrMtuLoj6Hkx0KDMM 7P+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=A89AQfbHyoBzp+V3420MSyqOhisCuiyboatRIQpTlD4=; b=cgE85IrKjRdcI+udnUwSz41PUh2iuktC5/n/KCjGqjOJ4qHMiCRozhaAReaVwJIqub sY0EQ7bBWx9Xiq2M5gf9k8dAX9OzVwlnzcyVzyM8Vm2jNhzzR4jxemKm2/JOHCdaPPnT fCK4SHtn5Ph1K3WoAATgLscZRNxwHdyWFHFW/EdfLpsqXun6XSDcCURjl3C6Z1HeyqvH U+ZM2vxyS+U5U+XfRqw3LdlVCvnbyjcGvdDSPYETLMN2SbuD6XElTzuZiJP3ic13lABw 5t8RSzNg0BmHLCRFMe2rpg1j7sldaCxEnLWqDaEJXAd3NfZRlgIFORsxvLQRdBbx1txd OvGA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id z204si48289ywb.573.2018.02.22.07.32.05 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:32:05 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39016 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosqr-0003wt-55 for patch@linaro.org; Thu, 22 Feb 2018 10:32:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38485) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosii-0004v7-6d for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosih-0001mO-7U for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:40 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46608) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosih-0001ke-0P for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:39 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosif-00024x-TU for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:37 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:55 +0000 Message-Id: <20180222152307.7499-21-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 20/32] sdcard: clean the SCR register and add few comments 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-5-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 3526269dbe..c87142d648 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -298,10 +298,13 @@ static void sd_ocr_powerup(void *opaque) static void sd_set_scr(SDState *sd) { - sd->scr[0] = 0x00; /* SCR Structure */ - sd->scr[1] = 0x2f; /* SD Security Support */ - sd->scr[2] = 0x00; + sd->scr[0] = (0 << 4) /* SCR version 1.0 */ + | 0; /* Spec Versions 1.0 and 1.01 */ + sd->scr[1] = (2 << 4) /* SDSC Card (Security Version 1.01) */ + | 0b0101; /* 1-bit or 4-bit width bus modes */ + sd->scr[2] = 0x00; /* Extended Security is not supported. */ sd->scr[3] = 0x00; + /* reserved for manufacturer usage */ sd->scr[4] = 0x00; sd->scr[5] = 0x00; sd->scr[6] = 0x00; From patchwork Thu Feb 22 15:22:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129266 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2142020edc; Thu, 22 Feb 2018 07:30:29 -0800 (PST) X-Google-Smtp-Source: AH8x225P4r8c4j8qhqyfKfNbh3AjoWeu4FitE9YTn014svHmYzuDxlgGlUGU5IKjUDA6uBczpMkl X-Received: by 2002:a25:2e4f:: with SMTP id b15-v6mr4953571ybn.42.1519313429646; Thu, 22 Feb 2018 07:30:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313429; cv=none; d=google.com; s=arc-20160816; b=I7uyyacKGy0c5kX3S83nhZyhV70sF2MKsegJW+mp45GTOlqYkx5DhejjktstypBAkg 1ou/TvtZzrd3YyXQYH9wpT9JvYMpHoMnCyob9Me03unzsO+e9rh8qI5PJ8BE9zxFxVrV riKNllTpxpb4Dl2VdULdqXUThY/g3lziojOwPyc/jJnGgDnNTxOEAyZ8wigZLHRA7U7N Uv9nwxX8+hg3R6AQKDTuez8MKmVRtIgrxHWtKaYRSYT8UkILW6mEJQTICrvwo/Tv8s3y YYdGxjVHBWAZIrpn2sajygzadyY9s511AKwPDutdKZsszM+i5i0SuLH8kVBAGhMvnwxE TUCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=vWYi/cKf1p5MfiBKhDja4N6qY4qXyCIcuPWectkvEqk=; b=pzkDUuaDKSEXM5O4E1igTJHVzOICzf/Q0c690eaXVBQHPsE+XARAxms32KdzI4TqTK Th20i9HP2MbTVdU1VvWIBr49iFeB2uCuz6/dBNFkwsnAnRyUIsuzkI0u4tI2Kvu7zuNy Qd848IG1otFZc0mLPzta9AwnIEvE5hO5eYhJkLmHMa2VNN0b6AzVGlcQ1XvyCL3Na6IN 2DcLLAtbgZXmLDY+2ht39y09T0gyAn5aM4hb6Y9WVFH9DayowiPrUGq0iCWZvaKx8IDn RNzDV5spf1t/LbTP38ovJhQ7X/nnk9sazeMHBh+DzdQTfbJj/X2gzWCD9kmxc4kvcXfb qa7g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id n74-v6si47765ybg.466.2018.02.22.07.30.29 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:30:29 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39000 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eospI-0001m8-VG for patch@linaro.org; Thu, 22 Feb 2018 10:30:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38502) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosij-0004wE-30 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosih-0001mz-Oh for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:41 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46610) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosih-0001ls-Hb for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:39 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosig-00025D-K1 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:38 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:56 +0000 Message-Id: <20180222152307.7499-22-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 21/32] sdcard: remove commands from unsupported old MMC specification 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé This device does not model MMCA Specification previous to v4.2 Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-6-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 33 --------------------------------- 1 file changed, 33 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index c87142d648..e55bf1fa75 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1037,24 +1037,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, } break; - case 11: /* CMD11: READ_DAT_UNTIL_STOP */ - if (sd->spi) - goto bad_cmd; - switch (sd->state) { - case sd_transfer_state: - sd->state = sd_sendingdata_state; - sd->data_start = req.arg; - sd->data_offset = 0; - - if (sd->data_start + sd->blk_len > sd->size) - sd->card_status |= ADDRESS_ERROR; - return sd_r0; - - default: - break; - } - break; - case 12: /* CMD12: STOP_TRANSMISSION */ switch (sd->state) { case sd_sendingdata_state: @@ -1862,21 +1844,6 @@ uint8_t sd_read_data(SDState *sd) sd->state = sd_transfer_state; break; - case 11: /* CMD11: READ_DAT_UNTIL_STOP */ - if (sd->data_offset == 0) - BLK_READ_BLOCK(sd->data_start, io_len); - ret = sd->data[sd->data_offset ++]; - - if (sd->data_offset >= io_len) { - sd->data_start += io_len; - sd->data_offset = 0; - if (sd->data_start + io_len > sd->size) { - sd->card_status |= ADDRESS_ERROR; - break; - } - } - break; - case 13: /* ACMD13: SD_STATUS */ ret = sd->sd_status[sd->data_offset ++]; From patchwork Thu Feb 22 15:22:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129267 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2142799edc; Thu, 22 Feb 2018 07:31:01 -0800 (PST) X-Google-Smtp-Source: AH8x2256z9DsQjWUg104As50tTlKCpm+gws1sidvxKL5ZiMK4SaMk0/BPm5kkCfB4ikiTmppnInW X-Received: by 10.13.216.194 with SMTP id a185mr3832964ywe.193.1519313461144; Thu, 22 Feb 2018 07:31:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313461; cv=none; d=google.com; s=arc-20160816; b=ypeGGzBkXtLoF8JH9gIUZCWDF1qf4TwZbTJCcwWnb+HQSTbXveY6a4bsgMmcKO+8J8 Vt3TWNtX5JXN3o6LzlU7MtRjDO4eR8owlAyKDFfEFZHD37fwSRPZt8y0t+OvKJ7R8zoT qU6nIJloh0QEAniT909TRKQrKYBWl0PVF+y1OgRme0RILoca5xVyHT1XcvUhQ06rc4bz QiRQkzA4X1yrSGLdGxvuckB1PHqfywlVsvMfTlDGLGPuKs/MnVsANTwSIAODqwrKEyWS hv+cvMlNoKl52TYhrfd1c4pijJFbJHKSj/9OD+2/+SP1yDUqd0TH+tKf5MIk2M9H4lht iOsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=aOKsmrRxjPaEdflSiyd6GbC9NRgL9h6UsSYRyoyfFFo=; b=cT+vEKj2p6GV8n9fBIhZNH3M6l1RKZN1jVAu7TnIIOLSGtGc/+ojhWxDHsOjTE3XrF 6yckH/c24jqwERPQ6m7ukKCb2onFwsRZFQ6ItrdzNqgJjIYDmtenW25nIRCS/Y1txJeX 9L/wl2sXJ13Ip5KcjTJI9OxKkvyeXa56fe1ouyCTqLuuw193kKb3Iwcdpf9O46exm5jK zIlVnumLIbnignwfL5XAOQVsK7hzegrlIqfWfp4ytqh1OQ45fMInJ0e4MyjdbnUgsP8h 1h2LyJm2qRqEacSn5HHBTT5UsXn/F+D8blLo55jX06tsfmBoMf1+/J1Y4i9fx9gw/2RK IPlw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id d66-v6si49427ybb.222.2018.02.22.07.31.00 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:31:01 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39010 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eospo-000370-Gn for patch@linaro.org; Thu, 22 Feb 2018 10:31:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38533) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosik-0004yC-K1 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosii-0001oB-SL for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:42 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46610) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosii-0001ls-Fh for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:40 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosih-00025S-BO for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:39 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:57 +0000 Message-Id: <20180222152307.7499-23-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 22/32] sdcard: simplify using the ldst API X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé the code is easier to review/refactor. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-7-f4bug@amsat.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/sd/sd.c | 38 +++++++++----------------------------- 1 file changed, 9 insertions(+), 29 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index e55bf1fa75..3e1f7e51ad 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -431,57 +431,39 @@ static int sd_req_crc_validate(SDRequest *req) { uint8_t buffer[5]; buffer[0] = 0x40 | req->cmd; - buffer[1] = (req->arg >> 24) & 0xff; - buffer[2] = (req->arg >> 16) & 0xff; - buffer[3] = (req->arg >> 8) & 0xff; - buffer[4] = (req->arg >> 0) & 0xff; + stl_be_p(&buffer[1], req->arg); return 0; return sd_crc7(buffer, 5) != req->crc; /* TODO */ } static void sd_response_r1_make(SDState *sd, uint8_t *response) { - uint32_t status = sd->card_status; + stl_be_p(response, sd->card_status); + /* Clear the "clear on read" status bits */ sd->card_status &= ~CARD_STATUS_C; - - response[0] = (status >> 24) & 0xff; - response[1] = (status >> 16) & 0xff; - response[2] = (status >> 8) & 0xff; - response[3] = (status >> 0) & 0xff; } static void sd_response_r3_make(SDState *sd, uint8_t *response) { - response[0] = (sd->ocr >> 24) & 0xff; - response[1] = (sd->ocr >> 16) & 0xff; - response[2] = (sd->ocr >> 8) & 0xff; - response[3] = (sd->ocr >> 0) & 0xff; + stl_be_p(response, sd->ocr); } static void sd_response_r6_make(SDState *sd, uint8_t *response) { - uint16_t arg; uint16_t status; - arg = sd->rca; status = ((sd->card_status >> 8) & 0xc000) | ((sd->card_status >> 6) & 0x2000) | (sd->card_status & 0x1fff); sd->card_status &= ~(CARD_STATUS_C & 0xc81fff); - - response[0] = (arg >> 8) & 0xff; - response[1] = arg & 0xff; - response[2] = (status >> 8) & 0xff; - response[3] = status & 0xff; + stw_be_p(response + 0, sd->rca); + stw_be_p(response + 2, status); } static void sd_response_r7_make(SDState *sd, uint8_t *response) { - response[0] = (sd->vhs >> 24) & 0xff; - response[1] = (sd->vhs >> 16) & 0xff; - response[2] = (sd->vhs >> 8) & 0xff; - response[3] = (sd->vhs >> 0) & 0xff; + stl_be_p(response, sd->vhs); } static inline uint64_t sd_addr_to_wpnum(uint64_t addr) @@ -727,7 +709,7 @@ static uint32_t sd_wpbits(SDState *sd, uint64_t addr) static void sd_function_switch(SDState *sd, uint32_t arg) { - int i, mode, new_func, crc; + int i, mode, new_func; mode = !!(arg & 0x80000000); sd->data[0] = 0x00; /* Maximum current consumption */ @@ -751,9 +733,7 @@ static void sd_function_switch(SDState *sd, uint32_t arg) sd->data[14 + (i >> 1)] = new_func << ((i * 4) & 4); } memset(&sd->data[17], 0, 47); - crc = sd_crc16(sd->data, 64); - sd->data[65] = crc >> 8; - sd->data[66] = crc & 0xff; + stw_be_p(sd->data + 65, sd_crc16(sd->data, 64)); } static inline bool sd_wp_addr(SDState *sd, uint64_t addr) From patchwork Thu Feb 22 15:22:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129272 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp723086lja; Thu, 22 Feb 2018 07:35:10 -0800 (PST) X-Google-Smtp-Source: AH8x226j5P/jNDMRn1+GkZLZElwWw7cM6gandzt6Oatr/QHBR9OhydMOUSPYht9aoaI48M0ZCFvX X-Received: by 2002:a25:df45:: with SMTP id w66-v6mr4980818ybg.68.1519313710853; Thu, 22 Feb 2018 07:35:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313710; cv=none; d=google.com; s=arc-20160816; b=0kpXYERBcol7KAnrLMrYKNy2YL4++4UjWV/7W5sVaJv2L0x1ak2I/u3JNsC2d/df8C r4zlMgOa69U0/EMH2Igq00HUc/LZA5O13pLsyqlZYtkahjbzspHaEPvfNenTgkmw2Ic6 eCHPKnrLFdx5YMC1hklc+7rMltfIjreUlY440MkZKjsBQJ38i09Nd+RGRf9CCA2sTUqL 5nYaZDjbLPcjWjq+/btniTtOZqiqh348m6NKD/4r4jlaOOpQ6SjnRu3k1wuCi4jUbGVr AT+uv2jFS1bcxlGJiJUzRCGZEy4khOGHYqsdXCcoRlGBwff3Loh9dBBZ/HRJDHv6lahL TD3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=jgY2B2usEgKcISyFbOqYIYY90NJsaRl7aBnOwJaLfTM=; b=C/2qPgKcB1FCrUjaeQa61hgpuMZF1nps3p4wGMBzw7b+qo8/4P6OniN1PeVZQnjJSG DpDRhMZ2e33RqoapKcsTL4Q3KXMO//XCwvQCNZhsD7Q4nhfeSMcpWsJvGNCP7X0C3PVR MwNvagqnvrSunwUho9RXWkOdgJHxez/KB0+Zm82S9ukL9c4K0JqQGdaTGv2jL+6oAFyy 5jgzb5l3FCO9ljwrqf/ddTt5mf8wdvqG4QW2l17bgRKBDsIzEVdMJPl+ul+cTvXqiDX9 PQNEQaBRYZ+blwhEyWdRk6gEy7oR83bEz9bzyea2C+PQr9Ckilj7p2BDSb1Fe2uf835d 9otg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 4-v6si46258ybq.775.2018.02.22.07.35.10 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:35:10 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39031 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosto-0006UT-SP for patch@linaro.org; Thu, 22 Feb 2018 10:35:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38578) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosin-00051z-Ga for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosij-0001ow-BJ for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:45 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46612) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosij-0001na-2Z for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:41 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosii-00025j-55 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:40 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:58 +0000 Message-Id: <20180222152307.7499-24-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 23/32] sdcard: use the correct masked OCR in the R3 reply 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé use the registerfields API to access the OCR register Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-8-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 3e1f7e51ad..5044a306e4 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -47,8 +47,6 @@ //#define DEBUG_SD 1 -#define ACMD41_ENQUIRY_MASK 0x00ffffff - typedef enum { sd_r0 = 0, /* no response */ sd_r1, /* normal response command */ @@ -272,13 +270,26 @@ static uint16_t sd_crc16(void *message, size_t width) #define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ +FIELD(OCR, VDD_VOLTAGE_WINDOW, 0, 24) +FIELD(OCR, VDD_VOLTAGE_WIN_LO, 0, 8) +FIELD(OCR, DUAL_VOLTAGE_CARD, 7, 1) +FIELD(OCR, VDD_VOLTAGE_WIN_HI, 8, 16) +FIELD(OCR, ACCEPT_SWITCH_1V8, 24, 1) /* Only UHS-I */ +FIELD(OCR, UHS_II_CARD, 29, 1) /* Only UHS-II */ FIELD(OCR, CARD_CAPACITY, 30, 1) /* 0:SDSC, 1:SDHC/SDXC */ FIELD(OCR, CARD_POWER_UP, 31, 1) +#define ACMD41_ENQUIRY_MASK 0x00ffffff +#define ACMD41_R3_MASK (R_OCR_VDD_VOLTAGE_WIN_HI_MASK \ + | R_OCR_ACCEPT_SWITCH_1V8_MASK \ + | R_OCR_UHS_II_CARD_MASK \ + | R_OCR_CARD_CAPACITY_MASK \ + | R_OCR_CARD_POWER_UP_MASK) + static void sd_set_ocr(SDState *sd) { - /* All voltages OK, Standard Capacity SD Memory Card, not yet powered up */ - sd->ocr = 0x00ffff00; + /* All voltages OK */ + sd->ocr = R_OCR_VDD_VOLTAGE_WIN_HI_MASK; } static void sd_ocr_powerup(void *opaque) @@ -446,7 +457,7 @@ static void sd_response_r1_make(SDState *sd, uint8_t *response) static void sd_response_r3_make(SDState *sd, uint8_t *response) { - stl_be_p(response, sd->ocr); + stl_be_p(response, sd->ocr & ACMD41_R3_MASK); } static void sd_response_r6_make(SDState *sd, uint8_t *response) From patchwork Thu Feb 22 15:22:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129273 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp724576lja; Thu, 22 Feb 2018 07:36:33 -0800 (PST) X-Google-Smtp-Source: AH8x226m2/uyANjRmfbec/uIZrirvL3RyvUN2yGxywXpL4+0vnEBYau2fTEjqu8O6KEzZGDAYgcq X-Received: by 10.129.61.11 with SMTP id k11mr5115167ywa.386.1519313793800; Thu, 22 Feb 2018 07:36:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313793; cv=none; d=google.com; s=arc-20160816; b=TPQxCpKkQLtu84BLt6jElsd/o+SyOsVVOkmbfTbjlPhwTD/2yozxOjII4mbetO6xgh tgLdC1qpzN6K/hUc1zsTOfg6JMY53ex2bY4BQInCJZSnNq/t8K8N7dHFkpPaI4+JeXbb kasL6RxEhtUx8Ad3G8Y9BEwhxIkTKn1oenI3gqrN2++pKOvhedoj2vhyUcMyTML991kW 7Seddu/JTau+1bqzS16qlbBnZzIkM3u/7NlY+PNuQJZIZfJZMZQZZiJYt+flJK+TrpDV /6IhwCqn98hgqrcbSUUDGJawThaoD4WlU3Xtst1RIioLYqvVQN3aPFNB177oQhWSVoKa KH7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=u5CB6W0CD5gEAPQCFtIyrCF45IfODktaPrHsJcsqU0M=; b=re93U45bxukkSbqUZpfUMEMPSNJBpP5ci0iev2mGRJ89zrSBwssY8GELFkv6E8L6jK 2TPdtRL5axZ9avIArq4kNd3zMohboyMtXkmVOUJH8sqJ0TxJ4lmxttR4Q3cgJhAO4QxL 4smL6SNmoIGxw7IBRQSewlYoqxzrGR2OCYCUkjTBgTYKqKSlzHmuwUlSLzW9cWv6G/Jr 14ujwC0SQJ/WmvRi8YBcN6K7KLJqLw9TeE04wr6W7X9nIYyE12/Qg6h88NnKswMyAEjl ABhVVADbkTTxXU0RCJmMvuAczHJDKS9qc7LC7L/3HVsZDf1q4Yk6dXyMgv/y+VnOji0m ZXRA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id i6-v6si47982ybh.730.2018.02.22.07.36.33 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:36:33 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39034 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosvA-0006t0-Vs for patch@linaro.org; Thu, 22 Feb 2018 10:36:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38556) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosil-0004ze-P6 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosik-0001pp-7Z for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:43 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46612) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosij-0001na-W5 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:42 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosii-00025x-Sa for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:40 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:22:59 +0000 Message-Id: <20180222152307.7499-25-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 24/32] sdcard: use the registerfields API for the CARD_STATUS register masks 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Acked-by: Alistair Francis Message-id: 20180215221325.7611-9-f4bug@amsat.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/sd/sd.c | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 5044a306e4..cc5caaf4f0 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -419,14 +419,56 @@ static void sd_set_rca(SDState *sd) sd->rca += 0x4567; } +FIELD(CSR, AKE_SEQ_ERROR, 3, 1) +FIELD(CSR, APP_CMD, 5, 1) +FIELD(CSR, FX_EVENT, 6, 1) +FIELD(CSR, READY_FOR_DATA, 8, 1) +FIELD(CSR, CURRENT_STATE, 9, 4) +FIELD(CSR, ERASE_RESET, 13, 1) +FIELD(CSR, CARD_ECC_DISABLED, 14, 1) +FIELD(CSR, WP_ERASE_SKIP, 15, 1) +FIELD(CSR, CSD_OVERWRITE, 16, 1) +FIELD(CSR, DEFERRED_RESPONSE, 17, 1) +FIELD(CSR, ERROR, 19, 1) +FIELD(CSR, CC_ERROR, 20, 1) +FIELD(CSR, CARD_ECC_FAILED, 21, 1) +FIELD(CSR, ILLEGAL_COMMAND, 22, 1) +FIELD(CSR, COM_CRC_ERROR, 23, 1) +FIELD(CSR, LOCK_UNLOCK_FAILED, 24, 1) +FIELD(CSR, CARD_IS_LOCKED, 25, 1) +FIELD(CSR, WP_VIOLATION, 26, 1) +FIELD(CSR, ERASE_PARAM, 27, 1) +FIELD(CSR, ERASE_SEQ_ERROR, 28, 1) +FIELD(CSR, BLOCK_LEN_ERROR, 29, 1) +FIELD(CSR, ADDRESS_ERROR, 30, 1) +FIELD(CSR, OUT_OF_RANGE, 31, 1) + /* Card status bits, split by clear condition: * A : According to the card current state * B : Always related to the previous command * C : Cleared by read */ -#define CARD_STATUS_A 0x02004100 -#define CARD_STATUS_B 0x00c01e00 -#define CARD_STATUS_C 0xfd39a028 +#define CARD_STATUS_A (R_CSR_READY_FOR_DATA_MASK \ + | R_CSR_CARD_ECC_DISABLED_MASK \ + | R_CSR_CARD_IS_LOCKED_MASK) +#define CARD_STATUS_B (R_CSR_CURRENT_STATE_MASK \ + | R_CSR_ILLEGAL_COMMAND_MASK \ + | R_CSR_COM_CRC_ERROR_MASK) +#define CARD_STATUS_C (R_CSR_AKE_SEQ_ERROR_MASK \ + | R_CSR_APP_CMD_MASK \ + | R_CSR_ERASE_RESET_MASK \ + | R_CSR_WP_ERASE_SKIP_MASK \ + | R_CSR_CSD_OVERWRITE_MASK \ + | R_CSR_ERROR_MASK \ + | R_CSR_CC_ERROR_MASK \ + | R_CSR_CARD_ECC_FAILED_MASK \ + | R_CSR_LOCK_UNLOCK_FAILED_MASK \ + | R_CSR_WP_VIOLATION_MASK \ + | R_CSR_ERASE_PARAM_MASK \ + | R_CSR_ERASE_SEQ_ERROR_MASK \ + | R_CSR_BLOCK_LEN_ERROR_MASK \ + | R_CSR_ADDRESS_ERROR_MASK \ + | R_CSR_OUT_OF_RANGE_MASK) static void sd_set_cardstatus(SDState *sd) { From patchwork Thu Feb 22 15:23:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129274 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp725163lja; Thu, 22 Feb 2018 07:37:05 -0800 (PST) X-Google-Smtp-Source: AH8x224CS2LjCN1bGOrrrEQ7fHuap+XXWSNx1/BZdPt+OimHEXiYO+Nna5khyqhX1fWNc0wgPUQC X-Received: by 10.13.211.132 with SMTP id v126mr5243231ywd.128.1519313825732; Thu, 22 Feb 2018 07:37:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313825; cv=none; d=google.com; s=arc-20160816; b=rg6ISnAbKSCNehKhqXBjxFMH/NHb2A4tpl0F66mTtpuIYoVTPyDIESfCYSOTzJJhya sH4/mwnNOihwSv9x5lDTcctCp/2oAAN22OmeuxPq6C0vjCBvX2kv7CLKSM0FdekshyaK X7B8G2P/zmbnY9+QK6avrvFv9xNEtFWbnQdz0UpeIFSZvUhVpYGXuh1pJOMOyQBdJ90q ji28YT9szLfDPRBspEHHGHptRNrxZ4+0RvXom3q5iFBDrXXsRrKvIWyXEzk/N2PJwfqG QocTqNk2HYozA7dozuU4UCV0L0f5rzAjat4p3XQ5yWSy2ESFBOQN45jwjZYoPP07pKvQ hf4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=4X5S1GMBrNKVWAgRw0yOZIjwKYJ1RrwuyzF/qnhTAKk=; b=lV2E1W8UT8AjD2mp4Z4jG23g3VVGx83cGTLA5K2gGM7lBXqmHtGIVFTp3K8CrZGmBv b+oamhoU7rHSa2z5JSV8AAGZ1ndvmL/rZL5TzQYrWb4pOB49n1W64ixkW6MPlVUX+lbE zq/hwxEZnQsQhzfEHaouDVlP85aOoO/2+s/iI+WUnF/+sKMwFMAQNTvuvId09te3jzkB IoJZ9PSOD/TiBCzzrubdkg5ceTCg+NX7R4NuNBRAyqZEkA1Z1Jmnt8/yNzuwS+MZ9ZZ6 vRcryw0d1QPyy3/KJxLf7FzdYBPVFoh99Mr9tSiZzLC+xFws/hOPJkWPBibImNay970W 1eEA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 8-v6si48509ybq.645.2018.02.22.07.37.05 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:37:05 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39042 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosvh-0008DN-3L for patch@linaro.org; Thu, 22 Feb 2018 10:37:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38565) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosim-00050I-AD for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosik-0001qe-Ux for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:44 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46614) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosik-0001pM-OA for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:42 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosij-00026D-JP for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:41 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:23:00 +0000 Message-Id: <20180222152307.7499-26-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 25/32] sdcard: handle CMD54 (SDIO) 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Linux uses it to poll the bus before polling for a card. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-10-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index cc5caaf4f0..63da05eaef 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1371,9 +1371,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, } break; - case 52: - case 53: - /* CMD52, CMD53: reserved for SDIO cards + case 52 ... 54: + /* CMD52, CMD53, CMD54: reserved for SDIO cards * (see the SDIO Simplified Specification V2.0) * Handle as illegal command but do not complain * on stderr, as some OSes may use these in their From patchwork Thu Feb 22 15:23:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129276 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp726216lja; Thu, 22 Feb 2018 07:38:05 -0800 (PST) X-Google-Smtp-Source: AH8x226KYk3nWeZFVS9feS/UgF9gkU32Fc+EzeRbEHSTve6kXZj+rBf+7iYFjfE97koK+wtILRtU X-Received: by 2002:a25:fc08:: with SMTP id v8-v6mr5157521ybd.435.1519313885043; Thu, 22 Feb 2018 07:38:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313885; cv=none; d=google.com; s=arc-20160816; b=Pv8TrAvBL+Mba8mqhwvIwi0lsVm8cn1vd4+gHlm5fpGzqi+1vqZYgJe8LxOpv95viy ZyO8iP8t7YvKQc/qMK1fWwmo2AgqEAw8ly6Evddn8eypx/GYsOhs0s0jXAc16lJT9Hns khBEwMXwx4ih5V2MYzMb6Yy3MK6Yh4Ptm8WXCI3Hm0VQM+kpHPiPgNYBqIN4xsYnnX62 Sq1nsF7W4EnIGMVNY4U75yrRmSqYA7SnWaJpzOFMIEU6tanrAltEQyIjFAplCItJHBG9 Z1YlzMiRFU3yEKXZ6ZiCUwwGLmyf0czYdvt8Jdddvh7ehBoVgES+EkdSvSv8ysdo8MsV TjEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=pdeqEtG6AGE4yUHM+wEptpXBDUtzI1JwDPLjG9C2wT4=; b=z1zpUmHkKqiaQiUYrWx4+lzW2DkH2UBcrZ3Qb1OwfopBAVkeTvSy69yfVvpiNT0Zrl NJG0v9I1U97Ys2ZWPDaa9mQCesgmDBEWLkT2/eMRycMvOsXWzxV/b/UhWOLtp6+REzuV 4T4kpBBY47KMc6j/KRXwj9C+cwHiplDFnK7u44FY+0gvhjRty83bazHbbRNdfJ6f9t1e VbrxhWysJ59zjNyNP1qx3vv1XktyoUAxdJVtjb0SO2ch90CtdiNuFSHvM8ZEpwGBnpID om3++KeBIq+z63mpzRFIKj1+xXT4PVh/D1xu6UPftjF+ek31/8sre5CAVtS5HKOJRGzC RppQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id k34si52069ywh.318.2018.02.22.07.38.04 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:38:05 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39049 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eoswe-0000iR-9g for patch@linaro.org; Thu, 22 Feb 2018 10:38:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38595) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosip-000543-6R for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosio-0001uY-9B for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:47 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46616) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosio-0001tO-2F for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:46 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosin-00026T-3S for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:45 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:23:01 +0000 Message-Id: <20180222152307.7499-27-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 26/32] sdcard: handle the Security Specification commands 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé returning sd_illegal, since they are not implemented. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-11-f4bug@amsat.org [PMM: tweak multiline comment format] Signed-off-by: Peter Maydell --- hw/sd/sd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 63da05eaef..f13f33efca 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1546,6 +1546,18 @@ static sd_rsp_type_t sd_app_command(SDState *sd, } break; + case 18: /* Reserved for SD security applications */ + case 25: + case 26: + case 38: + case 43 ... 49: + /* Refer to the "SD Specifications Part3 Security Specification" for + * information about the SD Security Features. + */ + qemu_log_mask(LOG_UNIMP, "SD: CMD%i Security not implemented\n", + req.cmd); + return sd_illegal; + default: /* Fall back to standard commands. */ return sd_normal_command(sd, req); From patchwork Thu Feb 22 15:23:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129285 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2159015edc; Thu, 22 Feb 2018 07:46:01 -0800 (PST) X-Google-Smtp-Source: AH8x225pin71ZH9g6JEipO68gRMWLd1B4okHrs8ewS2o7kzz7fqqFDiJhRJAlFo8i057SSBpUfFr X-Received: by 10.13.211.132 with SMTP id v126mr5267544ywd.128.1519314361428; Thu, 22 Feb 2018 07:46:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314361; cv=none; d=google.com; s=arc-20160816; b=VSVrgjk/65spsT/Ew0MA6a11ATd9fPnNqIPMlcm68cCBHZvG2unKBBhiCOdfhIiUkC MlvMVvRiWaq9m4UP2/mStcebN3ajRxQodLG0hD8LQQnR6VpcgKRlAfGNvwFQNqWKGskT fb2w5tIUBgGa7LtkKKGZeV02NMKbBYIrm1ghuEIFrPqnR0jyHEQbI1Vf63KkWNlxb5GL ETpLaKWZdFVkBq3QAcJJoMu83A8g6AVYk81Z6xCZ/2pVI9dBS9ITVW4HMpbwXeOSWIlc 113epoIVoFhG3qlRBJ4ENEiYe+EqiNiCYuLljGz4mvu8xwZRoQoIAhh/sszHDKGaPiZc QskQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=Lj3B4JUZgk6VK0F+wL4OJTIJZ8pGXBNWlAvqfy0iOOw=; b=W/i+Di7/TZAwamEGCQIm/TEO3x/xD5bwbfLzsVYiX08Xb0tX2xzVwjYYz6QsGGNZW5 c5YftB8Arb7QZYFFIilhImgOug5kY2dZFV0uRc0xKBwzltWXdl5fXl39MqAEwXBfPnm7 ek072P7GrftK4DKKfLk/m4AWd2e37vz0crHFWeHgy5X1zIwTJUPmctdaY2dbKsVuu/m9 I2cEYHgkHoD6mYLpSWA4ZxhDMG04O3erw1BlSqdAzi+BVGnGB9EEp48K2fdtdlnqowHm aiar56UkJjc/ymmPN8rmT8J+Xqujma8EvA2LQXhvPKYZn6nT8BVqdVpPevLQUZRP/VJ1 mKdg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id h133si54299ywb.350.2018.02.22.07.46.01 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:46:01 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39087 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eot4K-0007Cp-Si for patch@linaro.org; Thu, 22 Feb 2018 10:46:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38613) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiq-00055a-Ln for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosip-0001vz-L2 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:48 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46618) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosip-0001vB-DD for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:47 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosio-00026h-EZ for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:46 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:23:02 +0000 Message-Id: <20180222152307.7499-28-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 27/32] sdcard: use a more descriptive label 'unimplemented_spi_cmd' 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Suggested-by: Alistair Francis Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-12-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index f13f33efca..34080f0e4c 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1179,8 +1179,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, /* Block write commands (Class 4) */ case 24: /* CMD24: WRITE_SINGLE_BLOCK */ - if (sd->spi) - goto unimplemented_cmd; + if (sd->spi) { + goto unimplemented_spi_cmd; + } switch (sd->state) { case sd_transfer_state: /* Writing in SPI mode not implemented. */ @@ -1205,8 +1206,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, break; case 25: /* CMD25: WRITE_MULTIPLE_BLOCK */ - if (sd->spi) - goto unimplemented_cmd; + if (sd->spi) { + goto unimplemented_spi_cmd; + } switch (sd->state) { case sd_transfer_state: /* Writing in SPI mode not implemented. */ @@ -1246,8 +1248,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, break; case 27: /* CMD27: PROGRAM_CSD */ - if (sd->spi) - goto unimplemented_cmd; + if (sd->spi) { + goto unimplemented_spi_cmd; + } switch (sd->state) { case sd_transfer_state: sd->state = sd_receivingdata_state; @@ -1357,8 +1360,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, /* Lock card commands (Class 7) */ case 42: /* CMD42: LOCK_UNLOCK */ - if (sd->spi) - goto unimplemented_cmd; + if (sd->spi) { + goto unimplemented_spi_cmd; + } switch (sd->state) { case sd_transfer_state: sd->state = sd_receivingdata_state; @@ -1409,7 +1413,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, qemu_log_mask(LOG_GUEST_ERROR, "SD: Unknown CMD%i\n", req.cmd); return sd_illegal; - unimplemented_cmd: + unimplemented_spi_cmd: /* Commands that are recognised but not yet implemented in SPI mode. */ qemu_log_mask(LOG_UNIMP, "SD: CMD%i not implemented in SPI mode\n", req.cmd); From patchwork Thu Feb 22 15:23:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129277 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp727945lja; Thu, 22 Feb 2018 07:39:58 -0800 (PST) X-Google-Smtp-Source: AH8x224JWNhgyKx4Tbq0IrFldysRF6Umm87uSqCjHbyUGBGIfJUN8Co/MrzTRn6lNqtGChVcOram X-Received: by 2002:a25:dd44:: with SMTP id u65-v6mr4903376ybg.113.1519313998468; Thu, 22 Feb 2018 07:39:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519313998; cv=none; d=google.com; s=arc-20160816; b=h7K1E4zfW4YYttDV6s4xwJ2cXznavZlHG1daB9LCnlICYT7tyqaj00nfYnYume9/zx 0lmh/LEwFyXL1c/4/kzLur/BKF0XBy7+YReWWlrip+joB3hKs5jq9oU5u92ZEtQD+qod 5x4+aL0U3FB/AlRaFz/J6J2+fKE7Wn9hH12v1Utf4HcjJsHTR2huT2DJCc/OGo8sVQym RsS7vbauf47u8jl25IgHp/Vs4KWtfaFsZAnzEaLyAjXB4QlQCBwma+JeKL5b7/Ktufkh rtk3LpnDNbOxYhj6TfXTZ/HlZ7pVqNLjMBSAeXTEKlDPlPWl6MA6Z+LJcaa7EnDjrNBs cvRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=s68g5ViAdWVCzJzTreD5ydFsPPDchPsn3zjT2ki6AWE=; b=WrvbraZboql9h25IbqLxTEkQGICqVZoBnFeh/OD+VqNxVg6pNFcuOTQP1Sw8rfAiUO +QPJA4zbGdyubA1+QeZ7sORKr0sReqosmZvlNqqgLjrUP1osZyENPd2w9MHva0qclw8V rVYtBobMXz3YX1PC1IgkBpAORqxH9fAouReXEW10+fR4T3K/Rp7p2qfCZZ4nbRCazpvN YDeyDAY0TyInngioQSwU3hvPpLeY5nE3OGx2iXjZ9FI2FXTbymSFaowAHphUYcGhHZ+M GH7tPhLlGoku3IbqLfI8dWJMQ0HiaSZw5zv6faD7X3csuQqHa4bydPsUMdqKbJoNDdbJ KWhw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 8-v6si51013ybj.389.2018.02.22.07.39.58 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:39:58 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39055 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosyT-0002bI-RY for patch@linaro.org; Thu, 22 Feb 2018 10:39:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38634) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosir-00056Y-IN for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosiq-0001x0-J9 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:49 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46618) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiq-0001vB-B0 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:48 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosip-00026v-6L for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:47 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:23:03 +0000 Message-Id: <20180222152307.7499-29-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 28/32] sdcard: handles more commands in SPI 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-13-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 34080f0e4c..ff7ace3491 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1386,9 +1386,11 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, /* Application specific commands (Class 8) */ case 55: /* CMD55: APP_CMD */ - if (sd->rca != rca) - return sd_r0; - + if (!sd->spi) { + if (sd->rca != rca) { + return sd_r0; + } + } sd->expecting_acmd = true; sd->card_status |= APP_CMD; return sd_r1; @@ -1408,6 +1410,18 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, } break; + case 58: /* CMD58: READ_OCR (SPI) */ + if (!sd->spi) { + goto bad_cmd; + } + return sd_r3; + + case 59: /* CMD59: CRC_ON_OFF (SPI) */ + if (!sd->spi) { + goto bad_cmd; + } + goto unimplemented_spi_cmd; + default: bad_cmd: qemu_log_mask(LOG_GUEST_ERROR, "SD: Unknown CMD%i\n", req.cmd); @@ -1431,6 +1445,9 @@ static sd_rsp_type_t sd_app_command(SDState *sd, sd->card_status |= APP_CMD; switch (req.cmd) { case 6: /* ACMD6: SET_BUS_WIDTH */ + if (sd->spi) { + goto unimplemented_spi_cmd; + } switch (sd->state) { case sd_transfer_state: sd->sd_status[0] &= 0x3f; @@ -1565,6 +1582,12 @@ static sd_rsp_type_t sd_app_command(SDState *sd, default: /* Fall back to standard commands. */ return sd_normal_command(sd, req); + + unimplemented_spi_cmd: + /* Commands that are recognised but not yet implemented in SPI mode. */ + qemu_log_mask(LOG_UNIMP, "SD: CMD%i not implemented in SPI mode\n", + req.cmd); + return sd_illegal; } qemu_log_mask(LOG_GUEST_ERROR, "SD: ACMD%i in a wrong state\n", req.cmd); From patchwork Thu Feb 22 15:23:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129281 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2155886edc; Thu, 22 Feb 2018 07:43:02 -0800 (PST) X-Google-Smtp-Source: AH8x224S0URg2qr0m4i2Am6ntPvEx9JVJHbfMl1Tnxj54pEbHphqZwYS/YbO9m9ADqDEoVhnzuJv X-Received: by 10.129.168.10 with SMTP id f10mr1331028ywh.486.1519314182012; Thu, 22 Feb 2018 07:43:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314182; cv=none; d=google.com; s=arc-20160816; b=B5cwGcFmkApMag8s9a23A7kbCueUB1/Wa6HvxSeIW/anOtt/Dyv2EJhfGuRicLca33 Iosdz9VhZhzAdlTS4+R90tLf1IDBAIlLpthm5Yk6XH75NlxpNN2eAf9NIbhMJD4tdmC0 Ecl55QtpgVA8gIf/uyL9ti4f3keZA5oXLVaP7wR6WBbAIE8GtJ29K8nsH+4qa/Lg6z8n 1Hxsv9w2VyG0nLVb9X5WRruNEEjWdQLOJ83DYL6Fe1jp5CWI3876YzDqNThwR5EtSbAn oDW41cpZ9J7ZJCWhSDEKXyZP/fTudTNjVsJr02CluRtoceubHxY4DKlcMD2WN26Ec2U7 1anw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=aWpVUc24TmwSTeHufT+oCdpiovmjgiytaBkF74HyzFY=; b=NO9WjrWSXIJZGXfkNDLv0E61hllxpAtEgjOi+Tso8jtNkUtW7sFSeaG52wd6wC2ixB 7EBVlBHy5smuTE2xY1ecIqHBNq9ckX3F4Jyc+WI8B31eXV4vEJS31W6KNtuX4DAM2Lbx JRf3ynC9Ei8sBb5gPFVbr20qDzARtMGWXbGqrb75iRnDO8jqKEkJ5sm5ZCfAPsumRAdg rV02KKKxZbLr7lJYuIST+Ot5P9pIS39f/S3tfy+NxOCR1O51fTwJkp9oKv91FQ3ew/mD gIo3XwhIZmpQhJ7k5VbHr/k8VN708rm8qFPG6r0J7ojBc9CJgEVVWiYJ6NR+m8dzVWx0 RvbA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id t6-v6si49326ybj.774.2018.02.22.07.43.01 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:43:02 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39069 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eot1R-0004Yt-Bi for patch@linaro.org; Thu, 22 Feb 2018 10:43:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38637) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosir-00056j-QT for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosir-0001xf-2I for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:49 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46620) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosiq-0001wQ-RH for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:48 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosip-00027B-TL for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:47 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:23:04 +0000 Message-Id: <20180222152307.7499-30-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 29/32] sdcard: check the card is in correct state for APP CMD (CMD55) 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-14-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 8 ++++++++ 1 file changed, 8 insertions(+) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ff7ace3491..d6dd2b9a15 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1386,6 +1386,14 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, /* Application specific commands (Class 8) */ case 55: /* CMD55: APP_CMD */ + switch (sd->state) { + case sd_ready_state: + case sd_identification_state: + case sd_inactive_state: + return sd_illegal; + default: + break; + } if (!sd->spi) { if (sd->rca != rca) { return sd_r0; From patchwork Thu Feb 22 15:23:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129283 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2156373edc; Thu, 22 Feb 2018 07:43:29 -0800 (PST) X-Google-Smtp-Source: AH8x225tuajfidMATYptwcIlb97khlTJ956s5monaa5uFKuYJq95HRoqx1afJqQb/zBBSQC4TPCw X-Received: by 10.129.145.6 with SMTP id i6mr4991398ywg.444.1519314209474; Thu, 22 Feb 2018 07:43:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314209; cv=none; d=google.com; s=arc-20160816; b=gl5GzZaBdLQhD131Eo4dAPKX3TuVBGCzEOyO3FOqyzXIJkXD8P+vTF25gORhr2RoYO x4GH1ON59fWjFsyYBNdrPAJM0B2wpW78Ies1EoIiNCcR7LN6dK5l/P2ZCsWotIAKfGcK i0LflAkmRM9zA4ExKhWOkOzOtFgnr4FYtOhs/Yc1a3wSbL9uCmDncTkWJFfb5BC7X3a4 khtU+ZMS3pFWLRjj9Tc5weD5jz29lTSMexYWgCnTTGimACAj1nrj/Zms1iCgtz1Bas91 tnuuXU7b708icu30amhqE6/A5mO+JZy0GF+3VqASjUzSF97A7f8rmo8Yl1KjUEDcL1Ln X3uQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=61ZwXkN1jA0hD4qSvKnzwG/vpYu70LXiQCiK+bmiYO4=; b=0SkJ+YU2rYe7zpDHXTOvCWyZAeD2ZG1Oot6NWuM5bV/FEOY3n9/zF20v7+nD7OLXl/ nO1KtecAjSIb06ch+UcaSwxw+QFbgYRBxsIZfp0lO2iadQRGjt/aK9LTaaS0QQollsXY LUSf6DWj6vMat/BjnKTyF0mIHFrulm5tX6XvCJwJOYJg64lYd0KGJOvY8oMwQ5xbkcDu cs3BidoHLsW2/fl170MlAX/4TxqDamaJ5l8y9z5AvtmYja9FZaT1es/u001NbUC3PXPi jhBfxEuyEm8v702MIWut6+HC9uOnCybpYUvzj71M9WlOjfBJYJlIP/i6szNt9mamptLw kAWA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id p191-v6si50773ybg.587.2018.02.22.07.43.29 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:43:29 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39077 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eot1s-0005oL-SL for patch@linaro.org; Thu, 22 Feb 2018 10:43:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38653) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosis-000589-Pi for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosir-0001yX-W5 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:50 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46620) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosir-0001wQ-Pc for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:49 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosiq-00027Q-LQ for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:48 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:23:05 +0000 Message-Id: <20180222152307.7499-31-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 30/32] sdcard: warn if host uses an incorrect address for APP CMD (CMD55) 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-15-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 5 +++++ 1 file changed, 5 insertions(+) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index d6dd2b9a15..c8351d4f0b 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1391,6 +1391,11 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, case sd_identification_state: case sd_inactive_state: return sd_illegal; + case sd_idle_state: + if (rca) { + qemu_log_mask(LOG_GUEST_ERROR, + "SD: illegal RCA 0x%04x for APP_CMD\n", req.cmd); + } default: break; } From patchwork Thu Feb 22 15:23:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129282 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2156116edc; Thu, 22 Feb 2018 07:43:14 -0800 (PST) X-Google-Smtp-Source: AH8x225DvAIzlUAA9LKUecYwXhvuxwBN2kjINjuCWOj8+iiC0U8k4+qnqEGJ15BRG9grt2DkwGpp X-Received: by 10.13.235.143 with SMTP id u137mr5032994ywe.423.1519314194840; Thu, 22 Feb 2018 07:43:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314194; cv=none; d=google.com; s=arc-20160816; b=I3aMZ3h1ii1kJwV7ELyAFN8M0LkAiVzOWjj7fBEsaHi2Nz8Bs7mJEDw+uhyD4gZzdI SQmwHRa3Z9mEjzqhx5ZQI/KyeHOOVbRdLKySP/2N8L8I+Bo8JvKFqJ3YyO2D5/yo9pFR 2AuOIVYSnBNLSu8kC5HgxAX/IaarG8fG3mPCO84A27Xf0xmHGnAqdM0NmlBGNCMvCVqs Ub2VQPYL6v8DDAgYFFGGnqYHDQm8cmdNytg4TH2w15oa3OmiYRb8MzA6xcmzy0aP4tUA j8QpNOvGiDcTyOCLnMf75nHzIwHo2HdUpZtTdxY3ZStKqiW4dNy2YdUkdN580t1a7ppN zDyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=5sYVIUm2c/qNso0geq2mHzypkXwPQ9bLrPu8eQh6ieE=; b=vNYz5UU7C2Tf+ymV2CJOlofnpCnC7ycFoIXYGGuy/In8owYaHiquG5vTX3vazJfOGz eVdI9pJyCttq1652H/CsGjzoNmk2Wg6Df5A3ju8JyLApn909VNuoHHJyT0lbFeZT1pWw Gg+2D/4tSDt1F2/CrlLnqZVsEbo1ZBUqO6AqMZpg3H3LFKAj+w3Ho5KtdzOGguid2XpQ 0SHw2X6P6O6IkJ5iAsnMe2F/ifUl/CPyE/bLHEkpSPUbQoMg4fwttGgiSPwLI7Ap0uSV hc8iLu9DMyi2+xVoNHVVtRyFlFzYsgKYY+qpcG7jkI4BUdd/y2ws+YaOgRZvugO+24yW z4Bw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id x40si52074ywj.576.2018.02.22.07.43.14 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:43:14 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39070 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eot1e-0004kv-8T for patch@linaro.org; Thu, 22 Feb 2018 10:43:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38663) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosit-00058h-EI for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosis-0001zD-Gx for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:51 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46622) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosis-0001yC-9k for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:50 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosir-00027g-C0 for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:49 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:23:06 +0000 Message-Id: <20180222152307.7499-32-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 31/32] sdcard: simplify SEND_IF_COND (CMD8) 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé replace switch(single case) -> if() Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-16-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index c8351d4f0b..25fce7d6b6 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1008,23 +1008,19 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, case 8: /* CMD8: SEND_IF_COND */ /* Physical Layer Specification Version 2.00 command */ - switch (sd->state) { - case sd_idle_state: - sd->vhs = 0; - - /* No response if not exactly one VHS bit is set. */ - if (!(req.arg >> 8) || (req.arg >> (ctz32(req.arg & ~0xff) + 1))) { - return sd->spi ? sd_r7 : sd_r0; - } - - /* Accept. */ - sd->vhs = req.arg; - return sd_r7; - - default: + if (sd->state != sd_idle_state) { break; } - break; + sd->vhs = 0; + + /* No response if not exactly one VHS bit is set. */ + if (!(req.arg >> 8) || (req.arg >> (ctz32(req.arg & ~0xff) + 1))) { + return sd->spi ? sd_r7 : sd_r0; + } + + /* Accept. */ + sd->vhs = req.arg; + return sd_r7; case 9: /* CMD9: SEND_CSD */ switch (sd->state) { From patchwork Thu Feb 22 15:23:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 129288 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp2165691edc; Thu, 22 Feb 2018 07:52:29 -0800 (PST) X-Google-Smtp-Source: AH8x224oqxKfs+PM+mM85joleC0dAC3t5alD+QZ1rrVoCMdRZ+vwUbx8+0hCtA1Jzfi5rKE5vKnD X-Received: by 10.129.123.215 with SMTP id w206mr5079012ywc.140.1519314749581; Thu, 22 Feb 2018 07:52:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519314749; cv=none; d=google.com; s=arc-20160816; b=rmIJg0HCD/wP2sxAjr5sQHfP+FJO6xlTqZOhXejAxVozRT1875Uu9xcepsY8frDAtx tQbXSIKLobJVaoHMihTz9KYJ9Rrqw/2RMSCdLENX5bB+MTs+QeuvdNJlnjg793+W9SOM LrE6sx5GdF3DaE5ZjP+D1QJsDQx0DoS/As6ZD3tk6MdZjUP8E5IZ5fZM0M5fhyNI9Vy3 VbATkIBjUcWqR4oWMHGbLgspGWJMjn/zGDc2pibrGF6dBNNcW5LmEKOwMAQ4mmSUjJSv KR68Bon5cb8Ii5YlnvNOAT6nkPYAkZoxpp1G9qz2dUXAdl7Ipl+inGfhsmuCysnojxJm D/EQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:arc-authentication-results; bh=7MXIhGYYH5LT66WMZXesHZ9Ll7vxMc9WF765khLcbh8=; b=VFoIRRayg3B7wzAmNoVhVGyP67gAxJIiyPgWG/bq8ZF3qyA5WfkVc/AyE4grC/zYja rHtuPYsTMttXA5MGOKZ9PypHFiIAlU8vW6b1MAE/J3EOgznzEVMv2y7Vp8cXA0idItXY 0q17uyEmPQC4OakghtVcmUmGxDCQu/gu3L/azURYL0kZLZfpEICI++wsjH79WYk29b9R h0CW9hDcSAa7aAJQ/eiich+4Yp3io7OaJucn9NS7ganApjsQUdN5pDOTyyCM8TvEBIil J6wEz9MNBmG0CwnCOHbSw5+VELo7vu80IO+QwDHlmc/j7ak+mm/BTq/5VAVv5tqjFecs y0kg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id p63si57962ywb.54.2018.02.22.07.52.29 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 22 Feb 2018 07:52:29 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39142 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eotAb-0004w7-1z for patch@linaro.org; Thu, 22 Feb 2018 10:52:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38678) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eosiu-00059i-EH for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eosit-0001zz-El for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:52 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46622) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eosit-0001yC-7L for qemu-devel@nongnu.org; Thu, 22 Feb 2018 10:23:51 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1eosis-00027v-2q for qemu-devel@nongnu.org; Thu, 22 Feb 2018 15:23:50 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 22 Feb 2018 15:23:07 +0000 Message-Id: <20180222152307.7499-33-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org> References: <20180222152307.7499-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 32/32] sdcard: simplify SD_SEND_OP_COND (ACMD41) 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé replace switch(single case) -> if() Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alistair Francis Message-id: 20180215221325.7611-17-f4bug@amsat.org Signed-off-by: Peter Maydell --- hw/sd/sd.c | 56 ++++++++++++++++++++++++++------------------------------ 1 file changed, 26 insertions(+), 30 deletions(-) -- 2.16.1 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 25fce7d6b6..933890e86f 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1512,45 +1512,41 @@ static sd_rsp_type_t sd_app_command(SDState *sd, sd->state = sd_transfer_state; return sd_r1; } - switch (sd->state) { - case sd_idle_state: - /* If it's the first ACMD41 since reset, we need to decide - * whether to power up. If this is not an enquiry ACMD41, - * we immediately report power on and proceed below to the - * ready state, but if it is, we set a timer to model a - * delay for power up. This works around a bug in EDK2 - * UEFI, which sends an initial enquiry ACMD41, but - * assumes that the card is in ready state as soon as it - * sees the power up bit set. */ - if (!FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP)) { - if ((req.arg & ACMD41_ENQUIRY_MASK) != 0) { - timer_del(sd->ocr_power_timer); - sd_ocr_powerup(sd); - } else { - trace_sdcard_inquiry_cmd41(); - if (!timer_pending(sd->ocr_power_timer)) { - timer_mod_ns(sd->ocr_power_timer, - (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - + OCR_POWER_DELAY_NS)); - } + if (sd->state != sd_idle_state) { + break; + } + /* If it's the first ACMD41 since reset, we need to decide + * whether to power up. If this is not an enquiry ACMD41, + * we immediately report power on and proceed below to the + * ready state, but if it is, we set a timer to model a + * delay for power up. This works around a bug in EDK2 + * UEFI, which sends an initial enquiry ACMD41, but + * assumes that the card is in ready state as soon as it + * sees the power up bit set. */ + if (!FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP)) { + if ((req.arg & ACMD41_ENQUIRY_MASK) != 0) { + timer_del(sd->ocr_power_timer); + sd_ocr_powerup(sd); + } else { + trace_sdcard_inquiry_cmd41(); + if (!timer_pending(sd->ocr_power_timer)) { + timer_mod_ns(sd->ocr_power_timer, + (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + + OCR_POWER_DELAY_NS)); } } + } + if (FIELD_EX32(sd->ocr & req.arg, OCR, VDD_VOLTAGE_WINDOW)) { /* We accept any voltage. 10000 V is nothing. * * Once we're powered up, we advance straight to ready state * unless it's an enquiry ACMD41 (bits 23:0 == 0). */ - if (req.arg & ACMD41_ENQUIRY_MASK) { - sd->state = sd_ready_state; - } - - return sd_r3; - - default: - break; + sd->state = sd_ready_state; } - break; + + return sd_r3; case 42: /* ACMD42: SET_CLR_CARD_DETECT */ switch (sd->state) {