From nobody Wed Feb 11 04:19:14 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2475214B97A for ; Thu, 16 May 2024 15:08:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872132; cv=none; b=fE+QcrU/e/lr2kRh67P8o+IgulRaiAkOn4upwCoZ0vLDx3hWOrDr4TCIZWL67c1jUQR9sDG/9QmGrZvTqq3DzG9o3aSXPBleZpZjWQ8muIQ3zMuDf9k3z8PUqO8ke89bCVeuXLGsBJodKGvY2uToHpbwZpoEB1nP0jCa9gYrnyU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872132; c=relaxed/simple; bh=cxaqUoQ9aguHyFdmx85j2AoRbVwkuszVVEgKQCGMEX8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cmdWBYvMTgl3lYeGPRPle6riVBp8rREKpqw5sC5l4Ko21VVNA4YCJpBmFVmsVF7Qsf71tAkGrY/VNt6kv+K+c4cB+JYG+PFWVmG7OqpFKawrde/6Z39LxuKmxC2pnF/tgLIq7UzgBfVZtK1hcXBIixUsbeUg8kAKUnFqBVf/anE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=qiT2ujII; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="qiT2ujII" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4202c1d19d5so5018365e9.2 for ; Thu, 16 May 2024 08:08:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1715872128; x=1716476928; darn=vger.kernel.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=qiT2ujIIVGhrnuqOh3+FX8h23MZkpHqzNIhTFqsgLttZUVWi9NhtGcq7sh/HCpXPqS HnSdeWHSUiunY81T+sjuCYgvD9h44XvslU2HzSRxEA3PckF+6W+k7WauDx8JhvUnKN6L 3td+XdAWwgn2DkqL3cEBi8NbXX6ZVAKYSf1gdJaPWiRcCYIxc2n+XhjFXMgo+Wq23yvc jSGCrTrRgzmW+1impZgD9sP3WLKwHe4tgrA0w/hNNUceQcTfc8/BkdOGUaQNHYeP9ZUY 2MmiAwZXqVDOI0wzi9DGJqllfEJF8AhX5x9TPxfO9G2hG4LlKpoGQk8swM9zzSiGv/IY eYTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715872128; x=1716476928; 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=jDPJT8XZnxWzP5yqERKcoj9CmgLwXzz0pu9v+vc5DzkxWHbhR8buizXpMMEKt4qUgZ T+qDI9LCmrmt3kDE6/jKcsHYjbAYZPcyeWwVfTEElLAHR5CkXJ3nYIMBfoMvckOJszBo pYYbop6GBXKPI6A5pOvx3+ez4repOcEYD9O+KEld66mdqojSA2WHD3qBlto+M5+MNN1d kVjS509uLMtrix1YAUb/V7tYbnNHJajTxyReonL9jgNvJTr6A95Q88dWdwH5IBlzUYeQ Wm5Xz8AJTiWT5ABDUoEOZi1XReMAhRs2iDM3x4tBR0AhI4aSHefb52S0rQvpWs40d6sW LzNw== X-Forwarded-Encrypted: i=1; AJvYcCUFKkmN1vaRWOmm0wl79hg9PcVDQcaJASZUcoLaaEiXmt/edrbm14ShbK5M1yiAQBViYkMctXY1MxN8ReN+cjkdYruw2aIK/SMwpZpQ X-Gm-Message-State: AOJu0YwNap5n4UtF2HJaszVFaougGuexJYmSOi8JncwG2/hyA0fyn31+ B2Hewi94KAnOtq6xGI9PL+2daAoxBcedr2pVdpE296i7RbUs90KNqsbQhfzlszc= X-Google-Smtp-Source: AGHT+IEYZF+5ejklYa8gOutFOpqH9vmFIkmi4oDHndgWrV0jEKKooJucmjXLHzEaKGqSFHUhay2i4Q== X-Received: by 2002:a05:600c:5008:b0:41f:e7ac:cc72 with SMTP id 5b1f17b1804b1-41fead643a0mr145586765e9.40.1715872128318; Thu, 16 May 2024 08:08:48 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1fce:7e5a:e201:edd5]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-41f87c25459sm309351725e9.18.2024.05.16.08.08.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 08:08:48 -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: [RFC PATCH 1/9] reset: amlogic: convert driver to regmap Date: Thu, 16 May 2024 17:08:31 +0200 Message-ID: <20240516150842.705844-2-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240516150842.705844-1-jbrunet@baylibre.com> References: <20240516150842.705844-1-jbrunet@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Bot: notify Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 =20 -#define BITS_PER_REG 32 - struct meson_reset_param { int reg_count; int level_offset; }; =20 struct meson_reset { - void __iomem *reg_base; const struct meson_reset_param *param; struct reset_controller_dev rcdev; - spinlock_t lock; + struct regmap *map; }; =20 +static void meson_reset_offset_and_bit(struct meson_reset *data, + unsigned long id, + unsigned int *offset, + unsigned int *bit) +{ + unsigned int stride =3D regmap_get_reg_stride(data->map); + + *offset =3D (id / (stride * BITS_PER_BYTE)) * stride; + *bit =3D 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 =3D container_of(rcdev, struct meson_reset, rcdev); - unsigned int bank =3D id / BITS_PER_REG; - unsigned int offset =3D id % BITS_PER_REG; - void __iomem *reg_addr =3D data->reg_base + (bank << 2); + unsigned int offset, bit; =20 - writel(BIT(offset), reg_addr); + meson_reset_offset_and_bit(data, id, &offset, &bit); =20 - return 0; + return regmap_update_bits(data->map, offset, + BIT(bit), BIT(bit)); } =20 static int meson_reset_level(struct reset_controller_dev *rcdev, @@ -48,25 +56,13 @@ static int meson_reset_level(struct reset_controller_de= v *rcdev, { struct meson_reset *data =3D container_of(rcdev, struct meson_reset, rcdev); - unsigned int bank =3D id / BITS_PER_REG; - unsigned int offset =3D id % BITS_PER_REG; - void __iomem *reg_addr; - unsigned long flags; - u32 reg; + unsigned int offset, bit; =20 - reg_addr =3D data->reg_base + data->param->level_offset + (bank << 2); + meson_reset_offset_and_bit(data, id, &offset, &bit); + offset +=3D data->param->level_offset; =20 - spin_lock_irqsave(&data->lock, flags); - - reg =3D 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)); } =20 static int meson_reset_assert(struct reset_controller_dev *rcdev, @@ -113,30 +109,42 @@ static const struct of_device_id meson_reset_dt_ids[]= =3D { }; MODULE_DEVICE_TABLE(of, meson_reset_dt_ids); =20 +static const struct regmap_config regmap_config =3D { + .reg_bits =3D 32, + .val_bits =3D 32, + .reg_stride =3D 4, +}; + static int meson_reset_probe(struct platform_device *pdev) { + struct device *dev =3D &pdev->dev; struct meson_reset *data; + void __iomem *base; =20 - data =3D devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); + data =3D devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; =20 - data->reg_base =3D devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(data->reg_base)) - return PTR_ERR(data->reg_base); + base =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(base)) + return PTR_ERR(base); =20 - data->param =3D of_device_get_match_data(&pdev->dev); + data->param =3D of_device_get_match_data(dev); if (!data->param) return -ENODEV; =20 - spin_lock_init(&data->lock); + data->map =3D 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"); =20 data->rcdev.owner =3D THIS_MODULE; - data->rcdev.nr_resets =3D data->param->reg_count * BITS_PER_REG; + data->rcdev.nr_resets =3D data->param->reg_count * BITS_PER_BYTE + * regmap_config.reg_stride; data->rcdev.ops =3D &meson_reset_ops; - data->rcdev.of_node =3D pdev->dev.of_node; + data->rcdev.of_node =3D dev->of_node; =20 - return devm_reset_controller_register(&pdev->dev, &data->rcdev); + return devm_reset_controller_register(dev, &data->rcdev); } =20 static struct platform_driver meson_reset_driver =3D { --=20 2.43.0 From nobody Wed Feb 11 04:19:14 2026 Received: from mail-lj1-f179.google.com (mail-lj1-f179.google.com [209.85.208.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E833114B97D for ; Thu, 16 May 2024 15:08:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872133; cv=none; b=LAnUWL6zO5e0N+fBl+/h4BlnLAUqpeaOcZKc2Sqh2/C1zplqrGao5O3iSsfnZuwPS/M0xRAUURySw7jBijj4HHbKJ5WpxXtd5Seg3ZZu3pP1n2JVO0mAbmQ7V0VIQPFyh/SXqkqPMfO1cDEWdem2XJkUIuardsZw+pyJHQkVcIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872133; c=relaxed/simple; bh=XhLKaJpFjJZQj7yn2g+fkx1VUJf2EFpLz+SlbAbTNhQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OgDLCWSF7Z8sAP2RxOwgnFLdg7l5g9053QRbaTI+2r3uQ+HXNfCr8xwL0PidcVu01Ey7g2Fipca3faC0iqvv8f9R02/fKOlIFWtUGfZr0WxhRftfCbu4KTxjkF5WGoDS8aH5OvbU9sOPvQkxUJSbfVYdvT/lNXx+FK34KarUfU4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=iLjE3YM6; arc=none smtp.client-ip=209.85.208.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="iLjE3YM6" Received: by mail-lj1-f179.google.com with SMTP id 38308e7fff4ca-2e564cad1f1so11916641fa.0 for ; Thu, 16 May 2024 08:08:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1715872129; x=1716476929; darn=vger.kernel.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=iLjE3YM6SqyFFYnVIJaEEKR/FT5pz6Lpbqi+8nFRWPD0qfNHvlKcJkW+Cs5EC2AfTL 9LMWRTnc3QiWO9Cdqg05iFfli8BcmK9Szz6gTWksH5yosbWWSfCC8PIb28JJHBZh/3Uj Yh1OPE22by7518eAMO91u2Qn9gP73M9NuKHMPz4RCJQNNOsGAgfuKaSX2pI9W6sdcOEM R2Qm17PBTrd0GM1FXPoSthomDvesVOeahhH+JL7Ol4ayJqK9IwaTIewgMN9wiDx7Ob0F eTS6hk59JBYh0R1D6LU7U0g6YNTTJlQg1lNQEBrpz4/mQ6dYdTLjU+imEOFJ0vuClA/O tyQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715872129; x=1716476929; 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=NdPdAnY12/GI8qYcWRvXA3nsuxMJmtXibhAnnF+S5r0fPhK3JMpgNG58LilYNvi6Q8 yRap7d6XgT+kmEYHVaht1EevkWVrL5zG4QjzWPdP31+bMyOLaQrfKxd46L9H5AnAFcfA zkZyqRWliSuGWByxuAVwMQUq7wcvq7by/NlP/eGL0EZxm5ibT9ggXe9/9qwQoWpWKhAE VW4MKdEwjwO/ksxiRWcBP4DmH7JCZttPslJU/K7JOWOs424J/pCMJqMi4zKXCHE24xJ7 5yOWsHv0Urb1aHcMveicFexqQ2XfS306isj3dFPPKWINzNKyl9/oc+JnBa1XIGLxqxkB POdw== X-Forwarded-Encrypted: i=1; AJvYcCV2VhfxiIdalC/lha882y/4/d4VorDjNw3LXJ8mB/UoV9ma7HqKDfHD6pjPfvZm8Pve5RJdxqefnaBU+KPYVQHxhmEafd5X3DuOr26N X-Gm-Message-State: AOJu0YzBpw2zptT/DzwxB10Nw+tK3rPXBmdNDF06Nz5QiEtPGxM4BkUP FClEOiz29/a6ohmAyfHoFvuz6OEflW8sMDr+3rYim1Ug+fG1wL+hZBwCGEtx6X4= X-Google-Smtp-Source: AGHT+IGYAck85LsbcTOvXFQY8nZM3fKLyOR5JchkAjsB3ueKLHe+uoUsgS+o6TUKMWmJKolx9ml/0A== X-Received: by 2002:a2e:a412:0:b0:2e4:e15d:40b0 with SMTP id 38308e7fff4ca-2e52028aefemr120909581fa.32.1715872129220; Thu, 16 May 2024 08:08:49 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1fce:7e5a:e201:edd5]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-41f87c25459sm309351725e9.18.2024.05.16.08.08.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 08:08:48 -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: [RFC PATCH 2/9] reset: amlogic: add driver parameters Date: Thu, 16 May 2024 17:08:32 +0200 Message-ID: <20240516150842.705844-3-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240516150842.705844-1-jbrunet@baylibre.com> References: <20240516150842.705844-1-jbrunet@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Bot: notify Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 @@ =20 struct meson_reset_param { int reg_count; + int reset_offset; int level_offset; + bool level_low_reset; }; =20 struct meson_reset { @@ -46,6 +48,7 @@ static int meson_reset_reset(struct reset_controller_dev = *rcdev, unsigned int offset, bit; =20 meson_reset_offset_and_bit(data, id, &offset, &bit); + offset +=3D data->param->reset_offset; =20 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, =20 meson_reset_offset_and_bit(data, id, &offset, &bit); offset +=3D data->param->level_offset; + assert ^=3D data->param->level_low_reset; =20 return regmap_update_bits(data->map, offset, - BIT(bit), assert ? 0 : BIT(bit)); + BIT(bit), assert ? BIT(bit) : 0); } =20 static int meson_reset_assert(struct reset_controller_dev *rcdev, @@ -85,17 +89,23 @@ static const struct reset_control_ops meson_reset_ops = =3D { =20 static const struct meson_reset_param meson8b_param =3D { .reg_count =3D 8, + .reset_offset =3D 0x0, .level_offset =3D 0x7c, + .level_low_reset =3D true, }; =20 static const struct meson_reset_param meson_a1_param =3D { .reg_count =3D 3, + .reset_offset =3D 0x0, .level_offset =3D 0x40, + .level_low_reset =3D true, }; =20 static const struct meson_reset_param meson_s4_param =3D { .reg_count =3D 6, + .reset_offset =3D 0x0, .level_offset =3D 0x40, + .level_low_reset =3D true, }; =20 static const struct of_device_id meson_reset_dt_ids[] =3D { --=20 2.43.0 From nobody Wed Feb 11 04:19:14 2026 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C76C114BFA5 for ; Thu, 16 May 2024 15:08:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872133; cv=none; b=HU7ReLi9pFBzRJl6hqwuwzl8DFxlUk3FnOONcJ0jWJs5tmBLkpi83yrl8cBxR5i63j2kEMwoms5jWmJKL80XChpk+R1Gfg+dHaK7+Yn+2GCrt4rXE5gqGkdc5FMHNuaB7NoOSem1Or3bH3rTexCFYrYk0aTQ4VBN0jM5Ol4i+Ms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872133; c=relaxed/simple; bh=GPIkBbQj4IQYkRBMApjzbDefFG1cRgF3e6hKKqXUa84=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iPWjOWs9rbOn65lW4AarW8HRYZb+koblPkamAnvSvOGs3SjgBfew2SY1Rlni16RIojCVq3FbUAcX+jQw1XEl1pj+6ihNHl23Lm2RHJWkbZZxxGWNLvftApVWdqmHCcbiXOSM0KoQKc/E/nRgZ8UecbCT8etO07l8KqtWkeV/wzM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=p0S5dnGS; arc=none smtp.client-ip=209.85.208.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="p0S5dnGS" Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-2db17e8767cso12510971fa.3 for ; Thu, 16 May 2024 08:08:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1715872130; x=1716476930; darn=vger.kernel.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=Zlq2XgSsulaEdUEoiNJy3+0ETTvrLEFhmOVX/TPKWFg=; b=p0S5dnGSdMKtvt45zX7xJfOn2ceBCsFzGZqPG3stB6jWb7rrlM+4+rxT7DlKbC6+sF Ze2uXr2DDZ8TzsgSxICYc0pwUU6CVokQnzW1APxdBYqRIzLG69wsDyud92ge1BRoi4VU HsXXOMd80A8csNv3JU4mNIHyqx2ep6uCAvbcqLzja1N6iOYkx/dhbKsSePcxXFmXQWW2 UyS10NhCMqXFtfjfxTlCzg+nCHV2Ly/SW/W6pL2KpiN8NDP/+XNAKzkPgwxT1Ua7KdXE f2TdCKVTGuPxMnOHsr+KjiMVysnLnPkC+TFeig89Cprqivn0JwMSdgxGjPrBTABQjQO5 A6zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715872130; x=1716476930; 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=Zlq2XgSsulaEdUEoiNJy3+0ETTvrLEFhmOVX/TPKWFg=; b=geE9X2PpTksApN60kNhAwmH9bBB+82mB3rajE0Iwm4z8jZVu+d5PwVjbUZ/LmtDigh xWxVbEo9W52iTctyFkf/liepHnmzcaO+6s/iRIl+zdwHaIdo3PqxpyObpDLM2wZT4t/E ESmSINeBFrAoP6r8TnTQFSESibf1LpWjev/6unLAv1PAlR8s9RMIN80rgRqBO1AKeX8X MKZo0zwZ/KLgDceMWIi+dorD/osKvWzwbNtyArQbVV8K8Tx4l6xSKVLYBJJIShZb+Y9W e7jp0o1RsaHIk0aMch/DtShDgo1Zq4You5LTfSdJqnCvdMtz3Lb7O3vZqPPQcVOkDLaZ /nYg== X-Forwarded-Encrypted: i=1; AJvYcCWIHe3nFBsrcEAg+RVYxCYj5mEcjPtxYdzb+T+mGQW00HuhPCsurNeDYpWgQ8l5/ngeGGTo5xW+XUQDvGw8aYsFVD2/DChH8GkHkqZh X-Gm-Message-State: AOJu0Yzv/wTeQOffdPz/rzchntUYFbrZKEJLGE841vAMWn1ldyTQzEfn 6sl7O0Plg+7I1xrcgWhxZ7huO7jTBFbwjuS9wWncNDkm5lKLN4uAhliJlmvUQ8E= X-Google-Smtp-Source: AGHT+IHr28udNSRatyT+2G5LNG1+hGVEMFrX9RhYuqKy2yHAm390/4kDGgRKQKwjLoGX9pVtnsJ34g== X-Received: by 2002:a2e:5112:0:b0:2e6:d2bc:1d18 with SMTP id 38308e7fff4ca-2e6d2bc24e5mr52015521fa.22.1715872129966; Thu, 16 May 2024 08:08:49 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1fce:7e5a:e201:edd5]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-41f87c25459sm309351725e9.18.2024.05.16.08.08.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 08:08:49 -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: [RFC PATCH 3/9] reset: amlogic: split the device and platform probe Date: Thu, 16 May 2024 17:08:33 +0200 Message-ID: <20240516150842.705844-4-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240516150842.705844-1-jbrunet@baylibre.com> References: <20240516150842.705844-1-jbrunet@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Bot: notify Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To prepare the addition of the auxiliary device support, split 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 = =3D { .deassert =3D meson_reset_deassert, }; =20 +static int meson_reset_probe(struct device *dev, struct regmap *map, + const struct meson_reset_param *param) +{ + unsigned int stride =3D regmap_get_reg_stride(map); + struct meson_reset *data; + + data =3D devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + data->param =3D param; + data->map =3D map; + data->rcdev.owner =3D dev->driver->owner; + data->rcdev.nr_resets =3D param->reg_count * BITS_PER_BYTE + * stride; + data->rcdev.ops =3D &meson_reset_ops; + data->rcdev.of_node =3D dev->of_node; + + return devm_reset_controller_register(dev, &data->rcdev); +} + static const struct meson_reset_param meson8b_param =3D { .reg_count =3D 8, .reset_offset =3D 0x0, @@ -125,46 +146,38 @@ static const struct regmap_config regmap_config =3D { .reg_stride =3D 4, }; =20 -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 =3D &pdev->dev; - struct meson_reset *data; + struct regmap *map; void __iomem *base; =20 - data =3D devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); - if (!data) - return -ENOMEM; - base =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(base)) return PTR_ERR(base); =20 - data->param =3D of_device_get_match_data(dev); - if (!data->param) + param =3D of_device_get_match_data(dev); + if (!param) return -ENODEV; =20 - data->map =3D devm_regmap_init_mmio(dev, base, ®map_config); - if (IS_ERR(data->map)) - return dev_err_probe(dev, PTR_ERR(data->map), + map =3D 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"); =20 - data->rcdev.owner =3D THIS_MODULE; - data->rcdev.nr_resets =3D data->param->reg_count * BITS_PER_BYTE - * regmap_config.reg_stride; - data->rcdev.ops =3D &meson_reset_ops; - data->rcdev.of_node =3D dev->of_node; - - return devm_reset_controller_register(dev, &data->rcdev); + return meson_reset_probe(dev, map, param); } =20 -static struct platform_driver meson_reset_driver =3D { - .probe =3D meson_reset_probe, +static struct platform_driver meson_reset_pltf_driver =3D { + .probe =3D meson_reset_pltf_probe, .driver =3D { .name =3D "meson_reset", .of_match_table =3D meson_reset_dt_ids, }, }; -module_platform_driver(meson_reset_driver); +module_platform_driver(meson_reset_pltf_driver); =20 MODULE_DESCRIPTION("Amlogic Meson Reset Controller driver"); MODULE_AUTHOR("Neil Armstrong "); --=20 2.43.0 From nobody Wed Feb 11 04:19:14 2026 Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EEF5414D6E4 for ; Thu, 16 May 2024 15:08:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872135; cv=none; b=uVJHp1R8e+wrUunz3tANpWgzpuAHj1/bmtCLrvoHlUIPIZgSeK7C5hmzXBDX07Xo9lZ1/6creWHSYcbyDHKOozrHTafC03Vsl9ndPJ3gJv0P6AcZXrGlsadDFi8utGZIYdyfcy3dxkkQMbcEroZkamkvahJKZqJ8yRxiB9efHFs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872135; c=relaxed/simple; bh=G+dvNYQOBLr+WoKmLXh98J7Aryp0MXfhIBc7+yfe0sM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EcSXQdDw4BYJ4GRvXdtt+rxw/LCofhDxCynT7KCRfc3TaJ1F1bAXetmOyUKv1zXPh1nnA+D2E5T0FpjmTey2Km+xJDPtdDmRo8Wv64SI4Pm+jYab3EFbNkFrvmLH1nmZ8lLtw2ApxFIWCrir/TRK5Cz590IOowzYrQKbm6RluJg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=bO9DB/Tt; arc=none smtp.client-ip=209.85.208.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="bO9DB/Tt" Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-2e271acb015so12135631fa.1 for ; Thu, 16 May 2024 08:08:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1715872132; x=1716476932; darn=vger.kernel.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=bO9DB/TtArv+1pvyVORnixHhr8CWdanaBXZDbx7w5vfArNShcbpFZzeslsUPEiVHel Kxwxph9dVzm+GumrpWlU7IJrBV/TIHCq++s0K5JOZSD2ZrExHAYux3LYAkOE8mZsipju fxUEDBZizHwbyNBKY9k+uyZrHDGUJB0YU2mR9EXWd4xlKHPR0a+3ScnzVBMLymcIRRsz +zUbW4asZY67COG/eossn22HAnYSSdtOLBwomFy9colskEg8vJYDo/eGKJIE85ZirJfK 2LBbOIYMIgB3ZUIZxciXWoBRimPILYrMHkCAJwmA/yXPy1jbMOpf1I4Pv1mMLvBFBlBR WJSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715872132; x=1716476932; 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=aAESowveuT2sYRrQIy4FsRMQXblMOTOHgaLRAsHNJN5IOy23oIWzgDh1ljFYAAxvu9 QfE4GUaePvYeOYsTOmbp6khHkdn1eVQeeNqhQJZ9cBvaW2QnYI36lrnF/LaOUx7+kesr S0qTBwMZGD4Dn0pBsMRfzh0cKzev6NDES4rMlnydl+v9rl3NZEqZEX4HVc+dsO3LNM7c nXWSD/CYxHDZbad0cRZEM+VgxHkTwgUcGEj88PhjJTGv7OXF1UsQXqTAHj9Iydp0h5no DgpoPzAXLnbk7T71whNaCFyptSsnzVckuRU9WRO7d72aeSrwI9qzzNK/JwkO6D3YKL3z mOlA== X-Forwarded-Encrypted: i=1; AJvYcCW6zbuX/U+cSdj2X5H5YmVnRJvf7TbYvx6h+olfGygFMfdj3+wbDUzuWkHdnfkxKYluv4/cosquSLnwGd8yYkgQJ/bR7PNWP5yR3XFy X-Gm-Message-State: AOJu0YxBeeQfYwXKgs20FoYkfFdVLfEvqQfPzyF0PEERKVqIvvSpng2E XpVrjQS5eaSrwGZIt0vXJ6k4rkL8m6Vwuqh0dLEm/oPl7CYbMk7hfGTGdd7HU8k= X-Google-Smtp-Source: AGHT+IE8U/D0l2CYHxsSjMxEnW9Nswfn86/rBWx05jmcgu+/3vQwWvbBIKiUixNYwUsYF7gN5EXKtA== X-Received: by 2002:a2e:81c3:0:b0:2df:907e:6de3 with SMTP id 38308e7fff4ca-2e52038a44bmr116578741fa.35.1715872130810; Thu, 16 May 2024 08:08:50 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1fce:7e5a:e201:edd5]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-41f87c25459sm309351725e9.18.2024.05.16.08.08.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 08:08:50 -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: [RFC PATCH 4/9] reset: amlogic: use reset number instead of register count Date: Thu, 16 May 2024 17:08:34 +0200 Message-ID: <20240516150842.705844-5-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240516150842.705844-1-jbrunet@baylibre.com> References: <20240516150842.705844-1-jbrunet@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Bot: notify Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 =20 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 =3D= { static int meson_reset_probe(struct device *dev, struct regmap *map, const struct meson_reset_param *param) { - unsigned int stride =3D regmap_get_reg_stride(map); struct meson_reset *data; =20 data =3D devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); @@ -100,8 +99,7 @@ static int meson_reset_probe(struct device *dev, struct = regmap *map, data->param =3D param; data->map =3D map; data->rcdev.owner =3D dev->driver->owner; - data->rcdev.nr_resets =3D param->reg_count * BITS_PER_BYTE - * stride; + data->rcdev.nr_resets =3D param->reset_num; data->rcdev.ops =3D &meson_reset_ops; data->rcdev.of_node =3D dev->of_node; =20 @@ -109,21 +107,21 @@ static int meson_reset_probe(struct device *dev, stru= ct regmap *map, } =20 static const struct meson_reset_param meson8b_param =3D { - .reg_count =3D 8, + .reset_num =3D 256, .reset_offset =3D 0x0, .level_offset =3D 0x7c, .level_low_reset =3D true, }; =20 static const struct meson_reset_param meson_a1_param =3D { - .reg_count =3D 3, + .reset_num =3D 96, .reset_offset =3D 0x0, .level_offset =3D 0x40, .level_low_reset =3D true, }; =20 static const struct meson_reset_param meson_s4_param =3D { - .reg_count =3D 6, + .reset_num =3D 192, .reset_offset =3D 0x0, .level_offset =3D 0x40, .level_low_reset =3D true, --=20 2.43.0 From nobody Wed Feb 11 04:19:14 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 16D8814D6EB for ; Thu, 16 May 2024 15:08:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872137; cv=none; b=VMcpveOjGU8HqHSt1wes7gd99osv319SyT1geuj3r2N/OJ0QadiuDreP1kgHR+guPOS6ZCgSPRsobUXSTDPJHfBtWF5+OyY08XLmFFLstuYlO5YXzfXQVFnnGCGVrxBS2bTmIcHfFOcyjvZywRLU9DiGykk8Qj2CAp7c3kQPNa4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872137; c=relaxed/simple; bh=iaknELToT+8y0KfW1nvtsEVAwfzQue3+xA6phI3OqV0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mQXGwq6M+FjUIp4+mIOUz2mH/3Myxb5jojsYPk3CL/k4TuN1FS6IPcU8iCCP7mD3iqqeMERiLFR2VnZmyG/ufyIZmYFfZ8g5Kd9RIgaN4rc25Gv04BByI2FdupP6DbAZ+tZhpKmEm64FiHwFapW5FBklzBQBMYel6s8z9Ggc1UM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=uiqrYctu; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="uiqrYctu" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-420298ff5b1so9464025e9.1 for ; Thu, 16 May 2024 08:08:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1715872132; x=1716476932; darn=vger.kernel.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=MKLxWZMdcIpvnKpiYpSqkgcStnHEt9yT8sCcERiOd18=; b=uiqrYctuTsCr0cP46z67CvPT3Av3VYvAodWSJPVzI4bSDfJbHMWx41e6sCxSWmAW2V gNvh5WxQUcTUE2R5zFhfMQrP28R8lXZTbvIVwQwdB3akI/909gBnZIxtg/8uZUoTnGTa K2oTOgjvKJfwzmSUSYVbDl3LdRPyDiHQsJqlqn23b82PT8fkvvWmYGJAMzynWlFlpq+R 4cxD/QHcP6qNR+Fl1encudwEu/qdvPgrpfjqMl3BUAYpYsIA7VSyhV3mFsy4/gfEYdmk gw2I4hVxMGfyP/kg2KwKUCV6HKtZr9ggM3W0QFnj8fuebAbwnpjoV8STvxdRxhDoJOAK AE8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715872132; x=1716476932; 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=MKLxWZMdcIpvnKpiYpSqkgcStnHEt9yT8sCcERiOd18=; b=qOrfxtKJvUWN0c+b7WmfseYVz0Ga0XA8amsJ5meGV/hUWp1v8LjexkC7cnXvbD4r3U /mP+jTYy+dexp13M2Oe2oKHVfECqZX+zMgAmZmTF4ivrw2DQ7kLCypfYHal5F/QX2xCl zTzFTn4cWzAaONn0jwKITfat37CsO9ZrTyPHWUB2uRhHAlIV3DSDQ4HLdK/IiFkcSJ1r CNwE4gCUqCVW6UomP77WHM2sBEf1m/kJjbEQVD7sXbgU4k4NZIVErffOOyY5Ji1NkFOT U8ihie/pQr6+/o7Yo5bDtwAAPySUu75SIKklAXW4c/sAhjgw0Yy49FXSZf1pfzYEQeZl 37gg== X-Forwarded-Encrypted: i=1; AJvYcCXe8eGJWoE81dDS7+u+1WPom6SoPi+R6FVDmT8JPe7vcHl/HvHGZ3+sP3DHdBpTE5SObq+AglSnjSircUgKzH4EIzdvo8OnVqBym/IW X-Gm-Message-State: AOJu0YyzaeEs3zckw0qJuv7L2Yn+jvY9zVcuPn1dFCA0sCnvxP9lMvLM xOgWQXmXsWAZc+wL5D8NkECjcE7scH9/gOpehWx3FkAX5KNSXp2nqEeHWCk00VQ= X-Google-Smtp-Source: AGHT+IG/ykFXrbe/CvlsHN4du9qU8bGGEbwc+8VNXOgZYoQoZ5vQI4mqtGU2dnI3Uc7WqDGAtugK6A== X-Received: by 2002:a05:600c:3594:b0:41f:e10f:88b1 with SMTP id 5b1f17b1804b1-41feac55eccmr187308155e9.27.1715872132571; Thu, 16 May 2024 08:08:52 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1fce:7e5a:e201:edd5]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-41f87c25459sm309351725e9.18.2024.05.16.08.08.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 08:08:52 -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: [RFC PATCH 5/9] reset: amlogic: add reset status support Date: Thu, 16 May 2024 17:08:35 +0200 Message-ID: <20240516150842.705844-6-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240516150842.705844-1-jbrunet@baylibre.com> References: <20240516150842.705844-1-jbrunet@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Bot: notify Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add the 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); } =20 +static int meson_reset_status(struct reset_controller_dev *rcdev, + unsigned long id) +{ + struct meson_reset *data =3D + container_of(rcdev, struct meson_reset, rcdev); + unsigned int val, offset, bit; + + meson_reset_offset_and_bit(data, id, &offset, &bit); + offset +=3D data->param->level_offset; + + regmap_read(data->map, offset, &val); + val =3D !!(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 = =3D { .reset =3D meson_reset_reset, .assert =3D meson_reset_assert, .deassert =3D meson_reset_deassert, + .status =3D meson_reset_status, }; =20 static int meson_reset_probe(struct device *dev, struct regmap *map, --=20 2.43.0 From nobody Wed Feb 11 04:19:14 2026 Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2043B14D71B for ; Thu, 16 May 2024 15:08:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872137; cv=none; b=FZTJyQysZi0OGndWi7ZOlW5G/vYnw+dYLCqM4YgHuAVOyEuGqr5VFnBLHJP74B8L6zwAlfNhC2eLA5Hj93aF7btAqcdHujW6ZX5bAWNEhjEoOhWYyzvxTPdjxGwu1NjRgjfrUW80Quyb2MOsPGr8R8Bv1sGjLodNQ4WqLP7vWu0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872137; c=relaxed/simple; bh=tGtxQtR7HQ0uRAG9sLpag+dAG8Y70atmcVnT7vJqVsw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XIrWWxkrUGD37Tadf3Pzk1HUiiuRNhuMdcakGsTT1TQdAPrEfO3N3c2xx0Bxe7IFJwUO4RmraOkcySKqIwk1rf/31JW4Mctdkx5H1mZqw0LpMq3NFiwVyf9SNqBnKmIBkCMNWGKwzFpu69pFS/V+wnbpvAmVBeLnwjN89+OrpVY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=hbJwNewz; arc=none smtp.client-ip=209.85.208.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="hbJwNewz" Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-2e0933d3b5fso11258241fa.2 for ; Thu, 16 May 2024 08:08:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1715872133; x=1716476933; darn=vger.kernel.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=hbJwNewzud1Oefpi9c5VwSDD8IUG8RsAFst1DYriSvb0AkKWLyEnRXKXQYP8h7Tp87 EdEQ17XITvLG6F5tkmd5zge1YRcT7ihBxmh6rtPdqNeg4TJQluEqRLWVUFeqH3UJPP9j II7hVjn5dq9H/kXFFf6RPOSvMujTbzJFVtNrbnfuqBJ4cpPdnKXVk0uWuFYvULANVmdo fdEHwtNJoILubrIkdfflLp/oboCzsI7YafTfaVUB2wkMclUTpBKBlLthNV0iNKIZFcVa 2LkGWVry1io8Kjmv4HnHedZkZmcmFa98o6uqFom96+fW8tiNMKrls5tBzAiiOcEKIAvY Bumg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715872133; x=1716476933; 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=CJwXoowRQFaoSon7JNaVGGmgfPKE869AmUcEixqLZGFgWZEnNAacp/SqVfdBf+JBHB EaAe4gWPQDcPtFMhxP5tif39SU/IjYYH9We11I34oN1UiExLYGmhUndpN0UBZpKRYurr k0wblJVwTFMfQ6vLxOOP8Yt2KTc4rj+qO0hPyDaCVQmrbzvxvExvDdLZAgXL18sTTbFU 87ERsymQhnXgzWoMqgH/MKEc4K8fti3By2eWhZkb9GxRcJoNYK40Shjt7dJzuafdFhc0 4eW38jjAUHzK0zmLqC4fKD09WjoLjmYuIlSqWYYd4OIUVS0p7BwrnFQBlwWaspmJnkMJ 5N5g== X-Forwarded-Encrypted: i=1; AJvYcCXzoCfWonM+I6NPx7D5DNgno2Uu9Qvn3um3vAKyZEBlpUJc0Zg7w9X1odw9S5mdqUHi4rC2j2bd0ePlfLR2mZpzCJoZht2+bYiRB630 X-Gm-Message-State: AOJu0YzpUk501Pu0vzjFhO8d2hq1myRIXUoMjOhCyYS0w+JmqSeF9tpg HQow3IcLWPiIhGRTsd7YDt2eDHecolSb4wh2HjenVigD0i00IuhwX30qghjUUPI= X-Google-Smtp-Source: AGHT+IHu52Tyfwl/3CPcNq8casphAsBV/Ti3JZcRRlwYTeXDmESt1XeztpWut4mxoqayT/xcvdJZXw== X-Received: by 2002:a2e:97c3:0:b0:2e1:f253:152a with SMTP id 38308e7fff4ca-2e5204aef69mr132927271fa.51.1715872133305; Thu, 16 May 2024 08:08:53 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1fce:7e5a:e201:edd5]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-41f87c25459sm309351725e9.18.2024.05.16.08.08.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 08:08:52 -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: [RFC PATCH 6/9] reset: amlogic: add toggle reset support Date: Thu, 16 May 2024 17:08:36 +0200 Message-ID: <20240516150842.705844-7-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240516150842.705844-1-jbrunet@baylibre.com> References: <20240516150842.705844-1-jbrunet@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Bot: notify Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 =20 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); } =20 +static int meson_reset_level_toggle(struct reset_controller_dev *rcdev, + unsigned long id) +{ + int ret; + + ret =3D meson_reset_assert(rcdev, id); + if (ret) + return ret; + + return meson_reset_deassert(rcdev, id); +} + static const struct reset_control_ops meson_reset_ops =3D { .reset =3D meson_reset_reset, .assert =3D meson_reset_assert, @@ -105,6 +118,13 @@ static const struct reset_control_ops meson_reset_ops = =3D { .status =3D meson_reset_status, }; =20 +static const struct reset_control_ops meson_reset_toggle_ops =3D { + .reset =3D meson_reset_level_toggle, + .assert =3D meson_reset_assert, + .deassert =3D meson_reset_deassert, + .status =3D 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, stru= ct regmap *map, data->map =3D map; data->rcdev.owner =3D dev->driver->owner; data->rcdev.nr_resets =3D param->reset_num; - data->rcdev.ops =3D &meson_reset_ops; + data->rcdev.ops =3D param->reset_ops; data->rcdev.of_node =3D dev->of_node; =20 return devm_reset_controller_register(dev, &data->rcdev); } =20 static const struct meson_reset_param meson8b_param =3D { + .reset_ops =3D &meson_reset_ops, .reset_num =3D 256, .reset_offset =3D 0x0, .level_offset =3D 0x7c, @@ -132,6 +153,7 @@ static const struct meson_reset_param meson8b_param =3D= { }; =20 static const struct meson_reset_param meson_a1_param =3D { + .reset_ops =3D &meson_reset_ops, .reset_num =3D 96, .reset_offset =3D 0x0, .level_offset =3D 0x40, @@ -139,6 +161,7 @@ static const struct meson_reset_param meson_a1_param = =3D { }; =20 static const struct meson_reset_param meson_s4_param =3D { + .reset_ops =3D &meson_reset_ops, .reset_num =3D 192, .reset_offset =3D 0x0, .level_offset =3D 0x40, --=20 2.43.0 From nobody Wed Feb 11 04:19:14 2026 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 074C614E2DF for ; Thu, 16 May 2024 15:08:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872138; cv=none; b=tJ46gTGC27R8yGnXy7eWlI9+8nTgry5BOXwJaXkpocM1rAPawifmqiN3VzT8a+SczTCwhS9cG1IPj5WH+BCAVGK6xrs49FRbojknnUxW+k78iIh9hnDrEGTybuuSr7MhX43y6hHx5Uhc+0nBgISq/N4fJQJizisKph4u/CioZSA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872138; c=relaxed/simple; bh=YuEmKCYtjRzD28siL5Mef5H9DNeixjGQ8vzsFA0+0cI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oYdwmq2+iYyhq0OIFgGO0HEVVvyJp0SnsM51x+57uYwgG8Fx4+M/Z/S8y3M/HeiMIG8+5o0KxQOIYF5r6Vo56GF9DIJ3BvKGZ06oPnzUJm5f+AS6Ije81HEj4XBG7pd8su6tUgQqf1mnoBr4UW2VYQ4LBIXM3kn28J6N6ZQUe7s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=wLgvbNR3; arc=none smtp.client-ip=209.85.208.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="wLgvbNR3" Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-2e4b90b03a9so10003221fa.1 for ; Thu, 16 May 2024 08:08:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1715872134; x=1716476934; darn=vger.kernel.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=GDg+S33WfMWdi2lheaCvuNpDqmP/KU8F5TNkAy677Bw=; b=wLgvbNR3RKOhgFwV1r8erBg3jc0H/XlXJ6EODMTbFjGwOhoMK16+JXb3DeFhxwY926 9dW3sQJCw0DcWyMQCBGPuGFFXTxlRkKVWAAjQRxF8zvxR91LfoHHFYbQTa/C7I3i88Us 0g58nwZ+qbe6t+/PhfAVB4qRs7iyNjnsFBQ3h/H0alHPBfBcQtk+6SYfR3pXqoZBAZNg gqeeCTXe2G77J8A6vIUg08t7LGlRMvt8rn0EwXFl2vpzM97uC6JRjpbXaQaTgTWlxXtI 3BYug6VhDAWUyusOdc0rgzzIAJplr+bd/cQ+VZiRaFpaaRUmGcG6wCy9aGie7Y/5SzdP ltIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715872134; x=1716476934; 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=GDg+S33WfMWdi2lheaCvuNpDqmP/KU8F5TNkAy677Bw=; b=KXh9BskQhCDlmcHcdA3jqC4ko0Yv6/ZcMumnv2ZmflCVKqqCOivNVomLQ0pFhxM8+J L2osebn19+13l3VDCH/iUnosHUIHwcJgAvxwib7c2SoaF6++2ybXvr8QaoBQIOp9TpJ0 EFAdx2mZnDbxkRXYZmGWDyw9RHCy+cYwpp1U1V61d93BwqY2cNPCZ25fb8rM8haGovFc 98zxVXCss8ch2CPxhrlUYRzPjn0WJXFNLSbICBoHjHtl7C3tBO0B8tzVOHlaZ/3Ny5YR 7OowO8uBi2Mh2NxJcLEIJ1QUpCQrWlrrrfhnBTEeh/fhO9wTYw/Q72YMH2Y7ctSTlFsx Qq/A== X-Forwarded-Encrypted: i=1; AJvYcCVNuPdjzz3vIZLtamUxWj91SpGrfi8hBJsPCkn6JgVDJOT51OUmdsI214065kxrwHK6kbW+zy3HX6fX5v+SnvIuj/gWg3auVxD0yeYu X-Gm-Message-State: AOJu0YwKgFycwpN9aab4pLTcjWBNDYuV6EFmi4OKDmH1IPpBUfSV3Kl8 WbVzxAsmTPELN4ImBXmC8ATLqThLTCMgJZYgGT67nn4E6pm30cuGs3/mAWJxkBo= X-Google-Smtp-Source: AGHT+IF1dSFKKcicuWhPp02H8rzX/qoi5Hi1Gh7DCEthhD2sCLusrICLNxjBEsCmmaWZJsCyOMO6+g== X-Received: by 2002:a2e:8688:0:b0:2e6:f1f6:7ddb with SMTP id 38308e7fff4ca-2e6f1f6809dmr39824751fa.3.1715872134123; Thu, 16 May 2024 08:08:54 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1fce:7e5a:e201:edd5]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-41f87c25459sm309351725e9.18.2024.05.16.08.08.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 08:08:53 -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: [RFC PATCH 7/9] reset: amlogic: add auxiliary reset driver support Date: Thu, 16 May 2024 17:08:37 +0200 Message-ID: <20240516150842.705844-8-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240516150842.705844-1-jbrunet@baylibre.com> References: <20240516150842.705844-1-jbrunet@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Bot: notify Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 | 46 ++++++++++++++++++- include/soc/amlogic/meson8b-auxiliary-reset.h | 17 +++++++ 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 include/soc/amlogic/meson8b-auxiliary-reset.h diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig index 85b27c42cf65..4ceb4dc48fbc 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 + depends on 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..b5ddb85296ec 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,8 @@ #include #include =20 +#include + struct meson_reset_param { const struct reset_control_ops *reset_ops; unsigned int reset_num; @@ -218,6 +221,47 @@ static struct platform_driver meson_reset_pltf_driver = =3D { }; module_platform_driver(meson_reset_pltf_driver); =20 -MODULE_DESCRIPTION("Amlogic Meson Reset Controller driver"); +static const struct meson_reset_param meson_g12a_audio_param =3D { + .reset_ops =3D &meson_reset_toggle_ops, + .reset_num =3D 26, + .level_offset =3D 0x24, +}; + +static const struct meson_reset_param meson_sm1_audio_param =3D { + .reset_ops =3D &meson_reset_toggle_ops, + .reset_num =3D 39, + .level_offset =3D 0x28, +}; + +static const struct auxiliary_device_id meson_reset_aux_ids[] =3D { + { + .name =3D "axg-audio-clkc.rst-g12a", + .driver_data =3D (kernel_ulong_t)&meson_g12a_audio_param, + }, { + .name =3D "axg-audio-clkc.rst-sm1", + .driver_data =3D (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 =3D + (const struct meson_reset_param *)(id->driver_data); + struct meson8b_reset_adev *raux =3D + to_meson8b_reset_adev(adev); + + return meson_reset_probe(&adev->dev, raux->map, param); +} + +static struct auxiliary_driver meson_reset_aux_driver =3D { + .probe =3D meson_reset_aux_probe, + .id_table =3D meson_reset_aux_ids, +}; +module_auxiliary_driver(meson_reset_aux_driver); + +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/meson8b-auxiliary-reset.h b/include/soc/am= logic/meson8b-auxiliary-reset.h new file mode 100644 index 000000000000..0a465deb4440 --- /dev/null +++ b/include/soc/amlogic/meson8b-auxiliary-reset.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __SOC_AMLOGIC_MESON8B_AUX_RESET_H +#define __SOC_AMLOGIC_MESON8B_AUX_RESET_H + +#include +#include +#include + +struct meson8b_reset_adev { + struct auxiliary_device adev; + struct regmap *map; +}; + +#define to_meson8b_reset_adev(_adev) \ + container_of((_adev), struct meson8b_reset_adev, adev) + +#endif /* __SOC_AMLOGIC_MESON8B_AUX_RESET_H */ --=20 2.43.0 From nobody Wed Feb 11 04:19:14 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 969C514E2F2 for ; Thu, 16 May 2024 15:08:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872138; cv=none; b=OFkfrdp3PgZ4X5THEZr+gLuBd8C8jHAO5dTjBtILf5/MzQ0XvdvK4QpjCNeXzk1R7cv4GoBKpPUBQfEnjE9MmUqvoFfp1Zj5VmaopylErW9hidCBhXpryzvBn2cmtUWzmFtsqh6vPYNSn7CKAOADPBeIKEOp7BOt4tW9NgWFyzs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872138; c=relaxed/simple; bh=p/YPY8cjy1AkeLBPe0wJNMGliuqwW5LH2qnn291HdqY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TerGZmfC9JdXSU4boMitGHH0gypcqmhhX/O2hb9/QMxjPUvqHTm9yluhs9fgvj+vy4qpYmYZBhdrfBJIhpN3rKjaL+axV66D9A/vZWI0B4W0W5yO0UgyhV9SqL7zNDyTYls8fAOJmW4CEJytowGO/Qk6rt3dQwsHxv8EGk+10eA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=FOD90Ys8; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="FOD90Ys8" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4201986d60aso29144345e9.3 for ; Thu, 16 May 2024 08:08:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1715872135; x=1716476935; darn=vger.kernel.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=puB+gD3ay9Sx041zZz0+FhSyarhWutAqTKpIgu3JFCo=; b=FOD90Ys8thMEkMdPY3oNFgRuhC+Xr43s+32UV1ygh2lCl2NaKDdsrfongK/mEZ8FLS N2TuWnETfs2nCNOd8UnGnRO02HhGLwZzLfhSvZPdqZOoWlNaU1a8ULrxIsE/svKVGiJ/ vDL5ReN4LznmB0QaeDxE2IyO4nCJ5LCc5dJbpSL7MLqNToKqa9cELH9f6dJOU7s82KEP 0WvJuRTPG9n+n5GaMQSAh2QzPwilXYHN8Q/hubFAiVOJAMlLJIwIsnNWpILadx0gRwwZ KZaS6vF8C4LB6bLOWnHNlnkdolahbInlyZeOOgG/z6Eq07/6uHLh4n9U+l4FMT9ZV809 d/KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715872135; x=1716476935; 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=puB+gD3ay9Sx041zZz0+FhSyarhWutAqTKpIgu3JFCo=; b=jjGM0EqlmRvhS3siYG7n5+4I5KWiKWlKs1fTp7dSbrQ82HfabQciDWUI2EOWYrSdYi sJYRFGA8TEYlWkoC4NArtFZh25ouC+6Ke8ImmDjOzuyLCu/WQfKGzGD3gD7Bfd0FDmrc uzqG1uPFic/2UgTQK8Dyd6Q1aSDX2sIgP4KIADu4uyB9vO9YuAXwOnNs18bFhaQzDg22 Yo5+Hon30rUMMTDSjykM9Sy2WN1BqMbuDIwbispWTYHoegD+PuO5/fsgoVrVaqzKwF7x AJB2+vnfXRzL00OECeZ1yEbm7UX8uYxzritMVh7jHd8dmDSGjHHjlb3rjlaBLz5ANoM0 +eOQ== X-Forwarded-Encrypted: i=1; AJvYcCXWIoOO8TsIe8T8QTahX7LnbpJHEFLfxH8R/5rqo4GfssGTYDsbzNGT41DQ/jM5WqlxHQbLsLqvVTkgS+15kIJ+599lDoczBOAQ/d4M X-Gm-Message-State: AOJu0YxaHlEPKf+TWQiUqbi4zH2SsZdP9FQkgnHkipR2im0Ayk7w1kVI aHiH9A3zR5XFw/NmnPZriIt4RZr0/RD41OHiDG8FWJJ7PPVFgVCIvdeGkvXeULY= X-Google-Smtp-Source: AGHT+IERIDiWGU6HrqYN8ZiuBsFdA4JZIIGZnn0g1+UjHbl3RAe6+oeD2WgCdEHGNIBGCjI44i0UXQ== X-Received: by 2002:a05:600c:1383:b0:41c:2992:a3bd with SMTP id 5b1f17b1804b1-41feac5a45fmr141942315e9.27.1715872134895; Thu, 16 May 2024 08:08:54 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1fce:7e5a:e201:edd5]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-41f87c25459sm309351725e9.18.2024.05.16.08.08.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 08:08:54 -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: [RFC PATCH 8/9] clk: meson: add auxiliary reset helper driver Date: Thu, 16 May 2024 17:08:38 +0200 Message-ID: <20240516150842.705844-9-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240516150842.705844-1-jbrunet@baylibre.com> References: <20240516150842.705844-1-jbrunet@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Bot: notify Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add an helper module to register auxiliary reset drivers from Amlogic clock controller. Signed-off-by: Jerome Brunet --- drivers/clk/meson/Kconfig | 5 ++ drivers/clk/meson/Makefile | 1 + drivers/clk/meson/meson-clk-rst-aux.c | 84 +++++++++++++++++++++++++++ drivers/clk/meson/meson-clk-rst-aux.h | 14 +++++ 4 files changed, 104 insertions(+) create mode 100644 drivers/clk/meson/meson-clk-rst-aux.c create mode 100644 drivers/clk/meson/meson-clk-rst-aux.h diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig index 59a40a49f8e1..6905aa2f080c 100644 --- a/drivers/clk/meson/Kconfig +++ b/drivers/clk/meson/Kconfig @@ -37,6 +37,11 @@ config COMMON_CLK_MESON_VCLK config COMMON_CLK_MESON_CLKC_UTILS tristate =20 +config COMMON_CLK_MESON_CLK_RST_AUX + depends on REGMAP && AUXILIARY_BUS + imply RESET_MESON + tristate + config COMMON_CLK_MESON_AO_CLKC tristate select COMMON_CLK_MESON_REGMAP diff --git a/drivers/clk/meson/Makefile b/drivers/clk/meson/Makefile index 9ba43fe7a07a..2926a04b6c33 100644 --- a/drivers/clk/meson/Makefile +++ b/drivers/clk/meson/Makefile @@ -2,6 +2,7 @@ # Amlogic clock drivers =20 obj-$(CONFIG_COMMON_CLK_MESON_CLKC_UTILS) +=3D meson-clkc-utils.o +obj-$(CONFIG_COMMON_CLK_MESON_CLK_RST_AUX) +=3D meson-clk-rst-aux.o obj-$(CONFIG_COMMON_CLK_MESON_AO_CLKC) +=3D meson-aoclk.o obj-$(CONFIG_COMMON_CLK_MESON_CPU_DYNDIV) +=3D clk-cpu-dyndiv.o obj-$(CONFIG_COMMON_CLK_MESON_DUALDIV) +=3D clk-dualdiv.o diff --git a/drivers/clk/meson/meson-clk-rst-aux.c b/drivers/clk/meson/meso= n-clk-rst-aux.c new file mode 100644 index 000000000000..a7cf3c39828c --- /dev/null +++ b/drivers/clk/meson/meson-clk-rst-aux.c @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// Copyright (c) 2024 BayLibre, SAS. +// Author: Jerome Brunet + +#include +#include +#include +#include + +#include + +#include "meson-clk-rst-aux.h" + +static DEFINE_IDA(meson_clk_rst_aux_ida); + +static void meson_clk_rst_aux_release(struct device *dev) +{ + struct auxiliary_device *adev =3D to_auxiliary_dev(dev); + struct meson8b_reset_adev *raux =3D + to_meson8b_reset_adev(adev); + + ida_free(&meson_clk_rst_aux_ida, adev->id); + kfree(raux); +} + +static void meson_clk_rst_aux_unregister_adev(void *_adev) +{ + struct auxiliary_device *adev =3D _adev; + + auxiliary_device_delete(adev); + auxiliary_device_uninit(adev); +} + +int devm_meson_clk_rst_aux_register(struct device *dev, + struct regmap *map, + const char *adev_name) +{ + struct meson8b_reset_adev *raux; + struct auxiliary_device *adev; + int ret; + + raux =3D kzalloc(sizeof(*raux), GFP_KERNEL); + if (!raux) + return -ENOMEM; + + ret =3D ida_alloc(&meson_clk_rst_aux_ida, GFP_KERNEL); + if (ret < 0) + goto raux_free; + + raux->map =3D map; + + adev =3D &raux->adev; + adev->id =3D ret; + adev->name =3D adev_name; + adev->dev.parent =3D dev; + adev->dev.release =3D meson_clk_rst_aux_release; + device_set_of_node_from_dev(&adev->dev, dev); + + ret =3D auxiliary_device_init(adev); + if (ret) + goto ida_free; + + ret =3D __auxiliary_device_add(adev, dev->driver->name); + if (ret) { + auxiliary_device_uninit(adev); + return ret; + } + + return devm_add_action_or_reset(dev, meson_clk_rst_aux_unregister_adev, + adev); + +ida_free: + ida_free(&meson_clk_rst_aux_ida, adev->id); +raux_free: + kfree(raux); + return ret; + +} +EXPORT_SYMBOL_GPL(devm_meson_clk_rst_aux_register); + +MODULE_DESCRIPTION("Amlogic auxiliary reset helper for clock"); +MODULE_AUTHOR("Jerome Brunet "); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/meson/meson-clk-rst-aux.h b/drivers/clk/meson/meso= n-clk-rst-aux.h new file mode 100644 index 000000000000..386a55a36cd9 --- /dev/null +++ b/drivers/clk/meson/meson-clk-rst-aux.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2024 BayLibre, SAS. + * Author: Jerome Brunet + */ + +#ifndef __MESON_CLK_RST_AUX_H +#define __MESON_CLK_RST_AUX_H + +int devm_meson_clk_rst_aux_register(struct device *dev, + struct regmap *map, + const char *adev_name); + +#endif /* __MESON_CLK_RST_AUX_H */ --=20 2.43.0 From nobody Wed Feb 11 04:19:14 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E79214EC48 for ; Thu, 16 May 2024 15:08:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872139; cv=none; b=eBW25FWUX5HXtfLjxoYep4IKt3Ze14NpfnExvM7ZKAsgnazvdPYR0drsYfgYorkesks8X1vsudW6K1AwMbKLfmbmqw9IMJFX5n3ybY/Lln79e2uaSAh9IxTT4s/I8hbwvi0h+kTZK9h06lLi6NbiHaXs3jRfdy6hyj9tIf1p0w8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715872139; c=relaxed/simple; bh=2Va0ITxM0suedkhfLIJ7a6V95PomOw82XQ9JMnUFjws=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Vw3cmJcW9nZf4QVVKx1Wva2+p3tgFvOkxiQeRRbzTkC14XvV4eZLevo6hCWpYihJXY0z4Y5gjES6/YQuHNp4GJxvin890koHtyHdk+rM6vjFKJbAnE8zOE0J8F7qRZwiZv86pjFzjpHQ/aajEkGMGUW5IwZhC5pwYrPDwS4XA84= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=PhQN27Oh; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="PhQN27Oh" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4202c0d316cso4705365e9.1 for ; Thu, 16 May 2024 08:08:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1715872135; x=1716476935; darn=vger.kernel.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=mL5f80GGi83nhgomz2kgPXZIzOXSZK09LD8gHLnVu8c=; b=PhQN27OhGCBho6daqYyVBWZcGjM1J1+bP11BeXMc86+IgsqsDpHEMWwVmtjEBtcNZ7 Hh9KW+nXAHCBmK9zLZzZR3kUys4pXUgOeNGqH6nFjz/69mgiux/Xw8QHC3iBOQRmDi7w 3csljkYK8A85Bd8xhR9MOnpcodxMM+BCJeXSEi8sSQ6RjJs48P+Cf3wOsrqwiuqjj2rM 2sVcI2wsB/k29G/ax/csPG5pjYGza7kU2X0ehX5NPHRgkCWh8e8JkOSJn+OyW/rJPEIl 3d3dWbIs3m+fkLqmh+IKhRqlGrypnSOAKTPWOVpBDOO7Tv7BoTfHK/ynh2G5n4p61LMQ HdqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715872135; x=1716476935; 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=mL5f80GGi83nhgomz2kgPXZIzOXSZK09LD8gHLnVu8c=; b=u0EifmMXxNxamT1txaBtYrXCm8P06eEF9OVUfuRFxCCV7rW5RApS4PMk7IaYFgBGFy TwRJqUNRFpKe1XcSrF5C1cdmIuB+rK9uzl/nqenERET/zMJqArhlhYGCFraPjG5U92QO kagKwletbkZI7jO45y00YqJ1pmPCoZZ0qvTfzS7sxGLOQQwkw+VN46loztFnBjo0Q9K6 /t2KMqtJYiCZBbvpD1X+BnSbL1IbCny2ISSiWOBOV7ZzsGi4aD/0SBd7Kn3SUH/0oW4+ F6BxDZ+88H3BChnv0OJMBcTxGNvsfjJsjy+d03bPE4PSKKZSbInMqk3B9jNHh7in4GvI fb2A== X-Forwarded-Encrypted: i=1; AJvYcCUxAGN36dPrNoD6/Gm+bNH1Ff6s4lt9/z7ThPv9rn+D2XtztN9vLg5e7hLn0u9Lk061/YFZ9XE+Bw5i+k/5dWrVfCMwdo2OWO3KDv7X X-Gm-Message-State: AOJu0YxrS2j90NywgqNuQRKPl2ho5A3Cc4OB9G8H8BVoZlqzdJxnRhzr Fu36AkVO/9EVD9fzO+55Hpseyw7TQqt3gVVQNa1iAMOWu1bb2OkHfhPGampG+cyug64Ya3NYJ66 q X-Google-Smtp-Source: AGHT+IF30UqBoIXs9icx2iDgiQ7TuYEvX0q0rV/70GCuE7s1xRKQ4Arx1HOxMSeUsJUlVOSEqHZT6Q== X-Received: by 2002:a05:600c:358f:b0:420:29dd:84d4 with SMTP id 5b1f17b1804b1-42029dd885amr21620795e9.13.1715872135697; Thu, 16 May 2024 08:08:55 -0700 (PDT) Received: from toaster.lan ([2a01:e0a:3c5:5fb1:1fce:7e5a:e201:edd5]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-41f87c25459sm309351725e9.18.2024.05.16.08.08.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 08:08:55 -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: [RFC PATCH 9/9] clk: amlogic: axg-audio: use the auxiliary reset driver Date: Thu, 16 May 2024 17:08:39 +0200 Message-ID: <20240516150842.705844-10-jbrunet@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240516150842.705844-1-jbrunet@baylibre.com> References: <20240516150842.705844-1-jbrunet@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Bot: notify Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Remove the implementation of the reset driver in axg audio clock driver and migrate to the one provided by reset framework on auxiliary bus Signed-off-by: Jerome Brunet --- drivers/clk/meson/Kconfig | 1 + drivers/clk/meson/axg-audio.c | 108 +++------------------------------- 2 files changed, 9 insertions(+), 100 deletions(-) diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig index 6905aa2f080c..b89e769a6362 100644 --- a/drivers/clk/meson/Kconfig +++ b/drivers/clk/meson/Kconfig @@ -110,6 +110,7 @@ config COMMON_CLK_AXG_AUDIO select COMMON_CLK_MESON_PHASE select COMMON_CLK_MESON_SCLK_DIV select COMMON_CLK_MESON_CLKC_UTILS + select COMMON_CLK_MESON_CLK_RST_AUX select REGMAP_MMIO help Support for the audio clock controller on AmLogic A113D devices, diff --git a/drivers/clk/meson/axg-audio.c b/drivers/clk/meson/axg-audio.c index 93e6a6d321be..dc9191a9ab0f 100644 --- a/drivers/clk/meson/axg-audio.c +++ b/drivers/clk/meson/axg-audio.c @@ -15,6 +15,7 @@ #include #include =20 +#include "meson-clk-rst-aux.h" #include "meson-clkc-utils.h" #include "axg-audio.h" #include "clk-regmap.h" @@ -1678,84 +1679,6 @@ static struct clk_regmap *const sm1_clk_regmaps[] = =3D { &sm1_earcrx_dmac_clk, }; =20 -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 =3D regmap_get_reg_stride(rst->map); - - *reg =3D (id / (stride * BITS_PER_BYTE)) * stride; - *reg +=3D rst->offset; - *bit =3D 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 =3D - 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 =3D - 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 =3D 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 =3D { - .assert =3D axg_audio_reset_assert, - .deassert =3D axg_audio_reset_deassert, - .reset =3D axg_audio_reset_toggle, - .status =3D axg_audio_reset_status, -}; - static const struct regmap_config axg_audio_regmap_cfg =3D { .reg_bits =3D 32, .val_bits =3D 32, @@ -1766,15 +1689,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; }; =20 static int axg_audio_clkc_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; const struct audioclk_data *data; - struct axg_audio_reset_data *rst; struct regmap *map; void __iomem *regs; struct clk_hw *hw; @@ -1832,22 +1753,11 @@ static int axg_audio_clkc_probe(struct platform_dev= ice *pdev) if (ret) return ret; =20 - /* Stop here if there is no reset */ - if (!data->reset_num) - return 0; - - rst =3D devm_kzalloc(dev, sizeof(*rst), GFP_KERNEL); - if (!rst) - return -ENOMEM; - - rst->map =3D map; - rst->offset =3D data->reset_offset; - rst->rstc.nr_resets =3D data->reset_num; - rst->rstc.ops =3D &axg_audio_rstc_ops; - rst->rstc.of_node =3D dev->of_node; - rst->rstc.owner =3D THIS_MODULE; + /* Register auxiliary reset driver when applicable */ + if (data->rst_drvname) + ret =3D devm_meson_clk_rst_aux_register(dev, map, data->rst_drvname); =20 - return devm_reset_controller_register(dev, &rst->rstc); + return ret; } =20 static const struct audioclk_data axg_audioclk_data =3D { @@ -1866,8 +1776,7 @@ static const struct audioclk_data g12a_audioclk_data = =3D { .hws =3D g12a_audio_hw_clks, .num =3D ARRAY_SIZE(g12a_audio_hw_clks), }, - .reset_offset =3D AUDIO_SW_RESET, - .reset_num =3D 26, + .rst_drvname =3D "rst-g12a", }; =20 static const struct audioclk_data sm1_audioclk_data =3D { @@ -1877,8 +1786,7 @@ static const struct audioclk_data sm1_audioclk_data = =3D { .hws =3D sm1_audio_hw_clks, .num =3D ARRAY_SIZE(sm1_audio_hw_clks), }, - .reset_offset =3D AUDIO_SM1_SW_RESET0, - .reset_num =3D 39, + .rst_drvname =3D "rst-sm1", }; =20 static const struct of_device_id clkc_match_table[] =3D { --=20 2.43.0