Messages in this thread | | | Date | Tue, 30 Jul 2019 15:58:22 +0200 | From | Andrew Lunn <> | Subject | Re: [PATCH 4/4] net: dsa: mv88e6xxx: add PTP support for MV88E6250 family |
| |
> diff --git a/drivers/net/dsa/mv88e6xxx/chip.h b/drivers/net/dsa/mv88e6xxx/chip.h > index 720cace3db4e..64872251e479 100644 > --- a/drivers/net/dsa/mv88e6xxx/chip.h > +++ b/drivers/net/dsa/mv88e6xxx/chip.h > @@ -273,6 +273,10 @@ struct mv88e6xxx_chip { > u16 trig_config; > u16 evcap_config; > u16 enable_count; > + u32 ptp_cc_shift; > + u32 ptp_cc_mult; > + u32 ptp_cc_mult_num; > + u32 ptp_cc_mult_dem;
Hi Hubert
Please add these to mv88e6xxx_ptp_ops. You can create a new one of 6250 which has the different values.
> > /* Per-port timestamping resources. */ > struct mv88e6xxx_port_hwtstamp port_hwtstamp[DSA_MAX_PORTS]; > diff --git a/drivers/net/dsa/mv88e6xxx/ptp.c b/drivers/net/dsa/mv88e6xxx/ptp.c > index 768d256f7c9f..51cdf4712517 100644 > --- a/drivers/net/dsa/mv88e6xxx/ptp.c > +++ b/drivers/net/dsa/mv88e6xxx/ptp.c > @@ -15,11 +15,38 @@ > #include "hwtstamp.h" > #include "ptp.h" > > -/* Raw timestamps are in units of 8-ns clock periods. */ > -#define CC_SHIFT 28 > -#define CC_MULT (8 << CC_SHIFT) > -#define CC_MULT_NUM (1 << 9) > -#define CC_MULT_DEM 15625ULL > +/* The adjfine API clamps ppb between [-32,768,000, 32,768,000], and > + * therefore scaled_ppm between [-2,147,483,648, 2,147,483,647]. > + * Set the maximum supported ppb to a round value smaller than the maximum. > + * > + * Percentually speaking, this is a +/- 0.032x adjustment of the > + * free-running counter (0.968x to 1.032x). > + */ > +#define MV88E6XXX_MAX_ADJ_PPB 32000000 > + > +/* Family MV88E6250: > + * Raw timestamps are in units of 10-ns clock periods. > + * > + * clkadj = scaled_ppm * 10*2^28 / (10^6 * 2^16) > + * simplifies to > + * clkadj = scaled_ppm * 2^7 / 5^5 > + */ > +#define MV88E6250_CC_SHIFT 28 > +#define MV88E6250_CC_MULT (10 << MV88E6250_CC_SHIFT) > +#define MV88E6250_CC_MULT_NUM (1 << 7) > +#define MV88E6250_CC_MULT_DEM 3125ULL > + > +/* Other families: > + * Raw timestamps are in units of 8-ns clock periods. > + * > + * clkadj = scaled_ppm * 8*2^28 / (10^6 * 2^16) > + * simplifies to > + * clkadj = scaled_ppm * 2^9 / 5^6 > + */ > +#define MV88E6XXX_CC_SHIFT 28 > +#define MV88E6XXX_CC_MULT (8 << MV88E6XXX_CC_SHIFT) > +#define MV88E6XXX_CC_MULT_NUM (1 << 9) > +#define MV88E6XXX_CC_MULT_DEM 15625ULL
Nice comments :-)
Andrew
| |