| .. | .. |
|---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Copyright (c) 2015, The Linux Foundation. All rights reserved. |
|---|
| 3 | | - * |
|---|
| 4 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 5 | | - * it under the terms of the GNU General Public License version 2 and |
|---|
| 6 | | - * only version 2 as published by the Free Software Foundation. |
|---|
| 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 __DSI_PHY_H__ |
|---|
| .. | .. |
|---|
| 20 | 12 | |
|---|
| 21 | 13 | #define dsi_phy_read(offset) msm_readl((offset)) |
|---|
| 22 | 14 | #define dsi_phy_write(offset, data) msm_writel((data), (offset)) |
|---|
| 15 | + |
|---|
| 16 | +/* v3.0.0 10nm implementation that requires the old timings settings */ |
|---|
| 17 | +#define V3_0_0_10NM_OLD_TIMINGS_QUIRK BIT(0) |
|---|
| 23 | 18 | |
|---|
| 24 | 19 | struct msm_dsi_phy_ops { |
|---|
| 25 | 20 | int (*init) (struct msm_dsi_phy *phy); |
|---|
| .. | .. |
|---|
| 41 | 36 | bool src_pll_truthtable[DSI_MAX][DSI_MAX]; |
|---|
| 42 | 37 | const resource_size_t io_start[DSI_MAX]; |
|---|
| 43 | 38 | const int num_dsi_phy; |
|---|
| 39 | + const int quirks; |
|---|
| 44 | 40 | }; |
|---|
| 45 | 41 | |
|---|
| 46 | 42 | extern const struct msm_dsi_phy_cfg dsi_phy_28nm_hpm_cfgs; |
|---|
| 43 | +extern const struct msm_dsi_phy_cfg dsi_phy_28nm_hpm_famb_cfgs; |
|---|
| 47 | 44 | extern const struct msm_dsi_phy_cfg dsi_phy_28nm_lp_cfgs; |
|---|
| 48 | 45 | extern const struct msm_dsi_phy_cfg dsi_phy_20nm_cfgs; |
|---|
| 49 | 46 | extern const struct msm_dsi_phy_cfg dsi_phy_28nm_8960_cfgs; |
|---|
| 50 | 47 | extern const struct msm_dsi_phy_cfg dsi_phy_14nm_cfgs; |
|---|
| 48 | +extern const struct msm_dsi_phy_cfg dsi_phy_14nm_660_cfgs; |
|---|
| 51 | 49 | extern const struct msm_dsi_phy_cfg dsi_phy_10nm_cfgs; |
|---|
| 50 | +extern const struct msm_dsi_phy_cfg dsi_phy_10nm_8998_cfgs; |
|---|
| 51 | +extern const struct msm_dsi_phy_cfg dsi_phy_7nm_cfgs; |
|---|
| 52 | +extern const struct msm_dsi_phy_cfg dsi_phy_7nm_8150_cfgs; |
|---|
| 52 | 53 | |
|---|
| 53 | 54 | struct msm_dsi_dphy_timing { |
|---|
| 54 | | - u32 clk_pre; |
|---|
| 55 | | - u32 clk_post; |
|---|
| 56 | 55 | u32 clk_zero; |
|---|
| 57 | 56 | u32 clk_trail; |
|---|
| 58 | 57 | u32 clk_prepare; |
|---|
| .. | .. |
|---|
| 103 | 102 | struct msm_dsi_phy_clk_request *clk_req); |
|---|
| 104 | 103 | int msm_dsi_dphy_timing_calc_v3(struct msm_dsi_dphy_timing *timing, |
|---|
| 105 | 104 | struct msm_dsi_phy_clk_request *clk_req); |
|---|
| 105 | +int msm_dsi_dphy_timing_calc_v4(struct msm_dsi_dphy_timing *timing, |
|---|
| 106 | + struct msm_dsi_phy_clk_request *clk_req); |
|---|
| 106 | 107 | void msm_dsi_phy_set_src_pll(struct msm_dsi_phy *phy, int pll_id, u32 reg, |
|---|
| 107 | 108 | u32 bit_mask); |
|---|
| 108 | 109 | int msm_dsi_phy_init_common(struct msm_dsi_phy *phy); |
|---|