Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3047663yba; Mon, 8 Apr 2019 09:59:00 -0700 (PDT) X-Google-Smtp-Source: APXvYqyw2Iw1Jk5H0KtMAyOyhNog3DzNpsDUeUjcojnDSQWB1dth9MKqLFQVb04XuxYL3H5c7puZ X-Received: by 2002:aa7:8083:: with SMTP id v3mr31447776pff.135.1554742740602; Mon, 08 Apr 2019 09:59:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554742740; cv=none; d=google.com; s=arc-20160816; b=I8DmE6MSFWdLBQA0MAYTaTH+RfwMbuqmBws7Cfz1u9Kx4hiss9ypj//USC2izc34Gn IfJTAPS9LVTollVjssqQepjJrM0XjWoga39G644P5xGhAt44hk5prwOVhe7kvCKmss3U mpzpHylbKgWqaItjyqzTD2S7necdQA5o/vIYRazcsvg0gnJgJ7VvPXGLlGsAmosQm6CB KYnSFbWzxaYFSswuZfYel7gNEFqB9xiiWztOiP/3Dtdv+GHSEHT+lWjFbjDriAtLxRHj DMHC8P6apsfuFVhq2E0MwfPI9OfRpYrXgjorB3S5z1w/mYaNCOR68rUHKiMg9i4jp0jy ptUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=CDV7UtaKTBwppYArUJgoPKHqkzu4SF6oT4dgskDSIA4=; b=mdMRCKbwtnHIktCR9lLo2bV3Dty0jswyz3EafasMYl99YYuHE1OL3oI+gYoJ0GnHm3 ErVTsL+qqC2paIKY2ZVQ8WhpBHXeZ16TNIwxpgZa0a/G9AbOIfjM47EkHxuaS31bq9KA f7XK//VYssWBw984FkENCDbdQ0DsWlPnHKfo6WLy4SJTwdUCOmcqrU+7Bqo5HGXwympF SRn8qgcZZdMWPz3ByXIo6K2/ZgeOKXUwiZ932Uv+WcmEDlEs6h10WJmYd1fbsqHbaz+F YDgXlA7yzFabcE66cRHi88SyKTC70D3tq63oWqjlh/LbLHhGUnmjjGGkVfFKoxYOJ1hA pwpQ== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t70si8205044pgd.386.2019.04.08.09.58.45; Mon, 08 Apr 2019 09:59:00 -0700 (PDT) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729110AbfDHQ5y (ORCPT + 99 others); Mon, 8 Apr 2019 12:57:54 -0400 Received: from mirror2.csie.ntu.edu.tw ([140.112.30.76]:43770 "EHLO wens.csie.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729030AbfDHQ5v (ORCPT ); Mon, 8 Apr 2019 12:57:51 -0400 Received: by wens.csie.org (Postfix, from userid 1000) id D8C1E5FD85; Tue, 9 Apr 2019 00:57:46 +0800 (CST) From: Chen-Yu Tsai To: Maxime Ripard , Michael Turquette , Stephen Boyd , Rob Herring , Mark Rutland , Yong Deng , Mauro Carvalho Chehab Cc: Chen-Yu Tsai , linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Kocialkowski Subject: [PATCH 6/6] [DO NOT MERGE] ARM: dts: sun8i: a83t: bananapi-m3: Enable BPI OV5640 camera Date: Tue, 9 Apr 2019 00:57:44 +0800 Message-Id: <20190408165744.11672-7-wens@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190408165744.11672-1-wens@kernel.org> References: <20190408165744.11672-1-wens@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chen-Yu Tsai Bananapi produces a camera module specifically for the Bananapi M3. This module has an OV5640 sensor connected via the parallel CSI interface, and an OV8865 sensor connected via MIPI CSI. I2C2 is the shared control interface for them. The active-low reset signal is shared by the two sensors, while each sensor has a dedicated shutdown line. The module's onboard regulator provide power for the OV5640, while the Bananapi M3 provides power from the PMIC for the OV8865. There's also a VM149C voice coil motor driver at I2C address 0x0c, and an unknown device responding on I2C address 0x20. Both are related to the OV8655 at address 0x36. Since there is no support for the OV8865, this patch only enables the OV5640. Signed-off-by: Chen-Yu Tsai --- arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts | 101 +++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts b/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts index 838be7b3715f..11b27755207a 100644 --- a/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts +++ b/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts @@ -85,6 +85,33 @@ }; }; + reg_ov5640_avdd: ov5640-avdd { + compatible = "regulator-fixed"; + regulator-name = "ov5640-avdd"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + /* dldo4 enables this regulator; real supply is PS */ + vin-supply = <®_dldo4>; + }; + + reg_ov5640_dovdd: ov5640-iovdd { + compatible = "regulator-fixed"; + regulator-name = "ov5640-dovdd"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + /* dldo4 enables this regulator; real supply is PS */ + vin-supply = <®_dldo4>; + }; + + reg_ov5640_dvdd: ov5640-dvdd { + compatible = "regulator-fixed"; + regulator-name = "ov5640-dvdd"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <1500000>; + /* dldo4 enables this regulator; real supply is PS */ + vin-supply = <®_dldo4>; + }; + reg_usb1_vbus: reg-usb1-vbus { compatible = "regulator-fixed"; regulator-name = "usb1-vbus"; @@ -115,6 +142,30 @@ cpu-supply = <®_dcdc3>; }; +&ccu { + /* Use a stable clock source with known fixed rate for MCLK */ + assigned-clocks = <&ccu CLK_CSI_MCLK>; + assigned-clock-parents = <&osc24M>; + assigned-clock-rates = <24000000>; +}; + +&csi { + pinctrl-names = "default"; + pinctrl-0 = <&csi_8bit_parallel_pins>; + status = "okay"; +}; + +&csi_in { + csi_from_ov5640: endpoint { + remote-endpoint = <&ov5640_to_csi>; + bus-width = <8>; + data-shift = <2>; + hsync-active = <1>; /* Active high */ + vsync-active = <1>; /* Active high */ + pclk-sample = <1>; /* Rising */ + }; +}; + &de { status = "okay"; }; @@ -147,6 +198,36 @@ }; }; +&i2c2 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_pe_pins>; + status = "okay"; + + ov5640: camera@3c { + compatible = "ovti,ov5640"; + reg = <0x3c>; + clocks = <&ccu CLK_CSI_MCLK>; + clock-names = "xclk"; + AVDD-supply = <®_ov5640_avdd>; + DOVDD-supply = <®_ov5640_dovdd>; + DVDD-supply = <®_ov5640_dvdd>; + powerdown-gpios = <&pio 3 15 GPIO_ACTIVE_HIGH>; /* PD15 */ + reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */ + rotation = <180>; + + port { + ov5640_to_csi: endpoint { + remote-endpoint = <&csi_from_ov5640>; + bus-width = <8>; + data-shift = <2>; + hsync-active = <1>; /* Active high */ + vsync-active = <1>; /* Active high */ + pclk-sample = <1>; /* Rising */ + }; + }; + }; +}; + &mdio { rgmii_phy: ethernet-phy@1 { compatible = "ethernet-phy-ieee802.3-c22"; @@ -191,6 +272,12 @@ status = "okay"; }; +&pio { + /* pinctrl hog: MCLK is shared by both camera sensors */ + pinctrl-names = "default"; + pinctrl-0 = <&csi_mclk_pin>; +}; + &r_cir { clock-frequency = <3000000>; status = "okay"; @@ -327,11 +414,25 @@ regulator-name = "vcc-pd"; }; +®_dldo4 { + /* This also powers the pull-ups on the CSI connector */ + regulator-always-on; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-name = "avdd-csi"; +}; + ®_drivevbus { regulator-name = "usb0-vbus"; status = "okay"; }; +®_eldo1 { + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-name = "dvdd-csi-r"; +}; + ®_fldo1 { regulator-min-microvolt = <1080000>; regulator-max-microvolt = <1320000>; -- 2.20.1