From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967233AbdJRJ3O (ORCPT ); Wed, 18 Oct 2017 05:29:14 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:40481 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965409AbdJRJ2M (ORCPT ); Wed, 18 Oct 2017 05:28:12 -0400 X-AuditID: cbfec7f2-f793b6d000003243-95-59e71ea8235d 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 1/2] extcon: max88743: Add OTG power control to the MUIC driver Date: Wed, 18 Oct 2017 11:28:01 +0200 Message-id: <20171018092802.25390-2-m.szyprowski@samsung.com> X-Mailer: git-send-email 2.14.2 In-reply-to: <20171018092802.25390-1-m.szyprowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCIsWRmVeSWpSXmKPExsWy7djPc7or5J5HGlw6qmyxccZ6VovrX56z Wtz/epTR4vKuOWwWM87vY7JYe+Quu8XtxhVsDuwed67tYfPo27KK0ePzJrkA5igum5TUnMyy 1CJ9uwSujL6eZ6wFC0UreidXNDD+F+xi5OSQEDCRWLt0IyuELSZx4d56ti5GLg4hgaWMEut+ nGGFcD4zSvxtOcwG07Hm+gyoqmWMEj82vIFyGpgkft9uAKtiEzCU6HrbBWaLCDhL3P7wjQWk iFngFqNE74mZzCAJYYFAiVU/3jGB2CwCqhLPrl5kB7F5BWwl1nS/Y4dYJy/xfsF9RhCbU8BO 4vDuT8wggyQE/rJK3N26HeomF4m5H/qhGoQlXh3fAmXLSFye3M0CYfczSjS1akPYMxglzr3l hbCtJQ4fvwgOAWYBPolJ26YDLeAAivNKdLQJQZR4SPydsw5qpKPEkT/t7BAfT2SU2NrTxD6B UXoBI8MqRpHU0uLc9NRiY73ixNzi0rx0veT83E2MwLg8/e/4px2MX09YHWIU4GBU4uENUHkW KcSaWFZcmXuIUYKDWUmEl/kjUIg3JbGyKrUoP76oNCe1+BCjNAeLkjivbVRbpJBAemJJanZq akFqEUyWiYNTqoGRZXeNcU7cg3NRTaslrfatKNr/PfyNpZdKJUsV4+1LWU5C5alymtt6toew Xgnc/efdBclbv3+rP3c//rpDur7r/vPjTq6Hs/xWhsT8ebuZ77yVt/3OzN8rX/5/2LE+K/Dh ZM3NV5dNYp+Ut1nW7e3N+26mpVfEXvrtZY5pOWy16/v3wpWPrz36rMRSnJFoqMVcVJwIAIsK 6DDHAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupgluLIzCtJLcpLzFFi42I5/e/4Nd0Vcs8jDVb+YbbYOGM9q8X1L89Z Le5/PcpocXnXHDaLGef3MVmsPXKX3eJ24wo2B3aPO9f2sHn0bVnF6PF5k1wAcxSXTUpqTmZZ apG+XQJXRl/PM9aChaIVvZMrGhj/C3YxcnJICJhIrLk+gw3CFpO4cG89kM3FISSwhFFi4bfV zCAJIYEmJomWBeIgNpuAoUTX2y6wBhEBZ4nbH76xgDQwC9xhlPjetI0RJCEs4C9x/MwPJhCb RUBV4tnVi+wgNq+ArcSa7nfsENvkJd4vuA9WzylgJ3F49yeoZbYSjXcbWScw8i5gZFjFKJJa WpybnltspFecmFtcmpeul5yfu4kRGD7bjv3csoOx613wIUYBDkYlHt4AlWeRQqyJZcWVuYcY JTiYlUR4mT8ChXhTEiurUovy44tKc1KLDzFKc7AoifP27lkdKSSQnliSmp2aWpBaBJNl4uCU amDM5r9tWP7K5ciE1HfJCyNOL4iefDFRQD9I8tMiHael04webz4tM3/e+ivJ20/9LYmRSJo8 9cvBb04TJ966475p0ooNL16sFLaewOgZNYfpTFAzi23Cb3unx/Z6miudU44HHUj2NhS9KT1D 9NexEsM2nXNP2K8sOP7rnpKg64T2/7Of7Nq7NvaPqBJLcUaioRZzUXEiAFuVCr4bAgAA X-CMS-MailID: 20171018092808eucas1p28a1a35b47d26687997798f68315d2a1f X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 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: 20171018092808eucas1p28a1a35b47d26687997798f68315d2a1f X-RootMTR: 20171018092808eucas1p28a1a35b47d26687997798f68315d2a1f References: <20171018092802.25390-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 --- 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