Implement support for the `timeout-ms` device tree property, allowing platforms to adjust the userspace response timeout as needed. If `timeout-ms` is not specified, the default response timeout remains 500 ms. This ensures compatibility while providing flexibility for platforms that require longer timeouts due to BMC or application load. Signed-off-by: Potin Lai <potin.lai.pt@xxxxxxxxx> --- drivers/char/ipmi/ssif_bmc.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/char/ipmi/ssif_bmc.c b/drivers/char/ipmi/ssif_bmc.c index 310f17dd9511..8f0fbc941936 100644 --- a/drivers/char/ipmi/ssif_bmc.c +++ b/drivers/char/ipmi/ssif_bmc.c @@ -87,6 +87,7 @@ struct ssif_bmc_ctx { /* Timeout waiting for response */ struct timer_list response_timer; bool response_timer_inited; + u32 response_timeout; /* Flag to identify a Multi-part Read Transaction */ bool is_singlepart_read; u8 nbytes_processed; @@ -331,7 +332,8 @@ static void handle_request(struct ssif_bmc_ctx *ssif_bmc) timer_setup(&ssif_bmc->response_timer, response_timeout, 0); ssif_bmc->response_timer_inited = true; } - mod_timer(&ssif_bmc->response_timer, jiffies + msecs_to_jiffies(RESPONSE_TIMEOUT)); + mod_timer(&ssif_bmc->response_timer, jiffies + + msecs_to_jiffies(ssif_bmc->response_timeout)); } static void calculate_response_part_pec(struct ssif_part_buffer *part) @@ -809,6 +811,10 @@ static int ssif_bmc_probe(struct i2c_client *client) if (!ssif_bmc) return -ENOMEM; + if (of_property_read_u32(client->dev.of_node, "timeout-ms", + &ssif_bmc->response_timeout)) + ssif_bmc->response_timeout = RESPONSE_TIMEOUT; + spin_lock_init(&ssif_bmc->lock); init_waitqueue_head(&ssif_bmc->wait_queue); -- 2.31.1