CAN setup in BeagleBone AI-64

Okay. Give me some time. I do not have it on the cloud (yet).

Also, I think I just grabbed the one from Ben. It seemed okay but error prone due to my lack of knowledge thus far.

This is from above from Ben:

/dts-v1/;
/plugin/;

#include <dt-bindings/pinctrl/k3.h>

&main_pmx0 {

	main_mcan0_pins_default:main_mcan0-pins-default {
		pinctrl-single,pins = <
		J721E_IOPAD(0x20C, PIN_OUTPUT, 6) /* W6: MCAN0_TX W6_AE25 */
		J721E_IOPAD(0x138, PIN_INPUT, 7) /* AE25: PRG0_PRU1_GPO14 W6_AE25 */
		J721E_IOPAD(0x208, PIN_INPUT, 6) /* W5: MCAN0_RX W5_AF29 */
		J721E_IOPAD(0x13C, PIN_INPUT, 7) /* AF29: PRG0_PRU1_GPO15 W5_AF29 */
		>;
	};
	main_mcan4_pins_default:main_mcan4-pins-default {
		pinctrl-single,pins = <
		J721E_IOPAD(0x30, PIN_OUTPUT, 6)  /* AF24: PRG1_PRU0_GPO11 Y1_AF24 */
		J721E_IOPAD(0x1DC, PIN_INPUT, 7) /* Y1: SPI1_CLK Y1_AF24 */

		J721E_IOPAD(0x34, PIN_INPUT, 6)  /* AJ24: PRG1_PRU0_GPO12 Y5_AJ24 */
		J721E_IOPAD(0x1E0, PIN_INPUT, 7) /* Y5: SPI1_D0 Y5_AJ24 */

		>;
	};
	main_mcan5_pins_default:main_mcan5-pins-default {
		pinctrl-single,pins = <
		J721E_IOPAD(0x38, PIN_OUTPUT, 6)   /* AG24: PRG1_PRU0_GPO13 AG24_MCAN5_TX */
		J721E_IOPAD(0x3C, PIN_INPUT, 6)   /* AD24: PRG1_PRU0_GPO14 AD24_MCAN5_RX */
		>;
	};
	main_mcan6_pins_default:main_mcan6-pins-default {
		pinctrl-single,pins = <
		J721E_IOPAD(0x40, PIN_OUTPUT, 6)   /* AC24: PRG1_PRU0_GPO15 AC24_MCAN6_TX */
		J721E_IOPAD(0x44, PIN_INPUT, 6)   /* AE24: PRG1_PRU0_GPO16 AE24_MCAN6_RX */
		>;
	};
	main_mcan7_pins_default:main_mcan7-pins-default {
		pinctrl-single,pins = <
		J721E_IOPAD(0x88, PIN_OUTPUT, 6)   /* AH25: PRG1_PRU1_GPO12 AH25_MCAN7_TX */
		J721E_IOPAD(0x8C, PIN_INPUT, 6)   /* AG25: PRG1_PRU1_GPO13 AG25_MCAN7_RX */
		>;
	};
	main_mcan8_pins_default:main_mcan8-pins-default {
		pinctrl-single,pins = <
		J721E_IOPAD(0x7C, PIN_OUTPUT, 6)   /* AF21: PRG1_PRU1_GPO9 AF21_MCAN8_TX */
		J721E_IOPAD(0x80, PIN_INPUT, 6)   /* AB23: PRG1_PRU1_GPO10 AB23_MCAN8_RX */
		>;
	};
};

&bone_led_P8_45 {
	label = "CAN0";
	status = "okay";
};
&bone_led_P9_40 {
	label = "CAN4";
	status = "okay";
};
&bone_led_P8_40 {
	label = "CAN5";
	status = "okay";
};
&bone_led_P9_38 {
	label = "CAN6";
	status = "okay";
};
&bone_led_P8_39 {
	label = "CAN7";
	status = "okay";
};
&bone_led_P8_44 {
	label = "CAN8";
	status = "okay";
};

&main_mcan0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_mcan0_pins_default >;
};

&main_mcan4 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_mcan4_pins_default >;
};

&main_mcan5 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_mcan5_pins_default >;
};

&main_mcan6 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_mcan6_pins_default >;
};

&main_mcan7 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_mcan7_pins_default >;
};

&main_mcan8 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_mcan8_pins_default >;
};

Anyway, I am not even sure this goes in where it should. Lost? Yeppers!

@foxsquirrel ,

On my board, the BBAI-64, I am pretty sure k3.h is located in:

#include <dt-bindings/k3.h>

And this is unlike what I have seen recently. Anyway, I will try again soon.

/* SPDX-License-Identifier: GPL-2.0-only OR MIT */
/*
 * This header provides constants for pinctrl bindings for TI's K3 SoC
 * family.
 *
 * Copyright (C) 2018-2024 Texas Instruments Incorporated - https://www.ti.com/
 */
#ifndef DTS_ARM64_TI_K3_PINCTRL_H
#define DTS_ARM64_TI_K3_PINCTRL_H

#define PULLUDEN_SHIFT		(16)
#define PULLTYPESEL_SHIFT	(17)
#define RXACTIVE_SHIFT		(18)
#define DEBOUNCE_SHIFT		(11)
#define WKUP_EN_SHIFT		(29)

#define PULL_DISABLE		(1 << PULLUDEN_SHIFT)
#define PULL_ENABLE		(0 << PULLUDEN_SHIFT)

#define PULL_UP			(1 << PULLTYPESEL_SHIFT | PULL_ENABLE)
#define PULL_DOWN		(0 << PULLTYPESEL_SHIFT | PULL_ENABLE)

#define INPUT_EN		(1 << RXACTIVE_SHIFT)
#define INPUT_DISABLE		(0 << RXACTIVE_SHIFT)

/* Only these macros are expected be used directly in device tree files */
#define PIN_OUTPUT		(INPUT_DISABLE | PULL_DISABLE)
#define PIN_OUTPUT_PULLUP	(INPUT_DISABLE | PULL_UP)
#define PIN_OUTPUT_PULLDOWN	(INPUT_DISABLE | PULL_DOWN)
#define PIN_INPUT		(INPUT_EN | PULL_DISABLE)
#define PIN_INPUT_PULLUP	(INPUT_EN | PULL_UP)
#define PIN_INPUT_PULLDOWN	(INPUT_EN | PULL_DOWN)

#define PIN_DEBOUNCE_DISABLE	(0 << DEBOUNCE_SHIFT)
#define PIN_DEBOUNCE_CONF1	(1 << DEBOUNCE_SHIFT)
#define PIN_DEBOUNCE_CONF2	(2 << DEBOUNCE_SHIFT)
#define PIN_DEBOUNCE_CONF3	(3 << DEBOUNCE_SHIFT)
#define PIN_DEBOUNCE_CONF4	(4 << DEBOUNCE_SHIFT)
#define PIN_DEBOUNCE_CONF5	(5 << DEBOUNCE_SHIFT)
#define PIN_DEBOUNCE_CONF6	(6 << DEBOUNCE_SHIFT)

/* Default mux configuration for gpio-ranges to use with pinctrl */
#define PIN_GPIO_RANGE_IOPAD	(PIN_INPUT | 7)

#define WKUP_EN			(1 << WKUP_EN_SHIFT)

#define PIN_GPIO_MUX_MODE	(7)

#define AM62AX_IOPAD(pa, val, muxmode)		(((pa) & 0x1fff)) ((val) | (muxmode))
#define AM62AX_MCU_IOPAD(pa, val, muxmode)	(((pa) & 0x1fff)) ((val) | (muxmode))

#define AM62PX_IOPAD(pa, val, muxmode)		(((pa) & 0x1fff)) ((val) | (muxmode))
#define AM62PX_MCU_IOPAD(pa, val, muxmode)	(((pa) & 0x1fff)) ((val) | (muxmode))

#define AM62X_IOPAD(pa, val, muxmode)		(((pa) & 0x1fff)) ((val) | (muxmode))
#define AM62X_MCU_IOPAD(pa, val, muxmode)	(((pa) & 0x1fff)) ((val) | (muxmode))

#define AM64X_IOPAD(pa, val, muxmode)		(((pa) & 0x1fff)) ((val) | (muxmode))
#define AM64X_MCU_IOPAD(pa, val, muxmode)	(((pa) & 0x1fff)) ((val) | (muxmode))

#define AM65X_IOPAD(pa, val, muxmode)		(((pa) & 0x1fff)) ((val) | (muxmode))
#define AM65X_WKUP_IOPAD(pa, val, muxmode)	(((pa) & 0x1fff)) ((val) | (muxmode))

#define J721E_IOPAD(pa, val, muxmode)		(((pa) & 0x1fff)) ((val) | (muxmode))
#define J721E_WKUP_IOPAD(pa, val, muxmode)	(((pa) & 0x1fff)) ((val) | (muxmode))

#define J721S2_IOPAD(pa, val, muxmode)		(((pa) & 0x1fff)) ((val) | (muxmode))
#define J721S2_WKUP_IOPAD(pa, val, muxmode)	(((pa) & 0x1fff)) ((val) | (muxmode))

#define J722S_IOPAD(pa, val, muxmode)		(((pa) & 0x1fff)) ((val) | (muxmode))
#define J722S_MCU_IOPAD(pa, val, muxmode)	(((pa) & 0x1fff)) ((val) | (muxmode))

#define J784S4_IOPAD(pa, val, muxmode)		(((pa) & 0x1fff)) ((val) | (muxmode))
#define J784S4_WKUP_IOPAD(pa, val, muxmode)	(((pa) & 0x1fff)) ((val) | (muxmode))

#endif
BeagleBoard-DeviceTrees/src/arm64/ti/k3-pinctrl.h
1 Like

Oh…thank you.