Re: [PATCH v2 0/12] Those patches is used for dw_hdmi audio support

From: Yang Kuankuan
Date: Mon Feb 02 2015 - 08:03:36 EST



On 01/31/2015 07:00 AM, Russell King - ARM Linux wrote:
On Fri, Jan 30, 2015 at 06:23:51AM -0500, Yakir Yang wrote:
We found Designware hdmi driver only support audio clock config, we can not play sound through it.
To add Designware HDMI Audio support, we make those patch set:
1): modify n/cts config order, according to dw_hdmi document.
2): add Audio Sample Channel Status config interfaces to dw_hdmi driver.
3): add audio support for more display resolutions(eg. 800x600).
4): add audio support for No-CEA display resolutions.
5): fixed dw_hdmi irq bug, add irq control to suspend/resume interfaces.
6): add suspend/resume callback for dw_hdmi rockchip driver.
7): filter interlace mode in rockchip vop driver.
8): add hdmi audio config interfaces to dw_hdmi driver.
9): creat "dw_hdmi-audio" platform device in dw_hdmi driver.
10): add codec driver for hdmi audio, callback dw_hdmi audio config functions.
11): add sound driver for hdmi audio, creat hdmi audio sound card.
12): add dt-bings file and add hdmi_audio node to corresponding dt file.
I think the overall issue with this patch is working out how to support
both the iMX6 version of this IP, and the Rockchip version of the IP.

These two hardware IPs seem to be configured at synthesis time with
entirely different audio architectures, which change which registers
are available, and sometimes which bits in the registers are present,
which makes it more difficult to come up with a unified audio driver.

Also, I think that it would be a good idea to start documenting which
registers are available in which versions of the IP in dw_hdmi.h,
otherwise I can see that it's going to be very easy for someone to
assume that some register or bit which is available in one IP is
present on all.

The CONFIGx_ID register values for the iMX6 SoC are:

CONFIG0_ID 0x8f
CONFIG1_ID 0x01
CONFIG2_ID 0xf2
CONFIG3_ID 0x02

CONFIG0_ID appears to contain bits which indicate whether the IP
supports I2S and SPDIF mode. Presumably your IP has bit 4 set for I2S,
and maybe bit 5 for SPDIF?

CONFIG1_ID bit 0 indicates whether the AHB interface is present, which
is presumably zero for your IP?

CONFIG3_ID bit 0 indicates whether "generic parallel audio, GPAUD" is
present.

Could you provide (in addition to the values printed in the message I
requested in another reply) the values of the CONFIGx_ID registers
please, and whether any of the bits in there are documented as being
applicable to audio.

Thanks.
The IP version on rk3288 : dwhdmi-rockchip ff980000.hdmi: Detected HDMI controller 0x20:0xa:0xa0:0xc1

The CONFIGx_ID register values for the rk3288 soc are:
CONFIG0_ID 0xbf
CONFIG1_ID 0x22
CONFIG2_ID 0xc2
CONFIG3_ID 0x0

After looking at iMX6 DQRM, i found only CONFIG1_ID & CONFIG3_ID are different.

CONFIG1_ID bit 5 indicates whether the HDMI2.0 is present. Bit 1 indicates whether
configuration interface is APB interface.

CONFIG3_ID bit 3 indicates whether the AHBAUDDMA is present. Bit 1 indicates whether
Generic Parallel Audio is present.


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/