From nobody Tue Apr 8 12:54:41 2025 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9205420311 for ; Sat, 5 Apr 2025 09:27:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845262; cv=none; b=rzn9DtTZ34tJKs0gidpC4nx2ZMGGG05n0lc/cDuuQabcEfA18IcxbqPhpXD/b3e9N+bbTm5djfN6JRzvuCn7s7Hme90K2E/SaAPlMO1Z79BumzvtZ3+cpD6j8I73ufej0cBFtDgf+sI+5Ur289HUH+ChT/E92d/uZnF9ZrBprl0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845262; c=relaxed/simple; bh=XTHV/BxyEsvy+/e1D0B3U1SFxzinwxu6RXZECENuXK0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dIVDnhVXya2vMBThrUFlL1Dcdwh666xik+bf7V3V7auFS2X+sEBD9quKJ6JroansPFvr+LbQb6wXw/wUqfGqcbuu9QLfQdfaNm+ZcyCtib9FziA3X2sI/E/ei6EutylLnSioSYGFr6p57Nb5XvFhMBz4Pg1GgygA7EEoh3E8aKU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=CIaqSVi6; arc=none smtp.client-ip=209.85.208.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="CIaqSVi6" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5e8be1bdb7bso4519012a12.0 for ; Sat, 05 Apr 2025 02:27:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743845258; x=1744450058; 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=ZlQ4TT3nPVoe8QQVGOI9fFCYTSHJoW/Kf2xwJnvneTw=; b=CIaqSVi6SYjQ7loT6hwzb+35YzMWeXsLmWmYtBRdTJfDCqj+4l7jEFOAr9/GWFOQBl vNr9o8qgZbvrBhJJDs3N7eB2ueRYs6rM6wXDsH8wb1WWjBPLKgXIqxT3wen9vMuVw7zq 0I8Gy/Cx8/1OK6jWB16INU5/opIG60mp7w61xrUM2VlHx8MUxmB23aoUE/lAUk1z7uuO 3F/WAzajgGnXbL3WNTH6a5CwpyVxjGI9hTi83tzvJsgRWFBvt14MS0sNiEb6hGfUpNu9 IkOsXXn4+KDzYhR/nHWieOAfiC/Undo10sMYf4WHkq3X6fBA6xpz9+VN6pqbfbRWEJ5C q4Zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743845258; x=1744450058; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZlQ4TT3nPVoe8QQVGOI9fFCYTSHJoW/Kf2xwJnvneTw=; b=gE1rCJHWx872iA5XqTNwuk5Cy2QvIwFFlXvXkSEB1wSznDulMKdonh3YCwP/GZzt1s 7E+Q0bNgogqOleiJb0Z8wKIjV1JTYzI1VeBSQaDcaedbnb9hgmw0jdUzk8DHjaCP0rOY FjbdybvkzvdNRwrxxrtqUTT76ZUfmFSWH+yTBm5+X6lK70eNdfdg8k7xBboErW8wFN6u ILNg8Bb8CH8sw0/Kw9yN7RXCThv7cm+tEjJmDdGmhpzEHQL4OHGLqoZ9qjB7j9tT/w4T l9UbfhHMNAOqnA+XivZaVL/2tw6BFDXzSPjqOzR10QoqQ95g/ZftCqDsFyHullV55HF0 IpCw== X-Gm-Message-State: AOJu0YxR2+ELb+joAcLymnsTbnaiNKWitT25LMwRqmEikHOkb9VP02pZ KuMju+j0CXmeAPUNDu1rJR3nnZY/O6YfFyCO0aWjiA1W8I8gGuWCfBlWK0PqHP3CoDQzau9fM9i Y X-Gm-Gg: ASbGncshpiGcahnklks02RnYRPDy5uBIDkvu9y2nLXJLxKnPR9d/3nFLGsc6RhZkHVg Ssg1yrEK3aqXpvvqdDUBbKw1faM8g0UVw8UKetTbkUqz+D8JczitbmS+1CWaAf53Sw3PsWkoq1P WbWOJkRhB48FxDzW7WLcqh2L5CkUuVH5YASeLCoJV6H4Xbda3467VioolOJU3lVAmmXHfgq7RY/ uzEitzyyy1K9W3F4X30rcQszUiF+ITa2P624LRr0XI+pJ23/bPSe2WuUutvJ9Lh0g01hx3vET18 MOIFGlQjLdRLV2joIp+79TvuuF5MHZQ9PiyL6lVZaUU3qoL+6w== X-Google-Smtp-Source: AGHT+IEXvmhmbIbbkjCi3hawdQL0SQlUYAdL8aKJgHcQ+8J2SwQbWTSlVJxLO/kiivFzTBaI65uI9g== X-Received: by 2002:a17:906:6a14:b0:ac3:3f84:4055 with SMTP id a640c23a62f3a-ac7e71702ddmr207332466b.4.1743845257710; Sat, 05 Apr 2025 02:27:37 -0700 (PDT) Received: from localhost ([2a02:8071:b783:6940:36f3:9aff:fec2:7e46]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-ac7bfee46f0sm387214566b.86.2025.04.05.02.27.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Apr 2025 02:27:37 -0700 (PDT) From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: linux-pwm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Subject: [PATCH 1/6] pwm: Let pwm_set_waveform() succeed even if lowlevel driver rounded up Date: Sat, 5 Apr 2025 11:27:12 +0200 Message-ID: <353dc6ae31be815e41fd3df89c257127ca0d1a09.1743844730.git.u.kleine-koenig@baylibre.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Developer-Signature: v=1; a=openpgp-sha256; l=2342; i=u.kleine-koenig@baylibre.com; h=from:subject:message-id; bh=XTHV/BxyEsvy+/e1D0B3U1SFxzinwxu6RXZECENuXK0=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBn8Pdz3lV+2k9YVQCgxCIptG5ZhxMNDMRXIKrKY 3z+g/Apcb2JATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZ/D3cwAKCRCPgPtYfRL+ TtBdCACRYlwLk+xNAXLqrPUvRBo6pclQCBurf1hke0ta+7+zwB7BVif1PatD0/kS7Xk5+O5w30C qGmVK/j6sOMwbZKTp/4NpShPKxrrNrX2TKaME8TMF9BiriX0ajcXjzE/X6+Z6l7NGj6catNNtYY l+c3+Guh/ahSK63PUoUvlNKvw3Bbtvbc1Z8XtAatQ40q83aHlYO7yJPNPk9ry+o1E/yMLfrERqU 9tQvsv95BamFNcffLLGerow5gJlZoij+3e/WgKFo9B66REBHOZfDReREAa2HjXmjevAYR1jgQRN tVmBliqVOI/g1CaPIJqvi6hPeG2WlQqxuL5LRLchLZR5TRi6 X-Developer-Key: i=u.kleine-koenig@baylibre.com; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 Content-Transfer-Encoding: quoted-printable Waveform parameters are supposed to be rounded down to the next value possible for the hardware. However when a requested value is too small, .round_waveform_tohw() is supposed to pick the next bigger value and return 1. Let pwm_set_waveform() behave in the same way. This creates consistency between pwm_set_waveform_might_sleep() with exact=3Dfalse and pwm_round_waveform_might_sleep() + pwm_set_waveform_might_sleep() with exact=3Dtrue. The PWM_DEBUG rounding check has to be adapted to only trigger if no uprounding happend. Signed-off-by: Uwe Kleine-K=C3=B6nig Tested-by: Trevor Gamblin --- drivers/pwm/core.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index a40c511e0096..0387bd838487 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -322,7 +322,7 @@ static int __pwm_set_waveform(struct pwm_device *pwm, const struct pwm_ops *ops =3D chip->ops; char wfhw[WFHWSIZE]; struct pwm_waveform wf_rounded; - int err; + int err, ret_tohw; =20 BUG_ON(WFHWSIZE < ops->sizeof_wfhw); =20 @@ -332,16 +332,16 @@ static int __pwm_set_waveform(struct pwm_device *pwm, if (!pwm_wf_valid(wf)) return -EINVAL; =20 - err =3D __pwm_round_waveform_tohw(chip, pwm, wf, &wfhw); - if (err) - return err; + ret_tohw =3D __pwm_round_waveform_tohw(chip, pwm, wf, &wfhw); + if (ret_tohw < 0) + return ret_tohw; =20 if ((IS_ENABLED(CONFIG_PWM_DEBUG) || exact) && wf->period_length_ns) { err =3D __pwm_round_waveform_fromhw(chip, pwm, &wfhw, &wf_rounded); if (err) return err; =20 - if (IS_ENABLED(CONFIG_PWM_DEBUG) && !pwm_check_rounding(wf, &wf_rounded)) + if (IS_ENABLED(CONFIG_PWM_DEBUG) && ret_tohw =3D=3D 0 && !pwm_check_roun= ding(wf, &wf_rounded)) dev_err(&chip->dev, "Wrong rounding: requested %llu/%llu [+%llu], resul= t %llu/%llu [+%llu]\n", wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns, wf_rounded.duty_length_ns, wf_rounded.period_length_ns, wf_rounded.dut= y_offset_ns); @@ -382,7 +382,8 @@ static int __pwm_set_waveform(struct pwm_device *pwm, wf_rounded.duty_length_ns, wf_rounded.period_length_ns, wf_rounded.dut= y_offset_ns, wf_set.duty_length_ns, wf_set.period_length_ns, wf_set.duty_offset_ns); } - return 0; + + return ret_tohw; } =20 /** --=20 2.47.2 From nobody Tue Apr 8 12:54:41 2025 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (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 84D421CB51F for ; Sat, 5 Apr 2025 09:27:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845263; cv=none; b=YQB9WGQ/HioRfrI0z2UsVSFmYC2hnBucez0tN4iWjGtuACyGS7SCnnCGiaKqJskyuEiarJsY4fjAW5daR6ZVi2hCMPQ8GEpryJi+FUnuNjfSqCYOWuSnOZ6iQmxtqVyRGFCeR0kmtU2vmtL0QNDuTrhSeAUUqUfQqn9aMv3Jtv4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845263; c=relaxed/simple; bh=kHydnSM0ULFQvWKEWgBJvoEZ4DMOWEDjsKpnVZckxBc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=KdP982wzxUDWOSzdwg0Mdnk4Bs5XtlDK97LyGLvIZcbD9+eiLTOfMrXLemcwQWXrswSsfjtWeNkFmUYOx+sqdWWNQrZSebdMz8VAUjIGtxtsznw3pXHoIoD4bllrcm49Wr3eg94i17L0Phjq3HXNyG/7Kx/127UUqiUyJezJovo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=ohe4PiYD; arc=none smtp.client-ip=209.85.208.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="ohe4PiYD" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-5ed43460d6bso4597501a12.0 for ; Sat, 05 Apr 2025 02:27:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743845260; x=1744450060; 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=/vhjgPM25WIrJtvsOvWD9TP3Lhl6m8KVBdL4zwgprPU=; b=ohe4PiYDgrpsxz/DY/y3mtxo4mL1h2T3OXdq97MP28DcryLF766hIKN//ZuSzUygVA nRoFH/6Xd1a/C388HOKA4DKWYxCnMPGUByACZHwt587DxmNAgSHvu85vaumu5eYTrPk1 900FXqLQVolycSABeOrubG2zdvLSNSoIm+T20GhG3W2xIcUHsoudMzkIJN6R6PXoRXwV MLauL9QjaWsJrCIOSyM5/Q151BtOffcTXdPuM5Pe0xOHgVU1WxeqNMFfB2Vidp/eVgsh ArlXnpB3vv/CTIFRJiwfZX7/KKbVgqB3VcXB+lpOwbiOGowgDb8H4++k9EWsKSkz3oQ5 VZSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743845260; x=1744450060; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/vhjgPM25WIrJtvsOvWD9TP3Lhl6m8KVBdL4zwgprPU=; b=F8VhDZjfgebr6gerzFXK65RSYL0dmDooqWzqnR+OlhBVMC11EAkEJVzTFe/hpNGTKG KhanKE2vLSiYIzK1+C7PPyHEvoTj3qcR0IymNYeKT5iETaXM9nCESkvMWj7W6wWgxDYR pZrZyxAcez7PGkea6dn3T8qZy5kTdosW6VWvEJni70McZAIJlQvc6dhHefEDSPXqTPqe OnXRVVVm6nvxs6cLc8Zl3JxNFy6ehgFo4KFCg6X1eALKNnJPrduNv+jFk/LE7ItIkOzY 8yxZLVqDF2pwtOaARLhcobeDdfZcUO+jlEeLfYXePhKleqHEEz0r+gsp2JSh3oS9qnyu GXiw== X-Forwarded-Encrypted: i=1; AJvYcCW/CV68jUQmIfrxuEBvyjME35BK8X6/3D32v/N0lz1A5Uoa9Chtdq4o6qK2Nmirkel8vuUjzdaknt7pv54=@vger.kernel.org X-Gm-Message-State: AOJu0YyFLYDdmLwcVXS6CC7pSADpyZxmDDwVvKJC0pUCkfzJkMw5xWip T7vayf/EYdV8Z0vH+aJUKEYNB5YBrfnCF5IvuPTS50DqlKlOP6Dgh10vvsWs0Ko= X-Gm-Gg: ASbGncuiYn5iRR9vgeFgeiwYd4zKbZKagu3RGC8l557kbhxeLPhmcYmMOWf7UxTeejy nS8u1On6rO//ta82NbxqCVs/w/+2gMxyeCSftjX63affa+BLF4fvg2wejbFmc0/d6Y10E2E90xc 9hUnQcozJF7pjMs7+K5U4spLrk4zU4zotl2LRDaBxMDSwHDgHa4lab317hIWyDCKSZ0sQecspGf hYYKkV9ZRP7r9gVNORF5za5P/51hrzr37SloC9z9CMEX7bH3k1TunaOe3PAa4ynpb9KLO1a+GEG DFGRhGkqVJlwlSZQPZhWGzUPc12XxWZsayI98baii577GvFKjw== X-Google-Smtp-Source: AGHT+IGxU6AQk/lGxA5BuJalTi4YDJdWHCrI3Gxv3qwNMs4ENzrJKR1Xxmjq53bryBeUQ1gqPpBg8A== X-Received: by 2002:a17:906:f588:b0:ac7:7526:46a7 with SMTP id a640c23a62f3a-ac7d6c9f9f8mr456183566b.1.1743845259603; Sat, 05 Apr 2025 02:27:39 -0700 (PDT) Received: from localhost ([2a02:8071:b783:6940:36f3:9aff:fec2:7e46]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-ac7bfe5d3d8sm392574566b.31.2025.04.05.02.27.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Apr 2025 02:27:39 -0700 (PDT) From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: linux-pwm@vger.kernel.org Cc: Fabrice Gasnier , Maxime Coquelin , Alexandre Torgue , linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/6] pwm: stm32: Search an appropriate duty_cycle if period cannot be modified Date: Sat, 5 Apr 2025 11:27:13 +0200 Message-ID: X-Mailer: git-send-email 2.47.2 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Developer-Signature: v=1; a=openpgp-sha256; l=1609; i=u.kleine-koenig@baylibre.com; h=from:subject:message-id; bh=kHydnSM0ULFQvWKEWgBJvoEZ4DMOWEDjsKpnVZckxBc=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBn8Pd1OuSd8laVmWsGMsZDQ3jElzoOQdmOU0iVj Pfwnc8P+kaJATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZ/D3dQAKCRCPgPtYfRL+ Tkw/B/9jCyatQhCnULqdSAYE6atXCRb8xNFBivDhozOExipctqkbMkUxZN9AKJ1YgwFfWHLNl0z PUSP8gpGwtEQUxTzzp2s5toba5GXknwV0rO6+9YdTjf5SlLRVO9Vuru9m3Z6I67iUD7FG+8/20T hftKLgmwm1MFOxcN1nEr+5L9o9Il8jAkXqLMNWPtkiKBFDz3s4WDY6Utex2YaiDmbUdYGJTUOuM 3kXU1Dbmc9xQDzmoJPIU+ivoT7mGih87U1/i4W7s2iaJbgDM7KXly4D591nvm3oGGu9BMh4DKEn 9z21R0ghSUi0Z2k+g2BOV3Esx3ZQWrT//64X88x1buPhHoD6 X-Developer-Key: i=u.kleine-koenig@baylibre.com; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 Content-Transfer-Encoding: quoted-printable If another channel is already enabled period must not be modified. If the requested period is smaller than this unchangable period the driver is still supposed to search a duty_cycle according to the usual rounding rules. So don't set the duty_cycle to 0 but continue to determine an appropriate value for ccr. Fixes: deaba9cff809 ("pwm: stm32: Implementation of the waveform callbacks") Signed-off-by: Uwe Kleine-K=C3=B6nig --- drivers/pwm/pwm-stm32.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/pwm/pwm-stm32.c b/drivers/pwm/pwm-stm32.c index a59de4de18b6..ec2c05c9ee7a 100644 --- a/drivers/pwm/pwm-stm32.c +++ b/drivers/pwm/pwm-stm32.c @@ -103,22 +103,16 @@ static int stm32_pwm_round_waveform_tohw(struct pwm_c= hip *chip, if (ret) goto out; =20 - /* - * calculate the best value for ARR for the given PSC, refuse if - * the resulting period gets bigger than the requested one. - */ arr =3D mul_u64_u64_div_u64(wf->period_length_ns, rate, (u64)NSEC_PER_SEC * (wfhw->psc + 1)); if (arr <=3D wfhw->arr) { /* - * requested period is small than the currently + * requested period is smaller than the currently * configured and unchangable period, report back the smallest - * possible period, i.e. the current state; Initialize - * ccr to anything valid. + * possible period, i.e. the current state and return 1 + * to indicate the wrong rounding direction. */ - wfhw->ccr =3D 0; ret =3D 1; - goto out; } =20 } else { --=20 2.47.2 From nobody Tue Apr 8 12:54:41 2025 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1A5651DE3BB for ; Sat, 5 Apr 2025 09:27:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845265; cv=none; b=ALRIwsIc7jtlNvGKJXhaO2d7yzBnLl7TW0Pvq8j4qEDPt/XsAT6gxo/zNuhk6aCBp1H8cpTeodD70NaV8Zj8ZTCnBtZg7jqd9q4Ac4RGWx7iTLb/2d4TiZ17OXGyT+QZrI53il7Hsg2A+LRuWxyodAbd3h0Q4IVcyuMZl+mMArg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845265; c=relaxed/simple; bh=CS0yADAVELCrL+iW8Kx2zSuRfLKasMZMlkMKaonSN2U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=HzI6om6CKQJoO+WWYyjsXjXdXqKj7Dmw9lg0fmEXred//+X47V7E8IzfkiPYR28OHD0TSKqi6s09oImpNfTgqnMZ9cAUFQAr+UPStKAr09zh24Lgx2JWB2xDzWFTUov9eSEdAQ1AyMDVbnFy6BRTHYylMvpK84KrnJBMsSEVwxw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=ZnuzkwwW; arc=none smtp.client-ip=209.85.208.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="ZnuzkwwW" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5e6167d0536so5063244a12.1 for ; Sat, 05 Apr 2025 02:27:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743845261; x=1744450061; 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=+9siO1d0OJXf+kmdtXu0qBtLgacxuY3xseG/1b/zOl0=; b=ZnuzkwwWm0UjD5Oeecp6Xi/1hxm3LL6bfor6+M1sPj6eFU2xQ+w33j0zK6tdKLkgE6 HRL52UppTzeqO4imjucf+bkb+e1rZfSWGItAlcHR83T8w/m10+XhLZfhAbUmazvm7U/B wndKaG0qxpmpPlG7VXK2wcf/QuxYrCHGIfJQldJm+8FG8Dg4HZur6o+nwFUwDmFrvtQ5 pulxFiPk7lOXFzZssvbTymwjbN19T/aPjY+Nh+oXpUuyP34iyqdfFQ7q5QqYJxWsfis3 0d5rdJ6bbisEjEqN1izhlV/2lRVS/S8m3ZzOpl6YLaLNkX6vrnDb1vHagnEXOuk8E/Gn KCBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743845261; x=1744450061; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+9siO1d0OJXf+kmdtXu0qBtLgacxuY3xseG/1b/zOl0=; b=oM3FykiR4QNuAxY4ExddKEEIyuzBRAXQw/Y/ErfTRx4s4IZMc7FX2m+Q2hyS47Wpc0 2J1j/h1K8kN3nq9OJ1H/0gC17pcARuXWn4iCN/HCD+IMU6ySLrLK2dGMxr8JL/ICQED5 UeJ88F4VY5U9Y1loakiNemiZBiVK6pV6eQDVe5fvPLV2p8iXvJ3SMkfC8wUAQgog/hlS NHghCmb71sJeSZJHNI/tBxv+7XghVPF6Xso1wi+CptkrEM7y2l88vNEe3ueYuhDB+G48 NUQxJB747XwGmg7jJ/gWqucxZymbcWTr9v0ZIv524s1ylrAEkHx/E9YxHTXdvVUNvyqv pL2Q== X-Forwarded-Encrypted: i=1; AJvYcCUYgfvW/6PcclvDvgssZU/yYDegt/DuOr3NsWmtZs6s8og071ZzLWFyHSu9VqPua4ow9sYiqOFa+WDcKpQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwCR5qt0xxueCv/GmO+Dmg5uLJDL+REyhy2GymAxAUJtL7hQgAE LPIf5Iae412XyxJnI7fQ20yeb/o52g4nZEW5xYHK+yRzzY900Nsu+Ost9YwJO6I= X-Gm-Gg: ASbGncsBYYZt9NDnXvTfnZQJ8hwbDfW+Ug7SPfglYfKqMK/7QzbbIs6Yr3BG+WuiQ0j T/GyouNNuLUIYJmHUrC+u4e6m9zojvrOWJWNQWoxcfiexcYrq3faC0Xdl8fx2pH81rC8Y+upCCB QffslMkZ7ezd86jP+IODfE73a3JlEWk00yts5TMxCj6V+Tg3rK7CiggasnfN7yHj0KGdRnPV7gZ REVuaSAPaxyw7Wh31HhcPVzvnUvjUdTGgZxFOeGPHtmIcf1+yf8Qi0Jt4nF2wflmUNAxpfqrUlj cJFTPnTWbYSqZF7EL45JQEtYnoclH7F8TZpcrdOarXDmu8fFeLs8kuqNQhRH X-Google-Smtp-Source: AGHT+IEHAOg5qx1HK7FVLs7W0Qxv+LAaqChGFqw4tVT6n8qLbrhokvGfFob/wI9f+X8IvCQ2yZT+tQ== X-Received: by 2002:a05:6402:501a:b0:5ec:7909:1a with SMTP id 4fb4d7f45d1cf-5f0b3b90213mr5271124a12.12.1743845261362; Sat, 05 Apr 2025 02:27:41 -0700 (PDT) Received: from localhost ([2a02:8071:b783:6940:36f3:9aff:fec2:7e46]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-5f088084eecsm3379240a12.57.2025.04.05.02.27.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Apr 2025 02:27:41 -0700 (PDT) From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: linux-pwm@vger.kernel.org Cc: Fabrice Gasnier , Maxime Coquelin , Alexandre Torgue , linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/6] pwm: stm32: Don't open-code TIM_CCER_CCxE() Date: Sat, 5 Apr 2025 11:27:14 +0200 Message-ID: <7803f63b1310ddbd706f51f2f42d30b6dd786b03.1743844730.git.u.kleine-koenig@baylibre.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Developer-Signature: v=1; a=openpgp-sha256; l=696; i=u.kleine-koenig@baylibre.com; h=from:subject:message-id; bh=CS0yADAVELCrL+iW8Kx2zSuRfLKasMZMlkMKaonSN2U=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBn8Pd49kNiv7t7/o7GyEzogIHT7M1lDxUwJzEce gRP4hWfBuqJATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZ/D3eAAKCRCPgPtYfRL+ TkdAB/9t2HkMqkvlwY+Jf7FhSonomLwZB3nkfQZIxIbs37gW1zKYpAhW6k4zurBX/T+oPhnxlQv S5KxirYFhXffyyRqQncJrWlccSheAw0YjjPm7KCRLGqPfVO4dCvQDaYxNVfqYouDH/BK73jwIGe +ipg3OBU3Z2JOcrxZ7nRNsntv+UTTnGcAdCcu/FybQ11FZgcDILFaBDKYIhstF20JRKxb6bksfC /4e2hEFa1YynnIZ/p+efhShJeeO/UIvNHXhmmsT9hHxDR8LxwrCY/NMRvASLGSuPX/eZEuZX/Ez PmCs1OBnCmlGUeEdy8pu1jPMM/37D8zcim5+N9bBUnm+MfUk X-Developer-Key: i=u.kleine-koenig@baylibre.com; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 Content-Transfer-Encoding: quoted-printable Instead of manually calculating the offset of the channels CCxE bit, make use of the TIM_CCER_CCxE macro. Signed-off-by: Uwe Kleine-K=C3=B6nig --- drivers/pwm/pwm-stm32.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pwm/pwm-stm32.c b/drivers/pwm/pwm-stm32.c index ec2c05c9ee7a..c6625f51a199 100644 --- a/drivers/pwm/pwm-stm32.c +++ b/drivers/pwm/pwm-stm32.c @@ -88,7 +88,7 @@ static int stm32_pwm_round_waveform_tohw(struct pwm_chip = *chip, =20 rate =3D clk_get_rate(priv->clk); =20 - if (active_channels(priv) & ~(1 << ch * 4)) { + if (active_channels(priv) & ~TIM_CCER_CCxE(ch + 1)) { u64 arr; =20 /* --=20 2.47.2 From nobody Tue Apr 8 12:54:41 2025 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C7F841DF254 for ; Sat, 5 Apr 2025 09:27:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845266; cv=none; b=WgMJ/apyFDesbha1bj9goUDaHPBNJgXl9y1CL/IXPRxIzZFAZ1x2qONAZTld3mayQeDiHWTjRZatXzx4Nuq41Fgjr54ypJtLEXwAyOThMw0Sc0BqFZh5MuBoOIhHsxNrBVmEd5Sgj9US9HgHS9OJ9pfO2IlkU9Qi8k3lWhgz76Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845266; c=relaxed/simple; bh=PeMUN5MaPR/iihGuaAYk1+RqNZDBvhqS1HijQAO+fo4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=fVLHnE/IAKBrfmKZ+lMpTEajeecs4OYSC+FTVf1sYFxQnuLULC6qQBmgOJTPb+ZjUXW/ulGWB24ae5g95QFplaWZHS+fTzjV5AqwpNknFvR8fxVaRgou+mC4QKsNMiQsODBlq3ydN6G5uwukHLfaCybeQyq9bifTj3Ensv32hUw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=ycS583EC; arc=none smtp.client-ip=209.85.218.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="ycS583EC" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-ac2bfcd2a70so369193766b.0 for ; Sat, 05 Apr 2025 02:27:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743845263; x=1744450063; 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=zZnZ1QBH4c/cR2r7Z2I0IWQDQQpPtp/xF22TjNG8zFs=; b=ycS583ECOuUzKWKMfrY1W1xmumbs15pUWtPkZ76FQ86PZugNIy1oVVg3Md3h9QtYfM zkqwX0+aAg7WdNIvCyn+hAyXuMuSBDEjzl01FmeohcXh6F92BOpB3e5T71cByn6G/Cbi 955P1+2ehCyiTS+xqBnpx34pMta46pJ0LPSCfTCt0xr2iamS/IiX2y0ziBljWyNbIP2q i5D9ON69ZgFJEWPZNTAUyS2wQYxRBDU5daUXmoflbeMGy+tHpa0CBPgz9kpZVGVnMOCn 02kvx8G2QibNh52qs/Q92VPWyBe7YZiy1RE7SMuozkws2OQ5rtynAQnW2nx1UNGEj6Q/ LcxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743845263; x=1744450063; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zZnZ1QBH4c/cR2r7Z2I0IWQDQQpPtp/xF22TjNG8zFs=; b=VtwuZEZ2tAViWTdphhGfeRv972QQmOp/h59ClkX0UWialGU0ZwqmYvEVwnlJYsxr4H tT226lnxfgqOF8BBp4RHFNsKrLe29v1MgcOsuiIM9Bh3+LUBT1m0+AFumtbt5dT19WnX R4KwgMex0+ZZjNguBZmI6hK5iz/jAOMZ23YtNyImld4DSaJjxnpR6I77WO2vY7Zb6l3t FY0nn46+cwBIEuefhjRdTO0b84/Da6efP6sSv3JR07t0iiWO5Eike3oHkPSfiUfJ7OGK 9dvXyAXBH6qRD/oZGzVypBh9UoJ1D+xfQR+zZiRZxZ+K6EjSFLk7USd+cQAh0BnCywBw xGZA== X-Forwarded-Encrypted: i=1; AJvYcCVJLyGvDi1moKrXE1TWDrJ87MO3YST3B4FDKrXonJgzkzYjJ8GpMemHGlYWtORkm+2VDgSYXeebIiAfXsQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yy5JuH/5l31+8V3QkR/qKVEHdPH5BYF3bHZrQX2zTm4OJ7Zxf/m x19kJ1u8JBaIusmFfZdkKyezkSKepjU5blPny1INVGWBJOQo8zUWlLhHlMXIXFYXnL0Fgr+cWtm J X-Gm-Gg: ASbGnct2dMwTxOAe1o/4HZuML/r3+w/267PuvI2zAO/C3huFlbe2IHVNJIFCbzD/nFD n5Zeujrzpz9TF/UaPvMXOE+1iNCOGp0eYoM7It4G0watMEZ/Tb5ZcEcKq6gsX6vuQr5C1riEs98 /7qXsAHcUQBcgvUJ6MvmbhKGS01m32Ipd3ptcqhLICqDiUdS90qXoNx60Kkq4NpdkryEaGlAI0/ PVlolWb7Z2Ud8rMxM4TeQz+xvCG2jSUPur9YF/b//RsJmzd8FnFZi8i3wWmIf2p0vbFg9jsDYJT FWVWbe/8OXaoRzpiDkpISB7yaIdlz2WFS4l4DT7t/lqmWjEUaA== X-Google-Smtp-Source: AGHT+IGWO7dBoEwfH+vhvetzVchvOebwHG0LSEkTGJ+mVXy0B0Ix45di+z7EJEIkw1x3jHja6bWBjg== X-Received: by 2002:a17:907:7f07:b0:ac3:8a3a:e924 with SMTP id a640c23a62f3a-ac7d19903fdmr555132166b.39.1743845263101; Sat, 05 Apr 2025 02:27:43 -0700 (PDT) Received: from localhost ([2a02:8071:b783:6940:36f3:9aff:fec2:7e46]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-ac7bfea0eadsm394579766b.67.2025.04.05.02.27.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Apr 2025 02:27:42 -0700 (PDT) From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: linux-pwm@vger.kernel.org Cc: Fabrice Gasnier , Maxime Coquelin , Alexandre Torgue , linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/6] pwm: stm32: Emit debug output also for corner cases of the rounding callbacks Date: Sat, 5 Apr 2025 11:27:15 +0200 Message-ID: X-Mailer: git-send-email 2.47.2 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Developer-Signature: v=1; a=openpgp-sha256; l=1852; i=u.kleine-koenig@baylibre.com; h=from:subject:message-id; bh=PeMUN5MaPR/iihGuaAYk1+RqNZDBvhqS1HijQAO+fo4=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBn8Pd6gBS/U7sm8gCc++Qe+H9FPvkAFOyatKX8B qZYNTVb/8WJATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZ/D3egAKCRCPgPtYfRL+ TiyKB/0dJZmWMtAaRs0WJ3PXT9d3VqFRF+ApoExKeBVC+2ES9YhZvF7McGhAzK48ik7Ly+LbIdd Il/cB2eBN8HrWNjZoHv/RVydoIwXGPyxm+7EVsFLjp6QVEbKfRjnonbncS3QTgmSKMIUL6e6JSC Exlph+FquJCDEjgnQZiyDNnKFMpId9mwZfG4STy0nFW4ohy/2CIVisdMr+VJ/Ku9COUq3a/FB+F QNpy10ntJAQfeJnxjycByIlnMBpPR+ouavHhm3lAae1baYZOSbounM633kPFBC43UuT9ehZ8ryi RmE7IGRwAQ/z49wXa8pqeOAbyygY5+bxUJ0PuQwUNrsaJoRK X-Developer-Key: i=u.kleine-koenig@baylibre.com; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 Content-Transfer-Encoding: quoted-printable When you're interested in the actual register settings the driver chooses or interprets you want to see them also for calls that hit corner cases. Make sure that all calls to stm32_pwm_round_waveform_tohw() and stm32_pwm_round_waveform_fromhw() emit the debug message about the register settings. Signed-off-by: Uwe Kleine-K=C3=B6nig --- drivers/pwm/pwm-stm32.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/pwm/pwm-stm32.c b/drivers/pwm/pwm-stm32.c index c6625f51a199..dca5d09d80b9 100644 --- a/drivers/pwm/pwm-stm32.c +++ b/drivers/pwm/pwm-stm32.c @@ -180,11 +180,11 @@ static int stm32_pwm_round_waveform_tohw(struct pwm_c= hip *chip, =20 wfhw->ccr =3D min_t(u64, ccr, wfhw->arr + 1); =20 +out: dev_dbg(&chip->dev, "pwm#%u: %lld/%lld [+%lld] @%lu -> CCER: %08x, PSC: %= 08x, ARR: %08x, CCR: %08x\n", pwm->hwpwm, wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns, rate, wfhw->ccer, wfhw->psc, wfhw->arr, wfhw->ccr); =20 -out: clk_disable(priv->clk); =20 return ret; @@ -236,17 +236,16 @@ static int stm32_pwm_round_waveform_fromhw(struct pwm= _chip *chip, wf->duty_length_ns =3D ccr_ns; wf->duty_offset_ns =3D 0; } - - dev_dbg(&chip->dev, "pwm#%u: CCER: %08x, PSC: %08x, ARR: %08x, CCR: %08x= @%lu -> %lld/%lld [+%lld]\n", - pwm->hwpwm, wfhw->ccer, wfhw->psc, wfhw->arr, wfhw->ccr, rate, - wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns); - } else { *wf =3D (struct pwm_waveform){ .period_length_ns =3D 0, }; } =20 + dev_dbg(&chip->dev, "pwm#%u: CCER: %08x, PSC: %08x, ARR: %08x, CCR: %08x = @%lu -> %lld/%lld [+%lld]\n", + pwm->hwpwm, wfhw->ccer, wfhw->psc, wfhw->arr, wfhw->ccr, rate, + wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns); + return 0; } =20 --=20 2.47.2 From nobody Tue Apr 8 12:54:41 2025 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.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 B368E1E1E1A for ; Sat, 5 Apr 2025 09:27:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845268; cv=none; b=SzgecdqYXAipTZGVAgT3uvqBHAEydY0oT1ooNiF5KcaCXpAtoysga4U6t0EDMH4NNPQb+G3M+vi/7lBZgPg0rVC9Xztj2LQoGzMexamu2wF8rLQ0xqm3caKtoiROH3bkc7c7j7D8x5b433H46JwA/g7RxJPOvLmMgKCCnTAvMxg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845268; c=relaxed/simple; bh=OiM7+jqt6Q921Kpmw9b8tSzzTFzLcdB8tQr9oQGe03Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ItmlnQ2DCuqAOfedIy4axcwQISaTb/dvjTci+PL5iWBQiQPPHEF6cOmVaHvxCm9Aml7+V0G44yDS2z/GxJpXYsT+vLxPOltEemLIzD/fhSgRVs8cVm/DdiIBaxJLiCsecFb5enQbUlZLTRyPmGP3DIfGEuHV4XpMBv8SddM46gE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=tmi0N1EQ; arc=none smtp.client-ip=209.85.208.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="tmi0N1EQ" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-5eb5ecf3217so4810961a12.3 for ; Sat, 05 Apr 2025 02:27:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743845265; x=1744450065; 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=8qXAEECYwT3mvFz4b37atfzJpcEAFkVbCcjXByt9ryg=; b=tmi0N1EQzFnou2AgOrggkSKdEjjXyzpIG+CVZ+2L9CjaRNfCY0p6JmsJ7vqMbdleSb vOnxlJZzb1VdbEKCkBt2iwJqR50GEPDJOzAPmomrPe4aWX6Zho/qSutx5wKCD1St+YB7 Tw+agm1lm3qVBTiOFRiV7L51ErD3K7u+EHYtFXz4wUMdwM1/4LTzAbgi0ax39Nsiwg1a kvkVJGKc5uYuKQyMZA8q+2+1X2gTYnrCwTtSg0werl/H8hrosEoX/kM8Ccwp2X4ukmNg 34TSUeM3Pxe1Dw5fFmT7b837pd0vTK+4Ffy1aHbYAB0nTJwJdSkfWvTc7x3J9rKVAj00 d7sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743845265; x=1744450065; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8qXAEECYwT3mvFz4b37atfzJpcEAFkVbCcjXByt9ryg=; b=n6ZX5rs7d18R76GCV2gy4M/cXBgjfapJs7Hb5e5I2libSWTn8o4INV+QfLFWKP6oRI OBfCw6nH91g7VH9QUax3BFqz0PYhLZYJwTWn4V5Bu45a7+pS5sINGqhkuYwHQgU9jldi Usllfi8IFcmV3W8EIR5QAEhK0bOEnEWDHfwW9OSBHOIV6ianG+gDldGorTsKCR0qgf0I GBxoWLDdstC+Ipwp/aWY4hTPBzEQs1aKqwGwflwnD2aX5dtECV1sloOHWdNLuqrxNCYf rbWvJGnDlb/xfz7jRb9b/v5gv2LPk0NyAcxCNUnSgkZro5G+oFG4meIK6+E6bwJpx69S qPHg== X-Forwarded-Encrypted: i=1; AJvYcCVH1thS2qBBLkDCE9zr06t1NAoT5YVN+kwPcGDjL+b3RV9IDOFkFETDynHto0gIigVe/G/6kQuUNV9JhdU=@vger.kernel.org X-Gm-Message-State: AOJu0YxhczIle2GeThquW7lbUE4qmO5NvT/8MdmaRy9EZgn1LDMWc2HE AXxJAk4zSIPpZzj24Z0NSGzLRDMK8UvG0lDVRv7C7WI6LNtkXn8+LikpjwE16Ko= X-Gm-Gg: ASbGncuW7HnnL4Lsy+4d6uEcRI9EOESKqdLnq3rpZuZSq9wNc8l+SDFv7LUnRTharop ezmjXXnuHJmU0K/MbO03lIE6MtwN4UFzi122BtqQrccqA52RMXeeaWy9qYvpETKStwvW27nB6fJ PyhRjbYV5KOCdemZ5pZy01AHWp25553GmPBZo3l7ZlEfL4tGUQOEulKTXrlg2R72DYD3pHYga1A /97rfqgWFiYGFbl5uC+Y6GunLeWHWAGnMU0rMuIJHEJ8+MXxZwTUIIOGpS9s41KFJWNSK8djEmF J0VjHWAiiDiOc58AUeXTvv6+p7iLskJ27CB3etuO4xFObNbcuxSMTo9G2GpS X-Google-Smtp-Source: AGHT+IH/Vu+m+Mp96HrPw4Gc+WIBgyrjTJKLuS6DXnK5YxiYpNywofXLPxP1H8Q6LOOpccRFikcNhQ== X-Received: by 2002:a05:6402:1941:b0:5f0:9eb3:8e6a with SMTP id 4fb4d7f45d1cf-5f0b471645fmr5054504a12.32.1743845264986; Sat, 05 Apr 2025 02:27:44 -0700 (PDT) Received: from localhost ([2a02:8071:b783:6940:36f3:9aff:fec2:7e46]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-5f087f0945bsm3642602a12.45.2025.04.05.02.27.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Apr 2025 02:27:44 -0700 (PDT) From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: linux-pwm@vger.kernel.org Cc: Michael Hennerich , =?utf-8?q?Nuno_S=C3=A1?= , Trevor Gamblin , linux-kernel@vger.kernel.org Subject: [PATCH 5/6] pwm: axi-pwmgen: Let .round_waveform_tohw() signal when request was rounded up Date: Sat, 5 Apr 2025 11:27:16 +0200 Message-ID: X-Mailer: git-send-email 2.47.2 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Developer-Signature: v=1; a=openpgp-sha256; l=2006; i=u.kleine-koenig@baylibre.com; h=from:subject:message-id; bh=OiM7+jqt6Q921Kpmw9b8tSzzTFzLcdB8tQr9oQGe03Y=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBn8Pd80SugWzSxb6ho2jCZImiC2vqkQWOStcSd0 V4RR6iNKFaJATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZ/D3fAAKCRCPgPtYfRL+ Ti9cB/wM1fMEC3gf4eEravDOl/yv2NTu1+Sze6OydWWzWPeuLRUO2Cp5VV9e/I3a5z9ela0StAk qXXo0Pk/yGPLJXL75nXfBUf8nguCShWalSu57ZQI5PETtvUAD6PaXCBjHnV1MC4C8e8yEiDjt7B cg/s8T2keZctsewK+pI4biBczLymTI7WDTa7VbHMBnvsQPikdFtR0g9EKgbUZZxkHZ6i/OUHarI DqAQHRlzYT99WApwX7HISK2A1FUOx5oB28zZtswNPDx0NpcmuvkykKZwjS5Ho2vrIvPhNpFimlQ MZdU4ecdAHSYHDZ2RHmo4Myl5OpX9DAVXOSuSlCEC1aG3GIs X-Developer-Key: i=u.kleine-koenig@baylibre.com; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 Content-Transfer-Encoding: quoted-printable The .round_waveform_tohw() is supposed to return 1 if the requested waveform cannot be implemented by rounding down all parameters. Also adapt the corresponding comment to better describe why the implemented procedure is right. Signed-off-by: Uwe Kleine-K=C3=B6nig Tested-by: Trevor Gamblin --- drivers/pwm/pwm-axi-pwmgen.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/pwm/pwm-axi-pwmgen.c b/drivers/pwm/pwm-axi-pwmgen.c index 4259a0db9ff4..4337c8f5acf0 100644 --- a/drivers/pwm/pwm-axi-pwmgen.c +++ b/drivers/pwm/pwm-axi-pwmgen.c @@ -75,6 +75,7 @@ static int axi_pwmgen_round_waveform_tohw(struct pwm_chip= *chip, { struct axi_pwmgen_waveform *wfhw =3D _wfhw; struct axi_pwmgen_ddata *ddata =3D axi_pwmgen_ddata_from_chip(chip); + int ret =3D 0; =20 if (wf->period_length_ns =3D=3D 0) { *wfhw =3D (struct axi_pwmgen_waveform){ @@ -91,12 +92,15 @@ static int axi_pwmgen_round_waveform_tohw(struct pwm_ch= ip *chip, if (wfhw->period_cnt =3D=3D 0) { /* * The specified period is too short for the hardware. - * Let's round .duty_cycle down to 0 to get a (somewhat) - * valid result. + * So round up .period_cnt to 1 (i.e. the smallest + * possible period). With .duty_cycle and .duty_offset + * being less than or equal to .period, their rounded + * value must be 0. */ wfhw->period_cnt =3D 1; wfhw->duty_cycle_cnt =3D 0; wfhw->duty_offset_cnt =3D 0; + ret =3D 1; } else { wfhw->duty_cycle_cnt =3D min_t(u64, mul_u64_u32_div(wf->duty_length_ns, ddata->clk_rate_hz, NSEC_PE= R_SEC), @@ -111,7 +115,7 @@ static int axi_pwmgen_round_waveform_tohw(struct pwm_ch= ip *chip, pwm->hwpwm, wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns, ddata->clk_rate_hz, wfhw->period_cnt, wfhw->duty_cycle_cnt, wfhw->duty_o= ffset_cnt); =20 - return 0; + return ret; } =20 static int axi_pwmgen_round_waveform_fromhw(struct pwm_chip *chip, struct = pwm_device *pwm, --=20 2.47.2 From nobody Tue Apr 8 12:54:41 2025 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (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 5C6981E8351 for ; Sat, 5 Apr 2025 09:27:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845270; cv=none; b=uucK+TBY6jkv181uYotcApGo7SWgiiQOKx8xomun7ZjBwE7R9pjVU7OA3kkmrzvJ+XDo71OEeNyBfx6j4DPCPQssSU078+/JBu7hPz/e0X2hjGqQqwkHUCxobaS3BhUh0MNGn7Cp3g5uZveW+xg2lV03N5rCazPG/mQ7ntv8tSQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743845270; c=relaxed/simple; bh=h+RAQXYSITaOiNsLe2ePMBjKmCGb+M39CxPGqSKEDLU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=kSDp8m3GZWHKXS0qXmYyXHZT90Af30PFt8Mv/biuVGe8ciEqOrbwsLEJxXjX+jTFLiszbWGicylAf/ZB0sTClaVXP8ySWl3XnJJo8pA0tbVmhzlFUrtePVoxwOLLoAYSjOuajxNMyUWuvFzqt45bMJx3EcyJBz994H5hS5P1phg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=OIjBXX3s; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="OIjBXX3s" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5e6c18e2c7dso5445722a12.3 for ; Sat, 05 Apr 2025 02:27:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743845267; x=1744450067; 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=B0XfOP7KXTOvrLLmbA7G7E//9/JJRiC7GmYyGwejK5U=; b=OIjBXX3sC5b+avAUbqgke3uGrgIuWUpkfdzx5QETTdfQLm7FknZy/xIdTVY3PlCZ+R AqCJN5yFpBIhj0179tF75B/luq7ys4Gbc4SzuW64DAntxp5rdmafB3NmtjHOWRL/270v XExTHgivTrO5VuIfVSH3z3LmPtw/zWzyo4xBJ7Yqya6axxzHIYhK/Fyi0gDx9F7T28+n SBi6twqYM1d2aRbDdBqlHulvW7zammbeUjHU/GdpvEgJ7rICJv4PRUUJ/AxmdmlhmrrY ot4gSiZMu2mU6Q5E3AAJTJhkd+kHwTH+TDarVppiXmdlAg9MEe6SS0u4T6D/7nAiq3+U HvsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743845267; x=1744450067; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=B0XfOP7KXTOvrLLmbA7G7E//9/JJRiC7GmYyGwejK5U=; b=DiHqxGFHxylxODZdQzj/K8CAOpDgPlCbXAGdPKCsAky6rZaHl4D3HeizDj+00RnAzr bvK1sZRkISwG2TcBtLrZRnNbchi5L7mIuitfIl5d9Ezjk1iiimRnKDbAa+YNhxzU9G6H +2YU5jNUHb0T/ItNDnNgxubTpiZlU0GV5eacxFJBXI8o7ik0qUMBZ972SDcVPm7Mtabf ckAzla4jNagTMPzBkTXYIvEIMdShYXj3Yc175tzb6Ozb1SYf/M1nsT3UikPXSWNvNt3L J5bi3RUSRpAksQQhVm0hd2GOfiWE6N8A48m5ydMfnGaPFfwcdU2Phqvg3lVJhuYBkCbv IVrQ== X-Gm-Message-State: AOJu0YwfQxNmLDpx5hSkW9D8MzvJBS4r0BuJEkQqrbHGBTJurSmjjSWA d5E+zTGv9bbno379hecguKjdfW7TGt3ex+FcLRT8wHDhdV8PxYFH91k9BVF3Qbo= X-Gm-Gg: ASbGncsWcbQa/Vih1JxyWlVmehUh/oPMsaDUTpuXGzvqRoICnOq4S1yUIdx0AdWQBgu bfnY/2Vpsh6XiWrEZ2+ZxLzfmv34exRwhlxw6/4uYIUv9wYmdlV7zCxow66+/iOZMGmZg54nDga N4ZvAb+exu9ftelRxFikJBq6s0GB/Mai64id5utfx8BcWyv+XH3Z1DFEivbzv8F44BO2SthpJrG 6q6neYJbO2uBBou9hi3wYsvAQV1ZMSmh83ZcLShge+eWz3RRlb5uV0/XSTWROJcJMSerr85XMT7 XLW3D0b3UmWyStq/jP1V5eRqEPAnlzctMUlxYB6BnKd4IBXQAw== X-Google-Smtp-Source: AGHT+IHcPuNnQdvjEZGxLPBJJORKGUlBMvOOsXG2rT8CHe8kehR0JAeRO5Ili3XDX4FIT+2l5nB4gA== X-Received: by 2002:a17:906:fac6:b0:ac7:b8d8:62c3 with SMTP id a640c23a62f3a-ac7e7776951mr197064066b.51.1743845266713; Sat, 05 Apr 2025 02:27:46 -0700 (PDT) Received: from localhost ([2a02:8071:b783:6940:36f3:9aff:fec2:7e46]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-ac7bfea13dcsm396143666b.66.2025.04.05.02.27.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Apr 2025 02:27:46 -0700 (PDT) From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: linux-pwm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Subject: [PATCH 6/6] pwm: Do stricter return value checking for .round_waveform_tohw() Date: Sat, 5 Apr 2025 11:27:17 +0200 Message-ID: X-Mailer: git-send-email 2.47.2 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Developer-Signature: v=1; a=openpgp-sha256; l=2391; i=u.kleine-koenig@baylibre.com; h=from:subject:message-id; bh=h+RAQXYSITaOiNsLe2ePMBjKmCGb+M39CxPGqSKEDLU=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBn8Pd/Em6PFcd8tBWV1tx1yEKiDSebSwqn62/rE EtO7onCdOiJATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZ/D3fwAKCRCPgPtYfRL+ TjUYB/9jcxIIPsMTxx2e1W421sqRJ6RRbsNfeeXQKkdhnvxfvVIPvAWv+fylKgLnckgD22H/M94 X6vOlHrXjb/Ht/KXedhKG9hdZtZNGvUwsziov5L7RpD4c1rrELvlq53b3mM4dR4MD2d7vIH15N6 Ow+DkVk8K3QH2mgW6jeqUDg+YgnQolddwKBYr77wJ5c7iF5dAMliU1aryv5Nbn0d4/RQ4jEagEE oAc8sc6Pn/DwnvEH/f4ZVAefxVqcwIyR6fqSCQ+q6oBnyseZqNaXTAzpMPCiCwzKoIQJcBFKXQC OxKvqmCUB4nufUO/v8NxIR4gN1bW/X6ET/1Mmf2dzCTrYIvE X-Developer-Key: i=u.kleine-koenig@baylibre.com; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 Content-Transfer-Encoding: quoted-printable The .round_waveform_tohw() is supposed to return 0 if the request could be rounded down to match the hardware capabilities and return 1 if rounding down wasn't possible. Expand the PWM_DEBUG check to not only assert proper downrounding if 0 was returned but also check that it was actually rounded up when the callback signalled uprounding. Signed-off-by: Uwe Kleine-K=C3=B6nig --- drivers/pwm/core.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index 0387bd838487..1a9d497f5cfe 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -270,10 +270,10 @@ int pwm_round_waveform_might_sleep(struct pwm_device = *pwm, struct pwm_waveform * wf_req.duty_length_ns, wf_req.period_length_ns, wf_req.duty_offset_ns, = ret_tohw); =20 if (IS_ENABLED(CONFIG_PWM_DEBUG) && - ret_tohw =3D=3D 0 && !pwm_check_rounding(&wf_req, wf)) - dev_err(&chip->dev, "Wrong rounding: requested %llu/%llu [+%llu], result= %llu/%llu [+%llu]\n", + (ret_tohw =3D=3D 0) !=3D pwm_check_rounding(&wf_req, wf)) + dev_err(&chip->dev, "Wrong rounding: requested %llu/%llu [+%llu], result= %llu/%llu [+%llu], ret: %d\n", wf_req.duty_length_ns, wf_req.period_length_ns, wf_req.duty_offset_ns, - wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns); + wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns, ret_tohw); =20 return ret_tohw; } @@ -341,10 +341,10 @@ static int __pwm_set_waveform(struct pwm_device *pwm, if (err) return err; =20 - if (IS_ENABLED(CONFIG_PWM_DEBUG) && ret_tohw =3D=3D 0 && !pwm_check_roun= ding(wf, &wf_rounded)) - dev_err(&chip->dev, "Wrong rounding: requested %llu/%llu [+%llu], resul= t %llu/%llu [+%llu]\n", + if (IS_ENABLED(CONFIG_PWM_DEBUG) && (ret_tohw =3D=3D 0) !=3D pwm_check_r= ounding(wf, &wf_rounded)) + dev_err(&chip->dev, "Wrong rounding: requested %llu/%llu [+%llu], resul= t %llu/%llu [+%llu], ret: %d\n", wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns, - wf_rounded.duty_length_ns, wf_rounded.period_length_ns, wf_rounded.dut= y_offset_ns); + wf_rounded.duty_length_ns, wf_rounded.period_length_ns, wf_rounded.dut= y_offset_ns, ret_tohw); =20 if (exact && pwmwfcmp(wf, &wf_rounded)) { dev_dbg(&chip->dev, "Requested no rounding, but %llu/%llu [+%llu] -> %l= lu/%llu [+%llu]\n", --=20 2.47.2