pinmux/pinctrl collision migrating from 5.10 to 6.12

I have a device that is claiming the pins that my overlay uses, but am unsure how to resolve the collision. This particular collision is with the cpsw, I think. I tried setting the status of cpsw_port1 and ethernet0 to “disabled”. The former had no immediate effect, and the second one caused boot errors. This is what I currently have,

&cpsw_port1 {
  status = "disabled";
};

// ...

&am33xx_pinmux {
  camera_pins: camera_pins {
    #gpio-cells = <2>;
    pinctrl-single,pins = <
      /* Pins for camera control */
      AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_OUTPUT, MUX_MODE7)   /* mii1_txd3 == flash */
      AM33XX_PADCONF(AM335X_PIN_MII1_CRS, PIN_OUTPUT, MUX_MODE7)    /* mii1_crs == bus_oe */
      AM33XX_PADCONF(AM335X_PIN_MII1_COL, PIN_OUTPUT, MUX_MODE7)    /* mii1_col == cam_oe */
      AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_OUTPUT, MUX_MODE7) /* mii1_rx_clk == clk_en */
      AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_OUTPUT, MUX_MODE7)   /* mii1_rxd0 == input_en */
      AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_OUTPUT, MUX_MODE7)   /* mii1_rxd1 == reset */
      AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_OUTPUT, MUX_MODE7)   /* mii1_rxd2 == saddr */
      AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_OUTPUT, MUX_MODE7)   /* mii1_rxd3 == standby */
      AM33XX_PADCONF(AM335X_PIN_MII1_RX_ER, PIN_OUTPUT, MUX_MODE7)  /* mii1_rx_er == trigger */
      AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_OUTPUT, MUX_MODE7)  /* mii1_rx_dv == vreg_en */

      /* Pins for camera parallel bus. Currently only getting top 8 bits of pixel data */
      AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_INPUT, MUX_MODE6)      /* mcasp0_aclkx == pru0_r31_0 == camera D4 */
      AM33XX_PADCONF(AM335X_PIN_MCASP0_FSX, PIN_INPUT, MUX_MODE6)        /* mcasp0_fsx == pru0_r31_1 == camera D5 */
      AM33XX_PADCONF(AM335X_PIN_MCASP0_AXR0, PIN_INPUT, MUX_MODE6)       /* mcasp0_axr0 == pru0_r31_2 == camera D6 */
      AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, PIN_INPUT, MUX_MODE6)     /* mcasp0_ahclkr == pru0_r31_3 == camera D7 */
      AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKR, PIN_INPUT, MUX_MODE6)      /* mcasp0_aclkr == pru0_r31_4 == camera D8 */
      AM33XX_PADCONF(AM335X_PIN_MCASP0_FSR, PIN_INPUT, MUX_MODE6)        /* mcasp0_fsr == pru0_r31_5 == camera D9 */
      AM33XX_PADCONF(AM335X_PIN_MCASP0_AXR1, PIN_INPUT, MUX_MODE6)       /* mcasp0_axr1 == pru0_r31_6 == camera D10 */
      AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKX, PIN_INPUT, MUX_MODE6)     /* mcasp0_ahclkx == pru0_r31_7 == camera D11 */
      AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_INPUT, MUX_MODE6)         /* gpmc_ad14 == pru0_r31_14 == camera VSYNC */
      AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_INPUT, MUX_MODE6)         /* gpmc_ad15 == pru0_r31_15 == camera HSYNC */
      AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR1, PIN_INPUT, MUX_MODE5)  /* xdma_event_intr1 == pru0_r31_16 == camera pixel clock */
    >;
  };
};

This is the error.

[   29.547194] pinctrl-single 44e10800.pinmux: pin PIN71 already requested by 4a100000.switch; cannot claim for prudev
[   29.601836] pinctrl-single 44e10800.pinmux: error -EINVAL: pin-71 (prudev)
[   29.657828] pinctrl-single 44e10800.pinmux: error -EINVAL: could not request pin 71 (PIN71) from group camera_pins on device pinctrl-single

Those pins you are fighting are not in cpsw_port1 but mac_sw

&mac_sw {
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&cpsw_default>;
	pinctrl-1 = <&cpsw_sleep>;
	status = "okay";
};
1 Like