From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9153CCD98E4 for ; Sat, 20 Jun 2026 17:20:10 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wazMH-0005L1-Cm; Sat, 20 Jun 2026 13:19:53 -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 1wazMG-0005KY-KF for qemu-trivial@nongnu.org; Sat, 20 Jun 2026 13:19:52 -0400 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wazME-0003SW-Tg for qemu-trivial@nongnu.org; Sat, 20 Jun 2026 13:19:52 -0400 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-6919f40a0c8so5693383a12.0 for ; Sat, 20 Jun 2026 10:19:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781975989; x=1782580789; darn=nongnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=yz1lyzAp3fEIr0XZVsXsjafx7CnJK8+BCF69ozcnZOs=; b=GbPtev8sCXAQyi0fNZqePTaO9QhgN9VkvAMXNal/U2eY6oOVtEU3jkeuFLvEJa2DOn cjViX2oKkFd5dl0gKYLB5llGp3rYwd5TP63JLx4bTYBJMZdQDLtI4DbLTfEvAgVX1y1Y 1tjO/3KDOjK3A03s2rek3odn0hd6BwQQi1GadzcsL9IOT88yOKYjT96EvSe5Tw6NWzt4 GAdQDyhYNm7RlMuYb4i7ALdzBugcV4yazi8Ow80TkOOawjNHgnZOXujIUTLR+AS2Ht2X i0aI+1OV4tJVll6c49yf703yFH3nZEfvHsEwLL9rtTloqkiSxYzG87MPjvprn+TLF9g0 zTvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781975989; x=1782580789; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yz1lyzAp3fEIr0XZVsXsjafx7CnJK8+BCF69ozcnZOs=; b=OghW085SrNy1uoCKFh9WYEnUEt907eULI62bqe6LGhucV/4gBaAkwVtXw2802NkpFR bfHINjKr96pza8T02XiXlZ36K2gEFT/YqDUkcRlkesJLEIbnlx147athjYmmhst7MN4h gCQJ678sdoshjB7QnghgO4WiIcr7J1TlnJoSLhRS6N/HEwcKTbmkXeLOvXE602BRpU/E /+8J7ovuUp2wqyBMDKQalDbAPWayjqHS8bYSf/2zIbieZcacyfmz1tJ+rBfRDMOLesIt vrNkMLx1WSBGvqkTOAvM5LuF1x7j1n4+8AbAxFDWoMr1GLFlt/gl2+eqSqWOIfXkcNyU APPg== X-Gm-Message-State: AOJu0YzdT+f9asTQ0+PO3E0g9jNKQ1KxQOSVcZdIlIyqULDToommeBbR ms0ByUV93NEaL9FC1GOCYjGp5+bCKA9crzalQQdeLzwX3pgaT+f/7TCS X-Gm-Gg: AfdE7ckHD+tjFFO9OdIyxvBfPwGiini+tAVZ0EEkQxwHxqJ1VzxmNnKwCcW/clHZBzA iatpjlj63mqToLnqJ2cCSHtgqtkRWJXp9urqoIe4yLSSimDStYgh7z0lPjqkYQOnLK5ZUPUkRgD hZbA4/w6og0yU28qh5kRI76SZO3igQLRY7sn0q4ubxnrSGfqz7oU+PHdKlnrRZIvVGiLcjMbyST 61S4bOQChOoYp402MlSWeeE2jwqrUhpfha6YN8zvpRJTN6LX5ionGwfLJkbSE1Yn8YJNosa4Wkw MzEqNL3MLUNIuWEAVu3bkQgNJqI2keniw89UcdZ1S/3TMkWgWmjzZPwkyFz2YQBMmBSCxjjq7y9 dEvYLkc4wAmJnKW6J6GMkXBXbfsI0c0pGHKxX9U180bMkj04ayUjKqAmpW7uB45L5yJPPt4yHcE zmRxk7sFFzNE6EXFtX X-Received: by 2002:a05:6402:3548:b0:68f:c63f:1ed4 with SMTP id 4fb4d7f45d1cf-696e52075camr4194556a12.27.1781975988671; Sat, 20 Jun 2026 10:19:48 -0700 (PDT) Received: from machine.. ([37.113.214.163]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6977be31c73sm949835a12.17.2026.06.20.10.19.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Jun 2026 10:19:47 -0700 (PDT) From: Evgeny Kolmakov To: qemu-devel@nongnu.org Cc: qemu-trivial@nongnu.org, Evgeny Kolmakov Subject: [PATCH] hw/dma/soc_dma: Replace if-else chain with array lookup Date: Sat, 20 Jun 2026 20:13:18 +0300 Message-ID: <20260620171318.24189-1-randomjack94dev@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::535; envelope-from=randomjack94dev@gmail.com; helo=mail-ed1-x535.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-trivial@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-trivial-bounces+qemu-trivial=archiver.kernel.org@nongnu.org Sender: qemu-trivial-bounces+qemu-trivial=archiver.kernel.org@nongnu.org Refactor transfer_fn assignment in soc_dma_ch_update() via array lookup as suggested by the TODO comment. Signed-off-by: Evgeny Kolmakov --- hw/dma/soc_dma.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/hw/dma/soc_dma.c b/hw/dma/soc_dma.c index d5c52b804f..a5b1ef9f61 100644 --- a/hw/dma/soc_dma.c +++ b/hw/dma/soc_dma.c @@ -163,6 +163,16 @@ static inline enum soc_dma_port_type soc_dma_ch_update_type( void soc_dma_ch_update(struct soc_dma_ch_s *ch) { + static const soc_dma_transfer_t transfer_fn[2][2] = { + [soc_dma_port_mem] = { + [soc_dma_port_mem] = transfer_mem2mem, + [soc_dma_port_fifo] = transfer_mem2fifo, + }, + [soc_dma_port_fifo] = { + [soc_dma_port_mem] = transfer_fifo2mem, + [soc_dma_port_fifo] = transfer_fifo2fifo, + }, + }; enum soc_dma_port_type src, dst; src = soc_dma_ch_update_type(ch, 0); @@ -171,21 +181,16 @@ void soc_dma_ch_update(struct soc_dma_ch_s *ch) ch->transfer_fn = ch->dma->transfer_fn; return; } - dst = soc_dma_ch_update_type(ch, 1); - /* TODO: use src and dst as array indices. */ - if (src == soc_dma_port_mem && dst == soc_dma_port_mem) - ch->transfer_fn = transfer_mem2mem; - else if (src == soc_dma_port_mem && dst == soc_dma_port_fifo) - ch->transfer_fn = transfer_mem2fifo; - else if (src == soc_dma_port_fifo && dst == soc_dma_port_mem) - ch->transfer_fn = transfer_fifo2mem; - else if (src == soc_dma_port_fifo && dst == soc_dma_port_fifo) - ch->transfer_fn = transfer_fifo2fifo; - else + dst = soc_dma_ch_update_type(ch, 1); + if (dst == soc_dma_port_other) { + ch->update = 0; ch->transfer_fn = ch->dma->transfer_fn; + return; + } - ch->update = (dst != soc_dma_port_other); + ch->update = 1; + ch->transfer_fn = transfer_fn[src][dst]; } static void soc_dma_ch_freq_update(struct dma_s *s) -- 2.43.0