|
@@ -27,6 +27,34 @@
|
|
|
|
|
|
struct hwspinlock;
|
|
|
|
|
|
+/**
|
|
|
+ * struct hwspinlock_pdata - platform data for hwspinlock drivers
|
|
|
+ * @base_id: base id for this hwspinlock device
|
|
|
+ *
|
|
|
+ * hwspinlock devices provide system-wide hardware locks that are used
|
|
|
+ * by remote processors that have no other way to achieve synchronization.
|
|
|
+ *
|
|
|
+ * To achieve that, each physical lock must have a system-wide id number
|
|
|
+ * that is agreed upon, otherwise remote processors can't possibly assume
|
|
|
+ * they're using the same hardware lock.
|
|
|
+ *
|
|
|
+ * Usually boards have a single hwspinlock device, which provides several
|
|
|
+ * hwspinlocks, and in this case, they can be trivially numbered 0 to
|
|
|
+ * (num-of-locks - 1).
|
|
|
+ *
|
|
|
+ * In case boards have several hwspinlocks devices, a different base id
|
|
|
+ * should be used for each hwspinlock device (they can't all use 0 as
|
|
|
+ * a starting id!).
|
|
|
+ *
|
|
|
+ * This platform data structure should be used to provide the base id
|
|
|
+ * for each device (which is trivially 0 when only a single hwspinlock
|
|
|
+ * device exists). It can be shared between different platforms, hence
|
|
|
+ * its location.
|
|
|
+ */
|
|
|
+struct hwspinlock_pdata {
|
|
|
+ int base_id;
|
|
|
+};
|
|
|
+
|
|
|
#if defined(CONFIG_HWSPINLOCK) || defined(CONFIG_HWSPINLOCK_MODULE)
|
|
|
|
|
|
int hwspin_lock_register(struct hwspinlock *lock);
|