As of the commit 1de452a0ed
("regulator: core: Allow drivers to
define their init data as const") we no longer need to do copying of
regulator bulk data from initdata to something dynamic. Let's take
advantage of that.
In addition to saving some code, this also moves us to using
ARRAY_SIZE() to specify how many regulators we have which is less
error prone.
This gets rid of some layers of wrappers which makes it obvious that
we can get rid of an extra error print.
devm_regulator_bulk_get_const() prints errors for you so you don't
need an extra layer of printing.
In all cases here I have preserved the old settings without any
investigation about whether the loads being set are sensible. In the
cases of some of the PHYs if several PHYs in the same file used
exactly the same settings I had them point to the same data structure.
NOTE: Though I haven't done the math, this is likely an overall
savings in terms of "static const" data. We previously always
allocated space for 8 supplies. Each of these supplies took up 36
bytes of data (32 for name, 4 for an int).
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/496325/
Link: https://lore.kernel.org/r/20220804073608.v4.5.I55a9e65cb1c22221316629e98768ff473f47a067@changeid
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
68 lines
2.1 KiB
C
68 lines
2.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2015, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __MSM_DSI_CFG_H__
|
|
#define __MSM_DSI_CFG_H__
|
|
|
|
#include "dsi.h"
|
|
|
|
#define MSM_DSI_VER_MAJOR_V2 0x02
|
|
#define MSM_DSI_VER_MAJOR_6G 0x03
|
|
#define MSM_DSI_6G_VER_MINOR_V1_0 0x10000000
|
|
#define MSM_DSI_6G_VER_MINOR_V1_1 0x10010000
|
|
#define MSM_DSI_6G_VER_MINOR_V1_1_1 0x10010001
|
|
#define MSM_DSI_6G_VER_MINOR_V1_2 0x10020000
|
|
#define MSM_DSI_6G_VER_MINOR_V1_3 0x10030000
|
|
#define MSM_DSI_6G_VER_MINOR_V1_3_1 0x10030001
|
|
#define MSM_DSI_6G_VER_MINOR_V1_4_1 0x10040001
|
|
#define MSM_DSI_6G_VER_MINOR_V1_4_2 0x10040002
|
|
#define MSM_DSI_6G_VER_MINOR_V2_1_0 0x20010000
|
|
#define MSM_DSI_6G_VER_MINOR_V2_2_0 0x20000000
|
|
#define MSM_DSI_6G_VER_MINOR_V2_2_1 0x20020001
|
|
#define MSM_DSI_6G_VER_MINOR_V2_3_0 0x20030000
|
|
#define MSM_DSI_6G_VER_MINOR_V2_4_0 0x20040000
|
|
#define MSM_DSI_6G_VER_MINOR_V2_4_1 0x20040001
|
|
#define MSM_DSI_6G_VER_MINOR_V2_5_0 0x20050000
|
|
|
|
#define MSM_DSI_V2_VER_MINOR_8064 0x0
|
|
|
|
#define DSI_6G_REG_SHIFT 4
|
|
|
|
struct msm_dsi_config {
|
|
u32 io_offset;
|
|
const struct regulator_bulk_data *regulator_data;
|
|
int num_regulators;
|
|
const char * const *bus_clk_names;
|
|
const int num_bus_clks;
|
|
const resource_size_t io_start[DSI_MAX];
|
|
const int num_dsi;
|
|
};
|
|
|
|
struct msm_dsi_host_cfg_ops {
|
|
int (*link_clk_set_rate)(struct msm_dsi_host *msm_host);
|
|
int (*link_clk_enable)(struct msm_dsi_host *msm_host);
|
|
void (*link_clk_disable)(struct msm_dsi_host *msm_host);
|
|
int (*clk_init_ver)(struct msm_dsi_host *msm_host);
|
|
int (*tx_buf_alloc)(struct msm_dsi_host *msm_host, int size);
|
|
void* (*tx_buf_get)(struct msm_dsi_host *msm_host);
|
|
void (*tx_buf_put)(struct msm_dsi_host *msm_host);
|
|
int (*dma_base_get)(struct msm_dsi_host *msm_host, uint64_t *iova);
|
|
int (*calc_clk_rate)(struct msm_dsi_host *msm_host, bool is_bonded_dsi);
|
|
};
|
|
|
|
struct msm_dsi_cfg_handler {
|
|
u32 major;
|
|
u32 minor;
|
|
const struct msm_dsi_config *cfg;
|
|
const struct msm_dsi_host_cfg_ops *ops;
|
|
};
|
|
|
|
const struct msm_dsi_cfg_handler *msm_dsi_cfg_get(u32 major, u32 minor);
|
|
|
|
/* Non autodetect configs */
|
|
extern const struct msm_dsi_cfg_handler qcm2290_dsi_cfg_handler;
|
|
|
|
#endif /* __MSM_DSI_CFG_H__ */
|
|
|