@ -40,14 +40,14 @@ struct dentry;
* through the clk_ * api .
*
* @ prepare : Prepare the clock for enabling . This must not return until
* the clock is fully prepared , and it ' s safe to call clk_enable .
* This callback is intended to allow clock implementations to
* do any initialisation that may sleep . Called with
* prepare_lock held .
* the clock is fully prepared , and it ' s safe to call clk_enable .
* This callback is intended to allow clock implementations to
* do any initialisation that may sleep . Called with
* prepare_lock held .
*
* @ unprepare : Release the clock from its prepared state . This will typically
* undo any work done in the @ prepare callback . Called with
* prepare_lock held .
* undo any work done in the @ prepare callback . Called with
* prepare_lock held .
*
* @ is_prepared : Queries the hardware to determine if the clock is prepared .
* This function is allowed to sleep . Optional , if this op is not
@ -58,16 +58,16 @@ struct dentry;
* Called with prepare mutex held . This function may sleep .
*
* @ enable : Enable the clock atomically . This must not return until the
* clock is generating a valid clock signal , usable by consumer
* devices . Called with enable_lock held . This function must not
* sleep .
* clock is generating a valid clock signal , usable by consumer
* devices . Called with enable_lock held . This function must not
* sleep .
*
* @ disable : Disable the clock atomically . Called with enable_lock held .
* This function must not sleep .
* This function must not sleep .
*
* @ is_enabled : Queries the hardware to determine if the clock is enabled .
* This function must not sleep . Optional , if this op is not
* set then the enable count will be used .
* This function must not sleep . Optional , if this op is not
* set then the enable count will be used .
*
* @ disable_unused : Disable the clock atomically . Only called from
* clk_disable_unused for gate clocks with special needs .
@ -75,34 +75,34 @@ struct dentry;
* sleep .
*
* @ recalc_rate Recalculate the rate of this clock , by querying hardware . The
* parent rate is an input parameter . It is up to the caller to
* ensure that the prepare_mutex is held across this call .
* Returns the calculated rate . Optional , but recommended - if
* this op is not set then clock rate will be initialized to 0.
* parent rate is an input parameter . It is up to the caller to
* ensure that the prepare_mutex is held across this call .
* Returns the calculated rate . Optional , but recommended - if
* this op is not set then clock rate will be initialized to 0.
*
* @ round_rate : Given a target rate as input , returns the closest rate actually
* supported by the clock .
* supported by the clock .
*
* @ determine_rate : Given a target rate as input , returns the closest rate
* actually supported by the clock , and optionally the parent clock
* that should be used to provide the clock rate .
*
* @ get_parent : Queries the hardware to determine the parent of a clock . The
* return value is a u8 which specifies the index corresponding to
* the parent clock . This index can be applied to either the
* . parent_names or . parents arrays . In short , this function
* translates the parent value read from hardware into an array
* index . Currently only called when the clock is initialized by
* __clk_init . This callback is mandatory for clocks with
* multiple parents . It is optional ( and unnecessary ) for clocks
* with 0 or 1 parents .
* return value is a u8 which specifies the index corresponding to
* the parent clock . This index can be applied to either the
* . parent_names or . parents arrays . In short , this function
* translates the parent value read from hardware into an array
* index . Currently only called when the clock is initialized by
* __clk_init . This callback is mandatory for clocks with
* multiple parents . It is optional ( and unnecessary ) for clocks
* with 0 or 1 parents .
*
* @ set_parent : Change the input source of this clock ; for clocks with multiple
* possible parents specify a new parent by passing in the index
* as a u8 corresponding to the parent in either the . parent_names
* or . parents arrays . This function in affect translates an
* array index into the value programmed into the hardware .
* Returns 0 on success , - EERROR otherwise .
* possible parents specify a new parent by passing in the index
* as a u8 corresponding to the parent in either the . parent_names
* or . parents arrays . This function in affect translates an
* array index into the value programmed into the hardware .
* Returns 0 on success , - EERROR otherwise .
*
* @ set_rate : Change the rate of this clock . The requested rate is specified
* by the second argument , which should typically be the return
@ -254,12 +254,12 @@ void of_fixed_clk_setup(struct device_node *np);
*
* Flags :
* CLK_GATE_SET_TO_DISABLE - by default this clock sets the bit at bit_idx to
* enable the clock . Setting this flag does the opposite : setting the bit
* disable the clock and clearing it enables the clock
* enable the clock . Setting this flag does the opposite : setting the bit
* disable the clock and clearing it enables the clock
* CLK_GATE_HIWORD_MASK - The gate settings are only in lower 16 - bit
* of this register , and mask of gate bits are in higher 16 - bit of this
* register . While setting the gate bits , higher 16 - bit should also be
* updated to indicate changing gate bits .
* of this register , and mask of gate bits are in higher 16 - bit of this
* register . While setting the gate bits , higher 16 - bit should also be
* updated to indicate changing gate bits .
*/
struct clk_gate {
struct clk_hw hw ;
@ -298,20 +298,20 @@ struct clk_div_table {
*
* Flags :
* CLK_DIVIDER_ONE_BASED - by default the divisor is the value read from the
* register plus one . If CLK_DIVIDER_ONE_BASED is set then the divider is
* the raw value read from the register , with the value of zero considered
* register plus one . If CLK_DIVIDER_ONE_BASED is set then the divider is
* the raw value read from the register , with the value of zero considered
* invalid , unless CLK_DIVIDER_ALLOW_ZERO is set .
* CLK_DIVIDER_POWER_OF_TWO - clock divisor is 2 raised to the value read from
* the hardware register
* the hardware register
* CLK_DIVIDER_ALLOW_ZERO - Allow zero divisors . For dividers which have
* CLK_DIVIDER_ONE_BASED set , it is possible to end up with a zero divisor .
* Some hardware implementations gracefully handle this case and allow a
* zero divisor by not modifying their input clock
* ( divide by one / bypass ) .
* CLK_DIVIDER_HIWORD_MASK - The divider settings are only in lower 16 - bit
* of this register , and mask of divider bits are in higher 16 - bit of this
* register . While setting the divider bits , higher 16 - bit should also be
* updated to indicate changing divider bits .
* of this register , and mask of divider bits are in higher 16 - bit of this
* register . While setting the divider bits , higher 16 - bit should also be
* updated to indicate changing divider bits .
* CLK_DIVIDER_ROUND_CLOSEST - Makes the best calculated divider to be rounded
* to the closest integer instead of the up one .
*/
@ -359,9 +359,9 @@ struct clk *clk_register_divider_table(struct device *dev, const char *name,
* CLK_MUX_INDEX_ONE - register index starts at 1 , not 0
* CLK_MUX_INDEX_BIT - register index is a single bit ( power of two )
* CLK_MUX_HIWORD_MASK - The mux settings are only in lower 16 - bit of this
* register , and mask of mux bits are in higher 16 - bit of this register .
* While setting the mux bits , higher 16 - bit should also be updated to
* indicate changing mux bits .
* register , and mask of mux bits are in higher 16 - bit of this register .
* While setting the mux bits , higher 16 - bit should also be updated to
* indicate changing mux bits .
*/
struct clk_mux {
struct clk_hw hw ;