2016-02-23 01:20:48 +08:00
|
|
|
SMI (Smart Multimedia Interface) Common
|
|
|
|
|
|
|
|
The hardware block diagram please check bindings/iommu/mediatek,iommu.txt
|
|
|
|
|
dt-bindings: mediatek: Add binding for mt8183 IOMMU and SMI
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>
2019-08-24 11:01:46 +08:00
|
|
|
Mediatek SMI have two generations of HW architecture, here is the list
|
|
|
|
which generation the SoCs use:
|
|
|
|
generation 1: mt2701 and mt7623.
|
|
|
|
generation 2: mt2712, mt8173 and mt8183.
|
2016-06-08 17:50:57 +08:00
|
|
|
|
|
|
|
There's slight differences between the two SMI, for generation 2, the
|
|
|
|
register which control the iommu port is at each larb's register base. But
|
|
|
|
for generation 1, the register is at smi ao base(smi always on register
|
|
|
|
base). Besides that, the smi async clock should be prepared and enabled for
|
|
|
|
SMI generation 1 to transform the smi clock into emi clock domain, but that is
|
|
|
|
not needed for SMI generation 2.
|
|
|
|
|
2016-02-23 01:20:48 +08:00
|
|
|
Required properties:
|
2016-06-08 17:50:57 +08:00
|
|
|
- compatible : must be one of :
|
|
|
|
"mediatek,mt2701-smi-common"
|
2018-05-24 20:35:31 +08:00
|
|
|
"mediatek,mt2712-smi-common"
|
2018-10-03 17:09:12 +08:00
|
|
|
"mediatek,mt7623-smi-common", "mediatek,mt2701-smi-common"
|
2016-06-08 17:50:57 +08:00
|
|
|
"mediatek,mt8173-smi-common"
|
dt-bindings: mediatek: Add binding for mt8183 IOMMU and SMI
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>
2019-08-24 11:01:46 +08:00
|
|
|
"mediatek,mt8183-smi-common"
|
2016-02-23 01:20:48 +08:00
|
|
|
- reg : the register and size of the SMI block.
|
|
|
|
- power-domains : a phandle to the power domain of this local arbiter.
|
|
|
|
- clocks : Must contain an entry for each entry in clock-names.
|
2016-06-08 17:50:57 +08:00
|
|
|
- clock-names : must contain 3 entries for generation 1 smi HW and 2 entries
|
|
|
|
for generation 2 smi HW as follows:
|
2016-02-23 01:20:48 +08:00
|
|
|
- "apb" : Advanced Peripheral Bus clock, It's the clock for setting
|
|
|
|
the register.
|
|
|
|
- "smi" : It's the clock for transfer data and command.
|
2016-06-08 17:50:57 +08:00
|
|
|
They may be the same if both source clocks are the same.
|
|
|
|
- "async" : asynchronous clock, it help transform the smi clock into the emi
|
|
|
|
clock domain, this clock is only needed by generation 1 smi HW.
|
dt-bindings: mediatek: Add binding for mt8183 IOMMU and SMI
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>
2019-08-24 11:01:46 +08:00
|
|
|
and these 2 option clocks for generation 2 smi HW:
|
|
|
|
- "gals0": the path0 clock of GALS(Global Async Local Sync).
|
|
|
|
- "gals1": the path1 clock of GALS(Global Async Local Sync).
|
|
|
|
Here is the list which has this GALS: mt8183.
|
2016-02-23 01:20:48 +08:00
|
|
|
|
|
|
|
Example:
|
|
|
|
smi_common: smi@14022000 {
|
|
|
|
compatible = "mediatek,mt8173-smi-common";
|
|
|
|
reg = <0 0x14022000 0 0x1000>;
|
|
|
|
power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
|
|
|
|
clocks = <&mmsys CLK_MM_SMI_COMMON>,
|
|
|
|
<&mmsys CLK_MM_SMI_COMMON>;
|
|
|
|
clock-names = "apb", "smi";
|
|
|
|
};
|