From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753157AbcHBJrT (ORCPT ); Tue, 2 Aug 2016 05:47:19 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:57379 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751795AbcHBJrL convert rfc822-to-8bit (ORCPT ); Tue, 2 Aug 2016 05:47:11 -0400 X-AuditID: cbfee68d-f79286d000007a9a-e2-579ff714edba MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 8BIT Message-id: <579FF713.2030606@samsung.com> Date: Tue, 02 Aug 2016 10:27:47 +0900 From: Chanwoo Choi Organization: Samsung Electronics User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 To: Guenter Roeck Cc: linux-kernel , myungjoo.ham@samsung.com, Chris Zhong , Guenter Roeck , "Chanwoo Choi (chanwoo@kernel.org)" , "cpgs (cpgs@samsung.com)" Subject: Re: [PATCH v2 2/6] extcon: Add the support for extcon property according to extcon type References: <1470030654-6641-1-git-send-email-cw00.choi@samsung.com> <1470030654-6641-3-git-send-email-cw00.choi@samsung.com> In-reply-to: X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrJIsWRmVeSWpSXmKPExsWyRsSkUFfk+/xwg1tv2Cwm3rjCYvHykKbF qVfLmC16Fy1hsbi8aw6bxe3GFWwW8x/sYHZg95jdcJHFY8GmUo9NqzrZPP7O2s/i0bdlFaPH 501yAWxRXDYpqTmZZalF+nYJXBkbG24xFyxXqTi7YyZzA+Mx6S5GTg4JAROJJ13X2CFsMYkL 99azdTFycQgJrGCU+LDvGzNM0YYpMxghEksZJZr2r2YBSfAKCEr8mHwPyObgYBZQl5gyJRck zCwgIrHpxiFGCFtbYtnC18wQvQ8YJaZc3cUE0asl0fV5MdgcFgFViYtfV4JdwQYU3//iBhuI zS+gKHH1x2NGkPmiAhES3ScqQcIiQOWnnh4HO5RZ4B+jxLL1h1hBEsICSRLPP/9jgVg2i0mi 8XIb2AecAsES+1beY4P45hG7xOlH/BCLBSS+TT4E9oCEgKzEpgNQD0tKHFxxg2UCo8QsJG/O QnhzFpI3ZyF5cwEjyypG0dSC5ILipPQiQ73ixNzi0rx0veT83E2MwBg+/e9Z7w7G2wesDzEK cDAq8fAG5M4PF2JNLCuuzD3EaAp00ERmKdHkfGCiyCuJNzQ2M7IwNTE1NjK3NFMS51WU+hks JJCeWJKanZpakFoUX1Sak1p8iJGJg1OqgdFMum1rXNpqfssFn88u/yDRKrn9Sf4br4lJrus1 l7v/v7Vy6xOBb1wJxqYpbk6yRQtvH8/m3vtsgdpCB6vwLo/Zbk4qm3bOY054W210r3mWwMIJ tfcXzJ7758m2p4p2PtXRzwIT+Pn/Puma5HBCtnH2k8O9V/Ytdv7rcv16056K9Utq7wTGnItQ YinOSDTUYi4qTgQAnJzjMtwCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDIsWRmVeSWpSXmKPExsVy+t9jAV2R7/PDDRY5WUy8cYXF4uUhTYtT r5YxW/QuWsJicXnXHDaL240r2CzmP9jB7MDuMbvhIovHgk2lHptWdbJ5/J21n8Wjb8sqRo/P m+QC2KIaGG0yUhNTUosUUvOS81My89JtlbyD453jTc0MDHUNLS3MlRTyEnNTbZVcfAJ03TJz gC5RUihLzCkFCgUkFhcr6dthmhAa4qZrAdMYoesbEgTXY2SABhLWMGbMW/qfpWCySsX97mms DYybpLsYOTkkBEwkNkyZwQhhi0lcuLeerYuRi0NIYCmjRNP+1SwgCV4BQYkfk+8B2RwczALy EkcuZUOY6hJTpuRClD9glJhydRcTRLmWRNfnxWCtLAKqEhe/rmQHsdmA4vtf3GADsfkFFCWu /njMCDJHVCBCovtEJUhYBKj81NPjYCcwC/xjlFi2/hArSEJYIEni+ed/LBDLZjFJNF5uYwZJ cAoES+xbeY9tAqPgLCSnzkI4dRbCqQsYmVcxSqQWJBcUJ6XnGuWllusVJ+YWl+al6yXn525i BMf8M+kdjId3uR9iFOBgVOLh7Xg5P1yINbGsuDL3EKMEB7OSCC/DZ6AQb0piZVVqUX58UWlO avEhRlOgXycyS4km5wPTUV5JvKGxiZmRpZG5oYWRsbmSOO/j/+vChATSE0tSs1NTC1KLYPqY ODilGhj7GCdJPuCPatmh5nyZy+D7BnfOeW67CxPMlRl6ek/Onylq9Yb7S2XTq90ckVHFpttv m/1jyZDR+me0asntnXJJpp4d6WVP2a34/JOXRCqdMVi08/S1+kchF35/6Hiq+kPi1pLnN/Lu bLrluzljRlpg7R+ufXvLLz5fyblvdloph+XT0ubEzXJKLMUZiYZazEXFiQDBhSQpDwMAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Guenter, On 2016년 08월 02일 04:48, Guenter Roeck wrote: > On Sun, Jul 31, 2016 at 10:50 PM, Chanwoo Choi wrote: >> This patch support the extcon property for the external connector >> because each external connector might have the property according to >> the H/W design and the specific characteristics. >> >> - EXTCON_PROP_USB_[property name] >> - EXTCON_PROP_CHG_[property name] >> - EXTCON_PROP_JACK_[property name] >> - EXTCON_PROP_DISP_[property name] >> >> Add the new extcon APIs to get/set the property value as following: >> - int extcon_get_property(struct extcon_dev *edev, unsigned int id, >> unsigned int prop, >> union extcon_property_value *prop_val) >> - int extcon_set_property(struct extcon_dev *edev, unsigned int id, >> unsigned int prop, >> union extcon_property_value prop_val) >> >> Signed-off-by: Chanwoo Choi >> Tested-by: Chris Zhong > > Reviewed-by: Guenter Roeck > > [ couple of nitpicks below ] > >> --- >> drivers/extcon/extcon.c | 201 +++++++++++++++++++++++++++++++++++++++++++++++- >> include/linux/extcon.h | 86 +++++++++++++++++++++ >> 2 files changed, 286 insertions(+), 1 deletion(-) >> [snip] >> static ssize_t state_show(struct device *dev, struct device_attribute *attr, >> char *buf) >> { >> @@ -421,7 +475,7 @@ int extcon_get_cable_state_(struct extcon_dev *edev, const unsigned int id) >> if (edev->max_supported && edev->max_supported <= index) >> return -EINVAL; >> >> - return !!(edev->state & (1 << index)); >> + return (int)(is_extcon_attached(edev, index)); > > Conversion from bool to int (0, 1) is automatic, so > > return is_extcon_attached(edev, index); > > would be identical. OK. I'll fix it. [snip] >> diff --git a/include/linux/extcon.h b/include/linux/extcon.h >> index 46d802892c82..5a97e52abefb 100644 >> --- a/include/linux/extcon.h >> +++ b/include/linux/extcon.h >> @@ -77,6 +77,68 @@ >> >> #define EXTCON_NUM 63 >> >> +/* >> + * Define the property of supported external connectors. >> + * >> + * When adding the new extcon property, they *must* have >> + * the type/value/default information. Also, you *have to* >> + * modify the EXTCON_PROP_[type]_START/END definitions >> + * which mean the range of the supported properties >> + * for each extcon type. >> + * >> + * The naming style of property >> + * : EXTCON_PROP_[type]_[property name] >> + * >> + * EXTCON_PROP_USB_[property name] : USB property >> + * EXTCON_PROP_CHG_[property name] : Charger property >> + * EXTCON_PROP_JACK_[property name] : Jack property >> + * EXTCON_PROP_DISP_[property name] : Display property >> + */ >> + >> +/* >> + * Properties of EXTCON_TYPE_USB. >> + * >> + * - EXTCON_PROP_USB_ID >> + * @type: integer (intval) >> + * @value: 0 (low) or 1 (high) >> + * @default: 0 (low) >> + * - EXTCON_PROP_USB_VBUS >> + * @type: integer (intval) >> + * @value: 0 (low) or 1 (high) >> + * @default: 0 (low) >> + */ >> +#define EXTCON_PROP_USB_ID 0 >> +#define EXTCON_PROP_USB_VBUS 1 >> + >> +#define EXTCON_PROP_USB_MIN 0 >> +#define EXTCON_PROP_USB_MAX 1 >> +#define EXTCON_PROP_USB_CNT (EXTCON_PROP_USB_MAX - EXTCON_PROP_USB_MIN + 1) >> + >> +/* Properties of EXTCON_TYPE_CHG. */ >> +#define EXTCON_PROP_CHG_MIN 50 >> +#define EXTCON_PROP_CHG_MAX 50 >> +#define EXTCON_PROP_CHG_CNT (EXTCON_PROP_CHG_MAX - EXTCON_PROP_CHG_MIN + 1) >> + >> +/* Properties of EXTCON_TYPE_JACK. */ >> +#define EXTCON_PROP_JACK_MIN 100 >> +#define EXTCON_PROP_JACK_MAX 100 >> +#define EXTCON_PROP_JACK_CNT (EXTCON_PROP_JACK_MAX - EXTCON_PROP_JACK_MIN + 1) >> + >> +/* Properties of EXTCON_TYPE_DISP. */ >> +#define EXTCON_PROP_DISP_MIN 150 >> +#define EXTCON_PROP_DISP_MAX 150 >> +#define EXTCON_PROP_DISP_CNT (EXTCON_PROP_DISP_MAX - EXTCON_PROP_DISP_MIN + 1) >> + >> +/* >> + * Define the type of property's value. >> + * >> + * Define the property's value as union type. Because each property >> + * would need the different data type to store it. >> + */ >> +union extcon_property_value { >> + int intval; /* type : interger (intval) */ > > integer OK. I'll fix it. Thanks for review. Regards, Chanwoo Choi