| .. | .. |
|---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Copyright (c) 2016 Maxime Ripard. All rights reserved. |
|---|
| 3 | | - * |
|---|
| 4 | | - * This software is licensed under the terms of the GNU General Public |
|---|
| 5 | | - * License version 2, as published by the Free Software Foundation, and |
|---|
| 6 | | - * may be copied, distributed, and modified under those terms. |
|---|
| 7 | | - * |
|---|
| 8 | | - * This program is distributed in the hope that it will be useful, |
|---|
| 9 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 10 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 11 | | - * GNU General Public License for more details. |
|---|
| 12 | 4 | */ |
|---|
| 13 | 5 | |
|---|
| 14 | 6 | #ifndef _CCU_NM_H_ |
|---|
| .. | .. |
|---|
| 38 | 30 | |
|---|
| 39 | 31 | unsigned int fixed_post_div; |
|---|
| 40 | 32 | unsigned int min_rate; |
|---|
| 33 | + unsigned int max_rate; |
|---|
| 41 | 34 | |
|---|
| 42 | 35 | struct ccu_common common; |
|---|
| 43 | 36 | }; |
|---|
| .. | .. |
|---|
| 115 | 108 | }, \ |
|---|
| 116 | 109 | } |
|---|
| 117 | 110 | |
|---|
| 111 | +#define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(_struct, _name, \ |
|---|
| 112 | + _parent, _reg, \ |
|---|
| 113 | + _min_rate, _max_rate, \ |
|---|
| 114 | + _nshift, _nwidth, \ |
|---|
| 115 | + _mshift, _mwidth, \ |
|---|
| 116 | + _frac_en, _frac_sel, \ |
|---|
| 117 | + _frac_rate_0, \ |
|---|
| 118 | + _frac_rate_1, \ |
|---|
| 119 | + _gate, _lock, _flags) \ |
|---|
| 120 | + struct ccu_nm _struct = { \ |
|---|
| 121 | + .enable = _gate, \ |
|---|
| 122 | + .lock = _lock, \ |
|---|
| 123 | + .n = _SUNXI_CCU_MULT(_nshift, _nwidth), \ |
|---|
| 124 | + .m = _SUNXI_CCU_DIV(_mshift, _mwidth), \ |
|---|
| 125 | + .frac = _SUNXI_CCU_FRAC(_frac_en, _frac_sel, \ |
|---|
| 126 | + _frac_rate_0, \ |
|---|
| 127 | + _frac_rate_1), \ |
|---|
| 128 | + .min_rate = _min_rate, \ |
|---|
| 129 | + .max_rate = _max_rate, \ |
|---|
| 130 | + .common = { \ |
|---|
| 131 | + .reg = _reg, \ |
|---|
| 132 | + .features = CCU_FEATURE_FRACTIONAL, \ |
|---|
| 133 | + .hw.init = CLK_HW_INIT(_name, \ |
|---|
| 134 | + _parent, \ |
|---|
| 135 | + &ccu_nm_ops, \ |
|---|
| 136 | + _flags), \ |
|---|
| 137 | + }, \ |
|---|
| 138 | + } |
|---|
| 139 | + |
|---|
| 118 | 140 | #define SUNXI_CCU_NM_WITH_GATE_LOCK(_struct, _name, _parent, _reg, \ |
|---|
| 119 | 141 | _nshift, _nwidth, \ |
|---|
| 120 | 142 | _mshift, _mwidth, \ |
|---|