From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967329AbdJRJ4l (ORCPT ); Wed, 18 Oct 2017 05:56:41 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:44391 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936400AbdJRJ4e (ORCPT ); Wed, 18 Oct 2017 05:56:34 -0400 X-AuditID: cbfec7ef-f79ee6d000003120-c7-59e7254fb157 From: Marek Szyprowski To: linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org Cc: Marek Szyprowski , MyungJoo Ham , Chanwoo Choi , Lee Jones , Bartlomiej Zolnierkiewicz Subject: [PATCH v2 1/2] extcon: max77843: Add OTG power control to the MUIC driver Date: Wed, 18 Oct 2017 11:56:21 +0200 Message-id: <20171018095622.23738-2-m.szyprowski@samsung.com> X-Mailer: git-send-email 2.14.2 In-reply-to: <20171018095622.23738-1-m.szyprowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCIsWRmVeSWpSXmKPExsWy7djP87r+qs8jDTY94LHYOGM9q8X1L89Z Le5/PcpocXnXHDaLGef3MVmsPXKX3eJ24wo2B3aPO9f2sHn0bVnF6PF5k1wAcxSXTUpqTmZZ apG+XQJXxvdny5gLLopWzJ3Wz9TAuEqoi5GTQ0LAROJs3xNmCFtM4sK99WxdjFwcQgLLGCV+ bd3GAuF8ZpT4928jO0zHjvtTGOGqGjbsZ4VwGpgkTny+BzaLTcBQouttFxuILSLgLHH7wzew UcwCtxglek/MBCsSFgiRmNR3CWgUBweLgKrE9+NuIGFeAVuJr+9OQm2Tl3i/4D4jiM0pYCfx /cwFsPskBBrZJK7P3MEKUeQisevYHihbWOLV8S1QzTISnR0HmSDsfkaJplZtCHsGo8S5t7wQ trXE4eMXwXqZBfgkJm2bzgxyj4QAr0RHGzSMPCSObj7EAmE7Svy+PRUaRhMZJTYuW8M2gVF6 ASPDKkaR1NLi3PTUYkO94sTc4tK8dL3k/NxNjMC4PP3v+PsdjE+bQw4xCnAwKvHwBqg8ixRi TSwrrsw9xCjBwawkwsv8ESjEm5JYWZValB9fVJqTWnyIUZqDRUmc1zaqLVJIID2xJDU7NbUg tQgmy8TBKdXAOCnkZYlC3dWWXZePNG9ZUX+MbfnimUqJF7PEL4rOrvuU+yRSelKMlXwY87qZ glsUVvkd3L+Jv3UPl5gx0yJbPsG0Y30Fqn4yVw4H7/7rfzOvwLOq2/C+P0uw3HSFeV0pbAnr KnWv5crMldz44EJ8srzbPd+qr9feeMdfevSf7zWfc0bh3UtJSizFGYmGWsxFxYkAGlcCqccC AAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupkluLIzCtJLcpLzFFi42I5/e/4VV0/1eeRBp3f9Cw2zljPanH9y3NW i/tfjzJaXN41h81ixvl9TBZrj9xlt7jduILNgd3jzrU9bB59W1YxenzeJBfAHMVlk5Kak1mW WqRvl8CV8f3ZMuaCi6IVc6f1MzUwrhLqYuTkkBAwkdhxfwojhC0mceHeerYuRi4OIYEljBJn pz1lhXCamCRW3pjIBFLFJmAo0fW2iw3EFhFwlrj94RsLSBGzwB1Gie9N28BGCQuESEzquwRk c3CwCKhKfD/uBhLmFbCV+PruJDvENnmJ9wvug5VzCthJfD9zAWymEFDNguvHWScw8i5gZFjF KJJaWpybnltsqFecmFtcmpeul5yfu4kRGEDbjv3cvIPx0sbgQ4wCHIxKPLwBKs8ihVgTy4or cw8xSnAwK4nwMn8ECvGmJFZWpRblxxeV5qQWH2KU5mBREuft3bM6UkggPbEkNTs1tSC1CCbL xMEp1cCodsTz3/WTH7r3XOZgmp/Qp5W61Ig74WzIHi4O2V9Tt2Z9iwt8nbzxdHLItMa9yf3F O1mWfHrnbPGypkWBfyH71ptCYXVN5WfDr+h5F1r1Ks7et9nzqcImtX2pD27tuTgh87bS7kW8 fqFr1oi1bF9g5LS+9KfaosKH287xqsYvb9DheBakMrlGiaU4I9FQi7moOBEAXA8N+xwCAAA= X-CMS-MailID: 20171018095630eucas1p263041d2da8d87aef67162fc13a01affb X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRs=?= =?UTF-8?B?7IK87ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRtT?= =?UTF-8?B?YW1zdW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-CMS-RootMailID: 20171018095630eucas1p263041d2da8d87aef67162fc13a01affb X-RootMTR: 20171018095630eucas1p263041d2da8d87aef67162fc13a01affb References: <20171018095622.23738-1-m.szyprowski@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Enabling power on VBUS micro-usb pin is required only when passive OTG cable is connected. Initially OTG VBUS power control was planned to be done in charger driver. However such information is not really available from the extcon notifications, so VBUS power control has to be done directly in MUIC driver, which has all information about the attached accessory. For example SmartDock is externally powered accessory, provides OTG (USB HOST) functionality and use VBUS pin for charging a device battery, so the VBUS charging pump should be disabled in such case. Signed-off-by: Marek Szyprowski Acked-by: Chanwoo Choi --- drivers/extcon/extcon-max77843.c | 16 ++++++++++++++++ include/linux/mfd/max77843-private.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/drivers/extcon/extcon-max77843.c b/drivers/extcon/extcon-max77843.c index 6e722d552cf1..217c743405f8 100644 --- a/drivers/extcon/extcon-max77843.c +++ b/drivers/extcon/extcon-max77843.c @@ -240,6 +240,21 @@ static int max77843_muic_set_path(struct max77843_muic_info *info, return 0; } +static void max77843_charger_set_otg_vbus(struct max77843_muic_info *info, + bool on) +{ + struct max77693_dev *max77843 = info->max77843; + unsigned int cnfg00; + + if (on) + cnfg00 = MAX77843_CHG_OTG_MASK | MAX77843_CHG_BOOST_MASK; + else + cnfg00 = MAX77843_CHG_ENABLE | MAX77843_CHG_BUCK_MASK; + + regmap_update_bits(max77843->regmap_chg, MAX77843_CHG_REG_CHG_CNFG_00, + MAX77843_CHG_MODE_MASK, cnfg00); +} + static int max77843_muic_get_cable_type(struct max77843_muic_info *info, enum max77843_muic_cable_group group, bool *attached) { @@ -355,6 +370,7 @@ static int max77843_muic_adc_gnd_handler(struct max77843_muic_info *info) return ret; extcon_set_state_sync(info->edev, EXTCON_USB_HOST, attached); + max77843_charger_set_otg_vbus(info, attached); break; case MAX77843_MUIC_GND_MHL_VB: case MAX77843_MUIC_GND_MHL: diff --git a/include/linux/mfd/max77843-private.h b/include/linux/mfd/max77843-private.h index c19303b0ccfd..0223cd5941c8 100644 --- a/include/linux/mfd/max77843-private.h +++ b/include/linux/mfd/max77843-private.h @@ -245,10 +245,13 @@ enum max77843_irq_muic { #define MAX77843_CHG_OVER_CURRENT_BAT (0x06 << 4) /* MAX77843 CHG_CNFG_00 register */ +#define MAX77843_CHG_MODE_MASK 0x0f #define MAX77843_CHG_DISABLE 0x00 #define MAX77843_CHG_ENABLE 0x05 #define MAX77843_CHG_MASK 0x01 +#define MAX77843_CHG_OTG_MASK 0x02 #define MAX77843_CHG_BUCK_MASK 0x04 +#define MAX77843_CHG_BOOST_MASK 0x08 /* MAX77843 CHG_CNFG_01 register */ #define MAX77843_CHG_RESTART_THRESHOLD_100 0x00 -- 2.14.2