mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00

Fix the issue where both 'output-low' and 'output-high' exist under GPIO
hog nodes (rst_usb_hub_hog and sel_usb_hub_hog) when applying device
tree overlays. Since /delete-property/ is not supported in the overlays,
setting 'output-low' results in both properties being present. The
workaround is to disable these hogs and create new ones with 'output-low'
as needed.
Fix below CHECK_DTBS warning:
arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl-mba8mx-usbotg.dtb: sel-usb-hub-hog:
{'output-low': True, 'gpio-hog': True, 'gpios': [[1, 0]], 'output-high': True, 'phandle': 108, '$nodename': ['sel-usb-hub-hog']}
is valid under each of {'required': ['output-low']}, {'required': ['output-high']
Fixes: 3f6fc30abe
("arm64: dts: imx8mn: tqma8mqnl-mba8mx: Add USB DR overlay")
Signed-off-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
89 lines
1.6 KiB
Text
89 lines
1.6 KiB
Text
// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
|
|
/*
|
|
* Copyright (c) 2022-2024 TQ-Systems GmbH <linux@ew.tq-group.com>,
|
|
* D-82229 Seefeld, Germany.
|
|
* Author: Alexander Stein
|
|
*/
|
|
|
|
/dts-v1/;
|
|
/plugin/;
|
|
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
|
|
#include "imx8mn-pinfunc.h"
|
|
|
|
&{/} {
|
|
connector {
|
|
compatible = "gpio-usb-b-connector", "usb-b-connector";
|
|
type = "micro";
|
|
label = "X19";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_usb1_connector>;
|
|
id-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
|
|
|
|
port {
|
|
usb_dr_connector: endpoint {
|
|
remote-endpoint = <&usb1_drd_sw>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
/*
|
|
* rst_usb_hub_hog and sel_usb_hub_hog have property 'output-high',
|
|
* dt overlay don't support /delete-property/. Both 'output-low' and
|
|
* 'output-high' will be exist under hog nodes if overlay file set
|
|
* 'output-low'. Workaround is disable these hog and create new hog with
|
|
* 'output-low'.
|
|
*/
|
|
|
|
&rst_usb_hub_hog {
|
|
status = "disabled";
|
|
};
|
|
|
|
&expander0 {
|
|
rst-usb-low-hub-hog {
|
|
gpio-hog;
|
|
gpios = <13 0>;
|
|
output-low;
|
|
line-name = "RST_USB_HUB#";
|
|
};
|
|
};
|
|
|
|
&sel_usb_hub_hog {
|
|
status = "disabled";
|
|
};
|
|
|
|
&gpio2 {
|
|
sel-usb-low-hub-hog {
|
|
gpio-hog;
|
|
gpios = <1 GPIO_ACTIVE_HIGH>;
|
|
output-low;
|
|
};
|
|
};
|
|
|
|
&usbotg1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_usbotg>;
|
|
dr_mode = "otg";
|
|
srp-disable;
|
|
hnp-disable;
|
|
adp-disable;
|
|
power-active-high;
|
|
/delete-property/ disable-over-current;
|
|
over-current-active-low;
|
|
usb-role-switch;
|
|
status = "okay";
|
|
|
|
port {
|
|
usb1_drd_sw: endpoint {
|
|
remote-endpoint = <&usb_dr_connector>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&iomuxc {
|
|
pinctrl_usb1_connector: usb1-connectorgrp {
|
|
fsl,pins = <MX8MN_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x1c0>;
|
|
};
|
|
};
|