[PATCH v3 2/2] ptp: Add a ptp clock driver for IDT ClockMatrix.

2019-10-21 Thread vincent . cheng . xh
From: Vincent Cheng 

The IDT ClockMatrix (TM) family includes integrated devices that provide
eight PLL channels.  Each PLL channel can be independently configured as a
frequency synthesizer, jitter attenuator, digitally controlled
oscillator (DCO), or a digital phase lock loop (DPLL).  Typically
these devices are used as timing references and clock sources for PTP
applications.  This patch adds support for the device.

Co-developed-by: Richard Cochran 
Signed-off-by: Richard Cochran 
Signed-off-by: Vincent Cheng 
---
Changes since v2:
 - As suggested by Andrew Lunn:
   1. 'err' is an int, replace s32 with int.
   2. Return -EINVAL instead of -1
   3. Remove indirection that is used only for unit testing.

 - As suggested by Rob Herring:
   1. Remove '-ptp' from compatible string
   2. Replace wildcard 'x' with the part numbers.

Changes since v1:
 - Reported-by: kbuild test robot 
   1. Fix ARCH=i386 build failure: ERROR: "__divdi3" undefined!

 - As suggested by Andrew Lunn:
   1. Replace pr_err with dev_err because we are an i2c device
   2. Replace set_current_state()+schedule_timeout() with
  msleep_interruptable()
   3. Downgrade pr_info to dev_dbg where appropriate
---
 drivers/ptp/Kconfig   |   12 +
 drivers/ptp/Makefile  |1 +
 drivers/ptp/idt8a340_reg.h|  659 +++
 drivers/ptp/ptp_clockmatrix.c | 1424 +
 drivers/ptp/ptp_clockmatrix.h |  104 +++
 5 files changed, 2200 insertions(+)
 create mode 100644 drivers/ptp/idt8a340_reg.h
 create mode 100644 drivers/ptp/ptp_clockmatrix.c
 create mode 100644 drivers/ptp/ptp_clockmatrix.h

diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig
index 0517272..c48ad23 100644
--- a/drivers/ptp/Kconfig
+++ b/drivers/ptp/Kconfig
@@ -119,4 +119,16 @@ config PTP_1588_CLOCK_KVM
  To compile this driver as a module, choose M here: the module
  will be called ptp_kvm.
 
+config PTP_1588_CLOCK_IDTCM
+   tristate "IDT CLOCKMATRIX as PTP clock"
+   select PTP_1588_CLOCK
+   default n
+   help
+ This driver adds support for using IDT CLOCKMATRIX(TM) as a PTP
+ clock. This clock is only useful if your time stamping MAC
+ is connected to the IDT chip.
+
+ To compile this driver as a module, choose M here: the module
+ will be called ptp_clockmatrix.
+
 endmenu
diff --git a/drivers/ptp/Makefile b/drivers/ptp/Makefile
index 677d1d1..69a06f8 100644
--- a/drivers/ptp/Makefile
+++ b/drivers/ptp/Makefile
@@ -12,3 +12,4 @@ obj-$(CONFIG_PTP_1588_CLOCK_KVM)  += ptp_kvm.o
 obj-$(CONFIG_PTP_1588_CLOCK_QORIQ) += ptp-qoriq.o
 ptp-qoriq-y+= ptp_qoriq.o
 ptp-qoriq-$(CONFIG_DEBUG_FS)   += ptp_qoriq_debugfs.o
+obj-$(CONFIG_PTP_1588_CLOCK_IDTCM) += ptp_clockmatrix.o
\ No newline at end of file
diff --git a/drivers/ptp/idt8a340_reg.h b/drivers/ptp/idt8a340_reg.h
new file mode 100644
index 000..9263bc3
--- /dev/null
+++ b/drivers/ptp/idt8a340_reg.h
@@ -0,0 +1,659 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/* idt8a340_reg.h
+ *
+ * Originally generated by regen.tcl on Thu Feb 14 19:23:44 PST 2019
+ * https://github.com/richardcochran/regen
+ *
+ * Hand modified to include some HW registers.
+ * Based on 4.8.0, SCSR rev C commit a03c7ae5
+ */
+#ifndef HAVE_IDT8A340_REG
+#define HAVE_IDT8A340_REG
+
+#define PAGE_ADDR_BASE0x
+#define PAGE_ADDR 0x00fc
+
+#define HW_REVISION   0x8180
+#define REV_ID0x007a
+
+#define HW_DPLL_0 (0x8a00)
+#define HW_DPLL_1 (0x8b00)
+#define HW_DPLL_2 (0x8c00)
+#define HW_DPLL_3 (0x8d00)
+
+#define HW_DPLL_TOD_SW_TRIG_ADDR__0   (0x080)
+#define HW_DPLL_TOD_CTRL_1(0x089)
+#define HW_DPLL_TOD_CTRL_2(0x08A)
+#define HW_DPLL_TOD_OVR__0(0x098)
+#define HW_DPLL_TOD_OUT_0__0  (0x0B0)
+
+#define HW_Q0_Q1_CH_SYNC_CTRL_0   (0xa740)
+#define HW_Q0_Q1_CH_SYNC_CTRL_1   (0xa741)
+#define HW_Q2_Q3_CH_SYNC_CTRL_0   (0xa742)
+#define HW_Q2_Q3_CH_SYNC_CTRL_1   (0xa743)
+#define HW_Q4_Q5_CH_SYNC_CTRL_0   (0xa744)
+#define HW_Q4_Q5_CH_SYNC_CTRL_1   (0xa745)
+#define HW_Q6_Q7_CH_SYNC_CTRL_0   (0xa746)
+#define HW_Q6_Q7_CH_SYNC_CTRL_1   (0xa747)
+#define HW_Q8_CH_SYNC_CTRL_0  (0xa748)
+#define HW_Q8_CH_SYNC_CTRL_1  (0xa749)
+#define HW_Q9_CH_SYNC_CTRL_0  (0xa74a)
+#define HW_Q9_CH_SYNC_CTRL_1  (0xa74b)
+#define HW_Q10_CH_SYNC_CTRL_0 (0xa74c)
+#define HW_Q10_CH_SYNC_CTRL_1 (0xa74d)
+#define HW_Q11_CH_SYNC_CTRL_0 (0xa74e)
+#define HW_Q11_CH_SYNC_CTRL_1 (0xa74f)
+
+#define SYNC_SOURCE_DPLL0_TOD_PPS  0x14
+#define SYNC_SOURCE_DPLL1_TOD_PPS  0x15
+#define SYNC_SOURCE_DPLL2_TOD_

[PATCH v3 1/2] dt-bindings: ptp: Add bindings doc for IDT ClockMatrix based PTP clock

2019-10-21 Thread vincent . cheng . xh
From: Vincent Cheng 

Add device tree binding doc for the IDT ClockMatrix PTP clock.

Co-developed-by: Richard Cochran 
Signed-off-by: Richard Cochran 
Signed-off-by: Vincent Cheng 
---

Changes since v2:
 - As suggested by Rob Herring:
   1. Replace with DT schema
   2. Remove '-ptp' from compatible string
   3. Replace wildcard 'x' with the part numbers.

Changes since v1:
 - No changes
---
 .../devicetree/bindings/ptp/ptp-idtcm.yaml | 63 ++
 1 file changed, 63 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/ptp/ptp-idtcm.yaml

diff --git a/Documentation/devicetree/bindings/ptp/ptp-idtcm.yaml 
b/Documentation/devicetree/bindings/ptp/ptp-idtcm.yaml
new file mode 100644
index 000..d3771e0
--- /dev/null
+++ b/Documentation/devicetree/bindings/ptp/ptp-idtcm.yaml
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ptp/ptp-idtcm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: IDT ClockMatrix (TM) PTP Clock Device Tree Bindings
+
+maintainers:
+  - Vincent Cheng 
+
+properties:
+  compatible:
+enum:
+  # For System Synchronizer
+  - idt,8a34000
+  - idt,8a34001
+  - idt,8a34002
+  - idt,8a34003
+  - idt,8a34004
+  - idt,8a34005
+  - idt,8a34006
+  - idt,8a34007
+  - idt,8a34008
+  - idt,8a34009
+  # For Port Synchronizer
+  - idt,8a34010
+  - idt,8a34011
+  - idt,8a34012
+  - idt,8a34013
+  - idt,8a34014
+  - idt,8a34015
+  - idt,8a34016
+  - idt,8a34017
+  - idt,8a34018
+  - idt,8a34019
+  # For Universal Frequency Translator (UFT)
+  - idt,8a34040
+  - idt,8a34041
+  - idt,8a34042
+  - idt,8a34043
+  - idt,8a34044
+  - idt,8a34045
+  - idt,8a34046
+  - idt,8a34047
+  - idt,8a34048
+  - idt,8a34049
+
+  reg:
+maxItems: 1
+description:
+  I2C slave address of the device.
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+phc@5b {
+  compatible = "idt,8a34000";
+  reg = <0x5b>;
+};
-- 
2.7.4



[PATCH v2 2/2] ptp: Add a ptp clock driver for IDT ClockMatrix.

2019-09-26 Thread vincent . cheng . xh
From: Vincent Cheng 

The IDT ClockMatrix (TM) family includes integrated devices that provide
eight PLL channels.  Each PLL channel can be independently configured as a
frequency synthesizer, jitter attenuator, digitally controlled
oscillator (DCO), or a digital phase lock loop (DPLL).  Typically
these devices are used as timing references and clock sources for PTP
applications.  This patch adds support for the device.

Co-developed-by: Richard Cochran 
Signed-off-by: Richard Cochran 
Signed-off-by: Vincent Cheng 
---
Changes since v1:
 - Reported-by: kbuild test robot 
   Fix ARCH=i386 build failure: ERROR: "__divdi3" undefined!

 - As suggested by Andrew Lunn:
   1. Replace pr_err with dev_err because we are an i2c device
   2. Replace set_current_state()+schedule_timeout() with
  msleep_interruptable()
   3. Downgrade pr_info to dev_dbg where appropriate
---
 drivers/ptp/Kconfig   |   12 +
 drivers/ptp/Makefile  |1 +
 drivers/ptp/idt8a340_reg.h|  659 
 drivers/ptp/ptp_clockmatrix.c | 1385 +
 drivers/ptp/ptp_clockmatrix.h |  123 
 5 files changed, 2180 insertions(+)
 create mode 100644 drivers/ptp/idt8a340_reg.h
 create mode 100644 drivers/ptp/ptp_clockmatrix.c
 create mode 100644 drivers/ptp/ptp_clockmatrix.h

diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig
index 960961f..16c7c90 100644
--- a/drivers/ptp/Kconfig
+++ b/drivers/ptp/Kconfig
@@ -119,4 +119,16 @@ config PTP_1588_CLOCK_KVM
  To compile this driver as a module, choose M here: the module
  will be called ptp_kvm.
 
+config PTP_1588_CLOCK_IDTCM
+   tristate "IDT CLOCKMATRIX as PTP clock"
+   select PTP_1588_CLOCK
+   default n
+   help
+ This driver adds support for using IDT CLOCKMATRIX(TM) as a PTP
+ clock. This clock is only useful if your time stamping MAC
+ is connected to the IDT chip.
+
+ To compile this driver as a module, choose M here: the module
+ will be called ptp_clockmatrix.
+
 endmenu
diff --git a/drivers/ptp/Makefile b/drivers/ptp/Makefile
index 677d1d1..69a06f8 100644
--- a/drivers/ptp/Makefile
+++ b/drivers/ptp/Makefile
@@ -12,3 +12,4 @@ obj-$(CONFIG_PTP_1588_CLOCK_KVM)  += ptp_kvm.o
 obj-$(CONFIG_PTP_1588_CLOCK_QORIQ) += ptp-qoriq.o
 ptp-qoriq-y+= ptp_qoriq.o
 ptp-qoriq-$(CONFIG_DEBUG_FS)   += ptp_qoriq_debugfs.o
+obj-$(CONFIG_PTP_1588_CLOCK_IDTCM) += ptp_clockmatrix.o
\ No newline at end of file
diff --git a/drivers/ptp/idt8a340_reg.h b/drivers/ptp/idt8a340_reg.h
new file mode 100644
index 000..9263bc3
--- /dev/null
+++ b/drivers/ptp/idt8a340_reg.h
@@ -0,0 +1,659 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/* idt8a340_reg.h
+ *
+ * Originally generated by regen.tcl on Thu Feb 14 19:23:44 PST 2019
+ * https://github.com/richardcochran/regen
+ *
+ * Hand modified to include some HW registers.
+ * Based on 4.8.0, SCSR rev C commit a03c7ae5
+ */
+#ifndef HAVE_IDT8A340_REG
+#define HAVE_IDT8A340_REG
+
+#define PAGE_ADDR_BASE0x
+#define PAGE_ADDR 0x00fc
+
+#define HW_REVISION   0x8180
+#define REV_ID0x007a
+
+#define HW_DPLL_0 (0x8a00)
+#define HW_DPLL_1 (0x8b00)
+#define HW_DPLL_2 (0x8c00)
+#define HW_DPLL_3 (0x8d00)
+
+#define HW_DPLL_TOD_SW_TRIG_ADDR__0   (0x080)
+#define HW_DPLL_TOD_CTRL_1(0x089)
+#define HW_DPLL_TOD_CTRL_2(0x08A)
+#define HW_DPLL_TOD_OVR__0(0x098)
+#define HW_DPLL_TOD_OUT_0__0  (0x0B0)
+
+#define HW_Q0_Q1_CH_SYNC_CTRL_0   (0xa740)
+#define HW_Q0_Q1_CH_SYNC_CTRL_1   (0xa741)
+#define HW_Q2_Q3_CH_SYNC_CTRL_0   (0xa742)
+#define HW_Q2_Q3_CH_SYNC_CTRL_1   (0xa743)
+#define HW_Q4_Q5_CH_SYNC_CTRL_0   (0xa744)
+#define HW_Q4_Q5_CH_SYNC_CTRL_1   (0xa745)
+#define HW_Q6_Q7_CH_SYNC_CTRL_0   (0xa746)
+#define HW_Q6_Q7_CH_SYNC_CTRL_1   (0xa747)
+#define HW_Q8_CH_SYNC_CTRL_0  (0xa748)
+#define HW_Q8_CH_SYNC_CTRL_1  (0xa749)
+#define HW_Q9_CH_SYNC_CTRL_0  (0xa74a)
+#define HW_Q9_CH_SYNC_CTRL_1  (0xa74b)
+#define HW_Q10_CH_SYNC_CTRL_0 (0xa74c)
+#define HW_Q10_CH_SYNC_CTRL_1 (0xa74d)
+#define HW_Q11_CH_SYNC_CTRL_0 (0xa74e)
+#define HW_Q11_CH_SYNC_CTRL_1 (0xa74f)
+
+#define SYNC_SOURCE_DPLL0_TOD_PPS  0x14
+#define SYNC_SOURCE_DPLL1_TOD_PPS  0x15
+#define SYNC_SOURCE_DPLL2_TOD_PPS  0x16
+#define SYNC_SOURCE_DPLL3_TOD_PPS  0x17
+
+#define SYNCTRL1_MASTER_SYNC_RST   BIT(7)
+#define SYNCTRL1_MASTER_SYNC_TRIG  BIT(5)
+#define SYNCTRL1_TOD_SYNC_TRIG BIT(4)
+#define SYNCTRL1_FBDIV_FRAME_SYNC_TRIG BIT(3)
+#define SYNCTRL1_FBDIV_SYNC_TRIG   BIT(2)
+#define SYNCTRL1_Q1_DI

[PATCH v2 1/2] dt-bindings: ptp: Add bindings doc for IDT ClockMatrix based PTP clock

2019-09-26 Thread vincent . cheng . xh
From: Vincent Cheng 

Add device tree binding doc for the IDT ClockMatrix PTP clock driver.

Co-developed-by: Richard Cochran 
Signed-off-by: Richard Cochran 
Signed-off-by: Vincent Cheng 
---

Changes since v1:
 - No changes
---
 Documentation/devicetree/bindings/ptp/ptp-idtcm.txt | 15 +++
 1 file changed, 15 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/ptp/ptp-idtcm.txt

diff --git a/Documentation/devicetree/bindings/ptp/ptp-idtcm.txt 
b/Documentation/devicetree/bindings/ptp/ptp-idtcm.txt
new file mode 100644
index 000..4eaa34d
--- /dev/null
+++ b/Documentation/devicetree/bindings/ptp/ptp-idtcm.txt
@@ -0,0 +1,15 @@
+* IDT ClockMatrix (TM) PTP clock
+
+Required properties:
+
+  - compatible  Should be "idt,8a3400x-ptp" for System Synchronizer
+Should be "idt,8a3401x-ptp" for Port Synchronizer
+Should be "idt,8a3404x-ptp" for Universal Frequency Translator 
(UFT)
+  - reg I2C slave address of the device
+
+Example:
+
+   phc@5b {
+   compatible = "idt,8a3400x-ptp";
+   reg = <0x5b>;
+   };
-- 
2.7.4



[PATCH 2/2] ptp: Add a ptp clock driver for IDT ClockMatrix.

2019-09-18 Thread vincent . cheng . xh
From: Vincent Cheng 

The IDT ClockMatrix (TM) family includes integrated devices that provide
eight PLL channels.  Each PLL channel can be independently configured as a
frequency synthesizer, jitter attenuator, digitally controlled
oscillator (DCO), or a digital phase lock loop (DPLL).  Typically
these devices are used as timing references and clock sources for PTP
applications.  This patch adds support for the device.

Co-developed-by: Richard Cochran 
Signed-off-by: Richard Cochran 
Signed-off-by: Vincent Cheng 
---
 drivers/ptp/Kconfig   |   12 +
 drivers/ptp/Makefile  |1 +
 drivers/ptp/idt8a340_reg.h|  659 
 drivers/ptp/ptp_clockmatrix.c | 1384 +
 drivers/ptp/ptp_clockmatrix.h |  123 
 5 files changed, 2179 insertions(+)
 create mode 100644 drivers/ptp/idt8a340_reg.h
 create mode 100644 drivers/ptp/ptp_clockmatrix.c
 create mode 100644 drivers/ptp/ptp_clockmatrix.h

diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig
index 960961f..16c7c90 100644
--- a/drivers/ptp/Kconfig
+++ b/drivers/ptp/Kconfig
@@ -119,4 +119,16 @@ config PTP_1588_CLOCK_KVM
  To compile this driver as a module, choose M here: the module
  will be called ptp_kvm.
 
+config PTP_1588_CLOCK_IDTCM
+   tristate "IDT CLOCKMATRIX as PTP clock"
+   select PTP_1588_CLOCK
+   default n
+   help
+ This driver adds support for using IDT CLOCKMATRIX(TM) as a PTP
+ clock. This clock is only useful if your time stamping MAC
+ is connected to the IDT chip.
+
+ To compile this driver as a module, choose M here: the module
+ will be called ptp_clockmatrix.
+
 endmenu
diff --git a/drivers/ptp/Makefile b/drivers/ptp/Makefile
index 677d1d1..9791ba9 100644
--- a/drivers/ptp/Makefile
+++ b/drivers/ptp/Makefile
@@ -12,3 +12,4 @@ obj-$(CONFIG_PTP_1588_CLOCK_KVM)  += ptp_kvm.o
 obj-$(CONFIG_PTP_1588_CLOCK_QORIQ) += ptp-qoriq.o
 ptp-qoriq-y+= ptp_qoriq.o
 ptp-qoriq-$(CONFIG_DEBUG_FS)   += ptp_qoriq_debugfs.o
+obj-$(CONFIG_PTP_1588_CLOCK_IDTCM) += ptp_clockmatrix.o
diff --git a/drivers/ptp/idt8a340_reg.h b/drivers/ptp/idt8a340_reg.h
new file mode 100644
index 000..9263bc3
--- /dev/null
+++ b/drivers/ptp/idt8a340_reg.h
@@ -0,0 +1,659 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/* idt8a340_reg.h
+ *
+ * Originally generated by regen.tcl on Thu Feb 14 19:23:44 PST 2019
+ * https://github.com/richardcochran/regen
+ *
+ * Hand modified to include some HW registers.
+ * Based on 4.8.0, SCSR rev C commit a03c7ae5
+ */
+#ifndef HAVE_IDT8A340_REG
+#define HAVE_IDT8A340_REG
+
+#define PAGE_ADDR_BASE0x
+#define PAGE_ADDR 0x00fc
+
+#define HW_REVISION   0x8180
+#define REV_ID0x007a
+
+#define HW_DPLL_0 (0x8a00)
+#define HW_DPLL_1 (0x8b00)
+#define HW_DPLL_2 (0x8c00)
+#define HW_DPLL_3 (0x8d00)
+
+#define HW_DPLL_TOD_SW_TRIG_ADDR__0   (0x080)
+#define HW_DPLL_TOD_CTRL_1(0x089)
+#define HW_DPLL_TOD_CTRL_2(0x08A)
+#define HW_DPLL_TOD_OVR__0(0x098)
+#define HW_DPLL_TOD_OUT_0__0  (0x0B0)
+
+#define HW_Q0_Q1_CH_SYNC_CTRL_0   (0xa740)
+#define HW_Q0_Q1_CH_SYNC_CTRL_1   (0xa741)
+#define HW_Q2_Q3_CH_SYNC_CTRL_0   (0xa742)
+#define HW_Q2_Q3_CH_SYNC_CTRL_1   (0xa743)
+#define HW_Q4_Q5_CH_SYNC_CTRL_0   (0xa744)
+#define HW_Q4_Q5_CH_SYNC_CTRL_1   (0xa745)
+#define HW_Q6_Q7_CH_SYNC_CTRL_0   (0xa746)
+#define HW_Q6_Q7_CH_SYNC_CTRL_1   (0xa747)
+#define HW_Q8_CH_SYNC_CTRL_0  (0xa748)
+#define HW_Q8_CH_SYNC_CTRL_1  (0xa749)
+#define HW_Q9_CH_SYNC_CTRL_0  (0xa74a)
+#define HW_Q9_CH_SYNC_CTRL_1  (0xa74b)
+#define HW_Q10_CH_SYNC_CTRL_0 (0xa74c)
+#define HW_Q10_CH_SYNC_CTRL_1 (0xa74d)
+#define HW_Q11_CH_SYNC_CTRL_0 (0xa74e)
+#define HW_Q11_CH_SYNC_CTRL_1 (0xa74f)
+
+#define SYNC_SOURCE_DPLL0_TOD_PPS  0x14
+#define SYNC_SOURCE_DPLL1_TOD_PPS  0x15
+#define SYNC_SOURCE_DPLL2_TOD_PPS  0x16
+#define SYNC_SOURCE_DPLL3_TOD_PPS  0x17
+
+#define SYNCTRL1_MASTER_SYNC_RST   BIT(7)
+#define SYNCTRL1_MASTER_SYNC_TRIG  BIT(5)
+#define SYNCTRL1_TOD_SYNC_TRIG BIT(4)
+#define SYNCTRL1_FBDIV_FRAME_SYNC_TRIG BIT(3)
+#define SYNCTRL1_FBDIV_SYNC_TRIG   BIT(2)
+#define SYNCTRL1_Q1_DIV_SYNC_TRIG  BIT(1)
+#define SYNCTRL1_Q0_DIV_SYNC_TRIG  BIT(0)
+
+#define RESET_CTRL0xc000
+#define SM_RESET  0x0012
+#define SM_RESET_CMD  0x5A
+
+#define GENERAL_STATUS0xc014
+#define HW_REV_ID 0x000A
+#define BOND_ID   0x000B
+#define 

[PATCH 1/2] dt-bindings: ptp: Add binding doc for IDT ClockMatrix based PTP clock

2019-09-18 Thread vincent . cheng . xh
From: Vincent Cheng 

Add device tree binding doc for the IDT ClockMatrix PTP clock driver.

Signed-off-by: Vincent Cheng 
---
 Documentation/devicetree/bindings/ptp/ptp-idtcm.txt | 15 +++
 1 file changed, 15 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/ptp/ptp-idtcm.txt

diff --git a/Documentation/devicetree/bindings/ptp/ptp-idtcm.txt 
b/Documentation/devicetree/bindings/ptp/ptp-idtcm.txt
new file mode 100644
index 000..4eaa34d
--- /dev/null
+++ b/Documentation/devicetree/bindings/ptp/ptp-idtcm.txt
@@ -0,0 +1,15 @@
+* IDT ClockMatrix (TM) PTP clock
+
+Required properties:
+
+  - compatible  Should be "idt,8a3400x-ptp" for System Synchronizer
+Should be "idt,8a3401x-ptp" for Port Synchronizer
+Should be "idt,8a3404x-ptp" for Universal Frequency Translator 
(UFT)
+  - reg I2C slave address of the device
+
+Example:
+
+   phc@5b {
+   compatible = "idt,8a3400x-ptp";
+   reg = <0x5b>;
+   };
-- 
2.7.4