cregit-Linux how code gets into the kernel

Release 4.16 drivers/clk/sprd/mux.h

Directory: drivers/clk/sprd
// SPDX-License-Identifier: GPL-2.0
//
// Spreadtrum multiplexer clock driver
//
// Copyright (C) 2017 Spreadtrum, Inc.
// Author: Chunyan Zhang <chunyan.zhang@spreadtrum.com>

#ifndef _SPRD_MUX_H_

#define _SPRD_MUX_H_

#include "common.h"

/**
 * struct sprd_mux_ssel - Mux clock's source select bits in its register
 * @shift: Bit offset of the divider in its register
 * @width: Width of the divider field in its register
 * @table: For some mux clocks, not all sources are used on some special
 *         chips, this matches the value of mux clock's register and the
 *         sources which are used for this mux clock
 */

struct sprd_mux_ssel {
	
u8		shift;
	
u8		width;
	
const u8	*table;
};


struct sprd_mux {
	
struct sprd_mux_ssel mux;
	
struct sprd_clk_common	common;
};


#define _SPRD_MUX_CLK(_shift, _width, _table)		\
	{                                               \
                .shift  = _shift,                       \
                .width  = _width,                       \
                .table  = _table,                       \
        }

#define SPRD_MUX_CLK_TABLE(_struct, _name, _parents, _table,               \
				     _reg, _shift, _width,               \
				     
_flags)				\
	struct sprd_mux _struct = {                                     \
                .mux    = _SPRD_MUX_CLK(_shift, _width, _table),        \
                .common = {                                             \
                        .regmap         = NULL,                         \
                        .reg            = _reg,                         \
                        .hw.init = CLK_HW_INIT_PARENTS(_name,           \
                                                       _parents,        \
                                                       &sprd_mux_ops,   \
                                                       _flags),         \
                }                                                       \
        }

#define SPRD_MUX_CLK(_struct, _name, _parents, _reg,               \
		     
_shift, _width, _flags)			\
	SPRD_MUX_CLK_TABLE(_struct, _name, _parents, NULL,      \
                           _reg, _shift, _width, _flags)


static inline struct sprd_mux *hw_to_sprd_mux(const struct clk_hw *hw) { struct sprd_clk_common *common = hw_to_sprd_clk_common(hw); return container_of(common, struct sprd_mux, common); }

Contributors

PersonTokensPropCommitsCommitProp
Chunyan Zhang36100.00%1100.00%
Total36100.00%1100.00%

extern const struct clk_ops sprd_mux_ops; u8 sprd_mux_helper_get_parent(const struct sprd_clk_common *common, const struct sprd_mux_ssel *mux); int sprd_mux_helper_set_parent(const struct sprd_clk_common *common, const struct sprd_mux_ssel *mux, u8 index); #endif /* _SPRD_MUX_H_ */

Overall Contributors

PersonTokensPropCommitsCommitProp
Chunyan Zhang179100.00%1100.00%
Total179100.00%1100.00%
Directory: drivers/clk/sprd
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.