Devicetree
 help / color / mirror / Atom feed
* [PATCH 5/6] arm64: dts: ti: k3-j721s2-common-proc-board: Add USB support
From: Aswath Govindraju @ 2022-01-25 13:11 UTC (permalink / raw)
  Cc: linux-kernel, devicetree, Rob Herring, Tero Kristo,
	Vignesh Raghavendra, Nishanth Menon, Aswath Govindraju
In-Reply-To: <20220125131113.727-1-a-govindraju@ti.com>

The board uses lane 1 of SERDES for USB. Set the mux
accordingly.

The USB controller and EVM supports super-speed for USB0
on the Type-C port. However, the SERDES has a limitation
that upto 2 protocols can be used at a time. The SERDES is
wired for PCIe, eDP and USB super-speed. It has been
chosen to use PCIe and eDP as default. So restrict
USB0 to high-speed mode.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
---
 .../dts/ti/k3-j721s2-common-proc-board.dts    | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-j721s2-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j721s2-common-proc-board.dts
index 791f235bd95f..aa75dc541842 100644
--- a/arch/arm64/boot/dts/ti/k3-j721s2-common-proc-board.dts
+++ b/arch/arm64/boot/dts/ti/k3-j721s2-common-proc-board.dts
@@ -147,6 +147,12 @@
 			J721S2_IOPAD(0x020, PIN_INPUT, 7) /* (AA23) MCAN15_RX.GPIO0_8 */
 		>;
 	};
+
+	main_usbss0_pins_default: main-usbss0-pins-default {
+		pinctrl-single,pins = <
+			J721S2_IOPAD(0x0ec, PIN_OUTPUT, 6) /* (AG25) TIMER_IO1.USB0_DRVVBUS */
+		>;
+	};
 };
 
 &wkup_pmx0 {
@@ -372,6 +378,22 @@
 	};
 };
 
+&usb_serdes_mux {
+	idle-states = <1>; /* USB0 to SERDES lane 1 */
+};
+
+&usbss0 {
+	pinctrl-0 = <&main_usbss0_pins_default>;
+	pinctrl-names = "default";
+	ti,vbus-divider;
+	ti,usb2-only;
+};
+
+&usb0 {
+	dr_mode = "otg";
+	maximum-speed = "high-speed";
+};
+
 &mcu_mcan0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mcu_mcan0_pins_default>;
-- 
2.17.1


^ permalink raw reply related

* [PATCH 0/6] J721S2: Add support for additional IPs
From: Aswath Govindraju @ 2022-01-25 13:11 UTC (permalink / raw)
  Cc: linux-kernel, devicetree, Rob Herring, Tero Kristo,
	Vignesh Raghavendra, Nishanth Menon, Aswath Govindraju

The following series of patches add support for the following
on J721S2 common processor board,

- USB
- SerDes
- OSPI

Aswath Govindraju (6):
  arm64: dts: ti: k3-j721s2-main: Add support for USB
  arm64: dts: ti: k3-j721s2-main: Add SERDES and WIZ device tree node
  arm64: dts: ti: k3-j721s2-mcu-wakeup: Add support of OSPI
  arm64: dts: ti: k3-j721s2-common-proc-board: Enable SERDES0
  arm64: dts: ti: k3-j721s2-common-proc-board: Add USB support
  arm64: dts: k3-j721s2: Add support for OSPI Flashes

 .../dts/ti/k3-j721s2-common-proc-board.dts    |  78 ++++++++++++
 arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi    | 112 ++++++++++++++++++
 .../boot/dts/ti/k3-j721s2-mcu-wakeup.dtsi     |  40 +++++++
 arch/arm64/boot/dts/ti/k3-j721s2-som-p0.dtsi  |  42 +++++++
 4 files changed, 272 insertions(+)

-- 
2.17.1


^ permalink raw reply

* [PATCH 2/6] arm64: dts: ti: k3-j721s2-main: Add SERDES and WIZ device tree node
From: Aswath Govindraju @ 2022-01-25 13:11 UTC (permalink / raw)
  Cc: linux-kernel, devicetree, Rob Herring, Tero Kristo,
	Vignesh Raghavendra, Nishanth Menon, Aswath Govindraju
In-Reply-To: <20220125131113.727-1-a-govindraju@ti.com>

Add dt node for the single instance of WIZ (SERDES wrapper) and
SERDES module shared by PCIe, eDP and USB.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
---
 arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi | 70 ++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi b/arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi
index e651f0af1aaa..ebd55032e59c 100644
--- a/arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi
@@ -5,6 +5,13 @@
  * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/
  */
 
+/ {
+	serdes_refclk: serdes-refclk {
+		#clock-cells = <0>;
+		compatible = "fixed-clock";
+	};
+};
+
 &cbass_main {
 	msmc_ram: sram@70000000 {
 		compatible = "mmio-sram";
@@ -33,6 +40,13 @@
 		#size-cells = <1>;
 		ranges = <0x00 0x00 0x00104000 0x18000>;
 
+		serdes_ln_ctrl: mux-controller@80 {
+			compatible = "mmio-mux";
+			#mux-control-cells = <1>;
+			mux-reg-masks = <0x80 0x3>, <0x84 0x3>, /* SERDES0 lane0/1 select */
+					<0x88 0x3>, <0x8c 0x3>; /* SERDES0 lane2/3 select */
+		};
+
 		usb_serdes_mux: mux-controller@0 {
 			compatible = "mmio-mux";
 			#mux-control-cells = <1>;
@@ -725,6 +739,62 @@
 		};
 	};
 
+	serdes_wiz0: wiz@5060000 {
+		compatible = "ti,j721e-wiz-10g";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		power-domains = <&k3_pds 365 TI_SCI_PD_EXCLUSIVE>;
+		clocks = <&k3_clks 365 0>, <&k3_clks 365 3>, <&serdes_refclk>;
+		clock-names = "fck", "core_ref_clk", "ext_ref_clk";
+		num-lanes = <4>;
+		#reset-cells = <1>;
+		ranges = <0x5060000 0x0 0x5060000 0x10000>;
+
+		assigned-clocks = <&k3_clks 365 3>;
+		assigned-clock-parents = <&k3_clks 365 7>;
+
+		wiz0_pll0_refclk: pll0-refclk {
+			clocks = <&k3_clks 365 3>, <&serdes_refclk>;
+			clock-output-names = "wiz0_pll0_refclk";
+			#clock-cells = <0>;
+			assigned-clocks = <&wiz0_pll0_refclk>;
+			assigned-clock-parents = <&k3_clks 365 3>;
+		};
+
+		wiz0_pll1_refclk: pll1-refclk {
+			clocks = <&k3_clks 365 3>, <&serdes_refclk>;
+			clock-output-names = "wiz0_pll1_refclk";
+			#clock-cells = <0>;
+			assigned-clocks = <&wiz0_pll1_refclk>;
+			assigned-clock-parents = <&k3_clks 365 3>;
+		};
+
+		wiz0_refclk_dig: refclk-dig {
+			clocks = <&k3_clks 365 3>, <&serdes_refclk>;
+			clock-output-names = "wiz0_refclk_dig";
+			#clock-cells = <0>;
+			assigned-clocks = <&wiz0_refclk_dig>;
+			assigned-clock-parents = <&k3_clks 365 3>;
+		};
+
+		wiz0_cmn_refclk_dig_div: cmn-refclk-dig-div {
+			clocks = <&wiz0_refclk_dig>;
+			#clock-cells = <0>;
+		};
+
+		serdes0: serdes@5060000 {
+			compatible = "ti,j721e-serdes-10g";
+			reg = <0x05060000 0x00010000>;
+			reg-names = "torrent_phy";
+			resets = <&serdes_wiz0 0>;
+			reset-names = "torrent_reset";
+			clocks = <&wiz0_pll0_refclk>;
+			clock-names = "refclk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+
 	main_mcan0: can@2701000 {
 		compatible = "bosch,m_can";
 		reg = <0x00 0x02701000 0x00 0x200>,
-- 
2.17.1


^ permalink raw reply related

* [PATCH 3/6] arm64: dts: ti: k3-j721s2-mcu-wakeup: Add support of OSPI
From: Aswath Govindraju @ 2022-01-25 13:11 UTC (permalink / raw)
  Cc: linux-kernel, devicetree, Rob Herring, Tero Kristo,
	Vignesh Raghavendra, Nishanth Menon, Aswath Govindraju
In-Reply-To: <20220125131113.727-1-a-govindraju@ti.com>

Add support for two instance of OSPI in J721S2 SoC.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
---
 .../boot/dts/ti/k3-j721s2-mcu-wakeup.dtsi     | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-j721s2-mcu-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-j721s2-mcu-wakeup.dtsi
index 7521963719ff..569db20f356f 100644
--- a/arch/arm64/boot/dts/ti/k3-j721s2-mcu-wakeup.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j721s2-mcu-wakeup.dtsi
@@ -299,4 +299,44 @@
 			ti,cpts-periodic-outputs = <2>;
 		};
 	};
+
+	fss: syscon@47000000 {
+		compatible = "syscon", "simple-mfd";
+		reg = <0x0 0x47000000 0x0 0x100>;
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		ospi0: spi@47040000 {
+			compatible = "ti,am654-ospi", "cdns,qspi-nor";
+			reg = <0x00 0x47040000 0x00 0x100>,
+			      <0x5 0x0000000 0x1 0x0000000>;
+			interrupts = <GIC_SPI 840 IRQ_TYPE_LEVEL_HIGH>;
+			cdns,fifo-depth = <256>;
+			cdns,fifo-width = <4>;
+			cdns,trigger-address = <0x0>;
+			clocks = <&k3_clks 109 5>;
+			assigned-clocks = <&k3_clks 109 5>;
+			assigned-clock-parents = <&k3_clks 109 7>;
+			assigned-clock-rates = <166666666>;
+			power-domains = <&k3_pds 109 TI_SCI_PD_EXCLUSIVE>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
+		ospi1: spi@47050000 {
+			compatible = "ti,am654-ospi", "cdns,qspi-nor";
+			reg = <0x00 0x47050000 0x00 0x100>,
+			      <0x7 0x0000000 0x1 0x0000000>;
+			interrupts = <GIC_SPI 841 IRQ_TYPE_LEVEL_HIGH>;
+			cdns,fifo-depth = <256>;
+			cdns,fifo-width = <4>;
+			cdns,trigger-address = <0x0>;
+			clocks = <&k3_clks 110 5>;
+			power-domains = <&k3_pds 110 TI_SCI_PD_EXCLUSIVE>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
+	};
 };
-- 
2.17.1


^ permalink raw reply related

* [PATCH 1/6] arm64: dts: ti: k3-j721s2-main: Add support for USB
From: Aswath Govindraju @ 2022-01-25 13:11 UTC (permalink / raw)
  Cc: linux-kernel, devicetree, Rob Herring, Tero Kristo,
	Vignesh Raghavendra, Nishanth Menon, Aswath Govindraju
In-Reply-To: <20220125131113.727-1-a-govindraju@ti.com>

Add support for single instance of USB 3.0 controller in J721S2 SoC.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
---
 arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi | 42 ++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi b/arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi
index b04db1d3ab61..e651f0af1aaa 100644
--- a/arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi
@@ -26,6 +26,20 @@
 		};
 	};
 
+	scm_conf: scm-conf@104000 {
+		compatible = "ti,j721e-system-controller", "syscon", "simple-mfd";
+		reg = <0x00 0x00104000 0x00 0x18000>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00 0x00 0x00104000 0x18000>;
+
+		usb_serdes_mux: mux-controller@0 {
+			compatible = "mmio-mux";
+			#mux-control-cells = <1>;
+			mux-reg-masks = <0x0 0x8000000>; /* USB0 to SERDES0 lane 1/3 mux */
+		};
+	};
+
 	gic500: interrupt-controller@1800000 {
 		compatible = "arm,gic-v3";
 		#address-cells = <2>;
@@ -683,6 +697,34 @@
 		};
 	};
 
+	usbss0: cdns-usb@4104000 {
+		compatible = "ti,j721e-usb";
+		reg = <0x00 0x04104000 0x00 0x100>;
+		clocks = <&k3_clks 360 16>, <&k3_clks 360 15>;
+		clock-names = "ref", "lpm";
+		assigned-clocks = <&k3_clks 360 16>; /* USB2_REFCLK */
+		assigned-clock-parents = <&k3_clks 360 17>;
+		power-domains = <&k3_pds 360 TI_SCI_PD_EXCLUSIVE>;
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+		dma-coherent;
+
+		usb0: usb@6000000 {
+			compatible = "cdns,usb3";
+			reg = <0x00 0x06000000 0x00 0x10000>,
+			      <0x00 0x06010000 0x00 0x10000>,
+			      <0x00 0x06020000 0x00 0x10000>;
+			reg-names = "otg", "xhci", "dev";
+			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+			 interrupt-names = "host", "peripheral", "otg";
+			 maximum-speed = "super-speed";
+			 dr_mode = "otg";
+		};
+	};
+
 	main_mcan0: can@2701000 {
 		compatible = "bosch,m_can";
 		reg = <0x00 0x02701000 0x00 0x200>,
-- 
2.17.1


^ permalink raw reply related

* 回复: [EXT] Re: [PATCH v15 00/13] amphion video decoder/encoder driver
From: Ming Qian @ 2022-01-25 13:10 UTC (permalink / raw)
  To: Hans Verkuil, mchehab@kernel.org, shawnguo@kernel.org,
	robh+dt@kernel.org, s.hauer@pengutronix.de
  Cc: kernel@pengutronix.de, festevam@gmail.com, dl-linux-imx,
	Aisheng Dong, linux-media@vger.kernel.org,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
In-Reply-To: <2c3fcd05-35da-02e4-cd69-4a6e369d7005@xs4all.nl>

> Hi Ming,
> 
> Can you take a look at the kernel test robot warnings? I suspect you're
> missing a header (linux/vmalloc.h?) for vzalloc et al that the alpha
> architecture doesn't automatically include.
> 
> If it is just adding a single include in a single patch, then just post a 15.1 for
> that patch. If it is more complicated, then posting a v16 is easier.
> 
> Regards,
> 
>         Hans

Got it, I'll deal with it asap

> 
> On 25/01/2022 08:11, Ming Qian wrote:
> > Hi all,
> >
> > This patch series adds support for
> > the amphion video encoder and decoder
> > via the VPU block present in imx8q platforms.
> > Currently, support for IMX8QXP and IMX8QM is included.
> >
> > It features decoding for the following formats:
> > - H.264
> > - HEVC
> > - MPEG4
> > - MPEG2
> > - VC1
> > - VP8
> >
> > It features encoding for the following formats:
> > - H.264
> >
> > The driver creates a separate device node for the encoder and decoder.
> >
> > This driver is dependent on vpu firmwares.
> > The firmwares have been submitted to linux-firmware.
> > The firmware patch is since commit
> > b563148fd28623f6b6ce68bb06c3dd3bd138b058:
> > linux-firmware: Update firmware file for Intel Bluetooth 9462 (Fri Oct
> > 8 16:30:14 2021 +0530)
> >
> > and it's available in the git repository at:
> >
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith
> > ub.com%2Fmingqian-0%2Flinux-
> firmware.git&amp;data=04%7C01%7Cming.qian%
> >
> 40nxp.com%7C8f3d9dd4d58542650ac808d9dffb4ef4%7C686ea1d3bc2b4c6fa9
> 2cd99
> >
> c5c301635%7C0%7C0%7C637787092725815979%7CUnknown%7CTWFpbGZsb
> 3d8eyJWIjo
> >
> iMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C30
> 00&amp
> > ;sdata=csybemVdVslZ%2FJx%2BLSD4dPU8WZzXcKcs35fYlf7u0oU%3D&amp
> ;reserved
> > =0
> >
> > for you to fetch changes up to
> bb3eee4f99589d4910dee4c053a3a685546b5dbb:
> > amphion: add VPU firmwares for NXP i.MX8Q SoCs (Tue Oct 12 15:09:57
> > 2021 +0800)
> >
> > encoder is tested with gstreamer
> > decoder is tested with gstreamer, but the following patches are required:
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitl
> > ab.freedesktop.org%2Fgstreamer%2Fgstreamer%2F-
> %2Fmerge_requests%2F1379
> >
> &amp;data=04%7C01%7Cming.qian%40nxp.com%7C8f3d9dd4d58542650ac80
> 8d9dffb
> >
> 4ef4%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63778709272581
> 5979%7
> >
> CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJ
> BTiI6Ik1
> >
> haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=NsYaJTd%2F8iyxR43T5l8plOL4
> Fc0ZPnC
> > XctWhp2nVyyY%3D&amp;reserved=0
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitl
> > ab.freedesktop.org%2Fgstreamer%2Fgstreamer%2F-
> %2Fmerge_requests%2F1381
> >
> &amp;data=04%7C01%7Cming.qian%40nxp.com%7C8f3d9dd4d58542650ac80
> 8d9dffb
> >
> 4ef4%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63778709272581
> 5979%7
> >
> CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJ
> BTiI6Ik1
> >
> haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=EpF9to1WlTCtvwQRFLqmBOe
> d0v7UxgJqW
> > TZOjvyYydY%3D&amp;reserved=0
> >
> >
> > Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
> >
> >
> > Changelog:
> >
> > v15
> > - fix issues detected by "checkpatch.pl --strict"
> > - encoder add ctrl V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE
> >
> > v14
> > - fix some errors according to Hans's comments
> >
> > v13
> > - make a workaround that avoid firmware entering wfi wrongly
> >
> > v12
> > - support reset decoder when starting a new stream
> > - don't append an empty last buffer, set last_buffer_dequeued
> > - improve the resolution change flow
> > - return all buffers if start_streaming fail
> > - fill encoder capture buffer's filed to none
> > - fix a bug in calculating bytesperline
> >
> > v11
> > - fix dt_binding_check error after upgrade dtschema
> > - remove "default y"
> > - add media device
> >
> > v10
> > - refine vpu log, remove custom logging infrastructure
> > - support non contiguous planes format nv12m instead of nv12
> > - rename V4L2_PIX_FMT_NV12_8L128 to V4L2_PIX_FMT_NV12MT_8L128
> > - rename V4L2_PIX_FMT_NV12_10BE_8L128 to
> > V4L2_PIX_FMT_NV12MT_10BE_8L128
> > - merge two module into one
> > - fix kernel panic in rmmod
> >
> > v9
> > - drop V4L2_BUF_FLAG_CODECCONFIG
> > - drop V4L2_EVENT_CODEC_ERROR
> > - drop V4L2_EVENT_SKIP - use the v4l2_buffer.sequence counter
> > - fix some build warnings with W=1 reported by kernel test robot
> >
> > v8
> > - move driver from driver/media/platform/imx/vpu-8q to
> >   driver/media/platform/amphion
> > - rename driver name to amphion
> > - remove imx_vpu.h
> > - move the definition of V4L2_EVENT_CODEC_ERROR to videodev2.h
> > - move the definition of V4L2_EVENT_SKIP to videodev2.h
> >
> > v7
> > - fix build warnings with W=1 reported by kernel test robot
> >
> > v6:
> > - rename V4L2_PIX_FMT_NT8 to V4L2_PIX_FMT_NV12_8L128
> > - rename V4L2_PIX_FMT_NT10 to V4L2_PIX_FMT_NV12_10BE_8L128
> >
> > v5:
> > - move some definition from imx_vph.h to videodev2.h
> > - remove some unnecessary content
> > - add some documentation descriptions
> > - pass the lateset v4l2-compliance test
> >
> > v4:
> > - redefine the memory-region in devicetree bindings documentation
> > - use v4l2's mechanism to implement synchronize queuing ioctl
> > - remove the unnecessary mutex ioctl_sync
> > - don't notify source change event if the parameters are same as
> > previously established
> > - add flag V4L2_FMT_FLAG_DYN_RESOLUTION to decoder's capture format
> >
> > v3:
> > - don't make vpu device node a simple-bus
> > - trigger probing vpu core in the driver
> > - remove unnecessary vpu core index property
> >
> > v2:
> > - fix dt bindings build error
> > - split driver patch into several parts to avoid exceeding bytes limit
> >
> > Compliance
> > ==========
> > # v4l2-compliance -d /dev/video0
> > v4l2-compliance 1.21.0-4859, 64 bits, 64-bit time_t v4l2-compliance
> > SHA: 493af03f3c57 2021-10-08 17:23:11
> >
> > Compliance test for amphion-vpu device /dev/video0:
> >
> > Driver Info:
> >       Driver name      : amphion-vpu
> >       Card type        : amphion vpu decoder
> >       Bus info         : platform: amphion-vpu
> >       Driver version   : 5.15.0
> >       Capabilities     : 0x84204000
> >               Video Memory-to-Memory Multiplanar
> >               Streaming
> >               Extended Pix Format
> >               Device Capabilities
> >       Device Caps      : 0x04204000
> >               Video Memory-to-Memory Multiplanar
> >               Streaming
> >               Extended Pix Format
> >       Detected Stateful Decoder
> > Media Driver Info:
> >       Driver name      : amphion-vpu
> >       Model            : amphion-vpu
> >       Serial           :
> >       Bus info         : platform: amphion-vpu
> >       Media version    : 5.15.0
> >       Hardware revision: 0x00000000 (0)
> >       Driver version   : 5.15.0
> > Interface Info:
> >       ID               : 0x0300000c
> >       Type             : V4L Video
> > Entity Info:
> >       ID               : 0x00000001 (1)
> >       Name             : amphion-vpu-decoder-source
> >       Function         : V4L2 I/O
> >       Pad 0x01000002   : 0: Source
> >         Link 0x02000008: to remote pad 0x1000004 of entity
> > 'amphion-vpu-decoder-proc' (Video Decoder): Data, Enabled, Immutable
> >
> > Required ioctls:
> >       test MC information (see 'Media Driver Info' above): OK
> >       test VIDIOC_QUERYCAP: OK
> >       test invalid ioctls: OK
> >
> > Allow for multiple opens:
> >       test second /dev/video0 open: OK
> >       test VIDIOC_QUERYCAP: OK
> >       test VIDIOC_G/S_PRIORITY: OK
> >       test for unlimited opens: OK
> >
> > Debug ioctls:
> >       test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> >       test VIDIOC_LOG_STATUS: OK (Not Supported)
> >
> > Input ioctls:
> >       test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> >       test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> >       test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> >       test VIDIOC_ENUMAUDIO: OK (Not Supported)
> >       test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> >       test VIDIOC_G/S_AUDIO: OK (Not Supported)
> >       Inputs: 0 Audio Inputs: 0 Tuners: 0
> >
> > Output ioctls:
> >       test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> >       test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> >       test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> >       test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> >       test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> >       Outputs: 0 Audio Outputs: 0 Modulators: 0
> >
> > Input/Output configuration ioctls:
> >       test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> >       test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> >       test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> >       test VIDIOC_G/S_EDID: OK (Not Supported)
> >
> > Control ioctls:
> >       test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
> >       test VIDIOC_QUERYCTRL: OK
> >       test VIDIOC_G/S_CTRL: OK
> >       test VIDIOC_G/S/TRY_EXT_CTRLS: OK
> >       test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
> >       test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> >       Standard Controls: 3 Private Controls: 0
> >
> > Format ioctls:
> >       test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> >       test VIDIOC_G/S_PARM: OK (Not Supported)
> >       test VIDIOC_G_FBUF: OK (Not Supported)
> >       test VIDIOC_G_FMT: OK
> >       test VIDIOC_TRY_FMT: OK
> >       test VIDIOC_S_FMT: OK
> >       test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> >       test Cropping: OK (Not Supported)
> >       test Composing: OK
> >       test Scaling: OK (Not Supported)
> >
> > Codec ioctls:
> >       test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> >       test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> >       test VIDIOC_(TRY_)DECODER_CMD: OK
> >
> > Buffer ioctls:
> >       test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> >       test VIDIOC_EXPBUF: OK
> >       test Requests: OK (Not Supported)
> >
> > Total for amphion-vpu device /dev/video0: 46, Succeeded: 46, Failed:
> > 0, Warnings: 0
> >
> > # v4l2-compliance -d /dev/video1
> > v4l2-compliance 1.21.0-4859, 64 bits, 64-bit time_t v4l2-compliance
> > SHA: 493af03f3c57 2021-10-08 17:23:11
> >
> > Compliance test for amphion-vpu device /dev/video1:
> >
> > Driver Info:
> >       Driver name      : amphion-vpu
> >       Card type        : amphion vpu encoder
> >       Bus info         : platform: amphion-vpu
> >       Driver version   : 5.15.0
> >       Capabilities     : 0x84204000
> >               Video Memory-to-Memory Multiplanar
> >               Streaming
> >               Extended Pix Format
> >               Device Capabilities
> >       Device Caps      : 0x04204000
> >               Video Memory-to-Memory Multiplanar
> >               Streaming
> >               Extended Pix Format
> >       Detected Stateful Encoder
> > Media Driver Info:
> >       Driver name      : amphion-vpu
> >       Model            : amphion-vpu
> >       Serial           :
> >       Bus info         : platform: amphion-vpu
> >       Media version    : 5.15.0
> >       Hardware revision: 0x00000000 (0)
> >       Driver version   : 5.15.0
> > Interface Info:
> >       ID               : 0x0300001a
> >       Type             : V4L Video
> > Entity Info:
> >       ID               : 0x0000000f (15)
> >       Name             : amphion-vpu-encoder-source
> >       Function         : V4L2 I/O
> >       Pad 0x01000010   : 0: Source
> >         Link 0x02000016: to remote pad 0x1000012 of entity
> > 'amphion-vpu-encoder-proc' (Video Encoder): Data, Enabled, Immutable
> >
> > Required ioctls:
> >       test MC information (see 'Media Driver Info' above): OK
> >       test VIDIOC_QUERYCAP: OK
> >       test invalid ioctls: OK
> >
> > Allow for multiple opens:
> >       test second /dev/video1 open: OK
> >       test VIDIOC_QUERYCAP: OK
> >       test VIDIOC_G/S_PRIORITY: OK
> >       test for unlimited opens: OK
> >
> > Debug ioctls:
> >       test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> >       test VIDIOC_LOG_STATUS: OK (Not Supported)
> >
> > Input ioctls:
> >       test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> >       test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> >       test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> >       test VIDIOC_ENUMAUDIO: OK (Not Supported)
> >       test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> >       test VIDIOC_G/S_AUDIO: OK (Not Supported)
> >       Inputs: 0 Audio Inputs: 0 Tuners: 0
> >
> > Output ioctls:
> >       test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> >       test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> >       test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> >       test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> >       test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> >       Outputs: 0 Audio Outputs: 0 Modulators: 0
> >
> > Input/Output configuration ioctls:
> >       test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> >       test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> >       test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> >       test VIDIOC_G/S_EDID: OK (Not Supported)
> >
> > Control ioctls:
> >       test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
> >       test VIDIOC_QUERYCTRL: OK
> >       test VIDIOC_G/S_CTRL: OK
> >       test VIDIOC_G/S/TRY_EXT_CTRLS: OK
> >       test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
> >       test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> >       Standard Controls: 20 Private Controls: 0
> >
> > Format ioctls:
> >       test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> >       test VIDIOC_G/S_PARM: OK
> >       test VIDIOC_G_FBUF: OK (Not Supported)
> >       test VIDIOC_G_FMT: OK
> >       test VIDIOC_TRY_FMT: OK
> >       test VIDIOC_S_FMT: OK
> >       test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> >       test Cropping: OK
> >       test Composing: OK (Not Supported)
> >       test Scaling: OK (Not Supported)
> >
> > Codec ioctls:
> >       test VIDIOC_(TRY_)ENCODER_CMD: OK
> >       test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> >       test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> >
> > Buffer ioctls:
> >       test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> >       test VIDIOC_EXPBUF: OK
> >       test Requests: OK (Not Supported)
> >
> > Total for amphion-vpu device /dev/video1: 46, Succeeded: 46, Failed:
> > 0, Warnings: 0
> >
> > # v4l2-compliance -d /dev/media0
> > v4l2-compliance 1.21.0-4859, 64 bits, 64-bit time_t v4l2-compliance
> > SHA: 493af03f3c57 2021-10-08 17:23:11
> >
> > Compliance test for amphion-vpu device /dev/media0:
> >
> > Media Driver Info:
> >       Driver name      : amphion-vpu
> >       Model            : amphion-vpu
> >       Serial           :
> >       Bus info         : platform: amphion-vpu
> >       Media version    : 5.15.0
> >       Hardware revision: 0x00000000 (0)
> >       Driver version   : 5.15.0
> >
> > Required ioctls:
> >       test MEDIA_IOC_DEVICE_INFO: OK
> >       test invalid ioctls: OK
> >
> > Allow for multiple opens:
> >       test second /dev/media0 open: OK
> >       test MEDIA_IOC_DEVICE_INFO: OK
> >       test for unlimited opens: OK
> >
> > Media Controller ioctls:
> >       test MEDIA_IOC_G_TOPOLOGY: OK
> >       Entities: 6 Interfaces: 2 Pads: 8 Links: 8
> >       test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
> >       test MEDIA_IOC_SETUP_LINK: OK
> >
> > Total for amphion-vpu device /dev/media0: 8, Succeeded: 8, Failed: 0,
> > Warnings: 0
> >
> > Ming Qian (13):
> >   dt-bindings: media: amphion: add amphion video codec bindings
> >   media: add nv12m_8l128 and nv12m_10be_8l128 video format.
> >   media: amphion: add amphion vpu device driver
> >   media: amphion: add vpu core driver
> >   media: amphion: implement vpu core communication based on mailbox
> >   media: amphion: add vpu v4l2 m2m support
> >   media: amphion: add v4l2 m2m vpu encoder stateful driver
> >   media: amphion: add v4l2 m2m vpu decoder stateful driver
> >   media: amphion: implement windsor encoder rpc interface
> >   media: amphion: implement malone decoder rpc interface
> >   ARM64: dts: freescale: imx8q: add imx vpu codec entries
> >   firmware: imx: scu-pd: imx8q: add vpu mu resources
> >   MAINTAINERS: add AMPHION VPU CODEC V4L2 driver entry
> >
> >  .../bindings/media/amphion,vpu.yaml           |  180 ++
> >  .../media/v4l/pixfmt-yuv-planar.rst           |   28 +-
> >  MAINTAINERS                                   |    9 +
> >  .../arm64/boot/dts/freescale/imx8-ss-vpu.dtsi |   72 +
> >  arch/arm64/boot/dts/freescale/imx8qxp-mek.dts |   17 +
> >  arch/arm64/boot/dts/freescale/imx8qxp.dtsi    |   24 +
> >  arch/arm64/configs/defconfig                  |    1 +
> >  drivers/firmware/imx/scu-pd.c                 |    4 +
> >  drivers/media/platform/Kconfig                |   19 +
> >  drivers/media/platform/Makefile               |    2 +
> >  drivers/media/platform/amphion/Makefile       |   20 +
> >  drivers/media/platform/amphion/vdec.c         | 1694 +++++++++++++++++
> >  drivers/media/platform/amphion/venc.c         | 1364 +++++++++++++
> >  drivers/media/platform/amphion/vpu.h          |  356 ++++
> >  drivers/media/platform/amphion/vpu_cmds.c     |  436 +++++
> >  drivers/media/platform/amphion/vpu_cmds.h     |   25 +
> >  drivers/media/platform/amphion/vpu_codec.h    |   68 +
> >  drivers/media/platform/amphion/vpu_color.c    |  183 ++
> >  drivers/media/platform/amphion/vpu_core.c     |  870 +++++++++
> >  drivers/media/platform/amphion/vpu_core.h     |   15 +
> >  drivers/media/platform/amphion/vpu_dbg.c      |  495 +++++
> >  drivers/media/platform/amphion/vpu_defs.h     |  187 ++
> >  drivers/media/platform/amphion/vpu_drv.c      |  260 +++
> >  drivers/media/platform/amphion/vpu_helpers.c  |  413 ++++
> >  drivers/media/platform/amphion/vpu_helpers.h  |   74 +
> >  drivers/media/platform/amphion/vpu_imx8q.c    |  271 +++
> >  drivers/media/platform/amphion/vpu_imx8q.h    |  115 ++
> >  drivers/media/platform/amphion/vpu_malone.c   | 1625
> ++++++++++++++++
> >  drivers/media/platform/amphion/vpu_malone.h   |   44 +
> >  drivers/media/platform/amphion/vpu_mbox.c     |  118 ++
> >  drivers/media/platform/amphion/vpu_mbox.h     |   16 +
> >  drivers/media/platform/amphion/vpu_msgs.c     |  385 ++++
> >  drivers/media/platform/amphion/vpu_msgs.h     |   14 +
> >  drivers/media/platform/amphion/vpu_rpc.c      |  257 +++
> >  drivers/media/platform/amphion/vpu_rpc.h      |  456 +++++
> >  drivers/media/platform/amphion/vpu_v4l2.c     |  720 +++++++
> >  drivers/media/platform/amphion/vpu_v4l2.h     |   55 +
> >  drivers/media/platform/amphion/vpu_windsor.c  | 1169 ++++++++++++
> >  drivers/media/platform/amphion/vpu_windsor.h  |   37 +
> >  drivers/media/v4l2-core/v4l2-ioctl.c          |    2 +
> >  include/uapi/linux/videodev2.h                |    2 +
> >  41 files changed, 12099 insertions(+), 3 deletions(-)  create mode
> > 100644 Documentation/devicetree/bindings/media/amphion,vpu.yaml
> >  create mode 100644 arch/arm64/boot/dts/freescale/imx8-ss-vpu.dtsi
> >  create mode 100644 drivers/media/platform/amphion/Makefile
> >  create mode 100644 drivers/media/platform/amphion/vdec.c
> >  create mode 100644 drivers/media/platform/amphion/venc.c
> >  create mode 100644 drivers/media/platform/amphion/vpu.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_cmds.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_cmds.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_codec.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_color.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_core.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_core.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_dbg.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_defs.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_drv.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_helpers.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_helpers.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_imx8q.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_imx8q.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_malone.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_malone.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_mbox.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_mbox.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_msgs.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_msgs.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_rpc.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_rpc.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_v4l2.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_v4l2.h
> >  create mode 100644 drivers/media/platform/amphion/vpu_windsor.c
> >  create mode 100644 drivers/media/platform/amphion/vpu_windsor.h
> >
> >
> > base-commit: e783362eb54cd99b2cac8b3a9aeac942e6f6ac07


^ permalink raw reply

* [PATCH 2/2] iommu/ipmmu-vmsa: Add support for R-Car Gen4
From: Yoshihiro Shimoda @ 2022-01-25 12:56 UTC (permalink / raw)
  To: joro, will, robh+dt
  Cc: iommu, devicetree, linux-renesas-soc, Yoshihiro Shimoda
In-Reply-To: <20220125125602.4144793-1-yoshihiro.shimoda.uh@renesas.com>

Add support for R-Car Gen4 like r8a779f0 (R-Car S4-8). The IPMMU
hardware design of r8a779f0 is the same as r8a779a0. So, rename
"r8a779a0" to "rcar_gen4".

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 drivers/iommu/ipmmu-vmsa.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c
index ca752bdc710f..6c4314c2e9bf 100644
--- a/drivers/iommu/ipmmu-vmsa.c
+++ b/drivers/iommu/ipmmu-vmsa.c
@@ -719,6 +719,7 @@ static int ipmmu_init_platform_device(struct device *dev,
 
 static const struct soc_device_attribute soc_needs_opt_in[] = {
 	{ .family = "R-Car Gen3", },
+	{ .family = "R-Car Gen4", },
 	{ .family = "RZ/G2", },
 	{ /* sentinel */ }
 };
@@ -743,7 +744,7 @@ static bool ipmmu_device_is_allowed(struct device *dev)
 	unsigned int i;
 
 	/*
-	 * R-Car Gen3 and RZ/G2 use the allow list to opt-in devices.
+	 * R-Car Gen3, Gen4 and RZ/G2 use the allow list to opt-in devices.
 	 * For Other SoCs, this returns true anyway.
 	 */
 	if (!soc_device_match(soc_needs_opt_in))
@@ -926,7 +927,7 @@ static const struct ipmmu_features ipmmu_features_rcar_gen3 = {
 	.utlb_offset_base = 0,
 };
 
-static const struct ipmmu_features ipmmu_features_r8a779a0 = {
+static const struct ipmmu_features ipmmu_features_rcar_gen4 = {
 	.use_ns_alias_offset = false,
 	.has_cache_leaf_nodes = true,
 	.number_of_contexts = 16,
@@ -982,7 +983,10 @@ static const struct of_device_id ipmmu_of_ids[] = {
 		.data = &ipmmu_features_rcar_gen3,
 	}, {
 		.compatible = "renesas,ipmmu-r8a779a0",
-		.data = &ipmmu_features_r8a779a0,
+		.data = &ipmmu_features_rcar_gen4,
+	}, {
+		.compatible = "renesas,rcar-gen4-ipmmu",
+		.data = &ipmmu_features_rcar_gen4,
 	}, {
 		/* Terminator */
 	},
-- 
2.25.1


^ permalink raw reply related

* [PATCH 1/2] dt-bindings: iommu: renesas,ipmmu-vmsa: add r8a779f0 support
From: Yoshihiro Shimoda @ 2022-01-25 12:56 UTC (permalink / raw)
  To: joro, will, robh+dt
  Cc: iommu, devicetree, linux-renesas-soc, Yoshihiro Shimoda
In-Reply-To: <20220125125602.4144793-1-yoshihiro.shimoda.uh@renesas.com>

Document the compatible values for the IPMMU-VMSA blocks in
the Renesas R-Car S4-8 (R8A779F0) SoC and R-Car Gen4.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 .../devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml         | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml b/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml
index ce0c715205c6..5159a87f3fa7 100644
--- a/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml
+++ b/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml
@@ -44,6 +44,10 @@ properties:
               - renesas,ipmmu-r8a77990 # R-Car E3
               - renesas,ipmmu-r8a77995 # R-Car D3
               - renesas,ipmmu-r8a779a0 # R-Car V3U
+      - items:
+          - enum:
+              - renesas,ipmmu-r8a779f0 # R-Car S4-8
+          - const: renesas,rcar-gen4-ipmmu-vmsa  # R-Car Gen4
 
   reg:
     maxItems: 1
-- 
2.25.1


^ permalink raw reply related

* [PATCH 0/2] iommu/ipmmu-vmsa: Add support for R-Car Gen4
From: Yoshihiro Shimoda @ 2022-01-25 12:56 UTC (permalink / raw)
  To: joro, will, robh+dt
  Cc: iommu, devicetree, linux-renesas-soc, Yoshihiro Shimoda

This patch series is based on renesas-drivers-2022-01-11-v5.16 [1].
Note that we have to prepare the following registers' setting
in a bootloader (U-Boot) because the registers are protected.
Otherwise, data mismatch happened if dmatest with the ipmmu is running.

 => mw eed01500 0xc0000000; mw eed41500 0xc0000000

[1]
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/tag/?h=renesas-drivers-2022-01-11-v5.16


Yoshihiro Shimoda (2):
  dt-bindings: iommu: renesas,ipmmu-vmsa: add r8a779f0 support
  iommu/ipmmu-vmsa: Add support for R-Car Gen4

 .../devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml  |  4 ++++
 drivers/iommu/ipmmu-vmsa.c                             | 10 +++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

-- 
2.25.1


^ permalink raw reply

* Re: [PATCH v2 1/2] soc: mediatek: pwrap: add pwrap driver for MT8186 SoC
From: Johnson Wang @ 2022-01-25 12:51 UTC (permalink / raw)
  To: Matthias Brugger, robh+dt
  Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek,
	angelogioacchino.delregno, Project_Global_Chrome_Upstream_Group
In-Reply-To: <f5486d12-b048-c062-e571-cf39da7e4c1b@gmail.com>

Hi Matthias,

On Tue, 2022-01-18 at 14:17 +0100, Matthias Brugger wrote:
> 
> On 18/01/2022 10:25, Johnson Wang wrote:
> > Hi Matthias,
> > 
> > On Fri, 2022-01-14 at 16:46 +0100, Matthias Brugger wrote:
> > > 
> > > On 07/01/2022 11:46, Johnson Wang wrote:
> > > > MT8186 are highly integrated SoC and use PMIC_MT6366 for
> > > > power management. This patch adds pwrap master driver to
> > > > access PMIC_MT6366.
> > > > 
> > > 
> > > It seems this new arbiter is significantly different from the
> > > version
> > > 1. Please
> > > explain that in the commit message.
> > > 
> > > > Signed-off-by: Johnson Wang <johnson.wang@mediatek.com>
> > > > ---
> > > >    drivers/soc/mediatek/mtk-pmic-wrap.c | 72
> > > > ++++++++++++++++++++++++++++
> > > >    1 file changed, 72 insertions(+)
> > > > 
> > > > diff --git a/drivers/soc/mediatek/mtk-pmic-wrap.c
> > > > b/drivers/soc/mediatek/mtk-pmic-wrap.c
> > > > index 952bc554f443..78866ebf7f04 100644
> > > > --- a/drivers/soc/mediatek/mtk-pmic-wrap.c
> > > > +++ b/drivers/soc/mediatek/mtk-pmic-wrap.c
> > > > @@ -30,6 +30,7 @@
> > > >    #define PWRAP_GET_WACS_REQ(x)		(((x) >> 19) &
> > > > 0x00000001)
> > > >    #define PWRAP_STATE_SYNC_IDLE0		BIT(20)
> > > >    #define PWRAP_STATE_INIT_DONE0		BIT(21)
> > > > +#define PWRAP_STATE_INIT_DONE0_V2	BIT(22)
> > > 
> > > That's a strange name, does it come from the datasheet
> > > description?
> > 
> > Thanks for your review.
> > 
> > No, there is only PWRAP_STATE_INIT_DONE0 in MT8186 datasheet.
> > However, it's the 22nd bit in MT8186 and the 21st bit in other
> > SoCs.
> > So we changed its name to avoid redefinition of
> > PWRAP_STATE_INIT_DONE0.
> > 
> > Could you give us some suggestion on proper definition naming?
> > Do you think PWRAP_STATE_INIT_DONE0_MT8186 will be a better choice?
> > 
> 
> Is this a difference that only will show up on the PMIC-wrapper of
> MT8186 or 
> will other SoCs include the same IP? If not, then
> PWRAP_STATE_INIT_DONE0_MT8186 
> should be fine. Otherwise we would need a better name.
> 

In fact, we don't know whether following SoCs will include
the same IP in the future.

Can we just replace _V2 with _MT8186 this time or
please give us some suggestion on it. 

Thanks for your response.

> > > 
> > > >    #define PWRAP_STATE_INIT_DONE1		BIT(15)
> > > >    
> > > >    /* macro for WACS FSM */
> > > > @@ -77,6 +78,8 @@
> > > >    #define PWRAP_CAP_INT1_EN	BIT(3)
> > > >    #define PWRAP_CAP_WDT_SRC1	BIT(4)
> > > >    #define PWRAP_CAP_ARB		BIT(5)
> > > > +#define PWRAP_CAP_MONITOR_V2	BIT(6)
> > > 
> > > Not used capability, please delete.
> > > 
> > > 
> > > Regards,
> > > Matthias
> > 
> > PWRAP_CAP_MONITOR_V2 is not used right now.
> > We can remove it in next version.
> > But this capability will be added when we need it.
> > 
> 
> That's OK, we should add capability definitions once they are added
> to the 
> driver, not before that.
> 
> Thanks,
> Matthias


^ permalink raw reply

* Re: [PATCH v15 00/13] amphion video decoder/encoder driver
From: Hans Verkuil @ 2022-01-25 12:25 UTC (permalink / raw)
  To: Ming Qian, mchehab, shawnguo, robh+dt, s.hauer
  Cc: kernel, festevam, linux-imx, aisheng.dong, linux-media,
	linux-kernel, devicetree, linux-arm-kernel
In-Reply-To: <2c3fcd05-35da-02e4-cd69-4a6e369d7005@xs4all.nl>

On 25/01/2022 13:07, Hans Verkuil wrote:
> Hi Ming,
> 
> Can you take a look at the kernel test robot warnings? I suspect you're missing
> a header (linux/vmalloc.h?) for vzalloc et al that the alpha architecture doesn't
> automatically include.
> 
> If it is just adding a single include in a single patch, then just post a 15.1 for
> that patch. If it is more complicated, then posting a v16 is easier.

Follow up: checkpatch.pl --strict is now OK, and so are sparse and smatch. So it's
just this and an Ack for the firmware patch that needs to be resolved.

Regards,

	Hans

> 
> Regards,
> 
> 	Hans
> 
> On 25/01/2022 08:11, Ming Qian wrote:
>> Hi all,
>>
>> This patch series adds support for
>> the amphion video encoder and decoder
>> via the VPU block present in imx8q platforms.
>> Currently, support for IMX8QXP and IMX8QM is included.
>>
>> It features decoding for the following formats:
>> - H.264
>> - HEVC
>> - MPEG4
>> - MPEG2
>> - VC1
>> - VP8
>>
>> It features encoding for the following formats:
>> - H.264
>>
>> The driver creates a separate device node for the encoder and decoder.
>>
>> This driver is dependent on vpu firmwares.
>> The firmwares have been submitted to linux-firmware.
>> The firmware patch is since commit
>> b563148fd28623f6b6ce68bb06c3dd3bd138b058:
>> linux-firmware: Update firmware file for Intel Bluetooth 9462
>> (Fri Oct 8 16:30:14 2021 +0530)
>>
>> and it's available in the git repository at:
>>     https://github.com/mingqian-0/linux-firmware.git
>>
>> for you to fetch changes up to bb3eee4f99589d4910dee4c053a3a685546b5dbb:
>> amphion: add VPU firmwares for NXP i.MX8Q SoCs
>> (Tue Oct 12 15:09:57 2021 +0800)
>>
>> encoder is tested with gstreamer
>> decoder is tested with gstreamer, but the following patches are required:
>> https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1379
>> https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1381
>>
>>
>> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
>>
>>
>> Changelog:
>>
>> v15
>> - fix issues detected by "checkpatch.pl --strict"
>> - encoder add ctrl V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE
>>
>> v14
>> - fix some errors according to Hans's comments
>>
>> v13
>> - make a workaround that avoid firmware entering wfi wrongly
>>
>> v12
>> - support reset decoder when starting a new stream
>> - don't append an empty last buffer, set last_buffer_dequeued
>> - improve the resolution change flow
>> - return all buffers if start_streaming fail
>> - fill encoder capture buffer's filed to none
>> - fix a bug in calculating bytesperline
>>
>> v11
>> - fix dt_binding_check error after upgrade dtschema
>> - remove "default y"
>> - add media device
>>
>> v10
>> - refine vpu log, remove custom logging infrastructure
>> - support non contiguous planes format nv12m instead of nv12
>> - rename V4L2_PIX_FMT_NV12_8L128 to V4L2_PIX_FMT_NV12MT_8L128
>> - rename V4L2_PIX_FMT_NV12_10BE_8L128 to V4L2_PIX_FMT_NV12MT_10BE_8L128
>> - merge two module into one
>> - fix kernel panic in rmmod
>>
>> v9
>> - drop V4L2_BUF_FLAG_CODECCONFIG
>> - drop V4L2_EVENT_CODEC_ERROR
>> - drop V4L2_EVENT_SKIP - use the v4l2_buffer.sequence counter
>> - fix some build warnings with W=1 reported by kernel test robot
>>
>> v8
>> - move driver from driver/media/platform/imx/vpu-8q to
>>   driver/media/platform/amphion
>> - rename driver name to amphion
>> - remove imx_vpu.h
>> - move the definition of V4L2_EVENT_CODEC_ERROR to videodev2.h
>> - move the definition of V4L2_EVENT_SKIP to videodev2.h
>>
>> v7
>> - fix build warnings with W=1 reported by kernel test robot
>>
>> v6:
>> - rename V4L2_PIX_FMT_NT8 to V4L2_PIX_FMT_NV12_8L128
>> - rename V4L2_PIX_FMT_NT10 to V4L2_PIX_FMT_NV12_10BE_8L128
>>
>> v5:
>> - move some definition from imx_vph.h to videodev2.h
>> - remove some unnecessary content
>> - add some documentation descriptions
>> - pass the lateset v4l2-compliance test
>>
>> v4:
>> - redefine the memory-region in devicetree bindings documentation
>> - use v4l2's mechanism to implement synchronize queuing ioctl
>> - remove the unnecessary mutex ioctl_sync
>> - don't notify source change event if the parameters are same as previously established
>> - add flag V4L2_FMT_FLAG_DYN_RESOLUTION to decoder's capture format
>>
>> v3:
>> - don't make vpu device node a simple-bus
>> - trigger probing vpu core in the driver
>> - remove unnecessary vpu core index property
>>
>> v2:
>> - fix dt bindings build error
>> - split driver patch into several parts to avoid exceeding bytes limit
>>
>> Compliance
>> ==========
>> # v4l2-compliance -d /dev/video0
>> v4l2-compliance 1.21.0-4859, 64 bits, 64-bit time_t
>> v4l2-compliance SHA: 493af03f3c57 2021-10-08 17:23:11
>>
>> Compliance test for amphion-vpu device /dev/video0:
>>
>> Driver Info:
>> 	Driver name      : amphion-vpu
>> 	Card type        : amphion vpu decoder
>> 	Bus info         : platform: amphion-vpu
>> 	Driver version   : 5.15.0
>> 	Capabilities     : 0x84204000
>> 		Video Memory-to-Memory Multiplanar
>> 		Streaming
>> 		Extended Pix Format
>> 		Device Capabilities
>> 	Device Caps      : 0x04204000
>> 		Video Memory-to-Memory Multiplanar
>> 		Streaming
>> 		Extended Pix Format
>> 	Detected Stateful Decoder
>> Media Driver Info:
>> 	Driver name      : amphion-vpu
>> 	Model            : amphion-vpu
>> 	Serial           :
>> 	Bus info         : platform: amphion-vpu
>> 	Media version    : 5.15.0
>> 	Hardware revision: 0x00000000 (0)
>> 	Driver version   : 5.15.0
>> Interface Info:
>> 	ID               : 0x0300000c
>> 	Type             : V4L Video
>> Entity Info:
>> 	ID               : 0x00000001 (1)
>> 	Name             : amphion-vpu-decoder-source
>> 	Function         : V4L2 I/O
>> 	Pad 0x01000002   : 0: Source
>> 	  Link 0x02000008: to remote pad 0x1000004 of entity 'amphion-vpu-decoder-proc' (Video Decoder): Data, Enabled, Immutable
>>
>> Required ioctls:
>> 	test MC information (see 'Media Driver Info' above): OK
>> 	test VIDIOC_QUERYCAP: OK
>> 	test invalid ioctls: OK
>>
>> Allow for multiple opens:
>> 	test second /dev/video0 open: OK
>> 	test VIDIOC_QUERYCAP: OK
>> 	test VIDIOC_G/S_PRIORITY: OK
>> 	test for unlimited opens: OK
>>
>> Debug ioctls:
>> 	test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>> 	test VIDIOC_LOG_STATUS: OK (Not Supported)
>>
>> Input ioctls:
>> 	test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>> 	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>> 	test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>> 	test VIDIOC_ENUMAUDIO: OK (Not Supported)
>> 	test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>> 	test VIDIOC_G/S_AUDIO: OK (Not Supported)
>> 	Inputs: 0 Audio Inputs: 0 Tuners: 0
>>
>> Output ioctls:
>> 	test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>> 	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>> 	test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>> 	test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>> 	test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>> 	Outputs: 0 Audio Outputs: 0 Modulators: 0
>>
>> Input/Output configuration ioctls:
>> 	test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>> 	test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>> 	test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>> 	test VIDIOC_G/S_EDID: OK (Not Supported)
>>
>> Control ioctls:
>> 	test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
>> 	test VIDIOC_QUERYCTRL: OK
>> 	test VIDIOC_G/S_CTRL: OK
>> 	test VIDIOC_G/S/TRY_EXT_CTRLS: OK
>> 	test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
>> 	test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>> 	Standard Controls: 3 Private Controls: 0
>>
>> Format ioctls:
>> 	test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>> 	test VIDIOC_G/S_PARM: OK (Not Supported)
>> 	test VIDIOC_G_FBUF: OK (Not Supported)
>> 	test VIDIOC_G_FMT: OK
>> 	test VIDIOC_TRY_FMT: OK
>> 	test VIDIOC_S_FMT: OK
>> 	test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>> 	test Cropping: OK (Not Supported)
>> 	test Composing: OK
>> 	test Scaling: OK (Not Supported)
>>
>> Codec ioctls:
>> 	test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>> 	test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>> 	test VIDIOC_(TRY_)DECODER_CMD: OK
>>
>> Buffer ioctls:
>> 	test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>> 	test VIDIOC_EXPBUF: OK
>> 	test Requests: OK (Not Supported)
>>
>> Total for amphion-vpu device /dev/video0: 46, Succeeded: 46, Failed: 0, Warnings: 0
>>
>> # v4l2-compliance -d /dev/video1
>> v4l2-compliance 1.21.0-4859, 64 bits, 64-bit time_t
>> v4l2-compliance SHA: 493af03f3c57 2021-10-08 17:23:11
>>
>> Compliance test for amphion-vpu device /dev/video1:
>>
>> Driver Info:
>> 	Driver name      : amphion-vpu
>> 	Card type        : amphion vpu encoder
>> 	Bus info         : platform: amphion-vpu
>> 	Driver version   : 5.15.0
>> 	Capabilities     : 0x84204000
>> 		Video Memory-to-Memory Multiplanar
>> 		Streaming
>> 		Extended Pix Format
>> 		Device Capabilities
>> 	Device Caps      : 0x04204000
>> 		Video Memory-to-Memory Multiplanar
>> 		Streaming
>> 		Extended Pix Format
>> 	Detected Stateful Encoder
>> Media Driver Info:
>> 	Driver name      : amphion-vpu
>> 	Model            : amphion-vpu
>> 	Serial           :
>> 	Bus info         : platform: amphion-vpu
>> 	Media version    : 5.15.0
>> 	Hardware revision: 0x00000000 (0)
>> 	Driver version   : 5.15.0
>> Interface Info:
>> 	ID               : 0x0300001a
>> 	Type             : V4L Video
>> Entity Info:
>> 	ID               : 0x0000000f (15)
>> 	Name             : amphion-vpu-encoder-source
>> 	Function         : V4L2 I/O
>> 	Pad 0x01000010   : 0: Source
>> 	  Link 0x02000016: to remote pad 0x1000012 of entity 'amphion-vpu-encoder-proc' (Video Encoder): Data, Enabled, Immutable
>>
>> Required ioctls:
>> 	test MC information (see 'Media Driver Info' above): OK
>> 	test VIDIOC_QUERYCAP: OK
>> 	test invalid ioctls: OK
>>
>> Allow for multiple opens:
>> 	test second /dev/video1 open: OK
>> 	test VIDIOC_QUERYCAP: OK
>> 	test VIDIOC_G/S_PRIORITY: OK
>> 	test for unlimited opens: OK
>>
>> Debug ioctls:
>> 	test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>> 	test VIDIOC_LOG_STATUS: OK (Not Supported)
>>
>> Input ioctls:
>> 	test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>> 	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>> 	test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>> 	test VIDIOC_ENUMAUDIO: OK (Not Supported)
>> 	test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>> 	test VIDIOC_G/S_AUDIO: OK (Not Supported)
>> 	Inputs: 0 Audio Inputs: 0 Tuners: 0
>>
>> Output ioctls:
>> 	test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>> 	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>> 	test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>> 	test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>> 	test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>> 	Outputs: 0 Audio Outputs: 0 Modulators: 0
>>
>> Input/Output configuration ioctls:
>> 	test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>> 	test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>> 	test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>> 	test VIDIOC_G/S_EDID: OK (Not Supported)
>>
>> Control ioctls:
>> 	test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
>> 	test VIDIOC_QUERYCTRL: OK
>> 	test VIDIOC_G/S_CTRL: OK
>> 	test VIDIOC_G/S/TRY_EXT_CTRLS: OK
>> 	test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
>> 	test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>> 	Standard Controls: 20 Private Controls: 0
>>
>> Format ioctls:
>> 	test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>> 	test VIDIOC_G/S_PARM: OK
>> 	test VIDIOC_G_FBUF: OK (Not Supported)
>> 	test VIDIOC_G_FMT: OK
>> 	test VIDIOC_TRY_FMT: OK
>> 	test VIDIOC_S_FMT: OK
>> 	test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>> 	test Cropping: OK
>> 	test Composing: OK (Not Supported)
>> 	test Scaling: OK (Not Supported)
>>
>> Codec ioctls:
>> 	test VIDIOC_(TRY_)ENCODER_CMD: OK
>> 	test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>> 	test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>
>> Buffer ioctls:
>> 	test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>> 	test VIDIOC_EXPBUF: OK
>> 	test Requests: OK (Not Supported)
>>
>> Total for amphion-vpu device /dev/video1: 46, Succeeded: 46, Failed: 0, Warnings: 0
>>
>> # v4l2-compliance -d /dev/media0
>> v4l2-compliance 1.21.0-4859, 64 bits, 64-bit time_t
>> v4l2-compliance SHA: 493af03f3c57 2021-10-08 17:23:11
>>
>> Compliance test for amphion-vpu device /dev/media0:
>>
>> Media Driver Info:
>> 	Driver name      : amphion-vpu
>> 	Model            : amphion-vpu
>> 	Serial           :
>> 	Bus info         : platform: amphion-vpu
>> 	Media version    : 5.15.0
>> 	Hardware revision: 0x00000000 (0)
>> 	Driver version   : 5.15.0
>>
>> Required ioctls:
>> 	test MEDIA_IOC_DEVICE_INFO: OK
>> 	test invalid ioctls: OK
>>
>> Allow for multiple opens:
>> 	test second /dev/media0 open: OK
>> 	test MEDIA_IOC_DEVICE_INFO: OK
>> 	test for unlimited opens: OK
>>
>> Media Controller ioctls:
>> 	test MEDIA_IOC_G_TOPOLOGY: OK
>> 	Entities: 6 Interfaces: 2 Pads: 8 Links: 8
>> 	test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
>> 	test MEDIA_IOC_SETUP_LINK: OK
>>
>> Total for amphion-vpu device /dev/media0: 8, Succeeded: 8, Failed: 0, Warnings: 0
>>
>> Ming Qian (13):
>>   dt-bindings: media: amphion: add amphion video codec bindings
>>   media: add nv12m_8l128 and nv12m_10be_8l128 video format.
>>   media: amphion: add amphion vpu device driver
>>   media: amphion: add vpu core driver
>>   media: amphion: implement vpu core communication based on mailbox
>>   media: amphion: add vpu v4l2 m2m support
>>   media: amphion: add v4l2 m2m vpu encoder stateful driver
>>   media: amphion: add v4l2 m2m vpu decoder stateful driver
>>   media: amphion: implement windsor encoder rpc interface
>>   media: amphion: implement malone decoder rpc interface
>>   ARM64: dts: freescale: imx8q: add imx vpu codec entries
>>   firmware: imx: scu-pd: imx8q: add vpu mu resources
>>   MAINTAINERS: add AMPHION VPU CODEC V4L2 driver entry
>>
>>  .../bindings/media/amphion,vpu.yaml           |  180 ++
>>  .../media/v4l/pixfmt-yuv-planar.rst           |   28 +-
>>  MAINTAINERS                                   |    9 +
>>  .../arm64/boot/dts/freescale/imx8-ss-vpu.dtsi |   72 +
>>  arch/arm64/boot/dts/freescale/imx8qxp-mek.dts |   17 +
>>  arch/arm64/boot/dts/freescale/imx8qxp.dtsi    |   24 +
>>  arch/arm64/configs/defconfig                  |    1 +
>>  drivers/firmware/imx/scu-pd.c                 |    4 +
>>  drivers/media/platform/Kconfig                |   19 +
>>  drivers/media/platform/Makefile               |    2 +
>>  drivers/media/platform/amphion/Makefile       |   20 +
>>  drivers/media/platform/amphion/vdec.c         | 1694 +++++++++++++++++
>>  drivers/media/platform/amphion/venc.c         | 1364 +++++++++++++
>>  drivers/media/platform/amphion/vpu.h          |  356 ++++
>>  drivers/media/platform/amphion/vpu_cmds.c     |  436 +++++
>>  drivers/media/platform/amphion/vpu_cmds.h     |   25 +
>>  drivers/media/platform/amphion/vpu_codec.h    |   68 +
>>  drivers/media/platform/amphion/vpu_color.c    |  183 ++
>>  drivers/media/platform/amphion/vpu_core.c     |  870 +++++++++
>>  drivers/media/platform/amphion/vpu_core.h     |   15 +
>>  drivers/media/platform/amphion/vpu_dbg.c      |  495 +++++
>>  drivers/media/platform/amphion/vpu_defs.h     |  187 ++
>>  drivers/media/platform/amphion/vpu_drv.c      |  260 +++
>>  drivers/media/platform/amphion/vpu_helpers.c  |  413 ++++
>>  drivers/media/platform/amphion/vpu_helpers.h  |   74 +
>>  drivers/media/platform/amphion/vpu_imx8q.c    |  271 +++
>>  drivers/media/platform/amphion/vpu_imx8q.h    |  115 ++
>>  drivers/media/platform/amphion/vpu_malone.c   | 1625 ++++++++++++++++
>>  drivers/media/platform/amphion/vpu_malone.h   |   44 +
>>  drivers/media/platform/amphion/vpu_mbox.c     |  118 ++
>>  drivers/media/platform/amphion/vpu_mbox.h     |   16 +
>>  drivers/media/platform/amphion/vpu_msgs.c     |  385 ++++
>>  drivers/media/platform/amphion/vpu_msgs.h     |   14 +
>>  drivers/media/platform/amphion/vpu_rpc.c      |  257 +++
>>  drivers/media/platform/amphion/vpu_rpc.h      |  456 +++++
>>  drivers/media/platform/amphion/vpu_v4l2.c     |  720 +++++++
>>  drivers/media/platform/amphion/vpu_v4l2.h     |   55 +
>>  drivers/media/platform/amphion/vpu_windsor.c  | 1169 ++++++++++++
>>  drivers/media/platform/amphion/vpu_windsor.h  |   37 +
>>  drivers/media/v4l2-core/v4l2-ioctl.c          |    2 +
>>  include/uapi/linux/videodev2.h                |    2 +
>>  41 files changed, 12099 insertions(+), 3 deletions(-)
>>  create mode 100644 Documentation/devicetree/bindings/media/amphion,vpu.yaml
>>  create mode 100644 arch/arm64/boot/dts/freescale/imx8-ss-vpu.dtsi
>>  create mode 100644 drivers/media/platform/amphion/Makefile
>>  create mode 100644 drivers/media/platform/amphion/vdec.c
>>  create mode 100644 drivers/media/platform/amphion/venc.c
>>  create mode 100644 drivers/media/platform/amphion/vpu.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_cmds.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_cmds.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_codec.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_color.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_core.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_core.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_dbg.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_defs.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_drv.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_helpers.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_helpers.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_imx8q.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_imx8q.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_malone.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_malone.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_mbox.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_mbox.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_msgs.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_msgs.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_rpc.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_rpc.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_v4l2.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_v4l2.h
>>  create mode 100644 drivers/media/platform/amphion/vpu_windsor.c
>>  create mode 100644 drivers/media/platform/amphion/vpu_windsor.h
>>
>>
>> base-commit: e783362eb54cd99b2cac8b3a9aeac942e6f6ac07
> 


^ permalink raw reply

* Re: [PATCH v15 12/13] firmware: imx: scu-pd: imx8q: add vpu mu resources
From: Hans Verkuil @ 2022-01-25 12:24 UTC (permalink / raw)
  To: shawnguo
  Cc: kernel, festevam, linux-imx, aisheng.dong, linux-media,
	linux-kernel, devicetree, linux-arm-kernel, Ming Qian, s.hauer
In-Reply-To: <8717d91000002047c7d0925f5eae66fc7f795e27.1643077283.git.ming.qian@nxp.com>

Shawn, can you Ack this? I think it makes sense if I take this one through the
media subsystem.

Alternatively, if you prefer to take this patch yourself, then let me know.

Regards,

	Hans

On 25/01/2022 08:11, Ming Qian wrote:
> the vpu core depends on the mu resources.
> if they're missed, the vpu can't work.
> 
> Signed-off-by: Ming Qian <ming.qian@nxp.com>
> Signed-off-by: Shijie Qin <shijie.qin@nxp.com>
> Signed-off-by: Zhou Peng <eagle.zhou@nxp.com>
> ---
>  drivers/firmware/imx/scu-pd.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/firmware/imx/scu-pd.c b/drivers/firmware/imx/scu-pd.c
> index ff6569c4a53b..af3d057e6421 100644
> --- a/drivers/firmware/imx/scu-pd.c
> +++ b/drivers/firmware/imx/scu-pd.c
> @@ -155,6 +155,10 @@ static const struct imx_sc_pd_range imx8qxp_scu_pd_ranges[] = {
>  	{ "vpu-pid", IMX_SC_R_VPU_PID0, 8, true, 0 },
>  	{ "vpu-dec0", IMX_SC_R_VPU_DEC_0, 1, false, 0 },
>  	{ "vpu-enc0", IMX_SC_R_VPU_ENC_0, 1, false, 0 },
> +	{ "vpu-enc1", IMX_SC_R_VPU_ENC_1, 1, false, 0 },
> +	{ "vpu-mu0", IMX_SC_R_VPU_MU_0, 1, false, 0 },
> +	{ "vpu-mu1", IMX_SC_R_VPU_MU_1, 1, false, 0 },
> +	{ "vpu-mu2", IMX_SC_R_VPU_MU_2, 1, false, 0 },
>  
>  	/* GPU SS */
>  	{ "gpu0-pid", IMX_SC_R_GPU_0_PID0, 4, true, 0 },


^ permalink raw reply

* Re: [PATCH v15 00/13] amphion video decoder/encoder driver
From: Hans Verkuil @ 2022-01-25 12:07 UTC (permalink / raw)
  To: Ming Qian, mchehab, shawnguo, robh+dt, s.hauer
  Cc: kernel, festevam, linux-imx, aisheng.dong, linux-media,
	linux-kernel, devicetree, linux-arm-kernel
In-Reply-To: <cover.1643077283.git.ming.qian@nxp.com>

Hi Ming,

Can you take a look at the kernel test robot warnings? I suspect you're missing
a header (linux/vmalloc.h?) for vzalloc et al that the alpha architecture doesn't
automatically include.

If it is just adding a single include in a single patch, then just post a 15.1 for
that patch. If it is more complicated, then posting a v16 is easier.

Regards,

	Hans

On 25/01/2022 08:11, Ming Qian wrote:
> Hi all,
> 
> This patch series adds support for
> the amphion video encoder and decoder
> via the VPU block present in imx8q platforms.
> Currently, support for IMX8QXP and IMX8QM is included.
> 
> It features decoding for the following formats:
> - H.264
> - HEVC
> - MPEG4
> - MPEG2
> - VC1
> - VP8
> 
> It features encoding for the following formats:
> - H.264
> 
> The driver creates a separate device node for the encoder and decoder.
> 
> This driver is dependent on vpu firmwares.
> The firmwares have been submitted to linux-firmware.
> The firmware patch is since commit
> b563148fd28623f6b6ce68bb06c3dd3bd138b058:
> linux-firmware: Update firmware file for Intel Bluetooth 9462
> (Fri Oct 8 16:30:14 2021 +0530)
> 
> and it's available in the git repository at:
>     https://github.com/mingqian-0/linux-firmware.git
> 
> for you to fetch changes up to bb3eee4f99589d4910dee4c053a3a685546b5dbb:
> amphion: add VPU firmwares for NXP i.MX8Q SoCs
> (Tue Oct 12 15:09:57 2021 +0800)
> 
> encoder is tested with gstreamer
> decoder is tested with gstreamer, but the following patches are required:
> https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1379
> https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1381
> 
> 
> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
> 
> 
> Changelog:
> 
> v15
> - fix issues detected by "checkpatch.pl --strict"
> - encoder add ctrl V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE
> 
> v14
> - fix some errors according to Hans's comments
> 
> v13
> - make a workaround that avoid firmware entering wfi wrongly
> 
> v12
> - support reset decoder when starting a new stream
> - don't append an empty last buffer, set last_buffer_dequeued
> - improve the resolution change flow
> - return all buffers if start_streaming fail
> - fill encoder capture buffer's filed to none
> - fix a bug in calculating bytesperline
> 
> v11
> - fix dt_binding_check error after upgrade dtschema
> - remove "default y"
> - add media device
> 
> v10
> - refine vpu log, remove custom logging infrastructure
> - support non contiguous planes format nv12m instead of nv12
> - rename V4L2_PIX_FMT_NV12_8L128 to V4L2_PIX_FMT_NV12MT_8L128
> - rename V4L2_PIX_FMT_NV12_10BE_8L128 to V4L2_PIX_FMT_NV12MT_10BE_8L128
> - merge two module into one
> - fix kernel panic in rmmod
> 
> v9
> - drop V4L2_BUF_FLAG_CODECCONFIG
> - drop V4L2_EVENT_CODEC_ERROR
> - drop V4L2_EVENT_SKIP - use the v4l2_buffer.sequence counter
> - fix some build warnings with W=1 reported by kernel test robot
> 
> v8
> - move driver from driver/media/platform/imx/vpu-8q to
>   driver/media/platform/amphion
> - rename driver name to amphion
> - remove imx_vpu.h
> - move the definition of V4L2_EVENT_CODEC_ERROR to videodev2.h
> - move the definition of V4L2_EVENT_SKIP to videodev2.h
> 
> v7
> - fix build warnings with W=1 reported by kernel test robot
> 
> v6:
> - rename V4L2_PIX_FMT_NT8 to V4L2_PIX_FMT_NV12_8L128
> - rename V4L2_PIX_FMT_NT10 to V4L2_PIX_FMT_NV12_10BE_8L128
> 
> v5:
> - move some definition from imx_vph.h to videodev2.h
> - remove some unnecessary content
> - add some documentation descriptions
> - pass the lateset v4l2-compliance test
> 
> v4:
> - redefine the memory-region in devicetree bindings documentation
> - use v4l2's mechanism to implement synchronize queuing ioctl
> - remove the unnecessary mutex ioctl_sync
> - don't notify source change event if the parameters are same as previously established
> - add flag V4L2_FMT_FLAG_DYN_RESOLUTION to decoder's capture format
> 
> v3:
> - don't make vpu device node a simple-bus
> - trigger probing vpu core in the driver
> - remove unnecessary vpu core index property
> 
> v2:
> - fix dt bindings build error
> - split driver patch into several parts to avoid exceeding bytes limit
> 
> Compliance
> ==========
> # v4l2-compliance -d /dev/video0
> v4l2-compliance 1.21.0-4859, 64 bits, 64-bit time_t
> v4l2-compliance SHA: 493af03f3c57 2021-10-08 17:23:11
> 
> Compliance test for amphion-vpu device /dev/video0:
> 
> Driver Info:
> 	Driver name      : amphion-vpu
> 	Card type        : amphion vpu decoder
> 	Bus info         : platform: amphion-vpu
> 	Driver version   : 5.15.0
> 	Capabilities     : 0x84204000
> 		Video Memory-to-Memory Multiplanar
> 		Streaming
> 		Extended Pix Format
> 		Device Capabilities
> 	Device Caps      : 0x04204000
> 		Video Memory-to-Memory Multiplanar
> 		Streaming
> 		Extended Pix Format
> 	Detected Stateful Decoder
> Media Driver Info:
> 	Driver name      : amphion-vpu
> 	Model            : amphion-vpu
> 	Serial           :
> 	Bus info         : platform: amphion-vpu
> 	Media version    : 5.15.0
> 	Hardware revision: 0x00000000 (0)
> 	Driver version   : 5.15.0
> Interface Info:
> 	ID               : 0x0300000c
> 	Type             : V4L Video
> Entity Info:
> 	ID               : 0x00000001 (1)
> 	Name             : amphion-vpu-decoder-source
> 	Function         : V4L2 I/O
> 	Pad 0x01000002   : 0: Source
> 	  Link 0x02000008: to remote pad 0x1000004 of entity 'amphion-vpu-decoder-proc' (Video Decoder): Data, Enabled, Immutable
> 
> Required ioctls:
> 	test MC information (see 'Media Driver Info' above): OK
> 	test VIDIOC_QUERYCAP: OK
> 	test invalid ioctls: OK
> 
> Allow for multiple opens:
> 	test second /dev/video0 open: OK
> 	test VIDIOC_QUERYCAP: OK
> 	test VIDIOC_G/S_PRIORITY: OK
> 	test for unlimited opens: OK
> 
> Debug ioctls:
> 	test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> 	test VIDIOC_LOG_STATUS: OK (Not Supported)
> 
> Input ioctls:
> 	test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> 	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> 	test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> 	test VIDIOC_ENUMAUDIO: OK (Not Supported)
> 	test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> 	test VIDIOC_G/S_AUDIO: OK (Not Supported)
> 	Inputs: 0 Audio Inputs: 0 Tuners: 0
> 
> Output ioctls:
> 	test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> 	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> 	test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> 	test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> 	test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> 	Outputs: 0 Audio Outputs: 0 Modulators: 0
> 
> Input/Output configuration ioctls:
> 	test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> 	test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> 	test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> 	test VIDIOC_G/S_EDID: OK (Not Supported)
> 
> Control ioctls:
> 	test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
> 	test VIDIOC_QUERYCTRL: OK
> 	test VIDIOC_G/S_CTRL: OK
> 	test VIDIOC_G/S/TRY_EXT_CTRLS: OK
> 	test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
> 	test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> 	Standard Controls: 3 Private Controls: 0
> 
> Format ioctls:
> 	test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> 	test VIDIOC_G/S_PARM: OK (Not Supported)
> 	test VIDIOC_G_FBUF: OK (Not Supported)
> 	test VIDIOC_G_FMT: OK
> 	test VIDIOC_TRY_FMT: OK
> 	test VIDIOC_S_FMT: OK
> 	test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> 	test Cropping: OK (Not Supported)
> 	test Composing: OK
> 	test Scaling: OK (Not Supported)
> 
> Codec ioctls:
> 	test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> 	test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> 	test VIDIOC_(TRY_)DECODER_CMD: OK
> 
> Buffer ioctls:
> 	test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> 	test VIDIOC_EXPBUF: OK
> 	test Requests: OK (Not Supported)
> 
> Total for amphion-vpu device /dev/video0: 46, Succeeded: 46, Failed: 0, Warnings: 0
> 
> # v4l2-compliance -d /dev/video1
> v4l2-compliance 1.21.0-4859, 64 bits, 64-bit time_t
> v4l2-compliance SHA: 493af03f3c57 2021-10-08 17:23:11
> 
> Compliance test for amphion-vpu device /dev/video1:
> 
> Driver Info:
> 	Driver name      : amphion-vpu
> 	Card type        : amphion vpu encoder
> 	Bus info         : platform: amphion-vpu
> 	Driver version   : 5.15.0
> 	Capabilities     : 0x84204000
> 		Video Memory-to-Memory Multiplanar
> 		Streaming
> 		Extended Pix Format
> 		Device Capabilities
> 	Device Caps      : 0x04204000
> 		Video Memory-to-Memory Multiplanar
> 		Streaming
> 		Extended Pix Format
> 	Detected Stateful Encoder
> Media Driver Info:
> 	Driver name      : amphion-vpu
> 	Model            : amphion-vpu
> 	Serial           :
> 	Bus info         : platform: amphion-vpu
> 	Media version    : 5.15.0
> 	Hardware revision: 0x00000000 (0)
> 	Driver version   : 5.15.0
> Interface Info:
> 	ID               : 0x0300001a
> 	Type             : V4L Video
> Entity Info:
> 	ID               : 0x0000000f (15)
> 	Name             : amphion-vpu-encoder-source
> 	Function         : V4L2 I/O
> 	Pad 0x01000010   : 0: Source
> 	  Link 0x02000016: to remote pad 0x1000012 of entity 'amphion-vpu-encoder-proc' (Video Encoder): Data, Enabled, Immutable
> 
> Required ioctls:
> 	test MC information (see 'Media Driver Info' above): OK
> 	test VIDIOC_QUERYCAP: OK
> 	test invalid ioctls: OK
> 
> Allow for multiple opens:
> 	test second /dev/video1 open: OK
> 	test VIDIOC_QUERYCAP: OK
> 	test VIDIOC_G/S_PRIORITY: OK
> 	test for unlimited opens: OK
> 
> Debug ioctls:
> 	test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> 	test VIDIOC_LOG_STATUS: OK (Not Supported)
> 
> Input ioctls:
> 	test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> 	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> 	test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> 	test VIDIOC_ENUMAUDIO: OK (Not Supported)
> 	test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> 	test VIDIOC_G/S_AUDIO: OK (Not Supported)
> 	Inputs: 0 Audio Inputs: 0 Tuners: 0
> 
> Output ioctls:
> 	test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> 	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> 	test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> 	test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> 	test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> 	Outputs: 0 Audio Outputs: 0 Modulators: 0
> 
> Input/Output configuration ioctls:
> 	test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> 	test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> 	test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> 	test VIDIOC_G/S_EDID: OK (Not Supported)
> 
> Control ioctls:
> 	test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
> 	test VIDIOC_QUERYCTRL: OK
> 	test VIDIOC_G/S_CTRL: OK
> 	test VIDIOC_G/S/TRY_EXT_CTRLS: OK
> 	test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
> 	test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> 	Standard Controls: 20 Private Controls: 0
> 
> Format ioctls:
> 	test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> 	test VIDIOC_G/S_PARM: OK
> 	test VIDIOC_G_FBUF: OK (Not Supported)
> 	test VIDIOC_G_FMT: OK
> 	test VIDIOC_TRY_FMT: OK
> 	test VIDIOC_S_FMT: OK
> 	test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> 	test Cropping: OK
> 	test Composing: OK (Not Supported)
> 	test Scaling: OK (Not Supported)
> 
> Codec ioctls:
> 	test VIDIOC_(TRY_)ENCODER_CMD: OK
> 	test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> 	test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> 
> Buffer ioctls:
> 	test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> 	test VIDIOC_EXPBUF: OK
> 	test Requests: OK (Not Supported)
> 
> Total for amphion-vpu device /dev/video1: 46, Succeeded: 46, Failed: 0, Warnings: 0
> 
> # v4l2-compliance -d /dev/media0
> v4l2-compliance 1.21.0-4859, 64 bits, 64-bit time_t
> v4l2-compliance SHA: 493af03f3c57 2021-10-08 17:23:11
> 
> Compliance test for amphion-vpu device /dev/media0:
> 
> Media Driver Info:
> 	Driver name      : amphion-vpu
> 	Model            : amphion-vpu
> 	Serial           :
> 	Bus info         : platform: amphion-vpu
> 	Media version    : 5.15.0
> 	Hardware revision: 0x00000000 (0)
> 	Driver version   : 5.15.0
> 
> Required ioctls:
> 	test MEDIA_IOC_DEVICE_INFO: OK
> 	test invalid ioctls: OK
> 
> Allow for multiple opens:
> 	test second /dev/media0 open: OK
> 	test MEDIA_IOC_DEVICE_INFO: OK
> 	test for unlimited opens: OK
> 
> Media Controller ioctls:
> 	test MEDIA_IOC_G_TOPOLOGY: OK
> 	Entities: 6 Interfaces: 2 Pads: 8 Links: 8
> 	test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
> 	test MEDIA_IOC_SETUP_LINK: OK
> 
> Total for amphion-vpu device /dev/media0: 8, Succeeded: 8, Failed: 0, Warnings: 0
> 
> Ming Qian (13):
>   dt-bindings: media: amphion: add amphion video codec bindings
>   media: add nv12m_8l128 and nv12m_10be_8l128 video format.
>   media: amphion: add amphion vpu device driver
>   media: amphion: add vpu core driver
>   media: amphion: implement vpu core communication based on mailbox
>   media: amphion: add vpu v4l2 m2m support
>   media: amphion: add v4l2 m2m vpu encoder stateful driver
>   media: amphion: add v4l2 m2m vpu decoder stateful driver
>   media: amphion: implement windsor encoder rpc interface
>   media: amphion: implement malone decoder rpc interface
>   ARM64: dts: freescale: imx8q: add imx vpu codec entries
>   firmware: imx: scu-pd: imx8q: add vpu mu resources
>   MAINTAINERS: add AMPHION VPU CODEC V4L2 driver entry
> 
>  .../bindings/media/amphion,vpu.yaml           |  180 ++
>  .../media/v4l/pixfmt-yuv-planar.rst           |   28 +-
>  MAINTAINERS                                   |    9 +
>  .../arm64/boot/dts/freescale/imx8-ss-vpu.dtsi |   72 +
>  arch/arm64/boot/dts/freescale/imx8qxp-mek.dts |   17 +
>  arch/arm64/boot/dts/freescale/imx8qxp.dtsi    |   24 +
>  arch/arm64/configs/defconfig                  |    1 +
>  drivers/firmware/imx/scu-pd.c                 |    4 +
>  drivers/media/platform/Kconfig                |   19 +
>  drivers/media/platform/Makefile               |    2 +
>  drivers/media/platform/amphion/Makefile       |   20 +
>  drivers/media/platform/amphion/vdec.c         | 1694 +++++++++++++++++
>  drivers/media/platform/amphion/venc.c         | 1364 +++++++++++++
>  drivers/media/platform/amphion/vpu.h          |  356 ++++
>  drivers/media/platform/amphion/vpu_cmds.c     |  436 +++++
>  drivers/media/platform/amphion/vpu_cmds.h     |   25 +
>  drivers/media/platform/amphion/vpu_codec.h    |   68 +
>  drivers/media/platform/amphion/vpu_color.c    |  183 ++
>  drivers/media/platform/amphion/vpu_core.c     |  870 +++++++++
>  drivers/media/platform/amphion/vpu_core.h     |   15 +
>  drivers/media/platform/amphion/vpu_dbg.c      |  495 +++++
>  drivers/media/platform/amphion/vpu_defs.h     |  187 ++
>  drivers/media/platform/amphion/vpu_drv.c      |  260 +++
>  drivers/media/platform/amphion/vpu_helpers.c  |  413 ++++
>  drivers/media/platform/amphion/vpu_helpers.h  |   74 +
>  drivers/media/platform/amphion/vpu_imx8q.c    |  271 +++
>  drivers/media/platform/amphion/vpu_imx8q.h    |  115 ++
>  drivers/media/platform/amphion/vpu_malone.c   | 1625 ++++++++++++++++
>  drivers/media/platform/amphion/vpu_malone.h   |   44 +
>  drivers/media/platform/amphion/vpu_mbox.c     |  118 ++
>  drivers/media/platform/amphion/vpu_mbox.h     |   16 +
>  drivers/media/platform/amphion/vpu_msgs.c     |  385 ++++
>  drivers/media/platform/amphion/vpu_msgs.h     |   14 +
>  drivers/media/platform/amphion/vpu_rpc.c      |  257 +++
>  drivers/media/platform/amphion/vpu_rpc.h      |  456 +++++
>  drivers/media/platform/amphion/vpu_v4l2.c     |  720 +++++++
>  drivers/media/platform/amphion/vpu_v4l2.h     |   55 +
>  drivers/media/platform/amphion/vpu_windsor.c  | 1169 ++++++++++++
>  drivers/media/platform/amphion/vpu_windsor.h  |   37 +
>  drivers/media/v4l2-core/v4l2-ioctl.c          |    2 +
>  include/uapi/linux/videodev2.h                |    2 +
>  41 files changed, 12099 insertions(+), 3 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/media/amphion,vpu.yaml
>  create mode 100644 arch/arm64/boot/dts/freescale/imx8-ss-vpu.dtsi
>  create mode 100644 drivers/media/platform/amphion/Makefile
>  create mode 100644 drivers/media/platform/amphion/vdec.c
>  create mode 100644 drivers/media/platform/amphion/venc.c
>  create mode 100644 drivers/media/platform/amphion/vpu.h
>  create mode 100644 drivers/media/platform/amphion/vpu_cmds.c
>  create mode 100644 drivers/media/platform/amphion/vpu_cmds.h
>  create mode 100644 drivers/media/platform/amphion/vpu_codec.h
>  create mode 100644 drivers/media/platform/amphion/vpu_color.c
>  create mode 100644 drivers/media/platform/amphion/vpu_core.c
>  create mode 100644 drivers/media/platform/amphion/vpu_core.h
>  create mode 100644 drivers/media/platform/amphion/vpu_dbg.c
>  create mode 100644 drivers/media/platform/amphion/vpu_defs.h
>  create mode 100644 drivers/media/platform/amphion/vpu_drv.c
>  create mode 100644 drivers/media/platform/amphion/vpu_helpers.c
>  create mode 100644 drivers/media/platform/amphion/vpu_helpers.h
>  create mode 100644 drivers/media/platform/amphion/vpu_imx8q.c
>  create mode 100644 drivers/media/platform/amphion/vpu_imx8q.h
>  create mode 100644 drivers/media/platform/amphion/vpu_malone.c
>  create mode 100644 drivers/media/platform/amphion/vpu_malone.h
>  create mode 100644 drivers/media/platform/amphion/vpu_mbox.c
>  create mode 100644 drivers/media/platform/amphion/vpu_mbox.h
>  create mode 100644 drivers/media/platform/amphion/vpu_msgs.c
>  create mode 100644 drivers/media/platform/amphion/vpu_msgs.h
>  create mode 100644 drivers/media/platform/amphion/vpu_rpc.c
>  create mode 100644 drivers/media/platform/amphion/vpu_rpc.h
>  create mode 100644 drivers/media/platform/amphion/vpu_v4l2.c
>  create mode 100644 drivers/media/platform/amphion/vpu_v4l2.h
>  create mode 100644 drivers/media/platform/amphion/vpu_windsor.c
>  create mode 100644 drivers/media/platform/amphion/vpu_windsor.h
> 
> 
> base-commit: e783362eb54cd99b2cac8b3a9aeac942e6f6ac07


^ permalink raw reply

* Re: [PATCH] ARM: dts: rockchip: fix MMC compatibles for rk3288
From: Johan Jonker @ 2022-01-25 12:14 UTC (permalink / raw)
  To: John Keeping, Heiko Stuebner
  Cc: Rob Herring, linux-arm-kernel, linux-rockchip, devicetree,
	linux-kernel
In-Reply-To: <20220125115007.3138311-1-john@metanate.com>

Hi John,

MMC aliases should go in the dts board files.
Sort on reg address, based on availability and without number gab.
(For rk3288 a lot of boards to change. That's why it wasn't done
yet...Could someone pick that up?)

Johan

On 1/25/22 12:50, John Keeping wrote:
> Prior to commit 4bac670aa5cb ("mmc: dw_mmc: rockchip: use common_caps")
> the mshcN aliases were used in an unusual way by the dw_mmc driver and
> affected behaviour.  Now that this has been fixed, rename the mmc
> aliases to use the standard form.
> 
> Signed-off-by: John Keeping <john@metanate.com>
> ---
>  arch/arm/boot/dts/rk3288.dtsi | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
> index aaaa61875701..50fa0a4652b5 100644
> --- a/arch/arm/boot/dts/rk3288.dtsi
> +++ b/arch/arm/boot/dts/rk3288.dtsi
> @@ -25,10 +25,10 @@ aliases {
>  		i2c3 = &i2c3;
>  		i2c4 = &i2c4;
>  		i2c5 = &i2c5;
> -		mshc0 = &emmc;
> -		mshc1 = &sdmmc;
> -		mshc2 = &sdio0;
> -		mshc3 = &sdio1;
> +		mmc0 = &emmc;
> +		mmc1 = &sdmmc;
> +		mmc2 = &sdio0;
> +		mmc3 = &sdio1;
>  		serial0 = &uart0;
>  		serial1 = &uart1;
>  		serial2 = &uart2;

^ permalink raw reply

* Re: [PATCH 6/8] nvmem: transformations: ethernet address offset support
From: Rafał Miłecki @ 2022-01-25 12:08 UTC (permalink / raw)
  To: Michael Walle, linux-mtd, devicetree, linux-kernel,
	linux-arm-kernel, netdev
  Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	Rob Herring, Srinivas Kandagatla, Shawn Guo, Li Yang,
	Frank Rowand, David S . Miller, Jakub Kicinski, Ansuel Smith,
	Andrew Lunn
In-Reply-To: <20211228142549.1275412-7-michael@walle.cc>

On 28.12.2021 15:25, Michael Walle wrote:
> An nvmem cell might just contain a base MAC address. To generate a
> address of a specific interface, add a transformation to add an offset
> to this base address.
> 
> Add a generic implementation and the first user of it, namely the sl28
> vpd storage.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>
> ---
>   drivers/nvmem/transformations.c | 45 +++++++++++++++++++++++++++++++++
>   1 file changed, 45 insertions(+)
> 
> diff --git a/drivers/nvmem/transformations.c b/drivers/nvmem/transformations.c
> index 61642a9feefb..15cd26da1f83 100644
> --- a/drivers/nvmem/transformations.c
> +++ b/drivers/nvmem/transformations.c
> @@ -12,7 +12,52 @@ struct nvmem_transformations {
>   	nvmem_cell_post_process_t pp;
>   };
>   
> +/**
> + * nvmem_transform_mac_address_offset() - Add an offset to a mac address cell
> + *
> + * A simple transformation which treats the index argument as an offset and add
> + * it to a mac address. This is useful, if the nvmem cell stores a base
> + * ethernet address.
> + *
> + * @index: nvmem cell index
> + * @data: nvmem data
> + * @bytes: length of the data
> + *
> + * Return: 0 or negative error code on failure.
> + */
> +static int nvmem_transform_mac_address_offset(int index, unsigned int offset,
> +					      void *data, size_t bytes)
> +{
> +	if (bytes != ETH_ALEN)
> +		return -EINVAL;
> +
> +	if (index < 0)
> +		return -EINVAL;
> +
> +	if (!is_valid_ether_addr(data))
> +		return -EINVAL;
> +
> +	eth_addr_add(data, index);
> +
> +	return 0;
> +}
> +
> +static int nvmem_kontron_sl28_vpd_pp(void *priv, const char *id, int index,
> +				     unsigned int offset, void *data,
> +				     size_t bytes)
> +{
> +	if (!id)
> +		return 0;
> +
> +	if (!strcmp(id, "mac-address"))
> +		return nvmem_transform_mac_address_offset(index, offset, data,
> +							  bytes);
> +
> +	return 0;
> +}
> +
>   static const struct nvmem_transformations nvmem_transformations[] = {
> +	{ .compatible = "kontron,sl28-vpd", .pp = nvmem_kontron_sl28_vpd_pp },
>   	{}
>   };

I think it's a rather bad solution that won't scale well at all.

You'll end up with a lot of NVMEM device specific strings and code in a
NVMEM core.

You'll have a lot of duplicated code (many device specific functions
calling e.g. nvmem_transform_mac_address_offset()).

I think it also ignores fact that one NVMEM device can be reused in
multiple platforms / device models using different (e.g. vendor / device
specific) cells.


What if we have:
1. Foo company using "kontron,sl28-vpd" with NVMEM cells:
    a. "mac-address"
    b. "mac-address-2"
    c. "mac-address-3"
2. Bar company using "kontron,sl28-vpd" with NVMEM cell:
    a. "mac-address"

In the first case you don't want any transformation.


If you consider using transformations for ASCII formats too then it
causes another conflict issue. Consider two devices:

1. Foo company device with BIN format of MAC
2. Bar company device with ASCII format of MAC

Both may use exactly the same binding:

partition@0 {
         compatible = "nvmem-cells";
         reg = <0x0 0x100000>;
         label = "bootloader";

         #address-cells = <1>;
         #size-cells = <1>;

         mac-address@100 {
                 reg = <0x100 0x6>;
         };
};

how are you going to handle them with proposed implementation? You can't
support both if you share "nvmem-cells" compatible string.


I think that what can solve those problems is assing "compatible" to
NVMEM cells.

Let me think about details of that possible solution.

^ permalink raw reply

* [PATCH] ARM: dts: rockchip: fix MMC compatibles for rk3288
From: John Keeping @ 2022-01-25 11:50 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: John Keeping, Rob Herring, linux-arm-kernel, linux-rockchip,
	devicetree, linux-kernel

Prior to commit 4bac670aa5cb ("mmc: dw_mmc: rockchip: use common_caps")
the mshcN aliases were used in an unusual way by the dw_mmc driver and
affected behaviour.  Now that this has been fixed, rename the mmc
aliases to use the standard form.

Signed-off-by: John Keeping <john@metanate.com>
---
 arch/arm/boot/dts/rk3288.dtsi | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
index aaaa61875701..50fa0a4652b5 100644
--- a/arch/arm/boot/dts/rk3288.dtsi
+++ b/arch/arm/boot/dts/rk3288.dtsi
@@ -25,10 +25,10 @@ aliases {
 		i2c3 = &i2c3;
 		i2c4 = &i2c4;
 		i2c5 = &i2c5;
-		mshc0 = &emmc;
-		mshc1 = &sdmmc;
-		mshc2 = &sdio0;
-		mshc3 = &sdio1;
+		mmc0 = &emmc;
+		mmc1 = &sdmmc;
+		mmc2 = &sdio0;
+		mmc3 = &sdio1;
 		serial0 = &uart0;
 		serial1 = &uart1;
 		serial2 = &uart2;
-- 
2.35.0


^ permalink raw reply related

* Re: [v2 2/2] i2c: mediatek: Add i2c compatible for Mediatek MT8186
From: Qii Wang @ 2022-01-25 11:27 UTC (permalink / raw)
  To: Kewei Xu, wsa
  Cc: matthias.bgg, robh+dt, linux-i2c, devicetree, linux-arm-kernel,
	linux-kernel, linux-mediatek, srv_heupstream, leilk.liu,
	liguo.zhang, caiyu.chen, housong.zhang, yuhan.wei, ryan-jh.yu
In-Reply-To: <20220125110413.18988-3-kewei.xu@mediatek.com>

On Tue, 2022-01-25 at 19:04 +0800, Kewei Xu wrote:
> Add i2c compatible for MT8186. Compare to MT8192 i2c controller,
> MT8186 doesn't need handshake signal witch apdma.
> 
> Signed-off-by: Kewei Xu <kewei.xu@mediatek.com>

Reviewed-by: Qii Wang <qii.wang@mediatek.com>

> ---
>  drivers/i2c/busses/i2c-mt65xx.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/drivers/i2c/busses/i2c-mt65xx.c
> b/drivers/i2c/busses/i2c-mt65xx.c
> index 9ea427f53083..aa4d21838e14 100644
> --- a/drivers/i2c/busses/i2c-mt65xx.c
> +++ b/drivers/i2c/busses/i2c-mt65xx.c
> @@ -397,6 +397,19 @@ static const struct mtk_i2c_compatible
> mt8183_compat = {
>  	.max_dma_support = 33,
>  };
>  
> +static const struct mtk_i2c_compatible mt8186_compat = {
> +	.regs = mt_i2c_regs_v2,
> +	.pmic_i2c = 0,
> +	.dcm = 0,
> +	.auto_restart = 1,
> +	.aux_len_reg = 1,
> +	.timing_adjust = 1,
> +	.dma_sync = 0,
> +	.ltiming_adjust = 1,
> +	.apdma_sync = 0,
> +	.max_dma_support = 36,
> +};
> +
>  static const struct mtk_i2c_compatible mt8192_compat = {
>  	.quirks = &mt8183_i2c_quirks,
>  	.regs = mt_i2c_regs_v2,
> @@ -418,6 +431,7 @@ static const struct of_device_id
> mtk_i2c_of_match[] = {
>  	{ .compatible = "mediatek,mt7622-i2c", .data = &mt7622_compat
> },
>  	{ .compatible = "mediatek,mt8173-i2c", .data = &mt8173_compat
> },
>  	{ .compatible = "mediatek,mt8183-i2c", .data = &mt8183_compat
> },
> +	{ .compatible = "mediatek,mt8186-i2c", .data = &mt8186_compat
> },
>  	{ .compatible = "mediatek,mt8192-i2c", .data = &mt8192_compat
> },
>  	{}
>  };


^ permalink raw reply

* Re: [v2 1/2] dt-bindings: i2c: update bindings for MT8186 SoC
From: Qii Wang @ 2022-01-25 11:26 UTC (permalink / raw)
  To: Kewei Xu, wsa
  Cc: matthias.bgg, robh+dt, linux-i2c, devicetree, linux-arm-kernel,
	linux-kernel, linux-mediatek, srv_heupstream, leilk.liu,
	liguo.zhang, caiyu.chen, housong.zhang, yuhan.wei, ryan-jh.yu
In-Reply-To: <20220125110413.18988-2-kewei.xu@mediatek.com>

On Tue, 2022-01-25 at 19:04 +0800, Kewei Xu wrote:
> Add a DT binding documentation for the MT8186 soc.
> 
> Signed-off-by: Kewei Xu <kewei.xu@mediatek.com>

Reviewed-by: Qii Wang <qii.wang@mediatek.com>

> ---
>  Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt
> b/Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt
> index 5ea216ae7084..88f74a3c81ec 100644
> --- a/Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt
> +++ b/Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt
> @@ -14,6 +14,7 @@ Required properties:
>        "mediatek,mt7629-i2c", "mediatek,mt2712-i2c": for MediaTek
> MT7629
>        "mediatek,mt8173-i2c": for MediaTek MT8173
>        "mediatek,mt8183-i2c": for MediaTek MT8183
> +      "mediatek,mt8186-i2c": for MediaTek MT8186
>        "mediatek,mt8192-i2c": for MediaTek MT8192
>        "mediatek,mt8195-i2c", "mediatek,mt8192-i2c": for MediaTek
> MT8195
>        "mediatek,mt8516-i2c", "mediatek,mt2712-i2c": for MediaTek
> MT8516


^ permalink raw reply

* [v2 1/2] dt-bindings: i2c: update bindings for MT8186 SoC
From: Kewei Xu @ 2022-01-25 11:04 UTC (permalink / raw)
  To: wsa
  Cc: matthias.bgg, robh+dt, linux-i2c, devicetree, linux-arm-kernel,
	linux-kernel, linux-mediatek, srv_heupstream, leilk.liu, qii.wang,
	liguo.zhang, caiyu.chen, housong.zhang, yuhan.wei, kewei.xu,
	ryan-jh.yu
In-Reply-To: <20220125110413.18988-1-kewei.xu@mediatek.com>

Add a DT binding documentation for the MT8186 soc.

Signed-off-by: Kewei Xu <kewei.xu@mediatek.com>
---
 Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt b/Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt
index 5ea216ae7084..88f74a3c81ec 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt
@@ -14,6 +14,7 @@ Required properties:
       "mediatek,mt7629-i2c", "mediatek,mt2712-i2c": for MediaTek MT7629
       "mediatek,mt8173-i2c": for MediaTek MT8173
       "mediatek,mt8183-i2c": for MediaTek MT8183
+      "mediatek,mt8186-i2c": for MediaTek MT8186
       "mediatek,mt8192-i2c": for MediaTek MT8192
       "mediatek,mt8195-i2c", "mediatek,mt8192-i2c": for MediaTek MT8195
       "mediatek,mt8516-i2c", "mediatek,mt2712-i2c": for MediaTek MT8516
-- 
2.25.1


^ permalink raw reply related

* [v2 2/2] i2c: mediatek: Add i2c compatible for Mediatek MT8186
From: Kewei Xu @ 2022-01-25 11:04 UTC (permalink / raw)
  To: wsa
  Cc: matthias.bgg, robh+dt, linux-i2c, devicetree, linux-arm-kernel,
	linux-kernel, linux-mediatek, srv_heupstream, leilk.liu, qii.wang,
	liguo.zhang, caiyu.chen, housong.zhang, yuhan.wei, kewei.xu,
	ryan-jh.yu
In-Reply-To: <20220125110413.18988-1-kewei.xu@mediatek.com>

Add i2c compatible for MT8186. Compare to MT8192 i2c controller,
MT8186 doesn't need handshake signal witch apdma.

Signed-off-by: Kewei Xu <kewei.xu@mediatek.com>
---
 drivers/i2c/busses/i2c-mt65xx.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c
index 9ea427f53083..aa4d21838e14 100644
--- a/drivers/i2c/busses/i2c-mt65xx.c
+++ b/drivers/i2c/busses/i2c-mt65xx.c
@@ -397,6 +397,19 @@ static const struct mtk_i2c_compatible mt8183_compat = {
 	.max_dma_support = 33,
 };
 
+static const struct mtk_i2c_compatible mt8186_compat = {
+	.regs = mt_i2c_regs_v2,
+	.pmic_i2c = 0,
+	.dcm = 0,
+	.auto_restart = 1,
+	.aux_len_reg = 1,
+	.timing_adjust = 1,
+	.dma_sync = 0,
+	.ltiming_adjust = 1,
+	.apdma_sync = 0,
+	.max_dma_support = 36,
+};
+
 static const struct mtk_i2c_compatible mt8192_compat = {
 	.quirks = &mt8183_i2c_quirks,
 	.regs = mt_i2c_regs_v2,
@@ -418,6 +431,7 @@ static const struct of_device_id mtk_i2c_of_match[] = {
 	{ .compatible = "mediatek,mt7622-i2c", .data = &mt7622_compat },
 	{ .compatible = "mediatek,mt8173-i2c", .data = &mt8173_compat },
 	{ .compatible = "mediatek,mt8183-i2c", .data = &mt8183_compat },
+	{ .compatible = "mediatek,mt8186-i2c", .data = &mt8186_compat },
 	{ .compatible = "mediatek,mt8192-i2c", .data = &mt8192_compat },
 	{}
 };
-- 
2.25.1


^ permalink raw reply related

* [v2 0/2] add i2c support for mt8186
From: Kewei Xu @ 2022-01-25 11:04 UTC (permalink / raw)
  To: wsa
  Cc: matthias.bgg, robh+dt, linux-i2c, devicetree, linux-arm-kernel,
	linux-kernel, linux-mediatek, srv_heupstream, leilk.liu, qii.wang,
	liguo.zhang, caiyu.chen, housong.zhang, yuhan.wei, kewei.xu,
	ryan-jh.yu

V1:
Add i2c compatible for MT8186. Compare to MT8192 i2c controller,
MT8186 doesn't need handshake signal with apdma.

Kewei Xu (2):
  dt-bindings: i2c: update bindings for MT8186 SoC
  i2c: mediatek: Add i2c compatible for Mediatek MT8186

 .../devicetree/bindings/i2c/i2c-mt65xx.txt         |  1 +
 drivers/i2c/busses/i2c-mt65xx.c                    | 14 ++++++++++++++
 2 files changed, 15 insertions(+)

--
2.18.0


^ permalink raw reply

* Re: [PATCH 1/1] arm64: dts: imx8mq: fix lcdif port node
From: Fabio Estevam @ 2022-01-25 10:59 UTC (permalink / raw)
  To: Alexander Stein
  Cc: Rob Herring, Shawn Guo, Sascha Hauer, Peng Fan,
	Guido Günther,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
In-Reply-To: <20220125091646.2845111-1-alexander.stein@ew.tq-group.com>

Hi Alexander,

On Tue, Jan 25, 2022 at 6:16 AM Alexander Stein
<alexander.stein@ew.tq-group.com> wrote:
>
> The port node does not have a unit-address, remove it.
> This fixes the warnings:
> lcd-controller@30320000: 'port' is a required property
> lcd-controller@30320000: 'port@0' does not match any of the regexes:
> 'pinctrl-[0-9]+'
>
> Fixes: commit d0081bd02a03 ("arm64: dts: imx8mq: Add NWL MIPI DSI controller")
> Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>

Reviewed-by: Fabio Estevam <festevam@gmail.com>

^ permalink raw reply

* Re: [PATCH 3/3] nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property
From: Srinivas Kandagatla @ 2022-01-25 10:44 UTC (permalink / raw)
  To: Christophe Kerello, miquel.raynal, richard, vigneshr, robh+dt
  Cc: linux-mtd, linux-kernel, linux-stm32, devicetree, chenshumin86
In-Reply-To: <20220105135734.271313-4-christophe.kerello@foss.st.com>



On 05/01/2022 13:57, Christophe Kerello wrote:
> diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> index e765d3d0542e..e11c74db64f9 100644
> --- a/drivers/nvmem/core.c
> +++ b/drivers/nvmem/core.c
> @@ -769,7 +769,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
>   
>   	if (config->wp_gpio)
>   		nvmem->wp_gpio = config->wp_gpio;
> -	else
> +	else if (config->reg_write)
This is clearly not going to work for everyone.

A flag in nvmem_config to indicate that wp gpio is managed by provider 
driver would be the right thing to do here.
>   		nvmem->wp_gpio = gpiod_get_optional(config->dev, "wp",
>   						    GPIOD_OUT_HIGH);

--srini


^ permalink raw reply

* Re: [PATCH net-next v1 3/9] net: ethernet: mtk-star-emac: add support for MT8365 SoC
From: Bartosz Golaszewski @ 2022-01-25 10:21 UTC (permalink / raw)
  To: Biao Huang
  Cc: David Miller, Rob Herring, Fabien Parent, Jakub Kicinski,
	Felix Fietkau, John Crispin, Sean Wang, Mark Lee,
	Matthias Brugger, netdev, devicetree, Linux Kernel Mailing List,
	Linux ARM, moderated list:ARM/Mediatek SoC..., Yinghua Pan,
	srv_heupstream, Macpaul Lin
In-Reply-To: <20220120070226.1492-4-biao.huang@mediatek.com>

On Thu, Jan 20, 2022 at 8:02 AM Biao Huang <biao.huang@mediatek.com> wrote:
>
> Add Ethernet driver support for MT8365 SoC.
>
> Signed-off-by: Biao Huang <biao.huang@mediatek.com>
> Signed-off-by: Yinghua Pan <ot_yinghua.pan@mediatek.com>
> Signed-off-by: Fabien Parent <fparent@baylibre.com>
> ---
>  drivers/net/ethernet/mediatek/mtk_star_emac.c | 75 ++++++++++++++++---
>  1 file changed, 64 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/net/ethernet/mediatek/mtk_star_emac.c b/drivers/net/ethernet/mediatek/mtk_star_emac.c
> index 7c2af775d601..403439782db9 100644
> --- a/drivers/net/ethernet/mediatek/mtk_star_emac.c
> +++ b/drivers/net/ethernet/mediatek/mtk_star_emac.c
> @@ -151,6 +151,7 @@ static const char *const mtk_star_clk_names[] = { "core", "reg", "trans" };
>  #define MTK_STAR_REG_MAC_CLK_CONF              0x00ac
>  #define MTK_STAR_MSK_MAC_CLK_CONF              GENMASK(7, 0)
>  #define MTK_STAR_BIT_CLK_DIV_10                        0x0a
> +#define MTK_STAR_BIT_CLK_DIV_50                        0x32
>
>  /* Counter registers. */
>  #define MTK_STAR_REG_C_RXOKPKT                 0x0100
> @@ -183,9 +184,11 @@ static const char *const mtk_star_clk_names[] = { "core", "reg", "trans" };
>  #define MTK_STAR_REG_C_RX_TWIST                        0x0218
>
>  /* Ethernet CFG Control */
> -#define MTK_PERICFG_REG_NIC_CFG_CON            0x03c4
> -#define MTK_PERICFG_MSK_NIC_CFG_CON_CFG_MII    GENMASK(3, 0)
> -#define MTK_PERICFG_BIT_NIC_CFG_CON_RMII       BIT(0)
> +#define MTK_PERICFG_REG_NIC_CFG0_CON           0x03c4
> +#define MTK_PERICFG_REG_NIC_CFG1_CON           0x03c8
> +#define MTK_PERICFG_REG_NIC_CFG_CON_V2         0x0c10
> +#define MTK_PERICFG_REG_NIC_CFG_CON_CFG_INTF   GENMASK(3, 0)
> +#define MTK_PERICFG_BIT_NIC_CFG_CON_RMII       1
>
>  /* Represents the actual structure of descriptors used by the MAC. We can
>   * reuse the same structure for both TX and RX - the layout is the same, only
> @@ -234,6 +237,7 @@ struct mtk_star_ring {
>  };
>
>  struct mtk_star_compat {
> +       int (*set_interface_mode)(struct net_device *ndev);
>         unsigned char bit_clk_div;
>  };
>
> @@ -909,13 +913,6 @@ static void mtk_star_init_config(struct mtk_star_priv *priv)
>                            priv->compat_data->bit_clk_div);
>  }
>
> -static void mtk_star_set_mode_rmii(struct mtk_star_priv *priv)
> -{
> -       regmap_update_bits(priv->pericfg, MTK_PERICFG_REG_NIC_CFG_CON,
> -                          MTK_PERICFG_MSK_NIC_CFG_CON_CFG_MII,
> -                          MTK_PERICFG_BIT_NIC_CFG_CON_RMII);
> -}
> -
>  static int mtk_star_enable(struct net_device *ndev)
>  {
>         struct mtk_star_priv *priv = netdev_priv(ndev);
> @@ -1531,7 +1528,13 @@ static int mtk_star_probe(struct platform_device *pdev)
>                 return -ENODEV;
>         }
>
> -       mtk_star_set_mode_rmii(priv);
> +       if (priv->compat_data->set_interface_mode) {
> +               ret = priv->compat_data->set_interface_mode(ndev);
> +               if (ret) {
> +                       dev_err(dev, "Failed to set phy interface, err = %d\n", ret);
> +                       return -EINVAL;
> +               }
> +       }

Shouldn't you still call mtk_star_set_mode_rmii(priv) if there's no callback?

>
>         ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
>         if (ret) {
> @@ -1564,10 +1567,58 @@ static int mtk_star_probe(struct platform_device *pdev)
>         return devm_register_netdev(dev, ndev);
>  }
>
> +static int mt8516_set_interface_mode(struct net_device *ndev)
> +{
> +       struct mtk_star_priv *priv = netdev_priv(ndev);
> +       struct device *dev = mtk_star_get_dev(priv);
> +       unsigned int intf_val = 0;

No need to initialize.

> +
> +       switch (priv->phy_intf) {
> +       case PHY_INTERFACE_MODE_RMII:
> +               intf_val = MTK_PERICFG_BIT_NIC_CFG_CON_RMII;
> +               break;
> +       default:
> +               dev_err(dev, "This interface not supported\n");
> +               return -EINVAL;
> +       }
> +
> +       regmap_update_bits(priv->pericfg, MTK_PERICFG_REG_NIC_CFG0_CON,
> +                          MTK_PERICFG_REG_NIC_CFG_CON_CFG_INTF,
> +                          intf_val);
> +       return 0;

You can directly return regmap_update_bits().

> +}
> +
> +static int mt8365_set_interface_mode(struct net_device *ndev)
> +{
> +       struct mtk_star_priv *priv = netdev_priv(ndev);
> +       struct device *dev = mtk_star_get_dev(priv);
> +       unsigned int intf_val = 0;
> +
> +       switch (priv->phy_intf) {
> +       case PHY_INTERFACE_MODE_RMII:
> +               intf_val = MTK_PERICFG_BIT_NIC_CFG_CON_RMII;
> +               break;
> +       default:
> +               dev_err(dev, "This interface not supported\n");
> +               return -EINVAL;
> +       }
> +
> +       regmap_update_bits(priv->pericfg, MTK_PERICFG_REG_NIC_CFG_CON_V2,
> +                          MTK_PERICFG_REG_NIC_CFG_CON_CFG_INTF,
> +                          intf_val);
> +       return 0;
> +}

Same as above.

> +
>  static struct mtk_star_compat mtk_star_mt8516_compat = {
> +       .set_interface_mode = mt8516_set_interface_mode,
>         .bit_clk_div = MTK_STAR_BIT_CLK_DIV_10,
>  };
>
> +static struct mtk_star_compat mtk_star_mt8365_compat = {
> +       .set_interface_mode = mt8365_set_interface_mode,
> +       .bit_clk_div = MTK_STAR_BIT_CLK_DIV_50,
> +};
> +
>  static const struct of_device_id mtk_star_of_match[] = {
>         { .compatible = "mediatek,mt8516-eth",
>           .data = &mtk_star_mt8516_compat },
> @@ -1575,6 +1626,8 @@ static const struct of_device_id mtk_star_of_match[] = {
>           .data = &mtk_star_mt8516_compat },
>         { .compatible = "mediatek,mt8175-eth",
>           .data = &mtk_star_mt8516_compat },
> +       { .compatible = "mediatek,mt8365-eth",
> +         .data = &mtk_star_mt8365_compat },
>         { }
>  };
>  MODULE_DEVICE_TABLE(of, mtk_star_of_match);
> --
> 2.25.1
>

Bart

^ permalink raw reply

* Re: [PATCH 5/8] net: add helper eth_addr_add()
From: Rafał Miłecki @ 2022-01-25 10:24 UTC (permalink / raw)
  To: Michael Walle, linux-mtd, devicetree, linux-kernel,
	linux-arm-kernel, netdev
  Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	Rob Herring, Srinivas Kandagatla, Shawn Guo, Li Yang,
	Frank Rowand, David S . Miller, Jakub Kicinski, Ansuel Smith,
	Andrew Lunn
In-Reply-To: <20211228142549.1275412-6-michael@walle.cc>

On 28.12.2021 15:25, Michael Walle wrote:
> Add a helper to add an offset to a ethernet address. This comes in handy
> if you have a base ethernet address for multiple interfaces.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>
> ---
>   include/linux/etherdevice.h | 14 ++++++++++++++
>   1 file changed, 14 insertions(+)
> 
> diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
> index 2ad71cc90b37..9d621dc85290 100644
> --- a/include/linux/etherdevice.h
> +++ b/include/linux/etherdevice.h
> @@ -486,6 +486,20 @@ static inline void eth_addr_inc(u8 *addr)
>   	u64_to_ether_addr(u, addr);
>   }
>   
> +/**
> + * eth_addr_add() - Add (or subtract) and offset to/from the given MAC address.
> + *
> + * @offset: Offset to add.
> + * @addr: Pointer to a six-byte array containing Ethernet address to increment.
> + */
> +static inline void eth_addr_add(u8 *addr, long offset)
> +{
> +	u64 u = ether_addr_to_u64(addr);
> +
> +	u += offset;
> +	u64_to_ether_addr(u, addr);
> +}

Please check eth_hw_addr_gen() which contains identical code +
eth_hw_addr_set().

You should probably make eth_hw_addr_gen() use your new function as a
helper.

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox