Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00ab94ee authored by Richard Cochran's avatar Richard Cochran Committed by David S. Miller
Browse files

cpts: specify the input clock frequency via DT



This patch adds a way to configure the CPTS input clock scaling factors
via the device tree.

Signed-off-by: default avatarRichard Cochran <richardcochran@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 78ca0b28
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ Required properties:
			  for the specific platform
- slaves		: Specifies number for slaves
- cpts_active_slave	: Specifies the slave to use for time stamping
- cpts_clock_mult	: Numerator to convert input clock ticks into nanoseconds
- cpts_clock_shift	: Denominator to convert input clock ticks into nanoseconds
- slave_reg_ofs		: Specifies slave register offset
- sliver_reg_ofs	: Specifies slave sliver register offset
- phy_id		: Specifies slave phy id
@@ -62,6 +64,8 @@ Examples:
		mac_control = <0x20>;
		slaves = <2>;
		cpts_active_slave = <0>;
		cpts_clock_mult = <0x80000000>;
		cpts_clock_shift = <29>;
		cpsw_emac0: slave@0 {
			slave_reg_ofs = <0x200>;
			sliver_reg_ofs = <0xd80>;
@@ -98,6 +102,8 @@ Examples:
		mac_control = <0x20>;
		slaves = <2>;
		cpts_active_slave = <0>;
		cpts_clock_mult = <0x80000000>;
		cpts_clock_shift = <29>;
		cpsw_emac0: slave@0 {
			slave_reg_ofs = <0x200>;
			sliver_reg_ofs = <0xd80>;
+14 −0
Original line number Diff line number Diff line
@@ -854,6 +854,20 @@ static int cpsw_probe_dt(struct cpsw_platform_data *data,
	}
	data->cpts_active_slave = prop;

	if (of_property_read_u32(node, "cpts_clock_mult", &prop)) {
		pr_err("Missing cpts_clock_mult property in the DT.\n");
		ret = -EINVAL;
		goto error_ret;
	}
	data->cpts_clock_mult = prop;

	if (of_property_read_u32(node, "cpts_clock_shift", &prop)) {
		pr_err("Missing cpts_clock_shift property in the DT.\n");
		ret = -EINVAL;
		goto error_ret;
	}
	data->cpts_clock_shift = prop;

	data->slave_data = kzalloc(sizeof(struct cpsw_slave_data) *
				   data->slaves, GFP_KERNEL);
	if (!data->slave_data) {
+2 −0
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@ struct cpsw_platform_data {
	u32	slaves;		/* number of slave cpgmac ports */
	struct cpsw_slave_data	*slave_data;
	u32	cpts_active_slave; /* time stamping slave */
	u32	cpts_clock_mult;  /* convert input clock ticks to nanoseconds */
	u32	cpts_clock_shift; /* convert input clock ticks to nanoseconds */

	u32	ale_reg_ofs;	/* address lookup engine reg offset */
	u32	ale_entries;	/* ale table size */