On Thu, 19 Aug 2021 at 04:13, yunfei.dong@mediatek.com yunfei.dong@mediatek.com wrote:
Hi Ezequiel,
Thanks for your suggestion.
On Wed, 2021-08-18 at 11:11 -0300, Ezequiel Garcia wrote:
+danvet
Hi,
On Tue, 10 Aug 2021 at 23:58, Yunfei Dong yunfei.dong@mediatek.com wrote:
This series adds support for multi hardware decode into mtk-vcodec, by first adding component framework to manage each hardware information: interrupt, clock, register bases and power. Secondly add core thread to deal with core hardware message, at the same time, add msg queue for different hardware share messages. Lastly, the architecture of different specs are not the same, using specs type to separate them.
I don't think it's a good idea to introduce the component API in the media subsystem. It doesn't seem to be maintained, IRC there's not even a maintainer for it, and it has some issues that were never addressed.
It would be really important to avoid it. Is it really needed in the first place?
Thanks, Ezequiel
For there are many hardware need to use, mt8192 is three and mt8195 is five. Maybe need more to be used in the feature.
Each hardware has independent clk/power/iommu port/irq. Use component interface in prob to get each component's information. Just enable the hardware when need to use it, very convenient and simple.
I found that there are many modules use component to manage hardware information, such as iommu and drm etc.
Many drivers support multiple hardware variants, where each variant has a different number of clocks or interrupts, see for instance struct hantro_variant which allows to expose different codec cores, some having both decoder/encoder, and some having just a decoder.
The component API is mostly used by DRM to aggregate independent subdevices (called components) into an aggregated driver.
For instance, a DRM driver needs to glue together the HDMI, MIPI, and plany controller, or any other hardware arrangement where devices can be described independently.
The component API may look simple but has some issues, it's not easy to debug, and can cause troubles if not used as expected [1]. It's worth making sure you actually need a framework to glue different devices together.
Do you have any other suggestion for this architecture?
Looking at the different patchsets that are posted, it's not clear to me what exactly are the different architectures that you intend to support, can you some documentation which clarifies that?
Thanks, Ezequiel
[1] https://patchwork.kernel.org/project/linux-rockchip/cover/20200120170602.383...