From patchwork Wed Jun 8 09:21:25 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lee Jones X-Patchwork-Id: 632092 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3rPk2Z5wNDz9ssP for ; Wed, 8 Jun 2016 19:40:54 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b=XncW2ZuF; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161803AbcFHJjM (ORCPT ); Wed, 8 Jun 2016 05:39:12 -0400 Received: from mail-wm0-f43.google.com ([74.125.82.43]:38631 "EHLO mail-wm0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1161890AbcFHJVg (ORCPT ); Wed, 8 Jun 2016 05:21:36 -0400 Received: by mail-wm0-f43.google.com with SMTP id m124so7682803wme.1 for ; Wed, 08 Jun 2016 02:21:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Y21OFUBve9HF+2zozzNuW9juIimzRVydt8TK+AFeROA=; b=XncW2ZuFhLMmpswmuIBrNGWzxo0NNUWgMp2c0bWmnmEysXpbaxP7+ro7t/h78nNHUj ICGYx0pmXfCzxWOx+VF0aOl374meAup3xnGJqXMnxpV0ofQJMGXI/PCIAXaY6k1DcVny a5nqb8c+nZs7Gt84d3UYEx+Vri7jYU3c4HLHc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Y21OFUBve9HF+2zozzNuW9juIimzRVydt8TK+AFeROA=; b=NS0UrY33ea0YgHhuBuY7foTf1G+bDm7puXvh0q12Va5+zOCFPgRSqq7MuS+yhFwhFS hrGxT6uPEJxC+xm66y6kHZ9L0lnwzn6JMXMsC4nS74jY+PhXDzuLskR/ZrxOKuJhHkCt SAVRXf5fCQVVYlXlldbBgq72LNYUJkbATNNmGGKN1wBJibyHzyj38+ebmUFeM+BujlK/ vacYVitgCoRbBunhdVhrRdJ+drv7g6jZUyCF4MgzolS9nGedDJXaD+ELA8sD7ihODzTj PXF9cc717P2+m8OuMrBF9xGscFOL58X7HgxcoRGrOF1wD5ubv0x0wua6meCzXP5x9vEI yAdw== X-Gm-Message-State: ALyK8tKhWSOdS4GfBfnJOpngbI1mO+8HcN2iaxujcWge5qt6jdjzaLsHRTpMVCcOO0ctwBhz X-Received: by 10.194.221.137 with SMTP id qe9mr3906643wjc.21.1465377694818; Wed, 08 Jun 2016 02:21:34 -0700 (PDT) Received: from localhost.localdomain (host81-129-171-215.range81-129.btcentralplus.com. [81.129.171.215]) by smtp.gmail.com with ESMTPSA id g192sm23694494wme.15.2016.06.08.02.21.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 Jun 2016 02:21:34 -0700 (PDT) From: Lee Jones To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: kernel@stlinux.com, maxime.coquelin@st.com, patrice.chotard@st.com, thierry.reding@gmail.com, robh+dt@kernel.org, linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, Lee Jones Subject: [PATCH v3 10/20] pwm: sysfs: Add PWM Capture support Date: Wed, 8 Jun 2016 10:21:25 +0100 Message-Id: <20160608092135.21184-11-lee.jones@linaro.org> X-Mailer: git-send-email 2.8.3 In-Reply-To: <20160608092135.21184-1-lee.jones@linaro.org> References: <20160608092135.21184-1-lee.jones@linaro.org> Sender: linux-pwm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org Allow a user to read PWM Capture results from /sysfs. To start a capture and read the result, simply read the file: $ cat $PWMCHIP/capture The output format is ":". Signed-off-by: Lee Jones --- drivers/pwm/sysfs.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/pwm/sysfs.c b/drivers/pwm/sysfs.c index d985992..901e647 100644 --- a/drivers/pwm/sysfs.c +++ b/drivers/pwm/sysfs.c @@ -208,16 +208,33 @@ static ssize_t polarity_store(struct device *child, return ret ? : size; } +static ssize_t capture_show(struct device *child, + struct device_attribute *attr, + char *buf) +{ + struct pwm_device *pwm = child_to_pwm_device(child); + struct pwm_capture result; + int ret; + + ret = pwm_capture(pwm, &result, jiffies_to_msecs(HZ)); + if (ret) + return ret; + + return sprintf(buf, "%llu %llu\n", result.period, result.duty_cycle); +} + static DEVICE_ATTR_RW(period); static DEVICE_ATTR_RW(duty_cycle); static DEVICE_ATTR_RW(enable); static DEVICE_ATTR_RW(polarity); +static DEVICE_ATTR_RO(capture); static struct attribute *pwm_attrs[] = { &dev_attr_period.attr, &dev_attr_duty_cycle.attr, &dev_attr_enable.attr, &dev_attr_polarity.attr, + &dev_attr_capture.attr, NULL }; ATTRIBUTE_GROUPS(pwm);