From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ABDB1C468BD for ; Fri, 7 Jun 2019 23:11:56 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 61D7F212F5 for ; Fri, 7 Jun 2019 23:11:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="B/ihzPVx"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CECHZJqg" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 61D7F212F5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=RtThuGcSpcFQ5kKZFhUoV6hOqtyxhpm/v8gK6HhX2Os=; b=B/ihzPVxAaq1zJ Poxz9ynvkpHO2+sxkeMvjQGxR0j1NL4SgUlk0C/htMIM5bAdhK5fJcxkILsn3ahsgrq+4x2JTEgyg yIYWMzR9116Lwiir/vbUXdyr0QvTZ8I5MUULpvBf/GziCZ0WnRHa4KAdjHqB3IdPIRWsxu2wXbSU4 ojkmuRgo/RiGvdnw9NvF28VSNV/boQfSvvqOatK14ArzQiApLr3Ct+OTFywVbVp1Nq57ZolW9ANW+ Ri8ej8nR+RO8TesjiETKsJK1bWaVjI7SsFpiMbjq3HRnX7LaIvaBgq6IkA89lMTHRX+LuxGryR97f Ly3WCrlAebAZqCDET2+A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hZO1Z-0001YN-RJ; Fri, 07 Jun 2019 23:11:53 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hZO0u-0000v7-EV for linux-arm-kernel@lists.infradead.org; Fri, 07 Jun 2019 23:11:14 +0000 Received: by mail-wr1-x444.google.com with SMTP id v14so3634893wrr.4 for ; Fri, 07 Jun 2019 16:11:12 -0700 (PDT) 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 :mime-version:content-transfer-encoding; bh=nQa52sUHZ517m7H0LPZd/LRjrkZC8z+E4fM+VmhMcO0=; b=CECHZJqg/l5iO56T6hSFDxp8SKDvbku/8/gT+5g/3BhUfSrCljN4D11Laf+iXL29JR RMC0fWsn4BGkqOU7ZAsRawsHpNrGBQd5qzvD172Ces5DFruTSwS+nT/FbGDjaLx0k13X snmUOZTNZ2u3xtC02JBeWERzKEQ93DZ+JQABqrPpaxYu6KNjDh69svYQOlLVklgcgXQz GyFRkB/R8Tf2C9iuc77m0KP8CXt09E0VYwFrknpV+8NArPH+jWh5IW7/ZoP/5RgkY0JH t3kGCt0sTkjj6RzMTbugneDy2SA8nyILg70FzTlTSt3cWTkj94gB/K+XT19AFXHxSCra AuZA== 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:mime-version:content-transfer-encoding; bh=nQa52sUHZ517m7H0LPZd/LRjrkZC8z+E4fM+VmhMcO0=; b=O3M3xvTqdYa9J0WNS32hdZeAr16d8HIF5/dI5VfmOpOn05WDzzkEDcX/sgVg4GBsKl l/8CWWwx8jWF+TSFw0fZmetXpgYrb0ee1NZXrlapzOr4AL7AibgKHlUwNlk3aICrxnCC p18208jJndhovi7TyRpra/XcMy9Vleg3VXmn1szY14SZGdPdUXhWKDsxc/IEVd0ixJPN qltOAQDDO8NTEj9S1x8//RYLcL5ZIRDRHwAANqKBKn6lOFWBaE7xUrQajxLLa1UAfml9 4BZF6zkUsFFefxaaXL+wrTBGYlWh3egSNVS3BeLUl/vgqZayHkvPzxRT2QspwKtZEvTd tbPQ== X-Gm-Message-State: APjAAAUDYmnFBkcTlSY3UmgGBXxcAdZ8Ho5MCkXbJ8+Qfs1P28iBoLcn 5LIXALDzWrBkHZYLAlgjk30= X-Google-Smtp-Source: APXvYqwHX/FPxKirOi8VnV5ct8inI/+gasfuvYrdXORuCb+nY+vevbp3JsrN3ja9w8hPuIQD2+c1jQ== X-Received: by 2002:adf:cc85:: with SMTP id p5mr20049716wrj.47.1559949071207; Fri, 07 Jun 2019 16:11:11 -0700 (PDT) Received: from localhost.localdomain ([2a01:e0a:1f1:d0f0::4e2b:d7ca]) by smtp.gmail.com with ESMTPSA id h84sm4108559wmf.43.2019.06.07.16.11.09 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 07 Jun 2019 16:11:09 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= To: Mauro Carvalho Chehab , Rob Herring , Mark Rutland , Maxime Ripard , Chen-Yu Tsai Subject: [PATCH v5 02/13] media: rc: Introduce sunxi_ir_quirks Date: Sat, 8 Jun 2019 01:10:49 +0200 Message-Id: <20190607231100.5894-3-peron.clem@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190607231100.5894-1-peron.clem@gmail.com> References: <20190607231100.5894-1-peron.clem@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190607_161112_496968_78D8F3EF X-CRM114-Status: GOOD ( 17.21 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Sean Young , linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com, =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhpcyBkcml2ZXIgaXMgdXNlZCBpbiB2YXJpb3VzIEFsbHdpbm5lciBTb0Mgd2l0aCBkaWZmZXJl bnQgY29uZmlndXJhdGlvbi4KCkludHJvZHVjZSBhIHF1aXJrcyBzdHJ1Y3QgdG8ga25vdyB0aGUg ZmlmbyBzaXplIGFuZCBpZiBhIHJlc2V0IGlzIHJlcXVpcmVkLgoKU2lnbmVkLW9mZi1ieTogQ2zD qW1lbnQgUMOpcm9uIDxwZXJvbi5jbGVtQGdtYWlsLmNvbT4KQWNrZWQtYnk6IFNlYW4gWW91bmcg PHNlYW5AbWVzcy5vcmc+CkFja2VkLWJ5OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGJv b3RsaW4uY29tPgotLS0KIGRyaXZlcnMvbWVkaWEvcmMvc3VueGktY2lyLmMgfCA2MSArKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NyBpbnNlcnRp b25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JjL3N1 bnhpLWNpci5jIGIvZHJpdmVycy9tZWRpYS9yYy9zdW54aS1jaXIuYwppbmRleCAzMDdlNDQ3MTRl YTAuLmQwMmRjYjZmZDBhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9zdW54aS1jaXIu YworKysgYi9kcml2ZXJzL21lZGlhL3JjL3N1bnhpLWNpci5jCkBAIC04MSw2ICs4MSwxNyBAQAog LyogVGltZSBhZnRlciB3aGljaCBkZXZpY2Ugc3RvcHMgc2VuZGluZyBkYXRhIGluIG1zICovCiAj ZGVmaW5lIFNVTlhJX0lSX1RJTUVPVVQgICAgICAxMjAKIAorLyoqCisgKiBzdHJ1Y3Qgc3VueGlf aXJfcXVpcmtzIC0gRGlmZmVyZW5jZXMgYmV0d2VlbiBTb0MgdmFyaWFudHMuCisgKgorICogQGhh c19yZXNldDogU29DIG5lZWRzIHJlc2V0IGRlYXNzZXJ0ZWQuCisgKiBAZmlmb19zaXplOiBzaXpl IG9mIHRoZSBmaWZvLgorICovCitzdHJ1Y3Qgc3VueGlfaXJfcXVpcmtzIHsKKwlib29sCQloYXNf cmVzZXQ7CisJaW50CQlmaWZvX3NpemU7Cit9OworCiBzdHJ1Y3Qgc3VueGlfaXIgewogCXNwaW5s b2NrX3QgICAgICBpcl9sb2NrOwogCXN0cnVjdCByY19kZXYgICAqcmM7CkBAIC0xNDMsNiArMTU0 LDcgQEAgc3RhdGljIGludCBzdW54aV9pcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQogCiAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKIAlzdHJ1Y3QgZGV2aWNl X25vZGUgKmRuID0gZGV2LT5vZl9ub2RlOworCWNvbnN0IHN0cnVjdCBzdW54aV9pcl9xdWlya3Mg KnF1aXJrczsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIAlzdHJ1Y3Qgc3VueGlfaXIgKmlyOwog CXUzMiBiX2Nsa19mcmVxID0gU1VOWElfSVJfQkFTRV9DTEs7CkBAIC0xNTEsMTIgKzE2MywxNSBA QCBzdGF0aWMgaW50IHN1bnhpX2lyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp CiAJaWYgKCFpcikKIAkJcmV0dXJuIC1FTk9NRU07CiAKKwlxdWlya3MgPSBvZl9kZXZpY2VfZ2V0 X21hdGNoX2RhdGEoJnBkZXYtPmRldik7CisJaWYgKHF1aXJrcyA9PSBOVUxMKSB7CisJCWRldl9l cnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBkZXRlcm1pbmUgdGhlIHF1aXJrcyB0byB1c2VcbiIp OworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKIAlzcGluX2xvY2tfaW5pdCgmaXItPmlyX2xvY2sp OwogCi0JaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRuLCAiYWxsd2lubmVyLHN1bjVpLWEx My1pciIpKQotCQlpci0+Zmlmb19zaXplID0gNjQ7Ci0JZWxzZQotCQlpci0+Zmlmb19zaXplID0g MTY7CisJaXItPmZpZm9fc2l6ZSA9IHF1aXJrcy0+Zmlmb19zaXplOwogCiAJLyogQ2xvY2sgKi8K IAlpci0+YXBiX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJhcGIiKTsKQEAgLTE3MywxMyArMTg4 LDE1IEBAIHN0YXRpYyBpbnQgc3VueGlfaXJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKIAkvKiBCYXNlIGNsb2NrIGZyZXF1ZW5jeSAob3B0aW9uYWwpICovCiAJb2ZfcHJvcGVy dHlfcmVhZF91MzIoZG4sICJjbG9jay1mcmVxdWVuY3kiLCAmYl9jbGtfZnJlcSk7CiAKLQkvKiBS ZXNldCAob3B0aW9uYWwpICovCi0JaXItPnJzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfb3B0 aW9uYWxfZXhjbHVzaXZlKGRldiwgTlVMTCk7Ci0JaWYgKElTX0VSUihpci0+cnN0KSkKLQkJcmV0 dXJuIFBUUl9FUlIoaXItPnJzdCk7Ci0JcmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChpci0+ cnN0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCS8qIFJlc2V0ICovCisJaWYgKHF1aXJr cy0+aGFzX3Jlc2V0KSB7CisJCWlyLT5yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1 c2l2ZShkZXYsIE5VTEwpOworCQlpZiAoSVNfRVJSKGlyLT5yc3QpKQorCQkJcmV0dXJuIFBUUl9F UlIoaXItPnJzdCk7CisJCXJldCA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoaXItPnJzdCk7CisJ CWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KIAogCXJldCA9IGNsa19zZXRfcmF0ZShpci0+ Y2xrLCBiX2Nsa19mcmVxKTsKIAlpZiAocmV0KSB7CkBAIC0zMTYsMTAgKzMzMywyNiBAQCBzdGF0 aWMgaW50IHN1bnhpX2lyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXJl dHVybiAwOwogfQogCitzdGF0aWMgY29uc3Qgc3RydWN0IHN1bnhpX2lyX3F1aXJrcyBzdW40aV9h MTBfaXJfcXVpcmtzID0geworCS5oYXNfcmVzZXQgPSBmYWxzZSwKKwkuZmlmb19zaXplID0gMTYs Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHN1bnhpX2lyX3F1aXJrcyBzdW41aV9hMTNfaXJf cXVpcmtzID0geworCS5oYXNfcmVzZXQgPSBmYWxzZSwKKwkuZmlmb19zaXplID0gNjQsCit9Owor CiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW54aV9pcl9tYXRjaFtdID0gewot CXsgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjRpLWExMC1pciIsIH0sCi0JeyAuY29tcGF0 aWJsZSA9ICJhbGx3aW5uZXIsc3VuNWktYTEzLWlyIiwgfSwKLQl7fSwKKwl7CisJCS5jb21wYXRp YmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtaXIiLAorCQkuZGF0YSA9ICZzdW40aV9hMTBfaXJf cXVpcmtzLAorCX0sCisJeworCQkuY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNWktYTEzLWly IiwKKwkJLmRhdGEgPSAmc3VuNWlfYTEzX2lyX3F1aXJrcywKKwl9LAorCXt9CiB9OwogTU9EVUxF X0RFVklDRV9UQUJMRShvZiwgc3VueGlfaXJfbWF0Y2gpOwogCi0tIAoyLjIwLjEKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= Subject: [PATCH v5 02/13] media: rc: Introduce sunxi_ir_quirks Date: Sat, 8 Jun 2019 01:10:49 +0200 Message-ID: <20190607231100.5894-3-peron.clem@gmail.com> References: <20190607231100.5894-1-peron.clem@gmail.com> Reply-To: peron.clem-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Return-path: Sender: linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org In-Reply-To: <20190607231100.5894-1-peron.clem-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , To: Mauro Carvalho Chehab , Rob Herring , Mark Rutland , Maxime Ripard , Chen-Yu Tsai Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= , Sean Young List-Id: devicetree@vger.kernel.org This driver is used in various Allwinner SoC with different configuration. Introduce a quirks struct to know the fifo size and if a reset is required. Signed-off-by: Cl=C3=A9ment P=C3=A9ron Acked-by: Sean Young Acked-by: Maxime Ripard --- drivers/media/rc/sunxi-cir.c | 61 +++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/drivers/media/rc/sunxi-cir.c b/drivers/media/rc/sunxi-cir.c index 307e44714ea0..d02dcb6fd0a5 100644 --- a/drivers/media/rc/sunxi-cir.c +++ b/drivers/media/rc/sunxi-cir.c @@ -81,6 +81,17 @@ /* Time after which device stops sending data in ms */ #define SUNXI_IR_TIMEOUT 120 =20 +/** + * struct sunxi_ir_quirks - Differences between SoC variants. + * + * @has_reset: SoC needs reset deasserted. + * @fifo_size: size of the fifo. + */ +struct sunxi_ir_quirks { + bool has_reset; + int fifo_size; +}; + struct sunxi_ir { spinlock_t ir_lock; struct rc_dev *rc; @@ -143,6 +154,7 @@ static int sunxi_ir_probe(struct platform_device *pdev) =20 struct device *dev =3D &pdev->dev; struct device_node *dn =3D dev->of_node; + const struct sunxi_ir_quirks *quirks; struct resource *res; struct sunxi_ir *ir; u32 b_clk_freq =3D SUNXI_IR_BASE_CLK; @@ -151,12 +163,15 @@ static int sunxi_ir_probe(struct platform_device *pde= v) if (!ir) return -ENOMEM; =20 + quirks =3D of_device_get_match_data(&pdev->dev); + if (quirks =3D=3D NULL) { + dev_err(&pdev->dev, "Failed to determine the quirks to use\n"); + return -ENODEV; + } + spin_lock_init(&ir->ir_lock); =20 - if (of_device_is_compatible(dn, "allwinner,sun5i-a13-ir")) - ir->fifo_size =3D 64; - else - ir->fifo_size =3D 16; + ir->fifo_size =3D quirks->fifo_size; =20 /* Clock */ ir->apb_clk =3D devm_clk_get(dev, "apb"); @@ -173,13 +188,15 @@ static int sunxi_ir_probe(struct platform_device *pde= v) /* Base clock frequency (optional) */ of_property_read_u32(dn, "clock-frequency", &b_clk_freq); =20 - /* Reset (optional) */ - ir->rst =3D devm_reset_control_get_optional_exclusive(dev, NULL); - if (IS_ERR(ir->rst)) - return PTR_ERR(ir->rst); - ret =3D reset_control_deassert(ir->rst); - if (ret) - return ret; + /* Reset */ + if (quirks->has_reset) { + ir->rst =3D devm_reset_control_get_exclusive(dev, NULL); + if (IS_ERR(ir->rst)) + return PTR_ERR(ir->rst); + ret =3D reset_control_deassert(ir->rst); + if (ret) + return ret; + } =20 ret =3D clk_set_rate(ir->clk, b_clk_freq); if (ret) { @@ -316,10 +333,26 @@ static int sunxi_ir_remove(struct platform_device *pd= ev) return 0; } =20 +static const struct sunxi_ir_quirks sun4i_a10_ir_quirks =3D { + .has_reset =3D false, + .fifo_size =3D 16, +}; + +static const struct sunxi_ir_quirks sun5i_a13_ir_quirks =3D { + .has_reset =3D false, + .fifo_size =3D 64, +}; + static const struct of_device_id sunxi_ir_match[] =3D { - { .compatible =3D "allwinner,sun4i-a10-ir", }, - { .compatible =3D "allwinner,sun5i-a13-ir", }, - {}, + { + .compatible =3D "allwinner,sun4i-a10-ir", + .data =3D &sun4i_a10_ir_quirks, + }, + { + .compatible =3D "allwinner,sun5i-a13-ir", + .data =3D &sun5i_a13_ir_quirks, + }, + {} }; MODULE_DEVICE_TABLE(of, sunxi_ir_match); =20 --=20 2.20.1 --=20 You received this message because you are subscribed to the Google Groups "= linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web, visit https://groups.google.com/d/msgid= /linux-sunxi/20190607231100.5894-3-peron.clem%40gmail.com. For more options, visit https://groups.google.com/d/optout. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ABA74C468BD for ; Fri, 7 Jun 2019 23:11:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 816F9212F5 for ; Fri, 7 Jun 2019 23:11:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CECHZJqg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731450AbfFGXLO (ORCPT ); Fri, 7 Jun 2019 19:11:14 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:45014 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731250AbfFGXLN (ORCPT ); Fri, 7 Jun 2019 19:11:13 -0400 Received: by mail-wr1-f68.google.com with SMTP id b17so3613091wrq.11; Fri, 07 Jun 2019 16:11:11 -0700 (PDT) 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 :mime-version:content-transfer-encoding; bh=nQa52sUHZ517m7H0LPZd/LRjrkZC8z+E4fM+VmhMcO0=; b=CECHZJqg/l5iO56T6hSFDxp8SKDvbku/8/gT+5g/3BhUfSrCljN4D11Laf+iXL29JR RMC0fWsn4BGkqOU7ZAsRawsHpNrGBQd5qzvD172Ces5DFruTSwS+nT/FbGDjaLx0k13X snmUOZTNZ2u3xtC02JBeWERzKEQ93DZ+JQABqrPpaxYu6KNjDh69svYQOlLVklgcgXQz GyFRkB/R8Tf2C9iuc77m0KP8CXt09E0VYwFrknpV+8NArPH+jWh5IW7/ZoP/5RgkY0JH t3kGCt0sTkjj6RzMTbugneDy2SA8nyILg70FzTlTSt3cWTkj94gB/K+XT19AFXHxSCra AuZA== 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:mime-version:content-transfer-encoding; bh=nQa52sUHZ517m7H0LPZd/LRjrkZC8z+E4fM+VmhMcO0=; b=HUM+lwVYBW05bXjd9FTgTIF/aW/qKChvkYk2ipAJh27t7+04O2PZQQugeU+SDMnDPm VBfVk/KeCmUUyoUpLxgikVvJjolULbGIYTTFjDNw5Y93iTIFFgYa8nQPbC5ExQbEueCp BLf7vnpe7jSTyOX0T/uK+zjnorRoG6+T69aAuTNVFDG3UdcmOlF9YReOhPdhO2Rvo0mu At2Z5Ev9V8jnrYKM5/IrKdg9E7CADw1xGdJPKziIzikNw15wm9/3GpzBNJ2IgfAKlxLP pLXzgo1sX5D1ga1dAHr/CV+n6PI5bR0huo1XwTT4gcenJN51tdLNaX018m7oJlyWuEw/ ToCg== X-Gm-Message-State: APjAAAULloIeADQFjlW4fyIRbx6qEzYNelM8n3hMnUTZ801uGKgWzCzo ovip+kUwwy6hrZGe0NyxikxL45ceoo0= X-Google-Smtp-Source: APXvYqwHX/FPxKirOi8VnV5ct8inI/+gasfuvYrdXORuCb+nY+vevbp3JsrN3ja9w8hPuIQD2+c1jQ== X-Received: by 2002:adf:cc85:: with SMTP id p5mr20049716wrj.47.1559949071207; Fri, 07 Jun 2019 16:11:11 -0700 (PDT) Received: from localhost.localdomain ([2a01:e0a:1f1:d0f0::4e2b:d7ca]) by smtp.gmail.com with ESMTPSA id h84sm4108559wmf.43.2019.06.07.16.11.09 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 07 Jun 2019 16:11:09 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= To: Mauro Carvalho Chehab , Rob Herring , Mark Rutland , Maxime Ripard , Chen-Yu Tsai Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org, =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= , Sean Young Subject: [PATCH v5 02/13] media: rc: Introduce sunxi_ir_quirks Date: Sat, 8 Jun 2019 01:10:49 +0200 Message-Id: <20190607231100.5894-3-peron.clem@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190607231100.5894-1-peron.clem@gmail.com> References: <20190607231100.5894-1-peron.clem@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This driver is used in various Allwinner SoC with different configuration. Introduce a quirks struct to know the fifo size and if a reset is required. Signed-off-by: Clément Péron Acked-by: Sean Young Acked-by: Maxime Ripard --- drivers/media/rc/sunxi-cir.c | 61 +++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/drivers/media/rc/sunxi-cir.c b/drivers/media/rc/sunxi-cir.c index 307e44714ea0..d02dcb6fd0a5 100644 --- a/drivers/media/rc/sunxi-cir.c +++ b/drivers/media/rc/sunxi-cir.c @@ -81,6 +81,17 @@ /* Time after which device stops sending data in ms */ #define SUNXI_IR_TIMEOUT 120 +/** + * struct sunxi_ir_quirks - Differences between SoC variants. + * + * @has_reset: SoC needs reset deasserted. + * @fifo_size: size of the fifo. + */ +struct sunxi_ir_quirks { + bool has_reset; + int fifo_size; +}; + struct sunxi_ir { spinlock_t ir_lock; struct rc_dev *rc; @@ -143,6 +154,7 @@ static int sunxi_ir_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; struct device_node *dn = dev->of_node; + const struct sunxi_ir_quirks *quirks; struct resource *res; struct sunxi_ir *ir; u32 b_clk_freq = SUNXI_IR_BASE_CLK; @@ -151,12 +163,15 @@ static int sunxi_ir_probe(struct platform_device *pdev) if (!ir) return -ENOMEM; + quirks = of_device_get_match_data(&pdev->dev); + if (quirks == NULL) { + dev_err(&pdev->dev, "Failed to determine the quirks to use\n"); + return -ENODEV; + } + spin_lock_init(&ir->ir_lock); - if (of_device_is_compatible(dn, "allwinner,sun5i-a13-ir")) - ir->fifo_size = 64; - else - ir->fifo_size = 16; + ir->fifo_size = quirks->fifo_size; /* Clock */ ir->apb_clk = devm_clk_get(dev, "apb"); @@ -173,13 +188,15 @@ static int sunxi_ir_probe(struct platform_device *pdev) /* 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)) - return PTR_ERR(ir->rst); - ret = reset_control_deassert(ir->rst); - if (ret) - return ret; + /* Reset */ + if (quirks->has_reset) { + ir->rst = devm_reset_control_get_exclusive(dev, NULL); + if (IS_ERR(ir->rst)) + return PTR_ERR(ir->rst); + ret = reset_control_deassert(ir->rst); + if (ret) + return ret; + } ret = clk_set_rate(ir->clk, b_clk_freq); if (ret) { @@ -316,10 +333,26 @@ static int sunxi_ir_remove(struct platform_device *pdev) return 0; } +static const struct sunxi_ir_quirks sun4i_a10_ir_quirks = { + .has_reset = false, + .fifo_size = 16, +}; + +static const struct sunxi_ir_quirks sun5i_a13_ir_quirks = { + .has_reset = false, + .fifo_size = 64, +}; + static const struct of_device_id sunxi_ir_match[] = { - { .compatible = "allwinner,sun4i-a10-ir", }, - { .compatible = "allwinner,sun5i-a13-ir", }, - {}, + { + .compatible = "allwinner,sun4i-a10-ir", + .data = &sun4i_a10_ir_quirks, + }, + { + .compatible = "allwinner,sun5i-a13-ir", + .data = &sun5i_a13_ir_quirks, + }, + {} }; MODULE_DEVICE_TABLE(of, sunxi_ir_match); -- 2.20.1