Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752376AbdHPUuT (ORCPT ); Wed, 16 Aug 2017 16:50:19 -0400 Received: from mail-dm3nam03on0063.outbound.protection.outlook.com ([104.47.41.63]:38336 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752130AbdHPUuS (ORCPT ); Wed, 16 Aug 2017 16:50:18 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=alex.g@adaptrum.com; Subject: Re: [PATCH v3 3/5] reset: stm32: use the reset-simple driver To: Philipp Zabel , linux-kernel@vger.kernel.org References: <20170816094701.30678-1-p.zabel@pengutronix.de> <20170816094701.30678-4-p.zabel@pengutronix.de> Cc: Andre Przywara , Maxime Coquelin , Alexandre Torgue , Maxime Ripard , Chen-Yu Tsai , Baoyou Xie , Eugeniy Paltsev , Steffen Trumtrar , Dinh Nguyen , =?UTF-8?Q?Andreas_F=c3=a4rber?= , linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de From: Alexandru Gagniuc Message-ID: Date: Wed, 16 Aug 2017 13:50:06 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <20170816094701.30678-4-p.zabel@pengutronix.de> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [198.0.218.81] X-ClientProxiedBy: DM5PR06CA0053.namprd06.prod.outlook.com (10.168.110.143) To MWHPR04MB0849.namprd04.prod.outlook.com (10.172.168.147) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b2723f25-51d7-4651-df2b-08d4e4e863a2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(2017082002075)(300000503095)(300135400095)(201703131423075)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:MWHPR04MB0849; X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB0849;3:daRl6Bvv0oqkeimLHGb3Uz8WXoR3v5rnd/Dji8VjqB2S2TaA8+mX27Rl6beRkzElaUEZFydsUc9x03Zg/BMnBzetl2EfffRjeNL/YCtX4HjJtXGrUOE0Vf9hE/DDCYASsfzTsChJiNRFN11MOZ+7BrbIjWXgBAxlWCy/o4P69la294xOgK7tBF7V+4FTZV8yJAw7IcydSg4faRk5fWKZBovGeWokFUH2rYvsuxDerO7CtBi7h8tON+ZCAkYwDs+4;25:1rGtwxefUJU05KonankdxO3nzPXOhDKnL7ont6kr2gV6myHhmg0yX4ugNCnDuS//Swlcx6BQUOgz7nNrNsHcXINTkQNq0Fbm6vfrb+uouSfDZN42hijd/9fk+G7rq3rGN0rMMlAdfqvsC2xB2QRiEOfgOYuaVt9G8RdiiVstqZqAG/KeHvyBE1RGe5eJDmAFQ4hodghxLixt2+0W2pvCrIjv9T1eQlXHkkilh1mGQuX6mKDr53vvO2Ozbxz+6jbpBLdQ0eijCdee7OcP6gOtXrzXAyOPSDpcweknerc4nxMojheNbl127X9XNKQARY/c4bsV3JPBaxWUUsnQux/Qng==;31:byNb/MhWV9XXdt4bN3hteBmZAcZFUq2jIOHFMDgoAiBo03dKAlf9CqltfLkdwblUny5DacqZMrhrxMHqb49bftSJreqmBpDielQMb4ustnTfEK/ZtrGv9GMXRTZtGlf7hpGpgio+gfeFrLUZEibom+i3YRg5Aw2l9PdMF9axFWlTEiPWE2JEzaTVyAHxZnKZ/sos8dC+LJOE3GqgmKgFrSzn9vEnDdIO0CDs6F3i0AE= X-MS-TrafficTypeDiagnostic: MWHPR04MB0849: X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123560025)(20161123555025)(20161123564025)(2016111802025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(6043046)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:MWHPR04MB0849;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:MWHPR04MB0849; X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB0849;4:t0a+L5tbQY8Ned/FIklGB8dIUdXmGxOTvoiDBNQZMrhPPuK5KyWzL7MDuj91SWC6rN249IEayHWq3liocy/e1EbX3PjhhShdT2IVfJw9G3rBMwN09YBiMGlPM3jJN/uB0P//AMmb9ESn1FA6y679ZDtN9P4QUjyR3kgwafZ8JXAMnMyCPdGZJPKDKwVG5+MQ16aBzPC+tqpmUsvtFTq0LZlijJFjVzM1wfsxWczPowS8vZQEOhUSYSRawcO9ivLU X-Forefront-PRVS: 0401647B7F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(7370300001)(6009001)(199003)(24454002)(377454003)(189002)(7350300001)(6506006)(64126003)(53936002)(50986999)(229853002)(2950100002)(76176999)(5660300001)(54356999)(6246003)(6486002)(110136004)(101416001)(6666003)(6116002)(4326008)(305945005)(105586002)(42186005)(7736002)(53546010)(33646002)(106356001)(54906002)(50466002)(6512007)(81156014)(81166006)(230700001)(3846002)(8676002)(2906002)(65826007)(65806001)(86362001)(47776003)(66066001)(65956001)(31686004)(7416002)(36756003)(23746002)(4001350100001)(97736004)(189998001)(83506001)(25786009)(68736007)(31696002)(478600001);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR04MB0849;H:dev2.adaptrum;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;MWHPR04MB0849;23:KcXmyKa9PWV3Djp1vF3axWSRC7EnhoQjQBgpE?= =?Windows-1252?Q?4xHvZaZwHflMZcbWi+6ws9jk4C5Kw3csREot6pBfSIGfonXw3BY2CHz/?= =?Windows-1252?Q?aUhwsbP64Y30FF/lkb5/RKDZB3Ja1AAVZihcQzDlxr0CISk7KKqQ/D+B?= =?Windows-1252?Q?AUvoAsE4/BBIrMzwnSFp6GhOUNcOxUxfIrNSYIoVIiYVT4tHNDwwzCZ6?= =?Windows-1252?Q?Hn4vbPAjieUJGPzqRkGmkSgpPQF9MqbSxgHBaRMMhaW1s+BFhks1yRrt?= =?Windows-1252?Q?O/5ZBqtiUH4MqixAC0+HRhk4NwZWoYcKIQGaDe+OdtL8EPU4mMb4HJN5?= =?Windows-1252?Q?YsUb+EHB6uV31+u3ZYYQSO4OcxlVTV4sVXjnuFoO7Li9qRgqDo0nUBNw?= =?Windows-1252?Q?WZ1InyXmBqjMy2goN4+Qc+FRPe54tbXMHjxVYEWxKkvfm+TSDK1VGjXm?= =?Windows-1252?Q?pVdU5NngDd2vb+VPO3WP5qNHPSFzTi16IE6/OILOhtmTx0lcowZTt8+U?= =?Windows-1252?Q?B0gpOVY8ffwrduU7ZttOWWmPDGlqqLhbUhtlmw/JgqQ6oS2BHSgtVMC/?= =?Windows-1252?Q?ZfjATEwA/ARAOaJ+bT4EX3SLH114ZI0yLzwpCTBm0mjqkGXZx6fw4xVY?= =?Windows-1252?Q?96xPj1QFzsez+OL7eJbn7a0nCpaXbP2hBZRsjV/ZqxCSJpBOUqq3GMxG?= =?Windows-1252?Q?h3p5UjWjN+DY+XTST6a0hChcqrLSyrmX917F7eqUTnaLRKU/EAwOP74P?= =?Windows-1252?Q?wA4v5p1TDsvg7+HuYmBzobUHytovA6aE9QPa17GEyKF+6QEoK3C8zp6G?= =?Windows-1252?Q?SOP6USK9v8mWN2NH/PUa5GlaLxJfNhdjhOkTu8FoKsZoeso7Qs2N9RHz?= =?Windows-1252?Q?j1FNcgQ0WEo5KbJUq3u/7v3Mc/uoyZtes252H0Xd04y/j984bsHwgG0i?= =?Windows-1252?Q?DwlwousPV1617cR6KEE+RIxIxqmOuZhf8P0LtG5eYUBWrZbsBLS+eTHC?= =?Windows-1252?Q?mOLGKA4RBDBxZChIl5BwXnb/WM0LLLBYlEQiNu4mm8WblzXSxpIWHpY1?= =?Windows-1252?Q?KjhqaOnRZpnReoLhbvr7nPrhugbBGKlKflQIpkodJPDpC4ZkpiGDQvFB?= =?Windows-1252?Q?MwCFmC4nYg3CdcfT4gYpYVSaQaHu9j9wjGrCBR3nMRu0ZTJZugJi/QI6?= =?Windows-1252?Q?okkxm4Wd9oPSE1QUacczaBfo7ti+04uDd7jwhU5F1/NM0GOveFeC7Ux/?= =?Windows-1252?Q?3UUV2EgmzxDBtlz+LnJ9HOIyZU1XIjvLfjcOKSG6TFC9WbIOloG7gqxx?= =?Windows-1252?Q?LDxvRvvlTuCC86gjuVSHDKKmNj4ls0Zj370chU78fNDyOWtnJHPyf4FG?= =?Windows-1252?Q?aJuUlu5G20evwHLRHyI4aYvK31NdwG5RvVsTh/6M0OcTdWXTgodEXwVF?= =?Windows-1252?Q?rG18HQ4lt+pQxsi/MYoEoCmpnkZdBhkvFWR2J76IAoEUvOy9LzoSWSBZ?= =?Windows-1252?Q?ApoUfk=3D?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB0849;6:fjPFUSnsCZEXTVizsPN5tI1MRRS4BrmcqqYLXElx13Tqd02CSqHyVKoscQK2DM3RNQw5DLQM6gdB9f1UZ6w07mhsarHD2XElUGZyK0GkeSH7wDLKxFqBNL27ib8ZQ8xCr6cNbKPAiB1n1YFv2ab7FsP63MEd812HvejA5eGu1oOV8QWp/Avnnh9C8np/fQEWWYilT/tau27feKAWZwRPfWxanZy7oygqf0hBnmxuog431mprw2qCxXRsvF4Msv3tGT78utBoQD8CtBhfjUFWGiJgG4uLoRZNUMrlPLjQBsGcjNnKV0b7P0MvzTK2NJILCJkkzuGCHJtww+lkIHMDgQ==;5:UnsYXXJRcMXIMCk/y+4/JNtwupLm0bO4pRW/WuJAa6I5vrBQOBN9OMhj3O7mTM0X6sOWzEcIpv9FzDB7mlEf+6QbtjQRAVgGnUeOrNP1h4TA939K/vs81WwlklKnQ7T7ZPDOEyYnDeGRMTA58EhTtA==;24:rG9Wbn70W1uiHBIeE3rVwCMfrRnGceGarjtTi3ur7F+Dehqp77iP09KRCMKVjqYgi2LtLwQfKAPlDCtlQhp/rgByPw18hX2jsZ387Pw7S64=;7:B+ZBdxa1PgOpSW5XsYLcIpgj/uo3mVgJwBBs8JX507YcXtIVW3ILeWivS2vbKK75w0hcSwQV7q0JXrCAE9Um+z9P3Qzqw9UHMiqTD2MmqkyPfBYL25EyW5lBNDbcNU+uOr+37fSLGAvYgNDYK6qlPIWDmxCI9GXfjgflh6TdidIIhc6ffY/hEKlH+7yfttb/MdJPmaQZGaI4T4H2mDunAe6pNLGK+PpQ4cgkwEwelkM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: adaptrum.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2017 20:50:10.3746 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0849 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 6047 Lines: 189 On 08/16/2017 02:46 AM, Philipp Zabel wrote: > The reset-simple driver can be used without changes. > > Signed-off-by: Philipp Zabel Reviewed-by: Alexandru Gagniuc > --- > drivers/reset/Kconfig | 11 ++--- > drivers/reset/Makefile | 1 - > drivers/reset/reset-simple.c | 1 + > drivers/reset/reset-stm32.c | 108 ------------------------------------------- > 4 files changed, 4 insertions(+), 117 deletions(-) > delete mode 100644 drivers/reset/reset-stm32.c > > diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig > index 78a8f6057985b..29f4487c290fc 100644 > --- a/drivers/reset/Kconfig > +++ b/drivers/reset/Kconfig > @@ -70,19 +70,14 @@ config RESET_PISTACHIO > > config RESET_SIMPLE > bool "Simple Reset Controller Driver" if COMPILE_TEST > - default ARCH_SOCFPGA || ARCH_SUNXI > + default ARCH_SOCFPGA || ARCH_STM32 || ARCH_SUNXI If this series gets respun, could you please look into removing the ARCH_ dependency here? Alex > help > This enables a simple reset controller driver for reset lines that > that can be asserted and deasserted by toggling bits in a contiguous, > exclusive register space. > > - Currently this driver supports Altera SoCFPGAs and Allwinner SoCs. > - > -config RESET_STM32 > - bool "STM32 Reset Driver" if COMPILE_TEST > - default ARCH_STM32 > - help > - This enables the RCC reset controller driver for STM32 MCUs. > + Currently this driver supports Altera SoCFPGAs, the RCC reset > + controller in STM32 MCUs, and Allwinner SoCs. > > config RESET_SUNXI > bool "Allwinner SoCs Reset Driver" if COMPILE_TEST && !ARCH_SUNXI > diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile > index 25f5f722dec01..e8c3a032f4780 100644 > --- a/drivers/reset/Makefile > +++ b/drivers/reset/Makefile > @@ -12,7 +12,6 @@ obj-$(CONFIG_RESET_MESON) += reset-meson.o > obj-$(CONFIG_RESET_OXNAS) += reset-oxnas.o > obj-$(CONFIG_RESET_PISTACHIO) += reset-pistachio.o > obj-$(CONFIG_RESET_SIMPLE) += reset-simple.o > -obj-$(CONFIG_RESET_STM32) += reset-stm32.o > obj-$(CONFIG_RESET_SUNXI) += reset-sunxi.o > obj-$(CONFIG_RESET_TI_SCI) += reset-ti-sci.o > obj-$(CONFIG_RESET_TI_SYSCON) += reset-ti-syscon.o > diff --git a/drivers/reset/reset-simple.c b/drivers/reset/reset-simple.c > index 84b08ce4def01..e54a29b8b532d 100644 > --- a/drivers/reset/reset-simple.c > +++ b/drivers/reset/reset-simple.c > @@ -120,6 +120,7 @@ static const struct reset_simple_devdata reset_simple_active_low = { > > static const struct of_device_id reset_simple_dt_ids[] = { > { .compatible = "altr,rst-mgr", .data = &reset_simple_socfpga }, > + { .compatible = "st,stm32-rcc", }, > { .compatible = "allwinner,sun6i-a31-clock-reset", > .data = &reset_simple_active_low }, > { /* sentinel */ }, > diff --git a/drivers/reset/reset-stm32.c b/drivers/reset/reset-stm32.c > deleted file mode 100644 > index 3a7c8527e66af..0000000000000 > --- a/drivers/reset/reset-stm32.c > +++ /dev/null > @@ -1,108 +0,0 @@ > -/* > - * Copyright (C) Maxime Coquelin 2015 > - * Author: Maxime Coquelin > - * License terms: GNU General Public License (GPL), version 2 > - * > - * Heavily based on sunxi driver from Maxime Ripard. > - */ > - > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > - > -struct stm32_reset_data { > - spinlock_t lock; > - void __iomem *membase; > - struct reset_controller_dev rcdev; > -}; > - > -static int stm32_reset_assert(struct reset_controller_dev *rcdev, > - unsigned long id) > -{ > - struct stm32_reset_data *data = container_of(rcdev, > - struct stm32_reset_data, > - rcdev); > - int bank = id / BITS_PER_LONG; > - int offset = id % BITS_PER_LONG; > - unsigned long flags; > - u32 reg; > - > - spin_lock_irqsave(&data->lock, flags); > - > - reg = readl(data->membase + (bank * 4)); > - writel(reg | BIT(offset), data->membase + (bank * 4)); > - > - spin_unlock_irqrestore(&data->lock, flags); > - > - return 0; > -} > - > -static int stm32_reset_deassert(struct reset_controller_dev *rcdev, > - unsigned long id) > -{ > - struct stm32_reset_data *data = container_of(rcdev, > - struct stm32_reset_data, > - rcdev); > - int bank = id / BITS_PER_LONG; > - int offset = id % BITS_PER_LONG; > - unsigned long flags; > - u32 reg; > - > - spin_lock_irqsave(&data->lock, flags); > - > - reg = readl(data->membase + (bank * 4)); > - writel(reg & ~BIT(offset), data->membase + (bank * 4)); > - > - spin_unlock_irqrestore(&data->lock, flags); > - > - return 0; > -} > - > -static const struct reset_control_ops stm32_reset_ops = { > - .assert = stm32_reset_assert, > - .deassert = stm32_reset_deassert, > -}; > - > -static const struct of_device_id stm32_reset_dt_ids[] = { > - { .compatible = "st,stm32-rcc", }, > - { /* sentinel */ }, > -}; > - > -static int stm32_reset_probe(struct platform_device *pdev) > -{ > - struct stm32_reset_data *data; > - struct resource *res; > - > - data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); > - if (!data) > - return -ENOMEM; > - > - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - data->membase = devm_ioremap_resource(&pdev->dev, res); > - if (IS_ERR(data->membase)) > - return PTR_ERR(data->membase); > - > - spin_lock_init(&data->lock); > - > - data->rcdev.owner = THIS_MODULE; > - data->rcdev.nr_resets = resource_size(res) * 8; > - data->rcdev.ops = &stm32_reset_ops; > - data->rcdev.of_node = pdev->dev.of_node; > - > - return devm_reset_controller_register(&pdev->dev, &data->rcdev); > -} > - > -static struct platform_driver stm32_reset_driver = { > - .probe = stm32_reset_probe, > - .driver = { > - .name = "stm32-rcc-reset", > - .of_match_table = stm32_reset_dt_ids, > - }, > -}; > -builtin_platform_driver(stm32_reset_driver); >