[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#877869: kirkwood-t5325.dts fixes for poweroff and sound device detection issues on HP T5325



Package: linux-image-4.9.0-3-marvell
Version: 4.9.30-2+deb9u5

When the kirkwood-t5325.dtb included in the package is used on HP T5325,
the poweroff command fails to power off the device (indicated by the
front blue light not turning off). It does however brings the device to
near power off ( I have seen a kernel panic at the end that can be seen
if a hardware serial connection is used). Also, with the same dtb, sound
device does not get detected. dmesg output contains the following:

[   10.861482] OF: /sound/simple-audio-card,cpu: arguments longer than
property
[   10.861492] asoc-simple-card sound: parse error -22
[   10.861508] asoc-simple-card: probe of sound failed with error -22

Fix:

Both problems could be corrected by fixing the dtb. "bodhi" at
https://forum.doozan.com possibly with the help of other forum members
had fixed and tested the corrections. Thanks go to him and those who
supported him!

If ever needed, package "bodhi" maintains can be found at
https://forum.doozan.com/read.php?2,12096 and the download contains a
patch file showing his modifications.

I myself tested the changes needed to fix the poweroff problem and the
sound device detection issue by getting the upstream kernel source,
changing two lines and compiling the kirkwood-t5325.dts. Please find the
attached working dtb and dts. The two fixes needed are as follows:

--- linux-master/arch/arm/boot/dts/kirkwood-t5325.dts    2017-10-05
01:16:05.000000000 +0100
+++ linux-master-fixed/arch/arm/boot/dts/kirkwood-t5325.dts   
2017-10-06 13:59:19.834377641 +0100
@@ -174,7 +174,7 @@
         compatible = "gpio-poweroff";
         pinctrl-0 = <&pmx_power_off>;
         pinctrl-names = "default";
-        gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
+        gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
     };
 
     sound {
@@ -195,7 +195,7 @@
         simple-audio-card,mclk-fs = <256>;
 
         simple-audio-card,cpu {
-            sound-dai = <&audio>;
+            sound-dai = <&audio 0>;
         };
 
         simple-audio-card,codec {

I haven't submitted the changes to upstream. Appreciate if you release
the package with a corrected kirkwood-t5325.dtb.

Kamal

Attachment: kirkwood-t5325.dtb
Description: Binary data

/*
 * Device Tree file for HP t5325 Thin Client"
 *
 * Copyright (C) 2014
 *
 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 * Andrew Lunn <andrew@lunn.ch>
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
*/

/dts-v1/;

#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"

/ {
	model = "HP t5325 Thin Client";
	compatible = "hp,t5325", "marvell,kirkwood-88f6281", "marvell,kirkwood";

	memory {
		device_type = "memory";
		reg = <0x00000000 0x20000000>;
	};

	chosen {
		bootargs = "console=ttyS0,115200n8";
		stdout-path = &uart0;
	};

	ocp@f1000000 {
		pinctrl: pin-controller@10000 {
			pinctrl-0 = <&pmx_i2s &pmx_sysrst>;
			pinctrl-names = "default";

			pmx_button_power: pmx-button_power {
				marvell,pins = "mpp45";
				marvell,function = "gpio";
			};

			pmx_power_off: pmx-power-off {
				marvell,pins = "mpp48";
				marvell,function = "gpio";
			};

			pmx_led: pmx-led {
				marvell,pins = "mpp21";
				marvell,function = "gpio";
			};

			pmx_usb_sata_power_enable: pmx-usb-sata-power-enable {
				marvell,pins = "mpp44";
				marvell,function = "gpio";
			};

			pmx_spi: pmx-spi {
				marvell,pins = "mpp1", "mpp2", "mpp3", "mpp7";
				marvell,function = "spi";
			};

			pmx_sysrst: pmx-sysrst {
				marvell,pins = "mpp6";
				marvell,function = "sysrst";
			};

			pmx_i2s: pmx-i2s {
				marvell,pins = "mpp39", "mpp40", "mpp41", "mpp42",
					       "mpp43";
				marvell,function = "audio";
			};
		};

		spi@10600 {
			status = "okay";

			flash@0 {
				#address-cells = <1>;
				#size-cells = <1>;
				compatible = "st,m25p80", "jedec,spi-nor";
				spi-max-frequency = <86000000>;
				reg = <0>;
				mode = <0>;

				partition@0 {
					reg = <0x0 0x80000>;
					label = "u-boot";
				};

				partition@1 {
					reg = <0x80000 0x40000>;
					label = "SSD firmware";
				};

				partition@2 {
					reg = <0xc0000 0x10000>;
					label = "u-boot env";
				};

				partition@3 {
					reg = <0xd0000 0x10000>;
					label = "permanent u-boot env";
				};

				partition@4 {
					reg = <0xd0000 0x10000>;
					label = "permanent u-boot env";
				};
			};
		};

		i2c@11000 {
			status = "okay";

			alc5621: alc5621@1a {
				compatible = "realtek,alc5621";
				reg = <0x1a>;
				#sound-dai-cells = <0>;
				add-ctrl = <0x3700>;
				jack-det-ctrl = <0x4810>;
			};
		};

		serial@12000 {
			status = "okay";
		};

		sata@80000 {
			status = "okay";
			nr-ports = <2>;
		};

		audio: audio-controller@a0000 {
			status = "okay";
		};
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-0 = <&pmx_usb_sata_power_enable>;
		pinctrl-names = "default";

		usb_power: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			regulator-name = "USB-SATA Power";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
			gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-0 = <&pmx_button_power>;
		pinctrl-names = "default";

		power {
			label = "Power Button";
			linux,code = <KEY_POWER>;
			gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio_poweroff {
		compatible = "gpio-poweroff";
		pinctrl-0 = <&pmx_power_off>;
		pinctrl-names = "default";
		gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,routing =
			"Headphone Jack", "HPL",
			"Headphone Jack", "HPR",
			"Speaker", "SPKOUT",
			"Speaker", "SPKOUTN",
			"MIC1", "Mic Jack",
			"MIC2", "Mic Jack";
		simple-audio-card,widgets =
			"Headphone", "Headphone Jack",
			"Speaker", "Speaker",
			"Microphone", "Mic Jack";

		simple-audio-card,mclk-fs = <256>;

		simple-audio-card,cpu {
			sound-dai = <&audio 0>;
		};

		simple-audio-card,codec {
			sound-dai = <&alc5621>;
		};
	};
};

&mdio {
	status = "okay";

	ethphy0: ethernet-phy@8 {
		device_type = "ethernet-phy";
		reg = <8>;
	};
};

&eth0 {
	status = "okay";
	ethernet0-port@0 {
		phy-handle = <&ethphy0>;
	};
};

&pciec {
        status = "okay";
};

&pcie0 {
	status = "okay";
};

Reply to: