[PATCH linux dev-4.10 v2] ARM: dts: aspeed: Update i2c binding
Andrew Jeffery
andrew at aj.id.au
Fri Apr 28 10:50:19 AEST 2017
On Fri, 2017-04-28 at 00:13 +0930, Joel Stanley wrote:
> The I2C binding changed when upstreaming the I2C driver.
>
> This adds aliases for the 14 built-in I2C busses to ensure userspace
> sees the numbering that we had with the old driver.
>
> > Signed-off-by: Joel Stanley <joel at jms.id.au>
> ---
>
> Boot tested on qemu-palmetto. We see the same i2c entries under /dev as before,
> so the aliases work. Note that we can't use qemu for testing with the new
> driver, tracked at https://github.com/openbmc/qemu/issues/5
>
> arch/arm/boot/dts/aspeed-g4.dtsi | 173 ++++++++++++++++++++++------------
> arch/arm/boot/dts/aspeed-g5.dtsi | 197 +++++++++++++++++++++++++--------------
> 2 files changed, 241 insertions(+), 129 deletions(-)
>
> diff --git a/arch/arm/boot/dts/aspeed-g4.dtsi b/arch/arm/boot/dts/aspeed-g4.dtsi
> index b9a6730cc831..f7767b999791 100644
> --- a/arch/arm/boot/dts/aspeed-g4.dtsi
> +++ b/arch/arm/boot/dts/aspeed-g4.dtsi
> @@ -18,6 +18,23 @@
> > };
> > };
>
> > + aliases {
> > + i2c0 = &i2c0;
> > + i2c1 = &i2c1;
> > + i2c2 = &i2c2;
> > + i2c3 = &i2c3;
> > + i2c4 = &i2c4;
> > + i2c5 = &i2c5;
> > + i2c6 = &i2c6;
> > + i2c7 = &i2c7;
> > + i2c8 = &i2c8;
> > + i2c9 = &i2c9;
> > + i2c10 = &i2c10;
> > + i2c11 = &i2c11;
> > + i2c12 = &i2c12;
> > + i2c13 = &i2c13;
> > + };
> +
> > clocks {
> > };
>
> @@ -958,200 +975,240 @@
> > };
>
> > > i2c: i2c at 1e78a000 {
> > + compatible = "simple-bus";
> > #address-cells = <1>;
> > #size-cells = <1>;
> > - #interrupt-cells = <1>;
> -
> > - compatible = "aspeed,ast2400-i2c-controller";
> > - reg = <0x1e78a000 0x40>;
> > ranges = <0 0x1e78a000 0x1000>;
> > - interrupts = <12>;
> > - clocks = <&clk_apb>;
> > - clock-ranges;
> > - interrupt-controller;
> +
> > > + i2c_ic: interrupt-controller at 0 {
> > + #interrupt-cells = <1>;
> > + compatible = "aspeed,ast2400-i2c-ic";
> > + reg = <0x0 0x40>;
> > + interrupts = <12>;
> > + interrupt-controller;
> > + };
>
> > > i2c0: i2c-bus at 40 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x40 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <0>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <0>;
> > - interrupt-parent = <&i2c>;
> > + interrupt-parent = <&i2c_ic>;
> > + status = "disabled";
> > /* Does not need pinctrl node */
> > };
>
> > > i2c1: i2c-bus at 80 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x80 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <1>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <1>;
> > + interrupt-parent = <&i2c_ic>;
> > + status = "disabled";
> > /* Does not need pinctrl node */
> > };
>
> > > i2c2: i2c-bus at c0 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > - reg = <0xC0 0x40>;
> > + #interrupt-cells = <1>;
> +
> > + reg = <0xc0 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <2>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <2>;
> > - pinctrl-names = "default";
> - pinctrl-0 = <&pinctrl_i2c3_default>;
We still need the pinctrl properties.
> + interrupt-parent = <&i2c_ic>;
> > + status = "disabled";
> > + /* Does not need pinctrl node */
> > };
>
> > > i2c3: i2c-bus at 100 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x100 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <3>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <3>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c4_default>;
> > + status = "disabled";
> > };
>
> > > i2c4: i2c-bus at 140 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x140 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <4>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <4>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c5_default>;
> > + status = "disabled";
> > };
>
> > > i2c5: i2c-bus at 180 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x180 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <5>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <5>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c6_default>;
> > + status = "disabled";
> > };
>
> > > i2c6: i2c-bus at 1c0 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > - reg = <0x1C0 0x40>;
> > + #interrupt-cells = <1>;
> +
> > + reg = <0x1c0 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <6>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <6>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c7_default>;
> > + status = "disabled";
> > };
>
> > > i2c7: i2c-bus at 300 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x300 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <7>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <7>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c8_default>;
> > + status = "disabled";
> > };
>
> > > i2c8: i2c-bus at 340 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x340 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <8>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <8>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c9_default>;
> > + status = "disabled";
> > };
>
> > > i2c9: i2c-bus at 380 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x380 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <9>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <9>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c10_default>;
> > + status = "disabled";
> > };
>
> > > i2c10: i2c-bus at 3c0 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x3c0 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <10>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <10>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c11_default>;
> > + status = "disabled";
> > };
>
> > > i2c11: i2c-bus at 400 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x400 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <11>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <11>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c12_default>;
> > + status = "disabled";
> > };
>
> > > i2c12: i2c-bus at 440 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x440 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <12>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <12>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c13_default>;
> > + status = "disabled";
> > };
>
> > > i2c13: i2c-bus at 480 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x480 0x40>;
> > compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <13>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <13>;
> > - /* Does not need pinctrl node */
> > + interrupt-parent = <&i2c_ic>;
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_i2c14_default>;
> > + status = "disabled";
> > };
> -
> > };
> -
> > };
> > };
> };
> diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi
> index ddfb729bb85a..6aef4b7fa529 100644
> --- a/arch/arm/boot/dts/aspeed-g5.dtsi
> +++ b/arch/arm/boot/dts/aspeed-g5.dtsi
> @@ -18,6 +18,23 @@
> > };
> > };
>
> > + aliases {
> > + i2c0 = &i2c0;
> > + i2c1 = &i2c1;
> > + i2c2 = &i2c2;
> > + i2c3 = &i2c3;
> > + i2c4 = &i2c4;
> > + i2c5 = &i2c5;
> > + i2c6 = &i2c6;
> > + i2c7 = &i2c7;
> > + i2c8 = &i2c8;
> > + i2c9 = &i2c9;
> > + i2c10 = &i2c10;
> > + i2c11 = &i2c11;
> > + i2c12 = &i2c12;
> > + i2c13 = &i2c13;
> > + };
> +
> > ahb {
> > compatible = "simple-bus";
> > #address-cells = <1>;
> @@ -1149,199 +1166,237 @@
> > };
>
> > > i2c: i2c at 1e78a000 {
> > + compatible = "simple-bus";
> > #address-cells = <1>;
> > #size-cells = <1>;
> > - #interrupt-cells = <1>;
> -
> > - compatible = "aspeed,ast2400-i2c-controller";
> > - reg = <0x1e78a000 0x40>;
> > ranges = <0 0x1e78a000 0x1000>;
> > - interrupts = <12>;
> > - clocks = <&clk_apb>;
> > - clock-ranges;
> > - interrupt-controller;
> +
> > > + i2c_ic: interrupt-controller at 0 {
> > + #interrupt-cells = <1>;
> > + compatible = "aspeed,ast2500-i2c-ic";
> > + reg = <0x0 0x40>;
> > + interrupts = <12>;
> > + interrupt-controller;
> > + };
>
> > > i2c0: i2c-bus at 40 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x40 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <0>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <0>;
> > - interrupt-parent = <&i2c>;
> > + interrupt-parent = <&i2c_ic>;
> > + status = "disabled";
> > };
>
> > > i2c1: i2c-bus at 80 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x80 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <1>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <1>;
> > + interrupt-parent = <&i2c_ic>;
> > + status = "disabled";
> > };
>
> > > i2c2: i2c-bus at c0 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > - reg = <0xC0 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <2>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + #interrupt-cells = <1>;
> +
> > + reg = <0xc0 0x40>;
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <2>;
> > - pinctrl-names = "default";
> - pinctrl-0 = <&pinctrl_i2c3_default>;
Again, we still need the pinctrl properties.
> + interrupt-parent = <&i2c_ic>;
> > + status = "disabled";
> > };
>
> > > i2c3: i2c-bus at 100 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x100 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <3>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <3>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c4_default>;
> > + status = "disabled";
> > };
>
> > > i2c4: i2c-bus at 140 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x140 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <4>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <4>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c5_default>;
> > + status = "disabled";
> > };
>
> > > i2c5: i2c-bus at 180 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x180 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <5>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <5>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c6_default>;
> > + status = "disabled";
> > };
>
> > > i2c6: i2c-bus at 1c0 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > - reg = <0x1C0 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <6>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + #interrupt-cells = <1>;
> +
> > + reg = <0x1c0 0x40>;
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <6>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c7_default>;
> > + status = "disabled";
> > };
>
> > > i2c7: i2c-bus at 300 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x300 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <7>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <7>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c8_default>;
> > + status = "disabled";
> > };
>
> > > i2c8: i2c-bus at 340 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x340 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <8>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <8>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c9_default>;
> > + status = "disabled";
> > };
>
> > > i2c9: i2c-bus at 380 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x380 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <9>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <9>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c10_default>;
> > + status = "disabled";
> > };
>
> > > i2c10: i2c-bus at 3c0 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x3c0 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <10>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <10>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c11_default>;
> > + status = "disabled";
> > };
>
> > > i2c11: i2c-bus at 400 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x400 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <11>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <11>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c12_default>;
> > + status = "disabled";
> > };
>
> > > i2c12: i2c-bus at 440 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x440 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <12>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <12>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c13_default>;
> > + status = "disabled";
> > };
>
> > > i2c13: i2c-bus at 480 {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > + #interrupt-cells = <1>;
> +
> > reg = <0x480 0x40>;
> > - compatible = "aspeed,ast2400-i2c-bus";
> > - bus = <13>;
> > - clock-frequency = <100000>;
> > - status = "disabled";
> > + compatible = "aspeed,ast2500-i2c-bus";
> > + clocks = <&clk_apb>;
> > + bus-frequency = <100000>;
> > interrupts = <13>;
> > + interrupt-parent = <&i2c_ic>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_i2c14_default>;
> > + status = "disabled";
> > };
> -
> > };
> -
> > };
> > };
> };
Overall, should we give the i2c nodes the same treatment in store for
the pinctrl nodes? That is, flatten the file out by moving them to an
&i2c { }; section down the bottom to get them out of the way? It's all
pretty tedious and a bit of a distraction from the other interesting
parts of the structure.
Cheers,
Andrew
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: This is a digitally signed message part
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20170428/e8d42050/attachment-0001.sig>
More information about the openbmc
mailing list