drivers/i2c/ptn3460: Use cb_err in mb_adjust_cfg

Return generic coreboot error codes from the mb_adjust_cfg
callback used in mainboards instead of '-1' constant and
a driver-specific success-indicating define.

BUG=none
TEST=Boards siemens/mc_apl{1,4,5,7} and siemens/mc_ehl3
build correctly.

Change-Id: I5e0d4e67703db518ed239a845f43047f569b94ec
Signed-off-by: Jan Samek <jan.samek@siemens.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/72071
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Werner Zeh <werner.zeh@siemens.com>
This commit is contained in:
Jan Samek
2023-01-18 13:28:50 +01:00
committed by Felix Held
parent b6730e03e2
commit 79312afdde
7 changed files with 34 additions and 35 deletions

View File

@@ -108,7 +108,7 @@ static void ptn3460_init(struct device *dev)
} }
/* Mainboard can modify the configuration data. /* Mainboard can modify the configuration data.
Write back configuration data to PTN3460 if modified by mainboard */ Write back configuration data to PTN3460 if modified by mainboard */
if (mb_adjust_cfg(&cfg) == PTN_CFG_MODIFIED) { if (mb_adjust_cfg(&cfg) == CB_SUCCESS) {
ptr = (uint8_t *)&cfg; ptr = (uint8_t *)&cfg;
for (i = 0; i < sizeof(struct ptn_3460_config); i++) { for (i = 0; i < sizeof(struct ptn_3460_config); i++) {
val = i2c_dev_writeb_at(dev, PTN_CONFIG_OFF + i, *ptr++); val = i2c_dev_writeb_at(dev, PTN_CONFIG_OFF + i, *ptr++);
@@ -131,9 +131,9 @@ __weak uint8_t mb_select_edid_table(void)
{ {
return 0; return 0;
} }
__weak int mb_adjust_cfg(struct ptn_3460_config *cfg_ptr) __weak enum cb_err mb_adjust_cfg(struct ptn_3460_config *cfg_ptr)
{ {
return 0; return CB_ERR;
} }
static struct device_operations ptn3460_ops = { static struct device_operations ptn3460_ops = {

View File

@@ -16,7 +16,6 @@
/* Define some error codes that can be used */ /* Define some error codes that can be used */
#define PTN_SUCCESS 0x00000000 #define PTN_SUCCESS 0x00000000
#define PTN_CFG_MODIFIED 0x00000001
#define PTN_BUS_ERROR 0x10000000 #define PTN_BUS_ERROR 0x10000000
#define PTN_INVALID_EDID 0x20000000 #define PTN_INVALID_EDID 0x20000000
#define PTN_INVALID_EDID_BLOCK 0x30000000 #define PTN_INVALID_EDID_BLOCK 0x30000000
@@ -55,6 +54,6 @@ struct ptn_3460_flash {
/* These functions can be implemented somewhere else but must exist. */ /* These functions can be implemented somewhere else but must exist. */
extern enum cb_err mb_get_edid(uint8_t edid_data[0x80]); extern enum cb_err mb_get_edid(uint8_t edid_data[0x80]);
extern uint8_t mb_select_edid_table(void); extern uint8_t mb_select_edid_table(void);
extern int mb_adjust_cfg(struct ptn_3460_config *cfg_ptr); extern enum cb_err mb_adjust_cfg(struct ptn_3460_config *cfg_ptr);
#endif /* _I2C_PTN3460_H_ */ #endif /* _I2C_PTN3460_H_ */

View File

@@ -39,9 +39,9 @@ uint8_t mb_select_edid_table(void)
/** \brief Function to enable mainboard to adjust the config data of PTN3460. For reference, /** \brief Function to enable mainboard to adjust the config data of PTN3460. For reference,
* see NXP document AN11128 - PTN3460 Programming guide. * see NXP document AN11128 - PTN3460 Programming guide.
* @param *cfg_ptr Pointer to the PTN config structure to modify * @param *cfg_ptr Pointer to the PTN config structure to modify
* @return -1 on error; PTN_CFG_MODIFIED if data was modified and needs to be updated. * @return CB_SUCCESS if data was modified and needs to be updated; CB_ERR on error
*/ */
int mb_adjust_cfg(struct ptn_3460_config *cfg) enum cb_err mb_adjust_cfg(struct ptn_3460_config *cfg)
{ {
const char *hwi_block = "hwinfo.hex"; const char *hwi_block = "hwinfo.hex";
uint8_t disp_con = 0, color_depth = 0; uint8_t disp_con = 0, color_depth = 0;
@@ -49,16 +49,16 @@ int mb_adjust_cfg(struct ptn_3460_config *cfg)
/* Get display-specific configuration from hwinfo. */ /* Get display-specific configuration from hwinfo. */
if (hwilib_find_blocks(hwi_block) != CB_SUCCESS) { if (hwilib_find_blocks(hwi_block) != CB_SUCCESS) {
printk(BIOS_ERR, "LCD: Info block \"%s\" not found!\n", hwi_block); printk(BIOS_ERR, "LCD: Info block \"%s\" not found!\n", hwi_block);
return -1; return CB_ERR;
} }
if (hwilib_get_field(PF_DisplCon, &disp_con, sizeof(disp_con)) != sizeof(disp_con)) { if (hwilib_get_field(PF_DisplCon, &disp_con, sizeof(disp_con)) != sizeof(disp_con)) {
printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block); printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block);
return -1; return CB_ERR;
} }
if (hwilib_get_field(PF_Color_Depth, &color_depth, if (hwilib_get_field(PF_Color_Depth, &color_depth,
sizeof(color_depth)) != sizeof(color_depth)) { sizeof(color_depth)) != sizeof(color_depth)) {
printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block); printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block);
return -1; return CB_ERR;
} }
/* Set up PTN3460 registers based on hwinfo and fixed board-specific parameters: */ /* Set up PTN3460 registers based on hwinfo and fixed board-specific parameters: */
@@ -91,5 +91,5 @@ int mb_adjust_cfg(struct ptn_3460_config *cfg)
/* Enable backlight control. */ /* Enable backlight control. */
cfg->backlight_ctrl = 0x00; cfg->backlight_ctrl = 0x00;
return PTN_CFG_MODIFIED; return CB_SUCCESS;
} }

View File

@@ -39,9 +39,9 @@ uint8_t mb_select_edid_table(void)
/** \brief Function to enable mainboard to adjust the config data of PTN3460. For reference, /** \brief Function to enable mainboard to adjust the config data of PTN3460. For reference,
* see NXP document AN11128 - PTN3460 Programming guide. * see NXP document AN11128 - PTN3460 Programming guide.
* @param *cfg_ptr Pointer to the PTN config structure to modify * @param *cfg_ptr Pointer to the PTN config structure to modify
* @return -1 on error; PTN_CFG_MODIFIED if data was modified and needs to be updated. * @return CB_SUCCESS if data was modified and needs to be updated; CB_ERR on error
*/ */
int mb_adjust_cfg(struct ptn_3460_config *cfg) enum cb_err mb_adjust_cfg(struct ptn_3460_config *cfg)
{ {
const char *hwi_block = "hwinfo.hex"; const char *hwi_block = "hwinfo.hex";
uint8_t disp_con = 0, color_depth = 0; uint8_t disp_con = 0, color_depth = 0;
@@ -49,16 +49,16 @@ int mb_adjust_cfg(struct ptn_3460_config *cfg)
/* Get display-specific configuration from hwinfo. */ /* Get display-specific configuration from hwinfo. */
if (hwilib_find_blocks(hwi_block) != CB_SUCCESS) { if (hwilib_find_blocks(hwi_block) != CB_SUCCESS) {
printk(BIOS_ERR, "LCD: Info block \"%s\" not found!\n", hwi_block); printk(BIOS_ERR, "LCD: Info block \"%s\" not found!\n", hwi_block);
return -1; return CB_ERR;
} }
if (hwilib_get_field(PF_DisplCon, &disp_con, sizeof(disp_con)) != sizeof(disp_con)) { if (hwilib_get_field(PF_DisplCon, &disp_con, sizeof(disp_con)) != sizeof(disp_con)) {
printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block); printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block);
return -1; return CB_ERR;
} }
if (hwilib_get_field(PF_Color_Depth, &color_depth, if (hwilib_get_field(PF_Color_Depth, &color_depth,
sizeof(color_depth)) != sizeof(color_depth)) { sizeof(color_depth)) != sizeof(color_depth)) {
printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block); printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block);
return -1; return CB_ERR;
} }
/* Set up PTN3460 registers based on hwinfo and fixed board-specific parameters: */ /* Set up PTN3460 registers based on hwinfo and fixed board-specific parameters: */
@@ -91,5 +91,5 @@ int mb_adjust_cfg(struct ptn_3460_config *cfg)
/* Enable backlight control. */ /* Enable backlight control. */
cfg->backlight_ctrl = 0x00; cfg->backlight_ctrl = 0x00;
return PTN_CFG_MODIFIED; return CB_SUCCESS;
} }

View File

@@ -64,9 +64,9 @@ uint8_t mb_select_edid_table(void)
/** \brief Function to enable mainboard to adjust the config data of PTN3460. For reference, /** \brief Function to enable mainboard to adjust the config data of PTN3460. For reference,
* see NXP document AN11128 - PTN3460 Programming guide. * see NXP document AN11128 - PTN3460 Programming guide.
* @param *cfg_ptr Pointer to the PTN config structure to modify * @param *cfg_ptr Pointer to the PTN config structure to modify
* @return -1 on error; PTN_CFG_MODIFIED if data was modified and needs to be updated. * @return CB_SUCCESS if data was modified and needs to be updated; CB_ERR on error
*/ */
int mb_adjust_cfg(struct ptn_3460_config *cfg) enum cb_err mb_adjust_cfg(struct ptn_3460_config *cfg)
{ {
const char *hwi_block = "hwinfo.hex"; const char *hwi_block = "hwinfo.hex";
uint8_t disp_con = 0, color_depth = 0; uint8_t disp_con = 0, color_depth = 0;
@@ -74,16 +74,16 @@ int mb_adjust_cfg(struct ptn_3460_config *cfg)
/* Get display-specific configuration from hwinfo. */ /* Get display-specific configuration from hwinfo. */
if (hwilib_find_blocks(hwi_block) != CB_SUCCESS) { if (hwilib_find_blocks(hwi_block) != CB_SUCCESS) {
printk(BIOS_ERR, "LCD: Info block \"%s\" not found!\n", hwi_block); printk(BIOS_ERR, "LCD: Info block \"%s\" not found!\n", hwi_block);
return -1; return CB_ERR;
} }
if (hwilib_get_field(PF_DisplCon, &disp_con, sizeof(disp_con)) != sizeof(disp_con)) { if (hwilib_get_field(PF_DisplCon, &disp_con, sizeof(disp_con)) != sizeof(disp_con)) {
printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block); printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block);
return -1; return CB_ERR;
} }
if (hwilib_get_field(PF_Color_Depth, &color_depth, if (hwilib_get_field(PF_Color_Depth, &color_depth,
sizeof(color_depth)) != sizeof(color_depth)) { sizeof(color_depth)) != sizeof(color_depth)) {
printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block); printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block);
return -1; return CB_ERR;
} }
/* Set up PTN3460 registers based on hwinfo and fixed board-specific parameters: */ /* Set up PTN3460 registers based on hwinfo and fixed board-specific parameters: */
@@ -116,5 +116,5 @@ int mb_adjust_cfg(struct ptn_3460_config *cfg)
/* Enable backlight control. */ /* Enable backlight control. */
cfg->backlight_ctrl = 0x00; cfg->backlight_ctrl = 0x00;
return PTN_CFG_MODIFIED; return CB_SUCCESS;
} }

View File

@@ -39,9 +39,9 @@ uint8_t mb_select_edid_table(void)
/** \brief Function to enable mainboard to adjust the config data of PTN3460. For reference, /** \brief Function to enable mainboard to adjust the config data of PTN3460. For reference,
* see NXP document AN11128 - PTN3460 Programming guide. * see NXP document AN11128 - PTN3460 Programming guide.
* @param *cfg_ptr Pointer to the PTN config structure to modify * @param *cfg_ptr Pointer to the PTN config structure to modify
* @return -1 on error; PTN_CFG_MODIFIED if data was modified and needs to be updated. * @return CB_SUCCESS if data was modified and needs to be updated; CB_ERR on error
*/ */
int mb_adjust_cfg(struct ptn_3460_config *cfg) enum cb_err mb_adjust_cfg(struct ptn_3460_config *cfg)
{ {
const char *hwi_block = "hwinfo.hex"; const char *hwi_block = "hwinfo.hex";
uint8_t disp_con = 0, color_depth = 0; uint8_t disp_con = 0, color_depth = 0;
@@ -49,16 +49,16 @@ int mb_adjust_cfg(struct ptn_3460_config *cfg)
/* Get display-specific configuration from hwinfo. */ /* Get display-specific configuration from hwinfo. */
if (hwilib_find_blocks(hwi_block) != CB_SUCCESS) { if (hwilib_find_blocks(hwi_block) != CB_SUCCESS) {
printk(BIOS_ERR, "LCD: Info block \"%s\" not found!\n", hwi_block); printk(BIOS_ERR, "LCD: Info block \"%s\" not found!\n", hwi_block);
return -1; return CB_ERR;
} }
if (hwilib_get_field(PF_DisplCon, &disp_con, sizeof(disp_con)) != sizeof(disp_con)) { if (hwilib_get_field(PF_DisplCon, &disp_con, sizeof(disp_con)) != sizeof(disp_con)) {
printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block); printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block);
return -1; return CB_ERR;
} }
if (hwilib_get_field(PF_Color_Depth, &color_depth, if (hwilib_get_field(PF_Color_Depth, &color_depth,
sizeof(color_depth)) != sizeof(color_depth)) { sizeof(color_depth)) != sizeof(color_depth)) {
printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block); printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block);
return -1; return CB_ERR;
} }
/* Set up PTN3460 registers based on hwinfo and fixed board-specific parameters: */ /* Set up PTN3460 registers based on hwinfo and fixed board-specific parameters: */
@@ -91,5 +91,5 @@ int mb_adjust_cfg(struct ptn_3460_config *cfg)
/* Enable backlight control. */ /* Enable backlight control. */
cfg->backlight_ctrl = 0x00; cfg->backlight_ctrl = 0x00;
return PTN_CFG_MODIFIED; return CB_SUCCESS;
} }

View File

@@ -39,9 +39,9 @@ uint8_t mb_select_edid_table(void)
/** \brief Function to enable mainboard to adjust the config data of PTN3460. For reference, /** \brief Function to enable mainboard to adjust the config data of PTN3460. For reference,
* see NXP document AN11128 - PTN3460 Programming guide. * see NXP document AN11128 - PTN3460 Programming guide.
* @param *cfg_ptr Pointer to the PTN config structure to modify * @param *cfg_ptr Pointer to the PTN config structure to modify
* @return -1 on error; PTN_CFG_MODIFIED if data was modified and needs to be updated. * @return CB_SUCCESS if data was modified and needs to be updated; CB_ERR on error
*/ */
int mb_adjust_cfg(struct ptn_3460_config *cfg) enum cb_err mb_adjust_cfg(struct ptn_3460_config *cfg)
{ {
const char *hwi_block = "hwinfo.hex"; const char *hwi_block = "hwinfo.hex";
uint8_t disp_con = 0, color_depth = 0; uint8_t disp_con = 0, color_depth = 0;
@@ -49,16 +49,16 @@ int mb_adjust_cfg(struct ptn_3460_config *cfg)
/* Get display-specific configuration from hwinfo. */ /* Get display-specific configuration from hwinfo. */
if (hwilib_find_blocks(hwi_block) != CB_SUCCESS) { if (hwilib_find_blocks(hwi_block) != CB_SUCCESS) {
printk(BIOS_ERR, "LCD: Info block \"%s\" not found!\n", hwi_block); printk(BIOS_ERR, "LCD: Info block \"%s\" not found!\n", hwi_block);
return -1; return CB_ERR;
} }
if (hwilib_get_field(PF_DisplCon, &disp_con, sizeof(disp_con)) != sizeof(disp_con)) { if (hwilib_get_field(PF_DisplCon, &disp_con, sizeof(disp_con)) != sizeof(disp_con)) {
printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block); printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block);
return -1; return CB_ERR;
} }
if (hwilib_get_field(PF_Color_Depth, &color_depth, if (hwilib_get_field(PF_Color_Depth, &color_depth,
sizeof(color_depth)) != sizeof(color_depth)) { sizeof(color_depth)) != sizeof(color_depth)) {
printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block); printk(BIOS_ERR, "LCD: Missing panel features from %s\n", hwi_block);
return -1; return CB_ERR;
} }
/* Set up PTN3460 registers based on hwinfo and fixed board-specific parameters: */ /* Set up PTN3460 registers based on hwinfo and fixed board-specific parameters: */
@@ -91,5 +91,5 @@ int mb_adjust_cfg(struct ptn_3460_config *cfg)
/* Enable backlight control. */ /* Enable backlight control. */
cfg->backlight_ctrl = 0x00; cfg->backlight_ctrl = 0x00;
return PTN_CFG_MODIFIED; return CB_SUCCESS;
} }