Christian Marangi
cdab30b445
hwspinlock: qcom: Add support for mmio usage to sfpb-mutex
...
Allow sfpb-mutex to use mmio in addition to syscon.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com >
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org >
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
Link: https://lore.kernel.org/r/20220707102040.1859-1-ansuelsmth@gmail.com
2022-07-16 21:47:44 -05:00
Minghao Chi
0e01d176d5
hwspinlock: using pm_runtime_resume_and_get instead of pm_runtime_get_sync
...
Using pm_runtime_resume_and_get is more appropriate
for simplifing code
Reported-by: Zeal Robot <zealci@zte.com.cn >
Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn >
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
Link: https://lore.kernel.org/r/20220418105508.2558696-1-chi.minghao@zte.com.cn
2022-04-22 18:03:04 -05:00
Gustavo A. R. Silva
9a41358972
hwspinlock: sprd: Use struct_size() helper in devm_kzalloc()
...
Make use of the struct_size() helper instead of an open-coded version,
in order to avoid any potential type mistakes or integer overflows that,
in the worst scenario, could lead to heap overflows.
Also, address the following sparse warnings:
drivers/hwspinlock/sprd_hwspinlock.c:96:36: warning: using sizeof on a flexible structure
Link: https://github.com/KSPP/linux/issues/174
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org >
Reviewed-by: Baolin Wang <baolin.wang7@gmail.com >
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
Link: https://lore.kernel.org/r/20220125225723.GA78256@embeddedor
2022-03-11 14:56:57 -06:00
Gustavo A. R. Silva
3e5f1ff7e4
hwspinlock: stm32: Use struct_size() helper in devm_kzalloc()
...
Make use of the struct_size() helper instead of an open-coded version,
in order to avoid any potential type mistakes or integer overflows that,
in the worst scenario, could lead to heap overflows.
Also, address the following sparse warnings:
drivers/hwspinlock/stm32_hwspinlock.c:84:32: warning: using sizeof on a flexible structure
Link: https://github.com/KSPP/linux/issues/174
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org >
Reviewed-by: Baolin Wang <baolin.wang7@gmail.com >
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
Link: https://lore.kernel.org/r/20220125021353.GA29777@embeddedor
2022-03-11 14:56:15 -06:00
Fabien Dessenne
60630924bb
hwspinlock: stm32: enable clock at probe
...
Set the clock during probe and keep its control during suspend / resume
operations.
This fixes an issue when CONFIG_PM is not set and where the clock is
never enabled.
Make use of devm_ functions to simplify the code.
Signed-off-by: Fabien Dessenne <fabien.dessenne@foss.st.com >
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
Link: https://lore.kernel.org/r/20211011135836.1045437-1-fabien.dessenne@foss.st.com
2021-11-17 16:12:44 -06:00
Wilken Gottwalt
3c881e05c8
hwspinlock: add sun6i hardware spinlock support
...
Adds the sun6i_hwspinlock driver for the hardware spinlock unit found in
most of the sun6i compatible SoCs.
This unit provides at least 32 spinlocks in hardware. The implementation
supports 32, 64, 128 or 256 32bit registers. A lock can be taken by
reading a register and released by writing a 0 to it. This driver
supports all 4 spinlock setups, but for now only the first setup (32
locks) seem to exist in available devices. This spinlock unit is shared
between all ARM cores and the embedded companion core. All of them can
take/release a lock with a single cycle operation. It can be used to
sync access to devices shared by the ARM cores and the companion core.
There are two ways to check if a lock is taken. The first way is to read
a lock. If a 0 is returned, the lock was free and is taken now. If an 1
is returned, the caller has to try again. Which means the lock is taken.
The second way is to read a 32bit wide status register where every bit
represents one of the 32 first locks. According to the datasheets this
status register supports only the 32 first locks. This is the reason the
first way (lock read/write) approach is used to be able to cover all 256
locks in future devices. The driver also reports the amount of supported
locks via debugfs.
Reviewed-by: Samuel Holland <samuel@sholland.org >
Acked-by: Maxime Ripard <maxime@cerno.tech >
Signed-off-by: Wilken Gottwalt <wilken.gottwalt@posteo.net >
Link: https://lore.kernel.org/r/bfd2b97307c2321b15c09683f4bd5e1fcc792f13.1615713499.git.wilken.gottwalt@posteo.net
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2021-05-27 22:19:42 -05:00
Arnd Bergmann
1cb8f3e2d8
hwspinlock: remove sirf driver
...
The CSR SiRF prima2/atlas platforms are getting removed, so this driver
is no longer needed.
Cc: Barry Song <baohua@kernel.org >
Link: https://lore.kernel.org/linux-arm-kernel/20210120124812.2800027-1-arnd@kernel.org/T/
Signed-off-by: Arnd Bergmann <arnd@arndb.de >
Link: https://lore.kernel.org/r/20210120132537.2285157-1-arnd@kernel.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2021-03-17 21:22:06 -05:00
Suman Anna
b9ddb2500e
hwspinlock: omap: Add support for K3 AM64x SoCs
...
The AM64x SoC contains a HwSpinlock IP instance in the MAIN domain,
and is a minor variant of the IP on the current TI K3 SoCs such as
AM64x, J721E or J7200 SoCs. The IP is not built with the K3 safety
feature in hardware, and has slightly different integration into
the overall SoC.
Add the support for this IP through a new compatible.
Signed-off-by: Suman Anna <s-anna@ti.com >
Link: https://lore.kernel.org/r/20210209172240.2305-3-s-anna@ti.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2021-02-09 11:36:50 -06:00
Baolin Wang
c3e9b463b4
hwspinlock: sirf: Remove the redundant 'of_match_ptr'
...
Remove the the redundant 'of_match_ptr' macro to fix below warning
when the CONFIG_OF is not selected.
All warnings:
drivers/hwspinlock/sirf_hwspinlock.c:87:34: warning: unused variable
'sirf_hwpinlock_ids' [-Wunused-const-variable]
Reported-by: kernel test robot <lkp@intel.com >
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com >
Link: https://lore.kernel.org/r/250d35cb489c3c4c066f7ce256d27f36712a1979.1591618255.git.baolin.wang7@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-12-10 13:34:40 -06:00
Chunyan Zhang
8266b80926
hwspinlock: sprd: fixed warning of unused variable 'sprd_hwspinlock_of_match'
...
The macro function of_match_ptr() is NULL if CONFIG_OF is not set, in this
case Clang compiler would complain the of_device_id variable is unused.
Reviewed-by: Baolin Wang <baolin.wang7@gmail.com >
Reported-by: kernel test robot <lkp@intel.com >
Fixes: d8c8bbbb1a ("hwspinlock: sprd: Add hardware spinlock driver")
Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com >
Link: https://lore.kernel.org/r/20201112070410.14810-1-zhang.lyra@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-11-17 21:42:13 -06:00
Chunyan Zhang
8308678ebd
hwspinlock: sprd: use module_platform_driver() instead postcore initcall
...
The hardware spinlock devices are defined in the DT, there's no need for
init calls order, remove boilerplate code by using module_platform_driver.
Reviewed-by: Baolin Wang <baolin.wang7@gmail.com >
Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com >
Link: https://lore.kernel.org/r/20201030034654.15775-3-zhang.lyra@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-11-02 18:04:06 -06:00
Baolin Wang
3116a9931f
hwspinlock: sprd: Remove redundant header files
...
Remove redundant header files.
Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com >
Link: https://lore.kernel.org/r/1590991552-93643-1-git-send-email-baolin.wang@linux.alibaba.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-10-26 10:17:54 -05:00
Bjorn Andersson
7a1e6fb1c6
hwspinlock: qcom: Allow mmio usage in addition to syscon
...
In modern Qualcomm platforms the mutex region of the TCSR is forked off
into its own block, all with a offset of 0 and stride of 4096, and in
some of these platforms no other registers in this region is accessed
from Linux.
So add support for directly memory mapping this register space, to avoid
the need to represent this block using a syscon.
Reviewed-by: Baolin Wang <baolin.wang7@gmail.com >
Reviewed-by: Vinod Koul <vkoul@kernel.org >
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
Link: https://lore.kernel.org/r/20200622075956.171058-4-bjorn.andersson@linaro.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-07-13 22:29:28 -07:00
Ezequiel Garcia
285e74ab4f
hwspinlock: Simplify Kconfig
...
Every hwspinlock driver is expected to depend on the
hwspinlock core, so it's possible to simplify the
Kconfig, factoring out the HWSPINLOCK dependency.
Reviewed-by: Baolin Wang <baolin.wang7@gmail.com >
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com >
Link: https://lore.kernel.org/r/20200414220943.6203-1-ezequiel@collabora.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-06-21 00:36:03 -07:00
Gustavo A. R. Silva
ef17f5193e
hwspinlock: hwspinlock_internal.h: Replace zero-length array with flexible-array member
...
The current codebase makes use of the zero-length array language
extension to the C90 standard, but the preferred mechanism to declare
variable-length types such as these ones is a flexible array member[1][2],
introduced in C99:
struct foo {
int stuff;
struct boo array[];
};
By making use of the mechanism above, we will get a compiler warning
in case the flexible array does not occur last in the structure, which
will help us prevent some kind of undefined behavior bugs from being
inadvertently introduced[3] to the codebase from now on.
Also, notice that, dynamic memory allocations won't be affected by
this change:
"Flexible array members have incomplete type, and so the sizeof operator
may not be applied. As a quirk of the original implementation of
zero-length arrays, sizeof evaluates to zero."[1]
This issue was found with the help of Coccinelle.
[1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
[2] https://github.com/KSPP/linux/issues/21
[3] commit 7649773293 ("cxgb3/l2t: Fix undefined behaviour")
Reviewed-by: Baolin Wang <baolin.wang7@gmail.com >
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com >
Link: https://lore.kernel.org/r/20200319213839.GA10669@embeddedor.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-03-25 22:30:46 -07:00
Baolin Wang
ffd0bbfb37
hwspinlock: Allow drivers to be built with COMPILE_TEST
...
Allow drivers to be built with COMPILE_TEST.
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com >
Link: https://lore.kernel.org/r/5a95c3de07ef020a4e2f2776fa5adb00637ee387.1581324976.git.baolin.wang7@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-03-25 22:30:46 -07:00
Baolin Wang
cb36017a8b
hwspinlock: sirf: Use devm_hwspin_lock_register() to register hwlock controller
...
Use devm_hwspin_lock_register() to register the hwlock controller instead of
unregistering the hwlock controller explicitly when removing the device.
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com >
Link: https://lore.kernel.org/r/8f94e67b5f9af20a93418a2fc9cc71b194f1285c.1578453662.git.baolin.wang7@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-01-21 16:16:36 -08:00
Baolin Wang
8f2a0dc87d
hwspinlock: sirf: Remove redundant PM runtime functions
...
Since the hwspinlock core has changed the PM runtime to be optional, and
the SIRF hardware spinlock has no pm runtime requirement, thus remove
these redundant PM runtime functions.
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com >
Link: https://lore.kernel.org/r/c921e391aa2a652d8d6ae0e4041202cec9d917e7.1578453662.git.baolin.wang7@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-01-21 16:16:30 -08:00
Baolin Wang
77d99a6a9d
hwspinlock: sirf: Change to use devm_platform_ioremap_resource()
...
Use the new helper that wraps the calls to platform_get_resource()
and devm_ioremap_resource() together, which can simpify the code.
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com >
Link: https://lore.kernel.org/r/dfa043f317c609a6172468ac11598968dd751bce.1578453662.git.baolin.wang7@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-01-21 16:16:16 -08:00
Baolin Wang
42f291ebfd
hwspinlock: omap: Use devm_kzalloc() to allocate memory
...
Use devm_kzalloc() to allocate memory, which can simplify the error
handling.
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com >
Link: https://lore.kernel.org/r/c066ad704c1a5fd52c3002cac80ddd59b3901b01.1578453062.git.baolin.wang7@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-01-21 16:11:25 -08:00
Baolin Wang
bf2740068a
hwspinlock: omap: Change to use devm_platform_ioremap_resource()
...
Use the new helper that wraps the calls to platform_get_resource()
and devm_ioremap_resource() together, which can simpify the code.
Meanwhile renaming the error label to make more sense after removing
iounmap().
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com >
Link: https://lore.kernel.org/r/6c09c5034a7e68fdfc22d2cb5daa375bccb33a66.1578453062.git.baolin.wang7@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-01-21 16:11:11 -08:00
Baolin Wang
ed0611a604
hwspinlock: qcom: Use devm_hwspin_lock_register() to register hwlock controller
...
Use devm_hwspin_lock_register() to register the hwlock controller instead of
unregistering the hwlock controller explicitly when removing the device.
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com >
Link: https://lore.kernel.org/r/d69ad8611a68b0cac3c927d19901f3c113c5435c.1578452735.git.baolin.wang7@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-01-21 16:10:07 -08:00
Baolin Wang
98ec52ad81
hwspinlock: qcom: Remove redundant PM runtime functions
...
Since the hwspinlock core has changed the PM runtime to be optional, and
the Qualcomm hardware spinlock has no pm runtime requirement, thus remove
these redundant PM runtime functions.
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com >
Link: https://lore.kernel.org/r/e0bb751feb7af709f92e52a07d0e8ebcf1ee44ff.1578452735.git.baolin.wang7@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2020-01-21 16:09:10 -08:00
Yangtao Li
d4824486b6
hwspinlock: stm32: convert to devm_platform_ioremap_resource
...
Use devm_platform_ioremap_resource() to simplify code.
Signed-off-by: Yangtao Li <tiny.windzz@gmail.com >
Link: https://lore.kernel.org/r/20191228191541.26999-1-tiny.windzz@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2019-12-28 20:43:23 -08:00
Baolin Wang
9d399f0c52
hwspinlock: u8500_hsem: Remove redundant PM runtime implementation
...
Since the hwspinlock core has changed the PM runtime to be optional, thus
remove the redundant PM runtime implementation in the u8500 HWSEM driver.
Reviewed-by: Linus Walleij <linus.walleij@linaro.org >
Signed-off-by: Baolin Wang <baolin.wang@linaro.org >
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org >
2019-11-08 16:42:26 -08:00