mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-25 12:04:46 +08:00
29746d0125
This patch adds decriptions for mt8183 IOMMU and SMI. mt8183 has only one M4U like mt8173 and is also MTK IOMMU gen2 which uses ARM Short-Descriptor translation table format. The mt8183 M4U-SMI HW diagram is as below: EMI | M4U | ---------- | | gals0-rx gals1-rx | | | | gals0-tx gals1-tx | | ------------ SMI Common ------------ | +-----+-----+--------+-----+-----+-------+-------+ | | | | | | | | | | gals-rx gals-rx | gals-rx gals-rx gals-rx | | | | | | | | | | | | | | | | | | gals-tx gals-tx | gals-tx gals-tx gals-tx | | | | | | | | larb0 larb1 IPU0 IPU1 larb4 larb5 larb6 CCU disp vdec img cam venc img cam All the connections are HW fixed, SW can NOT adjust it. Compared with mt8173, we add a GALS(Global Async Local Sync) module between SMI-common and M4U, and additional GALS between larb2/3/5/6 and SMI-common. GALS can help synchronize for the modules in different clock frequency, it can be seen as a "asynchronous fifo". GALS can only help transfer the command/data while it doesn't have the configuring register, thus it has the special "smi" clock and it doesn't have the "apb" clock. From the diagram above, we add "gals0" and "gals1" clocks for smi-common and add a "gals" clock for smi-larb. >From the diagram above, IPU0/IPU1(Image Processor Unit) and CCU(Camera Control Unit) is connected with smi-common directly, we can take them as "larb2", "larb3" and "larb7", and their register spaces are different with the normal larb. Signed-off-by: Yong Wu <yong.wu@mediatek.com> Reviewed-by: Rob Herring <robh@kernel.org> Reviewed-by: Evan Green <evgreen@chromium.org> Signed-off-by: Joerg Roedel <jroedel@suse.de>
49 lines
1.6 KiB
Plaintext
49 lines
1.6 KiB
Plaintext
SMI (Smart Multimedia Interface) Local Arbiter
|
|
|
|
The hardware block diagram please check bindings/iommu/mediatek,iommu.txt
|
|
|
|
Required properties:
|
|
- compatible : must be one of :
|
|
"mediatek,mt2701-smi-larb"
|
|
"mediatek,mt2712-smi-larb"
|
|
"mediatek,mt7623-smi-larb", "mediatek,mt2701-smi-larb"
|
|
"mediatek,mt8173-smi-larb"
|
|
"mediatek,mt8183-smi-larb"
|
|
- reg : the register and size of this local arbiter.
|
|
- mediatek,smi : a phandle to the smi_common node.
|
|
- power-domains : a phandle to the power domain of this local arbiter.
|
|
- clocks : Must contain an entry for each entry in clock-names.
|
|
- clock-names: must contain 2 entries, as follows:
|
|
- "apb" : Advanced Peripheral Bus clock, It's the clock for setting
|
|
the register.
|
|
- "smi" : It's the clock for transfer data and command.
|
|
and this optional clock name:
|
|
- "gals": the clock for GALS(Global Async Local Sync).
|
|
Here is the list which has this GALS: mt8183.
|
|
|
|
Required property for mt2701, mt2712 and mt7623:
|
|
- mediatek,larb-id :the hardware id of this larb.
|
|
|
|
Example:
|
|
larb1: larb@16010000 {
|
|
compatible = "mediatek,mt8173-smi-larb";
|
|
reg = <0 0x16010000 0 0x1000>;
|
|
mediatek,smi = <&smi_common>;
|
|
power-domains = <&scpsys MT8173_POWER_DOMAIN_VDEC>;
|
|
clocks = <&vdecsys CLK_VDEC_CKEN>,
|
|
<&vdecsys CLK_VDEC_LARB_CKEN>;
|
|
clock-names = "apb", "smi";
|
|
};
|
|
|
|
Example for mt2701:
|
|
larb0: larb@14010000 {
|
|
compatible = "mediatek,mt2701-smi-larb";
|
|
reg = <0 0x14010000 0 0x1000>;
|
|
mediatek,smi = <&smi_common>;
|
|
mediatek,larb-id = <0>;
|
|
clocks = <&mmsys CLK_MM_SMI_LARB0>,
|
|
<&mmsys CLK_MM_SMI_LARB0>;
|
|
clock-names = "apb", "smi";
|
|
power-domains = <&scpsys MT2701_POWER_DOMAIN_DISP>;
|
|
};
|