2015-05-15 23:31 GMT+09:00 Chanwoo Choi <cw00.c...@samsung.com>: > Previously, extcon consumer driver used the extcon_register_interest() > to register the notifier chain and then to receive the notifier event > when external connector's state is changed. When registering the notifier > chain > for specific external connector with extcon_register_interest(), it used the > the string name of external connector directly. There are potential problem > because of unclear, non-standard and inconsequent cable name. Namely, > it is not appropriate method to identify each external connector. > > So, this patch modify the prototype of extcon_register_notifier() by using > the 'enum extcon' which are the unique id for each external connector > instead of unclear string method. > > - Previously, the extcon consumer driver used the extcon_register_interest() > with 'cable_name' to point out the specific external connector. Also. it used > the un-needed structure (struct extcon_specific_cable_nb). > : int extcon_register_interest(struct extcon_specific_cable_nb *obj, > const char *extcon_name, const char *cable_name, > struct notifier_block *nb) > > - Newly, the updated extcon_register_notifier() would definitely support > the same feature to detech the changed state of external connector without > any specific structure (struct extcon_specific_cable_nb). > : int extcon_register_notifier(struct extcon_dev *edev, enum extcon id, > struct notifier_block *nb) > > This patch support the both extcon_register_interest() and new > extcon_register_ > notifier(). But the extcon_{register|unregister}_interest() will be deprecated > because extcon core would support the notifier event for extcon consumer > driver > with only updated extcon_register_notifier() and 'extcon_specific_cable_nb' > will be removed if there are no extcon consumer driver with legacy > extcon_{register|unregister}_interest(). > > Signed-off-by: Chanwoo Choi <cw00.c...@samsung.com> > Cc: MyungJoo Ham <myungjoo....@samsung.com> > Cc: George Cherian <george.cher...@ti.com> > Cc: Felipe Balbi <ba...@ti.com> > Cc: Aaro Koskinen <aaro.koski...@iki.fi> > --- > drivers/extcon/extcon.c | 91 > ++++++++++++++++++++++++++----------------------- > include/linux/extcon.h | 17 +++++---- > 2 files changed, 56 insertions(+), 52 deletions(-) > > diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c > index 4aeb585..14c8c95 100644 > --- a/drivers/extcon/extcon.c > +++ b/drivers/extcon/extcon.c > @@ -111,6 +111,16 @@ static int check_mutually_exclusive(struct extcon_dev > *edev, u32 new_state) > return 0; > } > > +static bool is_extcon_changed(u32 prev, u32 new, int idx, bool *attached) > +{ > + if (((prev >> idx) & 0x1) != ((new >> idx) & 0x1)) {
How about switching "state" to unsigned long and using bit operations everywhere, like test_bit()? The patch itself looks good and change above is not actually related to the code here, so: Reviewed-by: Krzysztof Kozlowski <k.kozlow...@samsung.com> Best regards, Krzysztof -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/