mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 08:45:51 +00:00
module: Convert symbol namespace to string literal
Clean up the existing export namespace code along the same lines of
commit 33def8498f
("treewide: Convert macro and uses of __section(foo)
to __section("foo")") and for the same reason, it is not desired for the
namespace argument to be a macro expansion itself.
Scripted using
git grep -l -e MODULE_IMPORT_NS -e EXPORT_SYMBOL_NS | while read file;
do
awk -i inplace '
/^#define EXPORT_SYMBOL_NS/ {
gsub(/__stringify\(ns\)/, "ns");
print;
next;
}
/^#define MODULE_IMPORT_NS/ {
gsub(/__stringify\(ns\)/, "ns");
print;
next;
}
/MODULE_IMPORT_NS/ {
$0 = gensub(/MODULE_IMPORT_NS\(([^)]*)\)/, "MODULE_IMPORT_NS(\"\\1\")", "g");
}
/EXPORT_SYMBOL_NS/ {
if ($0 ~ /(EXPORT_SYMBOL_NS[^(]*)\(([^,]+),/) {
if ($0 !~ /(EXPORT_SYMBOL_NS[^(]*)\(([^,]+), ([^)]+)\)/ &&
$0 !~ /(EXPORT_SYMBOL_NS[^(]*)\(\)/ &&
$0 !~ /^my/) {
getline line;
gsub(/[[:space:]]*\\$/, "");
gsub(/[[:space:]]/, "", line);
$0 = $0 " " line;
}
$0 = gensub(/(EXPORT_SYMBOL_NS[^(]*)\(([^,]+), ([^)]+)\)/,
"\\1(\\2, \"\\3\")", "g");
}
}
{ print }' $file;
done
Requested-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://mail.google.com/mail/u/2/#inbox/FMfcgzQXKWgMmjdFwwdsfgxzKpVHWPlc
Acked-by: Greg KH <gregkh@linuxfoundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e70140ba0d
commit
cdd30ebb1b
@ -46,7 +46,7 @@ Please note that due to macro expansion that argument needs to be a
|
||||
preprocessor symbol. E.g. to export the symbol ``usb_stor_suspend`` into the
|
||||
namespace ``USB_STORAGE``, use::
|
||||
|
||||
EXPORT_SYMBOL_NS(usb_stor_suspend, USB_STORAGE);
|
||||
EXPORT_SYMBOL_NS(usb_stor_suspend, "USB_STORAGE");
|
||||
|
||||
The corresponding ksymtab entry struct ``kernel_symbol`` will have the member
|
||||
``namespace`` set accordingly. A symbol that is exported without a namespace will
|
||||
@ -94,7 +94,7 @@ for the namespaces it uses symbols from. E.g. a module using the
|
||||
usb_stor_suspend symbol from above, needs to import the namespace USB_STORAGE
|
||||
using a statement like::
|
||||
|
||||
MODULE_IMPORT_NS(USB_STORAGE);
|
||||
MODULE_IMPORT_NS("USB_STORAGE");
|
||||
|
||||
This will create a ``modinfo`` tag in the module for each imported namespace.
|
||||
This has the side effect, that the imported namespaces of a module can be
|
||||
@ -106,7 +106,7 @@ inspected with modinfo::
|
||||
[...]
|
||||
|
||||
|
||||
It is advisable to add the MODULE_IMPORT_NS() statement close to other module
|
||||
It is advisable to add the MODULE_IMPORT_NS("") statement close to other module
|
||||
metadata definitions like MODULE_AUTHOR() or MODULE_LICENSE(). Refer to section
|
||||
5. for a way to create missing import statements automatically.
|
||||
|
||||
@ -128,7 +128,7 @@ enable loading regardless, but will emit a warning.
|
||||
Missing namespaces imports can easily be detected at build time. In fact,
|
||||
modpost will emit a warning if a module uses a symbol from a namespace
|
||||
without importing it.
|
||||
MODULE_IMPORT_NS() statements will usually be added at a definite location
|
||||
MODULE_IMPORT_NS("") statements will usually be added at a definite location
|
||||
(along with other module meta data). To make the life of module authors (and
|
||||
subsystem maintainers) easier, a script and make target is available to fixup
|
||||
missing imports. Fixing missing imports can be done with::
|
||||
|
@ -43,7 +43,7 @@ Tenete presente che per via dell'espansione delle macro questo argomento deve
|
||||
essere un simbolo di preprocessore. Per esempio per esportare il
|
||||
simbolo ``usb_stor_suspend`` nello spazio dei nomi ``USB_STORAGE`` usate::
|
||||
|
||||
EXPORT_SYMBOL_NS(usb_stor_suspend, USB_STORAGE);
|
||||
EXPORT_SYMBOL_NS(usb_stor_suspend, "USB_STORAGE");
|
||||
|
||||
Di conseguenza, nella tabella dei simboli del kernel ci sarà una voce
|
||||
rappresentata dalla struttura ``kernel_symbol`` che avrà il campo
|
||||
@ -94,7 +94,7 @@ dei nomi che contiene i simboli desiderati. Per esempio un modulo che
|
||||
usa il simbolo usb_stor_suspend deve importare lo spazio dei nomi
|
||||
USB_STORAGE usando la seguente dichiarazione::
|
||||
|
||||
MODULE_IMPORT_NS(USB_STORAGE);
|
||||
MODULE_IMPORT_NS("USB_STORAGE");
|
||||
|
||||
Questo creerà un'etichetta ``modinfo`` per ogni spazio dei nomi
|
||||
importato. Un risvolto di questo fatto è che gli spazi dei
|
||||
@ -107,7 +107,7 @@ modinfo::
|
||||
[...]
|
||||
|
||||
|
||||
Si consiglia di posizionare la dichiarazione MODULE_IMPORT_NS() vicino
|
||||
Si consiglia di posizionare la dichiarazione MODULE_IMPORT_NS("") vicino
|
||||
ai metadati del modulo come MODULE_AUTHOR() o MODULE_LICENSE(). Fate
|
||||
riferimento alla sezione 5. per creare automaticamente le importazioni
|
||||
mancanti.
|
||||
@ -131,7 +131,7 @@ emetterà un avviso.
|
||||
La mancanza di un'importazione può essere individuata facilmente al momento
|
||||
della compilazione. Infatti, modpost emetterà un avviso se il modulo usa
|
||||
un simbolo da uno spazio dei nomi che non è stato importato.
|
||||
La dichiarazione MODULE_IMPORT_NS() viene solitamente aggiunta in un posto
|
||||
La dichiarazione MODULE_IMPORT_NS("") viene solitamente aggiunta in un posto
|
||||
ben definito (assieme agli altri metadati del modulo). Per facilitare
|
||||
la vita di chi scrive moduli (e i manutentori di sottosistemi), esistono uno
|
||||
script e un target make per correggere le importazioni mancanti. Questo può
|
||||
|
@ -48,7 +48,7 @@
|
||||
要是一个预处理器符号。例如,要把符号 ``usb_stor_suspend`` 导出到命名空间 ``USB_STORAGE``,
|
||||
请使用::
|
||||
|
||||
EXPORT_SYMBOL_NS(usb_stor_suspend, USB_STORAGE);
|
||||
EXPORT_SYMBOL_NS(usb_stor_suspend, "USB_STORAGE");
|
||||
|
||||
相应的 ksymtab 条目结构体 ``kernel_symbol`` 将有相应的成员 ``命名空间`` 集。
|
||||
导出时未指明命名空间的符号将指向 ``NULL`` 。如果没有定义命名空间,则默认没有。
|
||||
@ -88,7 +88,7 @@
|
||||
表示它所使用的命名空间的符号。例如,一个使用usb_stor_suspend符号的
|
||||
模块,需要使用如下语句导入命名空间USB_STORAGE::
|
||||
|
||||
MODULE_IMPORT_NS(USB_STORAGE);
|
||||
MODULE_IMPORT_NS("USB_STORAGE");
|
||||
|
||||
这将在模块中为每个导入的命名空间创建一个 ``modinfo`` 标签。这也顺带
|
||||
使得可以用modinfo检查模块已导入的命名空间::
|
||||
@ -99,7 +99,7 @@
|
||||
[...]
|
||||
|
||||
|
||||
建议将 MODULE_IMPORT_NS() 语句添加到靠近其他模块元数据定义的地方,
|
||||
建议将 MODULE_IMPORT_NS("") 语句添加到靠近其他模块元数据定义的地方,
|
||||
如 MODULE_AUTHOR() 或 MODULE_LICENSE() 。关于自动创建缺失的导入
|
||||
语句的方法,请参考第5节。
|
||||
|
||||
@ -118,7 +118,7 @@ EINVAL方式失败。要允许加载不满足这个前提条件的模块,可
|
||||
|
||||
缺少命名空间的导入可以在构建时很容易被检测到。事实上,如果一个模块
|
||||
使用了一个命名空间的符号而没有导入它,modpost会发出警告。
|
||||
MODULE_IMPORT_NS()语句通常会被添加到一个明确的位置(和其他模块元
|
||||
MODULE_IMPORT_NS("")语句通常会被添加到一个明确的位置(和其他模块元
|
||||
数据一起)。为了使模块作者(和子系统维护者)的生活更加轻松,我们提
|
||||
供了一个脚本和make目标来修复丢失的导入。修复丢失的导入可以用::
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
#include "aes-ce-setkey.h"
|
||||
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
||||
static int num_rounds(struct crypto_aes_ctx *ctx)
|
||||
{
|
||||
|
@ -1048,7 +1048,7 @@ static int __init aes_init(void)
|
||||
|
||||
#ifdef USE_V8_CRYPTO_EXTENSIONS
|
||||
module_cpu_feature_match(AES, aes_init);
|
||||
EXPORT_SYMBOL_NS(ce_aes_mac_update, CRYPTO_INTERNAL);
|
||||
EXPORT_SYMBOL_NS(ce_aes_mac_update, "CRYPTO_INTERNAL");
|
||||
#else
|
||||
module_init(aes_init);
|
||||
EXPORT_SYMBOL(neon_aes_ecb_encrypt);
|
||||
|
@ -74,4 +74,4 @@ MODULE_DESCRIPTION("IBM VMX cryptographic acceleration instructions "
|
||||
"support on Power 8");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_VERSION("1.0.0");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -1168,4 +1168,4 @@ MODULE_ALIAS_CRYPTO("aes-all");
|
||||
|
||||
MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -354,7 +354,7 @@ bool cpu_cache_has_invalidate_memregion(void)
|
||||
{
|
||||
return !cpu_feature_enabled(X86_FEATURE_HYPERVISOR);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cpu_cache_has_invalidate_memregion, DEVMEM);
|
||||
EXPORT_SYMBOL_NS_GPL(cpu_cache_has_invalidate_memregion, "DEVMEM");
|
||||
|
||||
int cpu_cache_invalidate_memregion(int res_desc)
|
||||
{
|
||||
@ -363,7 +363,7 @@ int cpu_cache_invalidate_memregion(int res_desc)
|
||||
wbinvd_on_all_cpus();
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cpu_cache_invalidate_memregion, DEVMEM);
|
||||
EXPORT_SYMBOL_NS_GPL(cpu_cache_invalidate_memregion, "DEVMEM");
|
||||
#endif
|
||||
|
||||
static void __cpa_flush_all(void *arg)
|
||||
|
@ -646,4 +646,4 @@ MODULE_DESCRIPTION("Adiantum length-preserving encryption mode");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_AUTHOR("Eric Biggers <ebiggers@google.com>");
|
||||
MODULE_ALIAS_CRYPTO("adiantum");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -471,4 +471,4 @@ subsys_initcall(prng_mod_init);
|
||||
module_exit(prng_mod_fini);
|
||||
MODULE_ALIAS_CRYPTO("stdrng");
|
||||
MODULE_ALIAS_CRYPTO("ansi_cprng");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -949,4 +949,4 @@ MODULE_ALIAS_CRYPTO("ccm_base");
|
||||
MODULE_ALIAS_CRYPTO("rfc4309");
|
||||
MODULE_ALIAS_CRYPTO("ccm");
|
||||
MODULE_ALIAS_CRYPTO("cbcmac");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -53,7 +53,7 @@ int crypto_cipher_setkey(struct crypto_cipher *tfm,
|
||||
|
||||
return cia->cia_setkey(crypto_cipher_tfm(tfm), key, keylen);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(crypto_cipher_setkey, CRYPTO_INTERNAL);
|
||||
EXPORT_SYMBOL_NS_GPL(crypto_cipher_setkey, "CRYPTO_INTERNAL");
|
||||
|
||||
static inline void cipher_crypt_one(struct crypto_cipher *tfm,
|
||||
u8 *dst, const u8 *src, bool enc)
|
||||
@ -81,14 +81,14 @@ void crypto_cipher_encrypt_one(struct crypto_cipher *tfm,
|
||||
{
|
||||
cipher_crypt_one(tfm, dst, src, true);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(crypto_cipher_encrypt_one, CRYPTO_INTERNAL);
|
||||
EXPORT_SYMBOL_NS_GPL(crypto_cipher_encrypt_one, "CRYPTO_INTERNAL");
|
||||
|
||||
void crypto_cipher_decrypt_one(struct crypto_cipher *tfm,
|
||||
u8 *dst, const u8 *src)
|
||||
{
|
||||
cipher_crypt_one(tfm, dst, src, false);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(crypto_cipher_decrypt_one, CRYPTO_INTERNAL);
|
||||
EXPORT_SYMBOL_NS_GPL(crypto_cipher_decrypt_one, "CRYPTO_INTERNAL");
|
||||
|
||||
struct crypto_cipher *crypto_clone_cipher(struct crypto_cipher *cipher)
|
||||
{
|
||||
|
@ -313,4 +313,4 @@ module_exit(crypto_cmac_module_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("CMAC keyed hash algorithm");
|
||||
MODULE_ALIAS_CRYPTO("cmac");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -357,4 +357,4 @@ MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("CTR block cipher mode of operation");
|
||||
MODULE_ALIAS_CRYPTO("rfc3686");
|
||||
MODULE_ALIAS_CRYPTO("ctr");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -2151,4 +2151,4 @@ MODULE_DESCRIPTION("NIST SP800-90A Deterministic Random Bit Generator (DRBG) "
|
||||
CRYPTO_DRBG_HMAC_STRING
|
||||
CRYPTO_DRBG_CTR_STRING);
|
||||
MODULE_ALIAS_CRYPTO("stdrng");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -225,4 +225,4 @@ module_exit(crypto_ecb_module_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("ECB block cipher mode of operation");
|
||||
MODULE_ALIAS_CRYPTO("ecb");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -649,4 +649,4 @@ module_exit(essiv_module_exit);
|
||||
MODULE_DESCRIPTION("ESSIV skcipher/aead wrapper for block encryption");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_ALIAS_CRYPTO("essiv");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -576,4 +576,4 @@ module_exit(hctr2_module_exit);
|
||||
MODULE_DESCRIPTION("HCTR2 length-preserving encryption mode");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_ALIAS_CRYPTO("hctr2");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -317,4 +317,4 @@ MODULE_LICENSE("Dual BSD/GPL");
|
||||
MODULE_AUTHOR("Stephan Mueller <smueller@chronox.de>");
|
||||
MODULE_DESCRIPTION("Key Wrapping (RFC3394 / NIST SP800-38F)");
|
||||
MODULE_ALIAS_CRYPTO("kw");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -192,4 +192,4 @@ module_exit(crypto_pcbc_module_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("PCBC block cipher mode of operation");
|
||||
MODULE_ALIAS_CRYPTO("pcbc");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -1085,4 +1085,4 @@ EXPORT_SYMBOL_GPL(skcipher_alloc_instance_simple);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("Symmetric key cipher type");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -39,7 +39,7 @@
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
||||
static bool notests;
|
||||
module_param(notests, bool, 0644);
|
||||
|
@ -693,4 +693,4 @@ module_exit(vmac_module_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("VMAC hash algorithm");
|
||||
MODULE_ALIAS_CRYPTO("vmac64");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -261,4 +261,4 @@ module_exit(crypto_xcbc_module_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("XCBC keyed hash algorithm");
|
||||
MODULE_ALIAS_CRYPTO("xcbc");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -188,4 +188,4 @@ module_exit(crypto_xctr_module_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("XCTR block cipher mode of operation");
|
||||
MODULE_ALIAS_CRYPTO("xctr");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
|
@ -472,5 +472,5 @@ module_exit(xts_module_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("XTS block cipher mode");
|
||||
MODULE_ALIAS_CRYPTO("xts");
|
||||
MODULE_IMPORT_NS(CRYPTO_INTERNAL);
|
||||
MODULE_IMPORT_NS("CRYPTO_INTERNAL");
|
||||
MODULE_SOFTDEP("pre: ecb");
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/pci-p2pdma.h>
|
||||
|
||||
MODULE_IMPORT_NS(DMA_BUF);
|
||||
MODULE_IMPORT_NS("DMA_BUF");
|
||||
|
||||
#define HL_MMU_DEBUG 0
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
#include "qaic_timesync.h"
|
||||
#include "sahara.h"
|
||||
|
||||
MODULE_IMPORT_NS(DMA_BUF);
|
||||
MODULE_IMPORT_NS("DMA_BUF");
|
||||
|
||||
#define PCI_DEV_AIC080 0xa080
|
||||
#define PCI_DEV_AIC100 0xa100
|
||||
|
@ -45,7 +45,7 @@ int einj_cxl_available_error_type_show(struct seq_file *m, void *v)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(einj_cxl_available_error_type_show, CXL);
|
||||
EXPORT_SYMBOL_NS_GPL(einj_cxl_available_error_type_show, "CXL");
|
||||
|
||||
static int cxl_dport_get_sbdf(struct pci_dev *dport_dev, u64 *sbdf)
|
||||
{
|
||||
@ -83,7 +83,7 @@ int einj_cxl_inject_rch_error(u64 rcrb, u64 type)
|
||||
return einj_cxl_rch_error_inject(type, 0x2, rcrb, GENMASK_ULL(63, 0),
|
||||
0, 0);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(einj_cxl_inject_rch_error, CXL);
|
||||
EXPORT_SYMBOL_NS_GPL(einj_cxl_inject_rch_error, "CXL");
|
||||
|
||||
int einj_cxl_inject_error(struct pci_dev *dport, u64 type)
|
||||
{
|
||||
@ -104,10 +104,10 @@ int einj_cxl_inject_error(struct pci_dev *dport, u64 type)
|
||||
|
||||
return einj_error_inject(type, 0x4, 0, 0, 0, param4);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(einj_cxl_inject_error, CXL);
|
||||
EXPORT_SYMBOL_NS_GPL(einj_cxl_inject_error, "CXL");
|
||||
|
||||
bool einj_cxl_is_initialized(void)
|
||||
{
|
||||
return einj_initialized;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(einj_cxl_is_initialized, CXL);
|
||||
EXPORT_SYMBOL_NS_GPL(einj_cxl_is_initialized, "CXL");
|
||||
|
@ -726,7 +726,7 @@ int cxl_cper_register_work(struct work_struct *work)
|
||||
cxl_cper_work = work;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cxl_cper_register_work, CXL);
|
||||
EXPORT_SYMBOL_NS_GPL(cxl_cper_register_work, "CXL");
|
||||
|
||||
int cxl_cper_unregister_work(struct work_struct *work)
|
||||
{
|
||||
@ -737,13 +737,13 @@ int cxl_cper_unregister_work(struct work_struct *work)
|
||||
cxl_cper_work = NULL;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cxl_cper_unregister_work, CXL);
|
||||
EXPORT_SYMBOL_NS_GPL(cxl_cper_unregister_work, "CXL");
|
||||
|
||||
int cxl_cper_kfifo_get(struct cxl_cper_work_data *wd)
|
||||
{
|
||||
return kfifo_get(&cxl_cper_fifo, wd);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cxl_cper_kfifo_get, CXL);
|
||||
EXPORT_SYMBOL_NS_GPL(cxl_cper_kfifo_get, "CXL");
|
||||
|
||||
static bool ghes_do_proc(struct ghes *ghes,
|
||||
const struct acpi_hest_generic_status *estatus)
|
||||
|
@ -151,7 +151,7 @@ int acpi_get_genport_coordinates(u32 uid,
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(acpi_get_genport_coordinates, CXL);
|
||||
EXPORT_SYMBOL_NS_GPL(acpi_get_genport_coordinates, "CXL");
|
||||
|
||||
static __init void alloc_memory_initiator(unsigned int cpu_pxm)
|
||||
{
|
||||
|
@ -1082,7 +1082,7 @@ static void __exit acpi_thermal_exit(void)
|
||||
module_init(acpi_thermal_init);
|
||||
module_exit(acpi_thermal_exit);
|
||||
|
||||
MODULE_IMPORT_NS(ACPI_THERMAL);
|
||||
MODULE_IMPORT_NS("ACPI_THERMAL");
|
||||
MODULE_AUTHOR("Paul Diefenbaugh");
|
||||
MODULE_DESCRIPTION("ACPI Thermal Zone Driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -53,25 +53,25 @@ int acpi_active_trip_temp(struct acpi_device *adev, int id, int *ret_temp)
|
||||
|
||||
return acpi_trip_temp(adev, obj_name, ret_temp);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(acpi_active_trip_temp, ACPI_THERMAL);
|
||||
EXPORT_SYMBOL_NS_GPL(acpi_active_trip_temp, "ACPI_THERMAL");
|
||||
|
||||
int acpi_passive_trip_temp(struct acpi_device *adev, int *ret_temp)
|
||||
{
|
||||
return acpi_trip_temp(adev, "_PSV", ret_temp);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(acpi_passive_trip_temp, ACPI_THERMAL);
|
||||
EXPORT_SYMBOL_NS_GPL(acpi_passive_trip_temp, "ACPI_THERMAL");
|
||||
|
||||
int acpi_hot_trip_temp(struct acpi_device *adev, int *ret_temp)
|
||||
{
|
||||
return acpi_trip_temp(adev, "_HOT", ret_temp);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(acpi_hot_trip_temp, ACPI_THERMAL);
|
||||
EXPORT_SYMBOL_NS_GPL(acpi_hot_trip_temp, "ACPI_THERMAL");
|
||||
|
||||
int acpi_critical_trip_temp(struct acpi_device *adev, int *ret_temp)
|
||||
{
|
||||
return acpi_trip_temp(adev, "_CRT", ret_temp);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(acpi_critical_trip_temp, ACPI_THERMAL);
|
||||
EXPORT_SYMBOL_NS_GPL(acpi_critical_trip_temp, "ACPI_THERMAL");
|
||||
|
||||
static int thermal_temp(int error, int temp_decik, int *ret_temp)
|
||||
{
|
||||
|
@ -780,5 +780,5 @@ module_i2c_driver(ht16k33_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Holtek HT16K33 driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(LINEDISP);
|
||||
MODULE_IMPORT_NS("LINEDISP");
|
||||
MODULE_AUTHOR("Robin van der Gracht <robin@protonic.nl>");
|
||||
|
@ -298,4 +298,4 @@ module_platform_driver(img_ascii_lcd_driver);
|
||||
MODULE_DESCRIPTION("Imagination Technologies ASCII LCD Display");
|
||||
MODULE_AUTHOR("Paul Burton <paul.burton@mips.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(LINEDISP);
|
||||
MODULE_IMPORT_NS("LINEDISP");
|
||||
|
@ -381,7 +381,7 @@ int linedisp_register(struct linedisp *linedisp, struct device *parent,
|
||||
put_device(&linedisp->dev);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(linedisp_register, LINEDISP);
|
||||
EXPORT_SYMBOL_NS_GPL(linedisp_register, "LINEDISP");
|
||||
|
||||
/**
|
||||
* linedisp_unregister - unregister a character line display
|
||||
@ -394,7 +394,7 @@ void linedisp_unregister(struct linedisp *linedisp)
|
||||
del_timer_sync(&linedisp->timer);
|
||||
put_device(&linedisp->dev);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(linedisp_unregister, LINEDISP);
|
||||
EXPORT_SYMBOL_NS_GPL(linedisp_unregister, "LINEDISP");
|
||||
|
||||
MODULE_DESCRIPTION("Character line display core support");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -191,4 +191,4 @@ module_i2c_driver(max6959_i2c_driver);
|
||||
MODULE_DESCRIPTION("MAX6958/6959 7-segment LED controller");
|
||||
MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(LINEDISP);
|
||||
MODULE_IMPORT_NS("LINEDISP");
|
||||
|
@ -108,4 +108,4 @@ module_platform_driver(seg_led_driver);
|
||||
MODULE_AUTHOR("Chris Packham <chris.packham@alliedtelesis.co.nz>");
|
||||
MODULE_DESCRIPTION("7 segment LED driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(LINEDISP);
|
||||
MODULE_IMPORT_NS("LINEDISP");
|
||||
|
@ -61,7 +61,7 @@ bool firmware_request_builtin(struct firmware *fw, const char *name)
|
||||
|
||||
return false;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(firmware_request_builtin, TEST_FIRMWARE);
|
||||
EXPORT_SYMBOL_NS_GPL(firmware_request_builtin, "TEST_FIRMWARE");
|
||||
|
||||
/**
|
||||
* firmware_request_builtin_buf() - load builtin firmware into optional buffer
|
||||
|
@ -22,7 +22,7 @@ struct firmware_fallback_config fw_fallback_config = {
|
||||
.loading_timeout = 60,
|
||||
.old_timeout = 60,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(fw_fallback_config, FIRMWARE_LOADER_PRIVATE);
|
||||
EXPORT_SYMBOL_NS_GPL(fw_fallback_config, "FIRMWARE_LOADER_PRIVATE");
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
static struct ctl_table firmware_config_table[] = {
|
||||
@ -56,13 +56,13 @@ int register_firmware_config_sysctl(void)
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(register_firmware_config_sysctl, FIRMWARE_LOADER_PRIVATE);
|
||||
EXPORT_SYMBOL_NS_GPL(register_firmware_config_sysctl, "FIRMWARE_LOADER_PRIVATE");
|
||||
|
||||
void unregister_firmware_config_sysctl(void)
|
||||
{
|
||||
unregister_sysctl_table(firmware_config_sysct_table_header);
|
||||
firmware_config_sysct_table_header = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(unregister_firmware_config_sysctl, FIRMWARE_LOADER_PRIVATE);
|
||||
EXPORT_SYMBOL_NS_GPL(unregister_firmware_config_sysctl, "FIRMWARE_LOADER_PRIVATE");
|
||||
|
||||
#endif /* CONFIG_SYSCTL */
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
#include "firmware.h"
|
||||
|
||||
MODULE_IMPORT_NS(FIRMWARE_LOADER_PRIVATE);
|
||||
MODULE_IMPORT_NS("FIRMWARE_LOADER_PRIVATE");
|
||||
|
||||
extern struct firmware_fallback_config fw_fallback_config;
|
||||
extern struct device_attribute dev_attr_loading;
|
||||
|
@ -868,7 +868,7 @@ int cdx_device_add(struct cdx_dev_params *dev_params)
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cdx_device_add, CDX_BUS_CONTROLLER);
|
||||
EXPORT_SYMBOL_NS_GPL(cdx_device_add, "CDX_BUS_CONTROLLER");
|
||||
|
||||
struct device *cdx_bus_add(struct cdx_controller *cdx, u8 bus_num)
|
||||
{
|
||||
@ -915,7 +915,7 @@ struct device *cdx_bus_add(struct cdx_controller *cdx, u8 bus_num)
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cdx_bus_add, CDX_BUS_CONTROLLER);
|
||||
EXPORT_SYMBOL_NS_GPL(cdx_bus_add, "CDX_BUS_CONTROLLER");
|
||||
|
||||
int cdx_register_controller(struct cdx_controller *cdx)
|
||||
{
|
||||
@ -940,7 +940,7 @@ int cdx_register_controller(struct cdx_controller *cdx)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cdx_register_controller, CDX_BUS_CONTROLLER);
|
||||
EXPORT_SYMBOL_NS_GPL(cdx_register_controller, "CDX_BUS_CONTROLLER");
|
||||
|
||||
void cdx_unregister_controller(struct cdx_controller *cdx)
|
||||
{
|
||||
@ -955,7 +955,7 @@ void cdx_unregister_controller(struct cdx_controller *cdx)
|
||||
|
||||
mutex_unlock(&cdx_controller_lock);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cdx_unregister_controller, CDX_BUS_CONTROLLER);
|
||||
EXPORT_SYMBOL_NS_GPL(cdx_unregister_controller, "CDX_BUS_CONTROLLER");
|
||||
|
||||
static int __init cdx_bus_init(void)
|
||||
{
|
||||
|
@ -189,4 +189,4 @@ struct irq_domain *cdx_msi_domain_init(struct device *dev)
|
||||
|
||||
return cdx_msi_domain;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cdx_msi_domain_init, CDX_BUS_CONTROLLER);
|
||||
EXPORT_SYMBOL_NS_GPL(cdx_msi_domain_init, "CDX_BUS_CONTROLLER");
|
||||
|
@ -275,4 +275,4 @@ module_exit(cdx_controller_exit);
|
||||
MODULE_AUTHOR("AMD Inc.");
|
||||
MODULE_DESCRIPTION("CDX controller for AMD devices");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CDX_BUS_CONTROLLER);
|
||||
MODULE_IMPORT_NS("CDX_BUS_CONTROLLER");
|
||||
|
@ -2246,4 +2246,4 @@ MODULE_DESCRIPTION("Amlogic A1 Peripherals Clock Controller driver");
|
||||
MODULE_AUTHOR("Jian Hu <jian.hu@amlogic.com>");
|
||||
MODULE_AUTHOR("Dmitry Rokosov <ddrokosov@sberdevices.ru>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -360,4 +360,4 @@ MODULE_DESCRIPTION("Amlogic S4 PLL Clock Controller driver");
|
||||
MODULE_AUTHOR("Jian Hu <jian.hu@amlogic.com>");
|
||||
MODULE_AUTHOR("Dmitry Rokosov <ddrokosov@sberdevices.ru>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -342,4 +342,4 @@ module_platform_driver(axg_aoclkc_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic AXG Always-ON Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -1821,4 +1821,4 @@ module_platform_driver(axg_audio_driver);
|
||||
MODULE_DESCRIPTION("Amlogic AXG/G12A/SM1 Audio Clock driver");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -2181,4 +2181,4 @@ module_platform_driver(axg_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic AXG Main Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -2364,4 +2364,4 @@ module_platform_driver(c3_peripherals_driver);
|
||||
MODULE_DESCRIPTION("Amlogic C3 Peripherals Clock Controller driver");
|
||||
MODULE_AUTHOR("Chuan Liu <chuan.liu@amlogic.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -746,4 +746,4 @@ module_platform_driver(c3_pll_driver);
|
||||
MODULE_DESCRIPTION("Amlogic C3 PLL Clock Controller driver");
|
||||
MODULE_AUTHOR("Chuan Liu <chuan.liu@amlogic.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -65,9 +65,9 @@ const struct clk_ops meson_clk_cpu_dyndiv_ops = {
|
||||
.determine_rate = meson_clk_cpu_dyndiv_determine_rate,
|
||||
.set_rate = meson_clk_cpu_dyndiv_set_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_cpu_dyndiv_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_cpu_dyndiv_ops, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic CPU Dynamic Clock divider");
|
||||
MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -130,15 +130,15 @@ const struct clk_ops meson_clk_dualdiv_ops = {
|
||||
.determine_rate = meson_clk_dualdiv_determine_rate,
|
||||
.set_rate = meson_clk_dualdiv_set_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_dualdiv_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_dualdiv_ops, "CLK_MESON");
|
||||
|
||||
const struct clk_ops meson_clk_dualdiv_ro_ops = {
|
||||
.recalc_rate = meson_clk_dualdiv_recalc_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_dualdiv_ro_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_dualdiv_ro_ops, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic dual divider driver");
|
||||
MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -154,7 +154,7 @@ const struct clk_ops meson_clk_mpll_ro_ops = {
|
||||
.recalc_rate = mpll_recalc_rate,
|
||||
.determine_rate = mpll_determine_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_mpll_ro_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_mpll_ro_ops, "CLK_MESON");
|
||||
|
||||
const struct clk_ops meson_clk_mpll_ops = {
|
||||
.recalc_rate = mpll_recalc_rate,
|
||||
@ -162,9 +162,9 @@ const struct clk_ops meson_clk_mpll_ops = {
|
||||
.set_rate = mpll_set_rate,
|
||||
.init = mpll_init,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_mpll_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_mpll_ops, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic MPLL driver");
|
||||
MODULE_AUTHOR("Michael Turquette <mturquette@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -61,7 +61,7 @@ const struct clk_ops meson_clk_phase_ops = {
|
||||
.get_phase = meson_clk_phase_get_phase,
|
||||
.set_phase = meson_clk_phase_set_phase,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_phase_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_phase_ops, "CLK_MESON");
|
||||
|
||||
/*
|
||||
* This is a special clock for the audio controller.
|
||||
@ -123,7 +123,7 @@ const struct clk_ops meson_clk_triphase_ops = {
|
||||
.get_phase = meson_clk_triphase_get_phase,
|
||||
.set_phase = meson_clk_triphase_set_phase,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_triphase_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_triphase_ops, "CLK_MESON");
|
||||
|
||||
/*
|
||||
* This is a special clock for the audio controller.
|
||||
@ -178,9 +178,9 @@ const struct clk_ops meson_sclk_ws_inv_ops = {
|
||||
.get_phase = meson_sclk_ws_inv_get_phase,
|
||||
.set_phase = meson_sclk_ws_inv_set_phase,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_sclk_ws_inv_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_sclk_ws_inv_ops, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic phase driver");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -474,7 +474,7 @@ const struct clk_ops meson_clk_pcie_pll_ops = {
|
||||
.enable = meson_clk_pcie_pll_enable,
|
||||
.disable = meson_clk_pll_disable
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_pcie_pll_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_pcie_pll_ops, "CLK_MESON");
|
||||
|
||||
const struct clk_ops meson_clk_pll_ops = {
|
||||
.init = meson_clk_pll_init,
|
||||
@ -485,16 +485,16 @@ const struct clk_ops meson_clk_pll_ops = {
|
||||
.enable = meson_clk_pll_enable,
|
||||
.disable = meson_clk_pll_disable
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_pll_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_pll_ops, "CLK_MESON");
|
||||
|
||||
const struct clk_ops meson_clk_pll_ro_ops = {
|
||||
.recalc_rate = meson_clk_pll_recalc_rate,
|
||||
.is_enabled = meson_clk_pll_is_enabled,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_pll_ro_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_pll_ro_ops, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic PLL driver");
|
||||
MODULE_AUTHOR("Carlo Caione <carlo@endlessm.com>");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -49,12 +49,12 @@ const struct clk_ops clk_regmap_gate_ops = {
|
||||
.disable = clk_regmap_gate_disable,
|
||||
.is_enabled = clk_regmap_gate_is_enabled,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_gate_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_gate_ops, "CLK_MESON");
|
||||
|
||||
const struct clk_ops clk_regmap_gate_ro_ops = {
|
||||
.is_enabled = clk_regmap_gate_is_enabled,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_gate_ro_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_gate_ro_ops, "CLK_MESON");
|
||||
|
||||
static unsigned long clk_regmap_div_recalc_rate(struct clk_hw *hw,
|
||||
unsigned long prate)
|
||||
@ -125,13 +125,13 @@ const struct clk_ops clk_regmap_divider_ops = {
|
||||
.determine_rate = clk_regmap_div_determine_rate,
|
||||
.set_rate = clk_regmap_div_set_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_divider_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_divider_ops, "CLK_MESON");
|
||||
|
||||
const struct clk_ops clk_regmap_divider_ro_ops = {
|
||||
.recalc_rate = clk_regmap_div_recalc_rate,
|
||||
.determine_rate = clk_regmap_div_determine_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_divider_ro_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_divider_ro_ops, "CLK_MESON");
|
||||
|
||||
static u8 clk_regmap_mux_get_parent(struct clk_hw *hw)
|
||||
{
|
||||
@ -174,14 +174,14 @@ const struct clk_ops clk_regmap_mux_ops = {
|
||||
.set_parent = clk_regmap_mux_set_parent,
|
||||
.determine_rate = clk_regmap_mux_determine_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_mux_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_mux_ops, "CLK_MESON");
|
||||
|
||||
const struct clk_ops clk_regmap_mux_ro_ops = {
|
||||
.get_parent = clk_regmap_mux_get_parent,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_mux_ro_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_mux_ro_ops, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic regmap backed clock driver");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -477,4 +477,4 @@ module_platform_driver(g12a_aoclkc_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic G12A Always-ON Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -5610,4 +5610,4 @@ module_platform_driver(g12a_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic G12/SM1 Main Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -303,4 +303,4 @@ module_platform_driver(gxbb_aoclkc_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic GXBB Always-ON Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -3565,4 +3565,4 @@ module_platform_driver(gxbb_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic GXBB Main Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -88,8 +88,8 @@ int meson_aoclkc_probe(struct platform_device *pdev)
|
||||
|
||||
return devm_of_clk_add_hw_provider(dev, meson_clk_hw_get, (void *)&data->hw_clks);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(meson_aoclkc_probe, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_aoclkc_probe, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic Always-ON Clock Controller helpers");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -20,8 +20,8 @@ struct clk_hw *meson_clk_hw_get(struct of_phandle_args *clkspec, void *clk_hw_da
|
||||
|
||||
return data->hws[idx];
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_hw_get, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_hw_get, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic Clock Controller Utilities");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -57,8 +57,8 @@ int meson_eeclkc_probe(struct platform_device *pdev)
|
||||
|
||||
return devm_of_clk_add_hw_provider(dev, meson_clk_hw_get, (void *)&data->hw_clks);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(meson_eeclkc_probe, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_eeclkc_probe, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic Main Clock Controller Helpers");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -3814,4 +3814,4 @@ module_platform_driver(s4_driver);
|
||||
MODULE_DESCRIPTION("Amlogic S4 Peripherals Clock Controller driver");
|
||||
MODULE_AUTHOR("Yu Tu <yu.tu@amlogic.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -872,4 +872,4 @@ module_platform_driver(s4_driver);
|
||||
MODULE_DESCRIPTION("Amlogic S4 PLL Clock Controller driver");
|
||||
MODULE_AUTHOR("Yu Tu <yu.tu@amlogic.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -247,9 +247,9 @@ const struct clk_ops meson_sclk_div_ops = {
|
||||
.set_duty_cycle = sclk_div_set_duty_cycle,
|
||||
.init = sclk_div_init,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_sclk_div_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_sclk_div_ops, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic Sample divider driver");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -49,7 +49,7 @@ const struct clk_ops meson_vclk_gate_ops = {
|
||||
.disable = meson_vclk_gate_disable,
|
||||
.is_enabled = meson_vclk_gate_is_enabled,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_vclk_gate_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_vclk_gate_ops, "CLK_MESON");
|
||||
|
||||
/* The VCLK Divider has supplementary reset & enable bits */
|
||||
|
||||
@ -134,9 +134,9 @@ const struct clk_ops meson_vclk_div_ops = {
|
||||
.disable = meson_vclk_div_disable,
|
||||
.is_enabled = meson_vclk_div_is_enabled,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_vclk_div_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_vclk_div_ops, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic vclk clock driver");
|
||||
MODULE_AUTHOR("Neil Armstrong <neil.armstrong@linaro.org>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -92,9 +92,9 @@ static unsigned long meson_vid_pll_div_recalc_rate(struct clk_hw *hw,
|
||||
const struct clk_ops meson_vid_pll_div_ro_ops = {
|
||||
.recalc_rate = meson_vid_pll_div_recalc_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(meson_vid_pll_div_ro_ops, CLK_MESON);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_vid_pll_div_ro_ops, "CLK_MESON");
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic video pll divider driver");
|
||||
MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
MODULE_IMPORT_NS("CLK_MESON");
|
||||
|
@ -443,4 +443,4 @@ MODULE_DESCRIPTION("Microchip PolarFire SoC Clock Driver");
|
||||
MODULE_AUTHOR("Padmarao Begari <padmarao.begari@microchip.com>");
|
||||
MODULE_AUTHOR("Daire McNamara <daire.mcnamara@microchip.com>");
|
||||
MODULE_AUTHOR("Conor Dooley <conor.dooley@microchip.com>");
|
||||
MODULE_IMPORT_NS(MCHP_CLK_MPFS);
|
||||
MODULE_IMPORT_NS("MCHP_CLK_MPFS");
|
||||
|
@ -137,6 +137,6 @@ static struct platform_driver sun20i_d1_r_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun20i_d1_r_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner D1/R528/T113 PRCM CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -1406,6 +1406,6 @@ static struct platform_driver sun20i_d1_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun20i_d1_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner D1/R528/T113 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -1493,6 +1493,6 @@ static struct platform_driver sun4i_a10_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun4i_a10_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A10/A20 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -214,6 +214,6 @@ static struct platform_driver sun50i_a100_r_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun50i_a100_r_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A100 PRCM CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -1276,6 +1276,6 @@ static struct platform_driver sun50i_a100_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun50i_a100_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A100 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -994,6 +994,6 @@ static struct platform_driver sun50i_a64_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun50i_a64_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A64 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -256,6 +256,6 @@ static struct platform_driver sun50i_h6_r_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun50i_h6_r_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner H6 and H616 PRCM CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -1286,6 +1286,6 @@ static struct platform_driver sun50i_h6_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun50i_h6_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner H6 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -1185,6 +1185,6 @@ static struct platform_driver sun50i_h616_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun50i_h616_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner H616 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -1283,6 +1283,6 @@ static struct platform_driver sun6i_a31_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun6i_a31_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A31/A31s CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -381,6 +381,6 @@ int sun6i_rtc_ccu_probe(struct device *dev, void __iomem *reg)
|
||||
return devm_sunxi_ccu_probe(dev, reg, &sun6i_rtc_ccu_desc);
|
||||
}
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner H616/R329 RTC CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -763,6 +763,6 @@ static struct platform_driver sun8i_a23_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun8i_a23_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A23 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -835,6 +835,6 @@ static struct platform_driver sun8i_a33_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun8i_a33_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A33 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -923,6 +923,6 @@ static struct platform_driver sun8i_a83t_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun8i_a83t_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A83T CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -348,6 +348,6 @@ static struct platform_driver sunxi_de2_clk_driver = {
|
||||
};
|
||||
module_platform_driver(sunxi_de2_clk_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner SoCs DE2 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -1094,6 +1094,6 @@ static struct platform_driver sun8i_h3_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun8i_h3_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner H3 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -274,6 +274,6 @@ static struct platform_driver sun8i_r_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun8i_r_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for Allwinner SoCs' PRCM CCUs");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -1375,6 +1375,6 @@ static struct platform_driver sun8i_r40_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun8i_r40_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner R40 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -780,6 +780,6 @@ static struct platform_driver sun8i_v3s_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun8i_v3s_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner V3s CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -266,6 +266,6 @@ static struct platform_driver sun9i_a80_de_clk_driver = {
|
||||
};
|
||||
module_platform_driver(sun9i_a80_de_clk_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A80 Display Engine CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -138,6 +138,6 @@ static struct platform_driver sun9i_a80_usb_clk_driver = {
|
||||
};
|
||||
module_platform_driver(sun9i_a80_usb_clk_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A80 USB CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -1248,6 +1248,6 @@ static struct platform_driver sun9i_a80_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(sun9i_a80_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner A80 CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -577,6 +577,6 @@ static struct platform_driver suniv_f1c100s_ccu_driver = {
|
||||
};
|
||||
module_platform_driver(suniv_f1c100s_ccu_driver);
|
||||
|
||||
MODULE_IMPORT_NS(SUNXI_CCU);
|
||||
MODULE_IMPORT_NS("SUNXI_CCU");
|
||||
MODULE_DESCRIPTION("Support for the Allwinner newer F1C100s CCU");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -37,7 +37,7 @@ void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock)
|
||||
|
||||
WARN_ON(readl_relaxed_poll_timeout(addr, reg, reg & lock, 100, 70000));
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_helper_wait_for_lock, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_helper_wait_for_lock, "SUNXI_CCU");
|
||||
|
||||
bool ccu_is_better_rate(struct ccu_common *common,
|
||||
unsigned long target_rate,
|
||||
@ -59,7 +59,7 @@ bool ccu_is_better_rate(struct ccu_common *common,
|
||||
|
||||
return current_rate <= target_rate && current_rate > best_rate;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_is_better_rate, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_is_better_rate, "SUNXI_CCU");
|
||||
|
||||
/*
|
||||
* This clock notifier is called when the frequency of a PLL clock is
|
||||
@ -107,7 +107,7 @@ int ccu_pll_notifier_register(struct ccu_pll_nb *pll_nb)
|
||||
return clk_notifier_register(pll_nb->common->hw.clk,
|
||||
&pll_nb->clk_nb);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_pll_notifier_register, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_pll_notifier_register, "SUNXI_CCU");
|
||||
|
||||
static int sunxi_ccu_probe(struct sunxi_ccu *ccu, struct device *dev,
|
||||
struct device_node *node, void __iomem *reg,
|
||||
@ -234,7 +234,7 @@ int devm_sunxi_ccu_probe(struct device *dev, void __iomem *reg,
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(devm_sunxi_ccu_probe, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(devm_sunxi_ccu_probe, "SUNXI_CCU");
|
||||
|
||||
void of_sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
|
||||
const struct sunxi_ccu_desc *desc)
|
||||
|
@ -141,4 +141,4 @@ const struct clk_ops ccu_div_ops = {
|
||||
.recalc_rate = ccu_div_recalc_rate,
|
||||
.set_rate = ccu_div_set_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_div_ops, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_div_ops, "SUNXI_CCU");
|
||||
|
@ -18,7 +18,7 @@ bool ccu_frac_helper_is_enabled(struct ccu_common *common,
|
||||
|
||||
return !(readl(common->base + common->reg) & cf->enable);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_is_enabled, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_is_enabled, "SUNXI_CCU");
|
||||
|
||||
void ccu_frac_helper_enable(struct ccu_common *common,
|
||||
struct ccu_frac_internal *cf)
|
||||
@ -34,7 +34,7 @@ void ccu_frac_helper_enable(struct ccu_common *common,
|
||||
writel(reg & ~cf->enable, common->base + common->reg);
|
||||
spin_unlock_irqrestore(common->lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_enable, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_enable, "SUNXI_CCU");
|
||||
|
||||
void ccu_frac_helper_disable(struct ccu_common *common,
|
||||
struct ccu_frac_internal *cf)
|
||||
@ -50,7 +50,7 @@ void ccu_frac_helper_disable(struct ccu_common *common,
|
||||
writel(reg | cf->enable, common->base + common->reg);
|
||||
spin_unlock_irqrestore(common->lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_disable, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_disable, "SUNXI_CCU");
|
||||
|
||||
bool ccu_frac_helper_has_rate(struct ccu_common *common,
|
||||
struct ccu_frac_internal *cf,
|
||||
@ -61,7 +61,7 @@ bool ccu_frac_helper_has_rate(struct ccu_common *common,
|
||||
|
||||
return (cf->rates[0] == rate) || (cf->rates[1] == rate);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_has_rate, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_has_rate, "SUNXI_CCU");
|
||||
|
||||
unsigned long ccu_frac_helper_read_rate(struct ccu_common *common,
|
||||
struct ccu_frac_internal *cf)
|
||||
@ -83,7 +83,7 @@ unsigned long ccu_frac_helper_read_rate(struct ccu_common *common,
|
||||
|
||||
return (reg & cf->select) ? cf->rates[1] : cf->rates[0];
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_read_rate, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_read_rate, "SUNXI_CCU");
|
||||
|
||||
int ccu_frac_helper_set_rate(struct ccu_common *common,
|
||||
struct ccu_frac_internal *cf,
|
||||
@ -112,4 +112,4 @@ int ccu_frac_helper_set_rate(struct ccu_common *common,
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_set_rate, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_frac_helper_set_rate, "SUNXI_CCU");
|
||||
|
@ -24,7 +24,7 @@ void ccu_gate_helper_disable(struct ccu_common *common, u32 gate)
|
||||
|
||||
spin_unlock_irqrestore(common->lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_gate_helper_disable, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_gate_helper_disable, "SUNXI_CCU");
|
||||
|
||||
static void ccu_gate_disable(struct clk_hw *hw)
|
||||
{
|
||||
@ -50,7 +50,7 @@ int ccu_gate_helper_enable(struct ccu_common *common, u32 gate)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_gate_helper_enable, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_gate_helper_enable, "SUNXI_CCU");
|
||||
|
||||
static int ccu_gate_enable(struct clk_hw *hw)
|
||||
{
|
||||
@ -66,7 +66,7 @@ int ccu_gate_helper_is_enabled(struct ccu_common *common, u32 gate)
|
||||
|
||||
return readl(common->base + common->reg) & gate;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_gate_helper_is_enabled, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_gate_helper_is_enabled, "SUNXI_CCU");
|
||||
|
||||
static int ccu_gate_is_enabled(struct clk_hw *hw)
|
||||
{
|
||||
@ -127,4 +127,4 @@ const struct clk_ops ccu_gate_ops = {
|
||||
.set_rate = ccu_gate_set_rate,
|
||||
.recalc_rate = ccu_gate_recalc_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_gate_ops, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_gate_ops, "SUNXI_CCU");
|
||||
|
@ -246,7 +246,7 @@ const struct clk_ops ccu_mp_ops = {
|
||||
.recalc_rate = ccu_mp_recalc_rate,
|
||||
.set_rate = ccu_mp_set_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mp_ops, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mp_ops, "SUNXI_CCU");
|
||||
|
||||
/*
|
||||
* Support for MMC timing mode switching
|
||||
@ -327,4 +327,4 @@ const struct clk_ops ccu_mp_mmc_ops = {
|
||||
.recalc_rate = ccu_mp_mmc_recalc_rate,
|
||||
.set_rate = ccu_mp_mmc_set_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mp_mmc_ops, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mp_mmc_ops, "SUNXI_CCU");
|
||||
|
@ -170,4 +170,4 @@ const struct clk_ops ccu_mult_ops = {
|
||||
.recalc_rate = ccu_mult_recalc_rate,
|
||||
.set_rate = ccu_mult_set_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mult_ops, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mult_ops, "SUNXI_CCU");
|
||||
|
@ -66,7 +66,7 @@ unsigned long ccu_mux_helper_apply_prediv(struct ccu_common *common,
|
||||
{
|
||||
return parent_rate / ccu_mux_get_prediv(common, cm, parent_index);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_helper_apply_prediv, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_helper_apply_prediv, "SUNXI_CCU");
|
||||
|
||||
static unsigned long ccu_mux_helper_unapply_prediv(struct ccu_common *common,
|
||||
struct ccu_mux_internal *cm,
|
||||
@ -155,7 +155,7 @@ int ccu_mux_helper_determine_rate(struct ccu_common *common,
|
||||
req->rate = best_rate;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_helper_determine_rate, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_helper_determine_rate, "SUNXI_CCU");
|
||||
|
||||
u8 ccu_mux_helper_get_parent(struct ccu_common *common,
|
||||
struct ccu_mux_internal *cm)
|
||||
@ -178,7 +178,7 @@ u8 ccu_mux_helper_get_parent(struct ccu_common *common,
|
||||
|
||||
return parent;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_helper_get_parent, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_helper_get_parent, "SUNXI_CCU");
|
||||
|
||||
int ccu_mux_helper_set_parent(struct ccu_common *common,
|
||||
struct ccu_mux_internal *cm,
|
||||
@ -205,7 +205,7 @@ int ccu_mux_helper_set_parent(struct ccu_common *common,
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_helper_set_parent, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_helper_set_parent, "SUNXI_CCU");
|
||||
|
||||
static void ccu_mux_disable(struct clk_hw *hw)
|
||||
{
|
||||
@ -273,7 +273,7 @@ const struct clk_ops ccu_mux_ops = {
|
||||
.determine_rate = ccu_mux_determine_rate,
|
||||
.recalc_rate = ccu_mux_recalc_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_ops, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_ops, "SUNXI_CCU");
|
||||
|
||||
/*
|
||||
* This clock notifier is called when the frequency of the of the parent
|
||||
@ -308,4 +308,4 @@ int ccu_mux_notifier_register(struct clk *clk, struct ccu_mux_nb *mux_nb)
|
||||
|
||||
return clk_notifier_register(clk, &mux_nb->clk_nb);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_notifier_register, SUNXI_CCU);
|
||||
EXPORT_SYMBOL_NS_GPL(ccu_mux_notifier_register, "SUNXI_CCU");
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user