1859981_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1859981_ja-JP

1859981_ja-JP

未実装の set_config 機能 : i.MX8MP での GPIO ピン配置のロス

こんにちは、皆さん

現在、i.MX8MPプラットフォームを使用しており、入力/プルアップモードでGPIOピンをコンフィギュレーションする際に問題が発生しました。シナリオを次に示します。

私のドライバーの 1 つでは、プローブ フェーズ中にピンが出力モードで使用され、その後入力モードに戻ります。しかし、このプロセスの後、ピンは構成を失い、プルアップ モードではなくなったことがわかりました。

DTBは次のとおりです。

gt928@5d {
[...]
pincrtl-0 = <&pinctrl_ts>;
gt928,irq-gpios = <&gpio1 6 GPIO_PULL_UP>;
};

pinctrl_ts: tsgrp {
fsl,pins = <
MX8MP_IOMUXC_GPIO1_IO06__GPIO1_IO06 0x146 /* 0x146 == pull up, drive strength = 6 */
MX8MP_IOMUXC_SD1_DATA4__GPIO2_IO06 0xd6
>;
};

参照用の呼び出し履歴を次に示します。

[ 14.630895] gpio_do_set_config+0x24/0x74
[ 14.630905] gpio_set_config_with_argument+0x38/0x44
[ 14.630911] gpio_set_bias+0x84/0xa4
[ 14.643448] gpiod_direction_input+0x198/0x1ac
[ 14.647892] goodix_irq_direction_input+0x40/0xa4 [goodix]
[ 14.653388] goodix_ts_probe+0x3fc/0x5c8 [goodix]

さらに調査すると、set_config機能が実装されていないことに気付きました(gpiolib.c次のチェックを行います)。

gpio_do_set_config(struct gpio_chip *gc, unsigned int offset, unsigned long config) {
{
if (!gc->set_config)
return -ENOTSUPP;
[...]
}
なぜset_configが実装されていないのか興味があります。
私は他の人がそれをやったのを見てきました:
 

​gc->set_config = pca953x_gpio_set_config;
or
gc->set_config = ep93xx_gpio_set_config;


 
この問題に対処する方法についての洞察や提案は大歓迎です。

あなたの助けをよろしくお願いいたします!

よろしくお願いいたします
アレクサンドル

Re: 未実装の set_config 機能: i.MX8MP での GPIO ピン コンフィギュレーションの損失

これが私の問題を解決した方法です。
私の調査結果に基づくと、タッチスクリーンノードの下に<&pinctrl_ts>を配置すると、ピン機能が正しく適用されません。


&i2c3 {
	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c3>,<&pinctrl_ts>;
	status = "okay";

	ov5640_0: ov5640_mipi@3c {
		status = "disabled";
	};

	gt928@5d {
		compatible = "goodix,gt928";
		reg = <0x5d>;
		pincrtl-names = "default";
		pincrtl-0 = <&pinctrl_ts>;
		interrupt-parent = <&gpio1>;
		interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
		gt928,irq-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
		gt928,reset-gpios = <&gpio2 6 GPIO_ACTIVE_HIGH>;
		touchscreen-inverted-x; 
		status = "okay";
	};
};

[...]

&iomuxc {
	pinctrl_ts: tsgrp {
		fsl,pins = <
			MX8MP_IOMUXC_GPIO1_IO06__GPIO1_IO06		0x146 /* 0x146 == pull up, drive strength = 6 */
			MX8MP_IOMUXC_SD1_DATA4__GPIO2_IO06		0xd6
		>;
	};
};


しかし、&i2c3ノードに移動すると、ピンは正しく構成されています。

お時間をいただきありがとうございました!

Re: 未実装の set_config 機能: i.MX8MP での GPIO ピン コンフィギュレーションの損失なるほど、しかし私の質問は、ピンの方向を変更すると、なぜデバイスツリーからピン構成が失われるのかということです。

シナリオ:



私のピンはプルアップで構成されています。
私のドライバはロードし、出力にピンを設定します。プルアップはもうありません。
入力に戻します

期待:ピンは入力、プルアップに設定
現在の動作:ピンは入力に設定されていますが、プルアップはもうありません。



私が見る限り、私たちが電話をかけるとき
gpiod_direction_input()


この関数は、入力にピンを設定してから、関数を呼び出します
gpio_set_bias(struct gpio_desc *desc)


これはピンのプル/プルダウン状態を復元しようとしているようですが、前述のように、デバイスツリーフラグを再適用するためにno機能が実装されているようです。

Re: 未実装の set_config 機能: i.MX8MP での GPIO ピン コンフィギュレーションの損失

こんにちは@alexandreMarquis 

gpio iomux 値は、gpio ドライバー プローブの前に imx_pmx_set で書き込まれているため、gpio ドライバーでset_config機能を使用する必要はありません。imx_pinctrl_probe

gpio ioエキスパンダードライバーの場合、プルアップ/ダウンを設定する別のドライバーがないため、この機能が必要です。


よろしくお願いいたします。

志明

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 03:21 PM
Updated by: