Message ID | c23ed23d6d355e80401abce6242523f32ce480fd.1529654288.git.baolin.wang@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri 22 Jun 01:08 PDT 2018, Baolin Wang wrote: > The hardware spinlock binding already supplied the 'hwlock-names' property > to match and get a specific hwlock, but did not supply one API for users > to get a specific hwlock by the hwlock name. So this patch introduces one > API to support this requirement. > > Signed-off-by: Baolin Wang <baolin.wang@linaro.org> Thanks Baolin, Picked up all but patch 6 from the series; including 7 and 8 with Mark's ack. Regards, Bjorn > --- > drivers/hwspinlock/hwspinlock_core.c | 29 +++++++++++++++++++++++++++++ > include/linux/hwspinlock.h | 7 +++++++ > 2 files changed, 36 insertions(+) > > diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c > index d16e6a3..bea3586 100644 > --- a/drivers/hwspinlock/hwspinlock_core.c > +++ b/drivers/hwspinlock/hwspinlock_core.c > @@ -367,6 +367,35 @@ int of_hwspin_lock_get_id(struct device_node *np, int index) > } > EXPORT_SYMBOL_GPL(of_hwspin_lock_get_id); > > +/** > + * of_hwspin_lock_get_id_byname() - get lock id for an specified hwlock name > + * @np: device node from which to request the specific hwlock > + * @name: hwlock name > + * > + * This function provides a means for DT users of the hwspinlock module to > + * get the global lock id of a specific hwspinlock using the specified name of > + * the hwspinlock device, so that it can be requested using the normal > + * hwspin_lock_request_specific() API. > + * > + * Returns the global lock id number on success, -EPROBE_DEFER if the hwspinlock > + * device is not yet registered, -EINVAL on invalid args specifier value or an > + * appropriate error as returned from the OF parsing of the DT client node. > + */ > +int of_hwspin_lock_get_id_byname(struct device_node *np, const char *name) > +{ > + int index; > + > + if (!name) > + return -EINVAL; > + > + index = of_property_match_string(np, "hwlock-names", name); > + if (index < 0) > + return index; > + > + return of_hwspin_lock_get_id(np, index); > +} > +EXPORT_SYMBOL_GPL(of_hwspin_lock_get_id_byname); > + > static int hwspin_lock_register_single(struct hwspinlock *hwlock, int id) > { > struct hwspinlock *tmp; > diff --git a/include/linux/hwspinlock.h b/include/linux/hwspinlock.h > index 57537e6..2b6f389 100644 > --- a/include/linux/hwspinlock.h > +++ b/include/linux/hwspinlock.h > @@ -66,6 +66,7 @@ int __hwspin_lock_timeout(struct hwspinlock *, unsigned int, int, > unsigned long *); > int __hwspin_trylock(struct hwspinlock *, int, unsigned long *); > void __hwspin_unlock(struct hwspinlock *, int, unsigned long *); > +int of_hwspin_lock_get_id_byname(struct device_node *np, const char *name); > > #else /* !CONFIG_HWSPINLOCK */ > > @@ -125,6 +126,12 @@ static inline int hwspin_lock_get_id(struct hwspinlock *hwlock) > return 0; > } > > +static inline > +int of_hwspin_lock_get_id_byname(struct device_node *np, const char *name) > +{ > + return 0; > +} > + > #endif /* !CONFIG_HWSPINLOCK */ > > /** > -- > 1.7.9.5 > -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 27 June 2018 at 04:54, Bjorn Andersson <bjorn.andersson@linaro.org> wrote: > On Fri 22 Jun 01:08 PDT 2018, Baolin Wang wrote: > >> The hardware spinlock binding already supplied the 'hwlock-names' property >> to match and get a specific hwlock, but did not supply one API for users >> to get a specific hwlock by the hwlock name. So this patch introduces one >> API to support this requirement. >> >> Signed-off-by: Baolin Wang <baolin.wang@linaro.org> > > Thanks Baolin, > > Picked up all but patch 6 from the series; including 7 and 8 with Mark's > ack. OK. Thanks Bjorn and Mark.
diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c index d16e6a3..bea3586 100644 --- a/drivers/hwspinlock/hwspinlock_core.c +++ b/drivers/hwspinlock/hwspinlock_core.c @@ -367,6 +367,35 @@ int of_hwspin_lock_get_id(struct device_node *np, int index) } EXPORT_SYMBOL_GPL(of_hwspin_lock_get_id); +/** + * of_hwspin_lock_get_id_byname() - get lock id for an specified hwlock name + * @np: device node from which to request the specific hwlock + * @name: hwlock name + * + * This function provides a means for DT users of the hwspinlock module to + * get the global lock id of a specific hwspinlock using the specified name of + * the hwspinlock device, so that it can be requested using the normal + * hwspin_lock_request_specific() API. + * + * Returns the global lock id number on success, -EPROBE_DEFER if the hwspinlock + * device is not yet registered, -EINVAL on invalid args specifier value or an + * appropriate error as returned from the OF parsing of the DT client node. + */ +int of_hwspin_lock_get_id_byname(struct device_node *np, const char *name) +{ + int index; + + if (!name) + return -EINVAL; + + index = of_property_match_string(np, "hwlock-names", name); + if (index < 0) + return index; + + return of_hwspin_lock_get_id(np, index); +} +EXPORT_SYMBOL_GPL(of_hwspin_lock_get_id_byname); + static int hwspin_lock_register_single(struct hwspinlock *hwlock, int id) { struct hwspinlock *tmp; diff --git a/include/linux/hwspinlock.h b/include/linux/hwspinlock.h index 57537e6..2b6f389 100644 --- a/include/linux/hwspinlock.h +++ b/include/linux/hwspinlock.h @@ -66,6 +66,7 @@ int __hwspin_lock_timeout(struct hwspinlock *, unsigned int, int, unsigned long *); int __hwspin_trylock(struct hwspinlock *, int, unsigned long *); void __hwspin_unlock(struct hwspinlock *, int, unsigned long *); +int of_hwspin_lock_get_id_byname(struct device_node *np, const char *name); #else /* !CONFIG_HWSPINLOCK */ @@ -125,6 +126,12 @@ static inline int hwspin_lock_get_id(struct hwspinlock *hwlock) return 0; } +static inline +int of_hwspin_lock_get_id_byname(struct device_node *np, const char *name) +{ + return 0; +} + #endif /* !CONFIG_HWSPINLOCK */ /**
The hardware spinlock binding already supplied the 'hwlock-names' property to match and get a specific hwlock, but did not supply one API for users to get a specific hwlock by the hwlock name. So this patch introduces one API to support this requirement. Signed-off-by: Baolin Wang <baolin.wang@linaro.org> --- drivers/hwspinlock/hwspinlock_core.c | 29 +++++++++++++++++++++++++++++ include/linux/hwspinlock.h | 7 +++++++ 2 files changed, 36 insertions(+)