Merge branch 'ti-am65x-cpts-follow-up-dt-bindings-update'
Grygorii Strashko says: ==================== net: ethernet: ti: am65x-cpts: follow up dt bindings update This series is follow update for TI A65x/J721E Common platform time sync (CPTS) driver [1] to implement DT bindings review comments from Rob Herring <robh@kernel.org> [2]. - "reg" and "compatible" properties are made required for CPTS DT nodes which also required to change K3 CPSW driver to use of_platform_device_create() instead of of_platform_populate() for proper CPTS and MDIO initialization - minor DT bindings format changes - K3 CPTS example added to K3 MCU CPSW bindings [1] https://lwn.net/Articles/819313/ [2] https://lwn.net/ml/linux-kernel/20200505040419.GA8509@bogus/ ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
57ea85069c
@ -144,7 +144,7 @@ patternProperties:
|
||||
description:
|
||||
CPSW MDIO bus.
|
||||
|
||||
"^cpts$":
|
||||
"^cpts@[0-9a-f]+":
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: "ti,k3-am654-cpts.yaml#"
|
||||
@ -171,6 +171,8 @@ examples:
|
||||
#include <dt-bindings/pinctrl/k3.h>
|
||||
#include <dt-bindings/soc/ti,sci_pm_domain.h>
|
||||
#include <dt-bindings/net/ti-dp83867.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
mcu_cpsw: ethernet@46000000 {
|
||||
compatible = "ti,am654-cpsw-nuss";
|
||||
@ -229,4 +231,15 @@ examples:
|
||||
ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
|
||||
};
|
||||
};
|
||||
|
||||
cpts@3d000 {
|
||||
compatible = "ti,am65-cpts";
|
||||
reg = <0x0 0x3d000 0x0 0x400>;
|
||||
clocks = <&k3_clks 18 2>;
|
||||
clock-names = "cpts";
|
||||
interrupts-extended = <&gic500 GIC_SPI 858 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "cpts";
|
||||
ti,cpts-ext-ts-inputs = <4>;
|
||||
ti,cpts-periodic-outputs = <2>;
|
||||
};
|
||||
};
|
||||
|
@ -42,7 +42,7 @@ description: |+
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
pattern: "^cpts(@.*|-[0-9a-f])*$"
|
||||
pattern: "^cpts@[0-9a-f]+$"
|
||||
|
||||
compatible:
|
||||
oneOf:
|
||||
@ -52,7 +52,7 @@ properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
description:
|
||||
The physical base address and size of CPTS IO range
|
||||
The physical base address and size of CPTS IO range
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
@ -65,27 +65,27 @@ properties:
|
||||
items:
|
||||
- const: cpts
|
||||
|
||||
interrupts-extended:
|
||||
interrupts:
|
||||
items:
|
||||
- description: CPTS events interrupt
|
||||
|
||||
interrupt-names:
|
||||
items:
|
||||
- const: "cpts"
|
||||
- const: cpts
|
||||
|
||||
ti,cpts-ext-ts-inputs:
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||
maximum: 8
|
||||
description:
|
||||
Number of hardware timestamp push inputs (HWx_TS_PUSH)
|
||||
Number of hardware timestamp push inputs (HWx_TS_PUSH)
|
||||
|
||||
ti,cpts-periodic-outputs:
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||
maximum: 8
|
||||
description:
|
||||
Number of timestamp Generator function outputs (TS_GENFx)
|
||||
Number of timestamp Generator function outputs (TS_GENFx)
|
||||
|
||||
refclk-mux:
|
||||
type: object
|
||||
@ -107,9 +107,11 @@ properties:
|
||||
- clocks
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- interrupts-extended
|
||||
- interrupts
|
||||
- interrupt-names
|
||||
|
||||
additionalProperties: false
|
||||
@ -140,13 +142,4 @@ examples:
|
||||
assigned-clock-parents = <&k3_clks 118 11>;
|
||||
};
|
||||
};
|
||||
- |
|
||||
|
||||
cpts {
|
||||
clocks = <&k3_clks 18 2>;
|
||||
clock-names = "cpts";
|
||||
interrupts-extended = <&gic500 GIC_SPI 858 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "cpts";
|
||||
ti,cpts-ext-ts-inputs = <4>;
|
||||
ti,cpts-periodic-outputs = <2>;
|
||||
};
|
||||
|
@ -248,7 +248,9 @@
|
||||
bus_freq = <1000000>;
|
||||
};
|
||||
|
||||
cpts {
|
||||
cpts@3d000 {
|
||||
compatible = "ti,am65-cpts";
|
||||
reg = <0x0 0x3d000 0x0 0x400>;
|
||||
clocks = <&mcu_cpsw_cpts_mux>;
|
||||
clock-names = "cpts";
|
||||
interrupts-extended = <&gic500 GIC_SPI 570 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -339,7 +339,9 @@
|
||||
bus_freq = <1000000>;
|
||||
};
|
||||
|
||||
cpts {
|
||||
cpts@3d000 {
|
||||
compatible = "ti,am65-cpts";
|
||||
reg = <0x0 0x3d000 0x0 0x400>;
|
||||
clocks = <&k3_clks 18 2>;
|
||||
clock-names = "cpts";
|
||||
interrupts-extended = <&gic500 GIC_SPI 858 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -2031,10 +2031,21 @@ static int am65_cpsw_nuss_probe(struct platform_device *pdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = of_platform_populate(dev->of_node, NULL, NULL, dev);
|
||||
/* We do not want to force this, as in some cases may not have child */
|
||||
if (ret)
|
||||
dev_warn(dev, "populating child nodes err:%d\n", ret);
|
||||
node = of_get_child_by_name(dev->of_node, "mdio");
|
||||
if (!node) {
|
||||
dev_warn(dev, "MDIO node not found\n");
|
||||
} else if (of_device_is_available(node)) {
|
||||
struct platform_device *mdio_pdev;
|
||||
|
||||
mdio_pdev = of_platform_device_create(node, NULL, dev);
|
||||
if (!mdio_pdev) {
|
||||
ret = -ENODEV;
|
||||
goto err_pm_clear;
|
||||
}
|
||||
|
||||
common->mdio_dev = &mdio_pdev->dev;
|
||||
}
|
||||
of_node_put(node);
|
||||
|
||||
am65_cpsw_nuss_get_ver(common);
|
||||
|
||||
@ -2090,7 +2101,8 @@ static int am65_cpsw_nuss_probe(struct platform_device *pdev)
|
||||
return 0;
|
||||
|
||||
err_of_clear:
|
||||
of_platform_depopulate(dev);
|
||||
of_platform_device_destroy(common->mdio_dev, NULL);
|
||||
err_pm_clear:
|
||||
pm_runtime_put_sync(dev);
|
||||
pm_runtime_disable(dev);
|
||||
return ret;
|
||||
@ -2115,7 +2127,7 @@ static int am65_cpsw_nuss_remove(struct platform_device *pdev)
|
||||
*/
|
||||
am65_cpsw_nuss_cleanup_ndev(common);
|
||||
|
||||
of_platform_depopulate(dev);
|
||||
of_platform_device_destroy(common->mdio_dev, NULL);
|
||||
|
||||
pm_runtime_put_sync(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
struct am65_cpts;
|
||||
|
||||
@ -76,6 +77,7 @@ struct am65_cpsw_pdata {
|
||||
|
||||
struct am65_cpsw_common {
|
||||
struct device *dev;
|
||||
struct device *mdio_dev;
|
||||
const struct am65_cpsw_pdata *pdata;
|
||||
|
||||
void __iomem *ss_base;
|
||||
|
Loading…
Reference in New Issue
Block a user