init: remove support for devices

Devices no longer use SYS_INIT infrastructure.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
diff --git a/include/zephyr/init.h b/include/zephyr/init.h
index 9b0d299..3d936ce 100644
--- a/include/zephyr/init.h
+++ b/include/zephyr/init.h
@@ -42,81 +42,14 @@
  *   SMP.
  *
  * Initialization priority can take a value in the range of 0 to 99.
- *
- * @note The same infrastructure is used by devices.
  * @{
  */
 
-struct device;
-
-/**
- * @brief Initialization function for init entries.
- *
- * Init entries support both the system initialization and the device
- * APIs. Each API has its own init function signature; hence, we have a
- * union to cover both.
- */
-union init_function {
-	/**
-	 * System initialization function.
-	 *
-	 * @retval 0 On success
-	 * @retval -errno If init fails.
-	 */
-	int (*sys)(void);
-	/**
-	 * Device initialization function.
-	 *
-	 * @param dev Device instance.
-	 *
-	 * @retval 0 On success
-	 * @retval -errno If device initialization fails.
-	 */
-	int (*dev)(const struct device *dev);
-};
-
-/**
- * @brief Structure to store initialization entry information.
- *
- * @internal
- * Init entries need to be defined following these rules:
- *
- * - Their name must be set using Z_INIT_ENTRY_NAME().
- * - They must be placed in a special init section, given by
- *   Z_INIT_ENTRY_SECTION().
- * - They must be aligned, e.g. using Z_DECL_ALIGN().
- *
- * See SYS_INIT_NAMED() for an example.
- * @endinternal
- */
-struct init_entry {
-	/** Initialization function. */
-	union init_function init_fn;
-	/**
-	 * If the init entry belongs to a device, this fields stores a
-	 * reference to it, otherwise it is set to NULL.
-	 */
-	const struct device *dev;
-};
+/** System initialization function. */
+typedef int (*sys_init_fn_t)(void);
 
 /** @cond INTERNAL_HIDDEN */
 
-/* Helper definitions to evaluate level equality */
-#define Z_INIT_EARLY_EARLY		 1
-#define Z_INIT_PRE_KERNEL_1_PRE_KERNEL_1 1
-#define Z_INIT_PRE_KERNEL_2_PRE_KERNEL_2 1
-#define Z_INIT_POST_KERNEL_POST_KERNEL	 1
-#define Z_INIT_APPLICATION_APPLICATION	 1
-#define Z_INIT_SMP_SMP			 1
-
-/* Init level ordinals */
-#define Z_INIT_ORD_EARLY	0
-#define Z_INIT_ORD_PRE_KERNEL_1 1
-#define Z_INIT_ORD_PRE_KERNEL_2 2
-#define Z_INIT_ORD_POST_KERNEL	3
-#define Z_INIT_ORD_APPLICATION	4
-#define Z_INIT_ORD_SMP		5
-
 /**
  * @brief Obtain init entry name.
  *
@@ -131,30 +64,13 @@
  * linker scripts to sort them according to the specified
  * level/priority/sub-priority.
  */
-#define Z_INIT_ENTRY_SECTION(level, prio, sub_prio)                           \
-	__attribute__((__section__(                                           \
-		".z_init_" #level STRINGIFY(prio)"_" STRINGIFY(sub_prio)"_")))
+#define Z_INIT_ENTRY_SECTION(level, prio)                                      \
+	__attribute__(                                                         \
+		(__section__(".z_init_" #level STRINGIFY(prio)"_")))
 
 /** @endcond */
 
 /**
- * @brief Obtain the ordinal for an init level.
- *
- * @param level Init level (EARLY, PRE_KERNEL_1, PRE_KERNEL_2, POST_KERNEL,
- * APPLICATION, SMP).
- *
- * @return Init level ordinal.
- */
-#define INIT_LEVEL_ORD(level)                                                  \
-	COND_CODE_1(Z_INIT_EARLY_##level, (Z_INIT_ORD_EARLY),                  \
-	(COND_CODE_1(Z_INIT_PRE_KERNEL_1_##level, (Z_INIT_ORD_PRE_KERNEL_1),   \
-	(COND_CODE_1(Z_INIT_PRE_KERNEL_2_##level, (Z_INIT_ORD_PRE_KERNEL_2),   \
-	(COND_CODE_1(Z_INIT_POST_KERNEL_##level, (Z_INIT_ORD_POST_KERNEL),     \
-	(COND_CODE_1(Z_INIT_APPLICATION_##level, (Z_INIT_ORD_APPLICATION),     \
-	(COND_CODE_1(Z_INIT_SMP_##level, (Z_INIT_ORD_SMP),                     \
-	(ZERO_OR_COMPILE_ERROR(0)))))))))))))
-
-/**
  * @brief Register an initialization function.
  *
  * The function will be called during system initialization according to the
@@ -180,19 +96,16 @@
  * same init function.
  *
  * @param name Unique name for SYS_INIT entry.
- * @param init_fn_ See SYS_INIT().
+ * @param init_fn See SYS_INIT().
  * @param level See SYS_INIT().
  * @param prio See SYS_INIT().
  *
  * @see SYS_INIT()
  */
-#define SYS_INIT_NAMED(name, init_fn_, level, prio)                            \
-	static const Z_DECL_ALIGN(struct init_entry)                           \
-		Z_INIT_ENTRY_SECTION(level, prio, 0) __used __noasan           \
-		Z_INIT_ENTRY_NAME(name) = {                                    \
-			.init_fn = {.sys = (init_fn_)},                        \
-			.dev = NULL,                                           \
-	}
+#define SYS_INIT_NAMED(name, init_fn, level, prio)                             \
+	static const Z_DECL_ALIGN(sys_init_fn_t)                               \
+		Z_INIT_ENTRY_SECTION(level, prio) __used __noasan              \
+		Z_INIT_ENTRY_NAME(name) = init_fn
 
 /** @} */
 
diff --git a/kernel/init.c b/kernel/init.c
index e5e1fcf..78b7247 100644
--- a/kernel/init.c
+++ b/kernel/init.c
@@ -61,13 +61,13 @@
 					  CONFIG_IDLE_STACK_SIZE);
 #endif /* CONFIG_MULTITHREADING */
 
-extern const struct init_entry __init_start[];
-extern const struct init_entry __init_EARLY_start[];
-extern const struct init_entry __init_PRE_KERNEL_1_start[];
-extern const struct init_entry __init_PRE_KERNEL_2_start[];
-extern const struct init_entry __init_POST_KERNEL_start[];
-extern const struct init_entry __init_APPLICATION_start[];
-extern const struct init_entry __init_end[];
+extern const sys_init_fn_t __init_start[];
+extern const sys_init_fn_t __init_EARLY_start[];
+extern const sys_init_fn_t __init_PRE_KERNEL_1_start[];
+extern const sys_init_fn_t __init_PRE_KERNEL_2_start[];
+extern const sys_init_fn_t __init_POST_KERNEL_start[];
+extern const sys_init_fn_t __init_APPLICATION_start[];
+extern const sys_init_fn_t __init_end[];
 
 extern const struct device _device_list_EARLY_start[];
 extern const struct device _device_list_PRE_KERNEL_1_start[];
@@ -89,7 +89,7 @@
 };
 
 #ifdef CONFIG_SMP
-extern const struct init_entry __init_SMP_start[];
+extern const sys_init_fn_t __init_SMP_start[];
 
 extern const struct device _device_list_SMP_start[];
 #endif
@@ -266,7 +266,7 @@
 		_device_list_end,
 	};
 
-	static const struct init_entry *levels[] = {
+	static const sys_init_fn_t *levels[] = {
 		__init_EARLY_start,
 		__init_PRE_KERNEL_1_start,
 		__init_PRE_KERNEL_2_start,
@@ -306,8 +306,8 @@
 		}
 	}
 
-	for (const struct init_entry *entry = levels[level]; entry < levels[level+1]; entry++) {
-		(void)entry->init_fn.sys();
+	for (const sys_init_fn_t *entry = levels[level]; entry < levels[level+1]; entry++) {
+		(void)(*entry)();
 	}
 }