Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) V4L2 clocks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) .. attention::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 	This is a temporary API and it shall be replaced by the generic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 	clock API, when the latter becomes widely available.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) Many subdevices, like camera sensors, TV decoders and encoders, need a clock
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) signal to be supplied by the system. Often this clock is supplied by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) respective bridge device. The Linux kernel provides a Common Clock Framework for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) this purpose. However, it is not (yet) available on all architectures. Besides,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) the nature of the multi-functional (clock, data + synchronisation, I2C control)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) connection of subdevices to the system might impose special requirements on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) clock API usage. E.g. V4L2 has to support clock provider driver unregistration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) while a subdevice driver is holding a reference to the clock. For these reasons
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) a V4L2 clock helper API has been developed and is provided to bridge and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) subdevice drivers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) The API consists of two parts: two functions to register and unregister a V4L2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) clock source: v4l2_clk_register() and v4l2_clk_unregister() and calls to control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) a clock object, similar to the respective generic clock API calls:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) v4l2_clk_get(), v4l2_clk_put(), v4l2_clk_enable(), v4l2_clk_disable(),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) v4l2_clk_get_rate(), and v4l2_clk_set_rate(). Clock suppliers have to provide
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) clock operations that will be called when clock users invoke respective API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) methods.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) It is expected that once the CCF becomes available on all relevant
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) architectures this API will be removed.