clk: at91: fix programmable clk irq handling

The prog irq is a level irq reflecting the prog clk status. As a result the
irq line will stay high when the prog clk is ready and the system will
hang.
Disable the irq when it is handled to solve this problem.

Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
clk: at91: replace prog clk round_rate with determine_rate

Implement the determine_rate callback to choose the best parent clk that
fullfils the requested rate.

Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
clk: at91: propagate rate change on system clks

System clks are just gates, and thus do not provide any rate operations.
Authorize clk rate change to be propagated to system clk parents.

Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
ASoC: atmel: support CCF based clks

Provide dev to clk_get function if we're using CCF based clks.
CCF based prog clks support automatic parent selection when asking for a
specific rate: remove the clk32k clk retrieval if we're using these clks.

Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
ASoC: atmel: document clock properties of the wm8904 driver

Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
ARM: at91/dt: add clock properties to the wm8904 codec node

Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>