I don't have one of these, but am happy to help.
If you want some ideas to get started:
I think a RouterOS GPL dump that I requested in September has (new) rb924 sections which should make things a little easier
+static struct platform_device rb924_hb_led_device = {
+ .name = "leds-rb",
+ .id = -1,
+ .dev = {
+ .platform_data = &(unsigned[]) {
+ PLED(ext_pin5, 0, GPIOLIB, PLED_CFG_INPUT),
+ PLED(power_led, 4, GPIOLIB, PLED_CFG_INV | PLED_CFG_ON),
+ PLDI(button, 16, GPIOLIB),
+ // keep lte in reset until usb drivers are loaded
+ PLED(lte_reset, 17, GPIOLIB, PLED_CFG_ON),
+
+ PLDI(eth_led, RB400_SSR_GPIO_BASE + 0, GPIOLIB),
+ PLDI(eth2_led, RB400_SSR_GPIO_BASE + 1, GPIOLIB),
+ PLDI(poe_led, RB400_SSR_GPIO_BASE + 2, GPIOLIB),
+ PLDI(gps_led, RB400_SSR_GPIO_BASE + 3, GPIOLIB),
+ PLDI(wlan_led, RB400_SSR_GPIO_BASE + 4, GPIOLIB),
+ PLED(pcie_power_off, RB400_SSR_GPIO_BASE + 5, GPIOLIB,
+ PLED_CFG_INV | PLED_CFG_KEEP),
+ PLED(uart_select, RB400_SSR_GPIO_BASE + 6, GPIOLIB,
+ PLED_CFG_ON),
+ 0
+ },
+ },
+};
+
+static struct platform_device rb924r4_hb_led_device = {
+ .name = "leds-rb",
+ .id = -1,
+ .dev = {
+ .platform_data = &(unsigned[]) {
+ PLED(ext_pin5, 0, GPIOLIB, PLED_CFG_INPUT),
+ PLED(power_led, 4, GPIOLIB, PLED_CFG_INV | PLED_CFG_ON),
+ PLD(usb_power_off, 13, GPIOLIB),
+ PLDI(button, 16, GPIOLIB),
+ // keep lte in reset until usb drivers are loaded
+ PLED(lte_reset, 17, GPIOLIB, PLED_CFG_ON),
+
+ PLDI(eth_led, RB400_SSR_GPIO_BASE + 0, GPIOLIB),
+ PLDI(eth2_led, RB400_SSR_GPIO_BASE + 1, GPIOLIB),
+ PLDI(poe_led, RB400_SSR_GPIO_BASE + 2, GPIOLIB),
+ PLDI(gps_led, RB400_SSR_GPIO_BASE + 3, GPIOLIB),
+ PLDI(wlan_led, RB400_SSR_GPIO_BASE + 4, GPIOLIB),
+ PLED(uart_select, RB400_SSR_GPIO_BASE + 6, GPIOLIB,
+ PLED_CFG_ON),
+ PLDI(pcie_power_off, RB400_SSR_GPIO_BASE + 7, GPIOLIB),
+ 0
+ },
+ },
+};
+
+static struct spi_board_info rb924_ssr_spi_misc = {
+ .modalias = "rb400-spi-misc",
+ .max_speed_hz = 15000000,
+ .bus_num = 0,
+ .chip_select = 0,
+ .mode = SPI_MODE_3,
+ .platform_data = &(struct rb400_ssr_info) {
+ .strobe = 11,
+ .bytes = 1,
+ .val = 0x7f
+ },
+};
+static struct spi_board_info bt_spi_nRF52832 = {
+ .modalias = "spi-nRF52832",
+ .max_speed_hz = 8 * 1000 * 1000,
+ .bus_num = 0,
+ .chip_select = 2,
+ .mode = SPI_MODE_0,
+ .platform_data = &(struct nrf52_platform_data) {
+ .irq_gpio = 2,
+ .labels = {
+ HWMON_LBL_BOARD,
+ HWMON_LBL_SYSTEM,
+ HWMON_LBL_GPIO_EXT_PIN3,
+ HWMON_LBL_GPIO_EXT_PIN2,
+ },
+ .gpio = {
+ .pins = {
+ PLED(ext_pin4, 15, GPIOLIB, PLED_CFG_INV),
+ PLED(ext_pin6, 14, GPIOLIB, PLED_CFG_INV),
+ },
+ .names = {
+ "ext-pin4",
+ "ext-pin6",
+ },
+ },
+ },
+};
+static struct platform_device rb924_spi_device = {
+ .name = "rb900-spi",
+ .id = -1,
+ .dev = {
+ .platform_data = &(struct spi_board_info *[]) {
+ &rb924_ssr_spi_misc,
+ &slow_large_spi_nor,
+ &bt_spi_nRF52832,
+ NULL
+ },
+ },
+};
+static struct platform_device rb924_uart_device = {
+ .name = "rb924-at-uart",
+ .id = -1,
+};
+
+
+static struct hwopt_device rb924_hb_devices[] = {
+ { &rb700_ehci_device, HW_OPT_HAS_USB, 0 },
+ { &ar9340_gpio_device, 0, 0 },
+ { &rb924_spi_device, 0, 0 },
+ { &rb924_uart_device, 0, 0 },
+ { &rb924_hb_led_device, 0, HW_OPT_RB924_r4 },
+ { &rb924r4_hb_led_device, HW_OPT_RB924_r4, 0 },
+ { &ar9330_wlan_device, HW_OPT_HAS_WIFI, 0 },
+ { &mAP2_poeout_device, 0, 0 },
+ { &maphb_eth_device, 0, 0 }
+};
+
+static struct platform_device crs332_led_device = {
+ .name = "leds-rb",