mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 13:34:27 -04:00 
			
		
		
		
	Add patches for linux-5.4. The patches are from NXP LSDK-20.04 release which was tagged LSDK-20.04-V5.4. https://source.codeaurora.org/external/qoriq/qoriq-components/linux/ For boards LS1021A-IOT, and Traverse-LS1043 which are not involved in LSDK, port the dts patches from 4.14. The patches are sorted into the following categories: 301-arch-xxxx 302-dts-xxxx 303-core-xxxx 701-net-xxxx 801-audio-xxxx 802-can-xxxx 803-clock-xxxx 804-crypto-xxxx 805-display-xxxx 806-dma-xxxx 807-gpio-xxxx 808-i2c-xxxx 809-jailhouse-xxxx 810-keys-xxxx 811-kvm-xxxx 812-pcie-xxxx 813-pm-xxxx 814-qe-xxxx 815-sata-xxxx 816-sdhc-xxxx 817-spi-xxxx 818-thermal-xxxx 819-uart-xxxx 820-usb-xxxx 821-vfio-xxxx Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
		
			
				
	
	
		
			393 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			393 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 0738b02f733717693226db401784e884a0714d41 Mon Sep 17 00:00:00 2001
 | |
| From: Yangbo Lu <yangbo.lu@nxp.com>
 | |
| Date: Wed, 31 Oct 2018 16:59:01 +0800
 | |
| Subject: [PATCH] sdk_dpaa: remove ptp clock driver
 | |
| 
 | |
| Removed dpaa_ptp driver since we could use common
 | |
| ptp_qoriq driver in drivers/ptp/ instead.
 | |
| 
 | |
| Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 | |
| ---
 | |
|  drivers/net/ethernet/freescale/sdk_dpaa/Makefile   |   1 -
 | |
|  drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h |  10 -
 | |
|  .../ethernet/freescale/sdk_dpaa/dpaa_eth_common.c  |  21 --
 | |
|  drivers/net/ethernet/freescale/sdk_dpaa/dpaa_ptp.c | 291 ---------------------
 | |
|  drivers/net/ethernet/freescale/sdk_dpaa/mac.h      |   3 +-
 | |
|  5 files changed, 1 insertion(+), 325 deletions(-)
 | |
|  delete mode 100644 drivers/net/ethernet/freescale/sdk_dpaa/dpaa_ptp.c
 | |
| 
 | |
| --- a/drivers/net/ethernet/freescale/sdk_dpaa/Makefile
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_dpaa/Makefile
 | |
| @@ -9,7 +9,6 @@ include $(srctree)/drivers/net/ethernet/
 | |
|  ccflags-y += -I$(NET_DPA)
 | |
|  
 | |
|  obj-$(CONFIG_FSL_SDK_DPAA_ETH) += fsl_mac.o fsl_dpa.o
 | |
| -obj-$(CONFIG_PTP_1588_CLOCK_DPAA) += dpaa_ptp.o
 | |
|  
 | |
|  fsl_dpa-objs += dpaa_ethtool.o dpaa_eth_sysfs.o dpaa_eth.o dpaa_eth_sg.o dpaa_eth_common.o
 | |
|  ifeq ($(CONFIG_FSL_DPAA_DBG_LOOP),y)
 | |
| --- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h
 | |
| @@ -646,16 +646,6 @@ static inline void _dpa_assign_wq(struct
 | |
|  #define dpa_get_queue_mapping(skb) skb_get_queue_mapping(skb)
 | |
|  #endif
 | |
|  
 | |
| -#ifdef CONFIG_PTP_1588_CLOCK_DPAA
 | |
| -struct ptp_priv_s {
 | |
| -	struct device_node *node;
 | |
| -	struct platform_device *of_dev;
 | |
| -	struct ptp_clock *clock;
 | |
| -	struct mac_device *mac_dev;
 | |
| -};
 | |
| -extern struct ptp_priv_s ptp_priv;
 | |
| -#endif
 | |
| -
 | |
|  static inline void _dpa_bp_free_pf(void *addr)
 | |
|  {
 | |
|  	put_page(virt_to_head_page(addr));
 | |
| --- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_common.c
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_common.c
 | |
| @@ -55,10 +55,6 @@
 | |
|  /* Size in bytes of the FQ taildrop threshold */
 | |
|  #define DPA_FQ_TD		0x200000
 | |
|  
 | |
| -#ifdef CONFIG_PTP_1588_CLOCK_DPAA
 | |
| -struct ptp_priv_s ptp_priv;
 | |
| -#endif
 | |
| -
 | |
|  static struct dpa_bp *dpa_bp_array[64];
 | |
|  
 | |
|  int dpa_max_frm;
 | |
| @@ -579,23 +575,6 @@ dpa_mac_probe(struct platform_device *_o
 | |
|  	}
 | |
|  #endif
 | |
|  
 | |
| -#ifdef CONFIG_PTP_1588_CLOCK_DPAA
 | |
| -	if ((mac_dev->phy_if != PHY_INTERFACE_MODE_SGMII) ||
 | |
| -	    ((mac_dev->phy_if == PHY_INTERFACE_MODE_SGMII) &&
 | |
| -			 (mac_dev->speed == SPEED_1000))) {
 | |
| -		ptp_priv.node = of_parse_phandle(mac_node, "ptp-timer", 0);
 | |
| -		if (ptp_priv.node) {
 | |
| -			ptp_priv.of_dev = of_find_device_by_node(ptp_priv.node);
 | |
| -			if (unlikely(ptp_priv.of_dev == NULL)) {
 | |
| -				dev_err(dpa_dev,
 | |
| -			"Cannot find device represented by timer_node\n");
 | |
| -				of_node_put(ptp_priv.node);
 | |
| -				return ERR_PTR(-EINVAL);
 | |
| -			}
 | |
| -			ptp_priv.mac_dev = mac_dev;
 | |
| -		}
 | |
| -	}
 | |
| -#endif
 | |
|  	return mac_dev;
 | |
|  }
 | |
|  EXPORT_SYMBOL(dpa_mac_probe);
 | |
| --- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_ptp.c
 | |
| +++ /dev/null
 | |
| @@ -1,291 +0,0 @@
 | |
| -/*
 | |
| - * DPAA Ethernet Driver -- PTP 1588 clock using the dTSEC
 | |
| - *
 | |
| - * Author: Yangbo Lu <yangbo.lu@freescale.com>
 | |
| - *
 | |
| - * Copyright 2014 Freescale Semiconductor, Inc.
 | |
| - *
 | |
| - * This program is free software; you can redistribute it and/or modify it
 | |
| - * under the terms of the GNU General Public License as published by the
 | |
| - * Free Software Foundation; either version 2 of the License, or (at your
 | |
| - * option) any later version.
 | |
| -*/
 | |
| -
 | |
| -#include <linux/device.h>
 | |
| -#include <linux/hrtimer.h>
 | |
| -#include <linux/init.h>
 | |
| -#include <linux/interrupt.h>
 | |
| -#include <linux/kernel.h>
 | |
| -#include <linux/module.h>
 | |
| -#include <linux/of.h>
 | |
| -#include <linux/of_platform.h>
 | |
| -#include <linux/timex.h>
 | |
| -#include <linux/io.h>
 | |
| -
 | |
| -#include <linux/ptp_clock_kernel.h>
 | |
| -
 | |
| -#include "dpaa_eth.h"
 | |
| -#include "mac.h"
 | |
| -
 | |
| -static struct mac_device *mac_dev;
 | |
| -static u32 freqCompensation;
 | |
| -
 | |
| -/* Bit definitions for the TMR_CTRL register */
 | |
| -#define ALM1P                 (1<<31) /* Alarm1 output polarity */
 | |
| -#define ALM2P                 (1<<30) /* Alarm2 output polarity */
 | |
| -#define FS                    (1<<28) /* FIPER start indication */
 | |
| -#define PP1L                  (1<<27) /* Fiper1 pulse loopback mode enabled. */
 | |
| -#define PP2L                  (1<<26) /* Fiper2 pulse loopback mode enabled. */
 | |
| -#define TCLK_PERIOD_SHIFT     (16) /* 1588 timer reference clock period. */
 | |
| -#define TCLK_PERIOD_MASK      (0x3ff)
 | |
| -#define RTPE                  (1<<15) /* Record Tx Timestamp to PAL Enable. */
 | |
| -#define FRD                   (1<<14) /* FIPER Realignment Disable */
 | |
| -#define ESFDP                 (1<<11) /* External Tx/Rx SFD Polarity. */
 | |
| -#define ESFDE                 (1<<10) /* External Tx/Rx SFD Enable. */
 | |
| -#define ETEP2                 (1<<9) /* External trigger 2 edge polarity */
 | |
| -#define ETEP1                 (1<<8) /* External trigger 1 edge polarity */
 | |
| -#define COPH                  (1<<7) /* Generated clock output phase. */
 | |
| -#define CIPH                  (1<<6) /* External oscillator input clock phase */
 | |
| -#define TMSR                  (1<<5) /* Timer soft reset. */
 | |
| -#define BYP                   (1<<3) /* Bypass drift compensated clock */
 | |
| -#define TE                    (1<<2) /* 1588 timer enable. */
 | |
| -#define CKSEL_SHIFT           (0)    /* 1588 Timer reference clock source */
 | |
| -#define CKSEL_MASK            (0x3)
 | |
| -
 | |
| -/* Bit definitions for the TMR_TEVENT register */
 | |
| -#define ETS2                  (1<<25) /* External trigger 2 timestamp sampled */
 | |
| -#define ETS1                  (1<<24) /* External trigger 1 timestamp sampled */
 | |
| -#define ALM2                  (1<<17) /* Current time = alarm time register 2 */
 | |
| -#define ALM1                  (1<<16) /* Current time = alarm time register 1 */
 | |
| -#define PP1                   (1<<7)  /* periodic pulse generated on FIPER1 */
 | |
| -#define PP2                   (1<<6)  /* periodic pulse generated on FIPER2 */
 | |
| -#define PP3                   (1<<5)  /* periodic pulse generated on FIPER3 */
 | |
| -
 | |
| -/* Bit definitions for the TMR_TEMASK register */
 | |
| -#define ETS2EN                (1<<25) /* External trigger 2 timestamp enable */
 | |
| -#define ETS1EN                (1<<24) /* External trigger 1 timestamp enable */
 | |
| -#define ALM2EN                (1<<17) /* Timer ALM2 event enable */
 | |
| -#define ALM1EN                (1<<16) /* Timer ALM1 event enable */
 | |
| -#define PP1EN                 (1<<7) /* Periodic pulse event 1 enable */
 | |
| -#define PP2EN                 (1<<6) /* Periodic pulse event 2 enable */
 | |
| -
 | |
| -/* Bit definitions for the TMR_PEVENT register */
 | |
| -#define TXP2                  (1<<9) /* PTP transmitted timestamp im TXTS2 */
 | |
| -#define TXP1                  (1<<8) /* PTP transmitted timestamp in TXTS1 */
 | |
| -#define RXP                   (1<<0) /* PTP frame has been received */
 | |
| -
 | |
| -/* Bit definitions for the TMR_PEMASK register */
 | |
| -#define TXP2EN                (1<<9) /* Transmit PTP packet event 2 enable */
 | |
| -#define TXP1EN                (1<<8) /* Transmit PTP packet event 1 enable */
 | |
| -#define RXPEN                 (1<<0) /* Receive PTP packet event enable */
 | |
| -
 | |
| -/* Bit definitions for the TMR_STAT register */
 | |
| -#define STAT_VEC_SHIFT        (0) /* Timer general purpose status vector */
 | |
| -#define STAT_VEC_MASK         (0x3f)
 | |
| -
 | |
| -/* Bit definitions for the TMR_PRSC register */
 | |
| -#define PRSC_OCK_SHIFT        (0) /* Output clock division/prescale factor. */
 | |
| -#define PRSC_OCK_MASK         (0xffff)
 | |
| -
 | |
| -
 | |
| -#define N_EXT_TS	2
 | |
| -
 | |
| -static void set_alarm(void)
 | |
| -{
 | |
| -	u64 ns;
 | |
| -
 | |
| -	if (mac_dev->fm_rtc_get_cnt)
 | |
| -		mac_dev->fm_rtc_get_cnt(mac_dev->fm_dev, &ns);
 | |
| -	ns += 1500000000ULL;
 | |
| -	ns = div_u64(ns, 1000000000UL) * 1000000000ULL;
 | |
| -	ns -= DPA_PTP_NOMINAL_FREQ_PERIOD_NS;
 | |
| -	if (mac_dev->fm_rtc_set_alarm)
 | |
| -		mac_dev->fm_rtc_set_alarm(mac_dev->fm_dev, 0, ns);
 | |
| -}
 | |
| -
 | |
| -static void set_fipers(void)
 | |
| -{
 | |
| -	u64 fiper;
 | |
| -
 | |
| -	if (mac_dev->fm_rtc_disable)
 | |
| -		mac_dev->fm_rtc_disable(mac_dev->fm_dev);
 | |
| -
 | |
| -	set_alarm();
 | |
| -	fiper = 1000000000ULL - DPA_PTP_NOMINAL_FREQ_PERIOD_NS;
 | |
| -	if (mac_dev->fm_rtc_set_fiper)
 | |
| -		mac_dev->fm_rtc_set_fiper(mac_dev->fm_dev, 0, fiper);
 | |
| -
 | |
| -	if (mac_dev->fm_rtc_enable)
 | |
| -		mac_dev->fm_rtc_enable(mac_dev->fm_dev);
 | |
| -}
 | |
| -
 | |
| -/* PTP clock operations */
 | |
| -
 | |
| -static int ptp_dpa_adjfreq(struct ptp_clock_info *ptp, s32 ppb)
 | |
| -{
 | |
| -	u64 adj;
 | |
| -	u32 diff, tmr_add;
 | |
| -	int neg_adj = 0;
 | |
| -
 | |
| -	if (ppb < 0) {
 | |
| -		neg_adj = 1;
 | |
| -		ppb = -ppb;
 | |
| -	}
 | |
| -
 | |
| -	tmr_add = freqCompensation;
 | |
| -	adj = tmr_add;
 | |
| -	adj *= ppb;
 | |
| -	diff = div_u64(adj, 1000000000ULL);
 | |
| -
 | |
| -	tmr_add = neg_adj ? tmr_add - diff : tmr_add + diff;
 | |
| -
 | |
| -	if (mac_dev->fm_rtc_set_drift)
 | |
| -		mac_dev->fm_rtc_set_drift(mac_dev->fm_dev, tmr_add);
 | |
| -
 | |
| -	return 0;
 | |
| -}
 | |
| -
 | |
| -static int ptp_dpa_adjtime(struct ptp_clock_info *ptp, s64 delta)
 | |
| -{
 | |
| -	s64 now;
 | |
| -
 | |
| -	if (mac_dev->fm_rtc_get_cnt)
 | |
| -		mac_dev->fm_rtc_get_cnt(mac_dev->fm_dev, &now);
 | |
| -
 | |
| -	now += delta;
 | |
| -
 | |
| -	if (mac_dev->fm_rtc_set_cnt)
 | |
| -		mac_dev->fm_rtc_set_cnt(mac_dev->fm_dev, now);
 | |
| -	set_fipers();
 | |
| -
 | |
| -	return 0;
 | |
| -}
 | |
| -
 | |
| -static int ptp_dpa_gettime(struct ptp_clock_info *ptp, struct timespec64 *ts)
 | |
| -{
 | |
| -	u64 ns;
 | |
| -	u32 remainder;
 | |
| -
 | |
| -	if (mac_dev->fm_rtc_get_cnt)
 | |
| -		mac_dev->fm_rtc_get_cnt(mac_dev->fm_dev, &ns);
 | |
| -
 | |
| -	ts->tv_sec = div_u64_rem(ns, 1000000000, &remainder);
 | |
| -	ts->tv_nsec = remainder;
 | |
| -	return 0;
 | |
| -}
 | |
| -
 | |
| -static int ptp_dpa_settime(struct ptp_clock_info *ptp,
 | |
| -			       const struct timespec64 *ts)
 | |
| -{
 | |
| -	u64 ns;
 | |
| -
 | |
| -	ns = ts->tv_sec * 1000000000ULL;
 | |
| -	ns += ts->tv_nsec;
 | |
| -
 | |
| -	if (mac_dev->fm_rtc_set_cnt)
 | |
| -		mac_dev->fm_rtc_set_cnt(mac_dev->fm_dev, ns);
 | |
| -	set_fipers();
 | |
| -	return 0;
 | |
| -}
 | |
| -
 | |
| -static int ptp_dpa_enable(struct ptp_clock_info *ptp,
 | |
| -			      struct ptp_clock_request *rq, int on)
 | |
| -{
 | |
| -	u32 bit;
 | |
| -
 | |
| -	switch (rq->type) {
 | |
| -	case PTP_CLK_REQ_EXTTS:
 | |
| -		switch (rq->extts.index) {
 | |
| -		case 0:
 | |
| -			bit = ETS1EN;
 | |
| -			break;
 | |
| -		case 1:
 | |
| -			bit = ETS2EN;
 | |
| -			break;
 | |
| -		default:
 | |
| -			return -EINVAL;
 | |
| -		}
 | |
| -		if (on) {
 | |
| -			if (mac_dev->fm_rtc_enable_interrupt)
 | |
| -				mac_dev->fm_rtc_enable_interrupt(
 | |
| -					mac_dev->fm_dev, bit);
 | |
| -		} else {
 | |
| -			if (mac_dev->fm_rtc_disable_interrupt)
 | |
| -				mac_dev->fm_rtc_disable_interrupt(
 | |
| -					mac_dev->fm_dev, bit);
 | |
| -		}
 | |
| -		return 0;
 | |
| -
 | |
| -	case PTP_CLK_REQ_PPS:
 | |
| -		if (on) {
 | |
| -			if (mac_dev->fm_rtc_enable_interrupt)
 | |
| -				mac_dev->fm_rtc_enable_interrupt(
 | |
| -					mac_dev->fm_dev, PP1EN);
 | |
| -		} else {
 | |
| -			if (mac_dev->fm_rtc_disable_interrupt)
 | |
| -				mac_dev->fm_rtc_disable_interrupt(
 | |
| -					mac_dev->fm_dev, PP1EN);
 | |
| -		}
 | |
| -		return 0;
 | |
| -
 | |
| -	default:
 | |
| -		break;
 | |
| -	}
 | |
| -
 | |
| -	return -EOPNOTSUPP;
 | |
| -}
 | |
| -
 | |
| -static struct ptp_clock_info ptp_dpa_caps = {
 | |
| -	.owner		= THIS_MODULE,
 | |
| -	.name		= "dpaa clock",
 | |
| -	.max_adj	= 512000,
 | |
| -	.n_alarm	= 0,
 | |
| -	.n_ext_ts	= N_EXT_TS,
 | |
| -	.n_per_out	= 0,
 | |
| -	.pps		= 1,
 | |
| -	.adjfreq	= ptp_dpa_adjfreq,
 | |
| -	.adjtime	= ptp_dpa_adjtime,
 | |
| -	.gettime64	= ptp_dpa_gettime,
 | |
| -	.settime64	= ptp_dpa_settime,
 | |
| -	.enable		= ptp_dpa_enable,
 | |
| -};
 | |
| -
 | |
| -static int __init __cold dpa_ptp_load(void)
 | |
| -{
 | |
| -	struct device *ptp_dev;
 | |
| -	struct timespec64 now;
 | |
| -	struct ptp_clock *clock = ptp_priv.clock;
 | |
| -	int dpa_phc_index;
 | |
| -	int err;
 | |
| -
 | |
| -	if (!(ptp_priv.of_dev && ptp_priv.mac_dev))
 | |
| -		return -ENODEV;
 | |
| -
 | |
| -	ptp_dev = &ptp_priv.of_dev->dev;
 | |
| -	mac_dev = ptp_priv.mac_dev;
 | |
| -
 | |
| -	if (mac_dev->fm_rtc_get_drift)
 | |
| -		mac_dev->fm_rtc_get_drift(mac_dev->fm_dev, &freqCompensation);
 | |
| -
 | |
| -	getnstimeofday64(&now);
 | |
| -	ptp_dpa_settime(&ptp_dpa_caps, &now);
 | |
| -
 | |
| -	clock = ptp_clock_register(&ptp_dpa_caps, ptp_dev);
 | |
| -	if (IS_ERR(clock)) {
 | |
| -		err = PTR_ERR(clock);
 | |
| -		return err;
 | |
| -	}
 | |
| -	dpa_phc_index = ptp_clock_index(clock);
 | |
| -	return 0;
 | |
| -}
 | |
| -module_init(dpa_ptp_load);
 | |
| -
 | |
| -static void __exit __cold dpa_ptp_unload(void)
 | |
| -{
 | |
| -	struct ptp_clock *clock = ptp_priv.clock;
 | |
| -
 | |
| -	if (mac_dev->fm_rtc_disable_interrupt)
 | |
| -		mac_dev->fm_rtc_disable_interrupt(mac_dev->fm_dev, 0xffffffff);
 | |
| -	ptp_clock_unregister(clock);
 | |
| -}
 | |
| -module_exit(dpa_ptp_unload);
 | |
| --- a/drivers/net/ethernet/freescale/sdk_dpaa/mac.h
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_dpaa/mac.h
 | |
| @@ -97,10 +97,9 @@ struct mac_device {
 | |
|  	int (*fm_rtc_set_alarm)(struct fm *fm_dev, uint32_t id, uint64_t time);
 | |
|  	int (*fm_rtc_set_fiper)(struct fm *fm_dev, uint32_t id,
 | |
|  				uint64_t fiper);
 | |
| -#ifdef CONFIG_PTP_1588_CLOCK_DPAA
 | |
|  	int (*fm_rtc_enable_interrupt)(struct fm *fm_dev, uint32_t events);
 | |
|  	int (*fm_rtc_disable_interrupt)(struct fm *fm_dev, uint32_t events);
 | |
| -#endif
 | |
| +
 | |
|  	int (*set_wol)(struct fm_port *port, struct fm_mac_dev *fm_mac_dev,
 | |
|  			bool en);
 | |
|  	int (*dump_mac_regs)(struct mac_device *h_mac, char *buf, int nn);
 |