Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v5.4 74 lines 2.0 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2// 3// Spreadtrum multiplexer clock driver 4// 5// Copyright (C) 2017 Spreadtrum, Inc. 6// Author: Chunyan Zhang <chunyan.zhang@spreadtrum.com> 7 8#ifndef _SPRD_MUX_H_ 9#define _SPRD_MUX_H_ 10 11#include "common.h" 12 13/** 14 * struct sprd_mux_ssel - Mux clock's source select bits in its register 15 * @shift: Bit offset of the divider in its register 16 * @width: Width of the divider field in its register 17 * @table: For some mux clocks, not all sources are used on some special 18 * chips, this matches the value of mux clock's register and the 19 * sources which are used for this mux clock 20 */ 21struct sprd_mux_ssel { 22 u8 shift; 23 u8 width; 24 const u8 *table; 25}; 26 27struct sprd_mux { 28 struct sprd_mux_ssel mux; 29 struct sprd_clk_common common; 30}; 31 32#define _SPRD_MUX_CLK(_shift, _width, _table) \ 33 { \ 34 .shift = _shift, \ 35 .width = _width, \ 36 .table = _table, \ 37 } 38 39#define SPRD_MUX_CLK_TABLE(_struct, _name, _parents, _table, \ 40 _reg, _shift, _width, \ 41 _flags) \ 42 struct sprd_mux _struct = { \ 43 .mux = _SPRD_MUX_CLK(_shift, _width, _table), \ 44 .common = { \ 45 .regmap = NULL, \ 46 .reg = _reg, \ 47 .hw.init = CLK_HW_INIT_PARENTS(_name, \ 48 _parents, \ 49 &sprd_mux_ops, \ 50 _flags), \ 51 } \ 52 } 53 54#define SPRD_MUX_CLK(_struct, _name, _parents, _reg, \ 55 _shift, _width, _flags) \ 56 SPRD_MUX_CLK_TABLE(_struct, _name, _parents, NULL, \ 57 _reg, _shift, _width, _flags) 58 59static inline struct sprd_mux *hw_to_sprd_mux(const struct clk_hw *hw) 60{ 61 struct sprd_clk_common *common = hw_to_sprd_clk_common(hw); 62 63 return container_of(common, struct sprd_mux, common); 64} 65 66extern const struct clk_ops sprd_mux_ops; 67 68u8 sprd_mux_helper_get_parent(const struct sprd_clk_common *common, 69 const struct sprd_mux_ssel *mux); 70int sprd_mux_helper_set_parent(const struct sprd_clk_common *common, 71 const struct sprd_mux_ssel *mux, 72 u8 index); 73 74#endif /* _SPRD_MUX_H_ */