Re: [PATCH 2/4] power_supply: Introduce generic psy charging driver

From: Linus Walleij
Date: Thu Mar 06 2014 - 22:03:15 EST


On Fri, Feb 28, 2014 at 12:27 PM, Jenny Tc <jenny.tc@xxxxxxxxx> wrote:
> On Thu, Feb 27, 2014 at 09:08:01PM +0100, Linus Walleij wrote:
>> On Thu, Feb 20, 2014 at 6:53 AM, Jenny TC <jenny.tc@xxxxxxxxx> wrote:
>>
>> > +++ b/include/linux/power/power_supply_charger.h
>>
>> > +#define MAX_CUR_VOLT_SAMPLES 3
>> > +#define DEF_CUR_VOLT_SAMPLE_JIFF (30*HZ)
>>
>> Why are things defined in Jiffies like this insead of seconds, milliseconds
>> etc? This will vary with the current operating frequency of the system,
>> why should physical measurements do that?
>
> Is it fine if I use msecs_to_jiffies(30000)?

Keep the
#define DEF_CUR_VOLT_SAMPLE_PERIOD 30000

Then use msecs_to_jiffies(DEF_CUR_VOLT_SAMPLE_PERIOD)
in the call site.

>> > +enum psy_charger_cable_event {
>> > + PSY_CHARGER_CABLE_EVENT_DISCONNECT = 0,
>> > + PSY_CHARGER_CABLE_EVENT_CONNECT,
>> > + PSY_CHARGER_CABLE_EVENT_UPDATE,
>> > + PSY_CHARGER_CABLE_EVENT_RESUME,
>> > + PSY_CHARGER_CABLE_EVENT_SUSPEND,
>> > +};
>> > +
>> > +enum psy_charger_cable_type {
>> > + PSY_CHARGER_CABLE_TYPE_NONE = 0,
>> > + PSY_CHARGER_CABLE_TYPE_USB_SDP = 1 << 0,
>> > + PSY_CHARGER_CABLE_TYPE_USB_DCP = 1 << 1,
>> > + PSY_CHARGER_CABLE_TYPE_USB_CDP = 1 << 2,
>> > + PSY_CHARGER_CABLE_TYPE_USB_ACA = 1 << 3,
>> > + PSY_CHARGER_CABLE_TYPE_AC = 1 << 4,
>> > + PSY_CHARGER_CABLE_TYPE_ACA_DOCK = 1 << 5,
>> > + PSY_CHARGER_CABLE_TYPE_ACA_A = 1 << 6,
>> > + PSY_CHARGER_CABLE_TYPE_ACA_B = 1 << 7,
>> > + PSY_CHARGER_CABLE_TYPE_ACA_C = 1 << 8,
>> > + PSY_CHARGER_CABLE_TYPE_SE1 = 1 << 9,
>> > + PSY_CHARGER_CABLE_TYPE_MHL = 1 << 10,
>> > + PSY_CHARGER_CABLE_TYPE_B_DEVICE = 1 << 11,
>> > +};
>>
>> Why is this even an enum? It is clearly bitfields. I would just:
>>
>> #include <linux/bitops.h>
>>
>> #define PSY_CHARGER_CABLE_TYPE_NONE 0x0
>> #define PSY_CHARGER_CABLE_TYPE_USB_SDP BIT(0)
>> #define PSY_CHARGER_CABLE_TYPE_USB_DCP BIT(1)
>> (etc)
>
> This is to ensure type checks when the cable types are handled, #defines will
> not help in type checks.

Type checks with static code check tools? But misrepresenting
a bitfield as an enum just to satisfy a static code checker is not
OK IMO.

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/