diff options
Diffstat (limited to 'drivers/dpll')
| -rw-r--r-- | drivers/dpll/zl3073x/core.c | 21 | ||||
| -rw-r--r-- | drivers/dpll/zl3073x/fw.c | 2 | ||||
| -rw-r--r-- | drivers/dpll/zl3073x/regs.h | 3 | 
3 files changed, 25 insertions, 1 deletions
| diff --git a/drivers/dpll/zl3073x/core.c b/drivers/dpll/zl3073x/core.c index 092e7027948a..e42e527813cf 100644 --- a/drivers/dpll/zl3073x/core.c +++ b/drivers/dpll/zl3073x/core.c @@ -1038,8 +1038,29 @@ zl3073x_dev_phase_meas_setup(struct zl3073x_dev *zldev)  int zl3073x_dev_start(struct zl3073x_dev *zldev, bool full)  {  	struct zl3073x_dpll *zldpll; +	u8 info;  	int rc; +	rc = zl3073x_read_u8(zldev, ZL_REG_INFO, &info); +	if (rc) { +		dev_err(zldev->dev, "Failed to read device status info\n"); +		return rc; +	} + +	if (!FIELD_GET(ZL_INFO_READY, info)) { +		/* The ready bit indicates that the firmware was successfully +		 * configured and is ready for normal operation. If it is +		 * cleared then the configuration stored in flash is wrong +		 * or missing. In this situation the driver will expose +		 * only devlink interface to give an opportunity to flash +		 * the correct config. +		 */ +		dev_info(zldev->dev, +			 "FW not fully ready - missing or corrupted config\n"); + +		return 0; +	} +  	if (full) {  		/* Fetch device state */  		rc = zl3073x_dev_state_fetch(zldev); diff --git a/drivers/dpll/zl3073x/fw.c b/drivers/dpll/zl3073x/fw.c index d5418ff74886..def37fe8d9b0 100644 --- a/drivers/dpll/zl3073x/fw.c +++ b/drivers/dpll/zl3073x/fw.c @@ -37,7 +37,7 @@ struct zl3073x_fw_component_info {  static const struct zl3073x_fw_component_info component_info[] = {  	[ZL_FW_COMPONENT_UTIL] = {  		.name		= "utility", -		.max_size	= 0x2300, +		.max_size	= 0x4000,  		.load_addr	= 0x20000000,  		.flash_type	= ZL3073X_FLASH_TYPE_NONE,  	}, diff --git a/drivers/dpll/zl3073x/regs.h b/drivers/dpll/zl3073x/regs.h index 19a25325bd9c..d837bee72b17 100644 --- a/drivers/dpll/zl3073x/regs.h +++ b/drivers/dpll/zl3073x/regs.h @@ -67,6 +67,9 @@   * Register Page 0, General   **************************/ +#define ZL_REG_INFO				ZL_REG(0, 0x00, 1) +#define ZL_INFO_READY				BIT(7) +  #define ZL_REG_ID				ZL_REG(0, 0x01, 2)  #define ZL_REG_REVISION				ZL_REG(0, 0x03, 2)  #define ZL_REG_FW_VER				ZL_REG(0, 0x05, 2) | 
