Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3858560pxj; Mon, 7 Jun 2021 23:47:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzyKUdZ26mXkBe9J8TlYti3fsp7aU80skmFw5OEvvBcWu6NV1XMNCTiZuGk9KnG8QV3iOmf X-Received: by 2002:a17:906:9706:: with SMTP id k6mr21536652ejx.456.1623134849920; Mon, 07 Jun 2021 23:47:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623134849; cv=none; d=google.com; s=arc-20160816; b=Bn4CVy7LnclYFAZ+HC2f9+xZQ8X3TaYnHF8Ay9off2/zXlAFXEeWAI2/FQ1qnas7ja xfNzvnPulFmD/bHjNwcI2lZqIBSHuH/GIXsgzimR9j9oFT8uF4CIn5D9XMchNL2pvllu ExxFXNOCiJhnVmUXNMcjMqTCrA3r/NMQhyF0991G0WAi0l/qRuwb3I6vXXkkCjsq/O7Y rUV7fraiTDXr2Q8ZNmi5/Igia6ORCWMhmxsanpjpV5/pTRJJIpol8EL+kP3dBqaRR6Uv sgonvsVWgOVC9Rec1TMmfam/3hjJU8FRD5OxyNEMv5DNRuGlJvJmdU9qGbXPkrN/kUHP LBLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=xEa5E/Cp/MY8cC/1rYWOmLid3CLXyLfoHPZ7Iez4YSU=; b=yLfs5jrRTk5ReuDg6KJodBnRs0qNNSgEHr485Fpgjd0O/1+Icu40JC05N076KtvGTB HoeS6xV2pDeLykNnh/WK3iWrRxrz5debgKoSTZGTVtRbl32O7MV09Cio/yA76URaIu6J 4mrrjiHjxgJ6OSqHMK4Vk+B+3sdyxVvE8WkkdpYUXDYsZ2e1iiSoStd3QuhJbzVEyViV eWXXBt//Z9fuOq+TpIw9g0yTkInm53gCt5YLJNW16dNDm/EokNEewptix6AM/e0Nz/Il BcxYr6udvBs1a0p2pCEUSu4vJy6mhf7X1zGKqpuGZ7FkvoAp61aPqYYHjF4uDHJXaZV2 6u+A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r2si14119457edw.385.2021.06.07.23.47.06; Mon, 07 Jun 2021 23:47:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230145AbhFHGrQ (ORCPT + 99 others); Tue, 8 Jun 2021 02:47:16 -0400 Received: from twspam01.aspeedtech.com ([211.20.114.71]:59907 "EHLO twspam01.aspeedtech.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229507AbhFHGrP (ORCPT ); Tue, 8 Jun 2021 02:47:15 -0400 Received: from mail.aspeedtech.com ([192.168.0.24]) by twspam01.aspeedtech.com with ESMTP id 1586UuVe088772; Tue, 8 Jun 2021 14:30:56 +0800 (GMT-8) (envelope-from billy_tsai@aspeedtech.com) Received: from BillyTsai-pc.aspeed.com (192.168.2.149) by TWMBX02.aspeed.com (192.168.0.24) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 8 Jun 2021 14:44:45 +0800 From: Billy Tsai To: , , , , , , , , , , , , CC: Subject: [v8 0/2] Support pwm driver for aspeed ast26xx Date: Tue, 8 Jun 2021 14:46:56 +0800 Message-ID: <20210608064658.14262-1-billy_tsai@aspeedtech.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [192.168.2.149] X-ClientProxiedBy: TWMBX02.aspeed.com (192.168.0.24) To TWMBX02.aspeed.com (192.168.0.24) X-DNSRBL: X-MAIL: twspam01.aspeedtech.com 1586UuVe088772 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The legacy driver of aspeed pwm is binding with tach controller and it doesn't follow the pwm framworks usage. In addition, the pwm register usage of the 6th generation of ast26xx has drastic change. So these patch serials add the new aspeed pwm driver to fix up the problem above. Change since v7: - pwm-aspeed-g6.c - Rename the driver: pwm-aspeed-g6.c -> pwm-aspeed-ast2600.c. - Macro remove "_CH" part of the register name. - Unroll the aspeed_pwm_get_period and remove it. - Simplify the formula to get duty_pt - Reduce the number of writting register. Organize all the fields and write them at once. Change since v6: - dt-bindings: - Add blank line between each DT property. - Change the sub-node name from fan to tach-ch. - pwm-aspeed-g6.c - Merge aspeed_pwm_set_period and aspeed_pwm_set_duty into .apply. - Convert the factor type to u64 when calculating the period value. - Using ROUND_UP strategy to calculate div_h for finer resolution. Change since v5: - pwm-aspeed-g6.c suggested by Uwe Kleine-König - Move the divide at the end of the calculation. - Unified the prefix of the function name. - Use div64_u64 to calculate the divider of frequency. Change since v4: - dt_binding: - pwm/tach yaml: Replace child-node with additionalProperties - pwm-tach yaml: Replace child-node with patternProperties - pwm-aspeed-g6.c suggested by Uwe Kleine-König - The bit definitions contained the name of the register. - Remove single caller function and fold it to the caller. - Avoid to divide by the result of a division. - Remove unnecessary condition in .apply(). - Use goto for error handling Changes since v3: - Add the dt_binding for aspeed,ast2600-tach. - Describe the pwm/tach as child-node of pwm-tach mfd. - Complete the properties of pwm node. Changes since v2: - Remove the tach node, #address-cells and #size-cells from pwm-tach.yaml - Add clocks and reset properties to pwm-tach.yaml - Kconfig/Makfile sorted alphabetically - pwm-aspeed-g6.c suggested by Uwe Kleine-König - Add more hardware descriptions at top of the driver. - Remove unused api request and free - Move the initialize settings of all pwm channel to probe. - Change the method of getting the approximate period. - Read the hardware register values to fill the state for .get_state() Changes since v1: - Fix the dt_binding_check fail suggested by Rob Herring - Add depends to PWM_ASPEED_G6 configure suggested by Uwe Kleine-Konig - pwm-aspeed-g6.c suggested by Uwe Kleine-König - Fix license header - Use bitfiled.h macro to define register fields - Implement .remove device function - Implement .get_state pwm api Billy Tsai (2): dt-bindings: Add bindings for aspeed pwm-tach. pwm: Add Aspeed ast2600 PWM support .../bindings/hwmon/aspeed,ast2600-tach.yaml | 69 ++++ .../bindings/mfd/aspeed,ast2600-pwm-tach.yaml | 87 +++++ .../bindings/pwm/aspeed,ast2600-pwm.yaml | 64 ++++ drivers/pwm/Kconfig | 9 + drivers/pwm/Makefile | 1 + drivers/pwm/pwm-aspeed-ast2600.c | 311 ++++++++++++++++++ 6 files changed, 541 insertions(+) create mode 100644 Documentation/devicetree/bindings/hwmon/aspeed,ast2600-tach.yaml create mode 100644 Documentation/devicetree/bindings/mfd/aspeed,ast2600-pwm-tach.yaml create mode 100644 Documentation/devicetree/bindings/pwm/aspeed,ast2600-pwm.yaml create mode 100644 drivers/pwm/pwm-aspeed-ast2600.c -- 2.25.1