From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752864AbdJaGhI (ORCPT ); Tue, 31 Oct 2017 02:37:08 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:45276 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750916AbdJaGhF (ORCPT ); Tue, 31 Oct 2017 02:37:05 -0400 X-Google-Smtp-Source: ABhQp+Qs6WeSit7iMZPV2aH4/+SR5NQ18BWiZoJWXQwHGv3v9VlG2sGgdXAF4U7dGW3SNf8SBrySyA== From: Baolin Wang To: broonie@kernel.org, gregkh@linuxfoundation.org, lee.jones@linaro.org, arnd@arndb.de Cc: linux-kernel@vger.kernel.org, baolin.wang@linaro.org Subject: [PATCH 2/2] mfd: syscon: Add hardware spinlock support Date: Tue, 31 Oct 2017 14:35:56 +0800 Message-Id: X-Mailer: git-send-email 1.7.9.5 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some system control registers need hardware spinlock to synchronize between the multiple subsystems, so we should add hardware spinlock support for syscon. Signed-off-by: Baolin Wang --- drivers/mfd/syscon.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c index b93fe4c..adc1c9c 100644 --- a/drivers/mfd/syscon.c +++ b/drivers/mfd/syscon.c @@ -25,6 +25,8 @@ #include #include +#define SYSCON_HWSPINLOCK_TIMEOUT (~0U) + static struct platform_driver syscon_driver; static DEFINE_SPINLOCK(syscon_list_slock); @@ -87,6 +89,13 @@ static struct syscon *of_syscon_register(struct device_node *np) if (ret) reg_io_width = 4; + ret = of_hwspin_lock_get_id(np, 0); + if (ret > 0) { + syscon_config.hwlock_id = ret; + syscon_config.hwlock_mode = HWLOCK_IRQSTATE; + syscon_config.hwlock_timeout = SYSCON_HWSPINLOCK_TIMEOUT; + } + syscon_config.reg_stride = reg_io_width; syscon_config.val_bits = reg_io_width * 8; syscon_config.max_register = resource_size(&res) - reg_io_width; -- 1.7.9.5