diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-19 20:13:56 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-19 20:13:56 -0400 |
| commit | 8362fd64f07eaef7155c94fca8dee91c4f99a666 (patch) | |
| tree | 2d16af7d7b8cbb5765727493f796d453580fc107 /include | |
| parent | 24e44913aa746098349370a0f279733c0cadcba7 (diff) | |
| parent | 8c0993621c3e5fa52e5425ef2a0f67a0cde07092 (diff) | |
Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
Pull ARM SoC-related driver updates from Olof Johansson:
"Various driver updates for platforms and a couple of the small driver
subsystems we merge through our tree:
- A driver for SCU (system control) on NXP i.MX8QXP
- Qualcomm Always-on Subsystem messaging driver (AOSS QMP)
- Qualcomm PM support for MSM8998
- Support for a newer version of DRAM PHY driver for Broadcom (DPFE)
- Reset controller support for Bitmain BM1880
- TI SCI (System Control Interface) support for CPU control on AM654
processors
- More TI sysc refactoring and rework"
* tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (84 commits)
reset: remove redundant null check on pointer dev
soc: rockchip: work around clang warning
dt-bindings: reset: imx7: Fix the spelling of 'indices'
soc: imx: Add i.MX8MN SoC driver support
soc: aspeed: lpc-ctrl: Fix probe error handling
soc: qcom: geni: Add support for ACPI
firmware: ti_sci: Fix gcc unused-but-set-variable warning
firmware: ti_sci: Use the correct style for SPDX License Identifier
soc: imx8: Use existing of_root directly
soc: imx8: Fix potential kernel dump in error path
firmware/psci: psci_checker: Park kthreads before stopping them
memory: move jedec_ddr.h from include/memory to drivers/memory/
memory: move jedec_ddr_data.c from lib/ to drivers/memory/
MAINTAINERS: Remove myself as qcom maintainer
soc: aspeed: lpc-ctrl: make parameter optional
soc: qcom: apr: Don't use reg for domain id
soc: qcom: fix QCOM_AOSS_QMP dependency and build errors
memory: tegra: Fix -Wunused-const-variable
firmware: tegra: Early resume BPMP
soc/tegra: Select pinctrl for Tegra194
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/dt-bindings/power/qcom-aoss-qmp.h | 14 | ||||
| -rw-r--r-- | include/dt-bindings/power/qcom-rpmpd.h | 34 | ||||
| -rw-r--r-- | include/dt-bindings/reset/bitmain,bm1880-reset.h | 51 | ||||
| -rw-r--r-- | include/linux/platform_data/ti-sysc.h | 12 | ||||
| -rw-r--r-- | include/linux/scmi_protocol.h | 1 | ||||
| -rw-r--r-- | include/linux/soc/ti/ti_sci_protocol.h | 246 | ||||
| -rw-r--r-- | include/memory/jedec_ddr.h | 172 | ||||
| -rw-r--r-- | include/soc/fsl/bman.h | 8 | ||||
| -rw-r--r-- | include/soc/fsl/qman.h | 9 |
9 files changed, 375 insertions, 172 deletions
diff --git a/include/dt-bindings/power/qcom-aoss-qmp.h b/include/dt-bindings/power/qcom-aoss-qmp.h new file mode 100644 index 000000000000..ec336d31dee4 --- /dev/null +++ b/include/dt-bindings/power/qcom-aoss-qmp.h | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
| 2 | /* Copyright (c) 2018, Linaro Ltd. */ | ||
| 3 | |||
| 4 | #ifndef __DT_BINDINGS_POWER_QCOM_AOSS_QMP_H | ||
| 5 | #define __DT_BINDINGS_POWER_QCOM_AOSS_QMP_H | ||
| 6 | |||
| 7 | #define AOSS_QMP_LS_CDSP 0 | ||
| 8 | #define AOSS_QMP_LS_LPASS 1 | ||
| 9 | #define AOSS_QMP_LS_MODEM 2 | ||
| 10 | #define AOSS_QMP_LS_SLPI 3 | ||
| 11 | #define AOSS_QMP_LS_SPSS 4 | ||
| 12 | #define AOSS_QMP_LS_VENUS 5 | ||
| 13 | |||
| 14 | #endif | ||
diff --git a/include/dt-bindings/power/qcom-rpmpd.h b/include/dt-bindings/power/qcom-rpmpd.h index 87d9c6611682..93e36d011527 100644 --- a/include/dt-bindings/power/qcom-rpmpd.h +++ b/include/dt-bindings/power/qcom-rpmpd.h | |||
| @@ -36,4 +36,38 @@ | |||
| 36 | #define MSM8996_VDDSSCX 5 | 36 | #define MSM8996_VDDSSCX 5 |
| 37 | #define MSM8996_VDDSSCX_VFC 6 | 37 | #define MSM8996_VDDSSCX_VFC 6 |
| 38 | 38 | ||
| 39 | /* MSM8998 Power Domain Indexes */ | ||
| 40 | #define MSM8998_VDDCX 0 | ||
| 41 | #define MSM8998_VDDCX_AO 1 | ||
| 42 | #define MSM8998_VDDCX_VFL 2 | ||
| 43 | #define MSM8998_VDDMX 3 | ||
| 44 | #define MSM8998_VDDMX_AO 4 | ||
| 45 | #define MSM8998_VDDMX_VFL 5 | ||
| 46 | #define MSM8998_SSCCX 6 | ||
| 47 | #define MSM8998_SSCCX_VFL 7 | ||
| 48 | #define MSM8998_SSCMX 8 | ||
| 49 | #define MSM8998_SSCMX_VFL 9 | ||
| 50 | |||
| 51 | /* QCS404 Power Domains */ | ||
| 52 | #define QCS404_VDDMX 0 | ||
| 53 | #define QCS404_VDDMX_AO 1 | ||
| 54 | #define QCS404_VDDMX_VFL 2 | ||
| 55 | #define QCS404_LPICX 3 | ||
| 56 | #define QCS404_LPICX_VFL 4 | ||
| 57 | #define QCS404_LPIMX 5 | ||
| 58 | #define QCS404_LPIMX_VFL 6 | ||
| 59 | |||
| 60 | /* RPM SMD Power Domain performance levels */ | ||
| 61 | #define RPM_SMD_LEVEL_RETENTION 16 | ||
| 62 | #define RPM_SMD_LEVEL_RETENTION_PLUS 32 | ||
| 63 | #define RPM_SMD_LEVEL_MIN_SVS 48 | ||
| 64 | #define RPM_SMD_LEVEL_LOW_SVS 64 | ||
| 65 | #define RPM_SMD_LEVEL_SVS 128 | ||
| 66 | #define RPM_SMD_LEVEL_SVS_PLUS 192 | ||
| 67 | #define RPM_SMD_LEVEL_NOM 256 | ||
| 68 | #define RPM_SMD_LEVEL_NOM_PLUS 320 | ||
| 69 | #define RPM_SMD_LEVEL_TURBO 384 | ||
| 70 | #define RPM_SMD_LEVEL_TURBO_NO_CPR 416 | ||
| 71 | #define RPM_SMD_LEVEL_BINNING 512 | ||
| 72 | |||
| 39 | #endif | 73 | #endif |
diff --git a/include/dt-bindings/reset/bitmain,bm1880-reset.h b/include/dt-bindings/reset/bitmain,bm1880-reset.h new file mode 100644 index 000000000000..4c0de5223773 --- /dev/null +++ b/include/dt-bindings/reset/bitmain,bm1880-reset.h | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0+ */ | ||
| 2 | /* | ||
| 3 | * Copyright (c) 2018 Bitmain Ltd. | ||
| 4 | * Copyright (c) 2019 Linaro Ltd. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #ifndef _DT_BINDINGS_BM1880_RESET_H | ||
| 8 | #define _DT_BINDINGS_BM1880_RESET_H | ||
| 9 | |||
| 10 | #define BM1880_RST_MAIN_AP 0 | ||
| 11 | #define BM1880_RST_SECOND_AP 1 | ||
| 12 | #define BM1880_RST_DDR 2 | ||
| 13 | #define BM1880_RST_VIDEO 3 | ||
| 14 | #define BM1880_RST_JPEG 4 | ||
| 15 | #define BM1880_RST_VPP 5 | ||
| 16 | #define BM1880_RST_GDMA 6 | ||
| 17 | #define BM1880_RST_AXI_SRAM 7 | ||
| 18 | #define BM1880_RST_TPU 8 | ||
| 19 | #define BM1880_RST_USB 9 | ||
| 20 | #define BM1880_RST_ETH0 10 | ||
| 21 | #define BM1880_RST_ETH1 11 | ||
| 22 | #define BM1880_RST_NAND 12 | ||
| 23 | #define BM1880_RST_EMMC 13 | ||
| 24 | #define BM1880_RST_SD 14 | ||
| 25 | #define BM1880_RST_SDMA 15 | ||
| 26 | #define BM1880_RST_I2S0 16 | ||
| 27 | #define BM1880_RST_I2S1 17 | ||
| 28 | #define BM1880_RST_UART0_1_CLK 18 | ||
| 29 | #define BM1880_RST_UART0_1_ACLK 19 | ||
| 30 | #define BM1880_RST_UART2_3_CLK 20 | ||
| 31 | #define BM1880_RST_UART2_3_ACLK 21 | ||
| 32 | #define BM1880_RST_MINER 22 | ||
| 33 | #define BM1880_RST_I2C0 23 | ||
| 34 | #define BM1880_RST_I2C1 24 | ||
| 35 | #define BM1880_RST_I2C2 25 | ||
| 36 | #define BM1880_RST_I2C3 26 | ||
| 37 | #define BM1880_RST_I2C4 27 | ||
| 38 | #define BM1880_RST_PWM0 28 | ||
| 39 | #define BM1880_RST_PWM1 29 | ||
| 40 | #define BM1880_RST_PWM2 30 | ||
| 41 | #define BM1880_RST_PWM3 31 | ||
| 42 | #define BM1880_RST_SPI 32 | ||
| 43 | #define BM1880_RST_GPIO0 33 | ||
| 44 | #define BM1880_RST_GPIO1 34 | ||
| 45 | #define BM1880_RST_GPIO2 35 | ||
| 46 | #define BM1880_RST_EFUSE 36 | ||
| 47 | #define BM1880_RST_WDT 37 | ||
| 48 | #define BM1880_RST_AHB_ROM 38 | ||
| 49 | #define BM1880_RST_SPIC 39 | ||
| 50 | |||
| 51 | #endif /* _DT_BINDINGS_BM1880_RESET_H */ | ||
diff --git a/include/linux/platform_data/ti-sysc.h b/include/linux/platform_data/ti-sysc.h index 9256c0305968..0c587d4fc718 100644 --- a/include/linux/platform_data/ti-sysc.h +++ b/include/linux/platform_data/ti-sysc.h | |||
| @@ -19,6 +19,7 @@ enum ti_sysc_module_type { | |||
| 19 | 19 | ||
| 20 | struct ti_sysc_cookie { | 20 | struct ti_sysc_cookie { |
| 21 | void *data; | 21 | void *data; |
| 22 | void *clkdm; | ||
| 22 | }; | 23 | }; |
| 23 | 24 | ||
| 24 | /** | 25 | /** |
| @@ -46,6 +47,10 @@ struct sysc_regbits { | |||
| 46 | s8 emufree_shift; | 47 | s8 emufree_shift; |
| 47 | }; | 48 | }; |
| 48 | 49 | ||
| 50 | #define SYSC_MODULE_QUIRK_HDQ1W BIT(17) | ||
| 51 | #define SYSC_MODULE_QUIRK_I2C BIT(16) | ||
| 52 | #define SYSC_MODULE_QUIRK_WDT BIT(15) | ||
| 53 | #define SYSS_QUIRK_RESETDONE_INVERTED BIT(14) | ||
| 49 | #define SYSC_QUIRK_SWSUP_MSTANDBY BIT(13) | 54 | #define SYSC_QUIRK_SWSUP_MSTANDBY BIT(13) |
| 50 | #define SYSC_QUIRK_SWSUP_SIDLE_ACT BIT(12) | 55 | #define SYSC_QUIRK_SWSUP_SIDLE_ACT BIT(12) |
| 51 | #define SYSC_QUIRK_SWSUP_SIDLE BIT(11) | 56 | #define SYSC_QUIRK_SWSUP_SIDLE BIT(11) |
| @@ -125,9 +130,16 @@ struct ti_sysc_module_data { | |||
| 125 | }; | 130 | }; |
| 126 | 131 | ||
| 127 | struct device; | 132 | struct device; |
| 133 | struct clk; | ||
| 128 | 134 | ||
| 129 | struct ti_sysc_platform_data { | 135 | struct ti_sysc_platform_data { |
| 130 | struct of_dev_auxdata *auxdata; | 136 | struct of_dev_auxdata *auxdata; |
| 137 | int (*init_clockdomain)(struct device *dev, struct clk *fck, | ||
| 138 | struct clk *ick, struct ti_sysc_cookie *cookie); | ||
| 139 | void (*clkdm_deny_idle)(struct device *dev, | ||
| 140 | const struct ti_sysc_cookie *cookie); | ||
| 141 | void (*clkdm_allow_idle)(struct device *dev, | ||
| 142 | const struct ti_sysc_cookie *cookie); | ||
| 131 | int (*init_module)(struct device *dev, | 143 | int (*init_module)(struct device *dev, |
| 132 | const struct ti_sysc_module_data *data, | 144 | const struct ti_sysc_module_data *data, |
| 133 | struct ti_sysc_cookie *cookie); | 145 | struct ti_sysc_cookie *cookie); |
diff --git a/include/linux/scmi_protocol.h b/include/linux/scmi_protocol.h index 3105055c00a7..9ff2e9357e9a 100644 --- a/include/linux/scmi_protocol.h +++ b/include/linux/scmi_protocol.h | |||
| @@ -144,6 +144,7 @@ struct scmi_power_ops { | |||
| 144 | struct scmi_sensor_info { | 144 | struct scmi_sensor_info { |
| 145 | u32 id; | 145 | u32 id; |
| 146 | u8 type; | 146 | u8 type; |
| 147 | s8 scale; | ||
| 147 | char name[SCMI_MAX_STR_SIZE]; | 148 | char name[SCMI_MAX_STR_SIZE]; |
| 148 | }; | 149 | }; |
| 149 | 150 | ||
diff --git a/include/linux/soc/ti/ti_sci_protocol.h b/include/linux/soc/ti/ti_sci_protocol.h index 406e6717d252..6c610e188a44 100644 --- a/include/linux/soc/ti/ti_sci_protocol.h +++ b/include/linux/soc/ti/ti_sci_protocol.h | |||
| @@ -241,12 +241,254 @@ struct ti_sci_rm_irq_ops { | |||
| 241 | u16 global_event, u8 vint_status_bit); | 241 | u16 global_event, u8 vint_status_bit); |
| 242 | }; | 242 | }; |
| 243 | 243 | ||
| 244 | /* RA config.addr_lo parameter is valid for RM ring configure TI_SCI message */ | ||
| 245 | #define TI_SCI_MSG_VALUE_RM_RING_ADDR_LO_VALID BIT(0) | ||
| 246 | /* RA config.addr_hi parameter is valid for RM ring configure TI_SCI message */ | ||
| 247 | #define TI_SCI_MSG_VALUE_RM_RING_ADDR_HI_VALID BIT(1) | ||
| 248 | /* RA config.count parameter is valid for RM ring configure TI_SCI message */ | ||
| 249 | #define TI_SCI_MSG_VALUE_RM_RING_COUNT_VALID BIT(2) | ||
| 250 | /* RA config.mode parameter is valid for RM ring configure TI_SCI message */ | ||
| 251 | #define TI_SCI_MSG_VALUE_RM_RING_MODE_VALID BIT(3) | ||
| 252 | /* RA config.size parameter is valid for RM ring configure TI_SCI message */ | ||
| 253 | #define TI_SCI_MSG_VALUE_RM_RING_SIZE_VALID BIT(4) | ||
| 254 | /* RA config.order_id parameter is valid for RM ring configure TISCI message */ | ||
| 255 | #define TI_SCI_MSG_VALUE_RM_RING_ORDER_ID_VALID BIT(5) | ||
| 256 | |||
| 257 | #define TI_SCI_MSG_VALUE_RM_ALL_NO_ORDER \ | ||
| 258 | (TI_SCI_MSG_VALUE_RM_RING_ADDR_LO_VALID | \ | ||
| 259 | TI_SCI_MSG_VALUE_RM_RING_ADDR_HI_VALID | \ | ||
| 260 | TI_SCI_MSG_VALUE_RM_RING_COUNT_VALID | \ | ||
| 261 | TI_SCI_MSG_VALUE_RM_RING_MODE_VALID | \ | ||
| 262 | TI_SCI_MSG_VALUE_RM_RING_SIZE_VALID) | ||
| 263 | |||
| 264 | /** | ||
| 265 | * struct ti_sci_rm_ringacc_ops - Ring Accelerator Management operations | ||
| 266 | * @config: configure the SoC Navigator Subsystem Ring Accelerator ring | ||
| 267 | * @get_config: get the SoC Navigator Subsystem Ring Accelerator ring | ||
| 268 | * configuration | ||
| 269 | */ | ||
| 270 | struct ti_sci_rm_ringacc_ops { | ||
| 271 | int (*config)(const struct ti_sci_handle *handle, | ||
| 272 | u32 valid_params, u16 nav_id, u16 index, | ||
| 273 | u32 addr_lo, u32 addr_hi, u32 count, u8 mode, | ||
| 274 | u8 size, u8 order_id | ||
| 275 | ); | ||
| 276 | int (*get_config)(const struct ti_sci_handle *handle, | ||
| 277 | u32 nav_id, u32 index, u8 *mode, | ||
| 278 | u32 *addr_lo, u32 *addr_hi, u32 *count, | ||
| 279 | u8 *size, u8 *order_id); | ||
| 280 | }; | ||
| 281 | |||
| 282 | /** | ||
| 283 | * struct ti_sci_rm_psil_ops - PSI-L thread operations | ||
| 284 | * @pair: pair PSI-L source thread to a destination thread. | ||
| 285 | * If the src_thread is mapped to UDMA tchan, the corresponding channel's | ||
| 286 | * TCHAN_THRD_ID register is updated. | ||
| 287 | * If the dst_thread is mapped to UDMA rchan, the corresponding channel's | ||
| 288 | * RCHAN_THRD_ID register is updated. | ||
| 289 | * @unpair: unpair PSI-L source thread from a destination thread. | ||
| 290 | * If the src_thread is mapped to UDMA tchan, the corresponding channel's | ||
| 291 | * TCHAN_THRD_ID register is cleared. | ||
| 292 | * If the dst_thread is mapped to UDMA rchan, the corresponding channel's | ||
| 293 | * RCHAN_THRD_ID register is cleared. | ||
| 294 | */ | ||
| 295 | struct ti_sci_rm_psil_ops { | ||
| 296 | int (*pair)(const struct ti_sci_handle *handle, u32 nav_id, | ||
| 297 | u32 src_thread, u32 dst_thread); | ||
| 298 | int (*unpair)(const struct ti_sci_handle *handle, u32 nav_id, | ||
| 299 | u32 src_thread, u32 dst_thread); | ||
| 300 | }; | ||
| 301 | |||
| 302 | /* UDMAP channel types */ | ||
| 303 | #define TI_SCI_RM_UDMAP_CHAN_TYPE_PKT_PBRR 2 | ||
| 304 | #define TI_SCI_RM_UDMAP_CHAN_TYPE_PKT_PBRR_SB 3 /* RX only */ | ||
| 305 | #define TI_SCI_RM_UDMAP_CHAN_TYPE_3RDP_PBRR 10 | ||
| 306 | #define TI_SCI_RM_UDMAP_CHAN_TYPE_3RDP_PBVR 11 | ||
| 307 | #define TI_SCI_RM_UDMAP_CHAN_TYPE_3RDP_BCOPY_PBRR 12 | ||
| 308 | #define TI_SCI_RM_UDMAP_CHAN_TYPE_3RDP_BCOPY_PBVR 13 | ||
| 309 | |||
| 310 | #define TI_SCI_RM_UDMAP_RX_FLOW_DESC_HOST 0 | ||
| 311 | #define TI_SCI_RM_UDMAP_RX_FLOW_DESC_MONO 2 | ||
| 312 | |||
| 313 | #define TI_SCI_RM_UDMAP_CHAN_BURST_SIZE_64_BYTES 1 | ||
| 314 | #define TI_SCI_RM_UDMAP_CHAN_BURST_SIZE_128_BYTES 2 | ||
| 315 | #define TI_SCI_RM_UDMAP_CHAN_BURST_SIZE_256_BYTES 3 | ||
| 316 | |||
| 317 | /* UDMAP TX/RX channel valid_params common declarations */ | ||
| 318 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_PAUSE_ON_ERR_VALID BIT(0) | ||
| 319 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_ATYPE_VALID BIT(1) | ||
| 320 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_CHAN_TYPE_VALID BIT(2) | ||
| 321 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_FETCH_SIZE_VALID BIT(3) | ||
| 322 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_CQ_QNUM_VALID BIT(4) | ||
| 323 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_PRIORITY_VALID BIT(5) | ||
| 324 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_QOS_VALID BIT(6) | ||
| 325 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_ORDER_ID_VALID BIT(7) | ||
| 326 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_SCHED_PRIORITY_VALID BIT(8) | ||
| 327 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_BURST_SIZE_VALID BIT(14) | ||
| 328 | |||
| 329 | /** | ||
| 330 | * Configures a Navigator Subsystem UDMAP transmit channel | ||
| 331 | * | ||
| 332 | * Configures a Navigator Subsystem UDMAP transmit channel registers. | ||
| 333 | * See @ti_sci_msg_rm_udmap_tx_ch_cfg_req | ||
| 334 | */ | ||
| 335 | struct ti_sci_msg_rm_udmap_tx_ch_cfg { | ||
| 336 | u32 valid_params; | ||
| 337 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_TX_FILT_EINFO_VALID BIT(9) | ||
| 338 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_TX_FILT_PSWORDS_VALID BIT(10) | ||
| 339 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_TX_SUPR_TDPKT_VALID BIT(11) | ||
| 340 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_TX_CREDIT_COUNT_VALID BIT(12) | ||
| 341 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_TX_FDEPTH_VALID BIT(13) | ||
| 342 | u16 nav_id; | ||
| 343 | u16 index; | ||
| 344 | u8 tx_pause_on_err; | ||
| 345 | u8 tx_filt_einfo; | ||
| 346 | u8 tx_filt_pswords; | ||
| 347 | u8 tx_atype; | ||
| 348 | u8 tx_chan_type; | ||
| 349 | u8 tx_supr_tdpkt; | ||
| 350 | u16 tx_fetch_size; | ||
| 351 | u8 tx_credit_count; | ||
| 352 | u16 txcq_qnum; | ||
| 353 | u8 tx_priority; | ||
| 354 | u8 tx_qos; | ||
| 355 | u8 tx_orderid; | ||
| 356 | u16 fdepth; | ||
| 357 | u8 tx_sched_priority; | ||
| 358 | u8 tx_burst_size; | ||
| 359 | }; | ||
| 360 | |||
| 361 | /** | ||
| 362 | * Configures a Navigator Subsystem UDMAP receive channel | ||
| 363 | * | ||
| 364 | * Configures a Navigator Subsystem UDMAP receive channel registers. | ||
| 365 | * See @ti_sci_msg_rm_udmap_rx_ch_cfg_req | ||
| 366 | */ | ||
| 367 | struct ti_sci_msg_rm_udmap_rx_ch_cfg { | ||
| 368 | u32 valid_params; | ||
| 369 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_RX_FLOWID_START_VALID BIT(9) | ||
| 370 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_RX_FLOWID_CNT_VALID BIT(10) | ||
| 371 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_RX_IGNORE_SHORT_VALID BIT(11) | ||
| 372 | #define TI_SCI_MSG_VALUE_RM_UDMAP_CH_RX_IGNORE_LONG_VALID BIT(12) | ||
| 373 | u16 nav_id; | ||
| 374 | u16 index; | ||
| 375 | u16 rx_fetch_size; | ||
| 376 | u16 rxcq_qnum; | ||
| 377 | u8 rx_priority; | ||
| 378 | u8 rx_qos; | ||
| 379 | u8 rx_orderid; | ||
| 380 | u8 rx_sched_priority; | ||
| 381 | u16 flowid_start; | ||
| 382 | u16 flowid_cnt; | ||
| 383 | u8 rx_pause_on_err; | ||
| 384 | u8 rx_atype; | ||
| 385 | u8 rx_chan_type; | ||
| 386 | u8 rx_ignore_short; | ||
| 387 | u8 rx_ignore_long; | ||
| 388 | u8 rx_burst_size; | ||
| 389 | }; | ||
| 390 | |||
| 391 | /** | ||
| 392 | * Configures a Navigator Subsystem UDMAP receive flow | ||
| 393 | * | ||
| 394 | * Configures a Navigator Subsystem UDMAP receive flow's registers. | ||
| 395 | * See @tis_ci_msg_rm_udmap_flow_cfg_req | ||
| 396 | */ | ||
| 397 | struct ti_sci_msg_rm_udmap_flow_cfg { | ||
| 398 | u32 valid_params; | ||
| 399 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_EINFO_PRESENT_VALID BIT(0) | ||
| 400 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_PSINFO_PRESENT_VALID BIT(1) | ||
| 401 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_ERROR_HANDLING_VALID BIT(2) | ||
| 402 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_DESC_TYPE_VALID BIT(3) | ||
| 403 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_SOP_OFFSET_VALID BIT(4) | ||
| 404 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_DEST_QNUM_VALID BIT(5) | ||
| 405 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_SRC_TAG_HI_VALID BIT(6) | ||
| 406 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_SRC_TAG_LO_VALID BIT(7) | ||
| 407 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_DEST_TAG_HI_VALID BIT(8) | ||
| 408 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_DEST_TAG_LO_VALID BIT(9) | ||
| 409 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_SRC_TAG_HI_SEL_VALID BIT(10) | ||
| 410 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_SRC_TAG_LO_SEL_VALID BIT(11) | ||
| 411 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_DEST_TAG_HI_SEL_VALID BIT(12) | ||
| 412 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_DEST_TAG_LO_SEL_VALID BIT(13) | ||
| 413 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_FDQ0_SZ0_QNUM_VALID BIT(14) | ||
| 414 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_FDQ1_QNUM_VALID BIT(15) | ||
| 415 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_FDQ2_QNUM_VALID BIT(16) | ||
| 416 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_FDQ3_QNUM_VALID BIT(17) | ||
| 417 | #define TI_SCI_MSG_VALUE_RM_UDMAP_FLOW_PS_LOCATION_VALID BIT(18) | ||
| 418 | u16 nav_id; | ||
| 419 | u16 flow_index; | ||
| 420 | u8 rx_einfo_present; | ||
| 421 | u8 rx_psinfo_present; | ||
| 422 | u8 rx_error_handling; | ||
| 423 | u8 rx_desc_type; | ||
| 424 | u16 rx_sop_offset; | ||
| 425 | u16 rx_dest_qnum; | ||
| 426 | u8 rx_src_tag_hi; | ||
| 427 | u8 rx_src_tag_lo; | ||
| 428 | u8 rx_dest_tag_hi; | ||
| 429 | u8 rx_dest_tag_lo; | ||
| 430 | u8 rx_src_tag_hi_sel; | ||
| 431 | u8 rx_src_tag_lo_sel; | ||
| 432 | u8 rx_dest_tag_hi_sel; | ||
| 433 | u8 rx_dest_tag_lo_sel; | ||
| 434 | u16 rx_fdq0_sz0_qnum; | ||
| 435 | u16 rx_fdq1_qnum; | ||
| 436 | u16 rx_fdq2_qnum; | ||
| 437 | u16 rx_fdq3_qnum; | ||
| 438 | u8 rx_ps_location; | ||
| 439 | }; | ||
| 440 | |||
| 441 | /** | ||
| 442 | * struct ti_sci_rm_udmap_ops - UDMA Management operations | ||
| 443 | * @tx_ch_cfg: configure SoC Navigator Subsystem UDMA transmit channel. | ||
| 444 | * @rx_ch_cfg: configure SoC Navigator Subsystem UDMA receive channel. | ||
| 445 | * @rx_flow_cfg1: configure SoC Navigator Subsystem UDMA receive flow. | ||
| 446 | */ | ||
| 447 | struct ti_sci_rm_udmap_ops { | ||
| 448 | int (*tx_ch_cfg)(const struct ti_sci_handle *handle, | ||
| 449 | const struct ti_sci_msg_rm_udmap_tx_ch_cfg *params); | ||
| 450 | int (*rx_ch_cfg)(const struct ti_sci_handle *handle, | ||
| 451 | const struct ti_sci_msg_rm_udmap_rx_ch_cfg *params); | ||
| 452 | int (*rx_flow_cfg)(const struct ti_sci_handle *handle, | ||
| 453 | const struct ti_sci_msg_rm_udmap_flow_cfg *params); | ||
| 454 | }; | ||
| 455 | |||
| 456 | /** | ||
| 457 | * struct ti_sci_proc_ops - Processor Control operations | ||
| 458 | * @request: Request to control a physical processor. The requesting host | ||
| 459 | * should be in the processor access list | ||
| 460 | * @release: Relinquish a physical processor control | ||
| 461 | * @handover: Handover a physical processor control to another host | ||
| 462 | * in the permitted list | ||
| 463 | * @set_config: Set base configuration of a processor | ||
| 464 | * @set_control: Setup limited control flags in specific cases | ||
| 465 | * @get_status: Get the state of physical processor | ||
| 466 | * | ||
| 467 | * NOTE: The following paramteres are generic in nature for all these ops, | ||
| 468 | * -handle: Pointer to TI SCI handle as retrieved by *ti_sci_get_handle | ||
| 469 | * -pid: Processor ID | ||
| 470 | * -hid: Host ID | ||
| 471 | */ | ||
| 472 | struct ti_sci_proc_ops { | ||
| 473 | int (*request)(const struct ti_sci_handle *handle, u8 pid); | ||
| 474 | int (*release)(const struct ti_sci_handle *handle, u8 pid); | ||
| 475 | int (*handover)(const struct ti_sci_handle *handle, u8 pid, u8 hid); | ||
| 476 | int (*set_config)(const struct ti_sci_handle *handle, u8 pid, | ||
| 477 | u64 boot_vector, u32 cfg_set, u32 cfg_clr); | ||
| 478 | int (*set_control)(const struct ti_sci_handle *handle, u8 pid, | ||
| 479 | u32 ctrl_set, u32 ctrl_clr); | ||
| 480 | int (*get_status)(const struct ti_sci_handle *handle, u8 pid, | ||
| 481 | u64 *boot_vector, u32 *cfg_flags, u32 *ctrl_flags, | ||
| 482 | u32 *status_flags); | ||
| 483 | }; | ||
| 484 | |||
| 244 | /** | 485 | /** |
| 245 | * struct ti_sci_ops - Function support for TI SCI | 486 | * struct ti_sci_ops - Function support for TI SCI |
| 246 | * @dev_ops: Device specific operations | 487 | * @dev_ops: Device specific operations |
| 247 | * @clk_ops: Clock specific operations | 488 | * @clk_ops: Clock specific operations |
| 248 | * @rm_core_ops: Resource management core operations. | 489 | * @rm_core_ops: Resource management core operations. |
| 249 | * @rm_irq_ops: IRQ management specific operations | 490 | * @rm_irq_ops: IRQ management specific operations |
| 491 | * @proc_ops: Processor Control specific operations | ||
| 250 | */ | 492 | */ |
| 251 | struct ti_sci_ops { | 493 | struct ti_sci_ops { |
| 252 | struct ti_sci_core_ops core_ops; | 494 | struct ti_sci_core_ops core_ops; |
| @@ -254,6 +496,10 @@ struct ti_sci_ops { | |||
| 254 | struct ti_sci_clk_ops clk_ops; | 496 | struct ti_sci_clk_ops clk_ops; |
| 255 | struct ti_sci_rm_core_ops rm_core_ops; | 497 | struct ti_sci_rm_core_ops rm_core_ops; |
| 256 | struct ti_sci_rm_irq_ops rm_irq_ops; | 498 | struct ti_sci_rm_irq_ops rm_irq_ops; |
| 499 | struct ti_sci_rm_ringacc_ops rm_ring_ops; | ||
| 500 | struct ti_sci_rm_psil_ops rm_psil_ops; | ||
| 501 | struct ti_sci_rm_udmap_ops rm_udmap_ops; | ||
| 502 | struct ti_sci_proc_ops proc_ops; | ||
| 257 | }; | 503 | }; |
| 258 | 504 | ||
| 259 | /** | 505 | /** |
diff --git a/include/memory/jedec_ddr.h b/include/memory/jedec_ddr.h deleted file mode 100644 index 90a9dabbe606..000000000000 --- a/include/memory/jedec_ddr.h +++ /dev/null | |||
| @@ -1,172 +0,0 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0-only */ | ||
| 2 | /* | ||
| 3 | * Definitions for DDR memories based on JEDEC specs | ||
| 4 | * | ||
| 5 | * Copyright (C) 2012 Texas Instruments, Inc. | ||
| 6 | * | ||
| 7 | * Aneesh V <aneesh@ti.com> | ||
| 8 | */ | ||
| 9 | #ifndef __LINUX_JEDEC_DDR_H | ||
| 10 | #define __LINUX_JEDEC_DDR_H | ||
| 11 | |||
| 12 | #include <linux/types.h> | ||
| 13 | |||
| 14 | /* DDR Densities */ | ||
| 15 | #define DDR_DENSITY_64Mb 1 | ||
| 16 | #define DDR_DENSITY_128Mb 2 | ||
| 17 | #define DDR_DENSITY_256Mb 3 | ||
| 18 | #define DDR_DENSITY_512Mb 4 | ||
| 19 | #define DDR_DENSITY_1Gb 5 | ||
| 20 | #define DDR_DENSITY_2Gb 6 | ||
| 21 | #define DDR_DENSITY_4Gb 7 | ||
| 22 | #define DDR_DENSITY_8Gb 8 | ||
| 23 | #define DDR_DENSITY_16Gb 9 | ||
| 24 | #define DDR_DENSITY_32Gb 10 | ||
| 25 | |||
| 26 | /* DDR type */ | ||
| 27 | #define DDR_TYPE_DDR2 1 | ||
| 28 | #define DDR_TYPE_DDR3 2 | ||
| 29 | #define DDR_TYPE_LPDDR2_S4 3 | ||
| 30 | #define DDR_TYPE_LPDDR2_S2 4 | ||
| 31 | #define DDR_TYPE_LPDDR2_NVM 5 | ||
| 32 | |||
| 33 | /* DDR IO width */ | ||
| 34 | #define DDR_IO_WIDTH_4 1 | ||
| 35 | #define DDR_IO_WIDTH_8 2 | ||
| 36 | #define DDR_IO_WIDTH_16 3 | ||
| 37 | #define DDR_IO_WIDTH_32 4 | ||
| 38 | |||
| 39 | /* Number of Row bits */ | ||
| 40 | #define R9 9 | ||
| 41 | #define R10 10 | ||
| 42 | #define R11 11 | ||
| 43 | #define R12 12 | ||
| 44 | #define R13 13 | ||
| 45 | #define R14 14 | ||
| 46 | #define R15 15 | ||
| 47 | #define R16 16 | ||
| 48 | |||
| 49 | /* Number of Column bits */ | ||
| 50 | #define C7 7 | ||
| 51 | #define C8 8 | ||
| 52 | #define C9 9 | ||
| 53 | #define C10 10 | ||
| 54 | #define C11 11 | ||
| 55 | #define C12 12 | ||
| 56 | |||
| 57 | /* Number of Banks */ | ||
| 58 | #define B1 0 | ||
| 59 | #define B2 1 | ||
| 60 | #define B4 2 | ||
| 61 | #define B8 3 | ||
| 62 | |||
| 63 | /* Refresh rate in nano-seconds */ | ||
| 64 | #define T_REFI_15_6 15600 | ||
| 65 | #define T_REFI_7_8 7800 | ||
| 66 | #define T_REFI_3_9 3900 | ||
| 67 | |||
| 68 | /* tRFC values */ | ||
| 69 | #define T_RFC_90 90000 | ||
| 70 | #define T_RFC_110 110000 | ||
| 71 | #define T_RFC_130 130000 | ||
| 72 | #define T_RFC_160 160000 | ||
| 73 | #define T_RFC_210 210000 | ||
| 74 | #define T_RFC_300 300000 | ||
| 75 | #define T_RFC_350 350000 | ||
| 76 | |||
| 77 | /* Mode register numbers */ | ||
| 78 | #define DDR_MR0 0 | ||
| 79 | #define DDR_MR1 1 | ||
| 80 | #define DDR_MR2 2 | ||
| 81 | #define DDR_MR3 3 | ||
| 82 | #define DDR_MR4 4 | ||
| 83 | #define DDR_MR5 5 | ||
| 84 | #define DDR_MR6 6 | ||
| 85 | #define DDR_MR7 7 | ||
| 86 | #define DDR_MR8 8 | ||
| 87 | #define DDR_MR9 9 | ||
| 88 | #define DDR_MR10 10 | ||
| 89 | #define DDR_MR11 11 | ||
| 90 | #define DDR_MR16 16 | ||
| 91 | #define DDR_MR17 17 | ||
| 92 | #define DDR_MR18 18 | ||
| 93 | |||
| 94 | /* | ||
| 95 | * LPDDR2 related defines | ||
| 96 | */ | ||
| 97 | |||
| 98 | /* MR4 register fields */ | ||
| 99 | #define MR4_SDRAM_REF_RATE_SHIFT 0 | ||
| 100 | #define MR4_SDRAM_REF_RATE_MASK 7 | ||
| 101 | #define MR4_TUF_SHIFT 7 | ||
| 102 | #define MR4_TUF_MASK (1 << 7) | ||
| 103 | |||
| 104 | /* MR4 SDRAM Refresh Rate field values */ | ||
| 105 | #define SDRAM_TEMP_NOMINAL 0x3 | ||
| 106 | #define SDRAM_TEMP_RESERVED_4 0x4 | ||
| 107 | #define SDRAM_TEMP_HIGH_DERATE_REFRESH 0x5 | ||
| 108 | #define SDRAM_TEMP_HIGH_DERATE_REFRESH_AND_TIMINGS 0x6 | ||
| 109 | #define SDRAM_TEMP_VERY_HIGH_SHUTDOWN 0x7 | ||
| 110 | |||
| 111 | #define NUM_DDR_ADDR_TABLE_ENTRIES 11 | ||
| 112 | #define NUM_DDR_TIMING_TABLE_ENTRIES 4 | ||
| 113 | |||
| 114 | /* Structure for DDR addressing info from the JEDEC spec */ | ||
| 115 | struct lpddr2_addressing { | ||
| 116 | u32 num_banks; | ||
| 117 | u32 tREFI_ns; | ||
| 118 | u32 tRFCab_ps; | ||
| 119 | }; | ||
| 120 | |||
| 121 | /* | ||
| 122 | * Structure for timings from the LPDDR2 datasheet | ||
| 123 | * All parameters are in pico seconds(ps) unless explicitly indicated | ||
| 124 | * with a suffix like tRAS_max_ns below | ||
| 125 | */ | ||
| 126 | struct lpddr2_timings { | ||
| 127 | u32 max_freq; | ||
| 128 | u32 min_freq; | ||
| 129 | u32 tRPab; | ||
| 130 | u32 tRCD; | ||
| 131 | u32 tWR; | ||
| 132 | u32 tRAS_min; | ||
| 133 | u32 tRRD; | ||
| 134 | u32 tWTR; | ||
| 135 | u32 tXP; | ||
| 136 | u32 tRTP; | ||
| 137 | u32 tCKESR; | ||
| 138 | u32 tDQSCK_max; | ||
| 139 | u32 tDQSCK_max_derated; | ||
| 140 | u32 tFAW; | ||
| 141 | u32 tZQCS; | ||
| 142 | u32 tZQCL; | ||
| 143 | u32 tZQinit; | ||
| 144 | u32 tRAS_max_ns; | ||
| 145 | }; | ||
| 146 | |||
| 147 | /* | ||
| 148 | * Min value for some parameters in terms of number of tCK cycles(nCK) | ||
| 149 | * Please set to zero parameters that are not valid for a given memory | ||
| 150 | * type | ||
| 151 | */ | ||
| 152 | struct lpddr2_min_tck { | ||
| 153 | u32 tRPab; | ||
| 154 | u32 tRCD; | ||
| 155 | u32 tWR; | ||
| 156 | u32 tRASmin; | ||
| 157 | u32 tRRD; | ||
| 158 | u32 tWTR; | ||
| 159 | u32 tXP; | ||
| 160 | u32 tRTP; | ||
| 161 | u32 tCKE; | ||
| 162 | u32 tCKESR; | ||
| 163 | u32 tFAW; | ||
| 164 | }; | ||
| 165 | |||
| 166 | extern const struct lpddr2_addressing | ||
| 167 | lpddr2_jedec_addressing_table[NUM_DDR_ADDR_TABLE_ENTRIES]; | ||
| 168 | extern const struct lpddr2_timings | ||
| 169 | lpddr2_jedec_timings[NUM_DDR_TIMING_TABLE_ENTRIES]; | ||
| 170 | extern const struct lpddr2_min_tck lpddr2_jedec_min_tck; | ||
| 171 | |||
| 172 | #endif /* __LINUX_JEDEC_DDR_H */ | ||
diff --git a/include/soc/fsl/bman.h b/include/soc/fsl/bman.h index 5b99cb2ea5ef..173e4049d963 100644 --- a/include/soc/fsl/bman.h +++ b/include/soc/fsl/bman.h | |||
| @@ -133,5 +133,13 @@ int bman_acquire(struct bman_pool *pool, struct bm_buffer *bufs, u8 num); | |||
| 133 | * failed to probe or 0 if the bman driver did not probed yet. | 133 | * failed to probe or 0 if the bman driver did not probed yet. |
| 134 | */ | 134 | */ |
| 135 | int bman_is_probed(void); | 135 | int bman_is_probed(void); |
| 136 | /** | ||
| 137 | * bman_portals_probed - Check if all cpu bound bman portals are probed | ||
| 138 | * | ||
| 139 | * Returns 1 if all the required cpu bound bman portals successfully probed, | ||
| 140 | * -1 if probe errors appeared or 0 if the bman portals did not yet finished | ||
| 141 | * probing. | ||
| 142 | */ | ||
| 143 | int bman_portals_probed(void); | ||
| 136 | 144 | ||
| 137 | #endif /* __FSL_BMAN_H */ | 145 | #endif /* __FSL_BMAN_H */ |
diff --git a/include/soc/fsl/qman.h b/include/soc/fsl/qman.h index 5cc7af06c1ba..aa31c05a103a 100644 --- a/include/soc/fsl/qman.h +++ b/include/soc/fsl/qman.h | |||
| @@ -1195,6 +1195,15 @@ int qman_release_cgrid(u32 id); | |||
| 1195 | int qman_is_probed(void); | 1195 | int qman_is_probed(void); |
| 1196 | 1196 | ||
| 1197 | /** | 1197 | /** |
| 1198 | * qman_portals_probed - Check if all cpu bound qman portals are probed | ||
| 1199 | * | ||
| 1200 | * Returns 1 if all the required cpu bound qman portals successfully probed, | ||
| 1201 | * -1 if probe errors appeared or 0 if the qman portals did not yet finished | ||
| 1202 | * probing. | ||
| 1203 | */ | ||
| 1204 | int qman_portals_probed(void); | ||
| 1205 | |||
| 1206 | /** | ||
| 1198 | * qman_dqrr_get_ithresh - Get coalesce interrupt threshold | 1207 | * qman_dqrr_get_ithresh - Get coalesce interrupt threshold |
| 1199 | * @portal: portal to get the value for | 1208 | * @portal: portal to get the value for |
| 1200 | * @ithresh: threshold pointer | 1209 | * @ithresh: threshold pointer |
