summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaha HAMDI <taha.hamdi@qorvo.com>2023-04-05 09:55:13 +0200
committerVictor Liu <victorliu@google.com>2023-05-05 00:08:43 +0000
commit52645059af815930913e79c4faa490d97e742003 (patch)
tree1be508f65703fbadc653df852f1db253c9f9684b
parent7c10d4e180092fc0e4dca12d9e5bdb87752f0216 (diff)
downloaduwb-52645059af815930913e79c4faa490d97e742003.tar.gz
- 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.c5
-rw-r--r--kernel/drivers/net/ieee802154/dw3000_core.c7
-rw-r--r--kernel/drivers/net/ieee802154/dw3000_spi.c2
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 */