int can_devinit(void) { static bool initialized = false; struct can_dev_s *can; int ret; /* Check if we have already initialized */ if (!initialized) { /* Call stm32_caninitialize() to get an instance of the CAN interface */ can = stm32_caninitialize(CAN_PORT); if (can == NULL) { candbg("ERROR: Failed to get CAN interface\n"); return -ENODEV; } /* Register the CAN driver at "/dev/can0" */ ret = can_register("/dev/can0", can); if (ret < 0) { candbg("ERROR: can_register failed: %d\n", ret); return ret; } /* Now we are initialized */ initialized = true; } return OK; }
int stm32_can_setup(void) { #if defined(CONFIG_STM32_CAN1) || defined(CONFIG_STM32_CAN2) struct can_dev_s *can; int ret; /* Call stm32_caninitialize() to get an instance of the CAN interface */ can = stm32_caninitialize(CAN_PORT); if (can == NULL) { canerr("ERROR: Failed to get CAN interface\n"); return -ENODEV; } /* Register the CAN driver at "/dev/can0" */ ret = can_register("/dev/can0", can); if (ret < 0) { canerr("ERROR: can_register failed: %d\n", ret); return ret; } return OK; #else return -ENODEV; #endif }