From: kyrie.wu <kyrie.wu@mediatek.com> To: Hans Verkuil <hverkuil-cisco@xs4all.nl>, Mauro Carvalho Chehab <mchehab@kernel.org>, Rob Herring <robh+dt@kernel.org>, Tomasz Figa <tfiga@chromium.org>, Matthias Brugger <matthias.bgg@gmail.com>, "Tzung-Bi Shih" <tzungbi@chromium.org> Cc: <Project_Global_Chrome_Upstream_Group@mediatek.com>, <linux-media@vger.kernel.org>, <devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>, <linux-mediatek@lists.infradead.org>, <xia.jiang@mediatek.com>, <maoguang.meng@mediatek.com>, <srv_heupstream@mediatek.com>, <kyrie.wu@mediatek.com>, <irui.wang@mediatek.com> Subject: [PATCH V4,0/5] Support jpeg encoder for MT8195 Date: Fri, 24 Sep 2021 15:45:38 +0800 [thread overview] Message-ID: <1632469543-27345-1-git-send-email-kyrie.wu@mediatek.com> (raw) MT8195 has two jpeg encoding HW, each one has its own power-domain, clock, interrupt, register base. The two jpeg encoding HW can work together to achieve higher performance. Generally, one HW needs to register one device node, and the APP operates the HW through the device node. If there are multiple HWs, the multiple device node needs to be registered. At this time, the app needs to design software logic to use multiple HWs in parallel, which will undoubtedly increase the difficulty of app development and weaken its compatibility. These serial patches use the component framework to achieve the purpose of using multiple HWs through only one device node. About the component framework Block Diagram, please check below: Master(device node) ________|_________________________ | | | component0(HW0) component1(HW1) component2(HW2) ...... As above, the component framework is similar to a master-component two level architecture. Both master and component have the compatible attribute in the device tree, and the corresponding platform driver structure is defined in the driver. Therefore, when the compatible attribute matches, the corresponding probe function will be called. In the probe function of component, operations such as initialization clock, remmap register base, registration interrupt will be performed. And add the component to a component linked list to find the corresponding master. In the probe function of the master, the device node will be registered, and the master will be added to a master linked list to find the corresponding component. After the master matches the component, it will obtain the clock, interrupt, register base and other resources in the component, and operate the HW through these resources. At the same time, multiple HWs software function interfaces are designed in the master driver. kyrie.wu (5): dt-bindings: mediatek: Add mediatek, mt8195-jpgenc compatible media: mtk-jpegenc: Use component framework to manage each hardware media: mtk-jpegenc: add jpegenc timeout func interface media: mtk-jpegenc: add jpeg encode worker interface media: mtk-jpegenc: add output pic reorder interface .../bindings/media/mediatek-jpeg-encoder.yaml | 3 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 395 ++++++++++++++++++--- drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 79 +++++ drivers/media/platform/mtk-jpeg/mtk_jpeg_enc_hw.c | 298 ++++++++++++++++ 4 files changed, 730 insertions(+), 45 deletions(-) -- 2.6.4 _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek
WARNING: multiple messages have this Message-ID (diff)
From: kyrie.wu <kyrie.wu@mediatek.com> To: Hans Verkuil <hverkuil-cisco@xs4all.nl>, Mauro Carvalho Chehab <mchehab@kernel.org>, Rob Herring <robh+dt@kernel.org>, Tomasz Figa <tfiga@chromium.org>, Matthias Brugger <matthias.bgg@gmail.com>, "Tzung-Bi Shih" <tzungbi@chromium.org> Cc: <Project_Global_Chrome_Upstream_Group@mediatek.com>, <linux-media@vger.kernel.org>, <devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>, <linux-mediatek@lists.infradead.org>, <xia.jiang@mediatek.com>, <maoguang.meng@mediatek.com>, <srv_heupstream@mediatek.com>, <kyrie.wu@mediatek.com>, <irui.wang@mediatek.com> Subject: [PATCH V4,0/5] Support jpeg encoder for MT8195 Date: Fri, 24 Sep 2021 15:45:38 +0800 [thread overview] Message-ID: <1632469543-27345-1-git-send-email-kyrie.wu@mediatek.com> (raw) MT8195 has two jpeg encoding HW, each one has its own power-domain, clock, interrupt, register base. The two jpeg encoding HW can work together to achieve higher performance. Generally, one HW needs to register one device node, and the APP operates the HW through the device node. If there are multiple HWs, the multiple device node needs to be registered. At this time, the app needs to design software logic to use multiple HWs in parallel, which will undoubtedly increase the difficulty of app development and weaken its compatibility. These serial patches use the component framework to achieve the purpose of using multiple HWs through only one device node. About the component framework Block Diagram, please check below: Master(device node) ________|_________________________ | | | component0(HW0) component1(HW1) component2(HW2) ...... As above, the component framework is similar to a master-component two level architecture. Both master and component have the compatible attribute in the device tree, and the corresponding platform driver structure is defined in the driver. Therefore, when the compatible attribute matches, the corresponding probe function will be called. In the probe function of component, operations such as initialization clock, remmap register base, registration interrupt will be performed. And add the component to a component linked list to find the corresponding master. In the probe function of the master, the device node will be registered, and the master will be added to a master linked list to find the corresponding component. After the master matches the component, it will obtain the clock, interrupt, register base and other resources in the component, and operate the HW through these resources. At the same time, multiple HWs software function interfaces are designed in the master driver. kyrie.wu (5): dt-bindings: mediatek: Add mediatek, mt8195-jpgenc compatible media: mtk-jpegenc: Use component framework to manage each hardware media: mtk-jpegenc: add jpegenc timeout func interface media: mtk-jpegenc: add jpeg encode worker interface media: mtk-jpegenc: add output pic reorder interface .../bindings/media/mediatek-jpeg-encoder.yaml | 3 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 395 ++++++++++++++++++--- drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 79 +++++ drivers/media/platform/mtk-jpeg/mtk_jpeg_enc_hw.c | 298 ++++++++++++++++ 4 files changed, 730 insertions(+), 45 deletions(-) -- 2.6.4 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2021-09-24 7:46 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-09-24 7:45 kyrie.wu [this message] 2021-09-24 7:45 ` [PATCH V4,0/5] Support jpeg encoder for MT8195 kyrie.wu 2021-09-24 7:45 ` [PATCH V4, 1/5] dt-bindings: mediatek: Add mediatek, mt8195-jpgenc compatible kyrie.wu 2021-09-24 7:45 ` kyrie.wu 2021-09-24 7:45 ` [PATCH V4, 2/5] media: mtk-jpegenc: Use component framework to manage each hardware kyrie.wu 2021-09-24 7:45 ` kyrie.wu 2021-09-24 7:45 ` [PATCH V4, 3/5] media: mtk-jpegenc: add jpegenc timeout func interface kyrie.wu 2021-09-24 7:45 ` kyrie.wu 2021-09-24 7:45 ` [PATCH V4,4/5] media: mtk-jpegenc: add jpeg encode worker interface kyrie.wu 2021-09-24 7:45 ` kyrie.wu 2021-09-24 7:45 ` [PATCH V4,5/5] media: mtk-jpegenc: add output pic reorder interface kyrie.wu 2021-09-24 7:45 ` kyrie.wu 2021-09-24 7:55 ` [PATCH V4,0/5] Support jpeg encoder for MT8195 Chen-Yu Tsai 2021-09-24 7:55 ` Chen-Yu Tsai 2021-09-24 7:55 ` Chen-Yu Tsai
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1632469543-27345-1-git-send-email-kyrie.wu@mediatek.com \ --to=kyrie.wu@mediatek.com \ --cc=Project_Global_Chrome_Upstream_Group@mediatek.com \ --cc=devicetree@vger.kernel.org \ --cc=hverkuil-cisco@xs4all.nl \ --cc=irui.wang@mediatek.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-media@vger.kernel.org \ --cc=linux-mediatek@lists.infradead.org \ --cc=maoguang.meng@mediatek.com \ --cc=matthias.bgg@gmail.com \ --cc=mchehab@kernel.org \ --cc=robh+dt@kernel.org \ --cc=srv_heupstream@mediatek.com \ --cc=tfiga@chromium.org \ --cc=tzungbi@chromium.org \ --cc=xia.jiang@mediatek.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.