i.MX93: Sharing GPIO2 between Linux and Cortex-M33 causes Linux touchscreen to stop

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

i.MX93: Sharing GPIO2 between Linux and Cortex-M33 causes Linux touchscreen to stop

133 次查看
bora
Contributor III

I am using an i.MX93 with Linux on the Cortex-A55 and bare-metal MCUXpresso SDK firmware on the Cortex-M33.

I want both cores to use different pins of GPIO2:

Linux: touchscreen and buttons. The touchscreen uses GPIO2_IO11/IO12 for IRQ/reset.
M33: GPIO2_IO22 as an interrupt input (RANin) and GPIO2_IO27 as an output (RANout).
Problem

Without starting the M33 firmware, the Linux touchscreen works, buttons also. When the M33 firmware runs, touch and buttons no longer work, and the touchscreen interrupt counter in /proc/interrupts does not increase:

on M33 I use this configuration:

#define PIN_IN_RGPIO           GPIO2
#define PIN_OUT_RGPIO          GPIO2
#define PIN_IN_RGPIO_PIN       22U
#define PIN_OUT_RGPIO_PIN      27U
#define M33_PIN_MASK ((1U << PIN_OUT_RGPIO_PIN) | (1U << PIN_IN_RGPIO_PIN))
#define EXAMPLE_RGPIO_CLOCK_ROOT kCLOCK_Root_BusWakeup
#define EXAMPLE_RGPIO_CLOCK_GATE kCLOCK_Gpio2
 
const clock_root_config_t rgpioClkCfg = {
    .clockOff = false,
    .mux = 0,
    .div = 1
};
 
CLOCK_SetRootClock(EXAMPLE_RGPIO_CLOCK_ROOT, &rgpioClkCfg);
    CLOCK_EnableClock(EXAMPLE_RGPIO_CLOCK_GATE);
    CLOCK_EnableClock(kCLOCK_Gpio2);
 
PIN_OUT_RGPIO->PCNS &= ~M33_PIN_MASK;
GPIO2->ICNS = 0x0;
 
RGPIO_SetPinInterruptConfig(GPIO2, 22U,
                            kRGPIO_InterruptOutput0,
                            kRGPIO_InterruptRisingEdge);
EnableIRQ(GPIO2_0_IRQn);

 

I would appreciate a support for that.

Bests

标记 (1)
3 回复数

98 次查看
JorgeCas
NXP TechSupport
NXP TechSupport

Hello,

This seems to be an issue with the interrupt configuration since you can use different GPIOs from the same group in different cores.

Which interrupt did you configure in Linux device tree?

Best regards.

0 项奖励
回复

76 次查看
bora
Contributor III

Hi,

for my touch I use this

hycon: touchscreen@38 {
		compatible = "hycon,hy4633";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_touchscreen>;
		reg = <0x38>;
		interrupt-parent = <&gpio2>;
		interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
		reset-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
		vcc-supply = <&reg_3p3v>;
		touchscreen-size-x = <320>;
	  	touchscreen-size-y = <280>;
    };

 

标记 (1)
0 项奖励
回复

62 次查看
JorgeCas
NXP TechSupport
NXP TechSupport

Hello,

Please try to change the interrupt used by M33 core by changing:

GPIO2->ICNS &= ~(1U << 1U);
EnableIRQ(GPIO2_1_IRQn);

Best regards. 

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2418427%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Ei.MX93%EF%BC%9ALinux%20%E5%92%8C%20Cortex-M33%20%E5%85%B1%E4%BA%AB%20GPIO2%20%E4%BC%9A%E5%AF%BC%E8%87%B4%20Linux%20%E8%A7%A6%E6%91%B8%E5%B1%8F%E5%81%9C%E6%AD%A2%E5%B7%A5%E4%BD%9C%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2418427%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%E6%90%AD%E8%BD%BD%20Linux%20%E7%B3%BB%E7%BB%9F%E7%9A%84%20i.MX93%EF%BC%88Cortex-A55%EF%BC%89%EF%BC%8C%E4%BB%A5%E5%8F%8A%E8%A3%B8%E6%9C%BA%20MCUXpresso%20SDK%20%E5%9B%BA%E4%BB%B6%EF%BC%88Cortex-M33%EF%BC%89%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E5%B8%8C%E6%9C%9B%E4%B8%A4%E4%B8%AA%E6%A0%B8%E5%BF%83%E4%BD%BF%E7%94%A8%20GPIO2%20%E7%9A%84%E4%B8%8D%E5%90%8C%E5%BC%95%E8%84%9A%EF%BC%9A%3C%2FP%3E%3CP%3E%3CSTRONG%3ELinux%3C%2FSTRONG%3E%20%EF%BC%9A%E8%A7%A6%E6%91%B8%E5%B1%8F%E5%92%8C%E6%8C%89%E9%92%AE%E3%80%82%E8%A7%A6%E6%91%B8%E5%B1%8F%E4%BD%BF%E7%94%A8%20GPIO2_IO11%2FIO12%20%E8%BF%9B%E8%A1%8C%20IRQ%2FRESET%E3%80%82%3CBR%20%2F%3E%3CSTRONG%3EM33%3C%2FSTRONG%3E%20%EF%BC%9AGPIO2_IO22%20%E4%BD%9C%E4%B8%BA%E4%B8%AD%E6%96%AD%E8%BE%93%E5%85%A5%EF%BC%88RANin%EF%BC%89%EF%BC%8CGPIO2_IO27%20%E4%BD%9C%E4%B8%BA%E8%BE%93%E5%87%BA%EF%BC%88RANout%EF%BC%89%E3%80%82%3CBR%20%2F%3E%E9%97%AE%E9%A2%98%3C%2FP%3E%3CP%3E%E6%97%A0%E9%9C%80%E5%90%AF%E5%8A%A8%20M33%20%E5%9B%BA%E4%BB%B6%EF%BC%8CLinux%20%E8%A7%A6%E6%91%B8%E5%B1%8F%E5%92%8C%E6%8C%89%E9%92%AE%E9%83%BD%E8%83%BD%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%E3%80%82%E5%BD%93M33%E5%9B%BA%E4%BB%B6%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%8C%E8%A7%A6%E6%91%B8%E5%92%8C%E6%8C%89%E9%92%AE%E5%9D%87%E6%97%A0%E6%B3%95%E5%B7%A5%E4%BD%9C%EF%BC%8C%E5%B9%B6%E4%B8%94%2Fproc%2Finterrupts%E4%B8%AD%E7%9A%84%E8%A7%A6%E6%91%B8%E5%B1%8F%E4%B8%AD%E6%96%AD%E8%AE%A1%E6%95%B0%E5%99%A8%E4%B8%8D%E4%BC%9A%E5%A2%9E%E5%8A%A0%EF%BC%9A%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%88%91%E5%9C%A8M33%E4%B8%8A%E4%BD%BF%E7%94%A8%E4%BB%A5%E4%B8%8B%E9%85%8D%E7%BD%AE%EF%BC%9A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%23define%20PIN_IN_RGPIO%20%20%20%20%20%20%20%20%20%20%20GPIO2%0A%23define%20PIN_OUT_RGPIO%20%20%20%20%20%20%20%20%20%20GPIO2%0A%23define%20PIN_IN_RGPIO_PIN%20%20%20%20%20%20%2022U%0A%23define%20PIN_OUT_RGPIO_PIN%20%20%20%20%20%2027U%0A%23define%20M33_PIN_MASK%20((1U%20%26lt%3B%26lt%3B%20PIN_OUT_RGPIO_PIN)%20%7C%20(1U%20%26lt%3B%26lt%3B%20PIN_IN_RGPIO_PIN))%0A%23define%20EXAMPLE_RGPIO_CLOCK_ROOT%20kCLOCK_Root_BusWakeup%0A%23define%20EXAMPLE_RGPIO_CLOCK_GATE%20kCLOCK_Gpio2%0A%20%0Aconst%20clock_root_config_t%20rgpioClkCfg%20%3D%20%7B%0A%20%20%20%20.clockOff%20%3D%20false%2C%0A%20%20%20%20.mux%20%3D%200%2C%0A%20%20%20%20.div%20%3D%201%0A%7D%3B%0A%20%0ACLOCK_SetRootClock(EXAMPLE_RGPIO_CLOCK_ROOT%2C%20%26amp%3BrgpioClkCfg)%3B%0A%20%20%20%20CLOCK_EnableClock(EXAMPLE_RGPIO_CLOCK_GATE)%3B%0A%20%20%20%20CLOCK_EnableClock(kCLOCK_Gpio2)%3B%0A%20%0APIN_OUT_RGPIO-%26gt%3BPCNS%20%26amp%3B%3D%20~M33_PIN_MASK%3B%0AGPIO2-%26gt%3BICNS%20%3D%200x0%3B%0A%20%0ARGPIO_SetPinInterruptConfig(GPIO2%2C%2022U%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kRGPIO_InterruptOutput0%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kRGPIO_InterruptRisingEdge)%3B%0AEnableIRQ(GPIO2_0_IRQn)%3B%0A%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3E%E6%88%91%E5%B8%8C%E6%9C%9B%E5%BE%97%E5%88%B0%E6%94%AF%E6%8C%81%E3%80%82%3C%2FP%3E%3CP%3E%E6%9C%80%E4%BD%B3%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2418665%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX93%3A%20Sharing%20GPIO2%20between%20Linux%20and%20Cortex-M33%20causes%20Linux%20touchscreen%20to%20stop%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2418665%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%82%A8%E5%A5%BD%EF%BC%8C%3C%2FP%3E%3CP%3E%E6%88%91%E7%94%A8%E8%BF%99%E4%B8%AA%E6%9D%A5%E8%A7%A6%E6%91%B8%E6%88%91%E7%9A%84%E7%9A%AE%E8%82%A4%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Ehycon%3A%20touchscreen%4038%20%7B%0A%09%09compatible%20%3D%20%22hycon%2Chy4633%22%3B%0A%09%09pinctrl-names%20%3D%20%22default%22%3B%0A%09%09pinctrl-0%20%3D%20%26lt%3B%26amp%3Bpinctrl_touchscreen%26gt%3B%3B%0A%09%09reg%20%3D%20%26lt%3B0x38%26gt%3B%3B%0A%09%09interrupt-parent%20%3D%20%26lt%3B%26amp%3Bgpio2%26gt%3B%3B%0A%09%09interrupts%20%3D%20%26lt%3B11%20IRQ_TYPE_EDGE_FALLING%26gt%3B%3B%0A%09%09reset-gpios%20%3D%20%26lt%3B%26amp%3Bgpio2%2012%20GPIO_ACTIVE_LOW%26gt%3B%3B%0A%09%09vcc-supply%20%3D%20%26lt%3B%26amp%3Breg_3p3v%26gt%3B%3B%0A%09%09touchscreen-size-x%20%3D%20%26lt%3B320%26gt%3B%3B%0A%09%20%20%09touchscreen-size-y%20%3D%20%26lt%3B280%26gt%3B%3B%0A%20%20%20%20%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2418507%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX93%3A%20Sharing%20GPIO2%20between%20Linux%20and%20Cortex-M33%20causes%20Linux%20touchscreen%20to%20stop%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2418507%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%EF%BC%8C%3C%2FP%3E%0A%3CP%3E%E8%BF%99%E4%BC%BC%E4%B9%8E%E6%98%AF%E4%B8%AD%E6%96%AD%E9%85%8D%E7%BD%AE%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E5%9B%A0%E4%B8%BA%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E5%86%85%E6%A0%B8%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%90%8C%E4%B8%80%E7%BB%84%E4%B8%AD%E7%9A%84%E4%B8%8D%E5%90%8C%20GPIO%E3%80%82%3C%2FP%3E%0A%3CP%3E%E4%BD%A0%E5%9C%A8Linux%E8%AE%BE%E5%A4%87%E6%A0%91%E4%B8%AD%E9%85%8D%E7%BD%AE%E7%9A%84%E6%98%AF%E5%93%AA%E4%B8%AA%E4%B8%AD%E6%96%AD%EF%BC%9F%3C%2FP%3E%0A%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2418818%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX93%3A%20Sharing%20GPIO2%20between%20Linux%20and%20Cortex-M33%20causes%20Linux%20touchscreen%20to%20stop%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2418818%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%EF%BC%8C%3C%2FP%3E%0A%3CP%3E%E8%AF%B7%E5%B0%9D%E8%AF%95%E9%80%9A%E8%BF%87%E4%BB%A5%E4%B8%8B%E6%96%B9%E5%BC%8F%E6%9B%B4%E6%94%B9%20M33%20%E5%86%85%E6%A0%B8%E4%BD%BF%E7%94%A8%E7%9A%84%E4%B8%AD%E6%96%AD%EF%BC%9A%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3EGPIO2-%26gt%3BICNS%20%26amp%3B%3D%20~(1U%20%26lt%3B%26lt%3B%201U)%3B%0AEnableIRQ(GPIO2_1_IRQn)%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E