From nobody Mon Dec 1 21:30:50 2025 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.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 5F3A635972 for ; Fri, 28 Nov 2025 00:38:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290333; cv=none; b=ptC/2MTNAGnNZWekHMgVFKUyn1qWLkHYNBQmcGWz+UMlufTRzslJYH8Qvhi8XN0VLKtkNw1pG91m6Drb7x1isdVeswREnUixUB7mrXiA+sCq6B9EOMdOSUx7TR2b7Aoi9y8DinFreZNV6L8nex9EtETqVxjt1OtEkLtG1VqifTg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290333; c=relaxed/simple; bh=EkpMG+PKrrKY79QW8ls5d/4++Xsjs+hRPiQH+jUHj+U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cVQ50JfTy7cbbys4l+SVJDSxBQcwkoXhtdgeRvmPqPzoNLHkckhOr1k5O/InUvl4726Pa8FUZSQj17CEvu0idXFo6lk86vJHERaRPAcOB5ZLSqeMoMXQhM00Ki19hCZwoP7jDoh+Z8EoRctQPnCgYucMn9odp0auPnlRqQ41D1E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fH5H4QwX; arc=none smtp.client-ip=209.85.210.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fH5H4QwX" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-7ba55660769so1072399b3a.1 for ; Thu, 27 Nov 2025 16:38:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764290330; x=1764895130; 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=oV7/3P94ufHrd/6Nd/jeUWDYgSffhEwvVPtFaFjAozc=; b=fH5H4QwX5nT6eYt1J1QTako3gb3LaeGc6vRFT9qOKW2U/9gQwe4j3dsFWfxJpGjXzG V8UPwCWKS3uAcTwLyT+cgOqA0XzzWo4caxe5HAeYOJGPg6X2Av6yxN+RTluZt8kbBpgS imsUCvHH05peuz/9IY7uajbVhQ6YjZ34s5i6Pp8LkqMMRIK/h+D64+XFW8w3u1oPscJ+ yNYL7+lz0K1ARP3HTtMIflBFU5FZ2C9E/ahZ7+USzm+g55PmfF2eSEegZqBUxzmi9zhc jG6QpG9VLinKeJx8CNemddItLFxbM8I2/d1fHM4GOmBgJqO3r+uwAh2nymb86I98Lng/ NE6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764290331; x=1764895131; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=oV7/3P94ufHrd/6Nd/jeUWDYgSffhEwvVPtFaFjAozc=; b=YUp53CgJoGoJ8hZLwgB6vulE87SdClbiSYduVGXV8WNoPrdqp/dsWAuNNZtfwWuGDm IZAoWQqHr1JTCa4sOkhxzdXLv8kE19GT8AT4fX/PIVlzRTH3FcIzS9278mufAGSLh+lq p7nYUi0kfF7IRxeH+M1M49RarzP5UhRWDItIf5HMgH4iH0E2QKQB212maAByVjIS/JU/ dGH4xKr1DxsCg8QpsWzDiwAPsGyo3gI9vusCJ2BeYfDHvWVBAkopa3GDKXhNVH7PpYeC naFRdIOFON7QxByo7RtzunA6mdzLEdJE+oAff93APqykQr2NXPCtR3OPslzTsyKDL18g X8mg== X-Gm-Message-State: AOJu0YzIMIZPAhWlrSG5l1CxSakwwRw3VlqLGzVH5tHDPturnJ+/FTUB 2COWFmiPTqDSEFOhHa+fJbHlcVToY36IOFJ3n46v0ZxFpLILPjzI3URj X-Gm-Gg: ASbGncsYOFhDMFjcTw0wyoeKT0VUQlZtqZoMKxV5xYRWtXq365G2TtHgbtXaBplJzT9 BK6OHR2yCvCuYvVhQTspncab3EOWGDj1bRzYLH8BtTyWl221VYTlffZcHRRoQTeMirM9Dz12lt+ H5H8h5rBmg560IWB2Z0d48GbPC3awHavaehE15N3GGPFFDAWLV5gf+fstSG3y/x6afP31o2DNnd BKeDUvuSSi/io5NDQL+bxqUrNSfqkQLsh2kkehXQKkOoTDCseA/B2hIUJCb5Mj9YdY87bshhb+K qK6KetzdRBjyaYgC2ZaFxKbjGrgemDO9kasSwltjLKXi9ajjgCihIBddSmbMVMOu4chC3JM2gtD rgnimojC6BW2jnmAY71dOkz6CtquEBR99Q888ixDcTWXxlOWj12lUPwF/U1lSbWxlktnXuXlowv YvVfCrV6AKd/H1p8UzWS2R0rjWE6JiuLq9AaJOkdr/Mts= X-Google-Smtp-Source: AGHT+IE2fbpWlQAZqygAVovAOKX5xSsLzCbSItnYQhg+Qu8+yYmrpwadXEASNRFljAmNaHALfpcVaQ== X-Received: by 2002:a05:7022:2510:b0:11b:1c6d:98bd with SMTP id a92af1059eb24-11c9d711b6bmr17323144c88.9.1764290330395; Thu, 27 Nov 2025 16:38:50 -0800 (PST) Received: from ParadiseLost.localdomain (lohr.com.br. [177.69.253.233]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcaee7076sm12404561c88.4.2025.11.27.16.38.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 16:38:49 -0800 (PST) From: "Rafael V. Volkmer" To: ukleinek@kernel.org Cc: linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, rafael.v.volkmer@gmail.com Subject: [PATCH v7 1/9] pwm: tiehrpwm: prefix register and field definitions Date: Thu, 27 Nov 2025 21:36:26 -0300 Message-ID: <20251128003634.247529-2-rafael.v.volkmer@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> References: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Prefix all eHRPWM register offsets, bitfields and related constants with the TIEHRPWM_ prefix to make their origin explicit and avoid clashes with other PWM drivers or platforms. While at it, update all users in pwm-tiehrpwm.c to use the new names, including the period tracking and prescaler helpers, without changing any underlying values. This patch is a mechanical rename-only change. No functional change intended. Signed-off-by: Rafael V. Volkmer --- drivers/pwm/pwm-tiehrpwm.c | 257 +++++++++++++++++++------------------ 1 file changed, 131 insertions(+), 126 deletions(-) diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index 7a86cb090f76..b6020b2210db 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c @@ -17,77 +17,81 @@ /* EHRPWM registers and bits definitions */ =20 /* Time base module registers */ -#define TBCTL 0x00 -#define TBPRD 0x0A - -#define TBCTL_PRDLD_MASK BIT(3) -#define TBCTL_PRDLD_SHDW 0 -#define TBCTL_PRDLD_IMDT BIT(3) -#define TBCTL_CLKDIV_MASK (BIT(12) | BIT(11) | BIT(10) | BIT(9) | \ - BIT(8) | BIT(7)) -#define TBCTL_CTRMODE_MASK (BIT(1) | BIT(0)) -#define TBCTL_CTRMODE_UP 0 -#define TBCTL_CTRMODE_DOWN BIT(0) -#define TBCTL_CTRMODE_UPDOWN BIT(1) -#define TBCTL_CTRMODE_FREEZE (BIT(1) | BIT(0)) - -#define TBCTL_HSPCLKDIV_SHIFT 7 -#define TBCTL_CLKDIV_SHIFT 10 - -#define CLKDIV_MAX 7 -#define HSPCLKDIV_MAX 7 -#define PERIOD_MAX 0x10000 +#define TIEHRPWM_TBCTL 0x00 +#define TIEHRPWM_TBPRD 0x0A + +#define TIEHRPWM_TBCTL_PRDLD_MASK BIT(3) +#define TIEHRPWM_TBCTL_PRDLD_SHDW 0 +#define TIEHRPWM_TBCTL_PRDLD_IMDT BIT(3) +#define TIEHRPWM_TBCTL_CLKDIV_MASK (BIT(12) | BIT(11) | BIT(10) | BIT(9) = | \ + BIT(8) | BIT(7)) +#define TIEHRPWM_TBCTL_CTRMODE_MASK (BIT(1) | BIT(0)) +#define TIEHRPWM_TBCTL_CTRMODE_UP 0 +#define TIEHRPWM_TBCTL_CTRMODE_DOWN BIT(0) +#define TIEHRPWM_TBCTL_CTRMODE_UPDOWN BIT(1) +#define TIEHRPWM_TBCTL_CTRMODE_FREEZE (BIT(1) | BIT(0)) + +#define TIEHRPWM_TBCTL_HSPCLKDIV_SHIFT 7 +#define TIEHRPWM_TBCTL_CLKDIV_SHIFT 10 + +#define TIEHRPWM_CLKDIV_MAX 7 +#define TIEHRPWM_HSPCLKDIV_MAX 7 +#define TIEHRPWM_PERIOD_MAX 0x10000 =20 /* compare module registers */ -#define CMPA 0x12 -#define CMPB 0x14 +#define TIEHRPWM_CMPA 0x12 +#define TIEHRPWM_CMPB 0x14 =20 /* Action qualifier module registers */ -#define AQCTLA 0x16 -#define AQCTLB 0x18 -#define AQSFRC 0x1A -#define AQCSFRC 0x1C - -#define AQCTL_CBU_MASK (BIT(9) | BIT(8)) -#define AQCTL_CBU_FRCLOW BIT(8) -#define AQCTL_CBU_FRCHIGH BIT(9) -#define AQCTL_CBU_FRCTOGGLE (BIT(9) | BIT(8)) -#define AQCTL_CAU_MASK (BIT(5) | BIT(4)) -#define AQCTL_CAU_FRCLOW BIT(4) -#define AQCTL_CAU_FRCHIGH BIT(5) -#define AQCTL_CAU_FRCTOGGLE (BIT(5) | BIT(4)) -#define AQCTL_PRD_MASK (BIT(3) | BIT(2)) -#define AQCTL_PRD_FRCLOW BIT(2) -#define AQCTL_PRD_FRCHIGH BIT(3) -#define AQCTL_PRD_FRCTOGGLE (BIT(3) | BIT(2)) -#define AQCTL_ZRO_MASK (BIT(1) | BIT(0)) -#define AQCTL_ZRO_FRCLOW BIT(0) -#define AQCTL_ZRO_FRCHIGH BIT(1) -#define AQCTL_ZRO_FRCTOGGLE (BIT(1) | BIT(0)) - -#define AQCTL_CHANA_POLNORMAL (AQCTL_CAU_FRCLOW | AQCTL_ZRO_FRCHIGH) -#define AQCTL_CHANA_POLINVERSED (AQCTL_CAU_FRCHIGH | AQCTL_ZRO_FRCLOW) -#define AQCTL_CHANB_POLNORMAL (AQCTL_CBU_FRCLOW | AQCTL_ZRO_FRCHIGH) -#define AQCTL_CHANB_POLINVERSED (AQCTL_CBU_FRCHIGH | AQCTL_ZRO_FRCLOW) - -#define AQSFRC_RLDCSF_MASK (BIT(7) | BIT(6)) -#define AQSFRC_RLDCSF_ZRO 0 -#define AQSFRC_RLDCSF_PRD BIT(6) -#define AQSFRC_RLDCSF_ZROPRD BIT(7) -#define AQSFRC_RLDCSF_IMDT (BIT(7) | BIT(6)) - -#define AQCSFRC_CSFB_MASK (BIT(3) | BIT(2)) -#define AQCSFRC_CSFB_FRCDIS 0 -#define AQCSFRC_CSFB_FRCLOW BIT(2) -#define AQCSFRC_CSFB_FRCHIGH BIT(3) -#define AQCSFRC_CSFB_DISSWFRC (BIT(3) | BIT(2)) -#define AQCSFRC_CSFA_MASK (BIT(1) | BIT(0)) -#define AQCSFRC_CSFA_FRCDIS 0 -#define AQCSFRC_CSFA_FRCLOW BIT(0) -#define AQCSFRC_CSFA_FRCHIGH BIT(1) -#define AQCSFRC_CSFA_DISSWFRC (BIT(1) | BIT(0)) - -#define NUM_PWM_CHANNEL 2 /* EHRPWM channels */ +#define TIEHRPWM_AQCTLA 0x16 +#define TIEHRPWM_AQCTLB 0x18 +#define TIEHRPWM_AQSFRC 0x1A +#define TIEHRPWM_AQCSFRC 0x1C + +#define TIEHRPWM_AQCTL_CBU_MASK (BIT(9) | BIT(8)) +#define TIEHRPWM_AQCTL_CBU_FRCLOW BIT(8) +#define TIEHRPWM_AQCTL_CBU_FRCHIGH BIT(9) +#define TIEHRPWM_AQCTL_CBU_FRCTOGGLE (BIT(9) | BIT(8)) +#define TIEHRPWM_AQCTL_CAU_MASK (BIT(5) | BIT(4)) +#define TIEHRPWM_AQCTL_CAU_FRCLOW BIT(4) +#define TIEHRPWM_AQCTL_CAU_FRCHIGH BIT(5) +#define TIEHRPWM_AQCTL_CAU_FRCTOGGLE (BIT(5) | BIT(4)) +#define TIEHRPWM_AQCTL_PRD_MASK (BIT(3) | BIT(2)) +#define TIEHRPWM_AQCTL_PRD_FRCLOW BIT(2) +#define TIEHRPWM_AQCTL_PRD_FRCHIGH BIT(3) +#define TIEHRPWM_AQCTL_PRD_FRCTOGGLE (BIT(3) | BIT(2)) +#define TIEHRPWM_AQCTL_ZRO_MASK (BIT(1) | BIT(0)) +#define TIEHRPWM_AQCTL_ZRO_FRCLOW BIT(0) +#define TIEHRPWM_AQCTL_ZRO_FRCHIGH BIT(1) +#define TIEHRPWM_AQCTL_ZRO_FRCTOGGLE (BIT(1) | BIT(0)) + +#define TIEHRPWM_AQCTL_CHANA_POLNORMAL (TIEHRPWM_AQCTL_CAU_FRCLOW | \ + TIEHRPWM_AQCTL_ZRO_FRCHIGH) +#define TIEHRPWM_AQCTL_CHANA_POLINVERSED (TIEHRPWM_AQCTL_CAU_FRCHIGH | \ + TIEHRPWM_AQCTL_ZRO_FRCLOW) +#define TIEHRPWM_AQCTL_CHANB_POLNORMAL (TIEHRPWM_AQCTL_CBU_FRCLOW | \ + TIEHRPWM_AQCTL_ZRO_FRCHIGH) +#define TIEHRPWM_AQCTL_CHANB_POLINVERSED (TIEHRPWM_AQCTL_CBU_FRCHIGH | \ + TIEHRPWM_AQCTL_ZRO_FRCLOW) + +#define TIEHRPWM_AQSFRC_RLDCSF_MASK (BIT(7) | BIT(6)) +#define TIEHRPWM_AQSFRC_RLDCSF_ZRO 0 +#define TIEHRPWM_AQSFRC_RLDCSF_PRD BIT(6) +#define TIEHRPWM_AQSFRC_RLDCSF_ZROPRD BIT(7) +#define TIEHRPWM_AQSFRC_RLDCSF_IMDT (BIT(7) | BIT(6)) + +#define TIEHRPWM_AQCSFRC_CSFB_MASK (BIT(3) | BIT(2)) +#define TIEHRPWM_AQCSFRC_CSFB_FRCDIS 0 +#define TIEHRPWM_AQCSFRC_CSFB_FRCLOW BIT(2) +#define TIEHRPWM_AQCSFRC_CSFB_FRCHIGH BIT(3) +#define TIEHRPWM_AQCSFRC_CSFB_DISSWFRC (BIT(3) | BIT(2)) +#define TIEHRPWM_AQCSFRC_CSFA_MASK (BIT(1) | BIT(0)) +#define TIEHRPWM_AQCSFRC_CSFA_FRCDIS 0 +#define TIEHRPWM_AQCSFRC_CSFA_FRCLOW BIT(0) +#define TIEHRPWM_AQCSFRC_CSFA_FRCHIGH BIT(1) +#define TIEHRPWM_AQCSFRC_CSFA_DISSWFRC (BIT(1) | BIT(0)) + +#define TIEHRPWM_NUM_PWM_CHANNEL 2 /* EHRPWM channels */ =20 struct ehrpwm_context { u16 tbctl; @@ -103,7 +107,7 @@ struct ehrpwm_context { struct ehrpwm_pwm_chip { unsigned long clk_rate; void __iomem *mmio_base; - unsigned long period_cycles[NUM_PWM_CHANNEL]; + unsigned long period_cycles[TIEHRPWM_NUM_PWM_CHANNEL]; struct clk *tbclk; struct ehrpwm_context ctx; }; @@ -146,8 +150,8 @@ static int set_prescale_div(unsigned long rqst_prescale= r, u16 *prescale_div, { unsigned int clkdiv, hspclkdiv; =20 - for (clkdiv =3D 0; clkdiv <=3D CLKDIV_MAX; clkdiv++) { - for (hspclkdiv =3D 0; hspclkdiv <=3D HSPCLKDIV_MAX; hspclkdiv++) { + for (clkdiv =3D 0; clkdiv <=3D TIEHRPWM_CLKDIV_MAX; clkdiv++) { + for (hspclkdiv =3D 0; hspclkdiv <=3D TIEHRPWM_HSPCLKDIV_MAX; hspclkdiv++= ) { /* * calculations for prescaler value : * prescale_div =3D HSPCLKDIVIDER * CLKDIVIDER. @@ -162,8 +166,8 @@ static int set_prescale_div(unsigned long rqst_prescale= r, u16 *prescale_div, *prescale_div =3D (1 << clkdiv) * (hspclkdiv ? (hspclkdiv * 2) : 1); if (*prescale_div >=3D rqst_prescaler) { - *tb_clk_div =3D (clkdiv << TBCTL_CLKDIV_SHIFT) | - (hspclkdiv << TBCTL_HSPCLKDIV_SHIFT); + *tb_clk_div =3D (clkdiv << TIEHRPWM_TBCTL_CLKDIV_SHIFT) | + (hspclkdiv << TIEHRPWM_TBCTL_HSPCLKDIV_SHIFT); return 0; } } @@ -204,7 +208,7 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, str= uct pwm_device *pwm, * Period values should be same for multiple PWM channels as IP uses * same period register for multiple channels. */ - for (i =3D 0; i < NUM_PWM_CHANNEL; i++) { + for (i =3D 0; i < TIEHRPWM_NUM_PWM_CHANNEL; i++) { if (pc->period_cycles[i] && (pc->period_cycles[i] !=3D period_cycles)) { /* @@ -224,7 +228,7 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, str= uct pwm_device *pwm, pc->period_cycles[pwm->hwpwm] =3D period_cycles; =20 /* Configure clock prescaler to support Low frequency PWM wave */ - if (set_prescale_div(DIV_ROUND_UP(period_cycles, PERIOD_MAX), &ps_divval, + if (set_prescale_div(DIV_ROUND_UP(period_cycles, TIEHRPWM_PERIOD_MAX), &p= s_divval, &tb_divval)) { dev_err(pwmchip_parent(chip), "Unsupported values\n"); return -EINVAL; @@ -240,52 +244,53 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, s= truct pwm_device *pwm, pm_runtime_get_sync(pwmchip_parent(chip)); =20 /* Update clock prescaler values */ - ehrpwm_modify(pc->mmio_base, TBCTL, TBCTL_CLKDIV_MASK, tb_divval); + ehrpwm_modify(pc->mmio_base, TIEHRPWM_TBCTL, TIEHRPWM_TBCTL_CLKDIV_MASK, = tb_divval); =20 if (pwm->hwpwm =3D=3D 1) { /* Channel 1 configured with compare B register */ - cmp_reg =3D CMPB; + cmp_reg =3D TIEHRPWM_CMPB; =20 - aqctl_reg =3D AQCTLB; - aqctl_mask =3D AQCTL_CBU_MASK; + aqctl_reg =3D TIEHRPWM_AQCTLB; + aqctl_mask =3D TIEHRPWM_AQCTL_CBU_MASK; =20 if (polarity =3D=3D PWM_POLARITY_INVERSED) - aqctl_val =3D AQCTL_CHANB_POLINVERSED; + aqctl_val =3D TIEHRPWM_AQCTL_CHANB_POLINVERSED; else - aqctl_val =3D AQCTL_CHANB_POLNORMAL; + aqctl_val =3D TIEHRPWM_AQCTL_CHANB_POLNORMAL; =20 /* if duty_cycle is big, don't toggle on CBU */ if (duty_cycles > period_cycles) - aqctl_val &=3D ~AQCTL_CBU_MASK; + aqctl_val &=3D ~TIEHRPWM_AQCTL_CBU_MASK; =20 } else { /* Channel 0 configured with compare A register */ - cmp_reg =3D CMPA; + cmp_reg =3D TIEHRPWM_CMPA; =20 - aqctl_reg =3D AQCTLA; - aqctl_mask =3D AQCTL_CAU_MASK; + aqctl_reg =3D TIEHRPWM_AQCTLA; + aqctl_mask =3D TIEHRPWM_AQCTL_CAU_MASK; =20 if (polarity =3D=3D PWM_POLARITY_INVERSED) - aqctl_val =3D AQCTL_CHANA_POLINVERSED; + aqctl_val =3D TIEHRPWM_AQCTL_CHANA_POLINVERSED; else - aqctl_val =3D AQCTL_CHANA_POLNORMAL; + aqctl_val =3D TIEHRPWM_AQCTL_CHANA_POLNORMAL; =20 /* if duty_cycle is big, don't toggle on CAU */ if (duty_cycles > period_cycles) - aqctl_val &=3D ~AQCTL_CAU_MASK; + aqctl_val &=3D ~TIEHRPWM_AQCTL_CAU_MASK; } =20 - aqctl_mask |=3D AQCTL_PRD_MASK | AQCTL_ZRO_MASK; + aqctl_mask |=3D TIEHRPWM_AQCTL_PRD_MASK | TIEHRPWM_AQCTL_ZRO_MASK; ehrpwm_modify(pc->mmio_base, aqctl_reg, aqctl_mask, aqctl_val); =20 /* Configure shadow loading on Period register */ - ehrpwm_modify(pc->mmio_base, TBCTL, TBCTL_PRDLD_MASK, TBCTL_PRDLD_SHDW); + ehrpwm_modify(pc->mmio_base, TIEHRPWM_TBCTL, TIEHRPWM_TBCTL_PRDLD_MASK, + TIEHRPWM_TBCTL_PRDLD_SHDW); =20 - ehrpwm_write(pc->mmio_base, TBPRD, period_cycles - 1); + ehrpwm_write(pc->mmio_base, TIEHRPWM_TBPRD, period_cycles - 1); =20 /* Configure ehrpwm counter for up-count mode */ - ehrpwm_modify(pc->mmio_base, TBCTL, TBCTL_CTRMODE_MASK, - TBCTL_CTRMODE_UP); + ehrpwm_modify(pc->mmio_base, TIEHRPWM_TBCTL, TIEHRPWM_TBCTL_CTRMODE_MASK, + TIEHRPWM_TBCTL_CTRMODE_UP); =20 if (!(duty_cycles > period_cycles)) ehrpwm_write(pc->mmio_base, cmp_reg, duty_cycles); @@ -306,18 +311,18 @@ static int ehrpwm_pwm_enable(struct pwm_chip *chip, s= truct pwm_device *pwm) =20 /* Disabling Action Qualifier on PWM output */ if (pwm->hwpwm) { - aqcsfrc_val =3D AQCSFRC_CSFB_FRCDIS; - aqcsfrc_mask =3D AQCSFRC_CSFB_MASK; + aqcsfrc_val =3D TIEHRPWM_AQCSFRC_CSFB_FRCDIS; + aqcsfrc_mask =3D TIEHRPWM_AQCSFRC_CSFB_MASK; } else { - aqcsfrc_val =3D AQCSFRC_CSFA_FRCDIS; - aqcsfrc_mask =3D AQCSFRC_CSFA_MASK; + aqcsfrc_val =3D TIEHRPWM_AQCSFRC_CSFA_FRCDIS; + aqcsfrc_mask =3D TIEHRPWM_AQCSFRC_CSFA_MASK; } =20 /* Changes to shadow mode */ - ehrpwm_modify(pc->mmio_base, AQSFRC, AQSFRC_RLDCSF_MASK, - AQSFRC_RLDCSF_ZRO); + ehrpwm_modify(pc->mmio_base, TIEHRPWM_AQSFRC, TIEHRPWM_AQSFRC_RLDCSF_MASK, + TIEHRPWM_AQSFRC_RLDCSF_ZRO); =20 - ehrpwm_modify(pc->mmio_base, AQCSFRC, aqcsfrc_mask, aqcsfrc_val); + ehrpwm_modify(pc->mmio_base, TIEHRPWM_AQCSFRC, aqcsfrc_mask, aqcsfrc_val); =20 /* Enable TBCLK */ ret =3D clk_enable(pc->tbclk); @@ -337,25 +342,25 @@ static void ehrpwm_pwm_disable(struct pwm_chip *chip,= struct pwm_device *pwm) =20 /* Action Qualifier puts PWM output low forcefully */ if (pwm->hwpwm) { - aqcsfrc_val =3D AQCSFRC_CSFB_FRCLOW; - aqcsfrc_mask =3D AQCSFRC_CSFB_MASK; + aqcsfrc_val =3D TIEHRPWM_AQCSFRC_CSFB_FRCLOW; + aqcsfrc_mask =3D TIEHRPWM_AQCSFRC_CSFB_MASK; } else { - aqcsfrc_val =3D AQCSFRC_CSFA_FRCLOW; - aqcsfrc_mask =3D AQCSFRC_CSFA_MASK; + aqcsfrc_val =3D TIEHRPWM_AQCSFRC_CSFA_FRCLOW; + aqcsfrc_mask =3D TIEHRPWM_AQCSFRC_CSFA_MASK; } =20 /* Update shadow register first before modifying active register */ - ehrpwm_modify(pc->mmio_base, AQSFRC, AQSFRC_RLDCSF_MASK, - AQSFRC_RLDCSF_ZRO); - ehrpwm_modify(pc->mmio_base, AQCSFRC, aqcsfrc_mask, aqcsfrc_val); + ehrpwm_modify(pc->mmio_base, TIEHRPWM_AQSFRC, TIEHRPWM_AQSFRC_RLDCSF_MASK, + TIEHRPWM_AQSFRC_RLDCSF_ZRO); + ehrpwm_modify(pc->mmio_base, TIEHRPWM_AQCSFRC, aqcsfrc_mask, aqcsfrc_val); /* * Changes to immediate action on Action Qualifier. This puts * Action Qualifier control on PWM output from next TBCLK */ - ehrpwm_modify(pc->mmio_base, AQSFRC, AQSFRC_RLDCSF_MASK, - AQSFRC_RLDCSF_IMDT); + ehrpwm_modify(pc->mmio_base, TIEHRPWM_AQSFRC, TIEHRPWM_AQSFRC_RLDCSF_MASK, + TIEHRPWM_AQSFRC_RLDCSF_IMDT); =20 - ehrpwm_modify(pc->mmio_base, AQCSFRC, aqcsfrc_mask, aqcsfrc_val); + ehrpwm_modify(pc->mmio_base, TIEHRPWM_AQCSFRC, aqcsfrc_mask, aqcsfrc_val); =20 /* Disabling TBCLK on PWM disable */ clk_disable(pc->tbclk); @@ -421,7 +426,7 @@ static int ehrpwm_pwm_probe(struct platform_device *pde= v) struct clk *clk; int ret; =20 - chip =3D devm_pwmchip_alloc(&pdev->dev, NUM_PWM_CHANNEL, sizeof(*pc)); + chip =3D devm_pwmchip_alloc(&pdev->dev, TIEHRPWM_NUM_PWM_CHANNEL, sizeof(= *pc)); if (IS_ERR(chip)) return PTR_ERR(chip); pc =3D to_ehrpwm_pwm_chip(chip); @@ -495,14 +500,14 @@ static void ehrpwm_pwm_save_context(struct pwm_chip *= chip) =20 pm_runtime_get_sync(pwmchip_parent(chip)); =20 - pc->ctx.tbctl =3D ehrpwm_read(pc->mmio_base, TBCTL); - pc->ctx.tbprd =3D ehrpwm_read(pc->mmio_base, TBPRD); - pc->ctx.cmpa =3D ehrpwm_read(pc->mmio_base, CMPA); - pc->ctx.cmpb =3D ehrpwm_read(pc->mmio_base, CMPB); - pc->ctx.aqctla =3D ehrpwm_read(pc->mmio_base, AQCTLA); - pc->ctx.aqctlb =3D ehrpwm_read(pc->mmio_base, AQCTLB); - pc->ctx.aqsfrc =3D ehrpwm_read(pc->mmio_base, AQSFRC); - pc->ctx.aqcsfrc =3D ehrpwm_read(pc->mmio_base, AQCSFRC); + pc->ctx.tbctl =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_TBCTL); + pc->ctx.tbprd =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_TBPRD); + pc->ctx.cmpa =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_CMPA); + pc->ctx.cmpb =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_CMPB); + pc->ctx.aqctla =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_AQCTLA); + pc->ctx.aqctlb =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_AQCTLB); + pc->ctx.aqsfrc =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_AQSFRC); + pc->ctx.aqcsfrc =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_AQCSFRC); =20 pm_runtime_put_sync(pwmchip_parent(chip)); } @@ -511,14 +516,14 @@ static void ehrpwm_pwm_restore_context(struct pwm_chi= p *chip) { struct ehrpwm_pwm_chip *pc =3D to_ehrpwm_pwm_chip(chip); =20 - ehrpwm_write(pc->mmio_base, TBPRD, pc->ctx.tbprd); - ehrpwm_write(pc->mmio_base, CMPA, pc->ctx.cmpa); - ehrpwm_write(pc->mmio_base, CMPB, pc->ctx.cmpb); - ehrpwm_write(pc->mmio_base, AQCTLA, pc->ctx.aqctla); - ehrpwm_write(pc->mmio_base, AQCTLB, pc->ctx.aqctlb); - ehrpwm_write(pc->mmio_base, AQSFRC, pc->ctx.aqsfrc); - ehrpwm_write(pc->mmio_base, AQCSFRC, pc->ctx.aqcsfrc); - ehrpwm_write(pc->mmio_base, TBCTL, pc->ctx.tbctl); + ehrpwm_write(pc->mmio_base, TIEHRPWM_TBPRD, pc->ctx.tbprd); + ehrpwm_write(pc->mmio_base, TIEHRPWM_CMPA, pc->ctx.cmpa); + ehrpwm_write(pc->mmio_base, TIEHRPWM_CMPB, pc->ctx.cmpb); + ehrpwm_write(pc->mmio_base, TIEHRPWM_AQCTLA, pc->ctx.aqctla); + ehrpwm_write(pc->mmio_base, TIEHRPWM_AQCTLB, pc->ctx.aqctlb); + ehrpwm_write(pc->mmio_base, TIEHRPWM_AQSFRC, pc->ctx.aqsfrc); + ehrpwm_write(pc->mmio_base, TIEHRPWM_AQCSFRC, pc->ctx.aqcsfrc); + ehrpwm_write(pc->mmio_base, TIEHRPWM_TBCTL, pc->ctx.tbctl); } =20 static int ehrpwm_pwm_suspend(struct device *dev) --=20 2.43.0 From nobody Mon Dec 1 21:30:50 2025 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (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 5E8D91F8722 for ; Fri, 28 Nov 2025 00:38:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290336; cv=none; b=lSktsjFtKBV78ss/abqeRTaJU8GkCScTVImjenVHFKlD0ZdWPonIX92N7j9r60MXgbRlnK8q7mlU2ZpMnLkolcmoqDB+Pfzsq2jTwqiFjkgwRgXj3nOzcl+VhsE7siamwzGSBLnHszuyZDe3YWjttOLwLarn8asj4N6TqUex+ng= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290336; c=relaxed/simple; bh=C9HWSAYR2q5uIph3FkUJ6BXnEDzjVAiaIx01sV5GSo4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Bt6BuYQLpv4ekuiTb6z5gKVTnDVnPZ0D5X1Re5VxD1dPvyxir/xQ0KHO8D8s3ErzvqII9d8JJS4Qkpji60jZ2HfYoVxtONXjmHLnN6BBGO1cLNDDZjDFrMClDH4tAHVGLcLHz645LVl9yt0e6RPYj475nHZBskB9Taa7jazCIxQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iaCk3aFV; arc=none smtp.client-ip=209.85.216.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iaCk3aFV" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-3438231df5fso1625240a91.2 for ; Thu, 27 Nov 2025 16:38:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764290334; x=1764895134; 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=rgsTYW6mw6gvo8cZFovvR+8R0CxGh+JuEoeXNZCt3LY=; b=iaCk3aFVAdlrS6f8tD9p/swnsRfCRAcQRKV2i3nwYYwRCD+k4cPXdVZpH+nCXMCZ+l tMGjCPxUu6gdEY+XKE3pBqzuzZJ0R9RwXvVop8uBVR8lOZ5IOF+GoEU3Q8Qs8kKeMy0x 7BHHO8/H0Rw0CLKAP3OiYThJwJiIhciYB2jDYpDn7D2QaxoOTs28pf4smIdZorWWkcgy /lGh0nkVsbTgzRuqsD4jpiM3WlycHE+UvML3e2wPLnEfgr9f55Tr+6uLb7zl8AMyF+vU 8tqK/QwD0A7ykPOtnEWtAoaTPpy2RPHgMBQFvGohKGG6Gi1Kv5xuHNbYJAqFGgbTUNPR 7wNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764290334; x=1764895134; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=rgsTYW6mw6gvo8cZFovvR+8R0CxGh+JuEoeXNZCt3LY=; b=AMb7EIELSwRlKjD3SQe30d0wQSykL+pp1Q4j37oLDzg/n3f+h7ERR+Sso9kcihzr3y WlWNc06w9Fzho/oWeUJIwulJm2wxmIGU/v4IUgFDscTkA9twN6aINpBsmztz+Za5PgBV 9atg73dBV0uoff1YyeQZp1vLQuOhed1kmIbymA5CAgknrqn46/pv0VmuBufh/s2UjFPN 9N17BQJvBUN4hvgKuXIiQCFbg1RZquqr4fP/dq3kcgaEuVhyQdC24CRJFUk4adhbPjr9 q89IN+UrLY6WP/vYcD72Zis1HgLwCIk41H9N9gs9RBzeRTAW2ky/vfg2VVFvG8QCRRas c8Ng== X-Gm-Message-State: AOJu0YxMYMoWLij2karvoRjWdgbuxyiVggetgLXjuFBFQ49j6DKVYYzS /uK21sxOALQdqv7+Eo4oywPuVQdOIzewEZHHgo+3ElilNDAlQ4bAwtfI6geYcw== X-Gm-Gg: ASbGncutvhFvfmRAPr3znuYA6QcRCEzo3oGTAv1g5aLZvT1Kun8iDjSf9AN8PlDiie0 Ca4Fhy0y6lqQ6XpcApnwgMRNCmX4Jev2p6O0eQeh7gJnv6M1m0dUWkGFrOl110kYhnbufyW+4F3 wcS5R8z9dJOQig+J1/OJxkXOPftITm5Jc4o/w+lKqAdH5riuOU2v/9+D7UeTrCvWsUKmItj83L3 ET2e//CwnsYml7YMEW8bzEPY1Zrqa3BALT6gM7sCQizBjJCzn1QsKUmvS9kJBa/ndZjI5BPfjYb 3E2KrDJaVq0GFw6w271MIOezpC9O+UMneMlB4IQ4SdE9vxNfY+wgCn1k0A/tu2vJUcthlfPNOnv 3i9OQB6dUErqBFOXcgM3iRX3G3bciPrq4Rgtnc5CtBIAlifaOBXeinOuH4rOkTzPLZdc2GgWuAl JkTIxXpfVlZAYt/ruf46AB6N96dHzgNsfkPVNx9l0dnWA= X-Google-Smtp-Source: AGHT+IH2td1t/oW0i1EB7gUksIIhTxGZlvPY9I6xxcILQJWAMleUCN55gA5CEaxqO/av+YMGSKO5Cw== X-Received: by 2002:a05:7022:922:b0:11d:c86c:652e with SMTP id a92af1059eb24-11dc86c662bmr3515299c88.5.1764290334396; Thu, 27 Nov 2025 16:38:54 -0800 (PST) Received: from ParadiseLost.localdomain (lohr.com.br. [177.69.253.233]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcaee7076sm12404561c88.4.2025.11.27.16.38.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 16:38:54 -0800 (PST) From: "Rafael V. Volkmer" To: ukleinek@kernel.org Cc: linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, rafael.v.volkmer@gmail.com Subject: [PATCH v7 2/9] pwm: tiehrpwm: drop _MASK suffix from TBCTL PRDLD field Date: Thu, 27 Nov 2025 21:36:27 -0300 Message-ID: <20251128003634.247529-3-rafael.v.volkmer@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> References: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rename TIEHRPWM_TBCTL_PRDLD_MASK to TIEHRPWM_TBCTL_PRDLD so the macro name describes the PRDLD field itself instead of carrying a _MASK suffix. Update the single user in ehrpwm_pwm_config() accordingly. The value of the bit definition is unchanged. No functional change. Signed-off-by: Rafael V. Volkmer --- drivers/pwm/pwm-tiehrpwm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index b6020b2210db..f8625394c056 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c @@ -20,7 +20,7 @@ #define TIEHRPWM_TBCTL 0x00 #define TIEHRPWM_TBPRD 0x0A =20 -#define TIEHRPWM_TBCTL_PRDLD_MASK BIT(3) +#define TIEHRPWM_TBCTL_PRDLD BIT(3) #define TIEHRPWM_TBCTL_PRDLD_SHDW 0 #define TIEHRPWM_TBCTL_PRDLD_IMDT BIT(3) #define TIEHRPWM_TBCTL_CLKDIV_MASK (BIT(12) | BIT(11) | BIT(10) | BIT(9) = | \ @@ -283,7 +283,7 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, str= uct pwm_device *pwm, ehrpwm_modify(pc->mmio_base, aqctl_reg, aqctl_mask, aqctl_val); =20 /* Configure shadow loading on Period register */ - ehrpwm_modify(pc->mmio_base, TIEHRPWM_TBCTL, TIEHRPWM_TBCTL_PRDLD_MASK, + ehrpwm_modify(pc->mmio_base, TIEHRPWM_TBCTL, TIEHRPWM_TBCTL_PRDLD, TIEHRPWM_TBCTL_PRDLD_SHDW); =20 ehrpwm_write(pc->mmio_base, TIEHRPWM_TBPRD, period_cycles - 1); --=20 2.43.0 From nobody Mon Dec 1 21:30:50 2025 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (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 C852C225402 for ; Fri, 28 Nov 2025 00:38:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290340; cv=none; b=KVTlp6QRMOHElO+63QIfvifxX6qB6uq010ehv4xio38kOoSix2uRWUhb+hUnsvm/YnseSCziM7Qs2ICy/D3AWr64wShEfbVYwaQDr27gt9zfs5VqvcxnwViq0FcdowB1iM6UL0ZAcRBH/vZhg8nsoY7yvZyYRsYiG7MXQGBHUKo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290340; c=relaxed/simple; bh=bHKg8688KxIbIu3scsuk8kYDaEqkgSWMViJ2vaTFUT0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LFCu/k7J9El/WpBcLrhd6p/FCcEY0nFo+Hp/HiRfMeoxJzyvi9iKU27A1oYoJFQAVjftGNR4SKBVukiW5F6On+Uy8+hSKfh3KHb5MmC7e358fX06MGaR62r8fQLD/jCsjeDwkKyZDcAzfujbQI32NhLPOatmNp9lBofkjnbs9sc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Az36a0rc; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Az36a0rc" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-297d4a56f97so18786125ad.1 for ; Thu, 27 Nov 2025 16:38:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764290338; x=1764895138; 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=TtuDHKEV5UkQRRA9Aqhc0gyimLn41C2SrbraOXqSNvo=; b=Az36a0rci1of/3yt2kQNOdSnNSjwaHxcLHrbz0kMXF4L8l7yU3UkgWDSrhTNYJT9vW e92GcmAtxPbZlMDQt5EwyBPzJAb3rQLME15/7sWozOJpSmz3/xqrmO0wvkieISpBPVta MNUilHGlsuPHYIuDaTyltWl48g/4wjEKgfoiVRdC8n5ZIBnvt2y9Pj9UXhi2ir3qjSap lZynDASfxbOe3YyuwLAYWsvKMYzaA/7Ln1hT5B1zyQKP5ucqT8aEwX2/Twi1+o5pRssp 8rcDljoEUsMEQedqrwCIfzRh/b9dpzCPkvonznBDWOWC6KQzUVgQ8E8oeYtWoNHENQ+2 IzJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764290338; x=1764895138; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=TtuDHKEV5UkQRRA9Aqhc0gyimLn41C2SrbraOXqSNvo=; b=BSWTBa3j2SqXYp4cb3ZxwrGyIXCq9/SndsQldqEPcf3U2U/Hcqk08o2fR8xjeJ/ely 4PL0WhyhJOuj33nuEfpFxi3T5iaGCWky1KqwxZc7H+2qal6QiNW1BNLEeKevFCyCRsnE lgBKGl1dRmM5z1KOu/qqmZNkVIY9IrOG8j2eRGEw68j1ALOkAy9BHfQHKZJljJYQZLGk I3RQDIq626SN1e+pMgCEqEK9+JpVdzUl5DQSM7IId6z43s7Mpb38avFAOA0A9Xmqn6Sr rnz52JkDdX+HBrNy+9gWifa5Fgzr2eEXYXxthvClmDxSa3LATA3IBPNmbJhC5TiNSiVw Dt+Q== X-Gm-Message-State: AOJu0YyX2tAZpcjZDSoB9muweY0lskAtbnQ1k1N2LuIy3xpyvtrkt6BI 6SKDnHhVd+ewkVHVmaHvYfmqeW0TUZFFTlSEcune5CEu9hZpluIZJGTE X-Gm-Gg: ASbGncuIiQIcbg00ZU1/Ddii+mfnVtcAs6cOKAPs959yDxtmqlFUAm5nio/taDjGn5y WnkD9GV/C+LVSL6VU1eXwUMs8puA7ZEYRxwteMuKu6rOrB3hzNP0ZtTuDF4TXl4uVCGQYX/wKN6 aRc5R0g2IGyqmtVb3g2PEnLcipVZo+dtYG/X/po2H8Dx5VX4TSCqYMOStqDurzplT8lndoKe2BL bsrERsUSzeefgn2W/HhxwjfJD8ooObxVLabeIo9Uhf8GWFW6uE7NtIR5/pyVyQLUKlR3eGMVs41 dGaECUdoWYQboQUd0FwMvVBZwfpOf+V/Yg+bg6vm1Tu2478r1UHbU5xBtkpx/j668FN6HoKN/YM kIvylQYDdEZygUIe5fW/K3G3IHRf33aPNoZq1YsrF/tG17+VyfSZMCQ0Ksf8y2NBa/quCUPjaNd xfTCUsW2pnskhKI6ftDEJMXqknDeMlHPhwdqGqyo8obsc= X-Google-Smtp-Source: AGHT+IHW+tPiN6CDXpO3aHyqH6Qyx9O/PsctZJUF41D9BYde7hvpZJ7PwzIliFHdrWa9qV7RDFbo2w== X-Received: by 2002:a05:7022:a92:b0:11b:1cae:a0fa with SMTP id a92af1059eb24-11c9d55469dmr21786825c88.0.1764290337952; Thu, 27 Nov 2025 16:38:57 -0800 (PST) Received: from ParadiseLost.localdomain (lohr.com.br. [177.69.253.233]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcaee7076sm12404561c88.4.2025.11.27.16.38.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 16:38:57 -0800 (PST) From: "Rafael V. Volkmer" To: ukleinek@kernel.org Cc: linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, rafael.v.volkmer@gmail.com Subject: [PATCH v7 3/9] pwm: tiehrpwm: use GENMASK() and FIELD_PREP() for register fields Date: Thu, 27 Nov 2025 21:36:28 -0300 Message-ID: <20251128003634.247529-4-rafael.v.volkmer@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> References: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Convert the TIEHRPWM TBCTL, AQCTL, AQSFRC and AQCSFRC field definitions to use GENMASK() and FIELD_PREP() instead of open-coded bit masks and shifted literals. This makes the eHRPWM register layout more explicit, reduces hand-rolled bit arithmetic and aligns the driver with common kernel bitfield patterns. No functional change intended. Signed-off-by: Rafael V. Volkmer --- drivers/pwm/pwm-tiehrpwm.c | 88 ++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 41 deletions(-) diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index f8625394c056..0802f0553587 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c @@ -13,6 +13,7 @@ #include #include #include +#include =20 /* EHRPWM registers and bits definitions */ =20 @@ -21,15 +22,16 @@ #define TIEHRPWM_TBPRD 0x0A =20 #define TIEHRPWM_TBCTL_PRDLD BIT(3) -#define TIEHRPWM_TBCTL_PRDLD_SHDW 0 -#define TIEHRPWM_TBCTL_PRDLD_IMDT BIT(3) -#define TIEHRPWM_TBCTL_CLKDIV_MASK (BIT(12) | BIT(11) | BIT(10) | BIT(9) = | \ - BIT(8) | BIT(7)) -#define TIEHRPWM_TBCTL_CTRMODE_MASK (BIT(1) | BIT(0)) -#define TIEHRPWM_TBCTL_CTRMODE_UP 0 -#define TIEHRPWM_TBCTL_CTRMODE_DOWN BIT(0) -#define TIEHRPWM_TBCTL_CTRMODE_UPDOWN BIT(1) -#define TIEHRPWM_TBCTL_CTRMODE_FREEZE (BIT(1) | BIT(0)) +#define TIEHRPWM_TBCTL_PRDLD_SHDW FIELD_PREP(TIEHRPWM_TBCTL_PRDLD, 0) +#define TIEHRPWM_TBCTL_PRDLD_IMDT FIELD_PREP(TIEHRPWM_TBCTL_PRDLD, 1) + +#define TIEHRPWM_TBCTL_CLKDIV_MASK GENMASK(12, 7) + +#define TIEHRPWM_TBCTL_CTRMODE_MASK GENMASK(1, 0) +#define TIEHRPWM_TBCTL_CTRMODE_UP FIELD_PREP(TIEHRPWM_TBCTL_CTRMODE_MASK,= 0) +#define TIEHRPWM_TBCTL_CTRMODE_DOWN FIELD_PREP(TIEHRPWM_TBCTL_CTRMODE_MAS= K, 1) +#define TIEHRPWM_TBCTL_CTRMODE_UPDOWN FIELD_PREP(TIEHRPWM_TBCTL_CTRMODE_M= ASK, 2) +#define TIEHRPWM_TBCTL_CTRMODE_FREEZE FIELD_PREP(TIEHRPWM_TBCTL_CTRMODE_M= ASK, 3) =20 #define TIEHRPWM_TBCTL_HSPCLKDIV_SHIFT 7 #define TIEHRPWM_TBCTL_CLKDIV_SHIFT 10 @@ -48,22 +50,25 @@ #define TIEHRPWM_AQSFRC 0x1A #define TIEHRPWM_AQCSFRC 0x1C =20 -#define TIEHRPWM_AQCTL_CBU_MASK (BIT(9) | BIT(8)) -#define TIEHRPWM_AQCTL_CBU_FRCLOW BIT(8) -#define TIEHRPWM_AQCTL_CBU_FRCHIGH BIT(9) -#define TIEHRPWM_AQCTL_CBU_FRCTOGGLE (BIT(9) | BIT(8)) -#define TIEHRPWM_AQCTL_CAU_MASK (BIT(5) | BIT(4)) -#define TIEHRPWM_AQCTL_CAU_FRCLOW BIT(4) -#define TIEHRPWM_AQCTL_CAU_FRCHIGH BIT(5) -#define TIEHRPWM_AQCTL_CAU_FRCTOGGLE (BIT(5) | BIT(4)) -#define TIEHRPWM_AQCTL_PRD_MASK (BIT(3) | BIT(2)) -#define TIEHRPWM_AQCTL_PRD_FRCLOW BIT(2) -#define TIEHRPWM_AQCTL_PRD_FRCHIGH BIT(3) -#define TIEHRPWM_AQCTL_PRD_FRCTOGGLE (BIT(3) | BIT(2)) -#define TIEHRPWM_AQCTL_ZRO_MASK (BIT(1) | BIT(0)) -#define TIEHRPWM_AQCTL_ZRO_FRCLOW BIT(0) -#define TIEHRPWM_AQCTL_ZRO_FRCHIGH BIT(1) -#define TIEHRPWM_AQCTL_ZRO_FRCTOGGLE (BIT(1) | BIT(0)) +#define TIEHRPWM_AQCTL_CBU_MASK GENMASK(9, 8) +#define TIEHRPWM_AQCTL_CBU_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_CBU_MASK, 1) +#define TIEHRPWM_AQCTL_CBU_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_CBU_MASK, 2) +#define TIEHRPWM_AQCTL_CBU_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_CBU_MASK, = 3) + +#define TIEHRPWM_AQCTL_CAU_MASK GENMASK(5, 4) +#define TIEHRPWM_AQCTL_CAU_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_CAU_MASK, 1) +#define TIEHRPWM_AQCTL_CAU_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_CAU_MASK, 2) +#define TIEHRPWM_AQCTL_CAU_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_CAU_MASK, = 3) + +#define TIEHRPWM_AQCTL_PRD_MASK GENMASK(3, 2) +#define TIEHRPWM_AQCTL_PRD_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_PRD_MASK, 1) +#define TIEHRPWM_AQCTL_PRD_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_PRD_MASK, 2) +#define TIEHRPWM_AQCTL_PRD_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_PRD_MASK, = 3) + +#define TIEHRPWM_AQCTL_ZRO_MASK GENMASK(1, 0) +#define TIEHRPWM_AQCTL_ZRO_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_ZRO_MASK, 1) +#define TIEHRPWM_AQCTL_ZRO_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_ZRO_MASK, 2) +#define TIEHRPWM_AQCTL_ZRO_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_ZRO_MASK, = 3) =20 #define TIEHRPWM_AQCTL_CHANA_POLNORMAL (TIEHRPWM_AQCTL_CAU_FRCLOW | \ TIEHRPWM_AQCTL_ZRO_FRCHIGH) @@ -74,22 +79,23 @@ #define TIEHRPWM_AQCTL_CHANB_POLINVERSED (TIEHRPWM_AQCTL_CBU_FRCHIGH | \ TIEHRPWM_AQCTL_ZRO_FRCLOW) =20 -#define TIEHRPWM_AQSFRC_RLDCSF_MASK (BIT(7) | BIT(6)) -#define TIEHRPWM_AQSFRC_RLDCSF_ZRO 0 -#define TIEHRPWM_AQSFRC_RLDCSF_PRD BIT(6) -#define TIEHRPWM_AQSFRC_RLDCSF_ZROPRD BIT(7) -#define TIEHRPWM_AQSFRC_RLDCSF_IMDT (BIT(7) | BIT(6)) - -#define TIEHRPWM_AQCSFRC_CSFB_MASK (BIT(3) | BIT(2)) -#define TIEHRPWM_AQCSFRC_CSFB_FRCDIS 0 -#define TIEHRPWM_AQCSFRC_CSFB_FRCLOW BIT(2) -#define TIEHRPWM_AQCSFRC_CSFB_FRCHIGH BIT(3) -#define TIEHRPWM_AQCSFRC_CSFB_DISSWFRC (BIT(3) | BIT(2)) -#define TIEHRPWM_AQCSFRC_CSFA_MASK (BIT(1) | BIT(0)) -#define TIEHRPWM_AQCSFRC_CSFA_FRCDIS 0 -#define TIEHRPWM_AQCSFRC_CSFA_FRCLOW BIT(0) -#define TIEHRPWM_AQCSFRC_CSFA_FRCHIGH BIT(1) -#define TIEHRPWM_AQCSFRC_CSFA_DISSWFRC (BIT(1) | BIT(0)) +#define TIEHRPWM_AQSFRC_RLDCSF_MASK GENMASK(7, 6) +#define TIEHRPWM_AQSFRC_RLDCSF_ZRO FIELD_PREP(TIEHRPWM_AQSFRC_RLDCSF_MASK= , 0) +#define TIEHRPWM_AQSFRC_RLDCSF_PRD FIELD_PREP(TIEHRPWM_AQSFRC_RLDCSF_MASK= , 1) +#define TIEHRPWM_AQSFRC_RLDCSF_ZROPRD FIELD_PREP(TIEHRPWM_AQSFRC_RLDCSF_M= ASK, 2) +#define TIEHRPWM_AQSFRC_RLDCSF_IMDT FIELD_PREP(TIEHRPWM_AQSFRC_RLDCSF_MAS= K, 3) + +#define TIEHRPWM_AQCSFRC_CSFB_MASK GENMASK(3, 2) +#define TIEHRPWM_AQCSFRC_CSFB_FRCDIS FIELD_PREP(TIEHRPWM_AQCSFRC_CSFB_MAS= K, 0) +#define TIEHRPWM_AQCSFRC_CSFB_FRCLOW FIELD_PREP(TIEHRPWM_AQCSFRC_CSFB_MAS= K, 1) +#define TIEHRPWM_AQCSFRC_CSFB_FRCHIGH FIELD_PREP(TIEHRPWM_AQCSFRC_CSFB_MA= SK, 2) +#define TIEHRPWM_AQCSFRC_CSFB_DISSWFRC FIELD_PREP(TIEHRPWM_AQCSFRC_CSFB_M= ASK, 3) + +#define TIEHRPWM_AQCSFRC_CSFA_MASK GENMASK(1, 0) +#define TIEHRPWM_AQCSFRC_CSFA_FRCDIS FIELD_PREP(TIEHRPWM_AQCSFRC_CSFA_MAS= K, 0) +#define TIEHRPWM_AQCSFRC_CSFA_FRCLOW FIELD_PREP(TIEHRPWM_AQCSFRC_CSFA_MAS= K, 1) +#define TIEHRPWM_AQCSFRC_CSFA_FRCHIGH FIELD_PREP(TIEHRPWM_AQCSFRC_CSFA_MA= SK, 2) +#define TIEHRPWM_AQCSFRC_CSFA_DISSWFRC FIELD_PREP(TIEHRPWM_AQCSFRC_CSFA_M= ASK, 3) =20 #define TIEHRPWM_NUM_PWM_CHANNEL 2 /* EHRPWM channels */ =20 --=20 2.43.0 From nobody Mon Dec 1 21:30:50 2025 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (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 8E15E22B5A3 for ; Fri, 28 Nov 2025 00:39:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290344; cv=none; b=gXDeeFIW1BHV+jE8mWB40Vrxiu2nFkQPErHYSuVdJbGGjwUNtteUzMtCEJNXLyUeVmDWwnW0kqV70YXPIMF+/2h7/6zLghQHNt1bKufvjfLo0y/xS99QF18CDuToiJCx4QEa4KPQhGH7qABSuFYNGCSX371JZ7GUZ6IDh8eigZE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290344; c=relaxed/simple; bh=XcYxuRkbMSMmuYTP8YMtFe+YyYOjM9ZCAbhwFZWTHDQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=K9+WSPyabm6AOgt2Hah2Ae7HA8vdAcvxw6OXFQsBUbOxVVXZUenZ/dxntTbZ9L4TSWltmfdZ4uJ3Or8KbeMsP1W89DJLeEWuYF1zVtbLITdLXJABfiC5Yon+5ggz3VXTcQKKAu9LpdIPyXZt46dlmN0ewqeqbuquVqyubJ6oJEg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dU2TJw3s; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dU2TJw3s" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-7a9c64dfa8aso1066668b3a.3 for ; Thu, 27 Nov 2025 16:39:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764290341; x=1764895141; 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=3m55KX3612XXkHw/M8fDHwtC9cUcyqT3pIXf0q1wbKI=; b=dU2TJw3srcBY4QTSMsy4bOUbZU3UjzqtrGa1RJFlCUPXJMNbKtCiGnYFq5H22spjG5 2wX6McH/wPxDDbQzmTaZFs+a169vTpFJ85w1xQ03a3i3QMs/WHFjVhb4+zbUo5CeJcQE VygnLbOKVXSszTkPUCQw0kSY8p9j31R9cpRzOGQVxzIS6c1fwQTG2UXixIe7XSy2fQaQ xWmV6QnXu+zcTKU80HN3s3hhUnYgLhuM3b78+YzUWoCquY0RkJwTktc+zX1ZjLzVIxq0 l1RgZO4weFM14+bf+kKSfNJHHM4/ohTSrck22LMz6Pw5Nfu1KF/N6NbRYfU4TWwI9dHj ozRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764290341; x=1764895141; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=3m55KX3612XXkHw/M8fDHwtC9cUcyqT3pIXf0q1wbKI=; b=FWH64QCUqNd7ud4FizfoHWLBwwTRJeNscTQ95gb+LzIWJuSoISZrc7Yi7bZpc5Bv2b jFs7Dgeh63XZFD6/vGa3rEfG4w8axUvxJyHtK9QqaYyqp6rtl1leyB+4JJFC/7iJpwua 2bkiVs5xx8Q7qytV5toxymiJULSFgx84ZmlJKtlx4DiauIB/58V+afqbOpa7Uv+qJr8l MurSH2oJs5P3k09R5b+sXclBoIs7XlPPilpKUAmLloC7AiEhLtGIDDBMeGNrp1wV037e qHTTuYXNfLmWg3ALDNhREOHGlI4RNk1iDmuREfYj5uWV0VX7q6UDC46pR28P19Mw2MeN HpYQ== X-Gm-Message-State: AOJu0YzKYobEZ4HjOPZMYuD67Nbpqx4F3hwWsp6X8XJVnw3DbYLxQYhZ SB8xFGAOyYftwK9XbNq9EG9gsNwLZAggjIxGBqzjiIy4w0y9aijQQ9Zp X-Gm-Gg: ASbGncsMMW+Dr9fjM0IqNS3t6EsUKVesS9eS7mXq8YqDLuRFPpUW585WFEGU9iOwul/ q2Y+H6PVK/YONlKI+IVSOuiTDcveAqi8ndheTINDDbz5R9Arl1UeyRLWVQlnQhTF/pikpX+L7+1 G4WmK3QZr2GEkEDRIPii15AQKm2QbotFoARI9CsDvKjssIHXtzzKrkPsBP/3r0C278OLgHkl5YJ aXlVWptSTVmkxkeXHmnf1Mre05t66Jbm2LS3MLaEO/+76jcjNAYSCQmhEWUZjijy0iVRMp95SxD GDR3xAkMfZ1Fe3sM2Pd6kS8fZC1dIPvy/IRUv0WUIHAPcPiptUD+/Arx86NZnKqj3s4Mb2tFw5b B5Z5yqWuq+7T4iBMRsGU4aFnLedNNjSXXWIXAVR3kZmYSDifkzRvmWGkHZLMuFCjxa7aSrt3h9G eyMliRl5qrMfzTbHkMEBtj+Pkw4jk61ZKNWwe/2R9QoyY= X-Google-Smtp-Source: AGHT+IGC4C2OgJTsiIUdA0q3wwE6Lz47PE6qPSYvxBvdGl77cHEpD66qLHgLZop5EYDl/xrIDZ2zcQ== X-Received: by 2002:a05:7022:e803:b0:11b:8b4b:bff7 with SMTP id a92af1059eb24-11cbba71950mr9482927c88.39.1764290340780; Thu, 27 Nov 2025 16:39:00 -0800 (PST) Received: from ParadiseLost.localdomain (lohr.com.br. [177.69.253.233]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcaee7076sm12404561c88.4.2025.11.27.16.38.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 16:39:00 -0800 (PST) From: "Rafael V. Volkmer" To: ukleinek@kernel.org Cc: linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, rafael.v.volkmer@gmail.com Subject: [PATCH v7 4/9] pwm: tiehrpwm: derive PERIOD_MAX from TBPRD field Date: Thu, 27 Nov 2025 21:36:29 -0300 Message-ID: <20251128003634.247529-5-rafael.v.volkmer@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> References: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace the open-coded PERIOD_MAX constant (0x10000) with a definition derived from the TBPRD field layout. Introduce TIEHRPWM_TBPRD_TBPRD to describe the 16-bit TBPRD field and compute TIEHRPWM_PERIOD_MAX as FIELD_MAX(TIEHRPWM_TBPRD_TBPRD) + 1. This keeps the effective upper bound unchanged while tying it directly to the hardware register layout instead of a hard-coded literal. No functional change intended. Signed-off-by: Rafael V. Volkmer --- drivers/pwm/pwm-tiehrpwm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index 0802f0553587..4b8b4a9e7379 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c @@ -38,7 +38,9 @@ =20 #define TIEHRPWM_CLKDIV_MAX 7 #define TIEHRPWM_HSPCLKDIV_MAX 7 -#define TIEHRPWM_PERIOD_MAX 0x10000 + +#define TIEHRPWM_TBPRD_TBPRD GENMASK(15, 0) +#define TIEHRPWM_PERIOD_MAX (FIELD_MAX(TIEHRPWM_TBPRD_TBPRD) + 1) =20 /* compare module registers */ #define TIEHRPWM_CMPA 0x12 --=20 2.43.0 From nobody Mon Dec 1 21:30:50 2025 Received: from mail-dl1-f53.google.com (mail-dl1-f53.google.com [74.125.82.53]) (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 2C40023185D for ; Fri, 28 Nov 2025 00:39:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290346; cv=none; b=FAClmD4WuX2C8yjQ9h3YMwOJP2NWtZBgz2qz1kUqMclKDTTXaiu5af6Ve3Gt50xCSYiLXrhhB1Ga7dLp3p+oUJCpGp5wbSo7v4KzPiaxLBWkrF9hyjGeMwBZuXLAeLXwZjupNf5snbGKuFHMOYiGyJPxpXUKXbs8gCMXMdumESY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290346; c=relaxed/simple; bh=OSim1mj9HkSTe46cFg4rOkLc0yUfhq8IhSvph0dkAAM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nhgdtu9JHu/cFD4KOSCrqsfKAryhL0Hwoq4/fJwBh05U+KfztJb+zxbB8c+RH8gTS8C/VtIzDZlQ6SL5E1hYNKA1rEVt0Ldcs2P3hHC2giQzy6zU8y4tnGU9s71vSTsLJtopCzE8lkTOBFylC1mUFjoLb3EQPDvu08UX+SyIkHU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=L8UvmslD; arc=none smtp.client-ip=74.125.82.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="L8UvmslD" Received: by mail-dl1-f53.google.com with SMTP id a92af1059eb24-11beb0a7bd6so2602341c88.1 for ; Thu, 27 Nov 2025 16:39:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764290344; x=1764895144; 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=afOk1ITr+hgg7p4RIrqg51cCVfFBtTkqq0M/4LUt7uo=; b=L8UvmslD3fd3bSbhWrunjz3CO1hEf4yuyNX1j+NssbDyWmUoyIPrPANbHjVtMf5slS LsOZsww5Sd3yhB4q/Tp2zP7BAh3HpsEanpTfJmwuxPEDjEV8XJ3UeQ9+8YRQB+4ytI/S tOgP6BPA9vJMrhJSe6tHr7vDkqkSosm/VvNIjWFixJMDulpD0pA0JOpVGxlU+i5dh+EM 3Rd+xSUviS8w3BzQDTOBum8oXP+5as3MyLNMmxTqQ/t7SMGoLMFWSPMHvswIAjwYF6Hx mGAjsZR9BDg6cIvNNq4x7Cjitwl39cwZq5BUwhToEQZWlr6LA36pEZayzi+sROLDcCBn fBpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764290344; x=1764895144; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=afOk1ITr+hgg7p4RIrqg51cCVfFBtTkqq0M/4LUt7uo=; b=J8kmAErOj+uwiO8B4nHpAMqzezF+1yfuO4LPWwEYtUY3KrJivuOY+EiYo8elQkBpk9 v9ywh80mM93v4vu5Ggw8ul8SLV5WlINYNG0q8ceRFyDjApzmdU947EI7FKhPeaPpaVyu DuDxapRButCXxZZtK0SgW+TycdvxbZY83DX8kVNsGcih1eJWTNYCHKE4xtk1C6R4/d75 8Gwprk+oEeo70qrVpIjQ8uvzZEjqtpP8cJJdxbD6Ng/h7XRp0vXh3BfkbfZWLk/hriUn ejC8D/1pxWno0ad1A+8LjcuLieN5WiBV9CElWBEl0Ck4Ti4ja+S8TSLLad34V+0L9iBg 9Cpw== X-Gm-Message-State: AOJu0YxXc/kfAic2nuW3s2IiGCJevY7Bd8ouQ+kqxRrvnJP307uAjHvP dwHiD718olARQDsoDLBbZ3JJEGMJSm/hdGS+fD0KAdsHE8KQNFf8F6mh X-Gm-Gg: ASbGncvV54JHyfkPn2OIsq9767fISaY6qapkwkV9fW5Lk/Aa1oJxwkcCErHvB4cd+yD /MVnhgFc5HQJUPdKvGbwNp+kjmkU+n+Q471C6su4R6tIEw/N4EOBvXCtLMffOTVdSLU/X8s1yY9 6lQjPR5TbmjDShHYQQwMoNr8r1KG1rPOAg+MwvoSZSVbrMXA72qYqLaneNKI5BmyzKYz17206j3 KyKAZtHaE7whX5smp/PPtXdIPbG4VZHUeAGiENyDtK5uIN0/tppelXKT50pEkf+KP/vjvonBjKz E+2K5o0hWLkpTXLtGJpyq5o3JR6fVyU2ZII0P9pIhDeNUBPROpvkCyYlOkfqmNnbqAAp87fL6pg Dz0aWOvgvzq6/1wYTjOc8wvyxzBcjd5RIsWJl63q0RSxmyR3WvQ96O9qwhDXvV51xI67cRJSGkl zwnJb+virBCKg3XBqmVrZGZI6MGHG3Z546Mkc9RB9m+jkYbzzTdmQlIg== X-Google-Smtp-Source: AGHT+IFT8RsjgV6EDZ8DwSkn6xgloOqqY5oHeZflkVbmSve7CDF6qj9GaFa5/HSngXC5dIgtO9Drrg== X-Received: by 2002:a05:7022:a93:b0:11b:a738:65b2 with SMTP id a92af1059eb24-11c94aefcabmr20854764c88.5.1764290344092; Thu, 27 Nov 2025 16:39:04 -0800 (PST) Received: from ParadiseLost.localdomain (lohr.com.br. [177.69.253.233]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcaee7076sm12404561c88.4.2025.11.27.16.39.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 16:39:03 -0800 (PST) From: "Rafael V. Volkmer" To: ukleinek@kernel.org Cc: linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, rafael.v.volkmer@gmail.com Subject: [PATCH v7 5/9] pwm: tiehrpwm: use FIELD_PREP() for prescaler fields Date: Thu, 27 Nov 2025 21:36:30 -0300 Message-ID: <20251128003634.247529-6-rafael.v.volkmer@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> References: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Refactor TBCTL prescaler handling to use GENMASK() and FIELD_PREP() instead of open-coded shifts. Split the prescaler bits into TIEHRPWM_TBCTL_CLKDIV_MASK and TIEHRPWM_TBCTL_HSPCLKDIV_MASK and introduce TIEHRPWM_TBCTL_PRESCALE_MASK to cover both fields. Use FIELD_PREP() in set_prescale_div() to build the prescaler value, and update ehrpwm_modify() to clear and program both fields in a single call. The removed *_SHIFT macros are no longer needed. No functional change intended. Signed-off-by: Rafael V. Volkmer --- drivers/pwm/pwm-tiehrpwm.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index 4b8b4a9e7379..41af1bf74cbb 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c @@ -25,7 +25,10 @@ #define TIEHRPWM_TBCTL_PRDLD_SHDW FIELD_PREP(TIEHRPWM_TBCTL_PRDLD, 0) #define TIEHRPWM_TBCTL_PRDLD_IMDT FIELD_PREP(TIEHRPWM_TBCTL_PRDLD, 1) =20 -#define TIEHRPWM_TBCTL_CLKDIV_MASK GENMASK(12, 7) +#define TIEHRPWM_TBCTL_CLKDIV_MASK GENMASK(12, 10) +#define TIEHRPWM_TBCTL_HSPCLKDIV_MASK GENMASK(9, 7) +#define TIEHRPWM_TBCTL_PRESCALE_MASK (TIEHRPWM_TBCTL_CLKDIV_MASK | \ + TIEHRPWM_TBCTL_HSPCLKDIV_MASK) =20 #define TIEHRPWM_TBCTL_CTRMODE_MASK GENMASK(1, 0) #define TIEHRPWM_TBCTL_CTRMODE_UP FIELD_PREP(TIEHRPWM_TBCTL_CTRMODE_MASK,= 0) @@ -33,9 +36,6 @@ #define TIEHRPWM_TBCTL_CTRMODE_UPDOWN FIELD_PREP(TIEHRPWM_TBCTL_CTRMODE_M= ASK, 2) #define TIEHRPWM_TBCTL_CTRMODE_FREEZE FIELD_PREP(TIEHRPWM_TBCTL_CTRMODE_M= ASK, 3) =20 -#define TIEHRPWM_TBCTL_HSPCLKDIV_SHIFT 7 -#define TIEHRPWM_TBCTL_CLKDIV_SHIFT 10 - #define TIEHRPWM_CLKDIV_MAX 7 #define TIEHRPWM_HSPCLKDIV_MAX 7 =20 @@ -174,8 +174,8 @@ static int set_prescale_div(unsigned long rqst_prescale= r, u16 *prescale_div, *prescale_div =3D (1 << clkdiv) * (hspclkdiv ? (hspclkdiv * 2) : 1); if (*prescale_div >=3D rqst_prescaler) { - *tb_clk_div =3D (clkdiv << TIEHRPWM_TBCTL_CLKDIV_SHIFT) | - (hspclkdiv << TIEHRPWM_TBCTL_HSPCLKDIV_SHIFT); + *tb_clk_div =3D FIELD_PREP(TIEHRPWM_TBCTL_CLKDIV_MASK, clkdiv) | + FIELD_PREP(TIEHRPWM_TBCTL_HSPCLKDIV_MASK, hspclkdiv); return 0; } } @@ -252,7 +252,7 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, str= uct pwm_device *pwm, pm_runtime_get_sync(pwmchip_parent(chip)); =20 /* Update clock prescaler values */ - ehrpwm_modify(pc->mmio_base, TIEHRPWM_TBCTL, TIEHRPWM_TBCTL_CLKDIV_MASK, = tb_divval); + ehrpwm_modify(pc->mmio_base, TIEHRPWM_TBCTL, TIEHRPWM_TBCTL_PRESCALE_MAS= K, tb_divval); =20 if (pwm->hwpwm =3D=3D 1) { /* Channel 1 configured with compare B register */ --=20 2.43.0 From nobody Mon Dec 1 21:30:50 2025 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.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 87D5B2248A4 for ; Fri, 28 Nov 2025 00:39:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290352; cv=none; b=nZKCBB6+9MOl5llwKqS+bFKFHwLu+2/Sn7q1qmj1ppiSbZGjZZFz3iFv1H3PX0GYwQaLgeFcyx9CT/tbYWRzm8ZdtFqoUE/3cw/PPllsiVS0zBFcr52u5ZD3ykftGJolHe4E6rlCqAHrusncUqPQlOWxRmyPnbgZfA9rx9gxFsk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290352; c=relaxed/simple; bh=jMQWy/uoMi5gk0Fuuj5o1OZTmHNchVC5fkgfkjv6DRQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GvwQX4Y94Q7lA2D+TL6Dy0EpPIk+kzsZ0RDttfb/xkSI34Q85KOHCeGB2MNcHnJXPBChV4rFxfYl8hVBEahiNC7QHO4UlkdYkdjH5z1kct1zfOaOaHxH1vXfEeZqBqXy47ErSuLNGOwllHxgfBZneqXCuMsgtZzyb9N5P7QU6Hw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=C0bPtEwe; arc=none smtp.client-ip=209.85.210.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="C0bPtEwe" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-7ad1cd0db3bso1093385b3a.1 for ; Thu, 27 Nov 2025 16:39:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764290350; x=1764895150; 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=5U44lFnDmE4vFYbkkjAO/tncL6KLsRdfshc4d/agkXQ=; b=C0bPtEwe4THX+AER9vSLsbM5/Q2pcROs5ZTom2xx8MTK+zOG9WTkFqfiv0YHnBfndn Q0I1jm53NyNl7e5zmNPfGrqRtCgPtE56kczzgK9odmM//lzDq9AXqOEkvCU27brqfE1E HAMAd1bUmlME3qPzDHIaF4xFOMnSiHdbL9PBNxYftZdHtPvRMDG5WpkErEzXxkvKZFv1 bixDpZxvFtXV6xj+bI2LxbqnDkepIEpACe9b/VeDGt45sIKi4jv84K6bSrgxqc/z5qRz dY9nRDwyXVEwZ654VrLi16NagQdH0j8nDLGQ5mIIqSz+ZDEYsTBcmw+Jd3EuCoFnjSnj 4n7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764290350; x=1764895150; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5U44lFnDmE4vFYbkkjAO/tncL6KLsRdfshc4d/agkXQ=; b=F7ljw7W+XJmuFAj8yLbEF6KqFFG1UufNPwT0iPt0FjTDVffUk7JL+Ne3NM4uvS64Al T0OsmDV7KpwZfpw9pO2mxv0XwR0o2k+4tDp0Ltbm/T5XRe3bQRCGTgDCrR6xqki7llnq GzpycIHx/KdsOEG4/YQCpTkeTpYHlq16xP22j0fRJxwwRv4LttGS5wlEM+Z9lpGvGEjQ UT0Th7ADA+RklUudH5I1g7q2pmJ63vG7XU6eK+fB90kt43d49ctFegutUrl7QbHUCX93 qWPMs+aYphFgp3lSdZE6F6EtSaqwLUcoh7VKUdZ0rWUq68sDL4TycnXbLSYUl/A90MTp xZyA== X-Gm-Message-State: AOJu0YyS8o4l/2IBNI8IkpefNG8snBfeSAnWcz8cW6t4OGKoUvQLEEuF PX7xABhWoPlTcIBIFaGOWxpEMqms9kwQTEGOP/GJwbACLMCQkmm3yue/ X-Gm-Gg: ASbGncu+J/7OV8tel0KRwvO6UBUtvIHk4n27gJanl7J9g/50KjgsmErpr9dqslPNAT+ lFLS74rXSTVMMuIURwTFmKCBVGULdgA1WqBDAiMRIdKC2phnmneuRudg/K4v4twnEE4L+hqBwWB /kzM7Hb56FiKOZE5qzhouIZeN2bDNyS5ofUEH+/xr9d5DxW6BT6pLahXooono8+KTL8AY4l/BmF YLnlZeMk3OQpGdOlwXsMgO2v0mnM8MeX8Gd43HBql1xyZbHhX+w9408zkjD8ebEFdqCYokk4ymu K5lv7SZ1pF2TOvfyxYTwc6kAFWDFCpbqxXt69gM2XuGq9W71Q0qBen1jxJh75gcG1i1JMTQCxHM u//xUBHGNk9dErOy+2/E3eFD7AOMT3sbmXS3OVCofweNDzwd6wG3FwaLSJiNGKg6oQ/FSnFkTWU 5WFXoXgtNqu9Rc69F0VwIUNkufxWlyHSaTgb6en8xqERg= X-Google-Smtp-Source: AGHT+IFJVpv4S+PHsUZO0fZd7u3RtQA0sRNwlQPG0GCPdVN8O/JDq9hwMIyv++I8qyB12qVOpU0ONA== X-Received: by 2002:a05:7022:41a3:b0:119:e56b:98b3 with SMTP id a92af1059eb24-11cbba47b1dmr9942938c88.26.1764290349634; Thu, 27 Nov 2025 16:39:09 -0800 (PST) Received: from ParadiseLost.localdomain (lohr.com.br. [177.69.253.233]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcaee7076sm12404561c88.4.2025.11.27.16.39.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 16:39:09 -0800 (PST) From: "Rafael V. Volkmer" To: ukleinek@kernel.org Cc: linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, rafael.v.volkmer@gmail.com Subject: [PATCH v7 6/9] pwm: tiehrpwm: factor out AQ force codes and polarity presets Date: Thu, 27 Nov 2025 21:36:31 -0300 Message-ID: <20251128003634.247529-7-rafael.v.volkmer@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> References: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Introduce named constants for the Action-Qualifier force action codes and use them to build the CAU/CAD/CBU/CBD/PRD/ZRO bitfield helpers instead of repeating hard-coded numeric values in each field. While at it, split the channel polarity presets into explicit up-count and down-count variants for both channels. This keeps the resulting AQCTL programming unchanged but makes the configuration easier to read and extend. No functional change intended. Signed-off-by: Rafael V. Volkmer --- drivers/pwm/pwm-tiehrpwm.c | 85 +++++++++++++++++++++++++++++--------- 1 file changed, 65 insertions(+), 20 deletions(-) diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index 41af1bf74cbb..e8bcf1ffa770 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c @@ -52,33 +52,78 @@ #define TIEHRPWM_AQSFRC 0x1A #define TIEHRPWM_AQCSFRC 0x1C =20 +/* Action-Qualifier force action codes (per 2-bit field) */ +#define TIEHRPWM_AQCTL_FRCLOW 0x1 +#define TIEHRPWM_AQCTL_FRCHIGH 0x2 +#define TIEHRPWM_AQCTL_FRCTOGGLE 0x3 + +/* Action-Qualifier bitfields for compare/period/zero events */ #define TIEHRPWM_AQCTL_CBU_MASK GENMASK(9, 8) -#define TIEHRPWM_AQCTL_CBU_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_CBU_MASK, 1) -#define TIEHRPWM_AQCTL_CBU_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_CBU_MASK, 2) -#define TIEHRPWM_AQCTL_CBU_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_CBU_MASK, = 3) +#define TIEHRPWM_AQCTL_CBU_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_CBU_MASK, \ + TIEHRPWM_AQCTL_FRCLOW) +#define TIEHRPWM_AQCTL_CBU_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_CBU_MASK, \ + TIEHRPWM_AQCTL_FRCHIGH) +#define TIEHRPWM_AQCTL_CBU_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_CBU_MASK, \ + TIEHRPWM_AQCTL_FRCTOGGLE) + +#define TIEHRPWM_AQCTL_CBD_MASK GENMASK(11, 10) +#define TIEHRPWM_AQCTL_CBD_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_CBD_MASK, \ + TIEHRPWM_AQCTL_FRCLOW) +#define TIEHRPWM_AQCTL_CBD_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_CBD_MASK, \ + TIEHRPWM_AQCTL_FRCHIGH) +#define TIEHRPWM_AQCTL_CBD_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_CBD_MASK, \ + TIEHRPWM_AQCTL_FRCTOGGLE) =20 #define TIEHRPWM_AQCTL_CAU_MASK GENMASK(5, 4) -#define TIEHRPWM_AQCTL_CAU_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_CAU_MASK, 1) -#define TIEHRPWM_AQCTL_CAU_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_CAU_MASK, 2) -#define TIEHRPWM_AQCTL_CAU_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_CAU_MASK, = 3) +#define TIEHRPWM_AQCTL_CAU_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_CAU_MASK, \ + TIEHRPWM_AQCTL_FRCLOW) +#define TIEHRPWM_AQCTL_CAU_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_CAU_MASK, \ + TIEHRPWM_AQCTL_FRCHIGH) +#define TIEHRPWM_AQCTL_CAU_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_CAU_MASK, \ + TIEHRPWM_AQCTL_FRCTOGGLE) + +#define TIEHRPWM_AQCTL_CAD_MASK GENMASK(7, 6) +#define TIEHRPWM_AQCTL_CAD_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_CAD_MASK, \ + TIEHRPWM_AQCTL_FRCLOW) +#define TIEHRPWM_AQCTL_CAD_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_CAD_MASK, \ + TIEHRPWM_AQCTL_FRCHIGH) +#define TIEHRPWM_AQCTL_CAD_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_CAD_MASK, \ + TIEHRPWM_AQCTL_FRCTOGGLE) =20 #define TIEHRPWM_AQCTL_PRD_MASK GENMASK(3, 2) -#define TIEHRPWM_AQCTL_PRD_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_PRD_MASK, 1) -#define TIEHRPWM_AQCTL_PRD_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_PRD_MASK, 2) -#define TIEHRPWM_AQCTL_PRD_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_PRD_MASK, = 3) +#define TIEHRPWM_AQCTL_PRD_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_PRD_MASK, \ + TIEHRPWM_AQCTL_FRCLOW) +#define TIEHRPWM_AQCTL_PRD_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_PRD_MASK, \ + TIEHRPWM_AQCTL_FRCHIGH) +#define TIEHRPWM_AQCTL_PRD_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_PRD_MASK, \ + TIEHRPWM_AQCTL_FRCTOGGLE) =20 #define TIEHRPWM_AQCTL_ZRO_MASK GENMASK(1, 0) -#define TIEHRPWM_AQCTL_ZRO_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_ZRO_MASK, 1) -#define TIEHRPWM_AQCTL_ZRO_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_ZRO_MASK, 2) -#define TIEHRPWM_AQCTL_ZRO_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_ZRO_MASK, = 3) +#define TIEHRPWM_AQCTL_ZRO_FRCLOW FIELD_PREP(TIEHRPWM_AQCTL_ZRO_MASK, \ + TIEHRPWM_AQCTL_FRCLOW) +#define TIEHRPWM_AQCTL_ZRO_FRCHIGH FIELD_PREP(TIEHRPWM_AQCTL_ZRO_MASK, \ + TIEHRPWM_AQCTL_FRCHIGH) +#define TIEHRPWM_AQCTL_ZRO_FRCTOGGLE FIELD_PREP(TIEHRPWM_AQCTL_ZRO_MASK, \ + TIEHRPWM_AQCTL_FRCTOGGLE) + +/* Action-Qualifier polarity presets for up-count mode */ +#define TIEHRPWM_AQCTL_CHA_UP_POLNORMAL (TIEHRPWM_AQCTL_CAU_FRCLOW | \ + TIEHRPWM_AQCTL_ZRO_FRCHIGH) +#define TIEHRPWM_AQCTL_CHA_UP_POLINVERSE (TIEHRPWM_AQCTL_CAU_FRCHIGH | \ + TIEHRPWM_AQCTL_ZRO_FRCLOW) +#define TIEHRPWM_AQCTL_CHB_UP_POLNORMAL (TIEHRPWM_AQCTL_CBU_FRCLOW | \ + TIEHRPWM_AQCTL_ZRO_FRCHIGH) +#define TIEHRPWM_AQCTL_CHB_UP_POLINVERSE (TIEHRPWM_AQCTL_CBU_FRCHIGH | \ + TIEHRPWM_AQCTL_ZRO_FRCLOW) =20 -#define TIEHRPWM_AQCTL_CHANA_POLNORMAL (TIEHRPWM_AQCTL_CAU_FRCLOW | \ +/* Action-Qualifier polarity presets for down-count mode */ +#define TIEHRPWM_AQCTL_CHA_DN_POLNORMAL (TIEHRPWM_AQCTL_CAU_FRCLOW | \ TIEHRPWM_AQCTL_ZRO_FRCHIGH) -#define TIEHRPWM_AQCTL_CHANA_POLINVERSED (TIEHRPWM_AQCTL_CAU_FRCHIGH | \ +#define TIEHRPWM_AQCTL_CHA_DN_POLINVERSE (TIEHRPWM_AQCTL_CAU_FRCHIGH | \ TIEHRPWM_AQCTL_ZRO_FRCLOW) -#define TIEHRPWM_AQCTL_CHANB_POLNORMAL (TIEHRPWM_AQCTL_CBU_FRCLOW | \ +#define TIEHRPWM_AQCTL_CHB_DN_POLNORMAL (TIEHRPWM_AQCTL_CBU_FRCLOW | \ TIEHRPWM_AQCTL_ZRO_FRCHIGH) -#define TIEHRPWM_AQCTL_CHANB_POLINVERSED (TIEHRPWM_AQCTL_CBU_FRCHIGH | \ +#define TIEHRPWM_AQCTL_CHB_DN_POLINVERSE (TIEHRPWM_AQCTL_CBU_FRCHIGH | \ TIEHRPWM_AQCTL_ZRO_FRCLOW) =20 #define TIEHRPWM_AQSFRC_RLDCSF_MASK GENMASK(7, 6) @@ -262,9 +307,9 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, str= uct pwm_device *pwm, aqctl_mask =3D TIEHRPWM_AQCTL_CBU_MASK; =20 if (polarity =3D=3D PWM_POLARITY_INVERSED) - aqctl_val =3D TIEHRPWM_AQCTL_CHANB_POLINVERSED; + aqctl_val =3D TIEHRPWM_AQCTL_CHB_UP_POLINVERSE; else - aqctl_val =3D TIEHRPWM_AQCTL_CHANB_POLNORMAL; + aqctl_val =3D TIEHRPWM_AQCTL_CHB_UP_POLNORMAL; =20 /* if duty_cycle is big, don't toggle on CBU */ if (duty_cycles > period_cycles) @@ -278,9 +323,9 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, str= uct pwm_device *pwm, aqctl_mask =3D TIEHRPWM_AQCTL_CAU_MASK; =20 if (polarity =3D=3D PWM_POLARITY_INVERSED) - aqctl_val =3D TIEHRPWM_AQCTL_CHANA_POLINVERSED; + aqctl_val =3D TIEHRPWM_AQCTL_CHA_UP_POLINVERSE; else - aqctl_val =3D TIEHRPWM_AQCTL_CHANA_POLNORMAL; + aqctl_val =3D TIEHRPWM_AQCTL_CHA_UP_POLNORMAL; =20 /* if duty_cycle is big, don't toggle on CAU */ if (duty_cycles > period_cycles) --=20 2.43.0 From nobody Mon Dec 1 21:30:50 2025 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.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 2C7541E260C for ; Fri, 28 Nov 2025 00:39:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290354; cv=none; b=fjtlQQoExOxNU7e6G7Mg7FUlSW6ppf+CcfnOkTtqmaU31bbVQGIOdePTp/w2e8QaHthCpFCLWHHXjgcHpVjAzMxxN0Elaq50ESj3uUeOuUzoAuNEXsayHr8HNjoRyYTBrqkrLrwM2Mk9ExCzz/BbW7DRldhiLaNKEztm9g9MJUQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290354; c=relaxed/simple; bh=0934+bSiJ2Z4mXmDX3e0h4Pf0OOK+y99hv9QA/noWsg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=q7q1lD7QbdtNQp7U8gsHvF5K0OAgvPxYHj1NLxbqXrF+TB6vxxOARmHxtaeNyhLskeECTbunFqTTtw2APPU25uzfA0/uNbYtW4MRgUadVRc7MriGdav9rbD1M/H6qIm7e2Rns2qpJXlpJZaqXPBTn1a+F/nXCgPOGroP7My4cUQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RejUQTOP; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RejUQTOP" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-298456bb53aso15631635ad.0 for ; Thu, 27 Nov 2025 16:39:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764290352; x=1764895152; 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=+aA/LsEslWvpzWKeQJ38j/1AaTOTXSkciWttBYTw580=; b=RejUQTOPl/T4ZKIMMro05OtkstTUJtGkFJOiwBxVsoQINxNvbNiAL+n8hTpCJHz+yG rR3Bf0W/DZqbpzTK0GSUrOAN8URVOrcycOTdBS3PjS7HM5s/wC3vRooglKtn0TNuqVEy V0pyxiPMVG6CFjXTYTmyhK92oDfkOkS6fBwI+buswOQ7DhpH9Gt769s2KwF9zdi1Eu1f F03dAaeccdz8VJ1JgKSFMRnpkP81exyqYdt+Jpr8Y/ZyGm3qNa1LhlhNzdT+in/9E789 Te9BLKWKebHInO86kREeckWBuBYTq/pY4A4i5Q/7CCEFvFssJ3C3HPCl1rdkr/gFGn/R ACmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764290352; x=1764895152; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=+aA/LsEslWvpzWKeQJ38j/1AaTOTXSkciWttBYTw580=; b=E5EEU9S6dLgyQY/LzZd8MprMVj5MTR4I4WMpzQegR0KgmvbzVHqj2WzccxW/pYiF8q B/OnPFxuLBVPc+Y/7plnm0DDwtitNRsSo/ib/67zr3QQQv3fbts45eFqoIPVga/WiGls QLo3+tHRp479eRJELku2WBJxE842W6RxSMxwMCgEchEckMnzsT9VoTif4oGjCszhGuMg NczB0HAw2pAuKB7Bzuhj5prGdH5Vena5VFMv3XTglXBhR8hLdkVK0MgIZLu/lpRltqx4 rtZPlVMzmNNMZbM6HJ9PvSy/DIWI6GLr2rd0/hMdwUK7svAQ/85VcwwJsamwhtKprBHe UZzA== X-Gm-Message-State: AOJu0YwsrmI9i5vOcOymDHu77GEdKJS52lfVWmyGfq+GOpnFCVtXa8eV 9IOgi61WPahY9/tsOqOr/kWkwzjUnaljace8BvxbxICjD7k/Hbz6pqUv X-Gm-Gg: ASbGncs8GI4E61sQTl40vhovrykL6Q1ZP3QYctYhjK61gWMzCBVlrZ/5gnZtk1b9GmB QdHiUi/ROTiLATlp2c78Wn668gUig69vcEKQFrhDl8zTMQv7PNRT3zH0wIZgqlaTc1rK1yKRvGa rkOrjInPF62stZVHll8rVzfHAhY0oiXIRWEWulGdEN12NBH/utYKSwqIJPYuVXa09V5EofDNpXo VO4pJiPCLwxpJyj0CgCSkfiy4weRp9kHQ/uyyY8pbaRy/6C8LxQYmtPfHyrAJUrfpUD5H2kIzGB B2jS04pF1g97u9qdk0SlU6uk4S8P+KCvg5Mzx5fzlg1bbdMsTfDbvQypuBPIYEnTlhn7Nhm1LWo bMTI84ZsebglpaUuI8CXbQp8KX8CFVUeEMu47E2aoGrIj09I1M4zMTgF5cY+AAIts/qH6VT8WZp C/jroDv7sqz7fo2w0/j19DsPCZwkYrQ54g/hQML5WrjkI= X-Google-Smtp-Source: AGHT+IEjlnoNTocDociQAHaL+fpeL4UggyTSu4BsSzWnQSPn4DTOBaikAJJV5wm877D240rjdfSe4Q== X-Received: by 2002:a05:7022:218:b0:11c:b3ae:c9f1 with SMTP id a92af1059eb24-11cb3aecb16mr9003587c88.1.1764290352343; Thu, 27 Nov 2025 16:39:12 -0800 (PST) Received: from ParadiseLost.localdomain (lohr.com.br. [177.69.253.233]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcaee7076sm12404561c88.4.2025.11.27.16.39.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 16:39:11 -0800 (PST) From: "Rafael V. Volkmer" To: ukleinek@kernel.org Cc: linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, rafael.v.volkmer@gmail.com Subject: [PATCH v7 7/9] pwm: tiehrpwm: unify AQ setup and cover compare-down events Date: Thu, 27 Nov 2025 21:36:32 -0300 Message-ID: <20251128003634.247529-8-rafael.v.volkmer@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> References: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Refactor ehrpwm_pwm_config() to share the Action-Qualifier setup between channels A and B. Select the channel-specific compare register, AQCTL register and polarity presets (up/down, normal/inverse) once, then derive the AQCTL value from the requested polarity. While doing so, extend the AQCTL mask to include both up- and down-compare fields (CAU/CAD for channel A, CBU/CBD for channel B) and clear all compare actions when the duty cycle exceeds the period, instead of only masking CAU/CBU. For the currently used up-count mode this does not change the effective output waveform, but it keeps the compare-down configuration consistent with the compare-up presets and makes the logic easier to extend (e.g. to up-down modes) in future changes. No functional change intended. Signed-off-by: Rafael V. Volkmer --- drivers/pwm/pwm-tiehrpwm.c | 52 ++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index e8bcf1ffa770..6a792faa62ce 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c @@ -242,6 +242,8 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, str= uct pwm_device *pwm, unsigned int i, cmp_reg; unsigned long long c; u16 aqctl_val, aqctl_mask; + u16 up_normal, up_inverse; + u16 dn_normal, dn_inverse; unsigned int aqctl_reg; =20 if (period_ns > NSEC_PER_SEC) @@ -299,39 +301,39 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, s= truct pwm_device *pwm, /* Update clock prescaler values */ ehrpwm_modify(pc->mmio_base, TIEHRPWM_TBCTL, TIEHRPWM_TBCTL_PRESCALE_MAS= K, tb_divval); =20 + /* Select channel-specific registers and presets once */ if (pwm->hwpwm =3D=3D 1) { - /* Channel 1 configured with compare B register */ - cmp_reg =3D TIEHRPWM_CMPB; - + /* Channel B uses CMPB and AQCTLB */ + cmp_reg =3D TIEHRPWM_CMPB; aqctl_reg =3D TIEHRPWM_AQCTLB; - aqctl_mask =3D TIEHRPWM_AQCTL_CBU_MASK; - - if (polarity =3D=3D PWM_POLARITY_INVERSED) - aqctl_val =3D TIEHRPWM_AQCTL_CHB_UP_POLINVERSE; - else - aqctl_val =3D TIEHRPWM_AQCTL_CHB_UP_POLNORMAL; - - /* if duty_cycle is big, don't toggle on CBU */ - if (duty_cycles > period_cycles) - aqctl_val &=3D ~TIEHRPWM_AQCTL_CBU_MASK; + aqctl_mask =3D TIEHRPWM_AQCTL_CBU_MASK | TIEHRPWM_AQCTL_CBD_MASK; =20 + up_normal =3D TIEHRPWM_AQCTL_CHB_UP_POLNORMAL; + up_inverse =3D TIEHRPWM_AQCTL_CHB_UP_POLINVERSE; + dn_normal =3D TIEHRPWM_AQCTL_CHB_DN_POLNORMAL; + dn_inverse =3D TIEHRPWM_AQCTL_CHB_DN_POLINVERSE; } else { - /* Channel 0 configured with compare A register */ - cmp_reg =3D TIEHRPWM_CMPA; - + /* Channel A uses CMPA and AQCTLA */ + cmp_reg =3D TIEHRPWM_CMPA; aqctl_reg =3D TIEHRPWM_AQCTLA; - aqctl_mask =3D TIEHRPWM_AQCTL_CAU_MASK; + aqctl_mask =3D TIEHRPWM_AQCTL_CAU_MASK | TIEHRPWM_AQCTL_CAD_MASK; =20 - if (polarity =3D=3D PWM_POLARITY_INVERSED) - aqctl_val =3D TIEHRPWM_AQCTL_CHA_UP_POLINVERSE; - else - aqctl_val =3D TIEHRPWM_AQCTL_CHA_UP_POLNORMAL; - - /* if duty_cycle is big, don't toggle on CAU */ - if (duty_cycles > period_cycles) - aqctl_val &=3D ~TIEHRPWM_AQCTL_CAU_MASK; + up_normal =3D TIEHRPWM_AQCTL_CHA_UP_POLNORMAL; + up_inverse =3D TIEHRPWM_AQCTL_CHA_UP_POLINVERSE; + dn_normal =3D TIEHRPWM_AQCTL_CHA_DN_POLNORMAL; + dn_inverse =3D TIEHRPWM_AQCTL_CHA_DN_POLINVERSE; } =20 + /* Select polarity (up + down) */ + if (polarity =3D=3D PWM_POLARITY_INVERSED) + aqctl_val =3D up_inverse | dn_inverse; + else + aqctl_val =3D up_normal | dn_normal; + + /* If duty is larger than period, don't toggle on compare events */ + if (duty_cycles > period_cycles) + aqctl_val &=3D ~aqctl_mask; + aqctl_mask |=3D TIEHRPWM_AQCTL_PRD_MASK | TIEHRPWM_AQCTL_ZRO_MASK; ehrpwm_modify(pc->mmio_base, aqctl_reg, aqctl_mask, aqctl_val); =20 --=20 2.43.0 From nobody Mon Dec 1 21:30:50 2025 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (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 BDB7423F429 for ; Fri, 28 Nov 2025 00:39:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290358; cv=none; b=axITgpDCtfdZ55pcAv7BhSsctsBnrkJ4W7wZXEYwbJyCRO7BKntFbgYXMpCE4BOVtioHfQE4UoS1ZGT/N9ophZdeaB9J9lrohgQo8CHb+2fMV+0V21o3hdbXTkTkoS46vX/0i9YgoRreRs8HFDDU1zwJDT3VFAHN5XgHhVq6O5M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290358; c=relaxed/simple; bh=WOq1YW7wq3HS5+cHcKixizRdQWiy6j/4QvFIRjT0MJ0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FINrT58fYgkAE0A33tQxjK8n1nGli9byRDuZtLICHcSEvUtQIv1BflJkCkRX/h8ujVbtSkCSCQUzQucpm/1uxvKbtOHaUhcOaS7UHgtV6JpEJxW6dw6nZkGacH7JRPi89PZ/LipugV0HMWc6gwfzvd+LILSCcx6DH7JtjG007/s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iqPtUlca; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iqPtUlca" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-7ba92341f83so2090975b3a.0 for ; Thu, 27 Nov 2025 16:39:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764290355; x=1764895155; 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=J/YQHSdmYKHhmDGGPEMrdtR1A+cTvuvC4LJ1tGjv8I8=; b=iqPtUlcaKRWyQRCY4+3xRuIy6eNlGmtr0dendtoMaaZyEZRiMX8nNudLFANW9M+mDT NbCWM3bVN+cGoqiNCUKVWZlWXYnu5wQW59/XT9MayUDeG+HX67J0mwdmvyUJrG1Tk5rY xFJeLYSKFXEGphvoTnwVKvLwVG832CFX5AHAe2idJWx+bZZtY7CZDWWS/41yQGxiILdL 7Z4sD8C4Q+NbuEjqktQFIqPtYWp1kfXIVAuCE3hdO/LVD4SFhgGm6fxyHM9CSiiDO7H2 ID5c5fEEwZE15kek/iNSKQ2FGEj9AMOc+twnJxXwjTevyxWaaoHh7IIu2CPIAoEvnz3v Z4ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764290355; x=1764895155; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=J/YQHSdmYKHhmDGGPEMrdtR1A+cTvuvC4LJ1tGjv8I8=; b=RxrvNebQcyu9tsu3fW/4g+egK4I0aZggiZaDq2btGqhf1aYB30SRR6LmSdJPWwPhPm AZNEUkhF1evI2TPpswTGQ6JTBTSFl3US0fARODaFO5/U+Y8BBOXKv1KgCkfLidKjXXho q5TNmEUXzAIowNMFkGYFV7oQ8YJu+pfHupfXXjWhpayqe4w32XdhcyhoVcqc/2POlY7w sToF0XoqaXIjh6TC/HuGMNBJek4pZztZdhv95n4dNjPupbk1iE7TQZimclxgaGWZGL0t GbZW15tLtgy3qOD0I+0IcaohgtFJDYw3fo4ZdJ/ctyfEPfArCiHIDnUWrIvbAQhOnAVC lbIg== X-Gm-Message-State: AOJu0YyWVbmhHSFFhS0AJsQoHVW6Ymh1Gybjl/MIYow3jUlG8DpKjrki wGBWGzJQfScgVthwFsM3QytsDEBO9zwZBJnfyKqOvMnOe1i7bo/foSAB X-Gm-Gg: ASbGncua+rU9AAcZ2g0/3LgnJ5yX0UhA7cV9LHoG+uUFfWw7+rRKAEx6Jr36DQmdM8y nfnMrtfn8+m82pVaIL0CCOpqUbXWMx3AOPGXzjDJfaeZolRVwFpORNYzGeC4uMEECqeUMf9NaYF 5ThRe1Hcfn1b7CQXbeyHNFpbzOcQUWH6gp6JW9y0wH83cNAVwEVa4JjzChtBuWL9AiNeUsiPhJ7 5n6ubAmkXlDdVweJT/WHrUHxTny6gDA3M8/ivuDgoo6kVndFGlJUcb+V9Q7mbRaoBi93hajrhdS c9QL4mywyTuS63y6Qa6URhao91ZLBsZeEZQn84s9QCCDsHmbwACzAjp9kc4Mn6+72em5y13JWRY Zae7J8zka/emlckQWPIhTH+ax/VHwe6bR/XwzuxVJd0+l/x/zdGKA+4cJ+nGWsd7Jp3mxikYrMH YNCg5dphdtTyKLCEq56kfcq14KFElzarOok+rAmwFPt4k= X-Google-Smtp-Source: AGHT+IEv4vdl9lLJTO3HqF/g7Sx2GEZeOVzwQkJqkH1dcL19xrC5/6vw7li43aKHsakF6DHQijeGhg== X-Received: by 2002:a05:701b:2719:b0:11b:9386:7ecd with SMTP id a92af1059eb24-11cbba58da4mr7307599c88.42.1764290354895; Thu, 27 Nov 2025 16:39:14 -0800 (PST) Received: from ParadiseLost.localdomain (lohr.com.br. [177.69.253.233]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcaee7076sm12404561c88.4.2025.11.27.16.39.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 16:39:14 -0800 (PST) From: "Rafael V. Volkmer" To: ukleinek@kernel.org Cc: linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, rafael.v.volkmer@gmail.com Subject: [PATCH v7 8/9] pwm: tiehrpwm: tidy period conflict check Date: Thu, 27 Nov 2025 21:36:33 -0300 Message-ID: <20251128003634.247529-9-rafael.v.volkmer@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> References: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Tidy ehrpwm_pwm_config(): drop redundant parentheses and keep the period conflict condition on a single line to follow kernel style. This change addresses a style warning reported by checkpatch.pl. No functional change intended. Signed-off-by: Rafael V. Volkmer --- drivers/pwm/pwm-tiehrpwm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index 6a792faa62ce..d472d717abca 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c @@ -264,8 +264,7 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, str= uct pwm_device *pwm, * same period register for multiple channels. */ for (i =3D 0; i < TIEHRPWM_NUM_PWM_CHANNEL; i++) { - if (pc->period_cycles[i] && - (pc->period_cycles[i] !=3D period_cycles)) { + if (pc->period_cycles[i] && pc->period_cycles[i] !=3D period_cycles) { /* * Allow channel to reconfigure period if no other * channels being configured. --=20 2.43.0 From nobody Mon Dec 1 21:30:50 2025 Received: from mail-dy1-f175.google.com (mail-dy1-f175.google.com [74.125.82.175]) (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 E6FD735972 for ; Fri, 28 Nov 2025 00:39:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290360; cv=none; b=sXtnVfjzQTdKd8OW4OIPUzGXr91F/3G2z2meht346LsURHOGs22n9L9L69jEgpLLiv9WDt15nTygpq1GtulB9swSdXz4SwYiGAM5NN/xAJFG4Y1kiRtxqt7R8Js5xC5tWh2X/wCij6qTDFfEFwKPvH/2T5Vo3+7G4gBvXiRgu6I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764290360; c=relaxed/simple; bh=a+ErtWdGgzML7jxeerkz3o5bNQ2OjAjVgWc3l2NvJsg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MwJv6qf2KLw48itdKIs6LHZvicY1Vq8XGbl0xL+8y+L2sVktWFFg11t0MRTol5Yrku3kVA9K7e/C8PngAHtXjMLxFxVMRD6p5v6Snd+VoGIzLgmE7kI7SxbKupbwoztSVS0FhB/EwMB+36nXGbbqL7QOimlAYw+NZtrqUkNkPc0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HSaMDjtd; arc=none smtp.client-ip=74.125.82.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HSaMDjtd" Received: by mail-dy1-f175.google.com with SMTP id 5a478bee46e88-2a45877bd5eso3289021eec.0 for ; Thu, 27 Nov 2025 16:39:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764290358; x=1764895158; 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=YJfQ8EGmp2loECfkqUR8E4KO61R5QbpXVzwiV7sg5RE=; b=HSaMDjtdgUyGHvHTtbqRZWbzKWU8m1M6dLln70/qooTRNAH/hulSFiqA8Ny8KoSqnk 2v2igSs5SAa+al3keP1PBeXn8gDznfVrM6iSqu1j93xNQe84lN1O9BNbOedall5GvkCg uCjVwEZFsEJ2AQu/4G5PpFgx247YnDEsAtx+4RZfp//r1l2+9MnGVPxrahwyWWFwU1Fe lZ3LFpqoc5Yo2KzIfyf4pF+ArK1SXggDazqYOF5yf0xzPmx+8bPedQg5oF3tKQ1oAqJ/ /BOYye9B32+wufMMU8qc+jGndFajejh8ef7fmVgtZCMEIpGfHx94jL13Ze0hYJy3AqIJ rFnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764290358; x=1764895158; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YJfQ8EGmp2loECfkqUR8E4KO61R5QbpXVzwiV7sg5RE=; b=LHgBthc4DoEu4ew6K39KRS/+1/emHq3emLA5jnCKoipAsK4v5mhFGp7QIewmdTsYEL LMZeJabqSpY6OldPR2XTlw+eQkwpKkv2pBTQBXSYawKqUn3+h3/DZT0Dtv7VyerusYMn cGE7aH/xwBsNlcdytob7lG5wfx4w1QT2pYWzGVD5Lyl+iCtytft1ItsCXuauq0ZSi3JC pq9sIkI0K00jbgXd5Aj7UEwF5QBpEm04f8FQCiraPA6wRbO+rSURTHet0vUEj8gICM2V Agh4SCp6ZaxH+hjxcuVbEbO0IndxJiWsDbLeRy3+2BnYgp4Ycd84DGjada6/lSakXsg1 +hGQ== X-Gm-Message-State: AOJu0Yzzgbb9KpYiqpJUuJGzwfCzgjWnaodbbh+gZjmuzbr7Et4vjWoj IigNBn7W2eXJzOEmHd+Hx3MmcihgQCTAdyKvz8N4KoDWWOZpVYrHlF0/ X-Gm-Gg: ASbGnct73B56Vf17quNrXTeo+hTsbsm/TVPERX3Zn6OAouoN/Ph1blH//mb/6jd6naL VMWV6L0MTSCax4Lwqmc67yzv82n4ddZUB+wHT/4fUyUvBGkh1/gkAWzY3drCAbBcejV/73KM9kB aboGqk7oBc+yppGVwxUj4pwhdm4HgNEmvLRgGMdRFEs/QdW9Or8SPCG2D3rKO4cBQtkk3kx4vbl BH039tIzvRTtYmS9xaW01styIHskFQKH6a1OHm/Z7PbthZOhGJkjS9OY0w+DcwmADeJuiZvBA1I ofUkSSy52g+d4F0QfWn+hgQDDz45FYhW615fogQKJuzrYnruxGqY0jtU2/kEcpXSS0Xfw9UaOEH gji4VaesLGlw6yTCSV+DbJGExbkaXTeCndtpTksrylulr8129TKV5xap/MoIZITY0r8TpcPpf67 +4mqM0DfesoFv3EEP16likC9BjjlkPZQ4fNf8JSEcYXQo= X-Google-Smtp-Source: AGHT+IGNUwo9ubyy8ujnAFo6D0PFW/JSPgvTWJlI5LVUgs3ky818XTmQwwQ/ozc/xy/VNMrZCtt28A== X-Received: by 2002:a05:7301:4382:b0:2a4:5ff6:4438 with SMTP id 5a478bee46e88-2a6ff5307b5mr12830564eec.1.1764290357568; Thu, 27 Nov 2025 16:39:17 -0800 (PST) Received: from ParadiseLost.localdomain (lohr.com.br. [177.69.253.233]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcaee7076sm12404561c88.4.2025.11.27.16.39.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 16:39:17 -0800 (PST) From: "Rafael V. Volkmer" To: ukleinek@kernel.org Cc: linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, rafael.v.volkmer@gmail.com Subject: [PATCH v7 9/9] pwm: tiehrpwm: handle already-running channels at probe Date: Thu, 27 Nov 2025 21:36:34 -0300 Message-ID: <20251128003634.247529-10-rafael.v.volkmer@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> References: <20251128003634.247529-1-rafael.v.volkmer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Some systems leave eHRPWM outputs running when Linux probes the driver, for example when firmware or the bootloader configured and enabled a channel before handing control to the kernel. So far, the driver always assumed both channels were disabled at probe time and started with zero tbclk and runtime PM references. Teach ehrpwm_pwm_probe() to take a best-effort snapshot of AQCSFRC and AQCTLA/B before touching clocks or runtime PM, and treat channels that are configured and not software-forced in AQCSFRC as "pre-enabled". For each such channel, take one tbclk enable and one pm_runtime_get_sync() reference so that later per-channel enable/disable paths cannot underflow the clock or runtime PM usage counts. If the eHRPWM block is power-gated or its clock is disabled while we probe, the AQ* registers are expected to read back as 0 and the driver will simply treat the instance as fully disabled, preserving the previous behaviour. Error paths unwind both tbclk and runtime PM references per channel to keep the reference counts balanced. This makes tiehrpwm robust when attaching to hardware that is already driving PWM outputs at probe time. Signed-off-by: Rafael V. Volkmer --- drivers/pwm/pwm-tiehrpwm.c | 81 +++++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 6 deletions(-) diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index d472d717abca..b2503a675484 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c @@ -478,13 +478,20 @@ static int ehrpwm_pwm_probe(struct platform_device *p= dev) struct ehrpwm_pwm_chip *pc; struct pwm_chip *chip; struct clk *clk; - int ret; + int ret, ch_idx, ch_disable; + u16 aqcsfrc_reg, aqctla_reg, aqctlb_reg; + bool enabled_ch[TIEHRPWM_NUM_PWM_CHANNEL] =3D { false, false }; =20 chip =3D devm_pwmchip_alloc(&pdev->dev, TIEHRPWM_NUM_PWM_CHANNEL, sizeof(= *pc)); if (IS_ERR(chip)) return PTR_ERR(chip); + pc =3D to_ehrpwm_pwm_chip(chip); =20 + pc->mmio_base =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(pc->mmio_base)) + return PTR_ERR(pc->mmio_base); + clk =3D devm_clk_get(&pdev->dev, "fck"); if (IS_ERR(clk)) { if (of_device_is_compatible(np, "ti,am33xx-ecap")) { @@ -493,6 +500,22 @@ static int ehrpwm_pwm_probe(struct platform_device *pd= ev) } } =20 + /* + * Best-effort snapshot of AQCSFRC/AQCTLx before touching clocks or + * runtime PM. If the eHRPWM block is power-gated or its clock is + * disabled these registers are expected to read as 0, which we + * interpret as "channel not configured / disabled". + */ + aqcsfrc_reg =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_AQCSFRC); + aqctla_reg =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_AQCTLA); + aqctlb_reg =3D ehrpwm_read(pc->mmio_base, TIEHRPWM_AQCTLB); + + if (aqctla_reg !=3D 0 && !FIELD_GET(TIEHRPWM_AQCSFRC_CSFA_MASK, aqcsfrc_r= eg)) + enabled_ch[0] =3D true; + + if (aqctlb_reg !=3D 0 && !FIELD_GET(TIEHRPWM_AQCSFRC_CSFB_MASK, aqcsfrc_r= eg)) + enabled_ch[1] =3D true; + if (IS_ERR(clk)) return dev_err_probe(&pdev->dev, PTR_ERR(clk), "Failed to get fck\n"); =20 @@ -504,10 +527,6 @@ static int ehrpwm_pwm_probe(struct platform_device *pd= ev) =20 chip->ops =3D &ehrpwm_pwm_ops; =20 - pc->mmio_base =3D devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(pc->mmio_base)) - return PTR_ERR(pc->mmio_base); - /* Acquire tbclk for Time Base EHRPWM submodule */ pc->tbclk =3D devm_clk_get(&pdev->dev, "tbclk"); if (IS_ERR(pc->tbclk)) @@ -519,17 +538,67 @@ static int ehrpwm_pwm_probe(struct platform_device *p= dev) return ret; } =20 + /* + * For channels that were already running when we probed, take one + * tbclk enable per channel, so that later per-channel disable paths + * cannot underflow the clock reference count. + */ + for (ch_idx =3D 0; ch_idx < TIEHRPWM_NUM_PWM_CHANNEL; ch_idx++) { + if (enabled_ch[ch_idx]) { + ret =3D clk_enable(pc->tbclk); + if (ret) { + dev_err_probe(&pdev->dev, ret, + "clk_enable(tbclk) failed for ch %d\n", + ch_idx); + + for (ch_disable =3D 0; ch_disable < ch_idx; ch_disable++) { + if (enabled_ch[ch_disable]) + clk_disable(pc->tbclk); + } + + goto err_clk_unprepare; + } + } + } + ret =3D pwmchip_add(chip); if (ret < 0) { dev_err(&pdev->dev, "pwmchip_add() failed: %d\n", ret); - goto err_clk_unprepare; + goto err_disable_tbclk; } =20 platform_set_drvdata(pdev, chip); pm_runtime_enable(&pdev->dev); =20 + /* + * Treat channels that were configured and not software-forced at probe + * time as "pre-enabled": take a runtime PM reference so the eHRPWM block + * stays powered while such channels exist. Consumers still get/put PM + * on top of this bias via pwm_enable()/pwm_disable(). + */ + for (ch_idx =3D 0; ch_idx < TIEHRPWM_NUM_PWM_CHANNEL; ch_idx++) { + if (enabled_ch[ch_idx]) { + ret =3D pm_runtime_get_sync(&pdev->dev); + if (ret < 0) { + for (ch_disable =3D 0; ch_disable <=3D ch_idx; ch_disable++) { + if (enabled_ch[ch_disable]) + pm_runtime_put_noidle(&pdev->dev); + } + + pwmchip_remove(chip); + pm_runtime_disable(&pdev->dev); + goto err_disable_tbclk; + } + } + } + return 0; =20 +err_disable_tbclk: + for (ch_idx =3D 0; ch_idx < TIEHRPWM_NUM_PWM_CHANNEL; ch_idx++) { + if (enabled_ch[ch_idx]) + clk_disable(pc->tbclk); + } err_clk_unprepare: clk_unprepare(pc->tbclk); =20 --=20 2.43.0