From patchwork Mon Oct 1 14:19:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?TWljaGFsIFZva8OhxI0=?= X-Patchwork-Id: 977265 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-pwm-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=ysoft.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=ysoft.com header.i=@ysoft.com header.b="wa0Lwq3c"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42P4Dk52Y9z9s4V for ; Tue, 2 Oct 2018 00:20:06 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729398AbeJAU6H (ORCPT ); Mon, 1 Oct 2018 16:58:07 -0400 Received: from mail-eopbgr00050.outbound.protection.outlook.com ([40.107.0.50]:42264 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729395AbeJAU6H (ORCPT ); Mon, 1 Oct 2018 16:58:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ysoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YABUggp390lSamPf/3FCSR1FQhG9c/1Evr82RVI0VMA=; b=wa0Lwq3cOBrvVuJF6cwmLAp4bKqYPMzOAvfed9OwXoGRknrzbUTFDuzgKEtCGvvNZlyXC3moa+OCyXRxouo3rpa8U8H5lHkO5rxHCq22VhSebfkuK/Z6jtsf5j5bmklZwBosgdrek+Njqsueg38eah80r5Bg0OyDtMjEpnpiezQ= Received: from iota-build.ysoft.local (89.24.100.190) by AM0PR04MB4659.eurprd04.prod.outlook.com (2603:10a6:208:75::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.25; Mon, 1 Oct 2018 14:19:59 +0000 From: =?utf-8?b?TWljaGFsIFZva8OhxI0=?= To: Thierry Reding Cc: linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Mic?= =?utf-8?b?aGFsIFZva8OhxI0=?= Subject: [PATCH 1/3] pwm: imx: Sort include files Date: Mon, 1 Oct 2018 16:19:46 +0200 Message-Id: <1538403588-68850-1-git-send-email-michal.vokac@ysoft.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 X-Originating-IP: [89.24.100.190] X-ClientProxiedBy: VI1PR03CA0048.eurprd03.prod.outlook.com (2603:10a6:803:50::19) To AM0PR04MB4659.eurprd04.prod.outlook.com (2603:10a6:208:75::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 78e65dca-7156-46af-a67b-08d627a8f86f X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB4659; X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4659; 3:yTZmjqryHZnKMWM6S2sdh1HS/SDTSJccxJbtoOW0+NuqttTMnv8WDEwc+L9Hc34j+eNeMyGELq3d2T7f1JnWguiyHaZuTQNAopFhzxJGIfvUm/i6LG3x2GrLQ5jid9GBn+24WdHRz0zC4fqQO7eWE5uvVsS7G6Arl/WUg4Q8a44tmsKuP4n75dzWWcOiVMsmG/d75FdFYGt8GVTxKpDOypPqrJbHn3kGeDxytb4n5BmCXpaqIV+z6MjwWqDRPtO9; 25:wW9fk1QytKMEW3zWWgOEk6pPBd0fzAN+l/XciobNlpyJRmiuI85yk4ldgdPNocotl6we+8HMgSsTmgGe4qkJut9ntQJQu6tl9dDnr7MSMCYx9283NyFK4gQXhZ4BmAw8cSzk/LLeTE0lGND7dexwuRgQyn+D/6MfD0//BNHIjoDoaD1BCQ7DdaZsYnAg7qNOHz4NaxV8F/7Rwcyv8gb/JLx7Cgem6diFAGQCJSnpvuOzEFEb8aCAkewrlcOA2tFPv8vpfjFKRbuKzDh9Om1s0Tzfv6VCn4BXAzWDxOD19uI8DbNXijHlH1iKo8XPJoZnbZuBAYaLw7iKUFOJXRTdLw==; 31:NsuB3gbu9G3+eDuwbdmIoZAX1DWYOE/0t6uGvhhwts7bB/d+FwQ0MkDmPLZj9I5H/TEg8KlEKUCC1gklFdbdqOmcFpvLdLS0dvWVUmCLlEQAD2adPik3c+H06NIytSXR2kpbNPOI2DclmQQhrhR25ZM0XMkY4KnxoFv9omOeM62wGEpjniMIk4ckccY68o+yx2FMPlmv31MISgW8Ng9lUSo/xZD5CpkSNGaTgy+kfu0= X-MS-TrafficTypeDiagnostic: AM0PR04MB4659: X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4659; 20:RcVY6GwtYMbrs5bPF4h9tflD1H9+0YfmCct/LK1jJZ/3QgTuyedHf+P/yJR8kNsB0yMav00XR/ibpDxPgelRvFFBYr/9g6zho82zDwIZYEJDssCcKwLpLXDKhoK/K5d2sIhYThqM7Zl2D3a6mn27bOXGMDUaSSCAgIsIqyGgDZIypGR8dXbbb6Eir9EetT4PRYKaD8dTGqTrLecTwr+AIS6b08mbExyGlVCgRcqiN/rjEH4+OKJUrfmeeYjoXTQG; 4:OoU9c22Q9gSYY0Tl99RsAPdD4zBbjJ6s7P9pw8p850DVv+n69y6dzwHBQmUrLHOcozeNLisCqCKu5Z1MaEXXsB07CFt5k+ECAhCv+ILGagEJ8KQ29yeu5z4YwtnVCpUIZYzLKdgSceWL7qQrlDKE+qY4Gku4yex8hp4sTTv+0eGYoUOaQuJ+bQuCd/9A0DNd9Txgh14yuy1uPichg6HcZE0M7jtIulNDokhIr2wu1a12RHstJsAq3RFhQkCh8pOwoAWzELb94xutYtEgWh0iBQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(149066)(150057)(6041310)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051)(76991041); SRVR:AM0PR04MB4659; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB4659; X-Forefront-PRVS: 0812095267 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(39850400004)(376002)(346002)(199004)(189003)(6506007)(386003)(6512007)(316002)(36756003)(3846002)(6116002)(53936002)(34290500001)(23676004)(86362001)(52116002)(6486002)(6916009)(476003)(2616005)(956004)(6666003)(50226002)(68736007)(2906002)(8936002)(5660300001)(81166006)(8676002)(81156014)(486006)(97736004)(105586002)(106356001)(478600001)(72206003)(25786009)(4326008)(39060400002)(186003)(16526019)(6346003)(26005)(7736002)(305945005)(2870700001)(107886003)(50466002)(47776003)(66066001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB4659; H:iota-build.ysoft.local; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: ysoft.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Michal.Vokac@ysoft.com; X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BAM0PR04MB4659=3B23=3A2rtg?= =?utf-8?q?nestqb+SVjVcjVyXZ295nU2PTmFa5KwIfGHZtxzoPQ696xzIvQlk6EKi?= =?utf-8?q?huLmDWWKF+lPLXhbkwrCGR8V6s8DfVekB4cvuFWyvRF+AQOF+uDs6xC4?= =?utf-8?q?IA7NPpIVA2zxRVwemvo9PSNZ3EGfyTh+gOLiZ3r7WjBYzPnDzS7KvAaP?= =?utf-8?q?AeoDZ1TO1PXA03yrNu3h5hjeFFH3XA0nXcrGhOe3Lau2Mxjf4RbuifMf?= =?utf-8?q?cEhe/PjMclxcb3aEcyi/+GHlpnK4/sRhWl/3VTK93FKmvLpUzn+5gMJ3?= =?utf-8?q?2nnAetbAMyQssdtfnniRV798GIObSUenjZXQdubELWBFzGSo/YhCD+XZ?= =?utf-8?q?eT5tDYDoqDQPsessPad3lQ/xVfNQUFSGJ+0F1EgU5/IOOdDdiSDpAlx7?= =?utf-8?q?Mf4ojWCa/5eUBrBBffqCZ1VWR+/8bXK67ywHk/6qNB6inE0dn4QVlQXN?= =?utf-8?q?bTZPd6xVIzht236tkTcL8SLtoXu7NGB4IaCn9plvH5RLtdpn7SEsM4Ch?= =?utf-8?q?DTq9PRhtaSDtkKyQ2gbdS9eCxNDm25twShxXFD2e3D8e74la6yHRXQtu?= =?utf-8?q?j+XNwziO15e0LEwcacJ6Nbc1aFOWjux8Jzl++gqWbT9Dup6Oe599S9RN?= =?utf-8?q?VibilSVFNmvgpDm40tPzB7Cl3s0UHpIinlY7+1SiWjBeKtnDP2/IAfkS?= =?utf-8?q?lxd7mTL7GZZyXJf5iY2Wl3io7lMuSzB9HNIWQGSzpcLCZZu/ZyocKHyJ?= =?utf-8?q?nwgprgNY4wa8UxX65VBz0Lu7IzYrx6QsqMT0Lsk+pTMxXA1uQ6d0jM7M?= =?utf-8?q?V3EIc8StvCh1kJasEqRwn0grrJWPx3uXcFCH/jqFKJISxcPVJj26aWfH?= =?utf-8?q?/3ug50IdRBUoRtFyP8sklEgjz9ITC2v1/56KTZtfBWI4nQpWYs7FupWa?= =?utf-8?q?zRCsrMH4WxazBUEwzK307r/tZz6z46jpB8HWKyZzJ5DwIyUVuOTqNXHx?= =?utf-8?q?6vr/Tj+5pv0nMMaaxrb1xYX1mgDqXIHSsarWUgdOGglSE8CEpZdet8vq?= =?utf-8?q?wmcfCYiIVoSa8d2zPCkcEpWMaRN1oW8Qqs4wSCIzJQU8YBvx9brIsZVk?= =?utf-8?q?ebh3/hvGOCMKcujPmPNmjw83BdL8ZtV4n1G7alzJ4+/YpNIdm56knIOF?= =?utf-8?q?gf17iUwSdbXNz/ITrFSYGaD87LPkj2xozqZkTm9UMFD/+yjyhNC+GCDN?= =?utf-8?q?peszlGWGR/KZsLvzzNR9ggMPIO3+pM+ppiI5?= X-Microsoft-Antispam-Message-Info: 7yK+/y6KtvP55LhS5fHoAKB6QglnWLYRsp5OH5cptC0kER38jU2ZA//UngQldBN1lV81SHPiOmh7jtMbgouldBo+jCuBqhZtNXeplczc8lf7EnqN5vjLEUcFMT8G0n8x/Cnl4BlI87E/7nM0CpqsINPsx6Jgl/2+qU91ggJp5Wgo/Df4G2C1BnfyKyE8D53dvLgquQ7h3mnAYS7mpZsvnLCaV1lrAIHsqmeAmFVACrAgKAcwYnjlb3sHkhHD383gvcQI5Oztz9RojwlZ/cuJrGQTeS2NDWvjm24QZtpCr6NOOBE8lkSU6lt8mPq+65j/Y4oUMFPjFeEDJ+zIpK89jccFoCB/6MTt0lIPmWrYPdo= X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4659; 6:F5bjMgjrtxzIWB/KG6aFNcr4lbpneMS95nvQMBKYfnW6BjZWP10R+Kz6cJMbMLKDXs0aCB0pOKgF8u8WtEmblNQES7toSTqQkcaEoo687EtU7p6LWardIUzSBKHSr1OLKLzO6765ex4m9lr/An6J0leWyO/Im+JbRinSbSihpQDNHJMSPDPou1/I61/9vozPJm8ilDzkz6gLS66v0gUtdxcol8BrG7NJ4pLJbyMW6u2tujtU05NxsEShQf2pzDNvaeuwe+EppHFajIXQdddgNtRxZQ+Ti7u5aROR6sRerQXdOgAb6/+n6+tPtY8z/AoIA0uyIp/+JP+vkq/2Hyt6Y02jQzR2B4PhvH8HbW6Y/qDfaA4sRXONUcFTHiNQR7N+nKLfZdkOrAhEY4wG6yBSyM5hOLXatRSPVmZNrsTkgbdIvLWBLYv8MI1XBwQYnGQeBV5tspLM9INPIymrZ+g/fg==; 5:UdrCNbbE60iO6UO4zZrRIXo05VEvCxCR7YQNZme8Ia27p2HWf8XkjjndueZLQ8uOWsKQISGmVVHbNss4FKhwQfOcPHli4YZe7aya5yGLeTXxsq3VJwPwbKJXQIFqkl1cSxhoZmqM2J56q832a4O0RQLtDHwZvsWxZibeRcqu/Lw=; 7:tZN8BqB9Wzdan4XaKygqyQwq0iFRmZOpLou25AyPTAQDak88iI3KJs0PwVpGSefglBWdkuBQKmYANsMJWld3732DP4l0ZNhM3BrA/qsdvjVoJYKIIq+1287RjvaPHNBVZang4+UreLwLfLfN+2Sr2O1ILWBWXjagPDo1E+lj0WwyZEvT+9P3w9myNZGkWPvziDRs2rkUcn2WQVoRHTp645j0HkUq+G58EY1d0/hhaI8Ft/6XqxHoXusYiFxDo+fw SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ysoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2018 14:19:59.3215 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 78e65dca-7156-46af-a67b-08d627a8f86f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b5839965-430f-4be2-b282-d7a3149f2b37 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB4659 Sender: linux-pwm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org Sort included header files alphabetically. Signed-off-by: Michal Vokáč --- drivers/pwm/pwm-imx.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c index 1d5242c..bcbcac4 100644 --- a/drivers/pwm/pwm-imx.c +++ b/drivers/pwm/pwm-imx.c @@ -5,17 +5,17 @@ * Derived from pxa PWM driver by eric miao */ -#include -#include -#include -#include -#include #include #include +#include #include -#include +#include +#include #include #include +#include +#include +#include /* i.MX1 and i.MX21 share the same PWM function block: */ From patchwork Mon Oct 1 14:19:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?TWljaGFsIFZva8OhxI0=?= X-Patchwork-Id: 977266 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-pwm-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=ysoft.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=ysoft.com header.i=@ysoft.com header.b="FXCd5Bct"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42P4Dq1QKNz9s5c for ; Tue, 2 Oct 2018 00:20:11 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729530AbeJAU6L (ORCPT ); Mon, 1 Oct 2018 16:58:11 -0400 Received: from mail-eopbgr00050.outbound.protection.outlook.com ([40.107.0.50]:42264 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729272AbeJAU6J (ORCPT ); Mon, 1 Oct 2018 16:58:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ysoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aCe8FG4/Mz4NvX5trCge4u7yH0hCkDIqhLumUMeuZYs=; b=FXCd5Bct/5D51uivs8LossmEx6W9l1mA9Scc6Ovqc6BVBsPIzEbMhGNIKa2pXalmLyROQ/Ed2UAxoQAULzy5p+S/jnImjfYRnoMb+3315wchYEemUuYeqDMNVUKAzatcHal+7Iujh6DJZ2C7kyzytsTNeAXNHmr08f+wIVzrRXA= Received: from iota-build.ysoft.local (89.24.100.190) by AM0PR04MB4659.eurprd04.prod.outlook.com (2603:10a6:208:75::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.25; Mon, 1 Oct 2018 14:20:00 +0000 From: =?utf-8?b?TWljaGFsIFZva8OhxI0=?= To: Thierry Reding Cc: linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Mic?= =?utf-8?b?aGFsIFZva8OhxI0=?= Subject: [PATCH 2/3] pwm: imx: Use bitops and bitfield macros to define register values Date: Mon, 1 Oct 2018 16:19:47 +0200 Message-Id: <1538403588-68850-2-git-send-email-michal.vokac@ysoft.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1538403588-68850-1-git-send-email-michal.vokac@ysoft.com> References: <1538403588-68850-1-git-send-email-michal.vokac@ysoft.com> MIME-Version: 1.0 X-Originating-IP: [89.24.100.190] X-ClientProxiedBy: VI1PR03CA0048.eurprd03.prod.outlook.com (2603:10a6:803:50::19) To AM0PR04MB4659.eurprd04.prod.outlook.com (2603:10a6:208:75::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 87be7f75-4dde-40df-79b4-08d627a8f8e4 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB4659; X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4659; 3:SdhUADnb51ebN5HKfszolJcqSaRsDJK8irdr+uJUsr1Xp/Acx5hpvWKSn84kuMXO3SfR9Ut0AhwTZpFT0FliGZmzNLKbfxRlhmZ8m/Ci/FKj9nKhh7+kE/IaPiA1EY8DJ7M6UFIwB/Y33Jx3taVXoYOPMTxpu+GM+nVJhbf7kfFHvjGblqQTP5YPrr/3VBm1TacoL8NeKB9T6JOVR75VMl7JxGnzxgN193jZ4LcTg9XZnoCUymRUpCNDome+/MNO; 25:CkL2/SeUwSn6ESox4NiXwN0Ab0hOVH/4QfX276WzxrZyUV6oxfQyjKRvgEGSuW8HWbIDOgXBwcZvrBUja65Q+6pwsjpxdrlcKFlCqiZ5gB28NiYExVPtCI7CYCPPeHu2L8T1APpllvJsYLZ7uwDjxQuvR6+B8rGszhwQY4bVW1dCBOhDMe9boLiGGWYN8SKrRt6krkGw/SJhVMqv+kLs22hBBfPysWYXZf5hf9qlrl9YUu/8K1a5473hosvVT5wEMyJ4HowhFwozz4BbyFt/HfAMSkw3oDzH6kRfEYe9Do5wx9kohNa/+kwF4E/U4MUUpMyWOxpBew/19AygFbreAg==; 31:ecKo36ZwBXqgBycuMZ9XONYAVuIAxrXQ6ao73BHFASuYAEUueBp37aFLGs1Nx+dd2KpJi4oELzBDfnvYSOSNwp32n5GMfZhD4DI3uAaHTIJ37Dflp2dh4TJxh2A4kiDQp06CufH8SaxdXj+udJvgeLJ42BddCHjJSl/laBx6Vb5T6cxpSwJxCEtiRdTT7iGIHQw5VZ0/9iZoYx3n4S3bFwS7jqS5l7UU1bE61rgIFDc= X-MS-TrafficTypeDiagnostic: AM0PR04MB4659: X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4659; 20:LoAXQWvdkxmjvKgRjq7O5QZZgarFOkvEbXNXyISeS4ENiuHsU164w1elm+gJX7h0yz0x/bK5DmR16sKMgZ4CQCP4BrXCZJuS2emfx9i2z/0fu+DbWYVYLtgv4E48awkcKw7PHTu2samNri1fSUuRbQ3qY2IoGUtz3dm1jfEDF+s2VYKP8puAFDCUxLDD/5LJEC+3kShdjeqxNVGq+fk16V43pNdr42CkWQpsh3o7aIHsfJApNGLiaNMFC7kpFLUa; 4:nj/wr69/6fuyyqYOwNsjkVigF/+si8LxuiP1Bjq5Mln5/SISXxgULCC9KoqVz5Bc4n2Dt7e5pq83DOflU7Utv8FQxP7nhRc8Hhht+lIZi+Ma4f+tw3E6w5GP8BBRRAe/iTEEPZPL9dt2E7q8qvv39MxXeaMa/Ca6rBJ5GCy+ggWfXW8lomjeMcBgFbiAJHRbX8H+Lgy4TrxU8aCBgWu5xdw+X06xVLgjPKd2zGHGsMAoYBrCdF2ME96F2/DOqdB8RZP8vkIHY2FXXiARoxrLuA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(149066)(150057)(6041310)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051)(76991041); SRVR:AM0PR04MB4659; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB4659; X-Forefront-PRVS: 0812095267 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(39850400004)(376002)(346002)(199004)(189003)(6506007)(386003)(6512007)(316002)(36756003)(3846002)(6116002)(53936002)(34290500001)(23676004)(575784001)(86362001)(52116002)(6486002)(76176011)(11346002)(6916009)(476003)(2616005)(956004)(6666003)(50226002)(68736007)(2906002)(8936002)(5660300001)(446003)(81166006)(8676002)(81156014)(486006)(97736004)(105586002)(106356001)(478600001)(72206003)(25786009)(4326008)(39060400002)(186003)(16526019)(6346003)(26005)(7736002)(305945005)(2870700001)(107886003)(50466002)(47776003)(66066001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB4659; H:iota-build.ysoft.local; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: ysoft.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Michal.Vokac@ysoft.com; X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BAM0PR04MB4659=3B23=3AfYWD?= =?utf-8?q?E94hUdMvdSqyQgaJ3RoQHvl7+yP37qlgQdZRNGNy+gojKDxBraerpTBW?= =?utf-8?q?LW6ac3lk0pEVth6dFqmr89S/4eRDWZb18zIZ1ZA6VkfMDb0lxN5gWptm?= =?utf-8?q?+mQ06zObfcPYJxXwArPO37hhirzQr0HAmM+itBaIKyCGu5nRJvzCkcHh?= =?utf-8?q?pro4GxHolxAS370wpFzPYJ5Z8RBXxCTWXObkU8YsmF0x6ecXSVQZOh6C?= =?utf-8?q?hPXyQpP3iZ0FCQksfpFugkrSenC8KcMprloea9yeJfFx5YPb5pxLrluZ?= =?utf-8?q?r/2gvnH+1z9TDcEZpFuNYVk9+Hg3v3En5mz+bXniVSlWdJbic6RdPc6e?= =?utf-8?q?3R9AelUONmMkhoZltxNJiqrHyzPZrdhuVtQYFjyDwwVMmmZjRHpxFMsJ?= =?utf-8?q?zVsZlOQvYITJCwv+cRQhSTbk6MBYcAXJMmVxEIM1Qb/jtNRvHpVXv8pm?= =?utf-8?q?vN2ZW3v1vbCbMhPzYcgv1G7uNcRyqcw+X/VrepjpAHdhxsNPmeobiChu?= =?utf-8?q?rmzPhneskuhkdIMsCFbcqxPH2+KJg0ligdQZjBa4+ZQsAtjURG9luoPM?= =?utf-8?q?hrFGxTTxjLKCx+ofty1IJgp0cv0q1cpne4ofyqhKfWU+986nQIq1XXcc?= =?utf-8?q?sdTM6PApY3/vc0iZKr/s4mfPFdRIpwcg5Q4ToX7hFAh9k2JQIHDqNUjz?= =?utf-8?q?pX9yrihBWhmPx00Rsf22rxXKaUUlK33Ehy2soQ5cVJRvfSwW1dAXWaPP?= =?utf-8?q?5F1cvhwgWpRdH6jCC15eW5sGutvZ1mIFPEyjOTBju4Q9S3PfTbMoIq3C?= =?utf-8?q?ZzRCbLHNPOK4/CXx08rYsReZKGmvjooqgptldrQ32rGxuWuJ7RLj3qXi?= =?utf-8?q?QGw60nO9qX5AiKUxsDgoKiFIanwb8JPED0+nv7RBfY7NU96xCDFkhwIG?= =?utf-8?q?MQeOhoYiNSEoxLlrqmMEyW7t7JXowKWsJhhBfw3+B3ojMBIwPFAyrgN5?= =?utf-8?q?afzkscT4L+LDHteDBH0yPcU4nXoCCgraWVCg3LQUzbsV+810dx4PrZ2k?= =?utf-8?q?emjfguGXd5hPW7p/HifE81DO0P1zEciKagoj8MpX2EkaDMXj/eAIjR5W?= =?utf-8?q?aavYOVC4dsBP9654cwv/GcY+GbaWEVPYN3DrVKZmduLJfUQ6ft/emaPc?= =?utf-8?q?n2ZSqy7nbCYX2xKq+qvhYu/NoCIcwlhtU9zGv49zqhuDzZb8cRPXypiR?= =?utf-8?q?zGLptHgvL2Rd/mRYDnerMCh0stokHbb2TyXg/qe5hgYoOMjjafB0dS1p?= =?utf-8?q?wqc0hLWkv7BkhdE3hcsKF5mWf2PIh+J/mcf8UVgsaiwotp5PNNsuhsdj?= =?utf-8?q?0y2KKtX4aQ=3D=3D?= X-Microsoft-Antispam-Message-Info: +bwC/NJ/WQUEAmW6s3alT7czpeCyOP0nbFYMm5KbVx0Yptg+ZwVjRlhcnN6h6NlJE0qY/aayMHpxpX57Cdsr3ua+P5eVNMllj1WbXJs1ZGeUoq58jlK9/619nWlb88W7w4bT9W/RqLvUcpOO9hL5i7gKUgsSPA3HTcOZR9FkTXmFGllz3/MBMmyliMGDUit4W97f/zSzzxJff/oK3LFEpd6lGyr721bXw9KSg2KD65iY9fNiFkf26zNAqnt696hmMB/D2ioy0k7Sull1CYSKTzb62qWFgAVYIZkp4xxf99+5CDuDP4k/nb3NdsApAtYrv+j2xkwxKKwZkHyg3Dsep4x8/v4yXauHhWep+tvXXJg= X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4659; 6:06CjYxb8GmARXJb0Zo6VrVyCo+n+gLKskuUnK0LjXbZOl3lq1vTWuVb8Tbd2eCbDJs72N8wHBnnMBYfIztuVzU6g5KY5YuCqT/sVOTXyWbPOEfMs/b8UI8CFJ7bb+tF5Bm5NrIbw0QWRIGLbGE19JX5RYNArn432rXZpquk9ich/S2GmjSJ3AfZ4FTC1yiRypU6j01imsyHhpH4FpWw7+xnlqd9o8DNy1lXkAuMqyQLsGuTxSuPoUPG7SaRwxSj+ZWQVR4TlwBrkJOR/nckRXGnnbD9m6EfLLxMmh+QWQOXQO5Gg3TgmzHNXSbX57Q7GLZniWtRfOFv5p2H5P+OBLdr/XSZwPy/RSzN5Q23CprOXjUZ9DSjHQ/NjCfzxvcxJ9hzCJ1X/2yoKyABJFNWGG7/2Jot/ooLKYepoSHRq3lYzcfGu9IQKjf/kVmLhZD6P4LpjDMsV0KdjCHZ/HKHiFQ==; 5:UpOh/QKUceqngDocpHVtrQ/hzYTzkNthTUk+3WSuHcMMbla2m9MdtWxooCNb7WLi2nO8o1wF5TQCst0o+WgF2W2q7IT/h9jdHgetAvvX0ghuUbNA2b4KUEBa2L9pN9RHYmeItR1N5V/3Y7+4BERrkKoK7wnDk8k+2d5/SsToLJc=; 7:lWj40ecI3MP8D3WGdN/jEZlfkJARunigUlPODBDTpJgsJIi6sFbs9fZriNCQ6UcRmW1ZN1wW7bVn1g8+YnwaWm7U5YBxwxoE0AxDGvE5EMUyjI23j278OEm7L4bGnLYhR4Kt/jPZomxgWbPyFi5NdhspPPsj+z1CP0EbK3GcPVvlQZanFWdKBIGzlwq2guu9T4IfH1DqL26q3CYyTiNp53ysHO32a5GH/xAz9w8O8q4JYfF7VNV38XsGsoHCYB3h SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ysoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2018 14:20:00.0715 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 87be7f75-4dde-40df-79b4-08d627a8f8e4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b5839965-430f-4be2-b282-d7a3149f2b37 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB4659 Sender: linux-pwm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org Use existing macros to define register fields instead of manually shifting the bit masks. Also define some more register bits. Signed-off-by: Michal Vokáč --- drivers/pwm/pwm-imx.c | 78 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 20 deletions(-) diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c index bcbcac4..7a4907b 100644 --- a/drivers/pwm/pwm-imx.c +++ b/drivers/pwm/pwm-imx.c @@ -5,6 +5,8 @@ * Derived from pxa PWM driver by eric miao */ +#include +#include #include #include #include @@ -23,7 +25,7 @@ #define MX1_PWMS 0x04 /* PWM Sample Register */ #define MX1_PWMP 0x08 /* PWM Period Register */ -#define MX1_PWMC_EN (1 << 4) +#define MX1_PWMC_EN BIT(4) /* i.MX27, i.MX31, i.MX35 share the same PWM function block: */ @@ -31,18 +33,53 @@ #define MX3_PWMSR 0x04 /* PWM Status Register */ #define MX3_PWMSAR 0x0C /* PWM Sample Register */ #define MX3_PWMPR 0x10 /* PWM Period Register */ -#define MX3_PWMCR_PRESCALER(x) ((((x) - 1) & 0xFFF) << 4) -#define MX3_PWMCR_STOPEN (1 << 25) -#define MX3_PWMCR_DOZEEN (1 << 24) -#define MX3_PWMCR_WAITEN (1 << 23) -#define MX3_PWMCR_DBGEN (1 << 22) -#define MX3_PWMCR_POUTC (1 << 18) -#define MX3_PWMCR_CLKSRC_IPG_HIGH (2 << 16) -#define MX3_PWMCR_CLKSRC_IPG (1 << 16) -#define MX3_PWMCR_SWR (1 << 3) -#define MX3_PWMCR_EN (1 << 0) -#define MX3_PWMSR_FIFOAV_4WORDS 0x4 -#define MX3_PWMSR_FIFOAV_MASK 0x7 + +#define MX3_PWMCR_FWM GENMASK(27, 26) +#define MX3_PWMCR_STOPEN BIT(25) +#define MX3_PWMCR_DOZEN BIT(24) +#define MX3_PWMCR_WAITEN BIT(23) +#define MX3_PWMCR_DBGEN BIT(22) +#define MX3_PWMCR_BCTR BIT(21) +#define MX3_PWMCR_HCTR BIT(20) + +#define MX3_PWMCR_POUTC GENMASK(19, 18) +#define MX3_PWMCR_POUTC_NORMAL 0 +#define MX3_PWMCR_POUTC_INVERTED 1 +#define MX3_PWMCR_POUTC_OFF 2 + +#define MX3_PWMCR_CLKSRC GENMASK(17, 16) +#define MX3_PWMCR_CLKSRC_OFF 0 +#define MX3_PWMCR_CLKSRC_IPG 1 +#define MX3_PWMCR_CLKSRC_IPG_HIGH 2 +#define MX3_PWMCR_CLKSRC_IPG_32K 3 + +#define MX3_PWMCR_PRESCALER GENMASK(15, 4) + +#define MX3_PWMCR_SWR BIT(3) + +#define MX3_PWMCR_REPEAT GENMASK(2, 1) +#define MX3_PWMCR_REPEAT_1X 0 +#define MX3_PWMCR_REPEAT_2X 1 +#define MX3_PWMCR_REPEAT_4X 2 +#define MX3_PWMCR_REPEAT_8X 3 + +#define MX3_PWMCR_EN BIT(0) + +#define MX3_PWMSR_FWE BIT(6) +#define MX3_PWMSR_CMP BIT(5) +#define MX3_PWMSR_ROV BIT(4) +#define MX3_PWMSR_FE BIT(3) + +#define MX3_PWMSR_FIFOAV GENMASK(2, 0) +#define MX3_PWMSR_FIFOAV_EMPTY 0 +#define MX3_PWMSR_FIFOAV_1WORD 1 +#define MX3_PWMSR_FIFOAV_2WORDS 2 +#define MX3_PWMSR_FIFOAV_3WORDS 3 +#define MX3_PWMSR_FIFOAV_4WORDS 4 + +#define MX3_PWMCR_PRESCALER_SET(x) FIELD_PREP(MX3_PWMCR_PRESCALER, (x) - 1) +#define MX3_PWMCR_PRESCALER_GET(x) (FIELD_GET(MX3_PWMCR_PRESCALER, \ + (x)) + 1) #define MX3_PWM_SWR_LOOP 5 @@ -142,14 +179,14 @@ static void imx_pwm_wait_fifo_slot(struct pwm_chip *chip, u32 sr; sr = readl(imx->mmio_base + MX3_PWMSR); - fifoav = sr & MX3_PWMSR_FIFOAV_MASK; + fifoav = FIELD_GET(MX3_PWMSR_FIFOAV, sr); if (fifoav == MX3_PWMSR_FIFOAV_4WORDS) { period_ms = DIV_ROUND_UP(pwm_get_period(pwm), NSEC_PER_MSEC); msleep(period_ms); sr = readl(imx->mmio_base + MX3_PWMSR); - if (fifoav == (sr & MX3_PWMSR_FIFOAV_MASK)) + if (fifoav == FIELD_GET(MX3_PWMSR_FIFOAV, sr)) dev_warn(dev, "there is no free FIFO slot\n"); } } @@ -207,13 +244,14 @@ static int imx_pwm_apply_v2(struct pwm_chip *chip, struct pwm_device *pwm, writel(duty_cycles, imx->mmio_base + MX3_PWMSAR); writel(period_cycles, imx->mmio_base + MX3_PWMPR); - cr = MX3_PWMCR_PRESCALER(prescale) | - MX3_PWMCR_STOPEN | MX3_PWMCR_DOZEEN | MX3_PWMCR_WAITEN | - MX3_PWMCR_DBGEN | MX3_PWMCR_CLKSRC_IPG_HIGH | - MX3_PWMCR_EN; + cr = MX3_PWMCR_PRESCALER_SET(prescale) | + MX3_PWMCR_STOPEN | MX3_PWMCR_DOZEN | MX3_PWMCR_WAITEN | + FIELD_PREP(MX3_PWMCR_CLKSRC, MX3_PWMCR_CLKSRC_IPG_HIGH) | + MX3_PWMCR_DBGEN | MX3_PWMCR_EN; if (state->polarity == PWM_POLARITY_INVERSED) - cr |= MX3_PWMCR_POUTC; + cr |= FIELD_PREP(MX3_PWMCR_POUTC, + MX3_PWMCR_POUTC_INVERTED); writel(cr, imx->mmio_base + MX3_PWMCR); } else if (cstate.enabled) { From patchwork Mon Oct 1 14:19:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?TWljaGFsIFZva8OhxI0=?= X-Patchwork-Id: 977267 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-pwm-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=ysoft.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=ysoft.com header.i=@ysoft.com header.b="YTZ91v5+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42P4F142Gnz9s4V for ; Tue, 2 Oct 2018 00:20:21 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729272AbeJAU6Q (ORCPT ); Mon, 1 Oct 2018 16:58:16 -0400 Received: from mail-eopbgr00050.outbound.protection.outlook.com ([40.107.0.50]:42264 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729496AbeJAU6Q (ORCPT ); Mon, 1 Oct 2018 16:58:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ysoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=y4WpLoYFGh3+O1tIs9fwPAsNirbxGRcpPCs8xFqOTHI=; b=YTZ91v5+rZlB+jr24xdEXO0hQ882GSnFL2HSHF+zR6YM+DojnsmdK8SwO/X4EUZbRgrZbxXq+5HT1oiQXsp/rtZdMbMfM4gSK+w5OAxuhH6SVhDz3Ic8EbZTZTj7tqbHw4fQUWAtIHMVKrwKibwzQwyZTSrA+v5XSoFN3q5WT4Y= Received: from iota-build.ysoft.local (89.24.100.190) by AM0PR04MB4659.eurprd04.prod.outlook.com (2603:10a6:208:75::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.25; Mon, 1 Oct 2018 14:20:00 +0000 From: =?utf-8?b?TWljaGFsIFZva8OhxI0=?= To: Thierry Reding Cc: linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Mic?= =?utf-8?b?aGFsIFZva8OhxI0=?= Subject: [PATCH 3/3] pwm: imx: Implement get_state() function for hardware readout Date: Mon, 1 Oct 2018 16:19:48 +0200 Message-Id: <1538403588-68850-3-git-send-email-michal.vokac@ysoft.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1538403588-68850-1-git-send-email-michal.vokac@ysoft.com> References: <1538403588-68850-1-git-send-email-michal.vokac@ysoft.com> MIME-Version: 1.0 X-Originating-IP: [89.24.100.190] X-ClientProxiedBy: VI1PR03CA0048.eurprd03.prod.outlook.com (2603:10a6:803:50::19) To AM0PR04MB4659.eurprd04.prod.outlook.com (2603:10a6:208:75::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cdf55130-912a-49f7-2755-08d627a8f933 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB4659; X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4659; 3:KWnIfWLzffn/jqNt0oHdqR64XHJ6lAnwplgqALaTiqxvfDmNdpTdbYTy1QpzboX+ZVRJQP4c7uYBEKh5B4dzk95Xg3yydu+sGuMkWQOl0JGa83LMbAYPZXn1ciQ+Pey6B02kiD4cAiIrrKoFZb9kDgIfYNo4lT3FgY+Pzt2V8I7mwnvW15D9FKzEzcWo6q+XDVKL6grYiFzv/4dRrpaI9ENPDgWWaBhOphLdd1qXqDFzaWts24afK1Tom3ftdCH+; 25:u3apLlDa9POzpKsWr7rw8SDx8Gd+D1gNuO6fSp0fsUwEEQdAnfZfQ9U/SDgYQB79WRNO7nFpXfdAlk2Pu43BNG+CgW5nTBhV59P5rCYJU2kCIRt8BqdiPE197a0cBvhux17QbL5UYRZ0NX3Gj6xJnltP4zzXVPagI1bfYxPiBwLu0d7uiF2WSTYLxVUeIaciZEilwTvv/u40fEEwnCDan1le9UDCuvF5X65W0+2u80junJvFiTrFNkwY/JUtnD4eGlCei5u4t3G9+4xwvWUC8kJezLndnbWL9r2HtSvUBeWmSTGbGADccOB3xyZdqNsdTbNbZ4YG2+CzAhmH/DuExg==; 31:uKsvvpy4JF1dqyhlLv7zhZgmqvq0LOBcRGHvt/yJ3kwfs0erqnVevSj1u9058QdDfTcDjXWsxmzr6uJNqSHn0F8WzphigkPwMaPSYXitTQIKunejnXh5bPq1W69x1iGEyQl6AterCAJxiku9gUZs425OmDnfl1gCCRmm2XkrRSw3hKk5QMhmuM1FFpfeA3gdzslrAAJ2Iw9OfBr7YJuUONrUdC2VpHMnwZ6Q6nQO2CQ= X-MS-TrafficTypeDiagnostic: AM0PR04MB4659: X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4659; 20:EgEkInByUYkw6KcVF3H9sGcJlog3J7ZSMsGNBnl1s+lSvdkDV+Zee39zMtg95aeDhzNuZp8ORqyO/JTSKWrTsTUonOLqSZg6RVtmE+bFfhxkUrjSxC58IdTl1s2z7ClzTjsjudLsFUrgqkw3He5H4n1JTyy9Twim8PHLBDp618vpZp/fcCd02vLpJoLMRKqfqde7Tw1qJD+VIvTsjIjafmqBzLQxAsi0BpNhwwi0VmPu9IAw7ay3XDbkv1+tJHzq; 4:Bt49ulKmmWjmGHD8yMVPqSc17aJVSK33AsO8SVpx1lMBZ/K4x20/dsZd02fGyHrBnfk3cOlA8POKwd6e2PIGgSQ1mIoWCX2M3eyWUVsfGh18x0jxogL+dIYhb8q37sQrHQp5Og2CHt19ZNuDSDf5Iya/YaUfU/3lIrKyQtF7EEofRZIcl42yW4d6SYdnt/J+nrXuhjE2RKI0sJ/2eZsC1yIJmngjMPDz5QojqgPkvUtlp3uZ1x7uyUVkXxbzsX/Wjw0LPAKkOORG8OY8C8/6GA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(149066)(150057)(6041310)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051)(76991041); SRVR:AM0PR04MB4659; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB4659; X-Forefront-PRVS: 0812095267 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(39850400004)(376002)(346002)(199004)(189003)(6506007)(386003)(6512007)(316002)(36756003)(3846002)(6116002)(53936002)(34290500001)(23676004)(86362001)(52116002)(6486002)(76176011)(11346002)(6916009)(476003)(2616005)(956004)(6666003)(50226002)(68736007)(2906002)(8936002)(5660300001)(446003)(81166006)(8676002)(81156014)(486006)(97736004)(105586002)(106356001)(478600001)(72206003)(25786009)(4326008)(39060400002)(186003)(16526019)(6346003)(26005)(14444005)(7736002)(305945005)(2870700001)(107886003)(50466002)(47776003)(66066001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB4659; H:iota-build.ysoft.local; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: ysoft.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Michal.Vokac@ysoft.com; X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BAM0PR04MB4659=3B23=3Au0kX?= =?utf-8?q?Ocoq7GEfKi9gAO85viGNyC0q37bikdMWTz+05O3vylKwIB4mSRgy+4U7?= =?utf-8?q?LPh+OMiLijwOnH5YwdQe3/NQeenR2VWzCmaNiuCAt5P+2Y/7DL1BjEnT?= =?utf-8?q?A5ScAI08uwlxX2g58O+/aPGilZCAcJ7uBUapoBbx83jHmsmf9DEUwmoS?= =?utf-8?q?WVsLKcUbgpCQc5j3eGfR3ZiByKf/vWYSAiZOlpQLpcMGGN0rjdt2qPwV?= =?utf-8?q?82L+69dNIFXScio/1AZXbBV2Q06fzXbg61c2sBkADrsgkrSpLuxRywoG?= =?utf-8?q?hzLEXBcmqptC0LaH6ebEuKMj3No2fXALHvb8gL2JmrTXxo89a87Wj1zz?= =?utf-8?q?wk5NBU/nVimSdy0Tif08aacCIEBzTCIzb+SZQWM76XYITap8lMO8AqoT?= =?utf-8?q?o/LXcKINJPiXhpDYC9xueJgpIGCSrMU3DBczW2ziNme7yFGeRMMrQHLz?= =?utf-8?q?fesA/rsePaak2/bESV7x1jyknElwI4YpdJy/z74FnNUdE1vCySkS6Jpb?= =?utf-8?q?tSA4DZJnwJ/12bZTIIgfuIam3mQ1tsWwUizxU5PQdbY+yicw62ubKFaq?= =?utf-8?q?oyRpUKOCDDjLrIfL9atCOIlusCpfW/RuckGl1LwMiMfSdVs3rdKP8/yI?= =?utf-8?q?cauoTSL+PB63QqWBHAPNVI7O1oKOjwcgtfCj81OfZfJVgVK8RbGFCTUQ?= =?utf-8?q?Hc13aC5ZLd1SRTz/KMG4KLm6+wHDz2WsIY27GgA6mDi6qjreqWsaQ+1T?= =?utf-8?q?Xmwh+xkBCDv1vycJS9PhqN7ZNEKE5yfzA7ILsPVJQqqghmi+6/v7vcg9?= =?utf-8?q?cUuEZbTBux6xC+oC1g7Wu5jgEIyuPGy6v9H/52rZtcFAmSVZmuSVcZ/M?= =?utf-8?q?Z0AvuFYKeN09ZaXZ0L9kYAQ421+PgGH2UEhoaYTbkJE6QOEq2uB7C4oq?= =?utf-8?q?nL7xW52Xxi1m9PLbTvZdU9e2r3cEvW3N34XWqaxw+nr9bB21c8nCwq9+?= =?utf-8?q?YOqHDFcXS+/8OpslatdG9pRgxnI94AUMDGgLDKEC7m1WIzHx7YPLYiRN?= =?utf-8?q?U8Cq0Yjp+Y2lN2TPYVlRkDJLDcqhJPfMDiNRwDj7jCj1q1p8Kkq4lry/?= =?utf-8?q?9Fo/h5v0aicxMOmr3VAmPGV1x/oLnyxjq1QeEXF3BhIs5Sk9tdlbNyFc?= =?utf-8?q?9IRSGZXVDHGCtJFi5wm9e3meVb8cytrCPaWJLVdBvWW3dsHelHtp4d0M?= =?utf-8?q?nOwGCkyZHRE5npX083LoeUEwPctYV2FBlfF8VSstJgtRaFgh8iMmoQAw?= =?utf-8?q?/InXMylCeAGJw9Oxo1jTwozwhD9XAES8PCHH5QXvmOM/GzNRNMZTe+Hc?= =?utf-8?q?K3UthCYDMw=3D=3D?= X-Microsoft-Antispam-Message-Info: XIyNYGUAORSoUkOVRpKsKDKXH2MsRbgOOmS12gwBXqyWfa5SJaR7IugP5tQGCzDe/YSDKlCk893TUKvOEoIm/ReYRvAVaEUanINRFVpZmVfTHkLqd1Gn5JqhF8K5WLGOx73pkhc2GM8WHgWQj37hv2VdbB8ezhmJAoAnCbK+qUvAjeuel0Yf5D/mWpwAtwUkC3DLqzZc3w0bYTF7KtnAcK+VKJe/h6vILb4TLcLwRaKefDro0Jm7mxvzHUV2EyI8321+Or91OZTtue0z3eiP5EWrHlwDLZ9qOb4zX8I7dIi9eK1me+sSuLOhCj3f5NNs5Q5t5Zp212GV4gpfRz8TMAdqJnl6J9xqvkIlVEyuQ8k= X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4659; 6:zJPCFckMsxQhl8nNHTwSxCjQMrhbNoYwFHiVot0YJ1ydr3m7O/QXzcZOHyrASO+hMUs3vg9eQ4CEMzGnOmb7nQrTsVQKNd2j4uL0mSToybd8VLkUeQ27nxbsD472oy7NrJQiZTzcNXccjcl9BUM3AJqj5oHhvt0gCv8A4EblIwRmSHb0zaQRgmcHpF2JZtQRyXz1ayfS4IZPbwx+d8yZMkFqAQtM6US1sFr8iYp34HiJquDLY6bJX6vfsCA2LYS3PaN2niFp01IPqkNwBAiNnUjmvZvu6qYyN41onYBfYVw8fcmYHfzIYdFhn8Z8GDFC6nObiYTkCMnCGzvBewrxlC7djXEkiYPK2yKtzbbpQ8Hhq5EsqeFEnlYnVRNuz3NrZmA76mTVylmfXUS8bKbLgTJlVlWTPFS8hgftjqhidRmNf8yfMn1r2DJ4owxkvUkIiOoI+BxesHd9MFipkzydNg==; 5:5rLNKW3WFyGGglN1ZXqaY3lUGvyy44y3P64gbTH/OJywhl0FmoRymnCwxFpqBktnAfEiJ6NXTzCg/xybUNhEGSMkm1J5ToJCzTWrf0A35+O9T2SJwwpiSs/DdFp7Qn/jG4djsfpRadyApSk9ByelmYA1Fs4voOuDJZqyONSq/9s=; 7:jX83CtraiCxmOdIm1jJoEx0/K2b39rdE6S/Mx81ZNR+yxAfLhuIUbt9OFfiMuY4utm+p29EriCxshZe6/21CDFLvpj1iPVJwirTC/3ppLXWIR8fEQRT5i9WQUpWh2RlWz/HdHaaSccV+8l+MKMY3bbLvVGFjNoWXGUXr7s+5OEB2S0iSQ1qEiK8/cbaZAOK3j2uYTFnmhnA3o62+6YCbSZ1EnOi76RlEGuDFYcMxXbxXt0MpnZV0W1eupAM7NGwD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ysoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2018 14:20:00.6028 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cdf55130-912a-49f7-2755-08d627a8f933 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b5839965-430f-4be2-b282-d7a3149f2b37 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB4659 Sender: linux-pwm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org Implement the get_state() function and set the initial state to reflect real state of the hardware. This allows to keep the PWM running if it was enabled in bootloader. It is very similar to the GPIO behavior. GPIO pin set as output in bootloader keep the same setting in Linux unless it is reconfigured. If we find the PWM block enabled we need to prepare and enable its source clock otherwise the clock will be disabled late in the boot as unused. That will leave the PWM in enabled state but with disabled clock. That has a side effect that the PWM output is left at its current level at which the clock was disabled. It is totally non-deterministic and it may be LOW or HIGH. Signed-off-by: Michal Vokáč --- drivers/pwm/pwm-imx.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c index 7a4907b..6cd3b72 100644 --- a/drivers/pwm/pwm-imx.c +++ b/drivers/pwm/pwm-imx.c @@ -83,6 +83,9 @@ #define MX3_PWM_SWR_LOOP 5 +/* PWMPR register value of 0xffff has the same effect as 0xfffe */ +#define MX3_PWMPR_MAX 0xfffe + struct imx_chip { struct clk *clk_per; @@ -93,6 +96,55 @@ struct imx_chip { #define to_imx_chip(chip) container_of(chip, struct imx_chip, chip) +static void imx_pwm_get_state(struct pwm_chip *chip, + struct pwm_device *pwm, struct pwm_state *state) +{ + struct imx_chip *imx = to_imx_chip(chip); + u32 period, prescaler, pwm_clk, ret, val; + u64 tmp; + + val = readl(imx->mmio_base + MX3_PWMCR); + + if (val & MX3_PWMCR_EN) { + state->enabled = true; + ret = clk_prepare_enable(imx->clk_per); + if (ret) + return; + } else { + state->enabled = false; + } + + switch (FIELD_GET(MX3_PWMCR_POUTC, val)) { + case MX3_PWMCR_POUTC_NORMAL: + state->polarity = PWM_POLARITY_NORMAL; + break; + case MX3_PWMCR_POUTC_INVERTED: + state->polarity = PWM_POLARITY_INVERSED; + break; + default: + dev_warn(chip->dev, "can't set polarity, output disconnected"); + } + + prescaler = MX3_PWMCR_PRESCALER_GET(val); + pwm_clk = clk_get_rate(imx->clk_per); + pwm_clk = DIV_ROUND_CLOSEST_ULL(pwm_clk, prescaler); + val = readl(imx->mmio_base + MX3_PWMPR); + period = val >= MX3_PWMPR_MAX ? MX3_PWMPR_MAX : val; + + /* PWMOUT (Hz) = PWMCLK / (PWMPR + 2) */ + tmp = NSEC_PER_SEC * (u64)(period + 2); + state->period = DIV_ROUND_CLOSEST_ULL(tmp, pwm_clk); + + /* PWMSAR can be read only if PWM is enabled */ + if (state->enabled) { + val = readl(imx->mmio_base + MX3_PWMSAR); + tmp = NSEC_PER_SEC * (u64)(val); + state->duty_cycle = DIV_ROUND_CLOSEST_ULL(tmp, pwm_clk); + } else { + state->duty_cycle = 0; + } +} + static int imx_pwm_config_v1(struct pwm_chip *chip, struct pwm_device *pwm, int duty_ns, int period_ns) { @@ -272,6 +324,7 @@ static const struct pwm_ops imx_pwm_ops_v1 = { static const struct pwm_ops imx_pwm_ops_v2 = { .apply = imx_pwm_apply_v2, + .get_state = imx_pwm_get_state, .owner = THIS_MODULE, };