mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-10 22:59:03 -04:00
drm/bridge: ti-sn65dsi86: Check bridge connection failure
Read out and check the ID registers, so we can bail out if I2C communication does not work or if the device is unknown. Tested on a Renesas GrayHawk board (R-Car V4M) by using a wrong I2C address and by not enabling RuntimePM for the device. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patchwork.freedesktop.org/patch/msgid/20250318155549.19625-2-wsa+renesas@sang-engineering.com
This commit is contained in:
committed by
Douglas Anderson
parent
1d1f7b15cb
commit
d69362f55f
@@ -35,6 +35,7 @@
|
||||
#include <drm/drm_print.h>
|
||||
#include <drm/drm_probe_helper.h>
|
||||
|
||||
#define SN_DEVICE_ID_REGS 0x00 /* up to 0x07 */
|
||||
#define SN_DEVICE_REV_REG 0x08
|
||||
#define SN_DPPLL_SRC_REG 0x0A
|
||||
#define DPPLL_CLK_SRC_DSICLK BIT(0)
|
||||
@@ -1898,6 +1899,7 @@ static int ti_sn65dsi86_probe(struct i2c_client *client)
|
||||
{
|
||||
struct device *dev = &client->dev;
|
||||
struct ti_sn65dsi86 *pdata;
|
||||
u8 id_buf[8];
|
||||
int ret;
|
||||
|
||||
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
|
||||
@@ -1941,6 +1943,16 @@ static int ti_sn65dsi86_probe(struct i2c_client *client)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
pm_runtime_get_sync(dev);
|
||||
ret = regmap_bulk_read(pdata->regmap, SN_DEVICE_ID_REGS, id_buf, ARRAY_SIZE(id_buf));
|
||||
pm_runtime_put_autosuspend(dev);
|
||||
if (ret)
|
||||
return dev_err_probe(dev, ret, "failed to read device id\n");
|
||||
|
||||
/* The ID string is stored backwards */
|
||||
if (strncmp(id_buf, "68ISD ", ARRAY_SIZE(id_buf)))
|
||||
return dev_err_probe(dev, -EOPNOTSUPP, "unsupported device id\n");
|
||||
|
||||
/*
|
||||
* Break ourselves up into a collection of aux devices. The only real
|
||||
* motiviation here is to solve the chicken-and-egg problem of probe
|
||||
|
||||
Reference in New Issue
Block a user