/* SPDX-License-Identifier: GPL-2.0 */ 
 | 
/* 
 | 
 * Copyright (c) 2017, Linaro Limited 
 | 
 * Author: Georgi Djakov <georgi.djakov@linaro.org> 
 | 
 */ 
 | 
  
 | 
#ifndef __QCOM_CLK_REGMAP_MUX_DIV_H__ 
 | 
#define __QCOM_CLK_REGMAP_MUX_DIV_H__ 
 | 
  
 | 
#include <linux/clk-provider.h> 
 | 
#include "clk-regmap.h" 
 | 
  
 | 
/** 
 | 
 * struct mux_div_clk - combined mux/divider clock 
 | 
 * @reg_offset: offset of the mux/divider register 
 | 
 * @hid_width:    number of bits in half integer divider 
 | 
 * @hid_shift:    lowest bit of hid value field 
 | 
 * @src_width:    number of bits in source select 
 | 
 * @src_shift:    lowest bit of source select field 
 | 
 * @div:    the divider raw configuration value 
 | 
 * @src:    the mux index which will be used if the clock is enabled 
 | 
 * @parent_map: map from parent_names index to src_sel field 
 | 
 * @clkr:    handle between common and hardware-specific interfaces 
 | 
 * @pclk:    the input PLL clock 
 | 
 * @clk_nb:    clock notifier for rate changes of the input PLL 
 | 
 */ 
 | 
struct clk_regmap_mux_div { 
 | 
    u32                reg_offset; 
 | 
    u32                hid_width; 
 | 
    u32                hid_shift; 
 | 
    u32                src_width; 
 | 
    u32                src_shift; 
 | 
    u32                div; 
 | 
    u32                src; 
 | 
    const u32            *parent_map; 
 | 
    struct clk_regmap        clkr; 
 | 
    struct clk            *pclk; 
 | 
    struct notifier_block        clk_nb; 
 | 
}; 
 | 
  
 | 
extern const struct clk_ops clk_regmap_mux_div_ops; 
 | 
extern int mux_div_set_src_div(struct clk_regmap_mux_div *md, u32 src, u32 div); 
 | 
  
 | 
#endif 
 |