Commit 9c65441e authored by Kevin Hilman's avatar Kevin Hilman Committed by Linus Walleij

pinctrl/meson: enable building as modules

Enable pinctrl drivers for 64-bit Amlogic SoCs to be built as modules.

The default is still built-in, this only adds the option of building
as modules.
Signed-off-by: default avatarKevin Hilman <khilman@baylibre.com>
Link: https://lore.kernel.org/r/20201026183025.31768-1-khilman@baylibre.comSigned-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 3650b228
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
menuconfig PINCTRL_MESON menuconfig PINCTRL_MESON
bool "Amlogic SoC pinctrl drivers" tristate "Amlogic SoC pinctrl drivers"
depends on ARCH_MESON depends on ARCH_MESON
depends on OF depends on OF
default y
select PINMUX select PINMUX
select PINCONF select PINCONF
select GENERIC_PINCONF select GENERIC_PINCONF
...@@ -25,37 +26,37 @@ config PINCTRL_MESON8B ...@@ -25,37 +26,37 @@ config PINCTRL_MESON8B
default y default y
config PINCTRL_MESON_GXBB config PINCTRL_MESON_GXBB
bool "Meson gxbb SoC pinctrl driver" tristate "Meson gxbb SoC pinctrl driver"
depends on ARM64 depends on ARM64
select PINCTRL_MESON8_PMX select PINCTRL_MESON8_PMX
default y default y
config PINCTRL_MESON_GXL config PINCTRL_MESON_GXL
bool "Meson gxl SoC pinctrl driver" tristate "Meson gxl SoC pinctrl driver"
depends on ARM64 depends on ARM64
select PINCTRL_MESON8_PMX select PINCTRL_MESON8_PMX
default y default y
config PINCTRL_MESON8_PMX config PINCTRL_MESON8_PMX
bool tristate
config PINCTRL_MESON_AXG config PINCTRL_MESON_AXG
bool "Meson axg Soc pinctrl driver" tristate "Meson axg Soc pinctrl driver"
depends on ARM64 depends on ARM64
select PINCTRL_MESON_AXG_PMX select PINCTRL_MESON_AXG_PMX
default y default y
config PINCTRL_MESON_AXG_PMX config PINCTRL_MESON_AXG_PMX
bool tristate
config PINCTRL_MESON_G12A config PINCTRL_MESON_G12A
bool "Meson g12a Soc pinctrl driver" tristate "Meson g12a Soc pinctrl driver"
depends on ARM64 depends on ARM64
select PINCTRL_MESON_AXG_PMX select PINCTRL_MESON_AXG_PMX
default y default y
config PINCTRL_MESON_A1 config PINCTRL_MESON_A1
bool "Meson a1 Soc pinctrl driver" tristate "Meson a1 Soc pinctrl driver"
depends on ARM64 depends on ARM64
select PINCTRL_MESON_AXG_PMX select PINCTRL_MESON_AXG_PMX
default y default y
......
...@@ -925,6 +925,7 @@ static const struct of_device_id meson_a1_pinctrl_dt_match[] = { ...@@ -925,6 +925,7 @@ static const struct of_device_id meson_a1_pinctrl_dt_match[] = {
}, },
{ }, { },
}; };
MODULE_DEVICE_TABLE(of, meson_a1_pinctrl_dt_match);
static struct platform_driver meson_a1_pinctrl_driver = { static struct platform_driver meson_a1_pinctrl_driver = {
.probe = meson_pinctrl_probe, .probe = meson_pinctrl_probe,
...@@ -934,4 +935,5 @@ static struct platform_driver meson_a1_pinctrl_driver = { ...@@ -934,4 +935,5 @@ static struct platform_driver meson_a1_pinctrl_driver = {
}, },
}; };
builtin_platform_driver(meson_a1_pinctrl_driver); module_platform_driver(meson_a1_pinctrl_driver);
MODULE_LICENSE("Dual BSD/GPL");
...@@ -116,3 +116,6 @@ const struct pinmux_ops meson_axg_pmx_ops = { ...@@ -116,3 +116,6 @@ const struct pinmux_ops meson_axg_pmx_ops = {
.get_function_groups = meson_pmx_get_groups, .get_function_groups = meson_pmx_get_groups,
.gpio_request_enable = meson_axg_pmx_request_gpio, .gpio_request_enable = meson_axg_pmx_request_gpio,
}; };
EXPORT_SYMBOL_GPL(meson_axg_pmx_ops);
MODULE_LICENSE("Dual BSD/GPL");
...@@ -1080,6 +1080,7 @@ static const struct of_device_id meson_axg_pinctrl_dt_match[] = { ...@@ -1080,6 +1080,7 @@ static const struct of_device_id meson_axg_pinctrl_dt_match[] = {
}, },
{ }, { },
}; };
MODULE_DEVICE_TABLE(of, meson_axg_pinctrl_dt_match);
static struct platform_driver meson_axg_pinctrl_driver = { static struct platform_driver meson_axg_pinctrl_driver = {
.probe = meson_pinctrl_probe, .probe = meson_pinctrl_probe,
...@@ -1089,4 +1090,5 @@ static struct platform_driver meson_axg_pinctrl_driver = { ...@@ -1089,4 +1090,5 @@ static struct platform_driver meson_axg_pinctrl_driver = {
}, },
}; };
builtin_platform_driver(meson_axg_pinctrl_driver); module_platform_driver(meson_axg_pinctrl_driver);
MODULE_LICENSE("Dual BSD/GPL");
...@@ -1410,6 +1410,7 @@ static const struct of_device_id meson_g12a_pinctrl_dt_match[] = { ...@@ -1410,6 +1410,7 @@ static const struct of_device_id meson_g12a_pinctrl_dt_match[] = {
}, },
{ }, { },
}; };
MODULE_DEVICE_TABLE(of, meson_g12a_pinctrl_dt_match);
static struct platform_driver meson_g12a_pinctrl_driver = { static struct platform_driver meson_g12a_pinctrl_driver = {
.probe = meson_pinctrl_probe, .probe = meson_pinctrl_probe,
...@@ -1419,4 +1420,5 @@ static struct platform_driver meson_g12a_pinctrl_driver = { ...@@ -1419,4 +1420,5 @@ static struct platform_driver meson_g12a_pinctrl_driver = {
}, },
}; };
builtin_platform_driver(meson_g12a_pinctrl_driver); module_platform_driver(meson_g12a_pinctrl_driver);
MODULE_LICENSE("Dual BSD/GPL");
...@@ -900,6 +900,7 @@ static const struct of_device_id meson_gxbb_pinctrl_dt_match[] = { ...@@ -900,6 +900,7 @@ static const struct of_device_id meson_gxbb_pinctrl_dt_match[] = {
}, },
{ }, { },
}; };
MODULE_DEVICE_TABLE(of, meson_gxbb_pinctrl_dt_match);
static struct platform_driver meson_gxbb_pinctrl_driver = { static struct platform_driver meson_gxbb_pinctrl_driver = {
.probe = meson_pinctrl_probe, .probe = meson_pinctrl_probe,
...@@ -908,4 +909,5 @@ static struct platform_driver meson_gxbb_pinctrl_driver = { ...@@ -908,4 +909,5 @@ static struct platform_driver meson_gxbb_pinctrl_driver = {
.of_match_table = meson_gxbb_pinctrl_dt_match, .of_match_table = meson_gxbb_pinctrl_dt_match,
}, },
}; };
builtin_platform_driver(meson_gxbb_pinctrl_driver); module_platform_driver(meson_gxbb_pinctrl_driver);
MODULE_LICENSE("GPL v2");
...@@ -861,6 +861,7 @@ static const struct of_device_id meson_gxl_pinctrl_dt_match[] = { ...@@ -861,6 +861,7 @@ static const struct of_device_id meson_gxl_pinctrl_dt_match[] = {
}, },
{ }, { },
}; };
MODULE_DEVICE_TABLE(of, meson_gxl_pinctrl_dt_match);
static struct platform_driver meson_gxl_pinctrl_driver = { static struct platform_driver meson_gxl_pinctrl_driver = {
.probe = meson_pinctrl_probe, .probe = meson_pinctrl_probe,
...@@ -869,4 +870,5 @@ static struct platform_driver meson_gxl_pinctrl_driver = { ...@@ -869,4 +870,5 @@ static struct platform_driver meson_gxl_pinctrl_driver = {
.of_match_table = meson_gxl_pinctrl_dt_match, .of_match_table = meson_gxl_pinctrl_dt_match,
}, },
}; };
builtin_platform_driver(meson_gxl_pinctrl_driver); module_platform_driver(meson_gxl_pinctrl_driver);
MODULE_LICENSE("GPL v2");
...@@ -152,6 +152,7 @@ int meson_pmx_get_funcs_count(struct pinctrl_dev *pcdev) ...@@ -152,6 +152,7 @@ int meson_pmx_get_funcs_count(struct pinctrl_dev *pcdev)
return pc->data->num_funcs; return pc->data->num_funcs;
} }
EXPORT_SYMBOL_GPL(meson_pmx_get_funcs_count);
const char *meson_pmx_get_func_name(struct pinctrl_dev *pcdev, const char *meson_pmx_get_func_name(struct pinctrl_dev *pcdev,
unsigned selector) unsigned selector)
...@@ -160,6 +161,7 @@ const char *meson_pmx_get_func_name(struct pinctrl_dev *pcdev, ...@@ -160,6 +161,7 @@ const char *meson_pmx_get_func_name(struct pinctrl_dev *pcdev,
return pc->data->funcs[selector].name; return pc->data->funcs[selector].name;
} }
EXPORT_SYMBOL_GPL(meson_pmx_get_func_name);
int meson_pmx_get_groups(struct pinctrl_dev *pcdev, unsigned selector, int meson_pmx_get_groups(struct pinctrl_dev *pcdev, unsigned selector,
const char * const **groups, const char * const **groups,
...@@ -172,6 +174,7 @@ int meson_pmx_get_groups(struct pinctrl_dev *pcdev, unsigned selector, ...@@ -172,6 +174,7 @@ int meson_pmx_get_groups(struct pinctrl_dev *pcdev, unsigned selector,
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(meson_pmx_get_groups);
static int meson_pinconf_set_gpio_bit(struct meson_pinctrl *pc, static int meson_pinconf_set_gpio_bit(struct meson_pinctrl *pc,
unsigned int pin, unsigned int pin,
...@@ -723,6 +726,7 @@ int meson8_aobus_parse_dt_extra(struct meson_pinctrl *pc) ...@@ -723,6 +726,7 @@ int meson8_aobus_parse_dt_extra(struct meson_pinctrl *pc)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(meson8_aobus_parse_dt_extra);
int meson_a1_parse_dt_extra(struct meson_pinctrl *pc) int meson_a1_parse_dt_extra(struct meson_pinctrl *pc)
{ {
...@@ -732,6 +736,7 @@ int meson_a1_parse_dt_extra(struct meson_pinctrl *pc) ...@@ -732,6 +736,7 @@ int meson_a1_parse_dt_extra(struct meson_pinctrl *pc)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(meson_a1_parse_dt_extra);
int meson_pinctrl_probe(struct platform_device *pdev) int meson_pinctrl_probe(struct platform_device *pdev)
{ {
...@@ -766,3 +771,6 @@ int meson_pinctrl_probe(struct platform_device *pdev) ...@@ -766,3 +771,6 @@ int meson_pinctrl_probe(struct platform_device *pdev)
return meson_gpiolib_register(pc); return meson_gpiolib_register(pc);
} }
EXPORT_SYMBOL_GPL(meson_pinctrl_probe);
MODULE_LICENSE("GPL v2");
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/regmap.h> #include <linux/regmap.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/module.h>
struct meson_pinctrl; struct meson_pinctrl;
......
...@@ -100,3 +100,5 @@ const struct pinmux_ops meson8_pmx_ops = { ...@@ -100,3 +100,5 @@ const struct pinmux_ops meson8_pmx_ops = {
.get_function_groups = meson_pmx_get_groups, .get_function_groups = meson_pmx_get_groups,
.gpio_request_enable = meson8_pmx_request_gpio, .gpio_request_enable = meson8_pmx_request_gpio,
}; };
EXPORT_SYMBOL_GPL(meson8_pmx_ops);
MODULE_LICENSE("GPL v2");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment