diff options
| author | Takashi Iwai <[email protected]> | 2024-05-01 18:05:13 +0200 | 
|---|---|---|
| committer | Takashi Iwai <[email protected]> | 2024-05-01 18:05:13 +0200 | 
| commit | a30a7a29c35ef9d90bdec86d3051c32f47d6041f (patch) | |
| tree | 8fb47eaf32b134de050019d6205f3a3677f22d6c /drivers/net/ethernet/microchip/lan743x_main.c | |
| parent | 39815cdfc8d46ce2c72cbf2aa3d991c4bfb0024f (diff) | |
| parent | c5782bb5468acf86d8ca8e161267e8d055fb4161 (diff) | |
Merge tag 'asoc-fix-v6.9-rc6' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v6.9
This is much larger than is ideal, partly due to your holiday but also
due to several vendors having come in with relatively large fixes at
similar times.  It's all driver specific stuff.
The meson fixes from Jerome fix some rare timing issues with blocking
operations happening in triggers, plus the continuous clock support
which fixes clocking for some platforms.  The SOF series from Peter
builds to the fix to avoid spurious resets of ChainDMA which triggered
errors in cleanup paths with both PulseAudio and PipeWire, and there's
also some simple new debugfs files from Pierre which make support a lot
eaiser.
Diffstat (limited to 'drivers/net/ethernet/microchip/lan743x_main.c')
| -rw-r--r-- | drivers/net/ethernet/microchip/lan743x_main.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/net/ethernet/microchip/lan743x_main.c b/drivers/net/ethernet/microchip/lan743x_main.c index bd8aa83b47e5..75a988c0bd79 100644 --- a/drivers/net/ethernet/microchip/lan743x_main.c +++ b/drivers/net/ethernet/microchip/lan743x_main.c @@ -25,6 +25,8 @@  #define PCS_POWER_STATE_DOWN	0x6  #define PCS_POWER_STATE_UP	0x4 +#define RFE_RD_FIFO_TH_3_DWORDS	0x3 +  static void pci11x1x_strap_get_status(struct lan743x_adapter *adapter)  {  	u32 chip_rev; @@ -3272,6 +3274,21 @@ static void lan743x_full_cleanup(struct lan743x_adapter *adapter)  	lan743x_pci_cleanup(adapter);  } +static void pci11x1x_set_rfe_rd_fifo_threshold(struct lan743x_adapter *adapter) +{ +	u16 rev = adapter->csr.id_rev & ID_REV_CHIP_REV_MASK_; + +	if (rev == ID_REV_CHIP_REV_PCI11X1X_B0_) { +		u32 misc_ctl; + +		misc_ctl = lan743x_csr_read(adapter, MISC_CTL_0); +		misc_ctl &= ~MISC_CTL_0_RFE_READ_FIFO_MASK_; +		misc_ctl |= FIELD_PREP(MISC_CTL_0_RFE_READ_FIFO_MASK_, +				       RFE_RD_FIFO_TH_3_DWORDS); +		lan743x_csr_write(adapter, MISC_CTL_0, misc_ctl); +	} +} +  static int lan743x_hardware_init(struct lan743x_adapter *adapter,  				 struct pci_dev *pdev)  { @@ -3287,6 +3304,7 @@ static int lan743x_hardware_init(struct lan743x_adapter *adapter,  		pci11x1x_strap_get_status(adapter);  		spin_lock_init(&adapter->eth_syslock_spinlock);  		mutex_init(&adapter->sgmii_rw_lock); +		pci11x1x_set_rfe_rd_fifo_threshold(adapter);  	} else {  		adapter->max_tx_channels = LAN743X_MAX_TX_CHANNELS;  		adapter->used_tx_channels = LAN743X_USED_TX_CHANNELS;  |