From patchwork Tue May 18 00:55:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Billy Tsai X-Patchwork-Id: 12263383 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E2690C433B4 for ; Tue, 18 May 2021 01:00:15 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 66A7361090 for ; Tue, 18 May 2021 01:00:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 66A7361090 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=aspeedtech.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:CC:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=EekVzPuks64mbZLLXb3cRJ3eR+JPq+eH0ZSrkoN3Geg=; b=CFjYDgrLz9NfKdph5U6Tf9hvgL 9MD3hdRfW+z713FDnFAOkf2xLUjbv0sBSAc6BnEfkdOS5+328n8UNrn1PbfGXKn0j3CMcZfgaJ09z f2X+nwEnNR8GFfnBXtKzEzncqeVswnNe4XqQDLu0wm81mhRCAggMMKKX6e0cc/QEixQw6TBHauEJi 3pN9nbmRnlpjsycFfllPAjjaYMdE5n93O1bU9Z0sFeTb4BJGK29sp3dUJP8VVuQ2xIWyJhBT4gyf/ r3mdeZYpZaKHhsG7Kckj/uogTPp3pYwQNFo6OwmBr32jKCsVnvrv1OdPUCo9/kAetsDReECU8FhXI 0AZqb7zQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lio2j-00GZCv-5F; Tue, 18 May 2021 00:57:05 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lio2U-00GZAu-8r for linux-arm-kernel@desiato.infradead.org; Tue, 18 May 2021 00:56:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type: MIME-Version:Message-ID:Date:Subject:CC:To:From:Sender:Reply-To:Content-ID: Content-Description:In-Reply-To:References; bh=bvHmFvIFfUhC+HKjbdc1CXnO2gghBjUKXFk19LgajnQ=; b=RhYGc8+3EMUVjJFo9WFcxRS0sk hwgxO4IDyAM3WqKxgv8w4rGE2+lhszaDv7lYr3KQ0wuaerD97lbpjACt5yms6J8zUP1HAJ7fLe6c5 hVHYbGr8VAcarMuNOSHv8njvIMhdhhdTfUhj5XTqEKpdfhL275TbRFveyHlwHE2Ce9sHJz0z8K+en W9wILmocHzz8t6fGs7ARl2oZUjpR6jGXnfKWL3hAI209yAfnOos8brFxAKU/7yG7h7EoZ3TGfIKXI rHfLA4H9hjYBGHf14oQcELn9WnkiDK7cV/WLyr888cycFFroJEBF791M/JOdndcv4ISFb3nXcI93F 9j5UblVw==; Received: from twspam01.aspeedtech.com ([211.20.114.71]) by casper.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lio1b-00DXqd-Fe for linux-arm-kernel@lists.infradead.org; Tue, 18 May 2021 00:56:29 +0000 Received: from mail.aspeedtech.com ([192.168.0.24]) by twspam01.aspeedtech.com with ESMTP id 14I0gHdI065061; Tue, 18 May 2021 08:42:17 +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, 18 May 2021 08:54:48 +0800 From: Billy Tsai To: , , , , , , , , , , , , CC: Subject: [v6 0/2] Support pwm driver for aspeed ast26xx Date: Tue, 18 May 2021 08:55:15 +0800 Message-ID: <20210518005517.9036-1-billy_tsai@aspeedtech.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 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 14I0gHdI065061 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210518_015628_112200_336DA6B9 X-CRM114-Status: GOOD ( 13.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.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 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 | 66 ++++ .../bindings/mfd/aspeed,ast2600-pwm-tach.yaml | 84 +++++ .../bindings/pwm/aspeed,ast2600-pwm.yaml | 62 ++++ drivers/pwm/Kconfig | 9 + drivers/pwm/Makefile | 1 + drivers/pwm/pwm-aspeed-g6.c | 351 ++++++++++++++++++ 6 files changed, 573 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-g6.c