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