Message ID | 1452331558-2520-6-git-send-email-kernel@martin.sperl.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, Jan 09, 2016 at 09:25:57AM +0000, kernel@martin.sperl.org wrote: > From: Martin Sperl <kernel@martin.sperl.org> > > The bcm2835-i2s driver has been updated to use the new clock framework > for the bcm2835 SOC. You are breaking compatibility with the driver change. New kernels will not work with old dtbs as you have found. What should be done is fix the driver to work with the old and new dtb. > This patch documents the required changes to the bindings. > > Signed-off-by: Martin Sperl <kernel@martin.sperl.org> > --- > Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) But I leave it to platform maintainers to decide if breaking compatibility is okay, so: Acked-by: Rob Herring <robh@kernel.org>
> On 09.01.2016, at 23:45, Rob Herring <robh@kernel.org> wrote: > > On Sat, Jan 09, 2016 at 09:25:57AM +0000, kernel@martin.sperl.org wrote: >> From: Martin Sperl <kernel@martin.sperl.org> >> >> The bcm2835-i2s driver has been updated to use the new clock framework >> for the bcm2835 SOC. > > You are breaking compatibility with the driver change. New kernels will > not work with old dtbs as you have found. What should be done is fix the > driver to work with the old and new dtb. Actually the driver/device-tree is already broken with commit 94cb7f76caa0 ("ARM: bcm2835: Switch to using the new clock driver support”) Because there we already have the following conflicting definitions: clocks: cprman@7e101000 { compatible = "brcm,bcm2835-cprman"; #clock-cells = <1>; reg = <0x7e101000 0x2000>; /* CPRMAN derives everything from the platform's * oscillator. */ clocks = <&clk_osc>; }; i2s: i2s@7e203000 { compatible = "brcm,bcm2835-i2s"; reg = <0x7e203000 0x20>, <0x7e101098 0x02>; dmas = <&dma 2>, <&dma 3>; dma-names = "tx", "rx"; status = "disabled"; }; The i2s driver fails to load because the second reg range overlaps with the range from clocks (which was introduced with the commit mentioned above. This patch only changes the driver to work again without this second reg address range and using the clocks property instead. > >> This patch documents the required changes to the bindings. >> >> Signed-off-by: Martin Sperl <kernel@martin.sperl.org> >> --- >> Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt | 7 +++---- >> 1 file changed, 3 insertions(+), 4 deletions(-) > > But I leave it to platform maintainers to decide if breaking > compatibility is okay, so: > > Acked-by: Rob Herring <robh@kernel.org> Thanks, Martin
diff --git a/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt b/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt index 65783de..b331f26 100644 --- a/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt +++ b/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt @@ -4,11 +4,10 @@ Required properties: - compatible: "brcm,bcm2835-i2s" - reg: A list of base address and size entries: * The first entry should cover the PCM registers - * The second entry should cover the PCM clock registers +- clocks: the (PCM) clock to use - dmas: List of DMA controller phandle and DMA request line ordered pairs. - dma-names: Identifier string for each DMA request line in the dmas property. These strings correspond 1:1 with the ordered pairs in dmas. - One of the DMA channels will be responsible for transmission (should be named "tx") and one for reception (should be named "rx"). @@ -16,8 +15,8 @@ Example: bcm2835_i2s: i2s@7e203000 { compatible = "brcm,bcm2835-i2s"; - reg = <0x7e203000 0x20>, - <0x7e101098 0x02>; + reg = <0x7e203000 0x24>; + clocks = <&clocks BCM2835_CLOCK_PCM>; dmas = <&dma 2>, <&dma 3>;