From patchwork Mon Jul 20 19:12:14 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adam YH Lee X-Patchwork-Id: 6830111 Return-Path: X-Original-To: patchwork-linux-omap@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 97134C05AC for ; Mon, 20 Jul 2015 19:13:09 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id B04642041B for ; Mon, 20 Jul 2015 19:13:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9F720203E6 for ; Mon, 20 Jul 2015 19:13:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752753AbbGTTNH (ORCPT ); Mon, 20 Jul 2015 15:13:07 -0400 Received: from mail-pd0-f177.google.com ([209.85.192.177]:35795 "EHLO mail-pd0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750737AbbGTTNF (ORCPT ); Mon, 20 Jul 2015 15:13:05 -0400 Received: by pdrg1 with SMTP id g1so105846061pdr.2; Mon, 20 Jul 2015 12:13:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=VQId63stXWISXnVcBgg5AU2ONXbPN7ZdLwY5ICoyyYA=; b=Ce4wDjkoglKVgv8VF1x4NC3KF62Z4vSggNN8N/HtdSNm94AmCs/PYFuOINgm6Z2j7L g/xwZZqv2iCxVECj2E/5nFDgT+gEcJ5MMZ7zus1MrLM6yPMFikB5g59SxnWnXFp6xjL/ cZxGOPwrX585fiN9w0NrC8VldHC5A1tu+qSU6ql9VkqKcsZs0gIss8a+PaY7sDtTlaEg VqroR6T0w9X45I+WUulX10iJzxQThUNazTKATwOh6HRRgjFmjPW3YBojJQVDD1RV2AgI 3KWxtN30xf2Zyv2c9EPluQcuoXq7gzVEHZiTFjIrUBUYFHznybQ/3ZwU62+OhAnrkjfM mt0g== X-Received: by 10.66.159.68 with SMTP id xa4mr64543832pab.105.1437419584418; Mon, 20 Jul 2015 12:13:04 -0700 (PDT) Received: from localhost.localdomain (s206-116-3-180.bc.hsia.telus.net. [206.116.3.180]) by smtp.gmail.com with ESMTPSA id by13sm23207524pdb.37.2015.07.20.12.13.03 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 20 Jul 2015 12:13:03 -0700 (PDT) From: Adam YH Lee To: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: linux-iio@vger.kernel.org, sre@kernel.org, jic23@kernel.org, pmeerw@pmeerw.net, Adam YH Lee Subject: [V2] [TWL4030 MADC] Fix ADC[3:6] readings Date: Mon, 20 Jul 2015 12:12:14 -0700 Message-Id: <1437419534-27209-1-git-send-email-adam.yh.lee@gmail.com> X-Mailer: git-send-email 2.1.4 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP MADC[3:6] reads incorrect values without these two following changes: - enable the 3v1 bias regulator for ADC[3:6] - configure ADC[3:6] lines as input, not as USB Signed-off-by: Adam YH Lee --- drivers/iio/adc/twl4030-madc.c | 14 ++++++++++++++ drivers/phy/phy-twl4030-usb.c | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/drivers/iio/adc/twl4030-madc.c b/drivers/iio/adc/twl4030-madc.c index 94c5f05..92f290e 100644 --- a/drivers/iio/adc/twl4030-madc.c +++ b/drivers/iio/adc/twl4030-madc.c @@ -45,6 +45,7 @@ #include #include #include +#include #include @@ -52,6 +53,7 @@ * struct twl4030_madc_data - a container for madc info * @dev: Pointer to device structure for madc * @lock: Mutex protecting this data structure + * @regulator: Pointer to bias regulator for madc * @requests: Array of request struct corresponding to SW1, SW2 and RT * @use_second_irq: IRQ selection (main or co-processor) * @imr: Interrupt mask register of MADC @@ -60,6 +62,7 @@ struct twl4030_madc_data { struct device *dev; struct mutex lock; /* mutex protecting this data structure */ + struct regulator *usb3v1; struct twl4030_madc_request requests[TWL4030_MADC_NUM_METHODS]; bool use_second_irq; u8 imr; @@ -848,6 +851,14 @@ static int twl4030_madc_probe(struct platform_device *pdev) goto err_i2c; } + madc->usb3v1 = devm_regulator_get(madc->dev, "vusb3v1"); + if (IS_ERR(madc->usb3v1)) + return -ENODEV; + + ret = regulator_enable(madc->usb3v1); + if (ret) + dev_err(madc->dev, "could not enable 3v1 bias regulator\n"); + return 0; err_i2c: @@ -867,6 +878,9 @@ static int twl4030_madc_remove(struct platform_device *pdev) twl4030_madc_set_current_generator(madc, 0, 0); twl4030_madc_set_power(madc, 0); + regulator_disable(madc->usb3v1); + regulator_put(madc->usb3v1); + return 0; } diff --git a/drivers/phy/phy-twl4030-usb.c b/drivers/phy/phy-twl4030-usb.c index 7b04bef..88fc7d7 100644 --- a/drivers/phy/phy-twl4030-usb.c +++ b/drivers/phy/phy-twl4030-usb.c @@ -144,6 +144,9 @@ #define PMBR1 0x0D #define GPIO_USB_4PIN_ULPI_2430C (3 << 0) +#define TWL4030_USB_SEL_MADC_MCPC (1<<3) +#define TWL4030_USB_CARKIT_ANA_CTRL 0xBB + struct twl4030_usb { struct usb_phy phy; struct device *dev; @@ -459,6 +462,10 @@ static int twl4030_phy_power_on(struct phy *phy) twl4030_i2c_access(twl, 0); schedule_delayed_work(&twl->id_workaround_work, 0); + twl4030_usb_write(twl, TWL4030_USB_CARKIT_ANA_CTRL, + twl4030_usb_read(twl, TWL4030_USB_CARKIT_ANA_CTRL) | + TWL4030_USB_SEL_MADC_MCPC); + return 0; }