CCF
通用时钟框架
API位置: include/linux/clk.h
API
macro
PRE_RATE_CHANGE:频率即将改变的通知标志POST_RATE_CHANGE:频率改变完成的通知标志ABORT_RATE_CHANGE:频率改变被中止的通知标志
type
struct clk:抽象时钟结构体(不透明类型)struct clk_notifier:时钟通知器,关联 clk 与通知链struct clk_notifier_data:通知回调数据,包含新旧频率struct clk_bulk_data:批量时钟操作数据,包含 id 和 clk 指针
function
获取/释放
clk_get:获取时钟clk_put:释放时钟devm_clk_get:设备托管的获取时钟devm_clk_put:设备托管的释放时钟devm_clk_get_prepared:获取时钟并 preparedevm_clk_get_enabled:获取时钟并 prepare + enabledevm_clk_get_optional:获取可选时钟,不存在返回 NULLdevm_clk_get_optional_prepared:获取可选时钟并 preparedevm_clk_get_optional_enabled:获取可选时钟并 prepare + enabledevm_clk_get_optional_enabled_with_rate:获取可选时钟,设置频率并 enableclk_get_sys:按设备名获取时钟clk_get_optional:获取可选时钟,不存在返回 NULLdevm_get_clk_from_child:从子设备树节点获取托管时钟
批量操作
clk_bulk_get:批量获取时钟clk_bulk_get_optional:批量获取可选时钟clk_bulk_get_all:获取所有时钟clk_bulk_put:批量释放时钟clk_bulk_put_all:释放所有时钟devm_clk_bulk_get:设备托管批量获取devm_clk_bulk_get_optional:设备托管批量获取可选时钟devm_clk_bulk_get_optional_enable:设备托管批量获取可选时钟并 enabledevm_clk_bulk_get_all:设备托管获取所有时钟devm_clk_bulk_get_all_enabled:设备托管获取所有时钟并 enable
使能控制
clk_prepare:准备时钟(可睡眠)clk_unprepare:取消准备时钟clk_enable:使能时钟(原子上下文可用)clk_disable:关闭时钟clk_prepare_enable:prepare + enableclk_disable_unprepare:disable + unprepareclk_bulk_prepare:批量准备时钟clk_bulk_unprepare:批量取消准备clk_bulk_enable:批量使能clk_bulk_disable:批量关闭clk_bulk_prepare_enable:批量 prepare + enableclk_bulk_disable_unprepare:批量 disable + unprepareclk_is_enabled_when_prepared:检查 prepare 时是否自动 enable
频率操作
clk_get_rate:获取当前频率clk_set_rate:设置频率clk_round_rate:查询可设置的最接近频率clk_set_rate_range:设置频率范围clk_set_min_rate:设置最小频率clk_set_max_rate:设置最大频率clk_drop_range:清除频率范围限制clk_set_rate_exclusive:设置频率并独占
父子关系
clk_get_parent:获取父时钟clk_set_parent:设置父时钟clk_has_parent:检查是否为可能的父时钟clk_is_match:比较两个 clk 是否指向同一硬件时钟
高级功能
clk_get_accuracy:获取精度(ppb)clk_set_phase:设置相位clk_get_phase:获取相位clk_set_duty_cycle:设置占空比clk_get_scaled_duty_cycle:获取缩放后的占空比clk_rate_exclusive_get:获取频率独占控制权clk_rate_exclusive_put:释放频率独占控制权devm_clk_rate_exclusive_get:设备托管获取频率独占控制权clk_save_context:保存时钟上下文(电源管理)clk_restore_context:恢复时钟上下文(电源管理)
通知机制
clk_notifier_register:注册频率变化通知clk_notifier_unregister:注销频率变化通知devm_clk_notifier_register:设备托管注册通知
OF(设备树)
of_clk_get:从设备树节点获取时钟of_clk_get_by_name:按名称从设备树获取时钟of_clk_get_from_provider:从 phandle 获取时钟