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: Kevin Hilman <khilman@baylibre.com> Link: https://lore.kernel.org/r/20201026183025.31768-1-khilman@baylibre.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
3650b228f8
commit
9c65441ec8
|
@ -1,8 +1,9 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
menuconfig PINCTRL_MESON
|
||||
bool "Amlogic SoC pinctrl drivers"
|
||||
tristate "Amlogic SoC pinctrl drivers"
|
||||
depends on ARCH_MESON
|
||||
depends on OF
|
||||
default y
|
||||
select PINMUX
|
||||
select PINCONF
|
||||
select GENERIC_PINCONF
|
||||
|
@ -25,37 +26,37 @@ config PINCTRL_MESON8B
|
|||
default y
|
||||
|
||||
config PINCTRL_MESON_GXBB
|
||||
bool "Meson gxbb SoC pinctrl driver"
|
||||
tristate "Meson gxbb SoC pinctrl driver"
|
||||
depends on ARM64
|
||||
select PINCTRL_MESON8_PMX
|
||||
default y
|
||||
|
||||
config PINCTRL_MESON_GXL
|
||||
bool "Meson gxl SoC pinctrl driver"
|
||||
tristate "Meson gxl SoC pinctrl driver"
|
||||
depends on ARM64
|
||||
select PINCTRL_MESON8_PMX
|
||||
default y
|
||||
|
||||
config PINCTRL_MESON8_PMX
|
||||
bool
|
||||
tristate
|
||||
|
||||
config PINCTRL_MESON_AXG
|
||||
bool "Meson axg Soc pinctrl driver"
|
||||
tristate "Meson axg Soc pinctrl driver"
|
||||
depends on ARM64
|
||||
select PINCTRL_MESON_AXG_PMX
|
||||
default y
|
||||
|
||||
config PINCTRL_MESON_AXG_PMX
|
||||
bool
|
||||
tristate
|
||||
|
||||
config PINCTRL_MESON_G12A
|
||||
bool "Meson g12a Soc pinctrl driver"
|
||||
tristate "Meson g12a Soc pinctrl driver"
|
||||
depends on ARM64
|
||||
select PINCTRL_MESON_AXG_PMX
|
||||
default y
|
||||
|
||||
config PINCTRL_MESON_A1
|
||||
bool "Meson a1 Soc pinctrl driver"
|
||||
tristate "Meson a1 Soc pinctrl driver"
|
||||
depends on ARM64
|
||||
select PINCTRL_MESON_AXG_PMX
|
||||
default y
|
||||
|
|
|
@ -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 = {
|
||||
.probe = meson_pinctrl_probe,
|
||||
|
@ -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 = {
|
|||
.get_function_groups = meson_pmx_get_groups,
|
||||
.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[] = {
|
|||
},
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, meson_axg_pinctrl_dt_match);
|
||||
|
||||
static struct platform_driver meson_axg_pinctrl_driver = {
|
||||
.probe = meson_pinctrl_probe,
|
||||
|
@ -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[] = {
|
|||
},
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, meson_g12a_pinctrl_dt_match);
|
||||
|
||||
static struct platform_driver meson_g12a_pinctrl_driver = {
|
||||
.probe = meson_pinctrl_probe,
|
||||
|
@ -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[] = {
|
|||
},
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, meson_gxbb_pinctrl_dt_match);
|
||||
|
||||
static struct platform_driver meson_gxbb_pinctrl_driver = {
|
||||
.probe = meson_pinctrl_probe,
|
||||
|
@ -908,4 +909,5 @@ static struct platform_driver meson_gxbb_pinctrl_driver = {
|
|||
.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[] = {
|
|||
},
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, meson_gxl_pinctrl_dt_match);
|
||||
|
||||
static struct platform_driver meson_gxl_pinctrl_driver = {
|
||||
.probe = meson_pinctrl_probe,
|
||||
|
@ -869,4 +870,5 @@ static struct platform_driver meson_gxl_pinctrl_driver = {
|
|||
.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)
|
|||
|
||||
return pc->data->num_funcs;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(meson_pmx_get_funcs_count);
|
||||
|
||||
const char *meson_pmx_get_func_name(struct pinctrl_dev *pcdev,
|
||||
unsigned selector)
|
||||
|
@ -160,6 +161,7 @@ const char *meson_pmx_get_func_name(struct pinctrl_dev *pcdev,
|
|||
|
||||
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,
|
||||
const char * const **groups,
|
||||
|
@ -172,6 +174,7 @@ int meson_pmx_get_groups(struct pinctrl_dev *pcdev, unsigned selector,
|
|||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(meson_pmx_get_groups);
|
||||
|
||||
static int meson_pinconf_set_gpio_bit(struct meson_pinctrl *pc,
|
||||
unsigned int pin,
|
||||
|
@ -723,6 +726,7 @@ int meson8_aobus_parse_dt_extra(struct meson_pinctrl *pc)
|
|||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(meson8_aobus_parse_dt_extra);
|
||||
|
||||
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;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(meson_a1_parse_dt_extra);
|
||||
|
||||
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);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(meson_pinctrl_probe);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
struct meson_pinctrl;
|
||||
|
||||
|
|
|
@ -100,3 +100,5 @@ const struct pinmux_ops meson8_pmx_ops = {
|
|||
.get_function_groups = meson_pmx_get_groups,
|
||||
.gpio_request_enable = meson8_pmx_request_gpio,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson8_pmx_ops);
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
|
Loading…
Reference in New Issue