From: Vinod Koul <vkoul@kernel.org>
To: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Cc: broonie@kernel.org, alsa-devel@alsa-project.org,
Basavaraj.Hiregoudar@amd.com, Sunil-kumar.Dommati@amd.com,
pierre-louis.bossart@linux.intel.com, vinod.koul@intel.com,
venkataprasad.potturu@amd.com,
Bard Liao <yung-chuan.liao@linux.intel.com>,
Sanyog Kale <sanyog.r.kale@intel.com>,
open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 04/12] drivers: soundwire: refactor soundwire pads enable
Date: Thu, 21 Dec 2023 22:08:41 +0530 [thread overview]
Message-ID: <ZYRqEbVADgU4fNtB@matsya> (raw)
In-Reply-To: <20231221073558.3181911-5-Vijendar.Mukunda@amd.com>
On 21-12-23, 13:05, Vijendar Mukunda wrote:
> As sdw pads enable sequence is executed only once, invoke it
> from probe sequence.
>
> Program required pads for both manager instances
> based on link_mask during probe sequence. This will avoid
> acquiring mutex lock.
something wrong with your editor to have this formatting, you can use
upto 80 chars here!
> Remove unnecessary delay after programming ACP_SW_PAD_KEEPER_EN
> register.
>
> Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
> ---
> drivers/soundwire/amd_init.c | 45 +++++++++++++++++++++++++++++++++
> drivers/soundwire/amd_manager.c | 18 -------------
> 2 files changed, 45 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/soundwire/amd_init.c b/drivers/soundwire/amd_init.c
> index 5c9569d9ad01..b3b3c7266384 100644
> --- a/drivers/soundwire/amd_init.c
> +++ b/drivers/soundwire/amd_init.c
> @@ -15,6 +15,47 @@
>
> #include "amd_init.h"
>
> +#define ACP_PAD_PULLDOWN_CTRL 0x0001448
> +#define ACP_SW_PAD_KEEPER_EN 0x0001454
> +#define AMD_SDW_PAD_PULLDOWN_CTRL_ENABLE_MASK 0x7f9a
> +#define AMD_SDW0_PAD_PULLDOWN_CTRL_ENABLE_MASK 0x7f9f
> +#define AMD_SDW1_PAD_PULLDOWN_CTRL_ENABLE_MASK 0x7ffa
> +#define AMD_SDW0_PAD_EN_MASK 1
> +#define AMD_SDW1_PAD_EN_MASK 0x10
> +#define AMD_SDW_PAD_EN_MASK (AMD_SDW0_PAD_EN_MASK | AMD_SDW1_PAD_EN_MASK)
> +
> +static int amd_enable_sdw_pads(void __iomem *mmio, u32 link_mask, struct device *dev)
> +{
> + u32 val;
> + u32 pad_keeper_en_mask, pad_pulldown_ctrl_mask;
> +
> + switch (link_mask) {
> + case 1:
> + pad_keeper_en_mask = AMD_SDW0_PAD_EN_MASK;
> + pad_pulldown_ctrl_mask = AMD_SDW0_PAD_PULLDOWN_CTRL_ENABLE_MASK;
> + break;
> + case 2:
> + pad_keeper_en_mask = AMD_SDW1_PAD_EN_MASK;
> + pad_pulldown_ctrl_mask = AMD_SDW1_PAD_PULLDOWN_CTRL_ENABLE_MASK;
> + break;
> + case 3:
> + pad_keeper_en_mask = AMD_SDW_PAD_EN_MASK;
> + pad_pulldown_ctrl_mask = AMD_SDW_PAD_PULLDOWN_CTRL_ENABLE_MASK;
> + break;
> + default:
> + dev_err(dev, "No SDW Links are enabled\n");
> + return -ENODEV;
> + }
> +
> + val = readl(mmio + ACP_SW_PAD_KEEPER_EN);
> + val |= pad_keeper_en_mask;
> + writel(val, mmio + ACP_SW_PAD_KEEPER_EN);
> + val = readl(mmio + ACP_PAD_PULLDOWN_CTRL);
> + val &= pad_pulldown_ctrl_mask;
> + writel(val, mmio + ACP_PAD_PULLDOWN_CTRL);
updatel() local macro?
> + return 0;
> +}
> +
> static int sdw_amd_cleanup(struct sdw_amd_ctx *ctx)
> {
> int i;
> @@ -37,6 +78,7 @@ static struct sdw_amd_ctx *sdw_amd_probe_controller(struct sdw_amd_res *res)
> struct platform_device_info pdevinfo[2];
> u32 link_mask;
> int count, index;
> + int ret;
>
> if (!res)
> return NULL;
> @@ -50,6 +92,9 @@ static struct sdw_amd_ctx *sdw_amd_probe_controller(struct sdw_amd_res *res)
>
> count = res->count;
> dev_dbg(&adev->dev, "Creating %d SDW Link devices\n", count);
> + ret = amd_enable_sdw_pads(res->mmio_base, res->link_mask, res->parent);
> + if (ret)
> + return NULL;
>
> /*
> * we need to alloc/free memory manually and can't use devm:
> diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manager.c
> index c27b0b0f33a6..1427cccfc309 100644
> --- a/drivers/soundwire/amd_manager.c
> +++ b/drivers/soundwire/amd_manager.c
> @@ -26,23 +26,6 @@
>
> #define to_amd_sdw(b) container_of(b, struct amd_sdw_manager, bus)
>
> -static void amd_enable_sdw_pads(struct amd_sdw_manager *amd_manager)
> -{
> - u32 sw_pad_pulldown_val;
> - u32 val;
> -
> - mutex_lock(amd_manager->acp_sdw_lock);
> - val = readl(amd_manager->acp_mmio + ACP_SW_PAD_KEEPER_EN);
> - val |= amd_manager->reg_mask->sw_pad_enable_mask;
> - writel(val, amd_manager->acp_mmio + ACP_SW_PAD_KEEPER_EN);
> - usleep_range(1000, 1500);
> -
> - sw_pad_pulldown_val = readl(amd_manager->acp_mmio + ACP_PAD_PULLDOWN_CTRL);
> - sw_pad_pulldown_val &= amd_manager->reg_mask->sw_pad_pulldown_mask;
> - writel(sw_pad_pulldown_val, amd_manager->acp_mmio + ACP_PAD_PULLDOWN_CTRL);
> - mutex_unlock(amd_manager->acp_sdw_lock);
so the code is copied from a GPL declared file to now and GPL + BSD one!
Have you had lawyers look into this... why change one file license ?
> -}
> -
> static int amd_init_sdw_manager(struct amd_sdw_manager *amd_manager)
> {
> u32 val;
> @@ -872,7 +855,6 @@ int amd_sdw_manager_start(struct amd_sdw_manager *amd_manager)
>
> prop = &amd_manager->bus.prop;
> if (!prop->hw_disabled) {
> - amd_enable_sdw_pads(amd_manager);
> ret = amd_init_sdw_manager(amd_manager);
> if (ret)
> return ret;
> --
> 2.34.1
--
~Vinod
next prev parent reply other threads:[~2023-12-21 16:44 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-21 7:35 [PATCH 00/12] soundwire/SOF: add SoundWire Interface support for AMD SOF stack Vijendar Mukunda
2023-12-21 7:35 ` [PATCH 01/12] ASoC/soundwire: implement generic api for scanning amd soundwire controller Vijendar Mukunda
2023-12-21 7:35 ` [PATCH 02/12] drivers: soundwire: refactor amd soundwire manager device node creation Vijendar Mukunda
2023-12-21 16:34 ` Vinod Koul
2023-12-22 5:32 ` Mukunda,Vijendar
2023-12-21 7:35 ` [PATCH 03/12] drivers: soundwire: implement function to extract slave information Vijendar Mukunda
2023-12-21 7:35 ` [PATCH 04/12] drivers: soundwire: refactor soundwire pads enable Vijendar Mukunda
2023-12-21 16:38 ` Vinod Koul [this message]
2023-12-22 7:15 ` Mukunda,Vijendar
2023-12-22 9:21 ` Vinod Koul
2023-12-22 10:34 ` Mukunda,Vijendar
2023-12-22 15:45 ` Vinod Koul
2023-12-23 2:04 ` Mukunda,Vijendar
2023-12-21 7:35 ` [PATCH 05/12] drivers: soundwire: refactor register mask structure Vijendar Mukunda
2023-12-21 7:35 ` [PATCH 06/12] ASoC: SOF: amd: add code for invoking soundwire manager helper functions Vijendar Mukunda
2023-12-21 7:35 ` [PATCH 07/12] ASoC: SOF: amd: add interrupt handling for SoundWire manager devices Vijendar Mukunda
2023-12-21 7:35 ` [PATCH 08/12] ASoC: SOF: amd: Add Soundwire DAI configuration support for AMD platforms Vijendar Mukunda
2023-12-21 7:35 ` [PATCH 09/12] ASoC: SOF: amd: add machine select logic for soundwire based platforms Vijendar Mukunda
2023-12-21 7:35 ` [PATCH 10/12] ASoC: SOF: amd: update descriptor fields for acp6.3 based platform Vijendar Mukunda
2023-12-21 7:35 ` [PATCH 11/12] ASoC: SOF: amd: select soundwire dependency flag " Vijendar Mukunda
2023-12-21 7:35 ` [PATCH 12/12] ASoC: SOF: amd: refactor acp driver pm ops Vijendar Mukunda
2023-12-21 8:27 ` [PATCH 00/12] soundwire/SOF: add SoundWire Interface support for AMD SOF stack Pierre-Louis Bossart
2024-01-09 12:41 ` Mukunda,Vijendar
2024-01-09 13:44 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZYRqEbVADgU4fNtB@matsya \
--to=vkoul@kernel.org \
--cc=Basavaraj.Hiregoudar@amd.com \
--cc=Sunil-kumar.Dommati@amd.com \
--cc=Vijendar.Mukunda@amd.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=sanyog.r.kale@intel.com \
--cc=venkataprasad.potturu@amd.com \
--cc=vinod.koul@intel.com \
--cc=yung-chuan.liao@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.