From nobody Sat Apr 27 20:33:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623699306903229.47726501740863; Mon, 14 Jun 2021 12:35:06 -0700 (PDT) Received: from localhost ([::1]:46874 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lssMT-00082H-Ml for importer2@patchew.org; Mon, 14 Jun 2021 15:35:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43334) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssK1-0004bf-NT for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:33663) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssJy-0004pU-Aq for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:33 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-3-VcfhlxnIPkiMur-ufJshyg-1; Mon, 14 Jun 2021 15:32:27 -0400 Received: by mail-wr1-f72.google.com with SMTP id g14-20020a5d698e0000b0290117735bd4d3so7393879wru.13 for ; Mon, 14 Jun 2021 12:32:27 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id o5sm17324236wrw.65.2021.06.14.12.32.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Jun 2021 12:32:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1623699149; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cfez23IpOF2zbJFb9oWTU9xCaYMI6EGMDB31a8sxbas=; b=PzoCmVsLQOELvwSQvWvMZZF/YjQuI8QuVas3apPXHcLV9i2CZ7ry6sy0vln1Ky9fcQrBdW q/oDM/HwWtAL+uwprMR+zemoGm68KZnvLLdQmVXkxdkU132HIb5rLZt00RokhGWdCXa8pC Wl0OT2vkYsOd+8yS8urHZ7o9krA3esw= X-MC-Unique: VcfhlxnIPkiMur-ufJshyg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cfez23IpOF2zbJFb9oWTU9xCaYMI6EGMDB31a8sxbas=; b=eO9m11slSpkaMFHecxUyf/ltOvIfqrPhZn5B1Q7/vvnQBhjrstxFa/jVtN4Y/rWPbX 2ypx1MDij6TbebSoPS2XdKjBbS6uZYK1pDTWpefxH/W4vaUNLMG0wKIQmNCvfgvLOY0q nJ9X+KkhMjYodJUZLMJLlUfcCOVUtjkynwyP8USQtvB/U9wbvCWzwVE8404I03FCq4AS 77K6QcElfxcSRnHqOK0wKKcq+dEx6Vx32w0k6E6M6utiuu29+PdrejWEkNbIaFVk3DSC rd3Mlk0/aq8Y6DoSPSxulcYysWniJUcTLzkM2R802t22F9PRhWp97NQpp7HWN/eNgIZT Fpiw== X-Gm-Message-State: AOAM532NhhKHGMruqL9Bse3pF9kn/zmClp8oDMDwITScSOwYMfsHS/+d +x41kqyZ38ztWbzO39dLjJ4ytE+xbl+uFYWUmOKRKOi4ZtRt1jpoarbOfGMIu4xHXEfatDswktP IOlyQy5IKnPQRi7ckTbBQjgkWmLXV7sSb+yt8QDwbXgVfOf9As8f/WNHNnosnjaMp X-Received: by 2002:a05:600c:1c22:: with SMTP id j34mr777593wms.166.1623699146575; Mon, 14 Jun 2021 12:32:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyUEO81A+Chst8NrrWMPaOj2qcBV4x3oMYIB3ZX4mlQLm9GzsJ4F3jwj3rnfSZvywhVWAddyg== X-Received: by 2002:a05:600c:1c22:: with SMTP id j34mr777571wms.166.1623699146324; Mon, 14 Jun 2021 12:32:26 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v7 1/6] hw/isa/Kconfig: Fix missing dependency ISA_SUPERIO -> FDC Date: Mon, 14 Jun 2021 21:32:15 +0200 Message-Id: <20210614193220.2007159-2-philmd@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210614193220.2007159-1-philmd@redhat.com> References: <20210614193220.2007159-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , John Snow , Paolo Bonzini Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) isa_superio_realize() calls isa_fdc_init_drives(), which is defined in hw/block/fdc.c, so ISA_SUPERIO needs to select the FDC symbol. Reported-by: John Snow Reviewed-by: Thomas Huth Acked-by: Paolo Bonzini Fixes: c0ff3795143 ("Introduce a CONFIG_ISA_SUPERIO switch for isa-superio.= c") Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/isa/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/isa/Kconfig b/hw/isa/Kconfig index 55e0003ce40..7216f66a54a 100644 --- a/hw/isa/Kconfig +++ b/hw/isa/Kconfig @@ -17,6 +17,7 @@ config ISA_SUPERIO bool select ISA_BUS select PCKBD + select FDC =20 config PC87312 bool --=20 2.31.1 From nobody Sat Apr 27 20:33:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623699393516977.1160829183189; Mon, 14 Jun 2021 12:36:33 -0700 (PDT) Received: from localhost ([::1]:53228 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lssNs-0003xg-C7 for importer2@patchew.org; Mon, 14 Jun 2021 15:36:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43346) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssK4-0004dY-K5 for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:39445) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssK2-0004rQ-Ka for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:36 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-298-aMnWWl4HNYi9yctDCzDK7A-1; Mon, 14 Jun 2021 15:32:32 -0400 Received: by mail-wm1-f70.google.com with SMTP id u17-20020a05600c19d1b02901af4c4deac5so401878wmq.7 for ; Mon, 14 Jun 2021 12:32:32 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id a9sm8808008wrv.37.2021.06.14.12.32.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Jun 2021 12:32:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1623699153; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5WwJjcODkch3wuwA97/f+VTf6MaRPKM6xZWzz2R2H1I=; b=ZLWfH7qGjfK+bLzrseEFFNxfPZ0+KgxNgr/Dc533M69N6Z4zofLTTuiOz0uhT7lQr0sxkO dkfWDE0M0s5N2wIWJqH0irCU9dNndjp1+Be4r0TymFzaFX2OzXMWUGMLUusysV+rSPTnHU 7/fnILWm/s6qaNvVPQWZKpNd4rE823I= X-MC-Unique: aMnWWl4HNYi9yctDCzDK7A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5WwJjcODkch3wuwA97/f+VTf6MaRPKM6xZWzz2R2H1I=; b=tmCKAiVE/ZnPCAxak0n3VaUuJ9zGWGZ5Bbv3yZ33pecOHEd5Sw6WYYruxADi/h4HAi lNeAsj8k52jCPkd/HrcqhjKzOrCWEyp21gV6xMVYHXVmaTy5alUup/1gGyd58nr6Wwki it0IFpy4QDXnXE/vtNvKzUADQFMXEbd/Vw54NGkqnxED5ND+T3cf4upfBZYrhcEP57YR +c4gpDVk6pKfl3XnVVRc/g6XQEb2+TBz5eXQV9FrtHOp6TlX37RJwlGBBbphkfWfKr/Y /6gllPtMaBA//Bl8guE7QnQvuWDTc3qseUd2JPeMr9HyaAjjypZe3XiYxo/UkWCctOIi dQEQ== X-Gm-Message-State: AOAM531GGLJ6vJm3Fbpzk7oAGwm8G3KY7aflkMWxWVyYq+O7gEAGJvNt 5fn9cZSFYkhyHNP76zkDKmZqYHddWbEFMZf4RtoSrFiR+K4jLzWrQ0ld1caZx40EHTZYCHe+X4O Oe2KFOUX93XBnvc0KvNkrRTQS0oqiPwPuFIU6N5vwIqiND1xzXwfDSHJwaB9B8wKo X-Received: by 2002:a1c:1b4c:: with SMTP id b73mr726393wmb.57.1623699150875; Mon, 14 Jun 2021 12:32:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw9paDnjDt9qOhtGsyQnMSzqkQrAysUO3g3Gne8vfGrc+W9LPG1E0OpBrtMH+RgDVYQNUyySQ== X-Received: by 2002:a1c:1b4c:: with SMTP id b73mr726375wmb.57.1623699150741; Mon, 14 Jun 2021 12:32:30 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v7 2/6] hw/block/fdc: Replace disabled fprintf() by trace event Date: Mon, 14 Jun 2021 21:32:16 +0200 Message-Id: <20210614193220.2007159-3-philmd@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210614193220.2007159-1-philmd@redhat.com> References: <20210614193220.2007159-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , John Snow , Mark Cave-Ayland , Paolo Bonzini Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Reviewed-by: John Snow Acked-by: Mark Cave-Ayland Reviewed-by: Mark Cave-Ayland Acked-by: Paolo Bonzini Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/block/fdc.c | 7 +------ hw/block/trace-events | 1 + 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/hw/block/fdc.c b/hw/block/fdc.c index a825c2acbae..1d3a0473678 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -1242,12 +1242,7 @@ static void fdctrl_external_reset_isa(DeviceState *d) =20 static void fdctrl_handle_tc(void *opaque, int irq, int level) { - //FDCtrl *s =3D opaque; - - if (level) { - // XXX - FLOPPY_DPRINTF("TC pulsed\n"); - } + trace_fdctrl_tc_pulse(level); } =20 /* Change IRQ state */ diff --git a/hw/block/trace-events b/hw/block/trace-events index 70bed9ddb75..6a0d973805d 100644 --- a/hw/block/trace-events +++ b/hw/block/trace-events @@ -3,6 +3,7 @@ # fdc.c fdc_ioport_read(uint8_t reg, uint8_t value) "read reg 0x%02x val 0x%02x" fdc_ioport_write(uint8_t reg, uint8_t value) "write reg 0x%02x val 0x%02x" +fdctrl_tc_pulse(int level) "TC pulse: %u" =20 # pflash_cfi01.c # pflash_cfi02.c --=20 2.31.1 From nobody Sat Apr 27 20:33:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623699298566282.20548335016997; Mon, 14 Jun 2021 12:34:58 -0700 (PDT) Received: from localhost ([::1]:46060 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lssML-0007Uj-EB for importer2@patchew.org; Mon, 14 Jun 2021 15:34:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43358) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssKA-0004iM-EF for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:42 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:45863) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssK6-0004tX-Iy for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:42 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-80-6G9ZC92cMGqFEHJUkmqvrw-1; Mon, 14 Jun 2021 15:32:37 -0400 Received: by mail-wm1-f71.google.com with SMTP id n21-20020a7bcbd50000b02901a2ee0826aeso23732wmi.7 for ; Mon, 14 Jun 2021 12:32:36 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id e16sm16876648wrw.49.2021.06.14.12.32.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Jun 2021 12:32:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1623699158; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LB8HCWj7RzBeuSqM6qj+eRi33qFpY5ZvtCniuPbBAF0=; b=I437Jg9uHsYHBYNRY9Vm3B7Mi1e3V2RRV/wqHCJhKfeG9Dr+CTqbiQOZl5TL40o+T8DM21 lADHBx1Qgh59awzlj6K3Uuxo9xLSXRG6UhtLaa4VQz/LOCUa751ns3u31qVrFIdlfwOitw VZTBoRHYIxJjLd/RaYlts+eaKPcbXpc= X-MC-Unique: 6G9ZC92cMGqFEHJUkmqvrw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LB8HCWj7RzBeuSqM6qj+eRi33qFpY5ZvtCniuPbBAF0=; b=enrV1F5Q1Q44WE1eZ6EKKHeh7Ldd6LyW+FnrGFe/5r3wT9pmp5NQtllUyYogtww859 OnNd7n7jwF50j0BEd3SuRYYiRWEUiZsuP8YCMgydU1MmwfJDPsBP8im6qL1ttG+Zjs3F 6zLIlVKJIDO0dzYHa00rcI2YhNfdJjGSF92jbYtVVFwahCoxiYN0XDomqJ29UvgFVyEI I2Jun1n09z/6b3LdJRgDToK2dPOpz7H6WdvaUXBBnwfvwesod5gEcUf+JdjCaz6fP9aO rX40r6A627LC79PVjR7djrN/LACGTzUvCeAgNMVjIS4/RQZfuGx5X95zxuhRcZ3X1vS0 EU+g== X-Gm-Message-State: AOAM533aP+8BaJJKzRZsoqQTIbn+PjpKwb6N15QvKGda2TlbhjIBwp88 BVwXF9y2X+FzkruqT8mf8iGvGTzJvDIY9ezLf0JIbxpeLLWf8EYbMhLMwokifFcQaqYy5hAISyn yEtgEFbXvCjwlTI8HLBJ4WDnDyTVDW43SUEFcywwxLwXoiXkgc5WXpupxBvyTnoNN X-Received: by 2002:adf:eeca:: with SMTP id a10mr20030626wrp.184.1623699155378; Mon, 14 Jun 2021 12:32:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwavKB2fpvM9Iz50fzKmAuu+exHTPYYVyvI/rO4Ucoc+UCOfKvoU0W66VEuxahOPZ6yev5c4Q== X-Received: by 2002:adf:eeca:: with SMTP id a10mr20030603wrp.184.1623699155142; Mon, 14 Jun 2021 12:32:35 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v7 3/6] hw/block/fdc: Declare shared prototypes in fdc-internal.h Date: Mon, 14 Jun 2021 21:32:17 +0200 Message-Id: <20210614193220.2007159-4-philmd@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210614193220.2007159-1-philmd@redhat.com> References: <20210614193220.2007159-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , John Snow , Mark Cave-Ayland , Paolo Bonzini Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) We want to extract ISA/SysBus code from the generic fdc.c file. First, declare the prototypes we will access from the new units into a new local header: "fdc-internal.h". Acked-by: Mark Cave-Ayland Reviewed-by: Mark Cave-Ayland Acked-by: Paolo Bonzini Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/block/fdc-internal.h | 158 ++++++++++++++++++++++++++++++++++++++++ hw/block/fdc.c | 131 +++------------------------------ MAINTAINERS | 1 + 3 files changed, 168 insertions(+), 122 deletions(-) create mode 100644 hw/block/fdc-internal.h diff --git a/hw/block/fdc-internal.h b/hw/block/fdc-internal.h new file mode 100644 index 00000000000..036392e9fc1 --- /dev/null +++ b/hw/block/fdc-internal.h @@ -0,0 +1,158 @@ +/* + * QEMU Floppy disk emulator (Intel 82078) + * + * Copyright (c) 2003, 2007 Jocelyn Mayer + * Copyright (c) 2008 Herv=C3=A9 Poussineau + * + * Permission is hereby granted, free of charge, to any person obtaining a= copy + * of this software and associated documentation files (the "Software"), t= o deal + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + */ +#ifndef HW_BLOCK_FDC_INTERNAL_H +#define HW_BLOCK_FDC_INTERNAL_H + +#include "exec/memory.h" +#include "exec/ioport.h" +#include "hw/block/block.h" +#include "hw/block/fdc.h" +#include "qapi/qapi-types-block.h" + +typedef struct FDCtrl FDCtrl; + +/* Floppy bus emulation */ + +typedef struct FloppyBus { + BusState bus; + FDCtrl *fdc; +} FloppyBus; + +/* Floppy disk drive emulation */ + +typedef enum FDriveRate { + FDRIVE_RATE_500K =3D 0x00, /* 500 Kbps */ + FDRIVE_RATE_300K =3D 0x01, /* 300 Kbps */ + FDRIVE_RATE_250K =3D 0x02, /* 250 Kbps */ + FDRIVE_RATE_1M =3D 0x03, /* 1 Mbps */ +} FDriveRate; + +typedef enum FDriveSize { + FDRIVE_SIZE_UNKNOWN, + FDRIVE_SIZE_350, + FDRIVE_SIZE_525, +} FDriveSize; + +typedef struct FDFormat { + FloppyDriveType drive; + uint8_t last_sect; + uint8_t max_track; + uint8_t max_head; + FDriveRate rate; +} FDFormat; + +typedef enum FDiskFlags { + FDISK_DBL_SIDES =3D 0x01, +} FDiskFlags; + +typedef struct FDrive { + FDCtrl *fdctrl; + BlockBackend *blk; + BlockConf *conf; + /* Drive status */ + FloppyDriveType drive; /* CMOS drive type */ + uint8_t perpendicular; /* 2.88 MB access mode */ + /* Position */ + uint8_t head; + uint8_t track; + uint8_t sect; + /* Media */ + FloppyDriveType disk; /* Current disk type */ + FDiskFlags flags; + uint8_t last_sect; /* Nb sector per track */ + uint8_t max_track; /* Nb of tracks */ + uint16_t bps; /* Bytes per sector */ + uint8_t ro; /* Is read-only */ + uint8_t media_changed; /* Is media changed */ + uint8_t media_rate; /* Data rate of medium */ + + bool media_validated; /* Have we validated the media? */ +} FDrive; + +struct FDCtrl { + MemoryRegion iomem; + qemu_irq irq; + /* Controller state */ + QEMUTimer *result_timer; + int dma_chann; + uint8_t phase; + IsaDma *dma; + /* Controller's identification */ + uint8_t version; + /* HW */ + uint8_t sra; + uint8_t srb; + uint8_t dor; + uint8_t dor_vmstate; /* only used as temp during vmstate */ + uint8_t tdr; + uint8_t dsr; + uint8_t msr; + uint8_t cur_drv; + uint8_t status0; + uint8_t status1; + uint8_t status2; + /* Command FIFO */ + uint8_t *fifo; + int32_t fifo_size; + uint32_t data_pos; + uint32_t data_len; + uint8_t data_state; + uint8_t data_dir; + uint8_t eot; /* last wanted sector */ + /* States kept only to be returned back */ + /* precompensation */ + uint8_t precomp_trk; + uint8_t config; + uint8_t lock; + /* Power down config (also with status regB access mode */ + uint8_t pwrd; + /* Floppy drives */ + FloppyBus bus; + uint8_t num_floppies; + FDrive drives[MAX_FD]; + struct { + FloppyDriveType type; + } qdev_for_drives[MAX_FD]; + int reset_sensei; + FloppyDriveType fallback; /* type=3Dauto failure fallback */ + /* Timers state */ + uint8_t timer0; + uint8_t timer1; + PortioList portio_list; +}; + +extern const FDFormat fd_formats[]; +extern const VMStateDescription vmstate_fdc; + +uint32_t fdctrl_read(void *opaque, uint32_t reg); +void fdctrl_write(void *opaque, uint32_t reg, uint32_t value); +void fdctrl_reset(FDCtrl *fdctrl, int do_irq); +void fdctrl_realize_common(DeviceState *dev, FDCtrl *fdctrl, Error **errp); + +int fdctrl_transfer_handler(void *opaque, int nchan, int dma_pos, int dma_= len); + +void fdctrl_init_drives(FloppyBus *bus, DriveInfo **fds); + +#endif diff --git a/hw/block/fdc.c b/hw/block/fdc.c index 1d3a0473678..20ddeb98d83 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -48,6 +48,7 @@ #include "qemu/module.h" #include "trace.h" #include "qom/object.h" +#include "fdc-internal.h" =20 /********************************************************/ /* debug Floppy devices */ @@ -68,15 +69,8 @@ #define TYPE_FLOPPY_BUS "floppy-bus" OBJECT_DECLARE_SIMPLE_TYPE(FloppyBus, FLOPPY_BUS) =20 -typedef struct FDCtrl FDCtrl; -typedef struct FDrive FDrive; static FDrive *get_drv(FDCtrl *fdctrl, int unit); =20 -struct FloppyBus { - BusState bus; - FDCtrl *fdc; -}; - static const TypeInfo floppy_bus_info =3D { .name =3D TYPE_FLOPPY_BUS, .parent =3D TYPE_BUS, @@ -93,32 +87,11 @@ static void floppy_bus_create(FDCtrl *fdc, FloppyBus *b= us, DeviceState *dev) /********************************************************/ /* Floppy drive emulation */ =20 -typedef enum FDriveRate { - FDRIVE_RATE_500K =3D 0x00, /* 500 Kbps */ - FDRIVE_RATE_300K =3D 0x01, /* 300 Kbps */ - FDRIVE_RATE_250K =3D 0x02, /* 250 Kbps */ - FDRIVE_RATE_1M =3D 0x03, /* 1 Mbps */ -} FDriveRate; - -typedef enum FDriveSize { - FDRIVE_SIZE_UNKNOWN, - FDRIVE_SIZE_350, - FDRIVE_SIZE_525, -} FDriveSize; - -typedef struct FDFormat { - FloppyDriveType drive; - uint8_t last_sect; - uint8_t max_track; - uint8_t max_head; - FDriveRate rate; -} FDFormat; - /* In many cases, the total sector size of a format is enough to uniquely * identify it. However, there are some total sector collisions between * formats of different physical size, and these are noted below by * highlighting the total sector size for entries with collisions. */ -static const FDFormat fd_formats[] =3D { +const FDFormat fd_formats[] =3D { /* First entry is default format */ /* 1.44 MB 3"1/2 floppy disks */ { FLOPPY_DRIVE_TYPE_144, 18, 80, 1, FDRIVE_RATE_500K, }, /* 3.5" 2880 = */ @@ -186,35 +159,6 @@ static FDriveSize drive_size(FloppyDriveType drive) #define FD_SECTOR_SC 2 /* Sector size code */ #define FD_RESET_SENSEI_COUNT 4 /* Number of sense interrupts on RESET = */ =20 -/* Floppy disk drive emulation */ -typedef enum FDiskFlags { - FDISK_DBL_SIDES =3D 0x01, -} FDiskFlags; - -struct FDrive { - FDCtrl *fdctrl; - BlockBackend *blk; - BlockConf *conf; - /* Drive status */ - FloppyDriveType drive; /* CMOS drive type */ - uint8_t perpendicular; /* 2.88 MB access mode */ - /* Position */ - uint8_t head; - uint8_t track; - uint8_t sect; - /* Media */ - FloppyDriveType disk; /* Current disk type */ - FDiskFlags flags; - uint8_t last_sect; /* Nb sector per track */ - uint8_t max_track; /* Nb of tracks */ - uint16_t bps; /* Bytes per sector */ - uint8_t ro; /* Is read-only */ - uint8_t media_changed; /* Is media changed */ - uint8_t media_rate; /* Data rate of medium */ - - bool media_validated; /* Have we validated the media? */ -}; - =20 static FloppyDriveType get_fallback_drive_type(FDrive *drv); =20 @@ -626,10 +570,7 @@ static const TypeInfo floppy_drive_info =3D { /********************************************************/ /* Intel 82078 floppy disk controller emulation */ =20 -static void fdctrl_reset(FDCtrl *fdctrl, int do_irq); static void fdctrl_to_command_phase(FDCtrl *fdctrl); -static int fdctrl_transfer_handler (void *opaque, int nchan, - int dma_pos, int dma_len); static void fdctrl_raise_irq(FDCtrl *fdctrl); static FDrive *get_cur_drv(FDCtrl *fdctrl); =20 @@ -828,58 +769,6 @@ enum { #define FD_MULTI_TRACK(state) ((state) & FD_STATE_MULTI) #define FD_FORMAT_CMD(state) ((state) & FD_STATE_FORMAT) =20 -struct FDCtrl { - MemoryRegion iomem; - qemu_irq irq; - /* Controller state */ - QEMUTimer *result_timer; - int dma_chann; - uint8_t phase; - IsaDma *dma; - /* Controller's identification */ - uint8_t version; - /* HW */ - uint8_t sra; - uint8_t srb; - uint8_t dor; - uint8_t dor_vmstate; /* only used as temp during vmstate */ - uint8_t tdr; - uint8_t dsr; - uint8_t msr; - uint8_t cur_drv; - uint8_t status0; - uint8_t status1; - uint8_t status2; - /* Command FIFO */ - uint8_t *fifo; - int32_t fifo_size; - uint32_t data_pos; - uint32_t data_len; - uint8_t data_state; - uint8_t data_dir; - uint8_t eot; /* last wanted sector */ - /* States kept only to be returned back */ - /* precompensation */ - uint8_t precomp_trk; - uint8_t config; - uint8_t lock; - /* Power down config (also with status regB access mode */ - uint8_t pwrd; - /* Floppy drives */ - FloppyBus bus; - uint8_t num_floppies; - FDrive drives[MAX_FD]; - struct { - FloppyDriveType type; - } qdev_for_drives[MAX_FD]; - int reset_sensei; - FloppyDriveType fallback; /* type=3Dauto failure fallback */ - /* Timers state */ - uint8_t timer0; - uint8_t timer1; - PortioList portio_list; -}; - static FloppyDriveType get_fallback_drive_type(FDrive *drv) { return drv->fdctrl->fallback; @@ -909,7 +798,7 @@ struct FDCtrlISABus { int32_t bootindexB; }; =20 -static uint32_t fdctrl_read (void *opaque, uint32_t reg) +uint32_t fdctrl_read(void *opaque, uint32_t reg) { FDCtrl *fdctrl =3D opaque; uint32_t retval; @@ -946,7 +835,7 @@ static uint32_t fdctrl_read (void *opaque, uint32_t reg) return retval; } =20 -static void fdctrl_write (void *opaque, uint32_t reg, uint32_t value) +void fdctrl_write(void *opaque, uint32_t reg, uint32_t value) { FDCtrl *fdctrl =3D opaque; =20 @@ -1178,7 +1067,7 @@ static const VMStateDescription vmstate_fdc_phase =3D= { } }; =20 -static const VMStateDescription vmstate_fdc =3D { +const VMStateDescription vmstate_fdc =3D { .name =3D "fdc", .version_id =3D 2, .minimum_version_id =3D 2, @@ -1268,7 +1157,7 @@ static void fdctrl_raise_irq(FDCtrl *fdctrl) } =20 /* Reset controller */ -static void fdctrl_reset(FDCtrl *fdctrl, int do_irq) +void fdctrl_reset(FDCtrl *fdctrl, int do_irq) { int i; =20 @@ -1747,8 +1636,7 @@ static void fdctrl_start_transfer_del(FDCtrl *fdctrl,= int direction) } =20 /* handlers for DMA transfers */ -static int fdctrl_transfer_handler (void *opaque, int nchan, - int dma_pos, int dma_len) +int fdctrl_transfer_handler(void *opaque, int nchan, int dma_pos, int dma_= len) { FDCtrl *fdctrl; FDrive *cur_drv; @@ -2484,7 +2372,7 @@ static void fdctrl_result_timer(void *opaque) =20 /* Init functions */ =20 -static void fdctrl_init_drives(FloppyBus *bus, DriveInfo **fds) +void fdctrl_init_drives(FloppyBus *bus, DriveInfo **fds) { DeviceState *dev; int i; @@ -2542,8 +2430,7 @@ void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base, fdctrl_init_drives(&sys->state.bus, fds); } =20 -static void fdctrl_realize_common(DeviceState *dev, FDCtrl *fdctrl, - Error **errp) +void fdctrl_realize_common(DeviceState *dev, FDCtrl *fdctrl, Error **errp) { int i, j; FDrive *drive; diff --git a/MAINTAINERS b/MAINTAINERS index 7d9cd290426..fd83cfb2ad6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1669,6 +1669,7 @@ M: John Snow L: qemu-block@nongnu.org S: Supported F: hw/block/fdc.c +F: hw/block/fdc-internal.h F: include/hw/block/fdc.h F: tests/qtest/fdc-test.c T: git https://gitlab.com/jsnow/qemu.git ide --=20 2.31.1 From nobody Sat Apr 27 20:33:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162369940335770.55687619129492; Mon, 14 Jun 2021 12:36:43 -0700 (PDT) Received: from localhost ([::1]:53888 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lssO2-0004R6-6O for importer2@patchew.org; Mon, 14 Jun 2021 15:36:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssKH-00055M-HF for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:46483) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssKE-0004yR-8p for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:49 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-89-OHvRzK7OOU2Dnp2jNcIdcw-1; Mon, 14 Jun 2021 15:32:41 -0400 Received: by mail-wr1-f69.google.com with SMTP id h104-20020adf90710000b029010de8455a3aso7463535wrh.12 for ; Mon, 14 Jun 2021 12:32:41 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id a1sm18614717wrg.92.2021.06.14.12.32.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Jun 2021 12:32:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1623699165; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2ppgJSQX88zXRnD5SIV3IiQWkIiXWUtCAHzPOoYK6kc=; b=RYWbXYyEnQI/ptKuIhok7z3cZeDXotfKl2wl10ShIaNn3/9+wHjunt9SDQnw1xa5Y6nUyF tAJ6t1XARxQ5mfozk+bl+BCQf8EKokSzIXZBssTYL45KuxAGPQZjqmV7hsOEgEx+/JbwbC 0UDCnka+IzWby5/Yv8JoS7o8LBpWlYw= X-MC-Unique: OHvRzK7OOU2Dnp2jNcIdcw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2ppgJSQX88zXRnD5SIV3IiQWkIiXWUtCAHzPOoYK6kc=; b=Qzn0q51vZiNPz4jS1+GM5mmgVMGSS6CNDOJRHxBsLMLR/L7LN6efjNMx9oiL0Rwn5+ Ck3Gxdvge68l0j2g1ugO8PQqGSry882xZ9JsgOjR1dMupPTIoealoRBJ5zfiWFQdirUf PcxxNiyZs2XE6OFwK8S+ye970cEcKGozQDqB4yPuCMZ0L2/nVfCj2RT2yC3P5EDiMl// Aus3/5pISD1EXW0srReryiGi+VexfwnvR83FCvS7WxEJRmwgLp1xYrBp5+UlP8vTy3jx gJNlKjubpQr4l76TZg0igXitGpIM58904TIkmcZUTPgk7edK6NBtRcs3dyUH8MglpOWz W9Dg== X-Gm-Message-State: AOAM5338oinD1zlZhOzGmn1m+wzCRquvdSV7TJZQcVwrJl9UrdXZsjbx 9V4HrtPAZCgSe0GPaq/i/3mJxXORKyf1gZ7+xGz0trt65p3VruPYbjOmL7hOVvXYHwlTlXYu3G3 Dl32AYwmSQo0eHivJJVCiGknhliqq6PUPDa2VsfgY4xWmjFyBUMJqZ7xapIFCe8nm X-Received: by 2002:a05:600c:3b13:: with SMTP id m19mr18175055wms.53.1623699160012; Mon, 14 Jun 2021 12:32:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyq09mqh6cazIM0atvJpxN2ysS1dgA2FMGmP2FcR6PYZRSvMitrk+ZCwsmpZBrdIKJBO3l7gw== X-Received: by 2002:a05:600c:3b13:: with SMTP id m19mr18175026wms.53.1623699159668; Mon, 14 Jun 2021 12:32:39 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v7 4/6] hw/block/fdc: Extract ISA floppy controllers to fdc-isa.c Date: Mon, 14 Jun 2021 21:32:18 +0200 Message-Id: <20210614193220.2007159-5-philmd@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210614193220.2007159-1-philmd@redhat.com> References: <20210614193220.2007159-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , John Snow , Mark Cave-Ayland , Paolo Bonzini Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Some machines use floppy controllers via the SysBus interface, and don't need to pull in all the ISA code. Extract the ISA specific code to a new unit: fdc-isa.c, and add a new Kconfig symbol: "FDC_ISA". This allows us to remove the FIXME from commit dd0ff8191ab ("isa: express SuperIO dependencies with Kconfig"). Reviewed-by: John Snow Acked-by: Mark Cave-Ayland Reviewed-by: Mark Cave-Ayland Acked-by: Paolo Bonzini Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/block/fdc-isa.c | 319 +++++++++++++++++++++++++++++++++++++++++++ hw/block/fdc.c | 265 ----------------------------------- MAINTAINERS | 1 + hw/block/Kconfig | 8 +- hw/block/meson.build | 1 + hw/i386/Kconfig | 2 +- hw/isa/Kconfig | 8 +- hw/sparc64/Kconfig | 2 +- 8 files changed, 332 insertions(+), 274 deletions(-) create mode 100644 hw/block/fdc-isa.c diff --git a/hw/block/fdc-isa.c b/hw/block/fdc-isa.c new file mode 100644 index 00000000000..0e22a10732d --- /dev/null +++ b/hw/block/fdc-isa.c @@ -0,0 +1,319 @@ +/* + * QEMU Floppy disk emulator (Intel 82078) + * + * Copyright (c) 2003, 2007 Jocelyn Mayer + * Copyright (c) 2008 Herv=C3=A9 Poussineau + * + * Permission is hereby granted, free of charge, to any person obtaining a= copy + * of this software and associated documentation files (the "Software"), t= o deal + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + */ +/* + * The controller is used in Sun4m systems in a slightly different + * way. There are changes in DOR register and DMA is not available. + */ + +#include "qemu/osdep.h" +#include "hw/block/fdc.h" +#include "qapi/error.h" +#include "qemu/error-report.h" +#include "qemu/timer.h" +#include "hw/acpi/aml-build.h" +#include "hw/irq.h" +#include "hw/isa/isa.h" +#include "hw/qdev-properties.h" +#include "hw/qdev-properties-system.h" +#include "migration/vmstate.h" +#include "hw/block/block.h" +#include "sysemu/block-backend.h" +#include "sysemu/blockdev.h" +#include "sysemu/sysemu.h" +#include "qemu/log.h" +#include "qemu/main-loop.h" +#include "qemu/module.h" +#include "trace.h" +#include "qom/object.h" +#include "fdc-internal.h" + +OBJECT_DECLARE_SIMPLE_TYPE(FDCtrlISABus, ISA_FDC) + +struct FDCtrlISABus { + /*< private >*/ + ISADevice parent_obj; + /*< public >*/ + + uint32_t iobase; + uint32_t irq; + uint32_t dma; + struct FDCtrl state; + int32_t bootindexA; + int32_t bootindexB; +}; + +static void fdctrl_external_reset_isa(DeviceState *d) +{ + FDCtrlISABus *isa =3D ISA_FDC(d); + FDCtrl *s =3D &isa->state; + + fdctrl_reset(s, 0); +} + +void isa_fdc_init_drives(ISADevice *fdc, DriveInfo **fds) +{ + fdctrl_init_drives(&ISA_FDC(fdc)->state.bus, fds); +} + +static const MemoryRegionPortio fdc_portio_list[] =3D { + { 1, 5, 1, .read =3D fdctrl_read, .write =3D fdctrl_write }, + { 7, 1, 1, .read =3D fdctrl_read, .write =3D fdctrl_write }, + PORTIO_END_OF_LIST(), +}; + +static void isabus_fdc_realize(DeviceState *dev, Error **errp) +{ + ISADevice *isadev =3D ISA_DEVICE(dev); + FDCtrlISABus *isa =3D ISA_FDC(dev); + FDCtrl *fdctrl =3D &isa->state; + Error *err =3D NULL; + + isa_register_portio_list(isadev, &fdctrl->portio_list, + isa->iobase, fdc_portio_list, fdctrl, + "fdc"); + + isa_init_irq(isadev, &fdctrl->irq, isa->irq); + fdctrl->dma_chann =3D isa->dma; + if (fdctrl->dma_chann !=3D -1) { + IsaDmaClass *k; + fdctrl->dma =3D isa_get_dma(isa_bus_from_device(isadev), isa->dma); + if (!fdctrl->dma) { + error_setg(errp, "ISA controller does not support DMA"); + return; + } + k =3D ISADMA_GET_CLASS(fdctrl->dma); + k->register_channel(fdctrl->dma, fdctrl->dma_chann, + &fdctrl_transfer_handler, fdctrl); + } + + qdev_set_legacy_instance_id(dev, isa->iobase, 2); + + fdctrl_realize_common(dev, fdctrl, &err); + if (err !=3D NULL) { + error_propagate(errp, err); + return; + } +} + +FloppyDriveType isa_fdc_get_drive_type(ISADevice *fdc, int i) +{ + FDCtrlISABus *isa =3D ISA_FDC(fdc); + + return isa->state.drives[i].drive; +} + +static void isa_fdc_get_drive_max_chs(FloppyDriveType type, uint8_t *maxc, + uint8_t *maxh, uint8_t *maxs) +{ + const FDFormat *fdf; + + *maxc =3D *maxh =3D *maxs =3D 0; + for (fdf =3D fd_formats; fdf->drive !=3D FLOPPY_DRIVE_TYPE_NONE; fdf++= ) { + if (fdf->drive !=3D type) { + continue; + } + if (*maxc < fdf->max_track) { + *maxc =3D fdf->max_track; + } + if (*maxh < fdf->max_head) { + *maxh =3D fdf->max_head; + } + if (*maxs < fdf->last_sect) { + *maxs =3D fdf->last_sect; + } + } + (*maxc)--; +} + +static Aml *build_fdinfo_aml(int idx, FloppyDriveType type) +{ + Aml *dev, *fdi; + uint8_t maxc, maxh, maxs; + + isa_fdc_get_drive_max_chs(type, &maxc, &maxh, &maxs); + + dev =3D aml_device("FLP%c", 'A' + idx); + + aml_append(dev, aml_name_decl("_ADR", aml_int(idx))); + + fdi =3D aml_package(16); + aml_append(fdi, aml_int(idx)); /* Drive Number */ + aml_append(fdi, + aml_int(cmos_get_fd_drive_type(type))); /* Device Type */ + /* + * the values below are the limits of the drive, and are thus independ= ent + * of the inserted media + */ + aml_append(fdi, aml_int(maxc)); /* Maximum Cylinder Number */ + aml_append(fdi, aml_int(maxs)); /* Maximum Sector Number */ + aml_append(fdi, aml_int(maxh)); /* Maximum Head Number */ + /* + * SeaBIOS returns the below values for int 0x13 func 0x08 regardless = of + * the drive type, so shall we + */ + aml_append(fdi, aml_int(0xAF)); /* disk_specify_1 */ + aml_append(fdi, aml_int(0x02)); /* disk_specify_2 */ + aml_append(fdi, aml_int(0x25)); /* disk_motor_wait */ + aml_append(fdi, aml_int(0x02)); /* disk_sector_siz */ + aml_append(fdi, aml_int(0x12)); /* disk_eot */ + aml_append(fdi, aml_int(0x1B)); /* disk_rw_gap */ + aml_append(fdi, aml_int(0xFF)); /* disk_dtl */ + aml_append(fdi, aml_int(0x6C)); /* disk_formt_gap */ + aml_append(fdi, aml_int(0xF6)); /* disk_fill */ + aml_append(fdi, aml_int(0x0F)); /* disk_head_sttl */ + aml_append(fdi, aml_int(0x08)); /* disk_motor_strt */ + + aml_append(dev, aml_name_decl("_FDI", fdi)); + return dev; +} + +int cmos_get_fd_drive_type(FloppyDriveType fd0) +{ + int val; + + switch (fd0) { + case FLOPPY_DRIVE_TYPE_144: + /* 1.44 Mb 3"5 drive */ + val =3D 4; + break; + case FLOPPY_DRIVE_TYPE_288: + /* 2.88 Mb 3"5 drive */ + val =3D 5; + break; + case FLOPPY_DRIVE_TYPE_120: + /* 1.2 Mb 5"5 drive */ + val =3D 2; + break; + case FLOPPY_DRIVE_TYPE_NONE: + default: + val =3D 0; + break; + } + return val; +} + +static void fdc_isa_build_aml(ISADevice *isadev, Aml *scope) +{ + Aml *dev; + Aml *crs; + int i; + +#define ACPI_FDE_MAX_FD 4 + uint32_t fde_buf[5] =3D { + 0, 0, 0, 0, /* presence of floppy drives #0 - #3 */ + cpu_to_le32(2) /* tape presence (2 =3D=3D never present) */ + }; + + crs =3D aml_resource_template(); + aml_append(crs, aml_io(AML_DECODE16, 0x03F2, 0x03F2, 0x00, 0x04)); + aml_append(crs, aml_io(AML_DECODE16, 0x03F7, 0x03F7, 0x00, 0x01)); + aml_append(crs, aml_irq_no_flags(6)); + aml_append(crs, + aml_dma(AML_COMPATIBILITY, AML_NOTBUSMASTER, AML_TRANSFER8, 2)); + + dev =3D aml_device("FDC0"); + aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0700"))); + aml_append(dev, aml_name_decl("_CRS", crs)); + + for (i =3D 0; i < MIN(MAX_FD, ACPI_FDE_MAX_FD); i++) { + FloppyDriveType type =3D isa_fdc_get_drive_type(isadev, i); + + if (type < FLOPPY_DRIVE_TYPE_NONE) { + fde_buf[i] =3D cpu_to_le32(1); /* drive present */ + aml_append(dev, build_fdinfo_aml(i, type)); + } + } + aml_append(dev, aml_name_decl("_FDE", + aml_buffer(sizeof(fde_buf), (uint8_t *)fde_buf))); + + aml_append(scope, dev); +} + +static const VMStateDescription vmstate_isa_fdc =3D { + .name =3D "fdc", + .version_id =3D 2, + .minimum_version_id =3D 2, + .fields =3D (VMStateField[]) { + VMSTATE_STRUCT(state, FDCtrlISABus, 0, vmstate_fdc, FDCtrl), + VMSTATE_END_OF_LIST() + } +}; + +static Property isa_fdc_properties[] =3D { + DEFINE_PROP_UINT32("iobase", FDCtrlISABus, iobase, 0x3f0), + DEFINE_PROP_UINT32("irq", FDCtrlISABus, irq, 6), + DEFINE_PROP_UINT32("dma", FDCtrlISABus, dma, 2), + DEFINE_PROP_SIGNED("fdtypeA", FDCtrlISABus, state.qdev_for_drives[0].t= ype, + FLOPPY_DRIVE_TYPE_AUTO, qdev_prop_fdc_drive_type, + FloppyDriveType), + DEFINE_PROP_SIGNED("fdtypeB", FDCtrlISABus, state.qdev_for_drives[1].t= ype, + FLOPPY_DRIVE_TYPE_AUTO, qdev_prop_fdc_drive_type, + FloppyDriveType), + DEFINE_PROP_SIGNED("fallback", FDCtrlISABus, state.fallback, + FLOPPY_DRIVE_TYPE_288, qdev_prop_fdc_drive_type, + FloppyDriveType), + DEFINE_PROP_END_OF_LIST(), +}; + +static void isabus_fdc_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + ISADeviceClass *isa =3D ISA_DEVICE_CLASS(klass); + + dc->realize =3D isabus_fdc_realize; + dc->fw_name =3D "fdc"; + dc->reset =3D fdctrl_external_reset_isa; + dc->vmsd =3D &vmstate_isa_fdc; + isa->build_aml =3D fdc_isa_build_aml; + device_class_set_props(dc, isa_fdc_properties); + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); +} + +static void isabus_fdc_instance_init(Object *obj) +{ + FDCtrlISABus *isa =3D ISA_FDC(obj); + + device_add_bootindex_property(obj, &isa->bootindexA, + "bootindexA", "/floppy@0", + DEVICE(obj)); + device_add_bootindex_property(obj, &isa->bootindexB, + "bootindexB", "/floppy@1", + DEVICE(obj)); +} + +static const TypeInfo isa_fdc_info =3D { + .name =3D TYPE_ISA_FDC, + .parent =3D TYPE_ISA_DEVICE, + .instance_size =3D sizeof(FDCtrlISABus), + .class_init =3D isabus_fdc_class_init, + .instance_init =3D isabus_fdc_instance_init, +}; + +static void isa_fdc_register_types(void) +{ + type_register_static(&isa_fdc_info); +} + +type_init(isa_fdc_register_types) diff --git a/hw/block/fdc.c b/hw/block/fdc.c index 20ddeb98d83..aa70eb97c6a 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -32,7 +32,6 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/timer.h" -#include "hw/acpi/aml-build.h" #include "hw/irq.h" #include "hw/isa/isa.h" #include "hw/qdev-properties.h" @@ -785,19 +784,6 @@ struct FDCtrlSysBus { struct FDCtrl state; }; =20 -OBJECT_DECLARE_SIMPLE_TYPE(FDCtrlISABus, ISA_FDC) - -struct FDCtrlISABus { - ISADevice parent_obj; - - uint32_t iobase; - uint32_t irq; - uint32_t dma; - struct FDCtrl state; - int32_t bootindexA; - int32_t bootindexB; -}; - uint32_t fdctrl_read(void *opaque, uint32_t reg) { FDCtrl *fdctrl =3D opaque; @@ -1121,14 +1107,6 @@ static void fdctrl_external_reset_sysbus(DeviceState= *d) fdctrl_reset(s, 0); } =20 -static void fdctrl_external_reset_isa(DeviceState *d) -{ - FDCtrlISABus *isa =3D ISA_FDC(d); - FDCtrl *s =3D &isa->state; - - fdctrl_reset(s, 0); -} - static void fdctrl_handle_tc(void *opaque, int irq, int level) { trace_fdctrl_tc_pulse(level); @@ -2389,11 +2367,6 @@ void fdctrl_init_drives(FloppyBus *bus, DriveInfo **= fds) } } =20 -void isa_fdc_init_drives(ISADevice *fdc, DriveInfo **fds) -{ - fdctrl_init_drives(&ISA_FDC(fdc)->state.bus, fds); -} - void fdctrl_init_sysbus(qemu_irq irq, int dma_chann, hwaddr mmio_base, DriveInfo **fds) { @@ -2464,14 +2437,6 @@ void fdctrl_realize_common(DeviceState *dev, FDCtrl = *fdctrl, Error **errp) fdctrl->config =3D FD_CONFIG_EIS | FD_CONFIG_EFIFO; /* Implicit seek, = polling & FIFO enabled */ fdctrl->num_floppies =3D MAX_FD; =20 - if (fdctrl->dma_chann !=3D -1) { - IsaDmaClass *k; - assert(fdctrl->dma); - k =3D ISADMA_GET_CLASS(fdctrl->dma); - k->register_channel(fdctrl->dma, fdctrl->dma_chann, - &fdctrl_transfer_handler, fdctrl); - } - floppy_bus_create(fdctrl, &fdctrl->bus, dev); =20 for (i =3D 0; i < MAX_FD; i++) { @@ -2482,41 +2447,6 @@ void fdctrl_realize_common(DeviceState *dev, FDCtrl = *fdctrl, Error **errp) } } =20 -static const MemoryRegionPortio fdc_portio_list[] =3D { - { 1, 5, 1, .read =3D fdctrl_read, .write =3D fdctrl_write }, - { 7, 1, 1, .read =3D fdctrl_read, .write =3D fdctrl_write }, - PORTIO_END_OF_LIST(), -}; - -static void isabus_fdc_realize(DeviceState *dev, Error **errp) -{ - ISADevice *isadev =3D ISA_DEVICE(dev); - FDCtrlISABus *isa =3D ISA_FDC(dev); - FDCtrl *fdctrl =3D &isa->state; - Error *err =3D NULL; - - isa_register_portio_list(isadev, &fdctrl->portio_list, - isa->iobase, fdc_portio_list, fdctrl, - "fdc"); - - isa_init_irq(isadev, &fdctrl->irq, isa->irq); - fdctrl->dma_chann =3D isa->dma; - if (fdctrl->dma_chann !=3D -1) { - fdctrl->dma =3D isa_get_dma(isa_bus_from_device(isadev), isa->dma); - if (!fdctrl->dma) { - error_setg(errp, "ISA controller does not support DMA"); - return; - } - } - - qdev_set_legacy_instance_id(dev, isa->iobase, 2); - fdctrl_realize_common(dev, fdctrl, &err); - if (err !=3D NULL) { - error_propagate(errp, err); - return; - } -} - static void sysbus_fdc_initfn(Object *obj) { SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); @@ -2564,200 +2494,6 @@ static void sysbus_fdc_common_realize(DeviceState *= dev, Error **errp) fdctrl_realize_common(dev, fdctrl, errp); } =20 -FloppyDriveType isa_fdc_get_drive_type(ISADevice *fdc, int i) -{ - FDCtrlISABus *isa =3D ISA_FDC(fdc); - - return isa->state.drives[i].drive; -} - -static void isa_fdc_get_drive_max_chs(FloppyDriveType type, uint8_t *maxc, - uint8_t *maxh, uint8_t *maxs) -{ - const FDFormat *fdf; - - *maxc =3D *maxh =3D *maxs =3D 0; - for (fdf =3D fd_formats; fdf->drive !=3D FLOPPY_DRIVE_TYPE_NONE; fdf++= ) { - if (fdf->drive !=3D type) { - continue; - } - if (*maxc < fdf->max_track) { - *maxc =3D fdf->max_track; - } - if (*maxh < fdf->max_head) { - *maxh =3D fdf->max_head; - } - if (*maxs < fdf->last_sect) { - *maxs =3D fdf->last_sect; - } - } - (*maxc)--; -} - -static Aml *build_fdinfo_aml(int idx, FloppyDriveType type) -{ - Aml *dev, *fdi; - uint8_t maxc, maxh, maxs; - - isa_fdc_get_drive_max_chs(type, &maxc, &maxh, &maxs); - - dev =3D aml_device("FLP%c", 'A' + idx); - - aml_append(dev, aml_name_decl("_ADR", aml_int(idx))); - - fdi =3D aml_package(16); - aml_append(fdi, aml_int(idx)); /* Drive Number */ - aml_append(fdi, - aml_int(cmos_get_fd_drive_type(type))); /* Device Type */ - /* - * the values below are the limits of the drive, and are thus independ= ent - * of the inserted media - */ - aml_append(fdi, aml_int(maxc)); /* Maximum Cylinder Number */ - aml_append(fdi, aml_int(maxs)); /* Maximum Sector Number */ - aml_append(fdi, aml_int(maxh)); /* Maximum Head Number */ - /* - * SeaBIOS returns the below values for int 0x13 func 0x08 regardless = of - * the drive type, so shall we - */ - aml_append(fdi, aml_int(0xAF)); /* disk_specify_1 */ - aml_append(fdi, aml_int(0x02)); /* disk_specify_2 */ - aml_append(fdi, aml_int(0x25)); /* disk_motor_wait */ - aml_append(fdi, aml_int(0x02)); /* disk_sector_siz */ - aml_append(fdi, aml_int(0x12)); /* disk_eot */ - aml_append(fdi, aml_int(0x1B)); /* disk_rw_gap */ - aml_append(fdi, aml_int(0xFF)); /* disk_dtl */ - aml_append(fdi, aml_int(0x6C)); /* disk_formt_gap */ - aml_append(fdi, aml_int(0xF6)); /* disk_fill */ - aml_append(fdi, aml_int(0x0F)); /* disk_head_sttl */ - aml_append(fdi, aml_int(0x08)); /* disk_motor_strt */ - - aml_append(dev, aml_name_decl("_FDI", fdi)); - return dev; -} - -int cmos_get_fd_drive_type(FloppyDriveType fd0) -{ - int val; - - switch (fd0) { - case FLOPPY_DRIVE_TYPE_144: - /* 1.44 Mb 3"5 drive */ - val =3D 4; - break; - case FLOPPY_DRIVE_TYPE_288: - /* 2.88 Mb 3"5 drive */ - val =3D 5; - break; - case FLOPPY_DRIVE_TYPE_120: - /* 1.2 Mb 5"5 drive */ - val =3D 2; - break; - case FLOPPY_DRIVE_TYPE_NONE: - default: - val =3D 0; - break; - } - return val; -} - -static void fdc_isa_build_aml(ISADevice *isadev, Aml *scope) -{ - Aml *dev; - Aml *crs; - int i; - -#define ACPI_FDE_MAX_FD 4 - uint32_t fde_buf[5] =3D { - 0, 0, 0, 0, /* presence of floppy drives #0 - #3 */ - cpu_to_le32(2) /* tape presence (2 =3D=3D never present) */ - }; - - crs =3D aml_resource_template(); - aml_append(crs, aml_io(AML_DECODE16, 0x03F2, 0x03F2, 0x00, 0x04)); - aml_append(crs, aml_io(AML_DECODE16, 0x03F7, 0x03F7, 0x00, 0x01)); - aml_append(crs, aml_irq_no_flags(6)); - aml_append(crs, - aml_dma(AML_COMPATIBILITY, AML_NOTBUSMASTER, AML_TRANSFER8, 2)); - - dev =3D aml_device("FDC0"); - aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0700"))); - aml_append(dev, aml_name_decl("_CRS", crs)); - - for (i =3D 0; i < MIN(MAX_FD, ACPI_FDE_MAX_FD); i++) { - FloppyDriveType type =3D isa_fdc_get_drive_type(isadev, i); - - if (type < FLOPPY_DRIVE_TYPE_NONE) { - fde_buf[i] =3D cpu_to_le32(1); /* drive present */ - aml_append(dev, build_fdinfo_aml(i, type)); - } - } - aml_append(dev, aml_name_decl("_FDE", - aml_buffer(sizeof(fde_buf), (uint8_t *)fde_buf))); - - aml_append(scope, dev); -} - -static const VMStateDescription vmstate_isa_fdc =3D{ - .name =3D "fdc", - .version_id =3D 2, - .minimum_version_id =3D 2, - .fields =3D (VMStateField[]) { - VMSTATE_STRUCT(state, FDCtrlISABus, 0, vmstate_fdc, FDCtrl), - VMSTATE_END_OF_LIST() - } -}; - -static Property isa_fdc_properties[] =3D { - DEFINE_PROP_UINT32("iobase", FDCtrlISABus, iobase, 0x3f0), - DEFINE_PROP_UINT32("irq", FDCtrlISABus, irq, 6), - DEFINE_PROP_UINT32("dma", FDCtrlISABus, dma, 2), - DEFINE_PROP_SIGNED("fdtypeA", FDCtrlISABus, state.qdev_for_drives[0].t= ype, - FLOPPY_DRIVE_TYPE_AUTO, qdev_prop_fdc_drive_type, - FloppyDriveType), - DEFINE_PROP_SIGNED("fdtypeB", FDCtrlISABus, state.qdev_for_drives[1].t= ype, - FLOPPY_DRIVE_TYPE_AUTO, qdev_prop_fdc_drive_type, - FloppyDriveType), - DEFINE_PROP_SIGNED("fallback", FDCtrlISABus, state.fallback, - FLOPPY_DRIVE_TYPE_288, qdev_prop_fdc_drive_type, - FloppyDriveType), - DEFINE_PROP_END_OF_LIST(), -}; - -static void isabus_fdc_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - ISADeviceClass *isa =3D ISA_DEVICE_CLASS(klass); - - dc->realize =3D isabus_fdc_realize; - dc->fw_name =3D "fdc"; - dc->reset =3D fdctrl_external_reset_isa; - dc->vmsd =3D &vmstate_isa_fdc; - isa->build_aml =3D fdc_isa_build_aml; - device_class_set_props(dc, isa_fdc_properties); - set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); -} - -static void isabus_fdc_instance_init(Object *obj) -{ - FDCtrlISABus *isa =3D ISA_FDC(obj); - - device_add_bootindex_property(obj, &isa->bootindexA, - "bootindexA", "/floppy@0", - DEVICE(obj)); - device_add_bootindex_property(obj, &isa->bootindexB, - "bootindexB", "/floppy@1", - DEVICE(obj)); -} - -static const TypeInfo isa_fdc_info =3D { - .name =3D TYPE_ISA_FDC, - .parent =3D TYPE_ISA_DEVICE, - .instance_size =3D sizeof(FDCtrlISABus), - .class_init =3D isabus_fdc_class_init, - .instance_init =3D isabus_fdc_instance_init, -}; - static const VMStateDescription vmstate_sysbus_fdc =3D{ .name =3D "fdc", .version_id =3D 2, @@ -2841,7 +2577,6 @@ static const TypeInfo sysbus_fdc_type_info =3D { =20 static void fdc_register_types(void) { - type_register_static(&isa_fdc_info); type_register_static(&sysbus_fdc_type_info); type_register_static(&sysbus_fdc_info); type_register_static(&sun4m_fdc_info); diff --git a/MAINTAINERS b/MAINTAINERS index fd83cfb2ad6..f2fb24ef7e7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1670,6 +1670,7 @@ L: qemu-block@nongnu.org S: Supported F: hw/block/fdc.c F: hw/block/fdc-internal.h +F: hw/block/fdc-isa.c F: include/hw/block/fdc.h F: tests/qtest/fdc-test.c T: git https://gitlab.com/jsnow/qemu.git ide diff --git a/hw/block/Kconfig b/hw/block/Kconfig index 295441e64ab..8c3be60a197 100644 --- a/hw/block/Kconfig +++ b/hw/block/Kconfig @@ -1,8 +1,10 @@ config FDC bool - # FIXME: there is no separate file for the MMIO floppy disk controller= , so - # select ISA_BUS here instead of polluting each board that requires one - select ISA_BUS + +config FDC_ISA + bool + depends on ISA_BUS + select FDC =20 config SSI_M25P80 bool diff --git a/hw/block/meson.build b/hw/block/meson.build index 8b0de54db1f..8cc79b5fcb4 100644 --- a/hw/block/meson.build +++ b/hw/block/meson.build @@ -5,6 +5,7 @@ )) softmmu_ss.add(when: 'CONFIG_ECC', if_true: files('ecc.c')) softmmu_ss.add(when: 'CONFIG_FDC', if_true: files('fdc.c')) +softmmu_ss.add(when: 'CONFIG_FDC_ISA', if_true: files('fdc-isa.c')) softmmu_ss.add(when: 'CONFIG_NAND', if_true: files('nand.c')) softmmu_ss.add(when: 'CONFIG_ONENAND', if_true: files('onenand.c')) softmmu_ss.add(when: 'CONFIG_PFLASH_CFI01', if_true: files('pflash_cfi01.c= ')) diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index 66838fa397b..aacb6f6d964 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -24,7 +24,7 @@ config PC imply VGA_PCI imply VIRTIO_VGA imply NVDIMM - select FDC + select FDC_ISA select I8259 select I8254 select PCKBD diff --git a/hw/isa/Kconfig b/hw/isa/Kconfig index 7216f66a54a..96db170eff3 100644 --- a/hw/isa/Kconfig +++ b/hw/isa/Kconfig @@ -17,7 +17,7 @@ config ISA_SUPERIO bool select ISA_BUS select PCKBD - select FDC + select FDC_ISA =20 config PC87312 bool @@ -28,7 +28,7 @@ config PC87312 select MC146818RTC select SERIAL_ISA select PARALLEL - select FDC + select FDC_ISA select IDE_ISA =20 config PIIX3 @@ -47,7 +47,7 @@ config VT82C686 select ISA_SUPERIO select ACPI_SMBUS select SERIAL_ISA - select FDC + select FDC_ISA select USB_UHCI select APM =20 @@ -56,7 +56,7 @@ config SMC37C669 select ISA_SUPERIO select SERIAL_ISA select PARALLEL - select FDC + select FDC_ISA =20 config LPC_ICH9 bool diff --git a/hw/sparc64/Kconfig b/hw/sparc64/Kconfig index 980a201bb73..7e557ad17b0 100644 --- a/hw/sparc64/Kconfig +++ b/hw/sparc64/Kconfig @@ -6,7 +6,7 @@ config SUN4U imply PARALLEL select M48T59 select ISA_BUS - select FDC + select FDC_ISA select SERIAL_ISA select PCI_SABRE select IDE_CMD646 --=20 2.31.1 From nobody Sat Apr 27 20:33:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623699307747330.6423287567361; Mon, 14 Jun 2021 12:35:07 -0700 (PDT) Received: from localhost ([::1]:46808 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lssMU-0007zf-Mv for importer2@patchew.org; Mon, 14 Jun 2021 15:35:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43386) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssKI-00059G-TO for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:50 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:34116) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssKG-0004ys-10 for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:50 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-565-HvP_p_RGNnyepyJlsUa6PA-1; Mon, 14 Jun 2021 15:32:46 -0400 Received: by mail-wr1-f70.google.com with SMTP id z4-20020adfe5440000b0290114f89c9931so7432260wrm.17 for ; Mon, 14 Jun 2021 12:32:45 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id o18sm16906237wrx.59.2021.06.14.12.32.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Jun 2021 12:32:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1623699167; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8R3xgOhj2z9fNnOaQSYk9JJxtuZpSaSIksOcehK1TqQ=; b=bJrCZyUaGjZmIkg61GCFtvI7UhD1/UohCqHajggijcichIR2rjFm2XqlB/rXtqeykaw95Z sbJ+spIKP/b66F7IiNGIXxXMsEcESRMWKI1DtB8FRinJ7K8f1DTZOqXbN7EBa6//N53MfS gTOGWQ+sY6OgtRGNvPvobzIFS/9wM28= X-MC-Unique: HvP_p_RGNnyepyJlsUa6PA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8R3xgOhj2z9fNnOaQSYk9JJxtuZpSaSIksOcehK1TqQ=; b=mbX4itdU3T+kDQheA4fm74Yjt8G9d9Dy39ezl6nTWzKA7M/0QWvjyzPXAtYRlFcOv9 qUswr6sHChqV6tzkUryVdcm/udVThgkUJEsQbDVOnpPm93yp7oD6XX9ZEHSXI8Q+WNth +MbtXWGL/OOWbo3azdu7Uinu5u/HgSChoh1x+A9BkVXpubBFqKP5TN63bAjkP+qRZZKy hRLNL3s6RgMFeoFTqwyMtvUZzKMwvrZUcDK02OAuC3oibt7gxvUhgScqP7SNKZWgcQDy zDTSNKWGkTssghLDQPnEzrUxWwIyA0NF/YjhnMUmdkjIq/mlBW7Jp/0mrUU8JxwA88B5 xi2g== X-Gm-Message-State: AOAM531uWevSj8IGhKS4TKFjjF454hM5CKv60d62Xu684/9wNGElFBaQ xnPBGjnqxAMLA4WtkUqAx7suYbrxpcAB6ILswpAb4OJxwXhhj7o1CSD8Qto9i9VYV2ZT7ZVRe/6 yhGaoQGs1Cp4ZfOlY2K/2pjz/vRkCT7GyOSoPN92K8BzH7Boh8cjSpt4Gt68tJnL0 X-Received: by 2002:a7b:c2a2:: with SMTP id c2mr18376578wmk.89.1623699164362; Mon, 14 Jun 2021 12:32:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy77J8EJHKshJQsqjTS5u5Fuus8nx4+kI1F7MKxKm6A1Zro3/5V1JOiLcu6KryviVawlpJ2FQ== X-Received: by 2002:a7b:c2a2:: with SMTP id c2mr18376545wmk.89.1623699164039; Mon, 14 Jun 2021 12:32:44 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v7 5/6] hw/block/fdc: Extract SysBus floppy controllers to fdc-sysbus.c Date: Mon, 14 Jun 2021 21:32:19 +0200 Message-Id: <20210614193220.2007159-6-philmd@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210614193220.2007159-1-philmd@redhat.com> References: <20210614193220.2007159-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , John Snow , Mark Cave-Ayland , Paolo Bonzini Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Some machines use floppy controllers via the SysBus interface, and don't need to pull in all the SysBus code. Extract the SysBus specific code to a new unit: fdc-sysbus.c, and add a new Kconfig symbol: "FDC_SYSBUS". Reviewed-by: John Snow Acked-by: Mark Cave-Ayland Reviewed-by: Mark Cave-Ayland Acked-by: Paolo Bonzini Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/block/fdc-sysbus.c | 249 ++++++++++++++++++++++++++++++++++++++++++ hw/block/fdc.c | 220 ------------------------------------- MAINTAINERS | 1 + hw/block/Kconfig | 4 + hw/block/meson.build | 1 + hw/block/trace-events | 2 + hw/mips/Kconfig | 2 +- hw/sparc/Kconfig | 2 +- 8 files changed, 259 insertions(+), 222 deletions(-) create mode 100644 hw/block/fdc-sysbus.c diff --git a/hw/block/fdc-sysbus.c b/hw/block/fdc-sysbus.c new file mode 100644 index 00000000000..c6308f53004 --- /dev/null +++ b/hw/block/fdc-sysbus.c @@ -0,0 +1,249 @@ +/* + * QEMU Floppy disk emulator (Intel 82078) + * + * Copyright (c) 2003, 2007 Jocelyn Mayer + * Copyright (c) 2008 Herv=C3=A9 Poussineau + * + * Permission is hereby granted, free of charge, to any person obtaining a= copy + * of this software and associated documentation files (the "Software"), t= o deal + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qom/object.h" +#include "hw/sysbus.h" +#include "hw/block/fdc.h" +#include "migration/vmstate.h" +#include "fdc-internal.h" +#include "trace.h" + +#define TYPE_SYSBUS_FDC "base-sysbus-fdc" +typedef struct FDCtrlSysBusClass FDCtrlSysBusClass; +typedef struct FDCtrlSysBus FDCtrlSysBus; +DECLARE_OBJ_CHECKERS(FDCtrlSysBus, FDCtrlSysBusClass, + SYSBUS_FDC, TYPE_SYSBUS_FDC) + +struct FDCtrlSysBusClass { + /*< private >*/ + SysBusDeviceClass parent_class; + /*< public >*/ + + bool use_strict_io; +}; + +struct FDCtrlSysBus { + /*< private >*/ + SysBusDevice parent_obj; + /*< public >*/ + + struct FDCtrl state; +}; + +static uint64_t fdctrl_read_mem(void *opaque, hwaddr reg, unsigned ize) +{ + return fdctrl_read(opaque, (uint32_t)reg); +} + +static void fdctrl_write_mem(void *opaque, hwaddr reg, + uint64_t value, unsigned size) +{ + fdctrl_write(opaque, (uint32_t)reg, value); +} + +static const MemoryRegionOps fdctrl_mem_ops =3D { + .read =3D fdctrl_read_mem, + .write =3D fdctrl_write_mem, + .endianness =3D DEVICE_NATIVE_ENDIAN, +}; + +static const MemoryRegionOps fdctrl_mem_strict_ops =3D { + .read =3D fdctrl_read_mem, + .write =3D fdctrl_write_mem, + .endianness =3D DEVICE_NATIVE_ENDIAN, + .valid =3D { + .min_access_size =3D 1, + .max_access_size =3D 1, + }, +}; + +static void fdctrl_external_reset_sysbus(DeviceState *d) +{ + FDCtrlSysBus *sys =3D SYSBUS_FDC(d); + FDCtrl *s =3D &sys->state; + + fdctrl_reset(s, 0); +} + +static void fdctrl_handle_tc(void *opaque, int irq, int level) +{ + trace_fdctrl_tc_pulse(level); +} + +void fdctrl_init_sysbus(qemu_irq irq, int dma_chann, + hwaddr mmio_base, DriveInfo **fds) +{ + FDCtrl *fdctrl; + DeviceState *dev; + SysBusDevice *sbd; + FDCtrlSysBus *sys; + + dev =3D qdev_new("sysbus-fdc"); + sys =3D SYSBUS_FDC(dev); + fdctrl =3D &sys->state; + fdctrl->dma_chann =3D dma_chann; /* FIXME */ + sbd =3D SYS_BUS_DEVICE(dev); + sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_connect_irq(sbd, 0, irq); + sysbus_mmio_map(sbd, 0, mmio_base); + + fdctrl_init_drives(&sys->state.bus, fds); +} + +void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base, + DriveInfo **fds, qemu_irq *fdc_tc) +{ + DeviceState *dev; + FDCtrlSysBus *sys; + + dev =3D qdev_new("sun-fdtwo"); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sys =3D SYSBUS_FDC(dev); + sysbus_connect_irq(SYS_BUS_DEVICE(sys), 0, irq); + sysbus_mmio_map(SYS_BUS_DEVICE(sys), 0, io_base); + *fdc_tc =3D qdev_get_gpio_in(dev, 0); + + fdctrl_init_drives(&sys->state.bus, fds); +} + +static void sysbus_fdc_common_instance_init(Object *obj) +{ + DeviceState *dev =3D DEVICE(obj); + FDCtrlSysBusClass *sbdc =3D SYSBUS_FDC_GET_CLASS(obj); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); + FDCtrlSysBus *sys =3D SYSBUS_FDC(obj); + FDCtrl *fdctrl =3D &sys->state; + + qdev_set_legacy_instance_id(dev, 0 /* io */, 2); /* FIXME */ + + memory_region_init_io(&fdctrl->iomem, obj, + sbdc->use_strict_io ? &fdctrl_mem_strict_ops + : &fdctrl_mem_ops, + fdctrl, "fdc", 0x08); + sysbus_init_mmio(sbd, &fdctrl->iomem); + + sysbus_init_irq(sbd, &fdctrl->irq); + qdev_init_gpio_in(dev, fdctrl_handle_tc, 1); +} + +static void sysbus_fdc_realize(DeviceState *dev, Error **errp) +{ + FDCtrlSysBus *sys =3D SYSBUS_FDC(dev); + FDCtrl *fdctrl =3D &sys->state; + + fdctrl_realize_common(dev, fdctrl, errp); +} + +static const VMStateDescription vmstate_sysbus_fdc =3D { + .name =3D "fdc", + .version_id =3D 2, + .minimum_version_id =3D 2, + .fields =3D (VMStateField[]) { + VMSTATE_STRUCT(state, FDCtrlSysBus, 0, vmstate_fdc, FDCtrl), + VMSTATE_END_OF_LIST() + } +}; + +static void sysbus_fdc_common_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->realize =3D sysbus_fdc_realize; + dc->reset =3D fdctrl_external_reset_sysbus; + dc->vmsd =3D &vmstate_sysbus_fdc; + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); +} + +static const TypeInfo sysbus_fdc_common_typeinfo =3D { + .name =3D TYPE_SYSBUS_FDC, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(FDCtrlSysBus), + .instance_init =3D sysbus_fdc_common_instance_init, + .abstract =3D true, + .class_init =3D sysbus_fdc_common_class_init, + .class_size =3D sizeof(FDCtrlSysBusClass), +}; + +static Property sysbus_fdc_properties[] =3D { + DEFINE_PROP_SIGNED("fdtypeA", FDCtrlSysBus, state.qdev_for_drives[0].t= ype, + FLOPPY_DRIVE_TYPE_AUTO, qdev_prop_fdc_drive_type, + FloppyDriveType), + DEFINE_PROP_SIGNED("fdtypeB", FDCtrlSysBus, state.qdev_for_drives[1].t= ype, + FLOPPY_DRIVE_TYPE_AUTO, qdev_prop_fdc_drive_type, + FloppyDriveType), + DEFINE_PROP_SIGNED("fallback", FDCtrlSysBus, state.fallback, + FLOPPY_DRIVE_TYPE_144, qdev_prop_fdc_drive_type, + FloppyDriveType), + DEFINE_PROP_END_OF_LIST(), +}; + +static void sysbus_fdc_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + device_class_set_props(dc, sysbus_fdc_properties); +} + +static const TypeInfo sysbus_fdc_typeinfo =3D { + .name =3D "sysbus-fdc", + .parent =3D TYPE_SYSBUS_FDC, + .class_init =3D sysbus_fdc_class_init, +}; + +static Property sun4m_fdc_properties[] =3D { + DEFINE_PROP_SIGNED("fdtype", FDCtrlSysBus, state.qdev_for_drives[0].ty= pe, + FLOPPY_DRIVE_TYPE_AUTO, qdev_prop_fdc_drive_type, + FloppyDriveType), + DEFINE_PROP_SIGNED("fallback", FDCtrlSysBus, state.fallback, + FLOPPY_DRIVE_TYPE_144, qdev_prop_fdc_drive_type, + FloppyDriveType), + DEFINE_PROP_END_OF_LIST(), +}; + +static void sun4m_fdc_class_init(ObjectClass *klass, void *data) +{ + FDCtrlSysBusClass *sbdc =3D SYSBUS_FDC_CLASS(klass); + DeviceClass *dc =3D DEVICE_CLASS(klass); + + sbdc->use_strict_io =3D true; + device_class_set_props(dc, sun4m_fdc_properties); +} + +static const TypeInfo sun4m_fdc_typeinfo =3D { + .name =3D "sun-fdtwo", + .parent =3D TYPE_SYSBUS_FDC, + .class_init =3D sun4m_fdc_class_init, +}; + +static void sysbus_fdc_register_types(void) +{ + type_register_static(&sysbus_fdc_common_typeinfo); + type_register_static(&sysbus_fdc_typeinfo); + type_register_static(&sun4m_fdc_typeinfo); +} + +type_init(sysbus_fdc_register_types) diff --git a/hw/block/fdc.c b/hw/block/fdc.c index aa70eb97c6a..9014cd30b3a 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -36,7 +36,6 @@ #include "hw/isa/isa.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" -#include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/block/block.h" #include "sysemu/block-backend.h" @@ -773,17 +772,6 @@ static FloppyDriveType get_fallback_drive_type(FDrive = *drv) return drv->fdctrl->fallback; } =20 -#define TYPE_SYSBUS_FDC "base-sysbus-fdc" -OBJECT_DECLARE_SIMPLE_TYPE(FDCtrlSysBus, SYSBUS_FDC) - -struct FDCtrlSysBus { - /*< private >*/ - SysBusDevice parent_obj; - /*< public >*/ - - struct FDCtrl state; -}; - uint32_t fdctrl_read(void *opaque, uint32_t reg) { FDCtrl *fdctrl =3D opaque; @@ -848,34 +836,6 @@ void fdctrl_write(void *opaque, uint32_t reg, uint32_t= value) } } =20 -static uint64_t fdctrl_read_mem (void *opaque, hwaddr reg, - unsigned ize) -{ - return fdctrl_read(opaque, (uint32_t)reg); -} - -static void fdctrl_write_mem (void *opaque, hwaddr reg, - uint64_t value, unsigned size) -{ - fdctrl_write(opaque, (uint32_t)reg, value); -} - -static const MemoryRegionOps fdctrl_mem_ops =3D { - .read =3D fdctrl_read_mem, - .write =3D fdctrl_write_mem, - .endianness =3D DEVICE_NATIVE_ENDIAN, -}; - -static const MemoryRegionOps fdctrl_mem_strict_ops =3D { - .read =3D fdctrl_read_mem, - .write =3D fdctrl_write_mem, - .endianness =3D DEVICE_NATIVE_ENDIAN, - .valid =3D { - .min_access_size =3D 1, - .max_access_size =3D 1, - }, -}; - static bool fdrive_media_changed_needed(void *opaque) { FDrive *drive =3D opaque; @@ -1099,19 +1059,6 @@ const VMStateDescription vmstate_fdc =3D { } }; =20 -static void fdctrl_external_reset_sysbus(DeviceState *d) -{ - FDCtrlSysBus *sys =3D SYSBUS_FDC(d); - FDCtrl *s =3D &sys->state; - - fdctrl_reset(s, 0); -} - -static void fdctrl_handle_tc(void *opaque, int irq, int level) -{ - trace_fdctrl_tc_pulse(level); -} - /* Change IRQ state */ static void fdctrl_reset_irq(FDCtrl *fdctrl) { @@ -2367,42 +2314,6 @@ void fdctrl_init_drives(FloppyBus *bus, DriveInfo **= fds) } } =20 -void fdctrl_init_sysbus(qemu_irq irq, int dma_chann, - hwaddr mmio_base, DriveInfo **fds) -{ - FDCtrl *fdctrl; - DeviceState *dev; - SysBusDevice *sbd; - FDCtrlSysBus *sys; - - dev =3D qdev_new("sysbus-fdc"); - sys =3D SYSBUS_FDC(dev); - fdctrl =3D &sys->state; - fdctrl->dma_chann =3D dma_chann; /* FIXME */ - sbd =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sbd, &error_fatal); - sysbus_connect_irq(sbd, 0, irq); - sysbus_mmio_map(sbd, 0, mmio_base); - - fdctrl_init_drives(&sys->state.bus, fds); -} - -void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base, - DriveInfo **fds, qemu_irq *fdc_tc) -{ - DeviceState *dev; - FDCtrlSysBus *sys; - - dev =3D qdev_new("sun-fdtwo"); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); - sys =3D SYSBUS_FDC(dev); - sysbus_connect_irq(SYS_BUS_DEVICE(sys), 0, irq); - sysbus_mmio_map(SYS_BUS_DEVICE(sys), 0, io_base); - *fdc_tc =3D qdev_get_gpio_in(dev, 0); - - fdctrl_init_drives(&sys->state.bus, fds); -} - void fdctrl_realize_common(DeviceState *dev, FDCtrl *fdctrl, Error **errp) { int i, j; @@ -2447,139 +2358,8 @@ void fdctrl_realize_common(DeviceState *dev, FDCtrl= *fdctrl, Error **errp) } } =20 -static void sysbus_fdc_initfn(Object *obj) -{ - SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); - FDCtrlSysBus *sys =3D SYSBUS_FDC(obj); - FDCtrl *fdctrl =3D &sys->state; - - fdctrl->dma_chann =3D -1; - - memory_region_init_io(&fdctrl->iomem, obj, &fdctrl_mem_ops, fdctrl, - "fdc", 0x08); - sysbus_init_mmio(sbd, &fdctrl->iomem); -} - -static void sun4m_fdc_initfn(Object *obj) -{ - SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); - FDCtrlSysBus *sys =3D SYSBUS_FDC(obj); - FDCtrl *fdctrl =3D &sys->state; - - fdctrl->dma_chann =3D -1; - - memory_region_init_io(&fdctrl->iomem, obj, &fdctrl_mem_strict_ops, - fdctrl, "fdctrl", 0x08); - sysbus_init_mmio(sbd, &fdctrl->iomem); -} - -static void sysbus_fdc_common_initfn(Object *obj) -{ - DeviceState *dev =3D DEVICE(obj); - SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); - FDCtrlSysBus *sys =3D SYSBUS_FDC(obj); - FDCtrl *fdctrl =3D &sys->state; - - qdev_set_legacy_instance_id(dev, 0 /* io */, 2); /* FIXME */ - - sysbus_init_irq(sbd, &fdctrl->irq); - qdev_init_gpio_in(dev, fdctrl_handle_tc, 1); -} - -static void sysbus_fdc_common_realize(DeviceState *dev, Error **errp) -{ - FDCtrlSysBus *sys =3D SYSBUS_FDC(dev); - FDCtrl *fdctrl =3D &sys->state; - - fdctrl_realize_common(dev, fdctrl, errp); -} - -static const VMStateDescription vmstate_sysbus_fdc =3D{ - .name =3D "fdc", - .version_id =3D 2, - .minimum_version_id =3D 2, - .fields =3D (VMStateField[]) { - VMSTATE_STRUCT(state, FDCtrlSysBus, 0, vmstate_fdc, FDCtrl), - VMSTATE_END_OF_LIST() - } -}; - -static Property sysbus_fdc_properties[] =3D { - DEFINE_PROP_SIGNED("fdtypeA", FDCtrlSysBus, state.qdev_for_drives[0].t= ype, - FLOPPY_DRIVE_TYPE_AUTO, qdev_prop_fdc_drive_type, - FloppyDriveType), - DEFINE_PROP_SIGNED("fdtypeB", FDCtrlSysBus, state.qdev_for_drives[1].t= ype, - FLOPPY_DRIVE_TYPE_AUTO, qdev_prop_fdc_drive_type, - FloppyDriveType), - DEFINE_PROP_SIGNED("fallback", FDCtrlSysBus, state.fallback, - FLOPPY_DRIVE_TYPE_144, qdev_prop_fdc_drive_type, - FloppyDriveType), - DEFINE_PROP_END_OF_LIST(), -}; - -static void sysbus_fdc_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - - device_class_set_props(dc, sysbus_fdc_properties); - set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); -} - -static const TypeInfo sysbus_fdc_info =3D { - .name =3D "sysbus-fdc", - .parent =3D TYPE_SYSBUS_FDC, - .instance_init =3D sysbus_fdc_initfn, - .class_init =3D sysbus_fdc_class_init, -}; - -static Property sun4m_fdc_properties[] =3D { - DEFINE_PROP_SIGNED("fdtype", FDCtrlSysBus, state.qdev_for_drives[0].ty= pe, - FLOPPY_DRIVE_TYPE_AUTO, qdev_prop_fdc_drive_type, - FloppyDriveType), - DEFINE_PROP_SIGNED("fallback", FDCtrlSysBus, state.fallback, - FLOPPY_DRIVE_TYPE_144, qdev_prop_fdc_drive_type, - FloppyDriveType), - DEFINE_PROP_END_OF_LIST(), -}; - -static void sun4m_fdc_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - - device_class_set_props(dc, sun4m_fdc_properties); - set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); -} - -static const TypeInfo sun4m_fdc_info =3D { - .name =3D "sun-fdtwo", - .parent =3D TYPE_SYSBUS_FDC, - .instance_init =3D sun4m_fdc_initfn, - .class_init =3D sun4m_fdc_class_init, -}; - -static void sysbus_fdc_common_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - - dc->realize =3D sysbus_fdc_common_realize; - dc->reset =3D fdctrl_external_reset_sysbus; - dc->vmsd =3D &vmstate_sysbus_fdc; -} - -static const TypeInfo sysbus_fdc_type_info =3D { - .name =3D TYPE_SYSBUS_FDC, - .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(FDCtrlSysBus), - .instance_init =3D sysbus_fdc_common_initfn, - .abstract =3D true, - .class_init =3D sysbus_fdc_common_class_init, -}; - static void fdc_register_types(void) { - type_register_static(&sysbus_fdc_type_info); - type_register_static(&sysbus_fdc_info); - type_register_static(&sun4m_fdc_info); type_register_static(&floppy_bus_info); type_register_static(&floppy_drive_info); } diff --git a/MAINTAINERS b/MAINTAINERS index f2fb24ef7e7..eb8abf2a2d4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1671,6 +1671,7 @@ S: Supported F: hw/block/fdc.c F: hw/block/fdc-internal.h F: hw/block/fdc-isa.c +F: hw/block/fdc-sysbus.c F: include/hw/block/fdc.h F: tests/qtest/fdc-test.c T: git https://gitlab.com/jsnow/qemu.git ide diff --git a/hw/block/Kconfig b/hw/block/Kconfig index 8c3be60a197..9e8f28f9824 100644 --- a/hw/block/Kconfig +++ b/hw/block/Kconfig @@ -6,6 +6,10 @@ config FDC_ISA depends on ISA_BUS select FDC =20 +config FDC_SYSBUS + bool + select FDC + config SSI_M25P80 bool =20 diff --git a/hw/block/meson.build b/hw/block/meson.build index 8cc79b5fcb4..2389326112a 100644 --- a/hw/block/meson.build +++ b/hw/block/meson.build @@ -6,6 +6,7 @@ softmmu_ss.add(when: 'CONFIG_ECC', if_true: files('ecc.c')) softmmu_ss.add(when: 'CONFIG_FDC', if_true: files('fdc.c')) softmmu_ss.add(when: 'CONFIG_FDC_ISA', if_true: files('fdc-isa.c')) +softmmu_ss.add(when: 'CONFIG_FDC_SYSBUS', if_true: files('fdc-sysbus.c')) softmmu_ss.add(when: 'CONFIG_NAND', if_true: files('nand.c')) softmmu_ss.add(when: 'CONFIG_ONENAND', if_true: files('onenand.c')) softmmu_ss.add(when: 'CONFIG_PFLASH_CFI01', if_true: files('pflash_cfi01.c= ')) diff --git a/hw/block/trace-events b/hw/block/trace-events index 6a0d973805d..d86b53520cc 100644 --- a/hw/block/trace-events +++ b/hw/block/trace-events @@ -3,6 +3,8 @@ # fdc.c fdc_ioport_read(uint8_t reg, uint8_t value) "read reg 0x%02x val 0x%02x" fdc_ioport_write(uint8_t reg, uint8_t value) "write reg 0x%02x val 0x%02x" + +# fdc-sysbus.c fdctrl_tc_pulse(int level) "TC pulse: %u" =20 # pflash_cfi01.c diff --git a/hw/mips/Kconfig b/hw/mips/Kconfig index aadd436bf4e..c245e881a2b 100644 --- a/hw/mips/Kconfig +++ b/hw/mips/Kconfig @@ -20,7 +20,7 @@ config JAZZ select G364FB select DP8393X select ESP - select FDC + select FDC_SYSBUS select MC146818RTC select PCKBD select SERIAL diff --git a/hw/sparc/Kconfig b/hw/sparc/Kconfig index 8dcb10086fd..79d58beb7a6 100644 --- a/hw/sparc/Kconfig +++ b/hw/sparc/Kconfig @@ -8,7 +8,7 @@ config SUN4M select UNIMP select ESCC select ESP - select FDC + select FDC_SYSBUS select SLAVIO select LANCE select M48T59 --=20 2.31.1 From nobody Sat Apr 27 20:33:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623699500399275.0023030030709; Mon, 14 Jun 2021 12:38:20 -0700 (PDT) Received: from localhost ([::1]:59796 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lssPb-0008TK-Dv for importer2@patchew.org; Mon, 14 Jun 2021 15:38:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43398) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssKL-0005DN-C1 for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:56 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:30762) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lssKJ-00051y-Sj for qemu-devel@nongnu.org; Mon, 14 Jun 2021 15:32:53 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-219-p2ZgV8tKObaW2gpkV6BADQ-1; Mon, 14 Jun 2021 15:32:50 -0400 Received: by mail-wm1-f72.google.com with SMTP id g14-20020a05600c4eceb02901b609849650so25085wmq.6 for ; Mon, 14 Jun 2021 12:32:50 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id k5sm17726461wrv.85.2021.06.14.12.32.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Jun 2021 12:32:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1623699171; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GUFeEEoFjmM1/XYciNn6ZhunPr6SB2W2GijMTTXjMzY=; b=WZQSJRfL+2NaZFu7Fkf95CUHZzWr/0sCANiFobWMKWAldFOYBURI3kkliteFrAY8U0YOoM FyV0X67tZ3Ouob/fo7C3MBmfzazftEQAXvLXudx/6hVnwV+a29V4jbzjz/1PK5/X66dmjl StuS6kLgDvMCGNuiRXw4qnJX1nLrxpY= X-MC-Unique: p2ZgV8tKObaW2gpkV6BADQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GUFeEEoFjmM1/XYciNn6ZhunPr6SB2W2GijMTTXjMzY=; b=RacFKhQYCHrdLZ8wlehjmTv5kLeZXcdSPRdKcdPSjsBTbmLfC910qD09fl27N9CIce yikwf/VPWcgjUOj/u6KzsGZFzNlYgUZyj+HF3AUre0QA9jhQhiy2bOyr4z2an+Xvb8Cb rfGcLh8lXE1lsCQ8Mj+3u4AMhqC7aMLwRqH4JqwAbODNx5S98xJtz5bMNUhMxvLEXynm xbcSgQzvofcEsIrzts/VKGrG90A6EQqFaV3KgLxgQRxgiQs31svoBBS0eQfMCEv9ixEf TPi/I4L3uK97Ay68AT1D8MYmdOxZimAd71+U5A28ckgz8l2kanZAnNftABXSqaNCRSax i+qQ== X-Gm-Message-State: AOAM530z1bE3DonY35nUnyiuKXzknJAD42DnK8aQHxCDJJsPDCIXWWlu ee9SzAG9hLLPpKhjNtDv9ERr7QvXWg8WuQXj7pxMgmvJEcuZ4ukSw8PRIG/Pta8dKfgwDBc0JXA 3omUUtZnL6bJr1QGrys529S+b1wTnEv2bFgXGWPAnwT/fSSYnZP+U6zzSCEj/fLXL X-Received: by 2002:a1c:f70b:: with SMTP id v11mr18391385wmh.186.1623699168879; Mon, 14 Jun 2021 12:32:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzfbP4V9/Mk6OJddPy8rsorzrIj3a1vmo4xISdIF7SCVUGnUqELygV9w2TNyorUiMtCmHOHWw== X-Received: by 2002:a1c:f70b:: with SMTP id v11mr18391361wmh.186.1623699168633; Mon, 14 Jun 2021 12:32:48 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v7 6/6] hw/block/fdc: Add description to floppy controllers Date: Mon, 14 Jun 2021 21:32:20 +0200 Message-Id: <20210614193220.2007159-7-philmd@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210614193220.2007159-1-philmd@redhat.com> References: <20210614193220.2007159-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , John Snow Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Change the '-device help' output from: Storage devices: name "floppy", bus floppy-bus, desc "virtual floppy drive" name "isa-fdc", bus ISA to: Storage devices: name "floppy", bus floppy-bus, desc "virtual floppy drive" name "isa-fdc", bus ISA, desc "virtual floppy controller" Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/block/fdc-isa.c | 1 + hw/block/fdc-sysbus.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/hw/block/fdc-isa.c b/hw/block/fdc-isa.c index 0e22a10732d..3bf64e06657 100644 --- a/hw/block/fdc-isa.c +++ b/hw/block/fdc-isa.c @@ -282,6 +282,7 @@ static void isabus_fdc_class_init(ObjectClass *klass, v= oid *data) DeviceClass *dc =3D DEVICE_CLASS(klass); ISADeviceClass *isa =3D ISA_DEVICE_CLASS(klass); =20 + dc->desc =3D "virtual floppy controller"; dc->realize =3D isabus_fdc_realize; dc->fw_name =3D "fdc"; dc->reset =3D fdctrl_external_reset_isa; diff --git a/hw/block/fdc-sysbus.c b/hw/block/fdc-sysbus.c index c6308f53004..57fc8773f12 100644 --- a/hw/block/fdc-sysbus.c +++ b/hw/block/fdc-sysbus.c @@ -205,6 +205,7 @@ static void sysbus_fdc_class_init(ObjectClass *klass, v= oid *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 + dc->desc =3D "virtual floppy controller"; device_class_set_props(dc, sysbus_fdc_properties); } =20 @@ -230,6 +231,7 @@ static void sun4m_fdc_class_init(ObjectClass *klass, vo= id *data) DeviceClass *dc =3D DEVICE_CLASS(klass); =20 sbdc->use_strict_io =3D true; + dc->desc =3D "virtual floppy controller"; device_class_set_props(dc, sun4m_fdc_properties); } =20 --=20 2.31.1