From nobody Sun Jul 26 11:03:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1782946103; cv=none; d=zohomail.com; s=zohoarc; b=KWI8FZGwrkrAcccoiY3qDVUuhQKAC2TeHzhz6y2BHonoKeDP9VFCUXw6UW/H7u6tUk9uyWl2GIjcB/XvyrmR0AjvI6RzhSG/Z+DbNnoDbcx9Cq/RNxc+IncXSEZe8Gz3FqyVBgi+o5sA0zXCdzE58NRtCJ9JmaXnlBYLYA06+uY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782946103; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KjFztGb7C9MEWIW5wBfGcj8wgciULOA+rIFwIPLrLuI=; b=Fve707YTFSsFHPTU7EHp2rq/6B/8NnaRYwdNzCfy1ngE5yuxklablsED1aKYoQbdvOjYEd2cMrgGqGRk5C+DCRdfhB0lzMxqXVPP1NGJklW/HYVroE4QCUIWcopl9dC+36ETCsJKA4ta+BWhvIN2hg6BB0mi++LIyeM36sg3ZbM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1782946103642134.34156857976404; Wed, 1 Jul 2026 15:48:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wf3if-0001gg-0G; Wed, 01 Jul 2026 18:47:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wf3id-0001fP-M4 for qemu-devel@nongnu.org; Wed, 01 Jul 2026 18:47:47 -0400 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wf3ia-0002Zx-W2 for qemu-devel@nongnu.org; Wed, 01 Jul 2026 18:47:47 -0400 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-472a14c9965so1020153f8f.1 for ; Wed, 01 Jul 2026 15:47:44 -0700 (PDT) Received: from Provence.localdomain (dynamic-2a02-3100-2d44-b300-0219-99ff-feb2-2458.310.pool.telefonica.de. [2a02:3100:2d44:b300:219:99ff:feb2:2458]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-477db3dba0esm3178614f8f.7.2026.07.01.15.47.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jul 2026 15:47:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782946063; x=1783550863; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KjFztGb7C9MEWIW5wBfGcj8wgciULOA+rIFwIPLrLuI=; b=Sk4I5xNxk+yz8P1zxSEc9wszfMTLRdSjgqIrq8sTjqr0OsfMvZq5wAcPI64i1B0IPx e1iVaeZq/7MoyB+l36Xey9s1vJM5OwYAD29GXKiZH4p8qE8WIrQuJp1IKIeM4FXYNnFn fypyGh5+NPAXqly7Bp863J0XkZ3+eZchU+5B1QV3bxlM85X07ag04GA1CHRM+CgEdm+K R6SX8XRLsS+P1LQ+loS7JMerc9dLSB3j4wYuamW15ncHGNAuxOiOv/4KLSHzJRh4MS4x 02BQc/wqVC8PCHen5CLvNwiJwF9zLbJ2Sx8fEr1KD/jm+SIPj/w+8LZye72dxDUK8EHB cknw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782946063; x=1783550863; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=KjFztGb7C9MEWIW5wBfGcj8wgciULOA+rIFwIPLrLuI=; b=TLDkii0eRrwKsuQsQEoCloVyTifYaVgsk96sbYuJKpxFD+f/gVsV1fl6JSRvVCagtk XCN+JCPNQ2ajor+nhjgS8tVmPQU0VdE4+N+oNyTd2RGqktS0dO8TffonypPtGKFs8Hmh UWhqmU33cLg5Q+o7srrH2T22gU4zVO6wTtAm5QU1yDlUjQLIsrG2X0gyfpLsf7F6E4G5 e+IYqEpNcJ+qIWLLk0A2W8zRyDPTlSDUBSOy/1JRLfCC2hJvEShOkIGhSiZRY+Oq5v/K hHpBsjCXrQ1tX2VX9DlQijrVhAhQ8ZQhvn1EEUbYaOg0ZXDU6i1SazbPoO17vSeldIne 3pag== X-Gm-Message-State: AOJu0Yy1UOQiBTFcjrjf9WIuTJSM4JkE9Gxjx3WxQ9wLu6bCYKeZdAnc YECK5pBTtZSbUaN3dAx4V3TB0QFziEAGWSaxNinZhMTECcVtE0HOOyt+t4Op/w== X-Gm-Gg: AfdE7clM5ct2dWL0S7KCHHgdM328deYa7vUNd4DQXMgo5mDl3xIFeFhS0dKID10Np1V vh9DU1Pz9dZdiDG+vfsB0Eq5kxUg3N423UcLxyulLv+Cm6XWGxi7MQfdhHCc98ZZefOx7FqY7zB 1iCe/phwHURFaAH8idWgyN4WP2LL0vmNYHpJnfGYcOWdwY6hdDU/AIAiez1okaYh1sF9FYe7r2c BSB243Dytw874DxH/lYwrUmxbP8XgYeeMe4/ksBglIljdAAPPvRl7CiAdiKwsB9BHH/BLnvmEMj k5PL71tsr/c8Bniyfuh6fTtRQsXpnTY9AdQ1YxCWS1Js17IwEoPtTpUdhrArVPFFCX5JkFzr1XL yHdK8jLxhJogv7D4pPo6JRu1Nedn827TXIheVrZ5wGq0B7UNQWTKTi19/+tCXQpJkRfWkkM/mBY JhVffMSU8iM/NSI9e05jYFoEaAY7CRIBpK1dEKoCsRW400OaYP1vrbFRlOpVC7RS54yOMNEieqb vy1iov1/f4VNoDMDcCNtzod+7Y945uensThqJ8uqzVn3PM= X-Received: by 2002:adf:fc08:0:b0:475:cb71:a344 with SMTP id ffacd0b85a97d-4775a0fe280mr4531259f8f.37.1782946063237; Wed, 01 Jul 2026 15:47:43 -0700 (PDT) From: Bernhard Beschow To: qemu-devel@nongnu.org Cc: Gaurav Sharma , Bernhard Beschow , Pavel Pisa , Jason Wang , Francisco Iglesias , Peter Maydell , qemu-arm@nongnu.org, Matyas Bobek , Jean-Christophe Dubois , Vikram Garhwal , Paolo Bonzini , Pierrick Bouvier Subject: [PATCH 1/4] hw/net/can/flexcan: Subclass TYPE_CAN_FLEXCAN Date: Thu, 2 Jul 2026 00:46:09 +0200 Message-ID: <20260701224612.48342-2-shentey@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260701224612.48342-1-shentey@gmail.com> References: <20260701224612.48342-1-shentey@gmail.com> MIME-Version: 1.0 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::432; envelope-from=shentey@gmail.com; helo=mail-wr1-x432.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_GMAIL_RCVD=1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1782946107192158500 Content-Type: text/plain; charset="utf-8" Subclass TYPE_CAN_FLEXCAN, yielding TYPE_CAN_FLEXCAN2 and TYPE_CAN_FLEXCAN3. Since TYPE_CAN_FLEXCAN is now abstract, TYPE_FSL_IMX6 needs to use TYPE_CAN_FLEXCAN2. TYPE_CAN_FLEXCAN3 will be used in TYPE_FSL_IMX8MP. Note that Linux performs 8 byte accesses on the i.MX8M Plus, therefore .max_access_size has to be adjusted. Otherwise this results in bus errors. Signed-off-by: Bernhard Beschow --- include/hw/net/flexcan.h | 4 ++- hw/arm/fsl-imx6.c | 2 +- hw/net/can/flexcan.c | 61 +++++++++++++++++++++++++++++++--------- 3 files changed, 51 insertions(+), 16 deletions(-) diff --git a/include/hw/net/flexcan.h b/include/hw/net/flexcan.h index 153afc1e03..32de7b904a 100644 --- a/include/hw/net/flexcan.h +++ b/include/hw/net/flexcan.h @@ -139,7 +139,9 @@ typedef struct FlexcanState { } FlexcanState; =20 #define TYPE_CAN_FLEXCAN "flexcan" - OBJECT_DECLARE_SIMPLE_TYPE(FlexcanState, CAN_FLEXCAN); =20 +#define TYPE_CAN_FLEXCAN2 "flexcan2" +#define TYPE_CAN_FLEXCAN3 "flexcan3" + #endif diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index bf106a9063..57cdde971c 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -92,7 +92,7 @@ static void fsl_imx6_init(Object *obj) } for (i =3D 0; i < FSL_IMX6_NUM_CANS; i++) { snprintf(name, NAME_SIZE, "flexcan%d", i + 1); - object_initialize_child(obj, name, &s->flexcan[i], TYPE_CAN_FLEXCA= N); + object_initialize_child(obj, name, &s->flexcan[i], TYPE_CAN_FLEXCA= N2); } for (i =3D 0; i < FSL_IMX6_NUM_WDTS; i++) { snprintf(name, NAME_SIZE, "wdt%d", i); diff --git a/hw/net/can/flexcan.c b/hw/net/can/flexcan.c index 1ea459d9f6..d6a76c28ab 100644 --- a/hw/net/can/flexcan.c +++ b/hw/net/can/flexcan.c @@ -1298,7 +1298,7 @@ static const struct MemoryRegionOps flexcan_ops =3D { .endianness =3D DEVICE_LITTLE_ENDIAN, .valid =3D { .min_access_size =3D 1, - .max_access_size =3D 4, + .max_access_size =3D 8, .unaligned =3D true, .accepts =3D flexcan_mem_accepts }, @@ -1324,16 +1324,26 @@ static int flexcan_connect_to_bus(FlexcanState *s, = CanBusState *bus) return 0; } =20 -static void flexcan_init(Object *obj) +static void flexcan2_init(Object *obj) { FlexcanState *s =3D CAN_FLEXCAN(obj); =20 memory_region_init_io( - &s->iomem, obj, &flexcan_ops, s, TYPE_CAN_FLEXCAN, + &s->iomem, obj, &flexcan_ops, s, TYPE_CAN_FLEXCAN2, offsetof(FlexcanRegs, _reserved6) ); } =20 +static void flexcan3_init(Object *obj) +{ + FlexcanState *s =3D CAN_FLEXCAN(obj); + + memory_region_init_io( + &s->iomem, obj, &flexcan_ops, s, TYPE_CAN_FLEXCAN3, + sizeof(FlexcanRegs) + ); +} + static void flexcan_realize(DeviceState *dev, Error **errp) { FlexcanState *s =3D CAN_FLEXCAN(dev); @@ -1378,19 +1388,42 @@ static void flexcan_class_init(ObjectClass *klass, = const void *data) dc->realize =3D flexcan_realize; device_class_set_props(dc, flexcan_properties); dc->vmsd =3D &vmstate_can; - dc->desc =3D "i.MX FLEXCAN Controller"; } =20 -static const TypeInfo flexcan_info =3D { - .name =3D TYPE_CAN_FLEXCAN, - .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(FlexcanState), - .class_init =3D flexcan_class_init, - .instance_init =3D flexcan_init, -}; +static void flexcan2_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); =20 -static void can_register_types(void) + dc->desc =3D "i.MX FlexCAN 2 Controller"; +} + +static void flexcan3_class_init(ObjectClass *klass, const void *data) { - type_register_static(&flexcan_info); + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->desc =3D "i.MX FlexCAN 3 Controller"; } -type_init(can_register_types) + +static const TypeInfo flexcan_types[] =3D { + { + .name =3D TYPE_CAN_FLEXCAN, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(FlexcanState), + .class_init =3D flexcan_class_init, + .abstract =3D true, + }, + { + .name =3D TYPE_CAN_FLEXCAN2, + .parent =3D TYPE_CAN_FLEXCAN, + .class_init =3D flexcan2_class_init, + .instance_init =3D flexcan2_init, + }, + { + .name =3D TYPE_CAN_FLEXCAN3, + .parent =3D TYPE_CAN_FLEXCAN, + .class_init =3D flexcan3_class_init, + .instance_init =3D flexcan3_init, + }, +}; + +DEFINE_TYPES(flexcan_types) --=20 2.54.0 From nobody Sun Jul 26 11:03:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1782946123; cv=none; d=zohomail.com; s=zohoarc; b=as3crNqhh4uKIo1MyX8zCPjhoQ1hmHDXwCneZrGRYgrqHBQAxxrP0BuK1tRCEYMGU0sV61ISL50GmCPZp5BObAYtDlHYrutqWNrTi/i4AeldoGBXeQWMUW90JQKmi0a8XlWQcHuBd5a34Ewhu3/17Q+YghAHnUD3n0apcSyRPY8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782946123; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5eXus05gydvHtWqwKIMnhXZV/4EZZVvMEfjI0FZggN0=; b=kGT5y46AzoIL0Aw3N4d9jPiA9QlAf4Fxo4Cw/FmvuJnkHW0vRPllW1EugJgub9CJwLXBgiyLW2wgGkTrvZdJZlWPRftP34FO50tOjMinoTPjCF3HdKgsMs286XEeOgGE16oH38CXLx5ubyVrjHOlAdB8fVZfFLesDHN27R2y6xY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1782946123656835.3006806334445; Wed, 1 Jul 2026 15:48:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wf3if-0001hi-Tu; Wed, 01 Jul 2026 18:47:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wf3ie-0001g7-59 for qemu-devel@nongnu.org; Wed, 01 Jul 2026 18:47:48 -0400 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wf3ic-0002aC-HG for qemu-devel@nongnu.org; Wed, 01 Jul 2026 18:47:47 -0400 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-473ba028d46so1168833f8f.1 for ; Wed, 01 Jul 2026 15:47:46 -0700 (PDT) Received: from Provence.localdomain (dynamic-2a02-3100-2d44-b300-0219-99ff-feb2-2458.310.pool.telefonica.de. [2a02:3100:2d44:b300:219:99ff:feb2:2458]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-477db3dba0esm3178614f8f.7.2026.07.01.15.47.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jul 2026 15:47:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782946065; x=1783550865; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5eXus05gydvHtWqwKIMnhXZV/4EZZVvMEfjI0FZggN0=; b=FpHTk8YhQrU9A6HSmCY6nRYCLB3AcWJSGPykaxb4qxZSNjgxmdEYSX+mpsp4cmVXSP TGm7UQaxi21nA03O3C+c5/CawugGMJ1tR7XW+5HSEtGRS6SlyJHGG4SU8jyBHj/vLoYc DjLXtxFzHB1XpldAXJhJM3vy345LLZW2OkssDj6gEUiQuGbu2oEpqHRgUrgQMNvbnxTb RL407JAX225NK/lUIf7r2/W8lPsk4D9+hcrQ3e9s/q504fdPhIA5L01cvX7T7QiKNcov JOpFNrHxW8VR51OFWcelfycGd9WzT0K1rEmnZWuHHbUe19ReNjuiGmENnUE3gy8TwSBF sXLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782946065; x=1783550865; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5eXus05gydvHtWqwKIMnhXZV/4EZZVvMEfjI0FZggN0=; b=WTcEZ0aCBA6uQmUpdWTpRkhrw0RXxvZ3BV8TUjVI7HJme8H3IJWw6eAZhCjyGWG7H+ vGDt5dc/Yd7kl42pRqwiS2zWpWN75mfH+RwQaavWYpR/WHr52Ml/cqTscQihEpgJpVm7 MNyRd3Qq4mjbVccGizn9AwlnzMveOIwXF2yf5acDCsp8Hg2iyQVrPq9mlIsn4K7XT/2q Bh6iaq4664RNt+AxXl7EBJVDQ+oHaJPsmBxin/mnaxSeyDdX58IkdmiOVK7PdyoxJrNX iTyawRoZV2SISR59+YkSW/UXSlJ2QgdngBfZyS1384bIXeL6NYs9yZSQa25xNiWAgc74 gjWQ== X-Gm-Message-State: AOJu0YyfQcUinp+L02nEPetKg9rV5yBnosM5m92BJnyXNhuX8r+dU/Po nknw+QHNo/3efvHPpYBhV1qN6e5ih1WEFphQeh7hEYkT3uw6FAe1qEIJy7IZcg== X-Gm-Gg: AfdE7cliOobEJZjhyAWpreZAFEVsqHE4NYeSSMtwaY4/RODtWH1szKYesWZdkmXbOBA 4/U/GE6XvhCEyR5HDshJcK7JMjRihkfof1aMVZ96S5EvPpBCcal0T6lcLmYBScWtQN4AVLf6Xfc Z6jCLXz1w1kbgfOXAwcqchlI/+pVij3N5vvjFvdLW+XnlZBESLTI+EhFwGOR65HIwYgC+NG8reU ZWsY7hZsVJyi+cSlzXMte0EaEXQNqX963rYfPt3IDsTvVK5F9XhoiFLPwSI+VClFghQS9lYVhnE KhIcJBI0jsybWREzt+QtrZrY03bZ7RBQYE7NobfNObaaFp87RBfAar9BGXhCOwbBkwM+IlO96gg qoIKHpHsxaOI9am8TnKSE7+syZbeG+lVW4KyBm9pqD3wsPxAGvEgdBIpO9ONlwTiOX2gky7S4a7 uTrI8SiZHhRbxi/ZuICOrBNdYRxksvkakXFBKzhMFDYylROgd78aTYh34QHhgfQ3yvwK8VtTXoc Od3ESUnK+0dYBcvEgvb6ZFBjxgh0P9tLeRy X-Received: by 2002:a05:6000:4203:b0:46f:f12b:e456 with SMTP id ffacd0b85a97d-47758db8316mr5367812f8f.25.1782946065010; Wed, 01 Jul 2026 15:47:45 -0700 (PDT) From: Bernhard Beschow To: qemu-devel@nongnu.org Cc: Gaurav Sharma , Bernhard Beschow , Pavel Pisa , Jason Wang , Francisco Iglesias , Peter Maydell , qemu-arm@nongnu.org, Matyas Bobek , Jean-Christophe Dubois , Vikram Garhwal , Paolo Bonzini , Pierrick Bouvier Subject: [PATCH 2/4] hw/arm/imx8mp-evk: Open code DEFINE_MACHINE_AARCH64 Date: Thu, 2 Jul 2026 00:46:10 +0200 Message-ID: <20260701224612.48342-3-shentey@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260701224612.48342-1-shentey@gmail.com> References: <20260701224612.48342-1-shentey@gmail.com> MIME-Version: 1.0 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::432; envelope-from=shentey@gmail.com; helo=mail-wr1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1782946124610158500 Content-Type: text/plain; charset="utf-8" Open code the DEFINE_MACHINE_AARCH64 macro in preparation of creating FslImx8mpEvkState class, needed for FlexCAN emulation. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/imx8mp-evk.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c index b84ac91a17..4a0c9df76b 100644 --- a/hw/arm/imx8mp-evk.c +++ b/hw/arm/imx8mp-evk.c @@ -113,8 +113,10 @@ static const char *imx8mp_evk_get_default_cpu_type(con= st MachineState *ms) return ARM_CPU_TYPE_NAME("cortex-a53"); } =20 -static void imx8mp_evk_machine_init(MachineClass *mc) +static void imx8mp_evk_machine_class_init(ObjectClass *oc, const void *dat= a) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "NXP i.MX 8M Plus EVK Board"; mc->init =3D imx8mp_evk_init; mc->default_cpus =3D 4; @@ -124,4 +126,13 @@ static void imx8mp_evk_machine_init(MachineClass *mc) mc->get_default_cpu_type =3D imx8mp_evk_get_default_cpu_type; } =20 -DEFINE_MACHINE_AARCH64("imx8mp-evk", imx8mp_evk_machine_init) +static const TypeInfo imx8mp_evk_machine_types[] =3D { + { + .name =3D MACHINE_TYPE_NAME("imx8mp-evk"), + .parent =3D TYPE_MACHINE, + .class_init =3D imx8mp_evk_machine_class_init, + .interfaces =3D aarch64_machine_interfaces, + }, +}; + +DEFINE_TYPES(imx8mp_evk_machine_types) --=20 2.54.0 From nobody Sun Jul 26 11:03:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1782946132; cv=none; d=zohomail.com; s=zohoarc; b=k6rEBEVtBJvdZlFD0lZEwa63NzRmyUXIvOxvm4r1mGcwqzS1g1uYwj5fxidF7XWQskr0aUVTRn38hTYMlNSW0QCkpDIkGRnKUz4HWZLk0V01ryQPwOIJ56exmOfwEeTYhMrbaM/AKWXkmL42slHpx5wrMzTW47eP5jQ/gLxRbSE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782946132; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XcqzvScZe3os6JOomN8/b5wJyKlFUg/oKjQQfc8KlKY=; b=SjpPaP9tRv3tQLuuJiqqg+nbViWDDz7HyvKvLTs2fgjQFP3TDoXrScJMmjvcGlm+qcVF/jAhyGV4Rv8swCDKNHTvNd6WsxqH9gPv1ZEhBmF2eU78FFZZyWvIWjPCpIQIiC6vvN1g5BnVJYR2uZZYiCd+CZEOOGCrzzeRWrQ9adE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1782946132457365.60928537018503; Wed, 1 Jul 2026 15:48:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wf3ig-0001iN-R3; Wed, 01 Jul 2026 18:47:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wf3if-0001hB-EB for qemu-devel@nongnu.org; Wed, 01 Jul 2026 18:47:49 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wf3id-0002ak-R0 for qemu-devel@nongnu.org; Wed, 01 Jul 2026 18:47:49 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-4745492ed3aso744052f8f.1 for ; Wed, 01 Jul 2026 15:47:47 -0700 (PDT) Received: from Provence.localdomain (dynamic-2a02-3100-2d44-b300-0219-99ff-feb2-2458.310.pool.telefonica.de. [2a02:3100:2d44:b300:219:99ff:feb2:2458]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-477db3dba0esm3178614f8f.7.2026.07.01.15.47.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jul 2026 15:47:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782946066; x=1783550866; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XcqzvScZe3os6JOomN8/b5wJyKlFUg/oKjQQfc8KlKY=; b=iXC1U7BBf0BlBpgPpz5/aAWIgO+4NtqWbE1AuCY3fuJKh1d7rRoU4b3dGRYYpwGbJ5 TCdFN7emrUP5Eq/K7QUEwJ0Zqz+5xV/3t/KcApcd+7VE/G1p4DGLbmwkPQkxbR+xGWRx ibeI7SNGVuaV1A9iVxvtT2k1z+QZFxcUFJimrLGRC3kqx2f0mqgjsW89reSKU/UhO8b+ HeqJcJu0D2fTcteZ5dNAP8ZY9OUlBUa7j356otvJhG7vHxwWvQ0iTyAtLi9sm9ahgR1R eiqBX3OUzuAbmi+mD4iklKK0BLf4E5RAcrQ1OMBXAbHYks2tEfK2qBBU/PTiMiwK+RIY Scmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782946066; x=1783550866; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XcqzvScZe3os6JOomN8/b5wJyKlFUg/oKjQQfc8KlKY=; b=aBeM9XnYL8vrYK4w6jJo/1GP1SihmCigT0J3Bvi8FRpij3nBvTzGYhRr5Y7z3UKa6t mItIcLPRent3PWXXLWg0+8ezBhOmY0MmxQv8TupkhtFaamVSEw5tTx1NJPbqXTKTmeKA Fcdj7uGmtoE4n1A/FtIsp1ggunAl50UsH5bKh+2BgU3aWPRAL0mqh/UuhazO10T3hqXL PZ7qSRgriyogZd/CDapHCIiS86Olsve3/U6UiFpdEB4WNHLezxYbV6pbdWeUIoPsTgt4 v1xXJXRrAt9wTRgSq0jF59YZsGtevyVROZv9eN98jb+E+VmBICtPX9Oxg+2FT7rEoyEQ +dAw== X-Gm-Message-State: AOJu0YwOhdHX3RvvPb8pAUPDLTcpNIeULYXDACIopTvW4LUvGmWG7T3x g+1dN0HRyew21r4jIQ0dCzjj59a4ScBl+37tPWRpdTt48YaYK5X77vVIS5mbMw== X-Gm-Gg: AfdE7ck4RuSunc3CAHIa5nFFS1Fk9adhaW6c0Hsmq34RKrnB3KCjDVrVZvBmRSq5l11 kfN6TteCnR0ey9VYii+Y4ir7ml1hakepwczVWBpbOOylx9kIGVn6ut0lnACxRwoFGbmPYHFMKjW /HEpcXfpsAxJGjof4x2kuznIlh3QjJ7IIc7XirtRNZMlxsPKuhSrMUc097E9FmIJjGofuimm77h Y/lLMYyjxn2hoOHlQatKBWyXrpvSrdalMhtMqhkKIGnKgJ2DBZU04kTOWvaxcZ9M3E4U13z2mWr X0wA/mTYj2ZPlm44xYbxegMPUKHxa0HJQhYNuHMe8SAqwgJ3587Jwi+09Yf033otetNMkIJUrun Js19Dxdw2hycuCXu7D1Hm7BYb6lkr1xTcUOqXv510x1MRdmTnOQrZ1HzLlTXGQhaRbNlLGeD8EH 1WhvyLk3+6ZGjm379AQfBAWOJ1AaednplIBIeyV/uZq8RSBJRpaxg/RwdwEhIqV6bC2zYkUsT83 dVTJL66rTpilAuTrRFAfH8odgKr7wctzgTw X-Received: by 2002:adf:fa06:0:b0:475:f100:360a with SMTP id ffacd0b85a97d-4775a6d1b39mr4051455f8f.57.1782946066279; Wed, 01 Jul 2026 15:47:46 -0700 (PDT) From: Bernhard Beschow To: qemu-devel@nongnu.org Cc: Gaurav Sharma , Bernhard Beschow , Pavel Pisa , Jason Wang , Francisco Iglesias , Peter Maydell , qemu-arm@nongnu.org, Matyas Bobek , Jean-Christophe Dubois , Vikram Garhwal , Paolo Bonzini , Pierrick Bouvier Subject: [PATCH 3/4] hw/arm/imx8mp-evk: Introduce FslImx8mpEvkState Date: Thu, 2 Jul 2026 00:46:11 +0200 Message-ID: <20260701224612.48342-4-shentey@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260701224612.48342-1-shentey@gmail.com> References: <20260701224612.48342-1-shentey@gmail.com> MIME-Version: 1.0 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=shentey@gmail.com; helo=mail-wr1-x434.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_GMAIL_RCVD=1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1782946135108158500 Content-Type: text/plain; charset="utf-8" Introduce class FslImx8mpEvkState which will be needed for holding CanBusState attributes and associated properties. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/imx8mp-evk.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c index 4a0c9df76b..ca0ee2d3f2 100644 --- a/hw/arm/imx8mp-evk.c +++ b/hw/arm/imx8mp-evk.c @@ -19,6 +19,17 @@ #include "qapi/error.h" #include =20 +#define TYPE_IMX8MPEVK_MACHINE MACHINE_TYPE_NAME("imx8mp-evk") +OBJECT_DECLARE_SIMPLE_TYPE(FslImx8mpEvkState, IMX8MPEVK_MACHINE) + +struct FslImx8mpEvkState { + MachineState parent_obj; + + FslImx8mpState soc; + + struct arm_boot_info boot_info; +}; + static void imx8mp_evk_modify_dtb(const struct arm_boot_info *info, void *= fdt) { int i, offset; @@ -57,8 +68,7 @@ static void imx8mp_evk_modify_dtb(const struct arm_boot_i= nfo *info, void *fdt) =20 static void imx8mp_evk_init(MachineState *machine) { - static struct arm_boot_info boot_info; - FslImx8mpState *s; + FslImx8mpEvkState *s =3D IMX8MPEVK_MACHINE(machine); =20 if (machine->ram_size > FSL_IMX8MP_RAM_SIZE_MAX) { error_report("RAM size " RAM_ADDR_FMT " above max supported (%08" = PRIx64 ")", @@ -66,7 +76,7 @@ static void imx8mp_evk_init(MachineState *machine) exit(1); } =20 - boot_info =3D (struct arm_boot_info) { + s->boot_info =3D (struct arm_boot_info) { .loader_start =3D FSL_IMX8MP_RAM_START, .board_id =3D -1, .ram_size =3D machine->ram_size, @@ -74,10 +84,9 @@ static void imx8mp_evk_init(MachineState *machine) .modify_dtb =3D imx8mp_evk_modify_dtb, }; =20 - s =3D FSL_IMX8MP(object_new(TYPE_FSL_IMX8MP)); - object_property_add_child(OBJECT(machine), "soc", OBJECT(s)); - object_property_set_uint(OBJECT(s), "fec1-phy-num", 1, &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal); + object_initialize_child(OBJECT(machine), "soc", &s->soc, TYPE_FSL_IMX8= MP); + object_property_set_uint(OBJECT(&s->soc), "fec1-phy-num", 1, &error_fa= tal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->soc), &error_fatal); =20 memory_region_add_subregion(get_system_memory(), FSL_IMX8MP_RAM_START, machine->ram); @@ -93,14 +102,14 @@ static void imx8mp_evk_init(MachineState *machine) } =20 blk =3D blk_by_legacy_dinfo(di); - bus =3D qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus"); + bus =3D qdev_get_child_bus(DEVICE(&s->soc.usdhc[i]), "sd-bus"); carddev =3D qdev_new(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); } =20 if (!qtest_enabled()) { - arm_load_kernel(&s->cpu[0], machine, &boot_info); + arm_load_kernel(&s->soc.cpu[0], machine, &s->boot_info); } } =20 @@ -128,9 +137,10 @@ static void imx8mp_evk_machine_class_init(ObjectClass = *oc, const void *data) =20 static const TypeInfo imx8mp_evk_machine_types[] =3D { { - .name =3D MACHINE_TYPE_NAME("imx8mp-evk"), + .name =3D TYPE_IMX8MPEVK_MACHINE, .parent =3D TYPE_MACHINE, .class_init =3D imx8mp_evk_machine_class_init, + .instance_size =3D sizeof(FslImx8mpEvkState), .interfaces =3D aarch64_machine_interfaces, }, }; --=20 2.54.0 From nobody Sun Jul 26 11:03:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1782946138; cv=none; d=zohomail.com; s=zohoarc; b=fPMq2JMEZNd+wAhdadfBP90cK5jy6pTw5uIqbWHFn5cJOOc7uQz/jB7dkCWaMhybMqUmYD+XIWvI2OU7Qsj2ozRpjnDOXCDI2AE7l1YTnyxTrxfi/+nxwfInwfDY/WS/OZtrUsRqvM/5fH49jc0HbvpBE200AgvxhvIpzGktiAU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782946138; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Jr7fpk6r8PJKqJlH40O3F6Precy1BYqv9tpDnBOG2xY=; b=UbLASLZ1nz70rlWE1+ZTOYJtnMOUpEJFHuf9FvjNEjW82doKKDfzEg4aSOcEkPOwCQagJo/uvffPi7dtYnu+Osz4MKkbScifbqD8sd/dU7EoWyewOHj7UbNIZWkhGfnZnZa1FB4CtBGUDuBU8NnNA/pQS8/Oll6CQjal1ouCFR8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1782946138439841.2861557353639; Wed, 1 Jul 2026 15:48:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wf3ii-0001jL-7r; Wed, 01 Jul 2026 18:47:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wf3ig-0001ib-WA for qemu-devel@nongnu.org; Wed, 01 Jul 2026 18:47:51 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wf3ie-0002b9-TE for qemu-devel@nongnu.org; Wed, 01 Jul 2026 18:47:50 -0400 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-4728c12ba97so762424f8f.0 for ; Wed, 01 Jul 2026 15:47:48 -0700 (PDT) Received: from Provence.localdomain (dynamic-2a02-3100-2d44-b300-0219-99ff-feb2-2458.310.pool.telefonica.de. [2a02:3100:2d44:b300:219:99ff:feb2:2458]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-477db3dba0esm3178614f8f.7.2026.07.01.15.47.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jul 2026 15:47:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782946067; x=1783550867; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Jr7fpk6r8PJKqJlH40O3F6Precy1BYqv9tpDnBOG2xY=; b=b11vwGvVJ9J7YA66xJR5UvVsT6nsnRVj6mQ8iC6O4CNDjgZt5r8yvg93nEL10rDUH0 DpKyW2ulQa4+RSIBaI2FN+uJEmSSSuVre1XbOd9C0ZDK6K28c1l3Dkiu9yD4yoBjVmgp 3HSKDMI/SzlTzZS4hkzotfrTkSLdJWF593a6dU3kHJn5JWm8KtDVZa63qqf/MCX6yH0O RN8UyvPu42cb9Co62wIgVScp4ytsU8U71E1U6QzTQ6gR1DthieLEPOL0zNjzbAHYI8o5 dlD4b01pUF8CeVTO86ShfHbY55A0fI0UBO6bMCc8/ejP2BNxrl2Z0+HbS9LBKKGAoGur RF6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782946067; x=1783550867; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Jr7fpk6r8PJKqJlH40O3F6Precy1BYqv9tpDnBOG2xY=; b=n+f+FI/cMIFvMN0kjTd6DVv/rzSmO2/MFlSDFy9a+2jbaIdwgY16MsY1WivbeAkTuf VrYfW8wdS4sEppb/82lMAhZpUyuD4gGImEmVxedaA7RqIDyno97DtqOBz/LOn6va/e4g 0eidMv+uLgYr8N+yGl+66D8TAE5AU4E4Yt11YRNCQf+TlN0CAZy2hZIpHMvY1zCu8ISc oZbJd4v88U45qvQAPBsd3A2Mx51VRFO7WBA8hy+MCkYmAgnyKoZhvdsBJpqUULouWYC2 /fcEPHtWkThLKq1/tWR/8p4/s7Ssv+SHIwNcW3sHGL8d4CmvzVKf9BuS3IsV7gZ99nws UOxw== X-Gm-Message-State: AOJu0YwmWpaC20vyaP9d8dOeoCnVxIXwRby7UuG7U8V31tp+NqAyj3+5 KL3wuKKc3a0BChm5wLm6Xve4YCbVGqSsK3C48PDaNC45ZyGy1BJvVfqMbPcC4Q== X-Gm-Gg: AfdE7cmXJSv3MEaubRxt1bdf5JtC/gj+aDDIgwdUJ1ZkE5J+muMmSn+Jd8ONa5tCbrP Gv5eaKy8iM1ENqIY089yqYPSLbVkuAyLKQVUgR48ucCet2vVoUImd6//wOi64US9qw8+4HlCSEI nc/hegkYx3g/wGQLvoF5i3thIU+wfOnpnnCWkWZWjqBq0MXbyBiz5qcgaTIgbOH4Euvgo64cxpC 8hFCE6JwcVPibdQBXJIymVSnGNwo4taCx6t/lOT3TjkNur4VyUrd0qPAiZEJB7vWe/C0JWZ0ZPJ iOiHJD15+97jNuKKzuwTcH/h+HKMIsr4ZCNJGMql6lCkj3z0ttiy+bZQjdMr48F8CWAt46MHgb7 3Qb8O76U+dj1sibxgRAdmrEuCaaq0VKDdZfN9Bwe8zPWRwwxoSeM8ZR4qOb1b2zRuEZql2FXg0c NDDgucbW+CJK2eyk+DFvxOnnL+ecSxnwZqcP8ywRZ2wEeTbBBj4QipzcFxiBZQJkB0YNI0Yu3Ck kfd9dJTzhLOvtRgVSgKGzl4xJ+q7lbuDGNK X-Received: by 2002:a05:6000:4305:b0:471:f180:86d7 with SMTP id ffacd0b85a97d-47759568468mr5544177f8f.41.1782946067231; Wed, 01 Jul 2026 15:47:47 -0700 (PDT) From: Bernhard Beschow To: qemu-devel@nongnu.org Cc: Gaurav Sharma , Bernhard Beschow , Pavel Pisa , Jason Wang , Francisco Iglesias , Peter Maydell , qemu-arm@nongnu.org, Matyas Bobek , Jean-Christophe Dubois , Vikram Garhwal , Paolo Bonzini , Pierrick Bouvier Subject: [PATCH 4/4] hw/arm: Add basic FlexCAN3 support to TYPE_FSL_IMX8MP and imx8mp-evk Date: Thu, 2 Jul 2026 00:46:12 +0200 Message-ID: <20260701224612.48342-5-shentey@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260701224612.48342-1-shentey@gmail.com> References: <20260701224612.48342-1-shentey@gmail.com> MIME-Version: 1.0 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::435; envelope-from=shentey@gmail.com; helo=mail-wr1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1782946140630158500 Content-Type: text/plain; charset="utf-8" Real hardware supports CAN FD which is missing in the emulation and is considered future work. Still, CAN communication already works under Linux. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- docs/system/arm/imx8m.rst | 1 + include/hw/arm/fsl-imx8mp.h | 8 ++++++++ hw/arm/fsl-imx8mp.c | 37 +++++++++++++++++++++++++++++++++++++ hw/arm/imx8mp-evk.c | 21 +++++++++++++++++++++ hw/misc/imx8mp_ccm.c | 3 +++ hw/arm/Kconfig | 1 + 6 files changed, 71 insertions(+) diff --git a/docs/system/arm/imx8m.rst b/docs/system/arm/imx8m.rst index afbc33b2f4..1bcb8255be 100644 --- a/docs/system/arm/imx8m.rst +++ b/docs/system/arm/imx8m.rst @@ -18,6 +18,7 @@ following devices: * 1 Designware PCI Express Controller * 1 Ethernet Controller * 2 Designware USB 3 Controllers + * 2 FlexCAN 3 CAN Controllers (``imx8mp-evk`` only) * 5 GPIO Controllers * 6 I2C Controllers * 3 SPI Controllers diff --git a/include/hw/arm/fsl-imx8mp.h b/include/hw/arm/fsl-imx8mp.h index 3b6183ed1d..2be3c51af5 100644 --- a/include/hw/arm/fsl-imx8mp.h +++ b/include/hw/arm/fsl-imx8mp.h @@ -17,6 +17,7 @@ #include "hw/misc/imx7_snvs.h" #include "hw/misc/imx8mp_analog.h" #include "hw/misc/imx8mp_ccm.h" +#include "hw/net/flexcan.h" #include "hw/net/imx_fec.h" #include "hw/core/or-irq.h" #include "hw/pci-host/designware.h" @@ -37,6 +38,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(FslImx8mpState, FSL_IMX8MP) #define FSL_IMX8MP_RAM_SIZE_MAX (8 * GiB) =20 enum FslImx8mpConfiguration { + FSL_IMX8MP_NUM_CANS =3D 2, FSL_IMX8MP_NUM_CPUS =3D 4, FSL_IMX8MP_NUM_ECSPIS =3D 3, FSL_IMX8MP_NUM_GPIOS =3D 5, @@ -68,11 +70,14 @@ struct FslImx8mpState { USBDWC3 usb[FSL_IMX8MP_NUM_USBS]; DesignwarePCIEHost pcie; FslImx8mPciePhyState pcie_phy; + FlexcanState flexcan[FSL_IMX8MP_NUM_CANS]; OrIRQState gpt5_gpt6_irq; MemoryRegion ocram; =20 uint32_t phy_num; bool phy_connected; + + CanBusState *canbus[FSL_IMX8MP_NUM_CANS]; }; =20 enum FslImx8mpMemoryRegions { @@ -279,6 +284,9 @@ enum FslImx8mpIrqs { FSL_IMX8MP_PCI_INTC_IRQ =3D 124, FSL_IMX8MP_PCI_INTD_IRQ =3D 123, FSL_IMX8MP_PCI_MSI_IRQ =3D 140, + + FSL_IMX8MP_FLEXCAN1_IRQ =3D 142, + FSL_IMX8MP_FLEXCAN2_IRQ =3D 144, }; =20 #endif /* FSL_IMX8MP_H */ diff --git a/hw/arm/fsl-imx8mp.c b/hw/arm/fsl-imx8mp.c index 7c03ed3c34..c7ce30a17d 100644 --- a/hw/arm/fsl-imx8mp.c +++ b/hw/arm/fsl-imx8mp.c @@ -246,6 +246,11 @@ static void fsl_imx8mp_init(Object *obj) object_initialize_child(obj, name, &s->wdt[i], TYPE_IMX2_WDT); } =20 + for (i =3D 0; i < FSL_IMX8MP_NUM_CANS; i++) { + g_autofree char *name =3D g_strdup_printf("flexcan%d", i); + object_initialize_child(obj, name, &s->flexcan[i], TYPE_CAN_FLEXCA= N3); + } + object_initialize_child(obj, "eth0", &s->enet, TYPE_IMX_ENET); =20 object_initialize_child(obj, "pcie", &s->pcie, TYPE_DESIGNWARE_PCIE_HO= ST); @@ -669,6 +674,33 @@ static void fsl_imx8mp_realize(DeviceState *dev, Error= **errp) sysbus_mmio_map(SYS_BUS_DEVICE(&s->pcie_phy), 0, fsl_imx8mp_memmap[FSL_IMX8MP_PCIE_PHY1].addr); =20 + /* FLEXCANs */ + for (i =3D 0; i < FSL_IMX8MP_NUM_CANS; i++) { + static const struct { + hwaddr addr; + unsigned int irq; + } flexcan_table[FSL_IMX8MP_NUM_CANS] =3D { + { + fsl_imx8mp_memmap[FSL_IMX8MP_FLEXCAN1].addr, + FSL_IMX8MP_FLEXCAN1_IRQ + }, { + fsl_imx8mp_memmap[FSL_IMX8MP_FLEXCAN2].addr, + FSL_IMX8MP_FLEXCAN2_IRQ + }, + }; + + s->flexcan[i].ccm =3D IMX_CCM(&s->ccm); + object_property_set_link(OBJECT(&s->flexcan[i]), "canbus", + OBJECT(s->canbus[i]), &error_abort); + + sysbus_realize(SYS_BUS_DEVICE(&s->flexcan[i]), &error_abort); + + sysbus_mmio_map(SYS_BUS_DEVICE(&s->flexcan[i]), 0, + flexcan_table[i].addr); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->flexcan[i]), 0, + qdev_get_gpio_in(gicdev, flexcan_table[i].irq)); + } + /* On-Chip RAM */ if (!memory_region_init_ram(&s->ocram, OBJECT(dev), "imx8mp.ocram", fsl_imx8mp_memmap[FSL_IMX8MP_OCRAM].size, @@ -684,6 +716,7 @@ static void fsl_imx8mp_realize(DeviceState *dev, Error = **errp) switch (i) { case FSL_IMX8MP_ANA_PLL: case FSL_IMX8MP_CCM: + case FSL_IMX8MP_FLEXCAN1 ... FSL_IMX8MP_FLEXCAN2: case FSL_IMX8MP_GIC_DIST: case FSL_IMX8MP_GIC_REDIST: case FSL_IMX8MP_GPIO1 ... FSL_IMX8MP_GPIO5: @@ -715,6 +748,10 @@ static void fsl_imx8mp_realize(DeviceState *dev, Error= **errp) static const Property fsl_imx8mp_properties[] =3D { DEFINE_PROP_UINT32("fec1-phy-num", FslImx8mpState, phy_num, 0), DEFINE_PROP_BOOL("fec1-phy-connected", FslImx8mpState, phy_connected, = true), + DEFINE_PROP_LINK("canbus0", FslImx8mpState, canbus[0], TYPE_CAN_BUS, + CanBusState *), + DEFINE_PROP_LINK("canbus1", FslImx8mpState, canbus[1], TYPE_CAN_BUS, + CanBusState *), }; =20 static void fsl_imx8mp_class_init(ObjectClass *oc, const void *data) diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c index ca0ee2d3f2..16e9722d14 100644 --- a/hw/arm/imx8mp-evk.c +++ b/hw/arm/imx8mp-evk.c @@ -26,6 +26,7 @@ struct FslImx8mpEvkState { MachineState parent_obj; =20 FslImx8mpState soc; + CanBusState *canbus[FSL_IMX8MP_NUM_CANS]; =20 struct arm_boot_info boot_info; }; @@ -86,6 +87,12 @@ static void imx8mp_evk_init(MachineState *machine) =20 object_initialize_child(OBJECT(machine), "soc", &s->soc, TYPE_FSL_IMX8= MP); object_property_set_uint(OBJECT(&s->soc), "fec1-phy-num", 1, &error_fa= tal); + for (int i =3D 0; i < FSL_IMX8MP_NUM_CANS; i++) { + g_autofree char *bus_name =3D g_strdup_printf("canbus%d", i); + + object_property_set_link(OBJECT(&s->soc), bus_name, + OBJECT(s->canbus[i]), &error_fatal); + } sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->soc), &error_fatal); =20 memory_region_add_subregion(get_system_memory(), FSL_IMX8MP_RAM_START, @@ -122,6 +129,19 @@ static const char *imx8mp_evk_get_default_cpu_type(con= st MachineState *ms) return ARM_CPU_TYPE_NAME("cortex-a53"); } =20 +static void imx8mp_evk_machine_init(Object *obj) +{ + FslImx8mpEvkState *s =3D IMX8MPEVK_MACHINE(obj); + + object_property_add_link(obj, "canbus0", TYPE_CAN_BUS, + (Object **)&s->canbus[0], + object_property_allow_set_link, 0); + + object_property_add_link(obj, "canbus1", TYPE_CAN_BUS, + (Object **)&s->canbus[1], + object_property_allow_set_link, 0); +} + static void imx8mp_evk_machine_class_init(ObjectClass *oc, const void *dat= a) { MachineClass *mc =3D MACHINE_CLASS(oc); @@ -140,6 +160,7 @@ static const TypeInfo imx8mp_evk_machine_types[] =3D { .name =3D TYPE_IMX8MPEVK_MACHINE, .parent =3D TYPE_MACHINE, .class_init =3D imx8mp_evk_machine_class_init, + .instance_init =3D imx8mp_evk_machine_init, .instance_size =3D sizeof(FslImx8mpEvkState), .interfaces =3D aarch64_machine_interfaces, }, diff --git a/hw/misc/imx8mp_ccm.c b/hw/misc/imx8mp_ccm.c index 911911ed86..97d363e79d 100644 --- a/hw/misc/imx8mp_ccm.c +++ b/hw/misc/imx8mp_ccm.c @@ -129,6 +129,9 @@ static uint32_t imx8mp_ccm_get_clock_frequency(IMXCCMSt= ate *dev, IMXClk clock) case CLK_HIGH: freq =3D CKIH_FREQ; break; + case CLK_CAN: + freq =3D 40000000; /* 40Mhz, taken from device tree */ + break; case CLK_IPG: case CLK_IPG_HIGH: /* diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 5f5c4899ad..0416ba823c 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -600,6 +600,7 @@ config FSL_IMX8MP imply I2C_DEVICES imply PCI_DEVICES select ARM_GIC + select CAN_FLEXCAN select FSL_IMX8MP_ANALOG select FSL_IMX8MP_CCM select IMX --=20 2.54.0