diff options
author | Taha HAMDI <taha.hamdi@qorvo.com> | 2023-04-05 09:55:13 +0200 |
---|---|---|
committer | Victor Liu <victorliu@google.com> | 2023-05-05 00:08:43 +0000 |
commit | 52645059af815930913e79c4faa490d97e742003 (patch) | |
tree | 1be508f65703fbadc653df852f1db253c9f9684b | |
parent | 7c10d4e180092fc0e4dca12d9e5bdb87752f0216 (diff) | |
download | uwb-52645059af815930913e79c4faa490d97e742003.tar.gz |
dw3000: fix interop issue on ch9 dsandroid-u-beta-3_r0.3android-u-beta-3_r0.2android-u-beta-2.1_r0.4android-u-beta-2.1_r0.3android-u-beta-2.1_r0.2android-gs-raviole-5.10-u-beta3android-gs-raviole-5.10-u-beta2android-gs-pantah-5.10-u-beta2android-gs-bluejay-5.10-u-beta3android-gs-bluejay-5.10-u-beta2
- clear DW3000_RUNSAR bit from DW3000_AON_DIG_CFG before ds
- kick PGF Calibration before ds
- kick ldo tune and bias calib from otp instead of using otp values
Bug: 271935112
Change-Id: I23e2667a28e5e7996a98bfddc7fb2234b4208583
Signed-off-by: Taha HAMDI <taha.hamdi@qorvo.com>
-rw-r--r-- | kernel/drivers/net/ieee802154/dw3000_chip_e0.c | 5 | ||||
-rw-r--r-- | kernel/drivers/net/ieee802154/dw3000_core.c | 7 | ||||
-rw-r--r-- | kernel/drivers/net/ieee802154/dw3000_spi.c | 2 |
3 files changed, 10 insertions, 4 deletions
diff --git a/kernel/drivers/net/ieee802154/dw3000_chip_e0.c b/kernel/drivers/net/ieee802154/dw3000_chip_e0.c index 1605bf0..f4158be 100644 --- a/kernel/drivers/net/ieee802154/dw3000_chip_e0.c +++ b/kernel/drivers/net/ieee802154/dw3000_chip_e0.c @@ -212,11 +212,10 @@ static int dw3000_e0_check_tx_ok(struct dw3000 *dw) */ int dw3000_e0_prog_ldo_and_bias_tune(struct dw3000 *dw) { - const u16 bias_mask = DW3000_BIAS_CTRL_DIG_BIAS_DAC_ULV_BIT_MASK; struct dw3000_local_data *local = &dw->data; struct dw3000_otp_data *otp = &dw->otp_data; - u16 bias_tune = (otp->bias_tune >> 16) & bias_mask; - if (otp->ldo_tune_lo && otp->ldo_tune_hi && bias_tune) { + + if (otp->ldo_tune_lo && otp->ldo_tune_hi && otp->bias_tune) { dw3000_reg_or16(dw, DW3000_NVM_CFG_ID, 0, DW3000_LDO_BIAS_KICK); /* Save the kicks for the on-wake configuration */ local->sleep_mode |= DW3000_LOADLDO | DW3000_LOADBIAS; diff --git a/kernel/drivers/net/ieee802154/dw3000_core.c b/kernel/drivers/net/ieee802154/dw3000_core.c index 7772f16..36e61d5 100644 --- a/kernel/drivers/net/ieee802154/dw3000_core.c +++ b/kernel/drivers/net/ieee802154/dw3000_core.c @@ -4608,6 +4608,13 @@ static int dw3000_setdwstate(struct dw3000 *dw, enum operational_state state) * - enable configuration copy from AON memory to host registers. * - set ONW_GO2IDLE to get DW3000_OP_STATE_IDLE_PLL on wakeup. */ + /* Step 1.1 + * - clear DW3000_RUNSAR bit from DW3000_AON_DIG_CFG_ID + * - turn off auto PGF cal on wake up + */ + dw->data.sleep_mode &= ~DW3000_RUNSAR; + dw->data.sleep_mode |= DW3000_PGFCAL; + rc = dw3000_reg_write16( dw, DW3000_AON_DIG_CFG_ID, 0, dw->data.sleep_mode | diff --git a/kernel/drivers/net/ieee802154/dw3000_spi.c b/kernel/drivers/net/ieee802154/dw3000_spi.c index d710868..76f1f3f 100644 --- a/kernel/drivers/net/ieee802154/dw3000_spi.c +++ b/kernel/drivers/net/ieee802154/dw3000_spi.c @@ -116,7 +116,7 @@ static int dw3000_spi_probe(struct spi_device *spi) hrtimer_init(&dw->idle_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); dw->idle_timer.function = dw3000_idle_timeout; - dev_info(dw->dev, "Loading driver..."); + dev_info(dw->dev, "Loading driver...050423"); dw3000_sysfs_init(dw); /* Setup SPI parameters */ |