gpio-sim as a GPIO Interrupt for PMIC driver

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

gpio-sim as a GPIO Interrupt for PMIC driver

ソリューションへジャンプ
2,265件の閲覧回数
elFunko
Contributor III

Hi everyone,

I'm currently working on getting a custom i.MX93 board up and running, and I'm facing an issue with the PMIC (the NXP PCA9451A). The problem is that the PMIC requires a GPIO interrupt to load its driver, but our board does not have any free GPIOs available.

To solve this, we came up with the idea of using a "fake" GPIO through gpio-sim or gpio-mockup, so that we can get the PMIC up and running for now. In a future revision of the board, we plan to replace this mockup GPIO with a real one. However, I'm struggling to get the PMIC driver to load, regardless of how I configure the gpio-sim node.

I've seen a linux patch from 2022 "[PATCH v2 0/3] allow gpio simulator be used as interrupt controller ", which seems to be attempting the same thing I'm trying to do. We're currently using Linux version 6.6.28-lf-6.6.y-lf-6.6.y-g81ea508ca4b7-dirty.

I've also made sure to add the necessary kernel configuration options, including:

  • CONFIG_GPIO_SIM=y

  • CONFIG_GPIOLIB=y

  • CONFIG_IRQ_SIM=y

Despite this, the PMIC driver does not load. Below is how I'd like the PMIC node to look in the device tree, using gpio-sim as the interrupt parent:

&lpi2c1 {
    #address-cells = <1>;
    #size-cells = <0>;
    clock-frequency = <400000>;
    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&pinctrl_lpi2c1>;
    pinctrl-1 = <&pinctrl_lpi2c1>;
    status = "okay";

    pmic@25 {
        compatible = "nxp,pca9451a";
        reg = <0x25>;
        interrupt-parent = <&gpio_sim>;
        interrupts = <0 IRQ_TYPE_EDGE_FALLING>;

Has anyone successfully used gpio-sim in a similar scenario, or can anyone suggest how the gpio-sim node should be configured to make this work?

Any help would be greatly appreciated!

Best regards,
Elia

 

タグ(2)
0 件の賞賛
返信
1 解決策
2,169件の閲覧回数
elFunko
Contributor III

To anyone having the same question I got it to work:

/ {
	gpio_sim {
		compatible = "gpio-simulator";

		bank0: bank0 {
			gpio-controller;
			#gpio-cells = <1>;
			ngpios = <1>;

			interrupt-controller;
			#interrupt-cells = <1>;
		};
	};
};

 

元の投稿で解決策を見る

0 件の賞賛
返信
1 返信
2,170件の閲覧回数
elFunko
Contributor III

To anyone having the same question I got it to work:

/ {
	gpio_sim {
		compatible = "gpio-simulator";

		bank0: bank0 {
			gpio-controller;
			#gpio-cells = <1>;
			ngpios = <1>;

			interrupt-controller;
			#interrupt-cells = <1>;
		};
	};
};

 

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-1972220%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EPMIC%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%81%AEGPIO%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AEgpio-sim%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1972220%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSPAN%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%E7%9A%86%E3%81%95%E3%82%93%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E7%8F%BE%E5%9C%A8%E3%80%81%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0i.MX93%E3%83%9C%E3%83%BC%E3%83%89%E3%82%92%E7%A8%BC%E5%83%8D%E3%81%95%E3%81%9B%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E3%81%93%E3%82%8D%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81PMIC(NXP%20PCA9451A)%E3%81%AE%E5%95%8F%E9%A1%8C%E3%81%AB%E7%9B%B4%E9%9D%A2%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E5%95%8F%E9%A1%8C%E3%81%AF%E3%80%81PMIC%E3%81%8C%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%82%92%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%ABGPIO%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%82%92%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AB%E3%81%AF%E4%BD%BF%E7%94%A8%E5%8F%AF%E8%83%BD%E3%81%AA%E7%A9%BA%E3%81%8DGPIO%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%81%93%E3%82%8C%E3%82%92%E8%A7%A3%E6%B1%BA%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%80%81gpio-sim%E3%81%BE%E3%81%9F%E3%81%AFgpio-mockup%E3%82%92%E4%BB%8B%E3%81%97%E3%81%A6%E3%80%8C%E5%81%BD%E3%81%AE%E3%80%8DGPIO%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%81%84%E3%81%86%E3%82%A2%E3%82%A4%E3%83%87%E3%82%A2%E3%82%92%E6%80%9D%E3%81%84%E3%81%A4%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E5%B0%86%E6%9D%A5%E3%81%AE%E6%94%B9%E8%A8%82%E3%81%A7%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E3%83%A2%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97GPIO%E3%82%92%E5%AE%9F%E9%9A%9B%E3%81%AE%E3%82%82%E3%81%AE%E3%81%AB%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%8B%E4%BA%88%E5%AE%9A%E3%81%A7%E3%81%99%E3%80%82%E3%81%9F%E3%81%A0%E3%81%97%E3%80%81gpio-sim%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95%E3%81%AB%E9%96%A2%E4%BF%82%E3%81%AA%E3%81%8F%E3%80%81PMIC%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%82%92%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AB%E8%8B%A6%E5%8A%B4%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%3C%2FSPAN%3E%3CSPAN%3E%202022%E5%B9%B4%E3%81%AELinux%E3%83%91%E3%83%83%E3%83%81%E3%80%8C%5BPATCH%20v2%200%2F3%5Dallow%20gpio%20simulator%20be%20used%20as%20interrupt%20controller%E3%80%8D%E3%82%92%E8%A6%8B%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E7%A7%81%E3%81%8C%E3%82%84%E3%82%8D%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%A8%E5%90%8C%E3%81%98%E3%81%93%E3%81%A8%E3%82%92%E8%A9%A6%E3%81%BF%E3%81%A6%E3%81%84%E3%82%8B%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%E7%8F%BE%E5%9C%A8%E3%80%81Linux%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B36.6.28-lf-6.6.y-lf-6.6.y-g81ea508ca4b7-dirty%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%81%BE%E3%81%9F%E3%80%81%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E5%BF%85%E8%A6%81%E3%81%AA%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E6%A7%8B%E6%88%90%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%82%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CP%3E%3CSPAN%3ECONFIG_GPIO_SIM%3Dy%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%3CSPAN%3ECONFIG_GPIOLIB%3Dy%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%3CSPAN%3ECONFIG_IRQ_SIM%3Dy%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3CSPAN%3E%E3%81%9D%E3%82%8C%E3%81%AB%E3%82%82%E3%81%8B%E3%81%8B%E3%82%8F%E3%82%89%E3%81%9A%E3%80%81PMIC%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%81%AF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BE%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E4%BB%A5%E4%B8%8B%E3%81%AF%E3%80%81GPIO-sim%E3%82%92%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%AE%E8%A6%AA%E3%81%A8%E3%81%97%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81PMIC%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%83%84%E3%83%AA%E3%83%BC%E3%81%A7%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%81%8B%E3%81%A7%E3%81%99%E3%80%82%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%26amp%3Blpi2c1%20%7B%0A%20%20%20%20%23address-cells%20%3D%20%26lt%3B1%26gt%3B%3B%0A%20%20%20%20%23size-cells%20%3D%20%26lt%3B0%26gt%3B%3B%0A%20%20%20%20clock-frequency%20%3D%20%26lt%3B400000%26gt%3B%3B%0A%20%20%20%20pinctrl-names%20%3D%20%22default%22%2C%20%22sleep%22%3B%0A%20%20%20%20pinctrl-0%20%3D%20%26lt%3B%26amp%3Bpinctrl_lpi2c1%26gt%3B%3B%0A%20%20%20%20pinctrl-1%20%3D%20%26lt%3B%26amp%3Bpinctrl_lpi2c1%26gt%3B%3B%0A%20%20%20%20status%20%3D%20%22okay%22%3B%0A%0A%20%20%20%20pmic%4025%20%7B%0A%20%20%20%20%20%20%20%20compatible%20%3D%20%22nxp%2Cpca9451a%22%3B%0A%20%20%20%20%20%20%20%20reg%20%3D%20%26lt%3B0x25%26gt%3B%3B%0A%20%20%20%20%20%20%20%20interrupt-parent%20%3D%20%26lt%3B%26amp%3Bgpio_sim%26gt%3B%3B%0A%20%20%20%20%20%20%20%20interrupts%20%3D%20%26lt%3B0%20IRQ_TYPE_EDGE_FALLING%26gt%3B%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CSPAN%3E%E8%AA%B0%E3%81%8B%E3%81%8C%E5%90%8C%E6%A7%98%E3%81%AE%E3%82%B7%E3%83%8A%E3%83%AA%E3%82%AA%E3%81%A7gpio-sim%E3%82%92%E6%88%90%E5%8A%9F%E8%A3%8F%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8B%E3%80%81%E3%81%BE%E3%81%9F%E3%81%AF%E8%AA%B0%E3%81%8B%E3%81%8C%E3%81%93%E3%82%8C%E3%82%92%E6%A9%9F%E8%83%BD%E3%81%95%E3%81%9B%E3%82%8B%E3%81%9F%E3%82%81%E3%81%ABgpio-sim%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E6%A7%8B%E6%88%90%E3%81%99%E3%81%B9%E3%81%8D%E3%81%8B%E3%82%92%E6%8F%90%E6%A1%88%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%81%A9%E3%82%93%E3%81%AA%E5%8A%A9%E3%81%91%E3%81%A7%E3%82%82%E5%A4%A7%E6%AD%93%E8%BF%8E%E3%81%A7%E3%81%99!%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E3%82%A8%E3%83%AA%E3%82%A2%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1993513%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20PMIC%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%81%AEGPIO%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AEgpio-sim%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1993513%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%90%8C%E3%81%98%E8%B3%AA%E5%95%8F%E3%82%92%E6%8C%81%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E4%BA%BA%E3%81%AB%E3%81%AF%E3%80%81%E7%A7%81%E3%81%AF%E3%81%9D%E3%82%8C%E3%82%92%E6%A9%9F%E8%83%BD%E3%81%95%E3%81%9B%E3%81%BE%E3%81%97%E3%81%9F%3A%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%2F%20%7B%0A%09gpio_sim%20%7B%0A%09%09compatible%20%3D%20%22gpio-simulator%22%3B%0A%0A%09%09bank0%3A%20bank0%20%7B%0A%09%09%09gpio-controller%3B%0A%09%09%09%23gpio-cells%20%3D%20%26lt%3B1%26gt%3B%3B%0A%09%09%09ngpios%20%3D%20%26lt%3B1%26gt%3B%3B%0A%0A%09%09%09interrupt-controller%3B%0A%09%09%09%23interrupt-cells%20%3D%20%26lt%3B1%26gt%3B%3B%0A%09%09%7D%3B%0A%09%7D%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E