Received: by 10.223.185.116 with SMTP id b49csp3578557wrg; Tue, 13 Feb 2018 04:34:39 -0800 (PST) X-Google-Smtp-Source: AH8x227iPHrG4OHe+enh/iOzAKZtsw233Ozlf7bYgSyV/Tf+g7RDh3ll0uzzOqKp1eJMRmCm8PyZ X-Received: by 10.167.128.81 with SMTP id y17mr1105180pfm.91.1518525279895; Tue, 13 Feb 2018 04:34:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518525279; cv=none; d=google.com; s=arc-20160816; b=NCPm+LP8qpB92rjvlc/KYbSK8mJjtrD4iECqAyKnEc9/3+dxQ5zUvOTpK4z4J3qd7e AD1RH9qstLjwTp11q/dYGNiL2uULtl590q+xFCiT1gUe5+Ww0ZGWFRh5zHYdzKfiZfxF ahWEcUgcQB6nBAH2I0nk5EuN3cm9fgQCroTzRTIXD3yjHpJzk11aSzRle+kohBQShNJR JuGkwJlOSOStOpqgu2SSbnahkn6WIh6ERnH0Kk/qBK65RnGXmFufWlY8XtOgJMXzjqx8 Htbh6fnQ5rhLzvDzaxv3aNsNIMUxBtkkcRKlA5dMkCwzSxWDouwoE38YFe2h+QqbRLTK y5nA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=D1Iz9no6Ec0Al5PXbGWuVateKo99HJQXWqZAJsAuxwQ=; b=vOKwx3RLQmF61UxvSsPKnaS4JwAQ4VmK9FL77IVFboJSJZ7HNeBMPnPE3/CtkY+Db3 G3OQoE8qamOX63L5PG7bwi21I8M/L+wWQ2T0Lu9132oCgUjupO7xse+ypnebGk8+WGEM JOx5TVqvEcDfPx8ecsLO3SrRPo1hvKLOQvdT7i60THEA7pSS//vobXCQSyCtbgBCXOWR WWyoLn35P87VCitmg8uHiTU8XUSUfqBya529lzKVbXKrcArDu0RYyurJzT+RfH4j+fqa eShDJBMbf8G82aVc5qPKmvR0fMS5pyR+ox1kFtCwWYfVxLOO4G+FuNKVdZRab9PqGfWr I87w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=L7Tzbava; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o3-v6si1489467pld.405.2018.02.13.04.34.25; Tue, 13 Feb 2018 04:34:39 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=L7Tzbava; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935282AbeBMMcp (ORCPT + 99 others); Tue, 13 Feb 2018 07:32:45 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:36155 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935205AbeBMM37 (ORCPT ); Tue, 13 Feb 2018 07:29:59 -0500 Received: by mail-wm0-f65.google.com with SMTP id f3so15745444wmc.1; Tue, 13 Feb 2018 04:29:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=D1Iz9no6Ec0Al5PXbGWuVateKo99HJQXWqZAJsAuxwQ=; b=L7Tzbava+HeYvBAmAHJEwK8vuWz69Jv6HBVknuGBMTIvisOzxJ5SGAzdt4GmvmxZrT c5WfoeuLZ263o9SVWIlYIETrZN2VWD3rM1eMM+76Wj8CKR2MqZ/KohKoMEmJZMTiyK2X ty/hKV1gJ9B1IhYNpWNgvA5XEOFdWz/m7cGGaoxap3VtyOPlExf9iHo5/Wp8wpl01Yfl a/EUtznkyBiQ7GgEIRGh04hTO8QUskU/g20JS9wTUfOMdf3cGduCZrCfnICLyqveSFD8 X1YrWeQVjojS9iS0N004rxaSR5gp1t4v+YT24OtF7XDJu2VcMwC98uSQa7H0q0KGG9uX Hcbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=D1Iz9no6Ec0Al5PXbGWuVateKo99HJQXWqZAJsAuxwQ=; b=Hp5JD4f20Dze3tGnwE2oq3DlcabKx4rj56u3cPDKl2AR9q1llwBY+LmQh4poYzH/ZR om+B5txSBEH8kBwYxdxecknIQWqDGpMDzHFnyg7YYDJFdzV0aq6ixXJE6tqN4Fz6Y9d7 /mJnwqr7dfydOqd4e56RU5N1+rhEddVPqolwIT76wQ9U/D4eXm3/Yv+LS/Uw6srLIh7V 3yYT2a/4o5I53JQ2sQYWSTfBWTsH82jKZd8isY8Jh65r1I+wbhvOkR3/zNdQEGZs0bLj V8Mv4A7PYjVpSklaniOAza9EpYDuyY1Ex2eWi29AL1XELREicsP3RMuRmJ5OsUagsvKc gq+w== X-Gm-Message-State: APf1xPBw/69f6bFobc558U/drm53zZ+FB2AjR4U+df7XB0Jn15wSWMan 8I3GipPBSiX1tIDXtLghkXA= X-Received: by 10.28.55.129 with SMTP id e123mr1144651wma.156.1518524997201; Tue, 13 Feb 2018 04:29:57 -0800 (PST) Received: from debian-laptop.fritz.box (p578F04D2.dip0.t-ipconnect.de. [87.143.4.210]) by smtp.gmail.com with ESMTPSA id l17sm6483422wrh.67.2018.02.13.04.29.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Feb 2018 04:29:56 -0800 (PST) From: Philipp Rossak To: mchehab@kernel.org, robh+dt@kernel.org, mark.rutland@arm.com, maxime.ripard@free-electrons.com, wens@csie.org, linux@armlinux.org.uk, sean@mess.org, p.zabel@pengutronix.de, andi.shyti@samsung.com Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com Subject: [RESEND PATCH v5 1/6] media: rc: update sunxi-ir driver to get base clock frequency from devicetree Date: Tue, 13 Feb 2018 13:29:47 +0100 Message-Id: <20180213122952.8420-2-embed3d@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180213122952.8420-1-embed3d@gmail.com> References: <20180213122952.8420-1-embed3d@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch updates the sunxi-ir driver to set the base clock frequency from devicetree. This is necessary since there are different ir receivers on the market, that operate with different frequencies. So this value could be set if the attached ir receiver needs a different base clock frequency, than the default 8 MHz. Signed-off-by: Philipp Rossak Reviewed-by: Andi Shyti Acked-by: Sean Young --- drivers/media/rc/sunxi-cir.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/media/rc/sunxi-cir.c b/drivers/media/rc/sunxi-cir.c index 97f367b446c4..f500cea228a9 100644 --- a/drivers/media/rc/sunxi-cir.c +++ b/drivers/media/rc/sunxi-cir.c @@ -72,12 +72,8 @@ /* CIR_REG register idle threshold */ #define REG_CIR_ITHR(val) (((val) << 8) & (GENMASK(15, 8))) -/* Required frequency for IR0 or IR1 clock in CIR mode */ +/* Required frequency for IR0 or IR1 clock in CIR mode (default) */ #define SUNXI_IR_BASE_CLK 8000000 -/* Frequency after IR internal divider */ -#define SUNXI_IR_CLK (SUNXI_IR_BASE_CLK / 64) -/* Sample period in ns */ -#define SUNXI_IR_SAMPLE (1000000000ul / SUNXI_IR_CLK) /* Noise threshold in samples */ #define SUNXI_IR_RXNOISE 1 /* Idle Threshold in samples */ @@ -122,7 +118,8 @@ static irqreturn_t sunxi_ir_irq(int irqno, void *dev_id) /* for each bit in fifo */ dt = readb(ir->base + SUNXI_IR_RXFIFO_REG); rawir.pulse = (dt & 0x80) != 0; - rawir.duration = ((dt & 0x7f) + 1) * SUNXI_IR_SAMPLE; + rawir.duration = ((dt & 0x7f) + 1) * + ir->rc->rx_resolution; ir_raw_event_store_with_filter(ir->rc, &rawir); } } @@ -148,6 +145,7 @@ static int sunxi_ir_probe(struct platform_device *pdev) struct device_node *dn = dev->of_node; struct resource *res; struct sunxi_ir *ir; + u32 b_clk_freq = SUNXI_IR_BASE_CLK; ir = devm_kzalloc(dev, sizeof(struct sunxi_ir), GFP_KERNEL); if (!ir) @@ -172,6 +170,9 @@ static int sunxi_ir_probe(struct platform_device *pdev) return PTR_ERR(ir->clk); } + /* Base clock frequency (optional) */ + of_property_read_u32(dn, "clock-frequency", &b_clk_freq); + /* Reset (optional) */ ir->rst = devm_reset_control_get_optional_exclusive(dev, NULL); if (IS_ERR(ir->rst)) @@ -180,11 +181,12 @@ static int sunxi_ir_probe(struct platform_device *pdev) if (ret) return ret; - ret = clk_set_rate(ir->clk, SUNXI_IR_BASE_CLK); + ret = clk_set_rate(ir->clk, b_clk_freq); if (ret) { dev_err(dev, "set ir base clock failed!\n"); goto exit_reset_assert; } + dev_dbg(dev, "set base clock frequency to %d Hz.\n", b_clk_freq); if (clk_prepare_enable(ir->apb_clk)) { dev_err(dev, "try to enable apb_ir_clk failed\n"); @@ -225,7 +227,8 @@ static int sunxi_ir_probe(struct platform_device *pdev) ir->rc->map_name = ir->map_name ?: RC_MAP_EMPTY; ir->rc->dev.parent = dev; ir->rc->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER; - ir->rc->rx_resolution = SUNXI_IR_SAMPLE; + /* Frequency after IR internal divider with sample period in ns */ + ir->rc->rx_resolution = (1000000000ul / (b_clk_freq / 64)); ir->rc->timeout = MS_TO_NS(SUNXI_IR_TIMEOUT); ir->rc->driver_name = SUNXI_IR_DEV; -- 2.11.0