On 10/14/2015 12:51 AM, Russell King - ARM Linux wrote: > On Mon, Oct 12, 2015 at 01:35:54PM +0200, Hans Verkuil wrote: >> On 10/06/2015 07:06 PM, Russell King - ARM Linux wrote: >>> Surely you aren't proposing that drivers should write directly to >>> adap->phys_addr without calling some notification function that the >>> physical address has changed? >> >> Userspace is informed through CEC_EVENT_STATE_CHANGE when the adapter is >> enabled/disabled. When the adapter is enabled and CEC_CAP_PHYS_ADDR is >> not set (i.e. the kernel takes care of this), then calling >> CEC_ADAP_G_PHYS_ADDR >> returns the new physical address. > > Okay, so when I see the EDID arrive, I should be doing: > > phys = parse_hdmi_addr(block->edid); > cec->adap->phys_addr = phys; > cec_enable(cec->adap, true); > > IOW, you _are_ expecting adap->phys_addr to be written, but only while > the adapter is disabled?
Right. And when the hotplug goes down you should call cec_enable(cec->adap, false). While the adapter is disabled, CEC_ADAP_G_PHYS_ADDR will always return CEC_PHYS_ADDR_INVALID regardless of the cec->adap->phys_addr value. Regards, Hans