Hi Doug,
panel->no_hpd = of_property_read_bool(dev->of_node, "no-hpd"); if (!panel->no_hpd) { @@ -708,6 +712,8 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc)
if (!panel->ddc) return -EPROBE_DEFER;
- } else if (aux) {
}panel->ddc = &aux->ddc;
In panel_simple_probe(), the put_device(&panel->ddc->dev) call is causing issue when the aux->ddc is used to assign panel->ddc It works well when "ddc-i2c-bus" is used to assign panel->ddc
static int panel_simple_probe(...) { ...
free_ddc: if (panel->ddc) put_device(&panel->ddc->dev);
return err; }
== Log start ==
[ 2.393970] ------------[ cut here ]------------ [ 2.398747] kobject: '(null)' ((____ptrval____)): is not initialized, yet kobject_put() is being called. [ 2.408554] WARNING: CPU: 7 PID: 7 at lib/kobject.c:752 kobject_put+0x38/0xe0 ... ... [ 2.528574] Call trace: [ 2.531092] kobject_put+0x38/0xe0 [ 2.534594] put_device+0x20/0x2c [ 2.538002] panel_simple_probe+0x4bc/0x550 [ 2.542300] panel_simple_dp_aux_ep_probe+0x44/0x5c [ 2.547305] dp_aux_ep_probe+0x58/0x80
== Log end ==
Sincerely, Rajeev