#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/hwspinlock.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include "hwspinlock_internal.h"
#define STM32_MUTEX_COREID …
#define STM32_MUTEX_LOCK_BIT …
#define STM32_MUTEX_NUM_LOCKS …
struct stm32_hwspinlock { … };
static int stm32_hwspinlock_trylock(struct hwspinlock *lock)
{ … }
static void stm32_hwspinlock_unlock(struct hwspinlock *lock)
{ … }
static void stm32_hwspinlock_relax(struct hwspinlock *lock)
{ … }
static const struct hwspinlock_ops stm32_hwspinlock_ops = …;
static void stm32_hwspinlock_disable_clk(void *data)
{ … }
static int stm32_hwspinlock_probe(struct platform_device *pdev)
{ … }
static int __maybe_unused stm32_hwspinlock_runtime_suspend(struct device *dev)
{ … }
static int __maybe_unused stm32_hwspinlock_runtime_resume(struct device *dev)
{ … }
static const struct dev_pm_ops stm32_hwspinlock_pm_ops = …;
static const struct of_device_id stm32_hwpinlock_ids[] = …;
MODULE_DEVICE_TABLE(of, stm32_hwpinlock_ids);
static struct platform_driver stm32_hwspinlock_driver = …;
static int __init stm32_hwspinlock_init(void)
{ … }
postcore_initcall(stm32_hwspinlock_init);
static void __exit stm32_hwspinlock_exit(void)
{ … }
module_exit(stm32_hwspinlock_exit);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;