diff mbox series

[4/5] dt-bindings: i2c: Add Mediatek MT8183 i2c binding

Message ID 1543843974-4054-5-git-send-email-qii.wang@mediatek.com (mailing list archive)
State New, archived
Headers show
Series add i2c support for mt7629 and mt8183 | expand

Commit Message

Qii Wang (王琪) Dec. 3, 2018, 1:32 p.m. UTC
From: qii wang <qii.wang@mediatek.com>

Add MT8183 i2c binding to binding file. Compare to 2712 i2c
controller, MT8183 has different registers, offsets, clock,
and multi-user function.

Signed-off-by: qii wang <qii.wang@mediatek.com>
---
 Documentation/devicetree/bindings/i2c/i2c-mtk.txt |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Sean Wang Dec. 4, 2018, 8:59 p.m. UTC | #1
On Mon, Dec 3, 2018 at 5:34 AM <qii.wang@mediatek.com> wrote:
>
> From: qii wang <qii.wang@mediatek.com>
>
> Add MT8183 i2c binding to binding file. Compare to 2712 i2c
> controller, MT8183 has different registers, offsets, clock,
> and multi-user function.
>
> Signed-off-by: qii wang <qii.wang@mediatek.com>
> ---
>  Documentation/devicetree/bindings/i2c/i2c-mtk.txt |    7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/i2c/i2c-mtk.txt b/Documentation/devicetree/bindings/i2c/i2c-mtk.txt
> index 7729e57..dfde624 100644
> --- a/Documentation/devicetree/bindings/i2c/i2c-mtk.txt
> +++ b/Documentation/devicetree/bindings/i2c/i2c-mtk.txt
> @@ -12,14 +12,15 @@ Required properties:
>        "mediatek,mt7623-i2c", "mediatek,mt6577-i2c": for MediaTek MT7623
>        "mediatek,mt7629-i2c", "mediatek,mt2712-i2c": for MediaTek mt7629
>        "mediatek,mt8173-i2c": for MediaTek MT8173
> +      "mediatek,mt8183-i2c": for MediaTek MT8183
>    - reg: physical base address of the controller and dma base, length of memory
>      mapped region.
>    - interrupts: interrupt number to the cpu.
>    - clock-div: the fixed value for frequency divider of clock source in i2c
>      module. Each IC may be different.
>    - clocks: clock name from clock manager
> -  - clock-names: Must include "main" and "dma", if enable have-pmic need include
> -    "pmic" extra.
> +  - clock-names: Must include "main" and "dma", "arb" is optional, if enable

if arb is optional, the multi-user function still can work? arb seems
like the clock fed to arbitrating bus when multiple users are
accessing at the same time.

> +    have-pmic need include "pmic" extra.
>
>  Optional properties:
>    - clock-frequency: Frequency in Hz of the bus when transfer, the default value
> @@ -27,6 +28,8 @@ Optional properties:
>    - mediatek,have-pmic: platform can control i2c form special pmic side.
>      Only mt6589 and mt8135 support this feature.
>    - mediatek,use-push-pull: IO config use push-pull mode.
> +  - ch-offset: base reg offset for multi-user.

add a vendor prefix if the property is vendor-specific one.

> +  - mediatek,share-i3c: i3c controller can share i2c function.
>
>  Example:
>
> --
> 1.7.9.5
>
>
> _______________________________________________
> Linux-mediatek mailing list
> Linux-mediatek@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-mediatek
Wolfram Sang Dec. 11, 2018, 8:29 p.m. UTC | #2
> +  - ch-offset: base reg offset for multi-user.

What is "multi-user"? Why can't you add this offset to the reg-property
directly?

> +  - mediatek,share-i3c: i3c controller can share i2c function.

Please explain in more detail? Is this an I3C controller?
Qii Wang (王琪) Dec. 13, 2018, 9:32 a.m. UTC | #3
On Tue, 2018-12-11 at 21:29 +0100, Wolfram Sang wrote:
> > +  - ch-offset: base reg offset for multi-user.
> 
> What is "multi-user"? Why can't you add this offset to the reg-property
> directly?
> 

Thanks for your comment.
There are 3 channel in one MT8183 I3C controller, and every channel can
be used as an I2C controller.
Take the following diagram as example:
If use I3C channels as I2C bus,
1. CH-A/B/C offset are different;
2. If use CH-B or CH-A as I2C, they must config registers which's
address are in CH-A.
 ____________________________________
|     ________                       |
|    |        |<--- offset:0x00      |
|    |  CH-A  |                      |
|    |________|                      |
|    |        |<--- offset:0x100     |
|    |  CH-B  |                      |
|    |________|                      |
|    |        |<--- offset:0x200     |
|    |  CH-C  |                      |
|    |________|                      |
|____________________________________|
        one I3C controller               

Because of CH-B/CH-C depend on CH-A's register, it can't add offset to
reg-property directly.

MT8183 doesn't need to support muti-user according to the latest project
information, and I'll remove this feature from patches.

> > +  - mediatek,share-i3c: i3c controller can share i2c function.
> 
> Please explain in more detail? Is this an I3C controller?
> 

Yes, it is a i3c controller, and it is compatible with i2c. I only use
the feature of i2c, so I need a flag to do some extra settings.
Wolfram Sang Dec. 17, 2018, 11:06 p.m. UTC | #4
> > What is "multi-user"? Why can't you add this offset to the reg-property
> > directly?

...

> MT8183 doesn't need to support muti-user according to the latest project
> information, and I'll remove this feature from patches.

Okay. It will be dropped then, thanks for the heads up!

> > > +  - mediatek,share-i3c: i3c controller can share i2c function.
> > 
> > Please explain in more detail? Is this an I3C controller?
> 
> Yes, it is a i3c controller, and it is compatible with i2c. I only use
> the feature of i2c, so I need a flag to do some extra settings.

Can't you derive this from the compatible? If it is
"mediatek,mt8183-i2c", then you know you need these extra settings?
Qii Wang (王琪) Dec. 18, 2018, 2:35 a.m. UTC | #5
On Tue, 2018-12-18 at 00:06 +0100, Wolfram Sang wrote:
> > > What is "multi-user"? Why can't you add this offset to the reg-property
> > > directly?
> 
> ...
> 
> > MT8183 doesn't need to support muti-user according to the latest project
> > information, and I'll remove this feature from patches.
> 
> Okay. It will be dropped then, thanks for the heads up!
> 
> > > > +  - mediatek,share-i3c: i3c controller can share i2c function.
> > > 
> > > Please explain in more detail? Is this an I3C controller?
> > 
> > Yes, it is a i3c controller, and it is compatible with i2c. I only use
> > the feature of i2c, so I need a flag to do some extra settings.
> 
> Can't you derive this from the compatible? If it is
> "mediatek,mt8183-i2c", then you know you need these extra settings?
> 

Not all channels are i3c controllers in MT8183. only i3c controller need
some extra settings.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/i2c/i2c-mtk.txt b/Documentation/devicetree/bindings/i2c/i2c-mtk.txt
index 7729e57..dfde624 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-mtk.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-mtk.txt
@@ -12,14 +12,15 @@  Required properties:
       "mediatek,mt7623-i2c", "mediatek,mt6577-i2c": for MediaTek MT7623
       "mediatek,mt7629-i2c", "mediatek,mt2712-i2c": for MediaTek mt7629
       "mediatek,mt8173-i2c": for MediaTek MT8173
+      "mediatek,mt8183-i2c": for MediaTek MT8183
   - reg: physical base address of the controller and dma base, length of memory
     mapped region.
   - interrupts: interrupt number to the cpu.
   - clock-div: the fixed value for frequency divider of clock source in i2c
     module. Each IC may be different.
   - clocks: clock name from clock manager
-  - clock-names: Must include "main" and "dma", if enable have-pmic need include
-    "pmic" extra.
+  - clock-names: Must include "main" and "dma", "arb" is optional, if enable
+    have-pmic need include "pmic" extra.
 
 Optional properties:
   - clock-frequency: Frequency in Hz of the bus when transfer, the default value
@@ -27,6 +28,8 @@  Optional properties:
   - mediatek,have-pmic: platform can control i2c form special pmic side.
     Only mt6589 and mt8135 support this feature.
   - mediatek,use-push-pull: IO config use push-pull mode.
+  - ch-offset: base reg offset for multi-user.
+  - mediatek,share-i3c: i3c controller can share i2c function.
 
 Example: