diff --git a/drivers/pinmux/Kconfig b/drivers/pinmux/Kconfig index 7ee58bf3643..f4a904042bc 100644 --- a/drivers/pinmux/Kconfig +++ b/drivers/pinmux/Kconfig @@ -37,12 +37,17 @@ config PINMUX_NAME config PINMUX_INIT_PRIORITY int prompt "Init priority" - default 60 + default 45 depends on PINMUX help - Device driver initialization priority. - The device needs to be initialized after all the devices it - uses. + Pinmux driver initialization priority. + Pinmux driver almost certainly should be initialized before the + rest of hardware devices (which may need specific pins already + configured for them), and usually after generic GPIO drivers. + Thus, its priority should be between KERNEL_INIT_PRIORITY_DEFAULT + and KERNEL_INIT_PRIORITY_DEVICE. There are exceptions to this + rule for particular boards. Don't change this value unless you + know what you are doing. config PINMUX_K64 bool "Freescale K64-based Pin multiplexer driver" diff --git a/drivers/pinmux/dev/pinmux_dev_k64.c b/drivers/pinmux/dev/pinmux_dev_k64.c index ae64da34f58..1b1773075ce 100644 --- a/drivers/pinmux/dev/pinmux_dev_k64.c +++ b/drivers/pinmux/dev/pinmux_dev_k64.c @@ -53,5 +53,5 @@ int pinmux_fsl_k64_initialize(struct device *port) /* must be initialized after GPIO */ DEVICE_AND_API_INIT(pmux, CONFIG_PINMUX_DEV_NAME, &pinmux_fsl_k64_initialize, NULL, NULL, - POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE, + POST_KERNEL, CONFIG_PINMUX_INIT_PRIORITY, &api_funcs); diff --git a/drivers/pinmux/k64/pinmux_board_frdm_k64f.c b/drivers/pinmux/k64/pinmux_board_frdm_k64f.c index e8d33a36cae..9b61b6859ca 100644 --- a/drivers/pinmux/k64/pinmux_board_frdm_k64f.c +++ b/drivers/pinmux/k64/pinmux_board_frdm_k64f.c @@ -114,4 +114,4 @@ static int fsl_frdm_k64f_pin_init(struct device *arg) return 0; } -SYS_INIT(fsl_frdm_k64f_pin_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE); +SYS_INIT(fsl_frdm_k64f_pin_init, POST_KERNEL, CONFIG_PINMUX_INIT_PRIORITY); diff --git a/drivers/pinmux/k64/pinmux_board_hexiwear.c b/drivers/pinmux/k64/pinmux_board_hexiwear.c index 2f37e603bf3..6de6ad681a5 100644 --- a/drivers/pinmux/k64/pinmux_board_hexiwear.c +++ b/drivers/pinmux/k64/pinmux_board_hexiwear.c @@ -66,4 +66,4 @@ static int hexiwear_pin_init(struct device *arg) return 0; } -SYS_INIT(hexiwear_pin_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE); +SYS_INIT(hexiwear_pin_init, POST_KERNEL, CONFIG_PINMUX_INIT_PRIORITY);