* [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&data=04%7C01%7Cming.qian%
> >
> 40nxp.com%7C8f3d9dd4d58542650ac808d9dffb4ef4%7C686ea1d3bc2b4c6fa9
> 2cd99
> >
> c5c301635%7C0%7C0%7C637787092725815979%7CUnknown%7CTWFpbGZsb
> 3d8eyJWIjo
> >
> iMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C30
> 00&
> > ;sdata=csybemVdVslZ%2FJx%2BLSD4dPU8WZzXcKcs35fYlf7u0oU%3D&
> ;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
> >
> &data=04%7C01%7Cming.qian%40nxp.com%7C8f3d9dd4d58542650ac80
> 8d9dffb
> >
> 4ef4%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63778709272581
> 5979%7
> >
> CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJ
> BTiI6Ik1
> >
> haWwiLCJXVCI6Mn0%3D%7C3000&sdata=NsYaJTd%2F8iyxR43T5l8plOL4
> Fc0ZPnC
> > XctWhp2nVyyY%3D&reserved=0
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitl
> > ab.freedesktop.org%2Fgstreamer%2Fgstreamer%2F-
> %2Fmerge_requests%2F1381
> >
> &data=04%7C01%7Cming.qian%40nxp.com%7C8f3d9dd4d58542650ac80
> 8d9dffb
> >
> 4ef4%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63778709272581
> 5979%7
> >
> CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJ
> BTiI6Ik1
> >
> haWwiLCJXVCI6Mn0%3D%7C3000&sdata=EpF9to1WlTCtvwQRFLqmBOe
> d0v7UxgJqW
> > TZOjvyYydY%3D&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
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox