From patchwork Wed Jul 10 16:25:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 13729468 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 DD6B9C3DA47 for ; Wed, 10 Jul 2024 16:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jVm0DLf8Oepoe2Q9iW8kXrqziAoLljiLA7dGshiTNsw=; b=dmY9XvS5sKjM5B oCjaXEBoypkQEQJoeSsqzhU04QPM8/CW2KOs/SKz866tdIQnHAfnxd9pWC8R/a8JCNgJVk3gKd4Kj lBBpdOCHcW3b0jz1WKaQOU+p64ZULAt50YSyOyVBUwCPSKOxbKeXb504bLn2wsoL90apyYfcqPB5E FPeKrEwv2f6DuG954cGj6dcoy8lT+JdRsRIP6ibNM78MzdSlf1N6kyibqruBMvj1+3/33Ox19gEUh SQoh7Ak01+XPP/pRMRc0o5GpEO7gMIDIx7PAeE7YRBO3LPrVZ2EAHsbMHnNVhp8O8n2xe4mTXQPV9 lZvVLqLXpE/XFBSL9MuQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8V-0000000B8gj-3CC5; Wed, 10 Jul 2024 16:25:43 +0000 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8S-0000000B8eN-0Nwd for linux-amlogic@lists.infradead.org; Wed, 10 Jul 2024 16:25:41 +0000 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4266182a9d7so27037725e9.0 for ; Wed, 10 Jul 2024 09:25:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720628738; x=1721233538; darn=lists.infradead.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=+f/3bReYMesF4TJq9BOi7hv3PG6ArjPAwHRzmWrlWAw=; b=SeUWIjNdVNbyWZY0+HlSoON7mhtSJQhTzc+e14MontMJ4b/9EhZyWhbRjIVbNwebhj 2dBbHYdEx/yz7wHvTHv/wxFjEaDSmNyn4qFnQsHczfGcnK20RmwmZzVzDIupW2PUHELp yMYCnjFPEBwo8lnGRgfVBmfqu2K9BRmY1yceTwzNy0QcPxvsI5cybvgZW6eWKDT33yTe RuY0Dfy+oEyw/KwONaN0A4uKMjQ77+r76a5jOTE1cGamO6o/SGo1HixsxkBGFJpZHtEk sxmTovtg3BrgqhByJ2jznFRhAOouScKjgX1GS2kveyypDRkIY/Z7zvvWAw+pIhjYD2hq 0vjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720628738; x=1721233538; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+f/3bReYMesF4TJq9BOi7hv3PG6ArjPAwHRzmWrlWAw=; b=Xht17q3GK/8Kpf0xcY66Vmdcsj5leYrViCcbQSLdQfInU/MvysVB0HA8UzYJJWa+0U DMxgQz/UzzGo7tAqnCGRsw5smKMEjHhV+pD4QfEWEE3Jo/QWLgBT110ZmhlxwN1FtbDw /PO+FPgEkzskDuGqjP01G28wbkE2O5X0wZOahNiyeRZKCr8GI2gF1eeTgBOv9eX62nIE obarIsNQWGEw7l3ELrzU9mwmrxCwkxHxT1sal5uppDBgQ6e6ToAbsTN824RluwXs7AW7 fbA69xUpjt07gvSYhS5ZqiGDxKvGYyRZa1YK5povp1IxOKmmUn2EZIFABT6FAcWF4yqC KoZA== X-Forwarded-Encrypted: i=1; AJvYcCV1hznj9WwvnkAcBNb+agS6aJClr/PLCFycjuvsoLKzPMvV5okia1gig6Paywsfjjp1p3SUIIxoJ3o9YirOMqHAYxqZn8Yn/qawZf4ecHzJVkc= X-Gm-Message-State: AOJu0YwL/1hKkJylMdoD0QxHbg9DomeWwkGKzQ57kovxyZSOSNU0POkc pOQdrKehcX9bNd8YwtA1+5tqV2BiqQArr80+jHjznJxN+gytyorln+dTianExMk= X-Google-Smtp-Source: AGHT+IH2qiHBUH1RFO23oaibc8DcbiyQCXRCeGt1UIGKRM4xe2XwMQCbQGjWpAfO7TNwIg1uOUYcow== X-Received: by 2002:a05:600c:2257:b0:426:5dd0:a1fc with SMTP id 5b1f17b1804b1-426708fa932mr42470925e9.34.1720628738111; Wed, 10 Jul 2024 09:25:38 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1c99:6356:8466:36cf]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-4266f6e09e5sm88693815e9.5.2024.07.10.09.25.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jul 2024 09:25:37 -0700 (PDT) From: Jerome Brunet To: Philipp Zabel , Stephen Boyd , Neil Armstrong Cc: Jerome Brunet , Jan Dakinevich , linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org Subject: [PATCH 1/8] reset: amlogic: convert driver to regmap Date: Wed, 10 Jul 2024 18:25:10 +0200 Message-ID: <20240710162526.2341399-2-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240710162526.2341399-1-jbrunet@baylibre.com> References: <20240710162526.2341399-1-jbrunet@baylibre.com> MIME-Version: 1.0 X-Patchwork-Bot: notify X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240710_092540_154636_24D84C47 X-CRM114-Status: GOOD ( 17.26 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org To allow using the same driver for the main reset controller and the auxiliary ones embedded in the clock controllers, convert the the Amlogic reset driver to regmap. Signed-off-by: Jerome Brunet --- drivers/reset/reset-meson.c | 80 ++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/drivers/reset/reset-meson.c b/drivers/reset/reset-meson.c index f78be97898bc..8f3d6e9df235 100644 --- a/drivers/reset/reset-meson.c +++ b/drivers/reset/reset-meson.c @@ -11,36 +11,44 @@ #include #include #include +#include #include #include #include -#define BITS_PER_REG 32 - struct meson_reset_param { int reg_count; int level_offset; }; struct meson_reset { - void __iomem *reg_base; const struct meson_reset_param *param; struct reset_controller_dev rcdev; - spinlock_t lock; + struct regmap *map; }; +static void meson_reset_offset_and_bit(struct meson_reset *data, + unsigned long id, + unsigned int *offset, + unsigned int *bit) +{ + unsigned int stride = regmap_get_reg_stride(data->map); + + *offset = (id / (stride * BITS_PER_BYTE)) * stride; + *bit = id % (stride * BITS_PER_BYTE); +} + static int meson_reset_reset(struct reset_controller_dev *rcdev, - unsigned long id) + unsigned long id) { struct meson_reset *data = container_of(rcdev, struct meson_reset, rcdev); - unsigned int bank = id / BITS_PER_REG; - unsigned int offset = id % BITS_PER_REG; - void __iomem *reg_addr = data->reg_base + (bank << 2); + unsigned int offset, bit; - writel(BIT(offset), reg_addr); + meson_reset_offset_and_bit(data, id, &offset, &bit); - return 0; + return regmap_update_bits(data->map, offset, + BIT(bit), BIT(bit)); } static int meson_reset_level(struct reset_controller_dev *rcdev, @@ -48,25 +56,13 @@ static int meson_reset_level(struct reset_controller_dev *rcdev, { struct meson_reset *data = container_of(rcdev, struct meson_reset, rcdev); - unsigned int bank = id / BITS_PER_REG; - unsigned int offset = id % BITS_PER_REG; - void __iomem *reg_addr; - unsigned long flags; - u32 reg; + unsigned int offset, bit; - reg_addr = data->reg_base + data->param->level_offset + (bank << 2); + meson_reset_offset_and_bit(data, id, &offset, &bit); + offset += data->param->level_offset; - spin_lock_irqsave(&data->lock, flags); - - reg = readl(reg_addr); - if (assert) - writel(reg & ~BIT(offset), reg_addr); - else - writel(reg | BIT(offset), reg_addr); - - spin_unlock_irqrestore(&data->lock, flags); - - return 0; + return regmap_update_bits(data->map, offset, + BIT(bit), assert ? 0 : BIT(bit)); } static int meson_reset_assert(struct reset_controller_dev *rcdev, @@ -113,30 +109,42 @@ static const struct of_device_id meson_reset_dt_ids[] = { }; MODULE_DEVICE_TABLE(of, meson_reset_dt_ids); +static const struct regmap_config regmap_config = { + .reg_bits = 32, + .val_bits = 32, + .reg_stride = 4, +}; + static int meson_reset_probe(struct platform_device *pdev) { + struct device *dev = &pdev->dev; struct meson_reset *data; + void __iomem *base; - data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); + data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; - data->reg_base = devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(data->reg_base)) - return PTR_ERR(data->reg_base); + base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(base)) + return PTR_ERR(base); - data->param = of_device_get_match_data(&pdev->dev); + data->param = of_device_get_match_data(dev); if (!data->param) return -ENODEV; - spin_lock_init(&data->lock); + data->map = devm_regmap_init_mmio(dev, base, ®map_config); + if (IS_ERR(data->map)) + return dev_err_probe(dev, PTR_ERR(data->map), + "can't init regmap mmio region\n"); data->rcdev.owner = THIS_MODULE; - data->rcdev.nr_resets = data->param->reg_count * BITS_PER_REG; + data->rcdev.nr_resets = data->param->reg_count * BITS_PER_BYTE + * regmap_config.reg_stride; data->rcdev.ops = &meson_reset_ops; - data->rcdev.of_node = pdev->dev.of_node; + data->rcdev.of_node = dev->of_node; - return devm_reset_controller_register(&pdev->dev, &data->rcdev); + return devm_reset_controller_register(dev, &data->rcdev); } static struct platform_driver meson_reset_driver = { From patchwork Wed Jul 10 16:25:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 13729467 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 28D65C3DA42 for ; Wed, 10 Jul 2024 16:25:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7mW+Rk2K+u4cy7NdqaHLI7M4FR+qcmWJNJc3iACk20M=; b=jkOLTIgMNEcaVx ACDDXixb7cmHlKeF8aoD2o1MOmVyz8BHbHcmirhevFMavdL8pzLhaKQjzbyoy0sUlGehcwlF/o87f QvH2oTjNxNnPTP6yHplVoqpOYWG5gb8G4FiwbpnWrav2ROLyL18oYFTSjb2tFn2Lc9fUwF2cIZQYb hqZozHJQYJg2IBhC/zzYm6FOPprCvxMXtd09Gter7xlvBGePOx21w2eWhWUIg1xgEtgrzyRE1GcCN 0HbLml7AYqtuKnIfPtymJh9dw3RLf7+bvvor94AfpSjnt4zbkw0zKCKNDTmuCWyKJWaiC81PRhUxV EDFzxKPBzVWtv7JQzkkg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8W-0000000B8hg-2zMD; Wed, 10 Jul 2024 16:25:44 +0000 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8T-0000000B8ei-2RHB for linux-amlogic@lists.infradead.org; Wed, 10 Jul 2024 16:25:43 +0000 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-42565670e20so6435225e9.0 for ; Wed, 10 Jul 2024 09:25:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720628739; x=1721233539; darn=lists.infradead.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=QEvOpWPnO+AdwLbOiUNmMA/qUdgyKNblxOI/csLZzos=; b=F+9ODDdahN9Rdpgri7iWhljcWqoa+d27YQSJ3Atzii6HXymN4jcpq+Dvmy/nlVAvB1 M/XNeY/g362OhB0eg0e2L3yWGRGO/iLhmbE4aDX+PzUxOlu+gkN+NVi0MedsboFxQCrH aw4CAaNU7GDe+jp5PuECmdMWBqelcvLUbsqVJjsIezIW59jWRC8FXqGPENvgo9FZu8RS 8a3KPCqS1HzLqxLPvyLuKH9cDkj/pUvGswHA2Xkwd6oeB7ez9syrjao3lSekT3IL2f0b 3IE2j5M1DhDxWedV03aflGt/2csvGE2lf0WVR2GS3ForDRw1+4cPUw8FaWRdVgdl6YiM RR4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720628739; x=1721233539; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QEvOpWPnO+AdwLbOiUNmMA/qUdgyKNblxOI/csLZzos=; b=de2CYi29Kr6DT4q2p45DTIjudWQ8rpeiL61JRbFobf7xE6T7CH3aq0NM0JtjRtC8JF yLL7Th87Ns1PVxwm7ZWewiyKrMaRh2Iq77PHYIPqVw6J2RSrI82mi72KuV053o6tJB3A CXdOJCfMlms70M9TB6u/PN7jQ/X1+O8IbkjIWLqB+JoTmGYT7gEvp5Fx8vafixB2Sj2M qnZQ+7DucXk4oxsCAOAYu97cUtWGEXMw5S1Uh1uWQVZek8m/G5hFFzOYqQ47x5ogm/Uj 6XqiXkz2RJTauHDdsvikMWYSZgMk4QzhdjJLtmvGIqofTj1ZRZ0jg06BLtM4y5QWT4tI lTDQ== X-Forwarded-Encrypted: i=1; AJvYcCWMsiQJNY6RdYpo7UdeGRs72fmViDbPNesi8GM1cGLJ888VZQ0W2uvEiEOGLqjD+PDJT6d1GwbgJO3v4ydzW0Jg4VM1xifNPumnT6esWFXDKfw= X-Gm-Message-State: AOJu0YwN2tIA+BXOoytbHiZRLgSg9C1nT6Pq9Zzt6CYQNA1L3o/4LmLj La3vT89vNj3RlEu3e8I3YXUm9qn5aRNUUWfdCCNssDfJ1SvTQewMEPXh/TBAgdg= X-Google-Smtp-Source: AGHT+IGEAqgF56Q6WhhGNsntYmhXMllSRTjGVzvDJz7QmMwzchYfln7Fkm+0PHq8i2T834Jv9qxoxw== X-Received: by 2002:a7b:c4c7:0:b0:426:6fb1:6b64 with SMTP id 5b1f17b1804b1-427981b7727mr1634915e9.7.1720628739119; Wed, 10 Jul 2024 09:25:39 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1c99:6356:8466:36cf]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-4266f6e09e5sm88693815e9.5.2024.07.10.09.25.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jul 2024 09:25:38 -0700 (PDT) From: Jerome Brunet To: Philipp Zabel , Stephen Boyd , Neil Armstrong Cc: Jerome Brunet , Jan Dakinevich , linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org Subject: [PATCH 2/8] reset: amlogic: add driver parameters Date: Wed, 10 Jul 2024 18:25:11 +0200 Message-ID: <20240710162526.2341399-3-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240710162526.2341399-1-jbrunet@baylibre.com> References: <20240710162526.2341399-1-jbrunet@baylibre.com> MIME-Version: 1.0 X-Patchwork-Bot: notify X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240710_092541_676458_B0FF7AA7 X-CRM114-Status: GOOD ( 13.21 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org To allow using the same driver for the main reset controller and the auxiliary ones embedded in the clock controllers, allow to customise the reset offset, same as the level offset. Also add an option to make the level reset active low or high. Signed-off-by: Jerome Brunet --- drivers/reset/reset-meson.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/reset/reset-meson.c b/drivers/reset/reset-meson.c index 8f3d6e9df235..59126c9f194a 100644 --- a/drivers/reset/reset-meson.c +++ b/drivers/reset/reset-meson.c @@ -18,7 +18,9 @@ struct meson_reset_param { int reg_count; + int reset_offset; int level_offset; + bool level_low_reset; }; struct meson_reset { @@ -46,6 +48,7 @@ static int meson_reset_reset(struct reset_controller_dev *rcdev, unsigned int offset, bit; meson_reset_offset_and_bit(data, id, &offset, &bit); + offset += data->param->reset_offset; return regmap_update_bits(data->map, offset, BIT(bit), BIT(bit)); @@ -60,9 +63,10 @@ static int meson_reset_level(struct reset_controller_dev *rcdev, meson_reset_offset_and_bit(data, id, &offset, &bit); offset += data->param->level_offset; + assert ^= data->param->level_low_reset; return regmap_update_bits(data->map, offset, - BIT(bit), assert ? 0 : BIT(bit)); + BIT(bit), assert ? BIT(bit) : 0); } static int meson_reset_assert(struct reset_controller_dev *rcdev, @@ -85,17 +89,23 @@ static const struct reset_control_ops meson_reset_ops = { static const struct meson_reset_param meson8b_param = { .reg_count = 8, + .reset_offset = 0x0, .level_offset = 0x7c, + .level_low_reset = true, }; static const struct meson_reset_param meson_a1_param = { .reg_count = 3, + .reset_offset = 0x0, .level_offset = 0x40, + .level_low_reset = true, }; static const struct meson_reset_param meson_s4_param = { .reg_count = 6, + .reset_offset = 0x0, .level_offset = 0x40, + .level_low_reset = true, }; static const struct of_device_id meson_reset_dt_ids[] = { From patchwork Wed Jul 10 16:25:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 13729465 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 D5FCEC41513 for ; Wed, 10 Jul 2024 16:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=VMJHHFpxrO3hZdl3wNAdI9B83+fEBWhFpfG4hOCLcMg=; b=J/4+uKDikllW/n UsuqhZduZz7fgJzgY+DC/BbCD7pxt87KKWn/hkO292ATz6ut+SwbU5nZ8oatvRGlVQUDDBup55zlL h9yw1ir+pH0nq8I0WnJhjp144GWBmRLNYJMFtXG2DFL6xSL545UzX7ibCFJS61YHVV5e45uP4+u+E sBtG/In5nllOj+zaVZ/bHPI8wFdiADeDdte/NLyKFFEkLn7tfwuzHoaGl8Q3P+8yGFQ2ulRE2utRB a/4t33p3XqCuUuPVgc5FpF9r71cwU0/V4A4WZ7jGcXsAUy4yIfSfI9EqabH3VwuCuAkxeyAHQwEZQ Ucb8v2eT1XoXrMjPunCQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8W-0000000B8gx-0g4a; Wed, 10 Jul 2024 16:25:44 +0000 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8T-0000000B8f3-2RU1 for linux-amlogic@lists.infradead.org; Wed, 10 Jul 2024 16:25:43 +0000 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-4266f535e82so16033125e9.1 for ; Wed, 10 Jul 2024 09:25:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720628740; x=1721233540; darn=lists.infradead.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=cy32ICucHSRFg8Zvj0U3F+/oAcafvm3gP5oJRBTbz3s=; b=RX6ICOEQzzyARUNGJ3W0rHqrL+z3TNFTnNkCKvmiN/bbznHBFNNmSCus56P2/C44eM q+KzsZoYZlMw7El1O004db6bxUGSbKPPtQgWdE3r1tFKXneedK+7pIIYdop8P1LjCyjM gPlXWAkALSskX8wY/61JbqpIVdKBE0QRVZy6VQPYvzoeeUos+KH8nd2GzhTASxQJxefm bbtME5H58cCcAaoQzMZMFu7Xg2GVyt6CokK7mJek8L3hC0ouzocbLjmWmN/l6TSj+8mI 1R1CcKV8dhE7qfux06/Y1rQMsaV0sWo/zzOz/AVNk7stqGvy2KPwVbdPwcBVdjSL02UR fXjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720628740; x=1721233540; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cy32ICucHSRFg8Zvj0U3F+/oAcafvm3gP5oJRBTbz3s=; b=UGVZ3+1NrTAWegMW1oKKHyX4KdYx9I4T2EteAVXK7/5D0P9d5wODlbtoYM4BLnIjie nPyL5NZkYU1q4gv9hvYGJavr8PsOqMGssqaWaEr8rZOz/g4HhTgVrVxcI21ymDEapX9u vMZ58mqhpJRuWjB+ywOiQUT5N6OfZ8Bln5YYUDT+TPW36UiucnjuhstpZM1CRjfW1RH/ YfviXE7IWQPnWP9VS9qRykbiDP5GTni89i1rthqaF/x9gAj7Fo2+lv7zf4EfXI11bURj iHNHH0u1Cy2UvaqHZkoJ+ibEyiF3AljY+fvtG4RchE6Fs6mNi9L31jRKvEJ2ei79Yv3S w2Cg== X-Forwarded-Encrypted: i=1; AJvYcCWpx7w7QesnlZ5+EPjkcY6/dm4os3j+ROTy5wD8mdayQ9wCQwdU7n4pDSNfjfrwwllDJ/sXM9iUR0CRBwmmEIPpOvhfJJmw3vCqqVKPvs2EoOw= X-Gm-Message-State: AOJu0YwV/+qi7kcinHoP9gfdq3EOlZAojVhc4llfUMAgWMAZ2I55KA6t E2/QPFwS4iJ3u3iqkdteHpgDaM67RqoSD8LygoKo2jMN2xQCxaP4yvOERh8F2Xo= X-Google-Smtp-Source: AGHT+IEuVqr7vAPRyxsPi49PFNqWl5DSKnIEvhUozJ1PVrnSPX2EIlRX+Aqw6wjznRQ9Dov91P/Otw== X-Received: by 2002:a05:600c:896:b0:426:5216:3254 with SMTP id 5b1f17b1804b1-426708f1eebmr46095795e9.32.1720628739886; Wed, 10 Jul 2024 09:25:39 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1c99:6356:8466:36cf]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-4266f6e09e5sm88693815e9.5.2024.07.10.09.25.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jul 2024 09:25:39 -0700 (PDT) From: Jerome Brunet To: Philipp Zabel , Stephen Boyd , Neil Armstrong Cc: Jerome Brunet , Jan Dakinevich , linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org Subject: [PATCH 3/8] reset: amlogic: split the device and platform probe Date: Wed, 10 Jul 2024 18:25:12 +0200 Message-ID: <20240710162526.2341399-4-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240710162526.2341399-1-jbrunet@baylibre.com> References: <20240710162526.2341399-1-jbrunet@baylibre.com> MIME-Version: 1.0 X-Patchwork-Bot: notify X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240710_092541_688846_75DC1DFD X-CRM114-Status: GOOD ( 14.90 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org To prepare the addition of the auxiliary device support, split out the device probe from the probe of the platform device. The device probe will be common to both the platform and auxiliary driver. Signed-off-by: Jerome Brunet --- drivers/reset/reset-meson.c | 55 +++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/drivers/reset/reset-meson.c b/drivers/reset/reset-meson.c index 59126c9f194a..fec55321b52b 100644 --- a/drivers/reset/reset-meson.c +++ b/drivers/reset/reset-meson.c @@ -87,6 +87,27 @@ static const struct reset_control_ops meson_reset_ops = { .deassert = meson_reset_deassert, }; +static int meson_reset_probe(struct device *dev, struct regmap *map, + const struct meson_reset_param *param) +{ + unsigned int stride = regmap_get_reg_stride(map); + struct meson_reset *data; + + data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + data->param = param; + data->map = map; + data->rcdev.owner = dev->driver->owner; + data->rcdev.nr_resets = param->reg_count * BITS_PER_BYTE + * stride; + data->rcdev.ops = &meson_reset_ops; + data->rcdev.of_node = dev->of_node; + + return devm_reset_controller_register(dev, &data->rcdev); +} + static const struct meson_reset_param meson8b_param = { .reg_count = 8, .reset_offset = 0x0, @@ -125,46 +146,38 @@ static const struct regmap_config regmap_config = { .reg_stride = 4, }; -static int meson_reset_probe(struct platform_device *pdev) +static int meson_reset_pltf_probe(struct platform_device *pdev) { + + const struct meson_reset_param *param; struct device *dev = &pdev->dev; - struct meson_reset *data; + struct regmap *map; void __iomem *base; - data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); - if (!data) - return -ENOMEM; - base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(base)) return PTR_ERR(base); - data->param = of_device_get_match_data(dev); - if (!data->param) + param = of_device_get_match_data(dev); + if (!param) return -ENODEV; - data->map = devm_regmap_init_mmio(dev, base, ®map_config); - if (IS_ERR(data->map)) - return dev_err_probe(dev, PTR_ERR(data->map), + map = devm_regmap_init_mmio(dev, base, ®map_config); + if (IS_ERR(map)) + return dev_err_probe(dev, PTR_ERR(map), "can't init regmap mmio region\n"); - data->rcdev.owner = THIS_MODULE; - data->rcdev.nr_resets = data->param->reg_count * BITS_PER_BYTE - * regmap_config.reg_stride; - data->rcdev.ops = &meson_reset_ops; - data->rcdev.of_node = dev->of_node; - - return devm_reset_controller_register(dev, &data->rcdev); + return meson_reset_probe(dev, map, param); } -static struct platform_driver meson_reset_driver = { - .probe = meson_reset_probe, +static struct platform_driver meson_reset_pltf_driver = { + .probe = meson_reset_pltf_probe, .driver = { .name = "meson_reset", .of_match_table = meson_reset_dt_ids, }, }; -module_platform_driver(meson_reset_driver); +module_platform_driver(meson_reset_pltf_driver); MODULE_DESCRIPTION("Amlogic Meson Reset Controller driver"); MODULE_AUTHOR("Neil Armstrong "); From patchwork Wed Jul 10 16:25:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 13729469 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 32396C3DA4B for ; Wed, 10 Jul 2024 16:25:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xVlIKmLDZIE+els66MaH7ImtNWryk+VMYYbe74arcKU=; b=O6ElJeIqFd+Qko zRZDV4/rHHKFG7E6khHlaoanFClqVeqBaE4QV4oOOULueoQmghQQ6JbS57iOMZUNmEpL8i461nMq8 Rv0N2bZNnRWNqmX24Aml+k3qgtbaG94NjRbEza0Ds1rxj9ubYeGQSDnOLTsLxxP4MTtTOgIbf0W20 SZ0q/ZkiiiqQI9ewG1GkfYv9B1L4Kpf3dORkDqE6c9jtIvkmctblqX/E47vozeVpCiyAUBpA8Go4K 7vjeo+8FY506xY0lP44SXiOGIHv6zUxgIih1UuIHZJ/jJ7qoncyWeoHbI8M7w7R2YnUjRkhb/CjWF NFuVvecTDaUg+NAssf2w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8Z-0000000B8jr-2nNW; Wed, 10 Jul 2024 16:25:47 +0000 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8T-0000000B8f7-42ih for linux-amlogic@lists.infradead.org; Wed, 10 Jul 2024 16:25:44 +0000 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-4265c2b602aso32484805e9.3 for ; Wed, 10 Jul 2024 09:25:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720628740; x=1721233540; darn=lists.infradead.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=ypBfZt6woLl48yZMYWLwJnxD1n063j94AW3SXRtrghk=; b=PQf7EFhU5yk1a4ULVdH/9n8uHDqDxsmmZOgvaQJkZTefErNp4MZ8cUpka+pJGbv67g R2/MMc+k+7Wufq13fH7RMYcR7SYV3vBXVY3qyIQGyiRp8AFEY+LlM2UNTJPCUdX5r2wu jYOxLixj+OPharmuCM/37/8Mf765bMR9eIpFhWPpRUU0WCxFqZ7/ypNfT+aeecmPMM3r Nzo/OtBtnS2KEbH8C/mi+UGe/+V9LHbbHflm0kWDgL7H88uhrI5+mxcvnCSaJ5YXE5RL 8AYFnNkuSv3EJ3gP/gjApl/YqkM1n/GO1UFlJb59NpbxmFh8q0HYzPPws1ATmlmBwTK/ m4dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720628740; x=1721233540; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ypBfZt6woLl48yZMYWLwJnxD1n063j94AW3SXRtrghk=; b=BPSFsoB4naLiHO4P54Qudel1RruMYkss5aoYEx8jBa5HRfszGIviO6Kyxlpr4sKhsU uew5JEWFduaRgEeNMb7gwZ3zVKzr5ullWW0b2zW/lcnrE3VyzM6iUkb8nrSaJYDNSbcy k/cMjT1F9iDtCO4D3KdWdTqrVPtkzLI5Og8lUoePv8AnBIBi2cx328rLs9B6hO9jsPpi iF9VNOUpioA0KxFYo4mSdyLudmsmP7brJKt6os4KqXvZ3c9/Un3hUHVmxXphMCmxs55v 339+Giv3zbolIHepJQ12QKiNEOXfLqCO0BFF24I4BB0AtpzQsH3eg39En1WOKUV5eaJq cABA== X-Forwarded-Encrypted: i=1; AJvYcCXTYdG6k2w3ZNT/Y8hUPQ5H2z4vlOjUMNPqfEcVzlddjIYV7b5s2LFMRA3rqhQjGvWPKLDT4NVUM25TYm0slnL4WNrtff0uXHnTNztmNWeSihM= X-Gm-Message-State: AOJu0YyDkL3ufiy14MvmJx7VeSJ0r6mI+o/5ammUel5uSQpqXySmhtZM 9UjZm6aIozGIxtsFSmrGztxfUvv8CPWK7YePm1pKpYUaTYoTghS/+jb9dHssaYU= X-Google-Smtp-Source: AGHT+IEY6Gw5O2963Scyj/oRKu7QUIVR4X1flEdWrgEg+3YfHL8aVdfzQffvR8CC//15Yu303pOoSg== X-Received: by 2002:a05:600c:63c7:b0:426:5f0b:a49b with SMTP id 5b1f17b1804b1-426707e360fmr36598765e9.23.1720628740679; Wed, 10 Jul 2024 09:25:40 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1c99:6356:8466:36cf]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-4266f6e09e5sm88693815e9.5.2024.07.10.09.25.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jul 2024 09:25:40 -0700 (PDT) From: Jerome Brunet To: Philipp Zabel , Stephen Boyd , Neil Armstrong Cc: Jerome Brunet , Jan Dakinevich , linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org Subject: [PATCH 4/8] reset: amlogic: use reset number instead of register count Date: Wed, 10 Jul 2024 18:25:13 +0200 Message-ID: <20240710162526.2341399-5-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240710162526.2341399-1-jbrunet@baylibre.com> References: <20240710162526.2341399-1-jbrunet@baylibre.com> MIME-Version: 1.0 X-Patchwork-Bot: notify X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240710_092542_055185_DFF38817 X-CRM114-Status: GOOD ( 12.38 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org The reset driver from audio clock controller may register less reset than a register can hold. To avoid making any change while switching to auxiliary support, use the number of reset instead of the register count to define the bounds of the reset controller. Signed-off-by: Jerome Brunet --- drivers/reset/reset-meson.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/reset/reset-meson.c b/drivers/reset/reset-meson.c index fec55321b52b..3e0447366ba6 100644 --- a/drivers/reset/reset-meson.c +++ b/drivers/reset/reset-meson.c @@ -17,7 +17,7 @@ #include struct meson_reset_param { - int reg_count; + unsigned int reset_num; int reset_offset; int level_offset; bool level_low_reset; @@ -90,7 +90,6 @@ static const struct reset_control_ops meson_reset_ops = { static int meson_reset_probe(struct device *dev, struct regmap *map, const struct meson_reset_param *param) { - unsigned int stride = regmap_get_reg_stride(map); struct meson_reset *data; data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); @@ -100,8 +99,7 @@ static int meson_reset_probe(struct device *dev, struct regmap *map, data->param = param; data->map = map; data->rcdev.owner = dev->driver->owner; - data->rcdev.nr_resets = param->reg_count * BITS_PER_BYTE - * stride; + data->rcdev.nr_resets = param->reset_num; data->rcdev.ops = &meson_reset_ops; data->rcdev.of_node = dev->of_node; @@ -109,21 +107,21 @@ static int meson_reset_probe(struct device *dev, struct regmap *map, } static const struct meson_reset_param meson8b_param = { - .reg_count = 8, + .reset_num = 256, .reset_offset = 0x0, .level_offset = 0x7c, .level_low_reset = true, }; static const struct meson_reset_param meson_a1_param = { - .reg_count = 3, + .reset_num = 96, .reset_offset = 0x0, .level_offset = 0x40, .level_low_reset = true, }; static const struct meson_reset_param meson_s4_param = { - .reg_count = 6, + .reset_num = 192, .reset_offset = 0x0, .level_offset = 0x40, .level_low_reset = true, From patchwork Wed Jul 10 16:25:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 13729470 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 6DB0CC3DA4A for ; Wed, 10 Jul 2024 16:25:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ieb27jJjA0uhQOtXWYTh80ATTJQ2Wm7tgn7t/iP0Oi4=; b=h45c2hM+jF1Q8A tSSysEoRLq6KoibgKbkgQi3K0SBM4eBrAtMYm2XW7R2/6eVBl5IK3VG8STMqOVxEnnJBYQhVCYtWj 1Ueefz73HxJkQKgL0+RFHq8PK9fP4eT1K7UuppyIUolINyn+bdIKBQjLKs6GiLQEuwHhaWJRtkdKf anJBKrUcL5ru0y1nB4E1e4ocgc9wKDkaJ3xqiIUoHL1eQ2O9O3ceZndyupKpZWRGb4DmwyJOkRH0e K8Ilz24J2UK6n74Js+jg+S8S0Blv1tb6eeX7c6YBloGrCL0pbB6K+4Bvb1iQ0nJbQ2x8tyHpwFTbB NP8qsE0dXCsYaLXwk3Kg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8a-0000000B8kK-0uWO; Wed, 10 Jul 2024 16:25:48 +0000 Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8V-0000000B8g6-1lAv for linux-amlogic@lists.infradead.org; Wed, 10 Jul 2024 16:25:44 +0000 Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2eeb1ba0468so32138241fa.0 for ; Wed, 10 Jul 2024 09:25:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720628741; x=1721233541; darn=lists.infradead.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=pscEsLCW2+xzc/V+pxCdqIstr838YuHky5BjadKIhsg=; b=iwolxovZ+jBNB4HC9BRGhspMa2oq3E+lyIsbA0K4m1cVEmmp/gbPtAhwj44LAXl4gx IuG4EVrtNHQAE22G7eBGmRUBsbOVZcYdgVZut8yqjboevUkK7P4zdRPOg6FILKdgp6pi YvYqJ8q5Vcj19jfwyAsPdK7jt9jyIot6Gt3wC0eF2oH8eYGGn4IeVqZePerTnFsGNj7z xxEE28Cdz4DDpVzz/5Sacsi+tiqXMdANmjQIOYLbwn63+5axMVfkxkJmVUYC6XwzjWJX u0aW1rlWxqRnXpNkpcMIJWM7BsomFp+O0l/sNRZJ+/Ng68EKxDvYxzvvV3ay52ovMzsx Fyvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720628741; x=1721233541; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pscEsLCW2+xzc/V+pxCdqIstr838YuHky5BjadKIhsg=; b=bHxo3z3EacMg7+Dlrbt3uOZ250/f+P+e2Ti6egQMPlpfzsWlXM9/2ioX6UgbOcb+NT syf7sF8fOCcIoPQwzWkOIaFgiAGHK+B3siWvKdo4CEbc4OE+xfLQsgEJwtCz7pQAEbA7 zBXTFb3jiKD7GAf3wWRl34xQfsRHtNYJrUXbP6jOzjPoBYm/eC9bmANIUsXXyiStVCBq PpY0hcYeI9GSMSl4NH17F6K/BN4g8QmDpBeObzjAXxDl+R+9OkF6vgkLSrH75u2NBB30 /m1RG2IDLpr7xHWFKGEMrWgmDRvW7kCoHQyQqqvB+PtzFvVq4vo3ew4BpaMQaKEXRn2P 4NCg== X-Forwarded-Encrypted: i=1; AJvYcCUzU1CR2kyIhM5Da1B3u0Z2YPPI5gmPhCx31Wt+f6sIeOtAZZAQmrwyWNn2Hjw+pFsqV1x7jfrMUKdXran/0iX1LY7cy1ANUIlAOcU7/L/AMr0= X-Gm-Message-State: AOJu0Yy37+Vwug+9cK39eAL1p8KJQfJf0sgihshcLijfNx6s4hEoXJ2w ID8xAiknRfqDN0bisQGEYY2bNJpQTkIizD2xyWGgTROMnAOf+IMpg8guHt7Wt1o= X-Google-Smtp-Source: AGHT+IFIOpVSt5nlbmui7fixIPX2FqGConbERPv2cHi/A6AIyFf4bo75VDo2gZeMvyu3iyHJ9ZWGTg== X-Received: by 2002:a2e:3315:0:b0:2ec:543a:b629 with SMTP id 38308e7fff4ca-2eeb318a0f7mr39237081fa.34.1720628741455; Wed, 10 Jul 2024 09:25:41 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1c99:6356:8466:36cf]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-4266f6e09e5sm88693815e9.5.2024.07.10.09.25.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jul 2024 09:25:41 -0700 (PDT) From: Jerome Brunet To: Philipp Zabel , Stephen Boyd , Neil Armstrong Cc: Jerome Brunet , Jan Dakinevich , linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org Subject: [PATCH 5/8] reset: amlogic: add reset status support Date: Wed, 10 Jul 2024 18:25:14 +0200 Message-ID: <20240710162526.2341399-6-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240710162526.2341399-1-jbrunet@baylibre.com> References: <20240710162526.2341399-1-jbrunet@baylibre.com> MIME-Version: 1.0 X-Patchwork-Bot: notify X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240710_092543_493631_AF67665A X-CRM114-Status: GOOD ( 11.37 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org Add a callback to check the status of the level reset, as done in the reset driver of the audio clock controller. Signed-off-by: Jerome Brunet --- drivers/reset/reset-meson.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/reset/reset-meson.c b/drivers/reset/reset-meson.c index 3e0447366ba6..65ba9190cb53 100644 --- a/drivers/reset/reset-meson.c +++ b/drivers/reset/reset-meson.c @@ -69,6 +69,23 @@ static int meson_reset_level(struct reset_controller_dev *rcdev, BIT(bit), assert ? BIT(bit) : 0); } +static int meson_reset_status(struct reset_controller_dev *rcdev, + unsigned long id) +{ + struct meson_reset *data = + container_of(rcdev, struct meson_reset, rcdev); + unsigned int val, offset, bit; + + meson_reset_offset_and_bit(data, id, &offset, &bit); + offset += data->param->level_offset; + + regmap_read(data->map, offset, &val); + val = !!(BIT(bit) & val); + + + return val ^ data->param->level_low_reset; +} + static int meson_reset_assert(struct reset_controller_dev *rcdev, unsigned long id) { @@ -85,6 +102,7 @@ static const struct reset_control_ops meson_reset_ops = { .reset = meson_reset_reset, .assert = meson_reset_assert, .deassert = meson_reset_deassert, + .status = meson_reset_status, }; static int meson_reset_probe(struct device *dev, struct regmap *map, From patchwork Wed Jul 10 16:25:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 13729472 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 AE6A8C3DA4D for ; Wed, 10 Jul 2024 16:25:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=obQZMNvYV5g+l23JY0xQUc2Q+5Q5QwoV03cvl2jeB8A=; b=BqcKjCV8S+rwWA Y9CWE8kSZHx7CXAe/wXNpN7rHF6Mzqvl30BcqLpNMuf5/HWqlZOeyi3s8rUDLxQLF2l6kwok1UCc6 nf7FTeAM8/2Vyg3ffPKd5cJMmNf6akprSzemPdc3IFkD3NJwPu0IUqmiq6d6jFlLhRxQY9q/xO1BA KbA5Ofrie1Kh5yDndHAKpYh/H9XtSHBkgEY3xgC5eMmWugVrd8s3ZXytj14l/alexNQupcaN7h3gq rOoL5aelT85M5vT8ug5M94MLHypS7pcu5e/RRIwCIghCP271lqfNYAU1Q4XoabK8h6o1nikUKpQIP HRwaWEeykP3q+yxC6aFA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8a-0000000B8l1-2nIQ; Wed, 10 Jul 2024 16:25:48 +0000 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8W-0000000B8gA-0AlA for linux-amlogic@lists.infradead.org; Wed, 10 Jul 2024 16:25:45 +0000 Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-52eafec1e84so4455640e87.0 for ; Wed, 10 Jul 2024 09:25:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720628742; x=1721233542; darn=lists.infradead.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=zRHJOwdVIwklQU4oj6tmH8SkcGKM9hDuvtKA2hq20zY=; b=u3CoptmEjzg2GpFv52dargMXVwCiYUOgENHDjy3EcSIxh4wsmIOz3dra5ASklFyUUx deHQn5zAzmWumTU7cr/1rzfognG06QOipSWieVZi7lVUqdOO82Z7VbAsWpFTBzVN0lwN +mwlkE1SKu1foGHMOegbaQZYMeBtpOqOLSeHkV76mwwHaqV2reigJetxFL6+t8G7k3aY yKVBKxBEmw8/D+mEHDpalv3j8A7X70rwvT5XxQfIsQQShHHu8b6XTZ7Dq05S4vGGZmz2 NBmpaD00DMRvBTg0HrZGSD2YqN8mGzJqG7XRUuWaRVPrP1bkpX61Qhy/HGRPhFvQqyhX wuNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720628742; x=1721233542; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zRHJOwdVIwklQU4oj6tmH8SkcGKM9hDuvtKA2hq20zY=; b=Lng9F2IcYwcPWr3RbMgjKn1Xr1sObHyg7WpbWYcSN1H2AbbUm13NjmU2XH2rxl+xYE IuvsV720rapO7lmrK49eFTXJl/A8ivPjWJXC7jTFuNppPQZGyoi57lc1rUkhW4sL7r8o R5QZLeiZyga9jYiRgQbUV7BhOR4l2BMqF77URxCAQ/shDnKoHhZN+o4UoxzD0OZetlFC lflsfEB6I0Olu/mMK0u3xb0sCctYMzSMLy2/vuzNrdGmm06698A1ZUWhOzUlOIMcvUBx JXXZ/BbTYItvGUilFWMwHZAKNBpiiM5TpLUHwy7FiS60GqAHljN8Cwyn6dQ20JUy2VPn fGRg== X-Forwarded-Encrypted: i=1; AJvYcCUurTdhZkuuwpHKGK3OuygNL9A7zS4rm/wMudZGPHg3y2VOQxYwzAJEx9ooxJwBqOeWn/alYAIUupk/MQJp1TPdAhBjYgDCLlHkLjM5vQ9oSKU= X-Gm-Message-State: AOJu0YztsAjbTwBU58kooBS/bB0sQVFkQIfs+5XIqtq7XF6EItAYtIlq W3c746DwucU5FqQ1JVYth6Un41qKo5w5LN5s7XB4nhX4OzuaBlit0h2b1g1v9rg= X-Google-Smtp-Source: AGHT+IGoeOCZklKr0/1tvlfZaKQ+3YXN1j9s6sBPZnGkb/G0RZztUbY1oN6KCwJUbQaOeD8WjqbHnw== X-Received: by 2002:a05:6512:108c:b0:52e:9480:9e71 with SMTP id 2adb3069b0e04-52eb9996055mr3907030e87.28.1720628742241; Wed, 10 Jul 2024 09:25:42 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1c99:6356:8466:36cf]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-4266f6e09e5sm88693815e9.5.2024.07.10.09.25.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jul 2024 09:25:41 -0700 (PDT) From: Jerome Brunet To: Philipp Zabel , Stephen Boyd , Neil Armstrong Cc: Jerome Brunet , Jan Dakinevich , linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org Subject: [PATCH 6/8] reset: amlogic: add toggle reset support Date: Wed, 10 Jul 2024 18:25:15 +0200 Message-ID: <20240710162526.2341399-7-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240710162526.2341399-1-jbrunet@baylibre.com> References: <20240710162526.2341399-1-jbrunet@baylibre.com> MIME-Version: 1.0 X-Patchwork-Bot: notify X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240710_092544_101756_209493B0 X-CRM114-Status: GOOD ( 13.19 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org Add the emulation for the reset callback using level reset if reset is not directly supported. This is done to keep the functionality of reset driver of audio clock controller. This is expected to work by the related reset consumers. Signed-off-by: Jerome Brunet --- drivers/reset/reset-meson.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/reset/reset-meson.c b/drivers/reset/reset-meson.c index 65ba9190cb53..e34a10b15593 100644 --- a/drivers/reset/reset-meson.c +++ b/drivers/reset/reset-meson.c @@ -17,6 +17,7 @@ #include struct meson_reset_param { + const struct reset_control_ops *reset_ops; unsigned int reset_num; int reset_offset; int level_offset; @@ -98,6 +99,18 @@ static int meson_reset_deassert(struct reset_controller_dev *rcdev, return meson_reset_level(rcdev, id, false); } +static int meson_reset_level_toggle(struct reset_controller_dev *rcdev, + unsigned long id) +{ + int ret; + + ret = meson_reset_assert(rcdev, id); + if (ret) + return ret; + + return meson_reset_deassert(rcdev, id); +} + static const struct reset_control_ops meson_reset_ops = { .reset = meson_reset_reset, .assert = meson_reset_assert, @@ -105,6 +118,13 @@ static const struct reset_control_ops meson_reset_ops = { .status = meson_reset_status, }; +static const struct reset_control_ops meson_reset_toggle_ops = { + .reset = meson_reset_level_toggle, + .assert = meson_reset_assert, + .deassert = meson_reset_deassert, + .status = meson_reset_status, +}; + static int meson_reset_probe(struct device *dev, struct regmap *map, const struct meson_reset_param *param) { @@ -118,13 +138,14 @@ static int meson_reset_probe(struct device *dev, struct regmap *map, data->map = map; data->rcdev.owner = dev->driver->owner; data->rcdev.nr_resets = param->reset_num; - data->rcdev.ops = &meson_reset_ops; + data->rcdev.ops = param->reset_ops; data->rcdev.of_node = dev->of_node; return devm_reset_controller_register(dev, &data->rcdev); } static const struct meson_reset_param meson8b_param = { + .reset_ops = &meson_reset_ops, .reset_num = 256, .reset_offset = 0x0, .level_offset = 0x7c, @@ -132,6 +153,7 @@ static const struct meson_reset_param meson8b_param = { }; static const struct meson_reset_param meson_a1_param = { + .reset_ops = &meson_reset_ops, .reset_num = 96, .reset_offset = 0x0, .level_offset = 0x40, @@ -139,6 +161,7 @@ static const struct meson_reset_param meson_a1_param = { }; static const struct meson_reset_param meson_s4_param = { + .reset_ops = &meson_reset_ops, .reset_num = 192, .reset_offset = 0x0, .level_offset = 0x40, From patchwork Wed Jul 10 16:25:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 13729471 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 7C65FC41513 for ; Wed, 10 Jul 2024 16:25:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+PFw26ihMqGCs4mHNoAP+KillZ9Dd5vI/kujPBAccK0=; b=TB2sXKe8fDOpis q6e37OitRLHlAR8qSnZ096RWrGK+UR+0rjIdwS68IEdqkmGFE58Z2LNdrGAvVoPuAeSD13LMc3sCd 5QbjYRttJFQl+UkLDrE+CURdxSkqZ90eTiRsuIZbr6VuhILkcQ5xWjzymqO2Fe8PkYfZejpmFbtB+ rJv5UDQ9OqGF5h3vvD0rhK0CGdPn00dwnvIdxHQXQkl2oW3z/MZW5reihfwXZY0dN387Mi22J6Uq3 GceP8TwpObiRw1B2WqXhEfn2BNj6mafXJRmBTDtNuesXvq5gSlI7CErRK5q7Yc/kUE39w3xlTsn3M GaM9dvWBji+GBXlZCLmg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8c-0000000B8mB-1qGB; Wed, 10 Jul 2024 16:25:50 +0000 Received: from mail-lf1-x132.google.com ([2a00:1450:4864:20::132]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8X-0000000B8gk-17qD for linux-amlogic@lists.infradead.org; Wed, 10 Jul 2024 16:25:47 +0000 Received: by mail-lf1-x132.google.com with SMTP id 2adb3069b0e04-52e9c55febcso8544934e87.2 for ; Wed, 10 Jul 2024 09:25:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720628743; x=1721233543; darn=lists.infradead.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=IARsI+FI+i+eKGJY1BDsgLjfmpMAYd8+oKcq4aFTD8I=; b=BJeLk/cly1mRu2mnVLHJQTUZ7SB9ecJKogp2CJ1ZhoHMKiXkntLV6mTB9Au/a0s8gX b0XgohOofsyv1rWHTn9SrUv/JVUki9Cl5W4CoFxXLuZWj9U7N5E7GeaQkr2jonta0N27 RcpZdX+xcmb5i5WpKNXfclyH72CxuPgbCfPfn7H7DO0v/iASwph1zb25Bo5zSDzpwEhu T6Ev1bbrw3g3SkjlGlaqc3pdS/1AtHSEZ3M/Yg4pmA71HWUNeOlgmoIYFrOQlaGWYoy4 9rBjb0w2EGhWelHTB3QoSV4vvF6v+7z8O55QqK93N5ybHOWzw27m6pE2XocY7MPNYZT7 FHgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720628743; x=1721233543; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IARsI+FI+i+eKGJY1BDsgLjfmpMAYd8+oKcq4aFTD8I=; b=XrYKrX+Zrq9S5w5bXCDWONe8wDo0tGkq1WUkLb5fdNpydnK8BM0uLI1uRs19pbTZLM GV08UjkHcmfelVWvQNaKPhHTe/IvNz8UOKTyL3y78P27bwFd7LbhFhwxSARyyxqt4uag Phhm0bWUD1gONSotW1pH62/QbeSP2Li9zq//Fv1aGxbdWawZmciP20OTux4aMhSjD1eH EtTN5mka9ahjGZ0ETX8CjVXYAPOUWhB8ocpSPgpErHotaryxQZOyXFfx4TjsxmsA4/BH ak5f1fj6PRlD3w8cTEuYOjG/VkHr47WgCdoMlZgowtL69MPMV/eAAPfgvBQgj2WEXEYq MYTA== X-Forwarded-Encrypted: i=1; AJvYcCX93oguA/kOhIoKp0mSaYgPHmQndDrVc/ffxyM7zuELHd1PapSc50VPrz6eOx2W/Bguwz7t2VChRnDqKsd3P4mU1nH1M1uuYdl037qnem+XZd4= X-Gm-Message-State: AOJu0YylBPQrIuCOpLnPlLMD6aJjwZqWfpcDaxslqCxC+rlmo3Lx8DGJ HHxWfDR88eYLM91MI18CtUqPHJrkFhS4Lvu6/Npcq+a5zATXK/qczHzJ8gUiptI= X-Google-Smtp-Source: AGHT+IEcUV9rflAISGdUtE/xqZPmuLeXR5bEfX8EcOnERF2wu0mjIsOgHuUUJqEcj4imHelJS6s1hg== X-Received: by 2002:a05:6512:39c5:b0:52c:a465:c61f with SMTP id 2adb3069b0e04-52eb99d6e56mr3725342e87.56.1720628743099; Wed, 10 Jul 2024 09:25:43 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1c99:6356:8466:36cf]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-4266f6e09e5sm88693815e9.5.2024.07.10.09.25.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jul 2024 09:25:42 -0700 (PDT) From: Jerome Brunet To: Philipp Zabel , Stephen Boyd , Neil Armstrong Cc: Jerome Brunet , Jan Dakinevich , linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org Subject: [PATCH 7/8] reset: amlogic: add auxiliary reset driver support Date: Wed, 10 Jul 2024 18:25:16 +0200 Message-ID: <20240710162526.2341399-8-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240710162526.2341399-1-jbrunet@baylibre.com> References: <20240710162526.2341399-1-jbrunet@baylibre.com> MIME-Version: 1.0 X-Patchwork-Bot: notify X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240710_092545_510143_912DA357 X-CRM114-Status: GOOD ( 21.81 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org Add support for the reset controller present in the audio clock controller of the g12 and sm1 SoC families, using the auxiliary bus. This is expected to replace the driver currently present directly within the related clock driver. Signed-off-by: Jerome Brunet --- drivers/reset/Kconfig | 1 + drivers/reset/reset-meson.c | 121 +++++++++++++++++++- include/soc/amlogic/meson-auxiliary-reset.h | 23 ++++ 3 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 include/soc/amlogic/meson-auxiliary-reset.h diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig index 7112f5932609..2a316c469bcc 100644 --- a/drivers/reset/Kconfig +++ b/drivers/reset/Kconfig @@ -134,6 +134,7 @@ config RESET_MCHP_SPARX5 config RESET_MESON tristate "Meson Reset Driver" depends on ARCH_MESON || COMPILE_TEST + select AUXILIARY_BUS default ARCH_MESON help This enables the reset driver for Amlogic Meson SoCs. diff --git a/drivers/reset/reset-meson.c b/drivers/reset/reset-meson.c index e34a10b15593..5cc767d50e8f 100644 --- a/drivers/reset/reset-meson.c +++ b/drivers/reset/reset-meson.c @@ -5,6 +5,7 @@ * Copyright (c) 2016 BayLibre, SAS. * Author: Neil Armstrong */ +#include #include #include #include @@ -16,6 +17,10 @@ #include #include +#include + +static DEFINE_IDA(meson_rst_aux_ida); + struct meson_reset_param { const struct reset_control_ops *reset_ops; unsigned int reset_num; @@ -30,6 +35,14 @@ struct meson_reset { struct regmap *map; }; +struct meson_reset_adev { + struct auxiliary_device adev; + struct regmap *map; +}; + +#define to_meson_reset_adev(_adev) \ + container_of((_adev), struct meson_reset_adev, adev) + static void meson_reset_offset_and_bit(struct meson_reset *data, unsigned long id, unsigned int *offset, @@ -218,6 +231,112 @@ static struct platform_driver meson_reset_pltf_driver = { }; module_platform_driver(meson_reset_pltf_driver); -MODULE_DESCRIPTION("Amlogic Meson Reset Controller driver"); +static const struct meson_reset_param meson_g12a_audio_param = { + .reset_ops = &meson_reset_toggle_ops, + .reset_num = 26, + .level_offset = 0x24, +}; + +static const struct meson_reset_param meson_sm1_audio_param = { + .reset_ops = &meson_reset_toggle_ops, + .reset_num = 39, + .level_offset = 0x28, +}; + +static const struct auxiliary_device_id meson_reset_aux_ids[] = { + { + .name = "axg-audio-clkc.rst-g12a", + .driver_data = (kernel_ulong_t)&meson_g12a_audio_param, + }, { + .name = "axg-audio-clkc.rst-sm1", + .driver_data = (kernel_ulong_t)&meson_sm1_audio_param, + }, +}; +MODULE_DEVICE_TABLE(auxiliary, meson_reset_aux_ids); + +static int meson_reset_aux_probe(struct auxiliary_device *adev, + const struct auxiliary_device_id *id) +{ + const struct meson_reset_param *param = + (const struct meson_reset_param *)(id->driver_data); + struct meson_reset_adev *raux = + to_meson_reset_adev(adev); + + return meson_reset_probe(&adev->dev, raux->map, param); +} + +static struct auxiliary_driver meson_reset_aux_driver = { + .probe = meson_reset_aux_probe, + .id_table = meson_reset_aux_ids, +}; +module_auxiliary_driver(meson_reset_aux_driver); + +static void meson_rst_aux_release(struct device *dev) +{ + struct auxiliary_device *adev = to_auxiliary_dev(dev); + struct meson_reset_adev *raux = + to_meson_reset_adev(adev); + + ida_free(&meson_rst_aux_ida, adev->id); + kfree(raux); +} + +static void meson_rst_aux_unregister_adev(void *_adev) +{ + struct auxiliary_device *adev = _adev; + + auxiliary_device_delete(adev); + auxiliary_device_uninit(adev); +} + +int devm_meson_rst_aux_register(struct device *dev, + struct regmap *map, + const char *adev_name) +{ + struct meson_reset_adev *raux; + struct auxiliary_device *adev; + int ret; + + raux = kzalloc(sizeof(*raux), GFP_KERNEL); + if (!raux) + return -ENOMEM; + + ret = ida_alloc(&meson_rst_aux_ida, GFP_KERNEL); + if (ret < 0) + goto raux_free; + + raux->map = map; + + adev = &raux->adev; + adev->id = ret; + adev->name = adev_name; + adev->dev.parent = dev; + adev->dev.release = meson_rst_aux_release; + device_set_of_node_from_dev(&adev->dev, dev); + + ret = auxiliary_device_init(adev); + if (ret) + goto ida_free; + + ret = __auxiliary_device_add(adev, dev->driver->name); + if (ret) { + auxiliary_device_uninit(adev); + return ret; + } + + return devm_add_action_or_reset(dev, meson_rst_aux_unregister_adev, + adev); + +ida_free: + ida_free(&meson_rst_aux_ida, adev->id); +raux_free: + kfree(raux); + return ret; + +} +EXPORT_SYMBOL_GPL(devm_meson_rst_aux_register); + +MODULE_DESCRIPTION("Amlogic Meson Reset driver"); MODULE_AUTHOR("Neil Armstrong "); +MODULE_AUTHOR("Jerome Brunet "); MODULE_LICENSE("Dual BSD/GPL"); diff --git a/include/soc/amlogic/meson-auxiliary-reset.h b/include/soc/amlogic/meson-auxiliary-reset.h new file mode 100644 index 000000000000..8fdb02b18d8c --- /dev/null +++ b/include/soc/amlogic/meson-auxiliary-reset.h @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __SOC_AMLOGIC_MESON_AUX_RESET_H +#define __SOC_AMLOGIC_MESON_AUX_RESET_H + +#include + +struct device; +struct regmap; + +#ifdef CONFIG_RESET_MESON +int devm_meson_rst_aux_register(struct device *dev, + struct regmap *map, + const char *adev_name); +#else +static inline int devm_meson_rst_aux_register(struct device *dev, + struct regmap *map, + const char *adev_name) +{ + return -EOPNOTSUPP; +} +#endif + +#endif /* __SOC_AMLOGIC_MESON8B_AUX_RESET_H */ From patchwork Wed Jul 10 16:25:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 13729473 X-Patchwork-Delegate: neil.armstrong@linaro.org 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 26127C3DA41 for ; Wed, 10 Jul 2024 16:25:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=A+BBk2I6Q4ozq7CCqVSpaEIJVUiPUOUhc5vmqn0TZyg=; b=Bk4T1rQ3CVbL2U EUr/F8ae6RxN9Pxo7QV7X+lxtLLfhWRYV7gDm4t5EJms/+BFD7gUto4AP8+7bL7syhm5Z/yo217vK +UUQdT+XH2dx1E6wDvTyHoi3pZTzJx7xKKvsIzgfR5QGuBBgXSlCrMGNaF+1lZ1N62wi9X0nWPgL/ 1SaQzWe2ioltEz0llU3GCOihSTekUhL5niygSJsZ0q0CpeyOeexRV2oB+2yxtqzhiRKFWZjRdEQis n9RHhvnCnoe9MtTQ/jEUliU2GOKmAeEKrHB0ZxNYzfwEkGYRD2q+IcqMKzWLAtRPxSFMWGiJoEK00 az5bKMF0kKAzNLDH/o/Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8c-0000000B8mt-3qkY; Wed, 10 Jul 2024 16:25:50 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sRa8Y-0000000B8i7-1tN0 for linux-amlogic@lists.infradead.org; Wed, 10 Jul 2024 16:25:47 +0000 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-4266f344091so18225915e9.0 for ; Wed, 10 Jul 2024 09:25:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720628745; x=1721233545; darn=lists.infradead.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=JWAYmRVC1zdYp+5kEeD3DX2tiXmWy9shCUGw6lB/NDk=; b=K0JAoxmmpWQh4PMEF9oSchJ3EZhvKHt40iiGeS2/8FSKDIhLlpZWpj9BtDZOt/bPCc E9/5Zt+/LGMQsl/qewkBrb8mF89BZhtOgKXjAC4J0xWz8tzS6nnrRcDV0ZA/AxBHmF9J 7bFucf8nAC1tJqadzUuojtAyouBEI07YK1CLxiq5moqonvqAKlODz130DrN5NyAc5MWa zGiCMMZ5CNVEgSNkxk0xPN0mFpk4X6KqRuZhSCAQETYgzYb5PCHp4LbfOOYr04elTEeb g6d4rTtd6xrb6ltSQGD2qnpqAHqdVgDnQ5qZwm7/6F9m5OiXI9ADrNFflGgGFAEtLL6K vGCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720628745; x=1721233545; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JWAYmRVC1zdYp+5kEeD3DX2tiXmWy9shCUGw6lB/NDk=; b=vbtCTld5QPf/hy7T5myeBIJtnzjhnm1LWb4iCxUfhnyQzaA83sbLRBx2SZIH+rzLpV XsRHnKhOUjenRkCx79Ag+ctU0YLAfJcgExeTtvgKwet4QDVTq4dw6fjZLKpFrn4wCYcy aJtMCKWZcyVVkue5RI+e8NksG088mbzpoAQjjVAYMHCOeqvTwVZlpM2BbD273JjikrYt lzg3PDires5VR7Q50ZSedOOV07OzOiGZq9AmNYfbMx/XIsrAmamv7qW1KxMB9VEdjQUD q+1I0mOm+8dGMwFmFJxo05GPQIlYIm2GutjiAHn1xJXAHIbs/2z4+ClAS9Jv7lLG21p5 vHEg== X-Forwarded-Encrypted: i=1; AJvYcCUZxcGOUA2MY4a9cMnlaK76bYKu/hzeNpZVjKEVLUGhvvYPC1CQL5YV1L168As8Y5pV4PsRPVALcQut1QIJ35WQsWLy5RbE780tQVfrJGh4ges= X-Gm-Message-State: AOJu0YwYgzW1DUmb4eKSMX70Qcrvfmn8bIjLVLB+fUGz3RdAMgj2ikp0 oj9JxTWA23RzWFyCxzSL0Jsb5OYs/fqsGrJkxTuIk71sSvXR+x8XHF+HjxHiAEE= X-Google-Smtp-Source: AGHT+IGGZi85nj3MyP+JCseFqVZr7mDscU35q6/iFQCn7BlAqB5PjPfA1ynbuw3U8clnF3YPLAROIw== X-Received: by 2002:a05:600c:4930:b0:425:5ec3:570b with SMTP id 5b1f17b1804b1-426708f1f07mr38446345e9.35.1720628744794; Wed, 10 Jul 2024 09:25:44 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1c99:6356:8466:36cf]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-4266f6e09e5sm88693815e9.5.2024.07.10.09.25.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jul 2024 09:25:43 -0700 (PDT) From: Jerome Brunet To: Philipp Zabel , Stephen Boyd , Neil Armstrong Cc: Jerome Brunet , Jan Dakinevich , linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org Subject: [PATCH 8/8] clk: amlogic: axg-audio: use the auxiliary reset driver Date: Wed, 10 Jul 2024 18:25:17 +0200 Message-ID: <20240710162526.2341399-9-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240710162526.2341399-1-jbrunet@baylibre.com> References: <20240710162526.2341399-1-jbrunet@baylibre.com> MIME-Version: 1.0 X-Patchwork-Bot: notify X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240710_092546_517914_C8D18B69 X-CRM114-Status: GOOD ( 17.67 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org Remove the implementation of the reset driver in axg audio clock driver and migrate to the one provided by reset framework on the auxiliary bus Signed-off-by: Jerome Brunet --- drivers/clk/meson/Kconfig | 1 + drivers/clk/meson/axg-audio.c | 109 +++------------------------------- 2 files changed, 10 insertions(+), 100 deletions(-) diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig index 78f648c9c97d..b1c0c3ba96c4 100644 --- a/drivers/clk/meson/Kconfig +++ b/drivers/clk/meson/Kconfig @@ -106,6 +106,7 @@ config COMMON_CLK_AXG_AUDIO select COMMON_CLK_MESON_SCLK_DIV select COMMON_CLK_MESON_CLKC_UTILS select REGMAP_MMIO + imply RESET_MESON help Support for the audio clock controller on AmLogic A113D devices, aka axg, Say Y if you want audio subsystem to work. diff --git a/drivers/clk/meson/axg-audio.c b/drivers/clk/meson/axg-audio.c index e03a5bf899c0..6e199e751856 100644 --- a/drivers/clk/meson/axg-audio.c +++ b/drivers/clk/meson/axg-audio.c @@ -15,6 +15,8 @@ #include #include +#include + #include "meson-clkc-utils.h" #include "axg-audio.h" #include "clk-regmap.h" @@ -1648,84 +1650,6 @@ static struct clk_regmap *const sm1_clk_regmaps[] = { &sm1_sysclk_b_en, }; -struct axg_audio_reset_data { - struct reset_controller_dev rstc; - struct regmap *map; - unsigned int offset; -}; - -static void axg_audio_reset_reg_and_bit(struct axg_audio_reset_data *rst, - unsigned long id, - unsigned int *reg, - unsigned int *bit) -{ - unsigned int stride = regmap_get_reg_stride(rst->map); - - *reg = (id / (stride * BITS_PER_BYTE)) * stride; - *reg += rst->offset; - *bit = id % (stride * BITS_PER_BYTE); -} - -static int axg_audio_reset_update(struct reset_controller_dev *rcdev, - unsigned long id, bool assert) -{ - struct axg_audio_reset_data *rst = - container_of(rcdev, struct axg_audio_reset_data, rstc); - unsigned int offset, bit; - - axg_audio_reset_reg_and_bit(rst, id, &offset, &bit); - - regmap_update_bits(rst->map, offset, BIT(bit), - assert ? BIT(bit) : 0); - - return 0; -} - -static int axg_audio_reset_status(struct reset_controller_dev *rcdev, - unsigned long id) -{ - struct axg_audio_reset_data *rst = - container_of(rcdev, struct axg_audio_reset_data, rstc); - unsigned int val, offset, bit; - - axg_audio_reset_reg_and_bit(rst, id, &offset, &bit); - - regmap_read(rst->map, offset, &val); - - return !!(val & BIT(bit)); -} - -static int axg_audio_reset_assert(struct reset_controller_dev *rcdev, - unsigned long id) -{ - return axg_audio_reset_update(rcdev, id, true); -} - -static int axg_audio_reset_deassert(struct reset_controller_dev *rcdev, - unsigned long id) -{ - return axg_audio_reset_update(rcdev, id, false); -} - -static int axg_audio_reset_toggle(struct reset_controller_dev *rcdev, - unsigned long id) -{ - int ret; - - ret = axg_audio_reset_assert(rcdev, id); - if (ret) - return ret; - - return axg_audio_reset_deassert(rcdev, id); -} - -static const struct reset_control_ops axg_audio_rstc_ops = { - .assert = axg_audio_reset_assert, - .deassert = axg_audio_reset_deassert, - .reset = axg_audio_reset_toggle, - .status = axg_audio_reset_status, -}; - static const struct regmap_config axg_audio_regmap_cfg = { .reg_bits = 32, .val_bits = 32, @@ -1737,15 +1661,13 @@ struct audioclk_data { struct clk_regmap *const *regmap_clks; unsigned int regmap_clk_num; struct meson_clk_hw_data hw_clks; - unsigned int reset_offset; - unsigned int reset_num; + const char *rst_drvname; }; static int axg_audio_clkc_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; const struct audioclk_data *data; - struct axg_audio_reset_data *rst; struct regmap *map; void __iomem *regs; struct clk_hw *hw; @@ -1803,22 +1725,11 @@ static int axg_audio_clkc_probe(struct platform_device *pdev) if (ret) return ret; - /* Stop here if there is no reset */ - if (!data->reset_num) - return 0; - - rst = devm_kzalloc(dev, sizeof(*rst), GFP_KERNEL); - if (!rst) - return -ENOMEM; - - rst->map = map; - rst->offset = data->reset_offset; - rst->rstc.nr_resets = data->reset_num; - rst->rstc.ops = &axg_audio_rstc_ops; - rst->rstc.of_node = dev->of_node; - rst->rstc.owner = THIS_MODULE; + /* Register auxiliary reset driver when applicable */ + if (data->rst_drvname) + ret = devm_meson_rst_aux_register(dev, map, data->rst_drvname); - return devm_reset_controller_register(dev, &rst->rstc); + return ret; } static const struct audioclk_data axg_audioclk_data = { @@ -1837,8 +1748,7 @@ static const struct audioclk_data g12a_audioclk_data = { .hws = g12a_audio_hw_clks, .num = ARRAY_SIZE(g12a_audio_hw_clks), }, - .reset_offset = AUDIO_SW_RESET, - .reset_num = 26, + .rst_drvname = "rst-g12a", }; static const struct audioclk_data sm1_audioclk_data = { @@ -1848,8 +1758,7 @@ static const struct audioclk_data sm1_audioclk_data = { .hws = sm1_audio_hw_clks, .num = ARRAY_SIZE(sm1_audio_hw_clks), }, - .reset_offset = AUDIO_SM1_SW_RESET0, - .reset_num = 39, + .rst_drvname = "rst-sm1", }; static const struct of_device_id clkc_match_table[] = {