diff options
| author | David S. Miller <davem@davemloft.net> | 2015-03-03 21:16:48 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-03-03 21:16:48 -0500 |
| commit | 71a83a6db6138b9d41d8a0b6b91cb59f6dc4742c (patch) | |
| tree | f74b6e4e48257ec6ce40b95645ecb8533b9cc1f8 /include | |
| parent | b97526f3ff95f92b107f0fb52cbb8627e395429b (diff) | |
| parent | a6c5170d1edea97c538c81e377e56c7b5c5b7e63 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ethernet/rocker/rocker.c
The rocker commit was two overlapping changes, one to rename
the ->vport member to ->pport, and another making the bitmask
expression use '1ULL' instead of plain '1'.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
74 files changed, 4232 insertions, 850 deletions
diff --git a/include/acpi/acpi_lpat.h b/include/acpi/acpi_lpat.h new file mode 100644 index 000000000000..da37e12d23e2 --- /dev/null +++ b/include/acpi/acpi_lpat.h | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | /* | ||
| 2 | * acpi_lpat.h - LPAT table processing functions | ||
| 3 | * | ||
| 4 | * Copyright (C) 2015 Intel Corporation. All rights reserved. | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or | ||
| 7 | * modify it under the terms of the GNU General Public License version | ||
| 8 | * 2 as published by the Free Software Foundation. | ||
| 9 | * | ||
| 10 | * This program is distributed in the hope that it will be useful, | ||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 13 | * GNU General Public License for more details. | ||
| 14 | */ | ||
| 15 | |||
| 16 | #ifndef ACPI_LPAT_H | ||
| 17 | #define ACPI_LPAT_H | ||
| 18 | |||
| 19 | struct acpi_lpat { | ||
| 20 | int temp; | ||
| 21 | int raw; | ||
| 22 | }; | ||
| 23 | |||
| 24 | struct acpi_lpat_conversion_table { | ||
| 25 | struct acpi_lpat *lpat; | ||
| 26 | int lpat_count; | ||
| 27 | }; | ||
| 28 | |||
| 29 | #ifdef CONFIG_ACPI | ||
| 30 | |||
| 31 | int acpi_lpat_raw_to_temp(struct acpi_lpat_conversion_table *lpat_table, | ||
| 32 | int raw); | ||
| 33 | int acpi_lpat_temp_to_raw(struct acpi_lpat_conversion_table *lpat_table, | ||
| 34 | int temp); | ||
| 35 | struct acpi_lpat_conversion_table *acpi_lpat_get_conversion_table(acpi_handle | ||
| 36 | handle); | ||
| 37 | void acpi_lpat_free_conversion_table(struct acpi_lpat_conversion_table | ||
| 38 | *lpat_table); | ||
| 39 | |||
| 40 | #else | ||
| 41 | static int acpi_lpat_raw_to_temp(struct acpi_lpat_conversion_table *lpat_table, | ||
| 42 | int raw) | ||
| 43 | { | ||
| 44 | return 0; | ||
| 45 | } | ||
| 46 | |||
| 47 | static int acpi_lpat_temp_to_raw(struct acpi_lpat_conversion_table *lpat_table, | ||
| 48 | int temp) | ||
| 49 | { | ||
| 50 | return 0; | ||
| 51 | } | ||
| 52 | |||
| 53 | static struct acpi_lpat_conversion_table *acpi_lpat_get_conversion_table( | ||
| 54 | acpi_handle handle) | ||
| 55 | { | ||
| 56 | return NULL; | ||
| 57 | } | ||
| 58 | |||
| 59 | static void acpi_lpat_free_conversion_table(struct acpi_lpat_conversion_table | ||
| 60 | *lpat_table) | ||
| 61 | { | ||
| 62 | } | ||
| 63 | |||
| 64 | #endif | ||
| 65 | #endif | ||
diff --git a/include/asm-generic/pci_iomap.h b/include/asm-generic/pci_iomap.h index ce37349860fe..7389c87116a0 100644 --- a/include/asm-generic/pci_iomap.h +++ b/include/asm-generic/pci_iomap.h | |||
| @@ -15,6 +15,9 @@ struct pci_dev; | |||
| 15 | #ifdef CONFIG_PCI | 15 | #ifdef CONFIG_PCI |
| 16 | /* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ | 16 | /* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ |
| 17 | extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); | 17 | extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); |
| 18 | extern void __iomem *pci_iomap_range(struct pci_dev *dev, int bar, | ||
| 19 | unsigned long offset, | ||
| 20 | unsigned long maxlen); | ||
| 18 | /* Create a virtual mapping cookie for a port on a given PCI device. | 21 | /* Create a virtual mapping cookie for a port on a given PCI device. |
| 19 | * Do not call this directly, it exists to make it easier for architectures | 22 | * Do not call this directly, it exists to make it easier for architectures |
| 20 | * to override */ | 23 | * to override */ |
| @@ -30,6 +33,13 @@ static inline void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned lon | |||
| 30 | { | 33 | { |
| 31 | return NULL; | 34 | return NULL; |
| 32 | } | 35 | } |
| 36 | |||
| 37 | static inline void __iomem *pci_iomap_range(struct pci_dev *dev, int bar, | ||
| 38 | unsigned long offset, | ||
| 39 | unsigned long maxlen) | ||
| 40 | { | ||
| 41 | return NULL; | ||
| 42 | } | ||
| 33 | #endif | 43 | #endif |
| 34 | 44 | ||
| 35 | #endif /* __ASM_GENERIC_IO_H */ | 45 | #endif /* __ASM_GENERIC_IO_H */ |
diff --git a/include/drm/i915_pciids.h b/include/drm/i915_pciids.h index 180ad0e6de21..d016dc57f007 100644 --- a/include/drm/i915_pciids.h +++ b/include/drm/i915_pciids.h | |||
| @@ -214,9 +214,9 @@ | |||
| 214 | INTEL_VGA_DEVICE((((gt) - 1) << 4) | (id), info) | 214 | INTEL_VGA_DEVICE((((gt) - 1) << 4) | (id), info) |
| 215 | 215 | ||
| 216 | #define _INTEL_BDW_M_IDS(gt, info) \ | 216 | #define _INTEL_BDW_M_IDS(gt, info) \ |
| 217 | _INTEL_BDW_M(gt, 0x1602, info), /* ULT */ \ | 217 | _INTEL_BDW_M(gt, 0x1602, info), /* Halo */ \ |
| 218 | _INTEL_BDW_M(gt, 0x1606, info), /* ULT */ \ | 218 | _INTEL_BDW_M(gt, 0x1606, info), /* ULT */ \ |
| 219 | _INTEL_BDW_M(gt, 0x160B, info), /* Iris */ \ | 219 | _INTEL_BDW_M(gt, 0x160B, info), /* ULT */ \ |
| 220 | _INTEL_BDW_M(gt, 0x160E, info) /* ULX */ | 220 | _INTEL_BDW_M(gt, 0x160E, info) /* ULX */ |
| 221 | 221 | ||
| 222 | #define _INTEL_BDW_D_IDS(gt, info) \ | 222 | #define _INTEL_BDW_D_IDS(gt, info) \ |
diff --git a/include/dt-bindings/clock/alphascale,asm9260.h b/include/dt-bindings/clock/alphascale,asm9260.h new file mode 100644 index 000000000000..04e8db27daf0 --- /dev/null +++ b/include/dt-bindings/clock/alphascale,asm9260.h | |||
| @@ -0,0 +1,97 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2014 Oleksij Rempel <linux@rempel-privat.de> | ||
| 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 | */ | ||
| 13 | |||
| 14 | #ifndef _DT_BINDINGS_CLK_ASM9260_H | ||
| 15 | #define _DT_BINDINGS_CLK_ASM9260_H | ||
| 16 | |||
| 17 | /* ahb gate */ | ||
| 18 | #define CLKID_AHB_ROM 0 | ||
| 19 | #define CLKID_AHB_RAM 1 | ||
| 20 | #define CLKID_AHB_GPIO 2 | ||
| 21 | #define CLKID_AHB_MAC 3 | ||
| 22 | #define CLKID_AHB_EMI 4 | ||
| 23 | #define CLKID_AHB_USB0 5 | ||
| 24 | #define CLKID_AHB_USB1 6 | ||
| 25 | #define CLKID_AHB_DMA0 7 | ||
| 26 | #define CLKID_AHB_DMA1 8 | ||
| 27 | #define CLKID_AHB_UART0 9 | ||
| 28 | #define CLKID_AHB_UART1 10 | ||
| 29 | #define CLKID_AHB_UART2 11 | ||
| 30 | #define CLKID_AHB_UART3 12 | ||
| 31 | #define CLKID_AHB_UART4 13 | ||
| 32 | #define CLKID_AHB_UART5 14 | ||
| 33 | #define CLKID_AHB_UART6 15 | ||
| 34 | #define CLKID_AHB_UART7 16 | ||
| 35 | #define CLKID_AHB_UART8 17 | ||
| 36 | #define CLKID_AHB_UART9 18 | ||
| 37 | #define CLKID_AHB_I2S0 19 | ||
| 38 | #define CLKID_AHB_I2C0 20 | ||
| 39 | #define CLKID_AHB_I2C1 21 | ||
| 40 | #define CLKID_AHB_SSP0 22 | ||
| 41 | #define CLKID_AHB_IOCONFIG 23 | ||
| 42 | #define CLKID_AHB_WDT 24 | ||
| 43 | #define CLKID_AHB_CAN0 25 | ||
| 44 | #define CLKID_AHB_CAN1 26 | ||
| 45 | #define CLKID_AHB_MPWM 27 | ||
| 46 | #define CLKID_AHB_SPI0 28 | ||
| 47 | #define CLKID_AHB_SPI1 29 | ||
| 48 | #define CLKID_AHB_QEI 30 | ||
| 49 | #define CLKID_AHB_QUADSPI0 31 | ||
| 50 | #define CLKID_AHB_CAMIF 32 | ||
| 51 | #define CLKID_AHB_LCDIF 33 | ||
| 52 | #define CLKID_AHB_TIMER0 34 | ||
| 53 | #define CLKID_AHB_TIMER1 35 | ||
| 54 | #define CLKID_AHB_TIMER2 36 | ||
| 55 | #define CLKID_AHB_TIMER3 37 | ||
| 56 | #define CLKID_AHB_IRQ 38 | ||
| 57 | #define CLKID_AHB_RTC 39 | ||
| 58 | #define CLKID_AHB_NAND 40 | ||
| 59 | #define CLKID_AHB_ADC0 41 | ||
| 60 | #define CLKID_AHB_LED 42 | ||
| 61 | #define CLKID_AHB_DAC0 43 | ||
| 62 | #define CLKID_AHB_LCD 44 | ||
| 63 | #define CLKID_AHB_I2S1 45 | ||
| 64 | #define CLKID_AHB_MAC1 46 | ||
| 65 | |||
| 66 | /* devider */ | ||
| 67 | #define CLKID_SYS_CPU 47 | ||
| 68 | #define CLKID_SYS_AHB 48 | ||
| 69 | #define CLKID_SYS_I2S0M 49 | ||
| 70 | #define CLKID_SYS_I2S0S 50 | ||
| 71 | #define CLKID_SYS_I2S1M 51 | ||
| 72 | #define CLKID_SYS_I2S1S 52 | ||
| 73 | #define CLKID_SYS_UART0 53 | ||
| 74 | #define CLKID_SYS_UART1 54 | ||
| 75 | #define CLKID_SYS_UART2 55 | ||
| 76 | #define CLKID_SYS_UART3 56 | ||
| 77 | #define CLKID_SYS_UART4 56 | ||
| 78 | #define CLKID_SYS_UART5 57 | ||
| 79 | #define CLKID_SYS_UART6 58 | ||
| 80 | #define CLKID_SYS_UART7 59 | ||
| 81 | #define CLKID_SYS_UART8 60 | ||
| 82 | #define CLKID_SYS_UART9 61 | ||
| 83 | #define CLKID_SYS_SPI0 62 | ||
| 84 | #define CLKID_SYS_SPI1 63 | ||
| 85 | #define CLKID_SYS_QUADSPI 64 | ||
| 86 | #define CLKID_SYS_SSP0 65 | ||
| 87 | #define CLKID_SYS_NAND 66 | ||
| 88 | #define CLKID_SYS_TRACE 67 | ||
| 89 | #define CLKID_SYS_CAMM 68 | ||
| 90 | #define CLKID_SYS_WDT 69 | ||
| 91 | #define CLKID_SYS_CLKOUT 70 | ||
| 92 | #define CLKID_SYS_MAC 71 | ||
| 93 | #define CLKID_SYS_LCD 72 | ||
| 94 | #define CLKID_SYS_ADCANA 73 | ||
| 95 | |||
| 96 | #define MAX_CLKS 74 | ||
| 97 | #endif | ||
diff --git a/include/dt-bindings/clock/exynos4.h b/include/dt-bindings/clock/exynos4.h index 34fe28c622d0..c4b1676ea674 100644 --- a/include/dt-bindings/clock/exynos4.h +++ b/include/dt-bindings/clock/exynos4.h | |||
| @@ -262,8 +262,13 @@ | |||
| 262 | #define CLK_DIV_MCUISP1 453 /* Exynos4x12 only */ | 262 | #define CLK_DIV_MCUISP1 453 /* Exynos4x12 only */ |
| 263 | #define CLK_DIV_ACLK200 454 /* Exynos4x12 only */ | 263 | #define CLK_DIV_ACLK200 454 /* Exynos4x12 only */ |
| 264 | #define CLK_DIV_ACLK400_MCUISP 455 /* Exynos4x12 only */ | 264 | #define CLK_DIV_ACLK400_MCUISP 455 /* Exynos4x12 only */ |
| 265 | #define CLK_DIV_ACP 456 | ||
| 266 | #define CLK_DIV_DMC 457 | ||
| 267 | #define CLK_DIV_C2C 458 /* Exynos4x12 only */ | ||
| 268 | #define CLK_DIV_GDL 459 | ||
| 269 | #define CLK_DIV_GDR 460 | ||
| 265 | 270 | ||
| 266 | /* must be greater than maximal clock id */ | 271 | /* must be greater than maximal clock id */ |
| 267 | #define CLK_NR_CLKS 456 | 272 | #define CLK_NR_CLKS 461 |
| 268 | 273 | ||
| 269 | #endif /* _DT_BINDINGS_CLOCK_EXYNOS_4_H */ | 274 | #endif /* _DT_BINDINGS_CLOCK_EXYNOS_4_H */ |
diff --git a/include/dt-bindings/clock/exynos7-clk.h b/include/dt-bindings/clock/exynos7-clk.h index 8e4681b07ae7..e33c75a3c09d 100644 --- a/include/dt-bindings/clock/exynos7-clk.h +++ b/include/dt-bindings/clock/exynos7-clk.h | |||
| @@ -17,7 +17,11 @@ | |||
| 17 | #define DOUT_SCLK_CC_PLL 4 | 17 | #define DOUT_SCLK_CC_PLL 4 |
| 18 | #define DOUT_SCLK_MFC_PLL 5 | 18 | #define DOUT_SCLK_MFC_PLL 5 |
| 19 | #define DOUT_ACLK_CCORE_133 6 | 19 | #define DOUT_ACLK_CCORE_133 6 |
| 20 | #define TOPC_NR_CLK 7 | 20 | #define DOUT_ACLK_MSCL_532 7 |
| 21 | #define ACLK_MSCL_532 8 | ||
| 22 | #define DOUT_SCLK_AUD_PLL 9 | ||
| 23 | #define FOUT_AUD_PLL 10 | ||
| 24 | #define TOPC_NR_CLK 11 | ||
| 21 | 25 | ||
| 22 | /* TOP0 */ | 26 | /* TOP0 */ |
| 23 | #define DOUT_ACLK_PERIC1 1 | 27 | #define DOUT_ACLK_PERIC1 1 |
| @@ -26,7 +30,15 @@ | |||
| 26 | #define CLK_SCLK_UART1 4 | 30 | #define CLK_SCLK_UART1 4 |
| 27 | #define CLK_SCLK_UART2 5 | 31 | #define CLK_SCLK_UART2 5 |
| 28 | #define CLK_SCLK_UART3 6 | 32 | #define CLK_SCLK_UART3 6 |
| 29 | #define TOP0_NR_CLK 7 | 33 | #define CLK_SCLK_SPI0 7 |
| 34 | #define CLK_SCLK_SPI1 8 | ||
| 35 | #define CLK_SCLK_SPI2 9 | ||
| 36 | #define CLK_SCLK_SPI3 10 | ||
| 37 | #define CLK_SCLK_SPI4 11 | ||
| 38 | #define CLK_SCLK_SPDIF 12 | ||
| 39 | #define CLK_SCLK_PCM1 13 | ||
| 40 | #define CLK_SCLK_I2S1 14 | ||
| 41 | #define TOP0_NR_CLK 15 | ||
| 30 | 42 | ||
| 31 | /* TOP1 */ | 43 | /* TOP1 */ |
| 32 | #define DOUT_ACLK_FSYS1_200 1 | 44 | #define DOUT_ACLK_FSYS1_200 1 |
| @@ -70,7 +82,23 @@ | |||
| 70 | #define PCLK_HSI2C6 9 | 82 | #define PCLK_HSI2C6 9 |
| 71 | #define PCLK_HSI2C7 10 | 83 | #define PCLK_HSI2C7 10 |
| 72 | #define PCLK_HSI2C8 11 | 84 | #define PCLK_HSI2C8 11 |
| 73 | #define PERIC1_NR_CLK 12 | 85 | #define PCLK_SPI0 12 |
| 86 | #define PCLK_SPI1 13 | ||
| 87 | #define PCLK_SPI2 14 | ||
| 88 | #define PCLK_SPI3 15 | ||
| 89 | #define PCLK_SPI4 16 | ||
| 90 | #define SCLK_SPI0 17 | ||
| 91 | #define SCLK_SPI1 18 | ||
| 92 | #define SCLK_SPI2 19 | ||
| 93 | #define SCLK_SPI3 20 | ||
| 94 | #define SCLK_SPI4 21 | ||
| 95 | #define PCLK_I2S1 22 | ||
| 96 | #define PCLK_PCM1 23 | ||
| 97 | #define PCLK_SPDIF 24 | ||
| 98 | #define SCLK_I2S1 25 | ||
| 99 | #define SCLK_PCM1 26 | ||
| 100 | #define SCLK_SPDIF 27 | ||
| 101 | #define PERIC1_NR_CLK 28 | ||
| 74 | 102 | ||
| 75 | /* PERIS */ | 103 | /* PERIS */ |
| 76 | #define PCLK_CHIPID 1 | 104 | #define PCLK_CHIPID 1 |
| @@ -82,11 +110,63 @@ | |||
| 82 | 110 | ||
| 83 | /* FSYS0 */ | 111 | /* FSYS0 */ |
| 84 | #define ACLK_MMC2 1 | 112 | #define ACLK_MMC2 1 |
| 85 | #define FSYS0_NR_CLK 2 | 113 | #define ACLK_AXIUS_USBDRD30X_FSYS0X 2 |
| 114 | #define ACLK_USBDRD300 3 | ||
| 115 | #define SCLK_USBDRD300_SUSPENDCLK 4 | ||
| 116 | #define SCLK_USBDRD300_REFCLK 5 | ||
| 117 | #define PHYCLK_USBDRD300_UDRD30_PIPE_PCLK_USER 6 | ||
| 118 | #define PHYCLK_USBDRD300_UDRD30_PHYCLK_USER 7 | ||
| 119 | #define OSCCLK_PHY_CLKOUT_USB30_PHY 8 | ||
| 120 | #define ACLK_PDMA0 9 | ||
| 121 | #define ACLK_PDMA1 10 | ||
| 122 | #define FSYS0_NR_CLK 11 | ||
| 86 | 123 | ||
| 87 | /* FSYS1 */ | 124 | /* FSYS1 */ |
| 88 | #define ACLK_MMC1 1 | 125 | #define ACLK_MMC1 1 |
| 89 | #define ACLK_MMC0 2 | 126 | #define ACLK_MMC0 2 |
| 90 | #define FSYS1_NR_CLK 3 | 127 | #define FSYS1_NR_CLK 3 |
| 91 | 128 | ||
| 129 | /* MSCL */ | ||
| 130 | #define USERMUX_ACLK_MSCL_532 1 | ||
| 131 | #define DOUT_PCLK_MSCL 2 | ||
| 132 | #define ACLK_MSCL_0 3 | ||
| 133 | #define ACLK_MSCL_1 4 | ||
| 134 | #define ACLK_JPEG 5 | ||
| 135 | #define ACLK_G2D 6 | ||
| 136 | #define ACLK_LH_ASYNC_SI_MSCL_0 7 | ||
| 137 | #define ACLK_LH_ASYNC_SI_MSCL_1 8 | ||
| 138 | #define ACLK_AXI2ACEL_BRIDGE 9 | ||
| 139 | #define ACLK_XIU_MSCLX_0 10 | ||
| 140 | #define ACLK_XIU_MSCLX_1 11 | ||
| 141 | #define ACLK_QE_MSCL_0 12 | ||
| 142 | #define ACLK_QE_MSCL_1 13 | ||
| 143 | #define ACLK_QE_JPEG 14 | ||
| 144 | #define ACLK_QE_G2D 15 | ||
| 145 | #define ACLK_PPMU_MSCL_0 16 | ||
| 146 | #define ACLK_PPMU_MSCL_1 17 | ||
| 147 | #define ACLK_MSCLNP_133 18 | ||
| 148 | #define ACLK_AHB2APB_MSCL0P 19 | ||
| 149 | #define ACLK_AHB2APB_MSCL1P 20 | ||
| 150 | |||
| 151 | #define PCLK_MSCL_0 21 | ||
| 152 | #define PCLK_MSCL_1 22 | ||
| 153 | #define PCLK_JPEG 23 | ||
| 154 | #define PCLK_G2D 24 | ||
| 155 | #define PCLK_QE_MSCL_0 25 | ||
| 156 | #define PCLK_QE_MSCL_1 26 | ||
| 157 | #define PCLK_QE_JPEG 27 | ||
| 158 | #define PCLK_QE_G2D 28 | ||
| 159 | #define PCLK_PPMU_MSCL_0 29 | ||
| 160 | #define PCLK_PPMU_MSCL_1 30 | ||
| 161 | #define PCLK_AXI2ACEL_BRIDGE 31 | ||
| 162 | #define PCLK_PMU_MSCL 32 | ||
| 163 | #define MSCL_NR_CLK 33 | ||
| 164 | |||
| 165 | /* AUD */ | ||
| 166 | #define SCLK_I2S 1 | ||
| 167 | #define SCLK_PCM 2 | ||
| 168 | #define PCLK_I2S 3 | ||
| 169 | #define PCLK_PCM 4 | ||
| 170 | #define ACLK_ADMA 5 | ||
| 171 | #define AUD_NR_CLK 6 | ||
| 92 | #endif /* _DT_BINDINGS_CLOCK_EXYNOS7_H */ | 172 | #endif /* _DT_BINDINGS_CLOCK_EXYNOS7_H */ |
diff --git a/include/dt-bindings/clock/qcom,gcc-ipq806x.h b/include/dt-bindings/clock/qcom,gcc-ipq806x.h index b857cadb0bd4..04fb29ae30e6 100644 --- a/include/dt-bindings/clock/qcom,gcc-ipq806x.h +++ b/include/dt-bindings/clock/qcom,gcc-ipq806x.h | |||
| @@ -238,7 +238,6 @@ | |||
| 238 | #define PLL0_VOTE 221 | 238 | #define PLL0_VOTE 221 |
| 239 | #define PLL3 222 | 239 | #define PLL3 222 |
| 240 | #define PLL3_VOTE 223 | 240 | #define PLL3_VOTE 223 |
| 241 | #define PLL4 224 | ||
| 242 | #define PLL4_VOTE 225 | 241 | #define PLL4_VOTE 225 |
| 243 | #define PLL8 226 | 242 | #define PLL8 226 |
| 244 | #define PLL8_VOTE 227 | 243 | #define PLL8_VOTE 227 |
diff --git a/include/dt-bindings/clock/qcom,lcc-ipq806x.h b/include/dt-bindings/clock/qcom,lcc-ipq806x.h new file mode 100644 index 000000000000..4e944b85c56d --- /dev/null +++ b/include/dt-bindings/clock/qcom,lcc-ipq806x.h | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (c) 2014, The Linux Foundation. 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 | */ | ||
| 13 | |||
| 14 | #ifndef _DT_BINDINGS_CLK_LCC_IPQ806X_H | ||
| 15 | #define _DT_BINDINGS_CLK_LCC_IPQ806X_H | ||
| 16 | |||
| 17 | #define PLL4 0 | ||
| 18 | #define MI2S_OSR_SRC 1 | ||
| 19 | #define MI2S_OSR_CLK 2 | ||
| 20 | #define MI2S_DIV_CLK 3 | ||
| 21 | #define MI2S_BIT_DIV_CLK 4 | ||
| 22 | #define MI2S_BIT_CLK 5 | ||
| 23 | #define PCM_SRC 6 | ||
| 24 | #define PCM_CLK_OUT 7 | ||
| 25 | #define PCM_CLK 8 | ||
| 26 | #define SPDIF_SRC 9 | ||
| 27 | #define SPDIF_CLK 10 | ||
| 28 | #define AHBIX_CLK 11 | ||
| 29 | |||
| 30 | #endif | ||
diff --git a/include/dt-bindings/clock/qcom,lcc-msm8960.h b/include/dt-bindings/clock/qcom,lcc-msm8960.h new file mode 100644 index 000000000000..4fb2aa64d9fe --- /dev/null +++ b/include/dt-bindings/clock/qcom,lcc-msm8960.h | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (c) 2014, The Linux Foundation. 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 | */ | ||
| 13 | |||
| 14 | #ifndef _DT_BINDINGS_CLK_LCC_MSM8960_H | ||
| 15 | #define _DT_BINDINGS_CLK_LCC_MSM8960_H | ||
| 16 | |||
| 17 | #define PLL4 0 | ||
| 18 | #define MI2S_OSR_SRC 1 | ||
| 19 | #define MI2S_OSR_CLK 2 | ||
| 20 | #define MI2S_DIV_CLK 3 | ||
| 21 | #define MI2S_BIT_DIV_CLK 4 | ||
| 22 | #define MI2S_BIT_CLK 5 | ||
| 23 | #define PCM_SRC 6 | ||
| 24 | #define PCM_CLK_OUT 7 | ||
| 25 | #define PCM_CLK 8 | ||
| 26 | #define SLIMBUS_SRC 9 | ||
| 27 | #define AUDIO_SLIMBUS_CLK 10 | ||
| 28 | #define SPS_SLIMBUS_CLK 11 | ||
| 29 | #define CODEC_I2S_MIC_OSR_SRC 12 | ||
| 30 | #define CODEC_I2S_MIC_OSR_CLK 13 | ||
| 31 | #define CODEC_I2S_MIC_DIV_CLK 14 | ||
| 32 | #define CODEC_I2S_MIC_BIT_DIV_CLK 15 | ||
| 33 | #define CODEC_I2S_MIC_BIT_CLK 16 | ||
| 34 | #define SPARE_I2S_MIC_OSR_SRC 17 | ||
| 35 | #define SPARE_I2S_MIC_OSR_CLK 18 | ||
| 36 | #define SPARE_I2S_MIC_DIV_CLK 19 | ||
| 37 | #define SPARE_I2S_MIC_BIT_DIV_CLK 20 | ||
| 38 | #define SPARE_I2S_MIC_BIT_CLK 21 | ||
| 39 | #define CODEC_I2S_SPKR_OSR_SRC 22 | ||
| 40 | #define CODEC_I2S_SPKR_OSR_CLK 23 | ||
| 41 | #define CODEC_I2S_SPKR_DIV_CLK 24 | ||
| 42 | #define CODEC_I2S_SPKR_BIT_DIV_CLK 25 | ||
| 43 | #define CODEC_I2S_SPKR_BIT_CLK 26 | ||
| 44 | #define SPARE_I2S_SPKR_OSR_SRC 27 | ||
| 45 | #define SPARE_I2S_SPKR_OSR_CLK 28 | ||
| 46 | #define SPARE_I2S_SPKR_DIV_CLK 29 | ||
| 47 | #define SPARE_I2S_SPKR_BIT_DIV_CLK 30 | ||
| 48 | #define SPARE_I2S_SPKR_BIT_CLK 31 | ||
| 49 | |||
| 50 | #endif | ||
diff --git a/include/dt-bindings/clock/tegra124-car-common.h b/include/dt-bindings/clock/tegra124-car-common.h new file mode 100644 index 000000000000..ae2eb17a1658 --- /dev/null +++ b/include/dt-bindings/clock/tegra124-car-common.h | |||
| @@ -0,0 +1,345 @@ | |||
| 1 | /* | ||
| 2 | * This header provides constants for binding nvidia,tegra124-car or | ||
| 3 | * nvidia,tegra132-car. | ||
| 4 | * | ||
| 5 | * The first 192 clocks are numbered to match the bits in the CAR's CLK_OUT_ENB | ||
| 6 | * registers. These IDs often match those in the CAR's RST_DEVICES registers, | ||
| 7 | * but not in all cases. Some bits in CLK_OUT_ENB affect multiple clocks. In | ||
| 8 | * this case, those clocks are assigned IDs above 185 in order to highlight | ||
| 9 | * this issue. Implementations that interpret these clock IDs as bit values | ||
| 10 | * within the CLK_OUT_ENB or RST_DEVICES registers should be careful to | ||
| 11 | * explicitly handle these special cases. | ||
| 12 | * | ||
| 13 | * The balance of the clocks controlled by the CAR are assigned IDs of 185 and | ||
| 14 | * above. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #ifndef _DT_BINDINGS_CLOCK_TEGRA124_CAR_COMMON_H | ||
| 18 | #define _DT_BINDINGS_CLOCK_TEGRA124_CAR_COMMON_H | ||
| 19 | |||
| 20 | /* 0 */ | ||
| 21 | /* 1 */ | ||
| 22 | /* 2 */ | ||
| 23 | #define TEGRA124_CLK_ISPB 3 | ||
| 24 | #define TEGRA124_CLK_RTC 4 | ||
| 25 | #define TEGRA124_CLK_TIMER 5 | ||
| 26 | #define TEGRA124_CLK_UARTA 6 | ||
| 27 | /* 7 (register bit affects uartb and vfir) */ | ||
| 28 | /* 8 */ | ||
| 29 | #define TEGRA124_CLK_SDMMC2 9 | ||
| 30 | /* 10 (register bit affects spdif_in and spdif_out) */ | ||
| 31 | #define TEGRA124_CLK_I2S1 11 | ||
| 32 | #define TEGRA124_CLK_I2C1 12 | ||
| 33 | /* 13 */ | ||
| 34 | #define TEGRA124_CLK_SDMMC1 14 | ||
| 35 | #define TEGRA124_CLK_SDMMC4 15 | ||
| 36 | /* 16 */ | ||
| 37 | #define TEGRA124_CLK_PWM 17 | ||
| 38 | #define TEGRA124_CLK_I2S2 18 | ||
| 39 | /* 20 (register bit affects vi and vi_sensor) */ | ||
| 40 | /* 21 */ | ||
| 41 | #define TEGRA124_CLK_USBD 22 | ||
| 42 | #define TEGRA124_CLK_ISP 23 | ||
| 43 | /* 26 */ | ||
| 44 | /* 25 */ | ||
| 45 | #define TEGRA124_CLK_DISP2 26 | ||
| 46 | #define TEGRA124_CLK_DISP1 27 | ||
| 47 | #define TEGRA124_CLK_HOST1X 28 | ||
| 48 | #define TEGRA124_CLK_VCP 29 | ||
| 49 | #define TEGRA124_CLK_I2S0 30 | ||
| 50 | /* 31 */ | ||
| 51 | |||
| 52 | #define TEGRA124_CLK_MC 32 | ||
| 53 | /* 33 */ | ||
| 54 | #define TEGRA124_CLK_APBDMA 34 | ||
| 55 | /* 35 */ | ||
| 56 | #define TEGRA124_CLK_KBC 36 | ||
| 57 | /* 37 */ | ||
| 58 | /* 38 */ | ||
| 59 | /* 39 (register bit affects fuse and fuse_burn) */ | ||
| 60 | #define TEGRA124_CLK_KFUSE 40 | ||
| 61 | #define TEGRA124_CLK_SBC1 41 | ||
| 62 | #define TEGRA124_CLK_NOR 42 | ||
| 63 | /* 43 */ | ||
| 64 | #define TEGRA124_CLK_SBC2 44 | ||
| 65 | /* 45 */ | ||
| 66 | #define TEGRA124_CLK_SBC3 46 | ||
| 67 | #define TEGRA124_CLK_I2C5 47 | ||
| 68 | #define TEGRA124_CLK_DSIA 48 | ||
| 69 | /* 49 */ | ||
| 70 | #define TEGRA124_CLK_MIPI 50 | ||
| 71 | #define TEGRA124_CLK_HDMI 51 | ||
| 72 | #define TEGRA124_CLK_CSI 52 | ||
| 73 | /* 53 */ | ||
| 74 | #define TEGRA124_CLK_I2C2 54 | ||
| 75 | #define TEGRA124_CLK_UARTC 55 | ||
| 76 | #define TEGRA124_CLK_MIPI_CAL 56 | ||
| 77 | #define TEGRA124_CLK_EMC 57 | ||
| 78 | #define TEGRA124_CLK_USB2 58 | ||
| 79 | #define TEGRA124_CLK_USB3 59 | ||
| 80 | /* 60 */ | ||
| 81 | #define TEGRA124_CLK_VDE 61 | ||
| 82 | #define TEGRA124_CLK_BSEA 62 | ||
| 83 | #define TEGRA124_CLK_BSEV 63 | ||
| 84 | |||
| 85 | /* 64 */ | ||
| 86 | #define TEGRA124_CLK_UARTD 65 | ||
| 87 | /* 66 */ | ||
| 88 | #define TEGRA124_CLK_I2C3 67 | ||
| 89 | #define TEGRA124_CLK_SBC4 68 | ||
| 90 | #define TEGRA124_CLK_SDMMC3 69 | ||
| 91 | #define TEGRA124_CLK_PCIE 70 | ||
| 92 | #define TEGRA124_CLK_OWR 71 | ||
| 93 | #define TEGRA124_CLK_AFI 72 | ||
| 94 | #define TEGRA124_CLK_CSITE 73 | ||
| 95 | /* 74 */ | ||
| 96 | /* 75 */ | ||
| 97 | #define TEGRA124_CLK_LA 76 | ||
| 98 | #define TEGRA124_CLK_TRACE 77 | ||
| 99 | #define TEGRA124_CLK_SOC_THERM 78 | ||
| 100 | #define TEGRA124_CLK_DTV 79 | ||
| 101 | /* 80 */ | ||
| 102 | #define TEGRA124_CLK_I2CSLOW 81 | ||
| 103 | #define TEGRA124_CLK_DSIB 82 | ||
| 104 | #define TEGRA124_CLK_TSEC 83 | ||
| 105 | /* 84 */ | ||
| 106 | /* 85 */ | ||
| 107 | /* 86 */ | ||
| 108 | /* 87 */ | ||
| 109 | /* 88 */ | ||
| 110 | #define TEGRA124_CLK_XUSB_HOST 89 | ||
| 111 | /* 90 */ | ||
| 112 | #define TEGRA124_CLK_MSENC 91 | ||
| 113 | #define TEGRA124_CLK_CSUS 92 | ||
| 114 | /* 93 */ | ||
| 115 | /* 94 */ | ||
| 116 | /* 95 (bit affects xusb_dev and xusb_dev_src) */ | ||
| 117 | |||
| 118 | /* 96 */ | ||
| 119 | /* 97 */ | ||
| 120 | /* 98 */ | ||
| 121 | #define TEGRA124_CLK_MSELECT 99 | ||
| 122 | #define TEGRA124_CLK_TSENSOR 100 | ||
| 123 | #define TEGRA124_CLK_I2S3 101 | ||
| 124 | #define TEGRA124_CLK_I2S4 102 | ||
| 125 | #define TEGRA124_CLK_I2C4 103 | ||
| 126 | #define TEGRA124_CLK_SBC5 104 | ||
| 127 | #define TEGRA124_CLK_SBC6 105 | ||
| 128 | #define TEGRA124_CLK_D_AUDIO 106 | ||
| 129 | #define TEGRA124_CLK_APBIF 107 | ||
| 130 | #define TEGRA124_CLK_DAM0 108 | ||
| 131 | #define TEGRA124_CLK_DAM1 109 | ||
| 132 | #define TEGRA124_CLK_DAM2 110 | ||
| 133 | #define TEGRA124_CLK_HDA2CODEC_2X 111 | ||
| 134 | /* 112 */ | ||
| 135 | #define TEGRA124_CLK_AUDIO0_2X 113 | ||
| 136 | #define TEGRA124_CLK_AUDIO1_2X 114 | ||
| 137 | #define TEGRA124_CLK_AUDIO2_2X 115 | ||
| 138 | #define TEGRA124_CLK_AUDIO3_2X 116 | ||
| 139 | #define TEGRA124_CLK_AUDIO4_2X 117 | ||
| 140 | #define TEGRA124_CLK_SPDIF_2X 118 | ||
| 141 | #define TEGRA124_CLK_ACTMON 119 | ||
| 142 | #define TEGRA124_CLK_EXTERN1 120 | ||
| 143 | #define TEGRA124_CLK_EXTERN2 121 | ||
| 144 | #define TEGRA124_CLK_EXTERN3 122 | ||
| 145 | #define TEGRA124_CLK_SATA_OOB 123 | ||
| 146 | #define TEGRA124_CLK_SATA 124 | ||
| 147 | #define TEGRA124_CLK_HDA 125 | ||
| 148 | /* 126 */ | ||
| 149 | #define TEGRA124_CLK_SE 127 | ||
| 150 | |||
| 151 | #define TEGRA124_CLK_HDA2HDMI 128 | ||
| 152 | #define TEGRA124_CLK_SATA_COLD 129 | ||
| 153 | /* 130 */ | ||
| 154 | /* 131 */ | ||
| 155 | /* 132 */ | ||
| 156 | /* 133 */ | ||
| 157 | /* 134 */ | ||
| 158 | /* 135 */ | ||
| 159 | /* 136 */ | ||
| 160 | /* 137 */ | ||
| 161 | /* 138 */ | ||
| 162 | /* 139 */ | ||
| 163 | /* 140 */ | ||
| 164 | /* 141 */ | ||
| 165 | /* 142 */ | ||
| 166 | /* 143 (bit affects xusb_falcon_src, xusb_fs_src, */ | ||
| 167 | /* xusb_host_src and xusb_ss_src) */ | ||
| 168 | #define TEGRA124_CLK_CILAB 144 | ||
| 169 | #define TEGRA124_CLK_CILCD 145 | ||
| 170 | #define TEGRA124_CLK_CILE 146 | ||
| 171 | #define TEGRA124_CLK_DSIALP 147 | ||
| 172 | #define TEGRA124_CLK_DSIBLP 148 | ||
| 173 | #define TEGRA124_CLK_ENTROPY 149 | ||
| 174 | #define TEGRA124_CLK_DDS 150 | ||
| 175 | /* 151 */ | ||
| 176 | #define TEGRA124_CLK_DP2 152 | ||
| 177 | #define TEGRA124_CLK_AMX 153 | ||
| 178 | #define TEGRA124_CLK_ADX 154 | ||
| 179 | /* 155 (bit affects dfll_ref and dfll_soc) */ | ||
| 180 | #define TEGRA124_CLK_XUSB_SS 156 | ||
| 181 | /* 157 */ | ||
| 182 | /* 158 */ | ||
| 183 | /* 159 */ | ||
| 184 | |||
| 185 | /* 160 */ | ||
| 186 | /* 161 */ | ||
| 187 | /* 162 */ | ||
| 188 | /* 163 */ | ||
| 189 | /* 164 */ | ||
| 190 | /* 165 */ | ||
| 191 | #define TEGRA124_CLK_I2C6 166 | ||
| 192 | /* 167 */ | ||
| 193 | /* 168 */ | ||
| 194 | /* 169 */ | ||
| 195 | /* 170 */ | ||
| 196 | #define TEGRA124_CLK_VIM2_CLK 171 | ||
| 197 | /* 172 */ | ||
| 198 | /* 173 */ | ||
| 199 | /* 174 */ | ||
| 200 | /* 175 */ | ||
| 201 | #define TEGRA124_CLK_HDMI_AUDIO 176 | ||
| 202 | #define TEGRA124_CLK_CLK72MHZ 177 | ||
| 203 | #define TEGRA124_CLK_VIC03 178 | ||
| 204 | /* 179 */ | ||
| 205 | #define TEGRA124_CLK_ADX1 180 | ||
| 206 | #define TEGRA124_CLK_DPAUX 181 | ||
| 207 | #define TEGRA124_CLK_SOR0 182 | ||
| 208 | /* 183 */ | ||
| 209 | #define TEGRA124_CLK_GPU 184 | ||
| 210 | #define TEGRA124_CLK_AMX1 185 | ||
| 211 | /* 186 */ | ||
| 212 | /* 187 */ | ||
| 213 | /* 188 */ | ||
| 214 | /* 189 */ | ||
| 215 | /* 190 */ | ||
| 216 | /* 191 */ | ||
| 217 | #define TEGRA124_CLK_UARTB 192 | ||
| 218 | #define TEGRA124_CLK_VFIR 193 | ||
| 219 | #define TEGRA124_CLK_SPDIF_IN 194 | ||
| 220 | #define TEGRA124_CLK_SPDIF_OUT 195 | ||
| 221 | #define TEGRA124_CLK_VI 196 | ||
| 222 | #define TEGRA124_CLK_VI_SENSOR 197 | ||
| 223 | #define TEGRA124_CLK_FUSE 198 | ||
| 224 | #define TEGRA124_CLK_FUSE_BURN 199 | ||
| 225 | #define TEGRA124_CLK_CLK_32K 200 | ||
| 226 | #define TEGRA124_CLK_CLK_M 201 | ||
| 227 | #define TEGRA124_CLK_CLK_M_DIV2 202 | ||
| 228 | #define TEGRA124_CLK_CLK_M_DIV4 203 | ||
| 229 | #define TEGRA124_CLK_PLL_REF 204 | ||
| 230 | #define TEGRA124_CLK_PLL_C 205 | ||
| 231 | #define TEGRA124_CLK_PLL_C_OUT1 206 | ||
| 232 | #define TEGRA124_CLK_PLL_C2 207 | ||
| 233 | #define TEGRA124_CLK_PLL_C3 208 | ||
| 234 | #define TEGRA124_CLK_PLL_M 209 | ||
| 235 | #define TEGRA124_CLK_PLL_M_OUT1 210 | ||
| 236 | #define TEGRA124_CLK_PLL_P 211 | ||
| 237 | #define TEGRA124_CLK_PLL_P_OUT1 212 | ||
| 238 | #define TEGRA124_CLK_PLL_P_OUT2 213 | ||
| 239 | #define TEGRA124_CLK_PLL_P_OUT3 214 | ||
| 240 | #define TEGRA124_CLK_PLL_P_OUT4 215 | ||
| 241 | #define TEGRA124_CLK_PLL_A 216 | ||
| 242 | #define TEGRA124_CLK_PLL_A_OUT0 217 | ||
| 243 | #define TEGRA124_CLK_PLL_D 218 | ||
| 244 | #define TEGRA124_CLK_PLL_D_OUT0 219 | ||
| 245 | #define TEGRA124_CLK_PLL_D2 220 | ||
| 246 | #define TEGRA124_CLK_PLL_D2_OUT0 221 | ||
| 247 | #define TEGRA124_CLK_PLL_U 222 | ||
| 248 | #define TEGRA124_CLK_PLL_U_480M 223 | ||
| 249 | |||
| 250 | #define TEGRA124_CLK_PLL_U_60M 224 | ||
| 251 | #define TEGRA124_CLK_PLL_U_48M 225 | ||
| 252 | #define TEGRA124_CLK_PLL_U_12M 226 | ||
| 253 | /* 227 */ | ||
| 254 | /* 228 */ | ||
| 255 | #define TEGRA124_CLK_PLL_RE_VCO 229 | ||
| 256 | #define TEGRA124_CLK_PLL_RE_OUT 230 | ||
| 257 | #define TEGRA124_CLK_PLL_E 231 | ||
| 258 | #define TEGRA124_CLK_SPDIF_IN_SYNC 232 | ||
| 259 | #define TEGRA124_CLK_I2S0_SYNC 233 | ||
| 260 | #define TEGRA124_CLK_I2S1_SYNC 234 | ||
| 261 | #define TEGRA124_CLK_I2S2_SYNC 235 | ||
| 262 | #define TEGRA124_CLK_I2S3_SYNC 236 | ||
| 263 | #define TEGRA124_CLK_I2S4_SYNC 237 | ||
| 264 | #define TEGRA124_CLK_VIMCLK_SYNC 238 | ||
| 265 | #define TEGRA124_CLK_AUDIO0 239 | ||
| 266 | #define TEGRA124_CLK_AUDIO1 240 | ||
| 267 | #define TEGRA124_CLK_AUDIO2 241 | ||
| 268 | #define TEGRA124_CLK_AUDIO3 242 | ||
| 269 | #define TEGRA124_CLK_AUDIO4 243 | ||
| 270 | #define TEGRA124_CLK_SPDIF 244 | ||
| 271 | #define TEGRA124_CLK_CLK_OUT_1 245 | ||
| 272 | #define TEGRA124_CLK_CLK_OUT_2 246 | ||
| 273 | #define TEGRA124_CLK_CLK_OUT_3 247 | ||
| 274 | #define TEGRA124_CLK_BLINK 248 | ||
| 275 | /* 249 */ | ||
| 276 | /* 250 */ | ||
| 277 | /* 251 */ | ||
| 278 | #define TEGRA124_CLK_XUSB_HOST_SRC 252 | ||
| 279 | #define TEGRA124_CLK_XUSB_FALCON_SRC 253 | ||
| 280 | #define TEGRA124_CLK_XUSB_FS_SRC 254 | ||
| 281 | #define TEGRA124_CLK_XUSB_SS_SRC 255 | ||
| 282 | |||
| 283 | #define TEGRA124_CLK_XUSB_DEV_SRC 256 | ||
| 284 | #define TEGRA124_CLK_XUSB_DEV 257 | ||
| 285 | #define TEGRA124_CLK_XUSB_HS_SRC 258 | ||
| 286 | #define TEGRA124_CLK_SCLK 259 | ||
| 287 | #define TEGRA124_CLK_HCLK 260 | ||
| 288 | #define TEGRA124_CLK_PCLK 261 | ||
| 289 | /* 262 */ | ||
| 290 | /* 263 */ | ||
| 291 | #define TEGRA124_CLK_DFLL_REF 264 | ||
| 292 | #define TEGRA124_CLK_DFLL_SOC 265 | ||
| 293 | #define TEGRA124_CLK_VI_SENSOR2 266 | ||
| 294 | #define TEGRA124_CLK_PLL_P_OUT5 267 | ||
| 295 | #define TEGRA124_CLK_CML0 268 | ||
| 296 | #define TEGRA124_CLK_CML1 269 | ||
| 297 | #define TEGRA124_CLK_PLL_C4 270 | ||
| 298 | #define TEGRA124_CLK_PLL_DP 271 | ||
| 299 | #define TEGRA124_CLK_PLL_E_MUX 272 | ||
| 300 | #define TEGRA124_CLK_PLLD_DSI 273 | ||
| 301 | /* 274 */ | ||
| 302 | /* 275 */ | ||
| 303 | /* 276 */ | ||
| 304 | /* 277 */ | ||
| 305 | /* 278 */ | ||
| 306 | /* 279 */ | ||
| 307 | /* 280 */ | ||
| 308 | /* 281 */ | ||
| 309 | /* 282 */ | ||
| 310 | /* 283 */ | ||
| 311 | /* 284 */ | ||
| 312 | /* 285 */ | ||
| 313 | /* 286 */ | ||
| 314 | /* 287 */ | ||
| 315 | |||
| 316 | /* 288 */ | ||
| 317 | /* 289 */ | ||
| 318 | /* 290 */ | ||
| 319 | /* 291 */ | ||
| 320 | /* 292 */ | ||
| 321 | /* 293 */ | ||
| 322 | /* 294 */ | ||
| 323 | /* 295 */ | ||
| 324 | /* 296 */ | ||
| 325 | /* 297 */ | ||
| 326 | /* 298 */ | ||
| 327 | /* 299 */ | ||
| 328 | #define TEGRA124_CLK_AUDIO0_MUX 300 | ||
| 329 | #define TEGRA124_CLK_AUDIO1_MUX 301 | ||
| 330 | #define TEGRA124_CLK_AUDIO2_MUX 302 | ||
| 331 | #define TEGRA124_CLK_AUDIO3_MUX 303 | ||
| 332 | #define TEGRA124_CLK_AUDIO4_MUX 304 | ||
| 333 | #define TEGRA124_CLK_SPDIF_MUX 305 | ||
| 334 | #define TEGRA124_CLK_CLK_OUT_1_MUX 306 | ||
| 335 | #define TEGRA124_CLK_CLK_OUT_2_MUX 307 | ||
| 336 | #define TEGRA124_CLK_CLK_OUT_3_MUX 308 | ||
| 337 | /* 309 */ | ||
| 338 | /* 310 */ | ||
| 339 | #define TEGRA124_CLK_SOR0_LVDS 311 | ||
| 340 | #define TEGRA124_CLK_XUSB_SS_DIV2 312 | ||
| 341 | |||
| 342 | #define TEGRA124_CLK_PLL_M_UD 313 | ||
| 343 | #define TEGRA124_CLK_PLL_C_UD 314 | ||
| 344 | |||
| 345 | #endif /* _DT_BINDINGS_CLOCK_TEGRA124_CAR_COMMON_H */ | ||
diff --git a/include/dt-bindings/clock/tegra124-car.h b/include/dt-bindings/clock/tegra124-car.h index af9bc9a3ddbc..2860737f0443 100644 --- a/include/dt-bindings/clock/tegra124-car.h +++ b/include/dt-bindings/clock/tegra124-car.h | |||
| @@ -1,346 +1,19 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * This header provides constants for binding nvidia,tegra124-car. | 2 | * This header provides Tegra124-specific constants for binding |
| 3 | * | 3 | * nvidia,tegra124-car. |
| 4 | * The first 192 clocks are numbered to match the bits in the CAR's CLK_OUT_ENB | ||
| 5 | * registers. These IDs often match those in the CAR's RST_DEVICES registers, | ||
| 6 | * but not in all cases. Some bits in CLK_OUT_ENB affect multiple clocks. In | ||
| 7 | * this case, those clocks are assigned IDs above 185 in order to highlight | ||
| 8 | * this issue. Implementations that interpret these clock IDs as bit values | ||
| 9 | * within the CLK_OUT_ENB or RST_DEVICES registers should be careful to | ||
| 10 | * explicitly handle these special cases. | ||
| 11 | * | ||
| 12 | * The balance of the clocks controlled by the CAR are assigned IDs of 185 and | ||
| 13 | * above. | ||
| 14 | */ | 4 | */ |
| 15 | 5 | ||
| 6 | #include <dt-bindings/clock/tegra124-car-common.h> | ||
| 7 | |||
| 16 | #ifndef _DT_BINDINGS_CLOCK_TEGRA124_CAR_H | 8 | #ifndef _DT_BINDINGS_CLOCK_TEGRA124_CAR_H |
| 17 | #define _DT_BINDINGS_CLOCK_TEGRA124_CAR_H | 9 | #define _DT_BINDINGS_CLOCK_TEGRA124_CAR_H |
| 18 | 10 | ||
| 19 | /* 0 */ | 11 | #define TEGRA124_CLK_PLL_X 227 |
| 20 | /* 1 */ | 12 | #define TEGRA124_CLK_PLL_X_OUT0 228 |
| 21 | /* 2 */ | ||
| 22 | #define TEGRA124_CLK_ISPB 3 | ||
| 23 | #define TEGRA124_CLK_RTC 4 | ||
| 24 | #define TEGRA124_CLK_TIMER 5 | ||
| 25 | #define TEGRA124_CLK_UARTA 6 | ||
| 26 | /* 7 (register bit affects uartb and vfir) */ | ||
| 27 | /* 8 */ | ||
| 28 | #define TEGRA124_CLK_SDMMC2 9 | ||
| 29 | /* 10 (register bit affects spdif_in and spdif_out) */ | ||
| 30 | #define TEGRA124_CLK_I2S1 11 | ||
| 31 | #define TEGRA124_CLK_I2C1 12 | ||
| 32 | /* 13 */ | ||
| 33 | #define TEGRA124_CLK_SDMMC1 14 | ||
| 34 | #define TEGRA124_CLK_SDMMC4 15 | ||
| 35 | /* 16 */ | ||
| 36 | #define TEGRA124_CLK_PWM 17 | ||
| 37 | #define TEGRA124_CLK_I2S2 18 | ||
| 38 | /* 20 (register bit affects vi and vi_sensor) */ | ||
| 39 | /* 21 */ | ||
| 40 | #define TEGRA124_CLK_USBD 22 | ||
| 41 | #define TEGRA124_CLK_ISP 23 | ||
| 42 | /* 26 */ | ||
| 43 | /* 25 */ | ||
| 44 | #define TEGRA124_CLK_DISP2 26 | ||
| 45 | #define TEGRA124_CLK_DISP1 27 | ||
| 46 | #define TEGRA124_CLK_HOST1X 28 | ||
| 47 | #define TEGRA124_CLK_VCP 29 | ||
| 48 | #define TEGRA124_CLK_I2S0 30 | ||
| 49 | /* 31 */ | ||
| 50 | |||
| 51 | #define TEGRA124_CLK_MC 32 | ||
| 52 | /* 33 */ | ||
| 53 | #define TEGRA124_CLK_APBDMA 34 | ||
| 54 | /* 35 */ | ||
| 55 | #define TEGRA124_CLK_KBC 36 | ||
| 56 | /* 37 */ | ||
| 57 | /* 38 */ | ||
| 58 | /* 39 (register bit affects fuse and fuse_burn) */ | ||
| 59 | #define TEGRA124_CLK_KFUSE 40 | ||
| 60 | #define TEGRA124_CLK_SBC1 41 | ||
| 61 | #define TEGRA124_CLK_NOR 42 | ||
| 62 | /* 43 */ | ||
| 63 | #define TEGRA124_CLK_SBC2 44 | ||
| 64 | /* 45 */ | ||
| 65 | #define TEGRA124_CLK_SBC3 46 | ||
| 66 | #define TEGRA124_CLK_I2C5 47 | ||
| 67 | #define TEGRA124_CLK_DSIA 48 | ||
| 68 | /* 49 */ | ||
| 69 | #define TEGRA124_CLK_MIPI 50 | ||
| 70 | #define TEGRA124_CLK_HDMI 51 | ||
| 71 | #define TEGRA124_CLK_CSI 52 | ||
| 72 | /* 53 */ | ||
| 73 | #define TEGRA124_CLK_I2C2 54 | ||
| 74 | #define TEGRA124_CLK_UARTC 55 | ||
| 75 | #define TEGRA124_CLK_MIPI_CAL 56 | ||
| 76 | #define TEGRA124_CLK_EMC 57 | ||
| 77 | #define TEGRA124_CLK_USB2 58 | ||
| 78 | #define TEGRA124_CLK_USB3 59 | ||
| 79 | /* 60 */ | ||
| 80 | #define TEGRA124_CLK_VDE 61 | ||
| 81 | #define TEGRA124_CLK_BSEA 62 | ||
| 82 | #define TEGRA124_CLK_BSEV 63 | ||
| 83 | |||
| 84 | /* 64 */ | ||
| 85 | #define TEGRA124_CLK_UARTD 65 | ||
| 86 | /* 66 */ | ||
| 87 | #define TEGRA124_CLK_I2C3 67 | ||
| 88 | #define TEGRA124_CLK_SBC4 68 | ||
| 89 | #define TEGRA124_CLK_SDMMC3 69 | ||
| 90 | #define TEGRA124_CLK_PCIE 70 | ||
| 91 | #define TEGRA124_CLK_OWR 71 | ||
| 92 | #define TEGRA124_CLK_AFI 72 | ||
| 93 | #define TEGRA124_CLK_CSITE 73 | ||
| 94 | /* 74 */ | ||
| 95 | /* 75 */ | ||
| 96 | #define TEGRA124_CLK_LA 76 | ||
| 97 | #define TEGRA124_CLK_TRACE 77 | ||
| 98 | #define TEGRA124_CLK_SOC_THERM 78 | ||
| 99 | #define TEGRA124_CLK_DTV 79 | ||
| 100 | /* 80 */ | ||
| 101 | #define TEGRA124_CLK_I2CSLOW 81 | ||
| 102 | #define TEGRA124_CLK_DSIB 82 | ||
| 103 | #define TEGRA124_CLK_TSEC 83 | ||
| 104 | /* 84 */ | ||
| 105 | /* 85 */ | ||
| 106 | /* 86 */ | ||
| 107 | /* 87 */ | ||
| 108 | /* 88 */ | ||
| 109 | #define TEGRA124_CLK_XUSB_HOST 89 | ||
| 110 | /* 90 */ | ||
| 111 | #define TEGRA124_CLK_MSENC 91 | ||
| 112 | #define TEGRA124_CLK_CSUS 92 | ||
| 113 | /* 93 */ | ||
| 114 | /* 94 */ | ||
| 115 | /* 95 (bit affects xusb_dev and xusb_dev_src) */ | ||
| 116 | |||
| 117 | /* 96 */ | ||
| 118 | /* 97 */ | ||
| 119 | /* 98 */ | ||
| 120 | #define TEGRA124_CLK_MSELECT 99 | ||
| 121 | #define TEGRA124_CLK_TSENSOR 100 | ||
| 122 | #define TEGRA124_CLK_I2S3 101 | ||
| 123 | #define TEGRA124_CLK_I2S4 102 | ||
| 124 | #define TEGRA124_CLK_I2C4 103 | ||
| 125 | #define TEGRA124_CLK_SBC5 104 | ||
| 126 | #define TEGRA124_CLK_SBC6 105 | ||
| 127 | #define TEGRA124_CLK_D_AUDIO 106 | ||
| 128 | #define TEGRA124_CLK_APBIF 107 | ||
| 129 | #define TEGRA124_CLK_DAM0 108 | ||
| 130 | #define TEGRA124_CLK_DAM1 109 | ||
| 131 | #define TEGRA124_CLK_DAM2 110 | ||
| 132 | #define TEGRA124_CLK_HDA2CODEC_2X 111 | ||
| 133 | /* 112 */ | ||
| 134 | #define TEGRA124_CLK_AUDIO0_2X 113 | ||
| 135 | #define TEGRA124_CLK_AUDIO1_2X 114 | ||
| 136 | #define TEGRA124_CLK_AUDIO2_2X 115 | ||
| 137 | #define TEGRA124_CLK_AUDIO3_2X 116 | ||
| 138 | #define TEGRA124_CLK_AUDIO4_2X 117 | ||
| 139 | #define TEGRA124_CLK_SPDIF_2X 118 | ||
| 140 | #define TEGRA124_CLK_ACTMON 119 | ||
| 141 | #define TEGRA124_CLK_EXTERN1 120 | ||
| 142 | #define TEGRA124_CLK_EXTERN2 121 | ||
| 143 | #define TEGRA124_CLK_EXTERN3 122 | ||
| 144 | #define TEGRA124_CLK_SATA_OOB 123 | ||
| 145 | #define TEGRA124_CLK_SATA 124 | ||
| 146 | #define TEGRA124_CLK_HDA 125 | ||
| 147 | /* 126 */ | ||
| 148 | #define TEGRA124_CLK_SE 127 | ||
| 149 | |||
| 150 | #define TEGRA124_CLK_HDA2HDMI 128 | ||
| 151 | #define TEGRA124_CLK_SATA_COLD 129 | ||
| 152 | /* 130 */ | ||
| 153 | /* 131 */ | ||
| 154 | /* 132 */ | ||
| 155 | /* 133 */ | ||
| 156 | /* 134 */ | ||
| 157 | /* 135 */ | ||
| 158 | /* 136 */ | ||
| 159 | /* 137 */ | ||
| 160 | /* 138 */ | ||
| 161 | /* 139 */ | ||
| 162 | /* 140 */ | ||
| 163 | /* 141 */ | ||
| 164 | /* 142 */ | ||
| 165 | /* 143 (bit affects xusb_falcon_src, xusb_fs_src, */ | ||
| 166 | /* xusb_host_src and xusb_ss_src) */ | ||
| 167 | #define TEGRA124_CLK_CILAB 144 | ||
| 168 | #define TEGRA124_CLK_CILCD 145 | ||
| 169 | #define TEGRA124_CLK_CILE 146 | ||
| 170 | #define TEGRA124_CLK_DSIALP 147 | ||
| 171 | #define TEGRA124_CLK_DSIBLP 148 | ||
| 172 | #define TEGRA124_CLK_ENTROPY 149 | ||
| 173 | #define TEGRA124_CLK_DDS 150 | ||
| 174 | /* 151 */ | ||
| 175 | #define TEGRA124_CLK_DP2 152 | ||
| 176 | #define TEGRA124_CLK_AMX 153 | ||
| 177 | #define TEGRA124_CLK_ADX 154 | ||
| 178 | /* 155 (bit affects dfll_ref and dfll_soc) */ | ||
| 179 | #define TEGRA124_CLK_XUSB_SS 156 | ||
| 180 | /* 157 */ | ||
| 181 | /* 158 */ | ||
| 182 | /* 159 */ | ||
| 183 | |||
| 184 | /* 160 */ | ||
| 185 | /* 161 */ | ||
| 186 | /* 162 */ | ||
| 187 | /* 163 */ | ||
| 188 | /* 164 */ | ||
| 189 | /* 165 */ | ||
| 190 | #define TEGRA124_CLK_I2C6 166 | ||
| 191 | /* 167 */ | ||
| 192 | /* 168 */ | ||
| 193 | /* 169 */ | ||
| 194 | /* 170 */ | ||
| 195 | #define TEGRA124_CLK_VIM2_CLK 171 | ||
| 196 | /* 172 */ | ||
| 197 | /* 173 */ | ||
| 198 | /* 174 */ | ||
| 199 | /* 175 */ | ||
| 200 | #define TEGRA124_CLK_HDMI_AUDIO 176 | ||
| 201 | #define TEGRA124_CLK_CLK72MHZ 177 | ||
| 202 | #define TEGRA124_CLK_VIC03 178 | ||
| 203 | /* 179 */ | ||
| 204 | #define TEGRA124_CLK_ADX1 180 | ||
| 205 | #define TEGRA124_CLK_DPAUX 181 | ||
| 206 | #define TEGRA124_CLK_SOR0 182 | ||
| 207 | /* 183 */ | ||
| 208 | #define TEGRA124_CLK_GPU 184 | ||
| 209 | #define TEGRA124_CLK_AMX1 185 | ||
| 210 | /* 186 */ | ||
| 211 | /* 187 */ | ||
| 212 | /* 188 */ | ||
| 213 | /* 189 */ | ||
| 214 | /* 190 */ | ||
| 215 | /* 191 */ | ||
| 216 | #define TEGRA124_CLK_UARTB 192 | ||
| 217 | #define TEGRA124_CLK_VFIR 193 | ||
| 218 | #define TEGRA124_CLK_SPDIF_IN 194 | ||
| 219 | #define TEGRA124_CLK_SPDIF_OUT 195 | ||
| 220 | #define TEGRA124_CLK_VI 196 | ||
| 221 | #define TEGRA124_CLK_VI_SENSOR 197 | ||
| 222 | #define TEGRA124_CLK_FUSE 198 | ||
| 223 | #define TEGRA124_CLK_FUSE_BURN 199 | ||
| 224 | #define TEGRA124_CLK_CLK_32K 200 | ||
| 225 | #define TEGRA124_CLK_CLK_M 201 | ||
| 226 | #define TEGRA124_CLK_CLK_M_DIV2 202 | ||
| 227 | #define TEGRA124_CLK_CLK_M_DIV4 203 | ||
| 228 | #define TEGRA124_CLK_PLL_REF 204 | ||
| 229 | #define TEGRA124_CLK_PLL_C 205 | ||
| 230 | #define TEGRA124_CLK_PLL_C_OUT1 206 | ||
| 231 | #define TEGRA124_CLK_PLL_C2 207 | ||
| 232 | #define TEGRA124_CLK_PLL_C3 208 | ||
| 233 | #define TEGRA124_CLK_PLL_M 209 | ||
| 234 | #define TEGRA124_CLK_PLL_M_OUT1 210 | ||
| 235 | #define TEGRA124_CLK_PLL_P 211 | ||
| 236 | #define TEGRA124_CLK_PLL_P_OUT1 212 | ||
| 237 | #define TEGRA124_CLK_PLL_P_OUT2 213 | ||
| 238 | #define TEGRA124_CLK_PLL_P_OUT3 214 | ||
| 239 | #define TEGRA124_CLK_PLL_P_OUT4 215 | ||
| 240 | #define TEGRA124_CLK_PLL_A 216 | ||
| 241 | #define TEGRA124_CLK_PLL_A_OUT0 217 | ||
| 242 | #define TEGRA124_CLK_PLL_D 218 | ||
| 243 | #define TEGRA124_CLK_PLL_D_OUT0 219 | ||
| 244 | #define TEGRA124_CLK_PLL_D2 220 | ||
| 245 | #define TEGRA124_CLK_PLL_D2_OUT0 221 | ||
| 246 | #define TEGRA124_CLK_PLL_U 222 | ||
| 247 | #define TEGRA124_CLK_PLL_U_480M 223 | ||
| 248 | |||
| 249 | #define TEGRA124_CLK_PLL_U_60M 224 | ||
| 250 | #define TEGRA124_CLK_PLL_U_48M 225 | ||
| 251 | #define TEGRA124_CLK_PLL_U_12M 226 | ||
| 252 | #define TEGRA124_CLK_PLL_X 227 | ||
| 253 | #define TEGRA124_CLK_PLL_X_OUT0 228 | ||
| 254 | #define TEGRA124_CLK_PLL_RE_VCO 229 | ||
| 255 | #define TEGRA124_CLK_PLL_RE_OUT 230 | ||
| 256 | #define TEGRA124_CLK_PLL_E 231 | ||
| 257 | #define TEGRA124_CLK_SPDIF_IN_SYNC 232 | ||
| 258 | #define TEGRA124_CLK_I2S0_SYNC 233 | ||
| 259 | #define TEGRA124_CLK_I2S1_SYNC 234 | ||
| 260 | #define TEGRA124_CLK_I2S2_SYNC 235 | ||
| 261 | #define TEGRA124_CLK_I2S3_SYNC 236 | ||
| 262 | #define TEGRA124_CLK_I2S4_SYNC 237 | ||
| 263 | #define TEGRA124_CLK_VIMCLK_SYNC 238 | ||
| 264 | #define TEGRA124_CLK_AUDIO0 239 | ||
| 265 | #define TEGRA124_CLK_AUDIO1 240 | ||
| 266 | #define TEGRA124_CLK_AUDIO2 241 | ||
| 267 | #define TEGRA124_CLK_AUDIO3 242 | ||
| 268 | #define TEGRA124_CLK_AUDIO4 243 | ||
| 269 | #define TEGRA124_CLK_SPDIF 244 | ||
| 270 | #define TEGRA124_CLK_CLK_OUT_1 245 | ||
| 271 | #define TEGRA124_CLK_CLK_OUT_2 246 | ||
| 272 | #define TEGRA124_CLK_CLK_OUT_3 247 | ||
| 273 | #define TEGRA124_CLK_BLINK 248 | ||
| 274 | /* 249 */ | ||
| 275 | /* 250 */ | ||
| 276 | /* 251 */ | ||
| 277 | #define TEGRA124_CLK_XUSB_HOST_SRC 252 | ||
| 278 | #define TEGRA124_CLK_XUSB_FALCON_SRC 253 | ||
| 279 | #define TEGRA124_CLK_XUSB_FS_SRC 254 | ||
| 280 | #define TEGRA124_CLK_XUSB_SS_SRC 255 | ||
| 281 | |||
| 282 | #define TEGRA124_CLK_XUSB_DEV_SRC 256 | ||
| 283 | #define TEGRA124_CLK_XUSB_DEV 257 | ||
| 284 | #define TEGRA124_CLK_XUSB_HS_SRC 258 | ||
| 285 | #define TEGRA124_CLK_SCLK 259 | ||
| 286 | #define TEGRA124_CLK_HCLK 260 | ||
| 287 | #define TEGRA124_CLK_PCLK 261 | ||
| 288 | #define TEGRA124_CLK_CCLK_G 262 | ||
| 289 | #define TEGRA124_CLK_CCLK_LP 263 | ||
| 290 | #define TEGRA124_CLK_DFLL_REF 264 | ||
| 291 | #define TEGRA124_CLK_DFLL_SOC 265 | ||
| 292 | #define TEGRA124_CLK_VI_SENSOR2 266 | ||
| 293 | #define TEGRA124_CLK_PLL_P_OUT5 267 | ||
| 294 | #define TEGRA124_CLK_CML0 268 | ||
| 295 | #define TEGRA124_CLK_CML1 269 | ||
| 296 | #define TEGRA124_CLK_PLL_C4 270 | ||
| 297 | #define TEGRA124_CLK_PLL_DP 271 | ||
| 298 | #define TEGRA124_CLK_PLL_E_MUX 272 | ||
| 299 | /* 273 */ | ||
| 300 | /* 274 */ | ||
| 301 | /* 275 */ | ||
| 302 | /* 276 */ | ||
| 303 | /* 277 */ | ||
| 304 | /* 278 */ | ||
| 305 | /* 279 */ | ||
| 306 | /* 280 */ | ||
| 307 | /* 281 */ | ||
| 308 | /* 282 */ | ||
| 309 | /* 283 */ | ||
| 310 | /* 284 */ | ||
| 311 | /* 285 */ | ||
| 312 | /* 286 */ | ||
| 313 | /* 287 */ | ||
| 314 | |||
| 315 | /* 288 */ | ||
| 316 | /* 289 */ | ||
| 317 | /* 290 */ | ||
| 318 | /* 291 */ | ||
| 319 | /* 292 */ | ||
| 320 | /* 293 */ | ||
| 321 | /* 294 */ | ||
| 322 | /* 295 */ | ||
| 323 | /* 296 */ | ||
| 324 | /* 297 */ | ||
| 325 | /* 298 */ | ||
| 326 | /* 299 */ | ||
| 327 | #define TEGRA124_CLK_AUDIO0_MUX 300 | ||
| 328 | #define TEGRA124_CLK_AUDIO1_MUX 301 | ||
| 329 | #define TEGRA124_CLK_AUDIO2_MUX 302 | ||
| 330 | #define TEGRA124_CLK_AUDIO3_MUX 303 | ||
| 331 | #define TEGRA124_CLK_AUDIO4_MUX 304 | ||
| 332 | #define TEGRA124_CLK_SPDIF_MUX 305 | ||
| 333 | #define TEGRA124_CLK_CLK_OUT_1_MUX 306 | ||
| 334 | #define TEGRA124_CLK_CLK_OUT_2_MUX 307 | ||
| 335 | #define TEGRA124_CLK_CLK_OUT_3_MUX 308 | ||
| 336 | #define TEGRA124_CLK_DSIA_MUX 309 | ||
| 337 | #define TEGRA124_CLK_DSIB_MUX 310 | ||
| 338 | #define TEGRA124_CLK_SOR0_LVDS 311 | ||
| 339 | #define TEGRA124_CLK_XUSB_SS_DIV2 312 | ||
| 340 | 13 | ||
| 341 | #define TEGRA124_CLK_PLL_M_UD 313 | 14 | #define TEGRA124_CLK_CCLK_G 262 |
| 342 | #define TEGRA124_CLK_PLL_C_UD 314 | 15 | #define TEGRA124_CLK_CCLK_LP 263 |
| 343 | 16 | ||
| 344 | #define TEGRA124_CLK_CLK_MAX 315 | 17 | #define TEGRA124_CLK_CLK_MAX 315 |
| 345 | 18 | ||
| 346 | #endif /* _DT_BINDINGS_CLOCK_TEGRA124_CAR_H */ | 19 | #endif /* _DT_BINDINGS_CLOCK_TEGRA124_CAR_H */ |
diff --git a/include/dt-bindings/mfd/qcom-rpm.h b/include/dt-bindings/mfd/qcom-rpm.h new file mode 100644 index 000000000000..388a6f3d6165 --- /dev/null +++ b/include/dt-bindings/mfd/qcom-rpm.h | |||
| @@ -0,0 +1,154 @@ | |||
| 1 | /* | ||
| 2 | * This header provides constants for the Qualcomm RPM bindings. | ||
| 3 | */ | ||
| 4 | |||
| 5 | #ifndef _DT_BINDINGS_MFD_QCOM_RPM_H | ||
| 6 | #define _DT_BINDINGS_MFD_QCOM_RPM_H | ||
| 7 | |||
| 8 | /* | ||
| 9 | * Constants use to identify individual resources in the RPM. | ||
| 10 | */ | ||
| 11 | #define QCOM_RPM_APPS_FABRIC_ARB 1 | ||
| 12 | #define QCOM_RPM_APPS_FABRIC_CLK 2 | ||
| 13 | #define QCOM_RPM_APPS_FABRIC_HALT 3 | ||
| 14 | #define QCOM_RPM_APPS_FABRIC_IOCTL 4 | ||
| 15 | #define QCOM_RPM_APPS_FABRIC_MODE 5 | ||
| 16 | #define QCOM_RPM_APPS_L2_CACHE_CTL 6 | ||
| 17 | #define QCOM_RPM_CFPB_CLK 7 | ||
| 18 | #define QCOM_RPM_CXO_BUFFERS 8 | ||
| 19 | #define QCOM_RPM_CXO_CLK 9 | ||
| 20 | #define QCOM_RPM_DAYTONA_FABRIC_CLK 10 | ||
| 21 | #define QCOM_RPM_DDR_DMM 11 | ||
| 22 | #define QCOM_RPM_EBI1_CLK 12 | ||
| 23 | #define QCOM_RPM_HDMI_SWITCH 13 | ||
| 24 | #define QCOM_RPM_MMFPB_CLK 14 | ||
| 25 | #define QCOM_RPM_MM_FABRIC_ARB 15 | ||
| 26 | #define QCOM_RPM_MM_FABRIC_CLK 16 | ||
| 27 | #define QCOM_RPM_MM_FABRIC_HALT 17 | ||
| 28 | #define QCOM_RPM_MM_FABRIC_IOCTL 18 | ||
| 29 | #define QCOM_RPM_MM_FABRIC_MODE 19 | ||
| 30 | #define QCOM_RPM_PLL_4 20 | ||
| 31 | #define QCOM_RPM_PM8058_LDO0 21 | ||
| 32 | #define QCOM_RPM_PM8058_LDO1 22 | ||
| 33 | #define QCOM_RPM_PM8058_LDO2 23 | ||
| 34 | #define QCOM_RPM_PM8058_LDO3 24 | ||
| 35 | #define QCOM_RPM_PM8058_LDO4 25 | ||
| 36 | #define QCOM_RPM_PM8058_LDO5 26 | ||
| 37 | #define QCOM_RPM_PM8058_LDO6 27 | ||
| 38 | #define QCOM_RPM_PM8058_LDO7 28 | ||
| 39 | #define QCOM_RPM_PM8058_LDO8 29 | ||
| 40 | #define QCOM_RPM_PM8058_LDO9 30 | ||
| 41 | #define QCOM_RPM_PM8058_LDO10 31 | ||
| 42 | #define QCOM_RPM_PM8058_LDO11 32 | ||
| 43 | #define QCOM_RPM_PM8058_LDO12 33 | ||
| 44 | #define QCOM_RPM_PM8058_LDO13 34 | ||
| 45 | #define QCOM_RPM_PM8058_LDO14 35 | ||
| 46 | #define QCOM_RPM_PM8058_LDO15 36 | ||
| 47 | #define QCOM_RPM_PM8058_LDO16 37 | ||
| 48 | #define QCOM_RPM_PM8058_LDO17 38 | ||
| 49 | #define QCOM_RPM_PM8058_LDO18 39 | ||
| 50 | #define QCOM_RPM_PM8058_LDO19 40 | ||
| 51 | #define QCOM_RPM_PM8058_LDO20 41 | ||
| 52 | #define QCOM_RPM_PM8058_LDO21 42 | ||
| 53 | #define QCOM_RPM_PM8058_LDO22 43 | ||
| 54 | #define QCOM_RPM_PM8058_LDO23 44 | ||
| 55 | #define QCOM_RPM_PM8058_LDO24 45 | ||
| 56 | #define QCOM_RPM_PM8058_LDO25 46 | ||
| 57 | #define QCOM_RPM_PM8058_LVS0 47 | ||
| 58 | #define QCOM_RPM_PM8058_LVS1 48 | ||
| 59 | #define QCOM_RPM_PM8058_NCP 49 | ||
| 60 | #define QCOM_RPM_PM8058_SMPS0 50 | ||
| 61 | #define QCOM_RPM_PM8058_SMPS1 51 | ||
| 62 | #define QCOM_RPM_PM8058_SMPS2 52 | ||
| 63 | #define QCOM_RPM_PM8058_SMPS3 53 | ||
| 64 | #define QCOM_RPM_PM8058_SMPS4 54 | ||
| 65 | #define QCOM_RPM_PM8821_LDO1 55 | ||
| 66 | #define QCOM_RPM_PM8821_SMPS1 56 | ||
| 67 | #define QCOM_RPM_PM8821_SMPS2 57 | ||
| 68 | #define QCOM_RPM_PM8901_LDO0 58 | ||
| 69 | #define QCOM_RPM_PM8901_LDO1 59 | ||
| 70 | #define QCOM_RPM_PM8901_LDO2 60 | ||
| 71 | #define QCOM_RPM_PM8901_LDO3 61 | ||
| 72 | #define QCOM_RPM_PM8901_LDO4 62 | ||
| 73 | #define QCOM_RPM_PM8901_LDO5 63 | ||
| 74 | #define QCOM_RPM_PM8901_LDO6 64 | ||
| 75 | #define QCOM_RPM_PM8901_LVS0 65 | ||
| 76 | #define QCOM_RPM_PM8901_LVS1 66 | ||
| 77 | #define QCOM_RPM_PM8901_LVS2 67 | ||
| 78 | #define QCOM_RPM_PM8901_LVS3 68 | ||
| 79 | #define QCOM_RPM_PM8901_MVS 69 | ||
| 80 | #define QCOM_RPM_PM8901_SMPS0 70 | ||
| 81 | #define QCOM_RPM_PM8901_SMPS1 71 | ||
| 82 | #define QCOM_RPM_PM8901_SMPS2 72 | ||
| 83 | #define QCOM_RPM_PM8901_SMPS3 73 | ||
| 84 | #define QCOM_RPM_PM8901_SMPS4 74 | ||
| 85 | #define QCOM_RPM_PM8921_CLK1 75 | ||
| 86 | #define QCOM_RPM_PM8921_CLK2 76 | ||
| 87 | #define QCOM_RPM_PM8921_LDO1 77 | ||
| 88 | #define QCOM_RPM_PM8921_LDO2 78 | ||
| 89 | #define QCOM_RPM_PM8921_LDO3 79 | ||
| 90 | #define QCOM_RPM_PM8921_LDO4 80 | ||
| 91 | #define QCOM_RPM_PM8921_LDO5 81 | ||
| 92 | #define QCOM_RPM_PM8921_LDO6 82 | ||
| 93 | #define QCOM_RPM_PM8921_LDO7 83 | ||
| 94 | #define QCOM_RPM_PM8921_LDO8 84 | ||
| 95 | #define QCOM_RPM_PM8921_LDO9 85 | ||
| 96 | #define QCOM_RPM_PM8921_LDO10 86 | ||
| 97 | #define QCOM_RPM_PM8921_LDO11 87 | ||
| 98 | #define QCOM_RPM_PM8921_LDO12 88 | ||
| 99 | #define QCOM_RPM_PM8921_LDO13 89 | ||
| 100 | #define QCOM_RPM_PM8921_LDO14 90 | ||
| 101 | #define QCOM_RPM_PM8921_LDO15 91 | ||
| 102 | #define QCOM_RPM_PM8921_LDO16 92 | ||
| 103 | #define QCOM_RPM_PM8921_LDO17 93 | ||
| 104 | #define QCOM_RPM_PM8921_LDO18 94 | ||
| 105 | #define QCOM_RPM_PM8921_LDO19 95 | ||
| 106 | #define QCOM_RPM_PM8921_LDO20 96 | ||
| 107 | #define QCOM_RPM_PM8921_LDO21 97 | ||
| 108 | #define QCOM_RPM_PM8921_LDO22 98 | ||
| 109 | #define QCOM_RPM_PM8921_LDO23 99 | ||
| 110 | #define QCOM_RPM_PM8921_LDO24 100 | ||
| 111 | #define QCOM_RPM_PM8921_LDO25 101 | ||
| 112 | #define QCOM_RPM_PM8921_LDO26 102 | ||
| 113 | #define QCOM_RPM_PM8921_LDO27 103 | ||
| 114 | #define QCOM_RPM_PM8921_LDO28 104 | ||
| 115 | #define QCOM_RPM_PM8921_LDO29 105 | ||
| 116 | #define QCOM_RPM_PM8921_LVS1 106 | ||
| 117 | #define QCOM_RPM_PM8921_LVS2 107 | ||
| 118 | #define QCOM_RPM_PM8921_LVS3 108 | ||
| 119 | #define QCOM_RPM_PM8921_LVS4 109 | ||
| 120 | #define QCOM_RPM_PM8921_LVS5 110 | ||
| 121 | #define QCOM_RPM_PM8921_LVS6 111 | ||
| 122 | #define QCOM_RPM_PM8921_LVS7 112 | ||
| 123 | #define QCOM_RPM_PM8921_MVS 113 | ||
| 124 | #define QCOM_RPM_PM8921_NCP 114 | ||
| 125 | #define QCOM_RPM_PM8921_SMPS1 115 | ||
| 126 | #define QCOM_RPM_PM8921_SMPS2 116 | ||
| 127 | #define QCOM_RPM_PM8921_SMPS3 117 | ||
| 128 | #define QCOM_RPM_PM8921_SMPS4 118 | ||
| 129 | #define QCOM_RPM_PM8921_SMPS5 119 | ||
| 130 | #define QCOM_RPM_PM8921_SMPS6 120 | ||
| 131 | #define QCOM_RPM_PM8921_SMPS7 121 | ||
| 132 | #define QCOM_RPM_PM8921_SMPS8 122 | ||
| 133 | #define QCOM_RPM_PXO_CLK 123 | ||
| 134 | #define QCOM_RPM_QDSS_CLK 124 | ||
| 135 | #define QCOM_RPM_SFPB_CLK 125 | ||
| 136 | #define QCOM_RPM_SMI_CLK 126 | ||
| 137 | #define QCOM_RPM_SYS_FABRIC_ARB 127 | ||
| 138 | #define QCOM_RPM_SYS_FABRIC_CLK 128 | ||
| 139 | #define QCOM_RPM_SYS_FABRIC_HALT 129 | ||
| 140 | #define QCOM_RPM_SYS_FABRIC_IOCTL 130 | ||
| 141 | #define QCOM_RPM_SYS_FABRIC_MODE 131 | ||
| 142 | #define QCOM_RPM_USB_OTG_SWITCH 132 | ||
| 143 | #define QCOM_RPM_VDDMIN_GPIO 133 | ||
| 144 | |||
| 145 | /* | ||
| 146 | * Constants used to select force mode for regulators. | ||
| 147 | */ | ||
| 148 | #define QCOM_RPM_FORCE_MODE_NONE 0 | ||
| 149 | #define QCOM_RPM_FORCE_MODE_LPM 1 | ||
| 150 | #define QCOM_RPM_FORCE_MODE_HPM 2 | ||
| 151 | #define QCOM_RPM_FORCE_MODE_AUTO 3 | ||
| 152 | #define QCOM_RPM_FORCE_MODE_BYPASS 4 | ||
| 153 | |||
| 154 | #endif | ||
diff --git a/include/linux/clk/sunxi.h b/include/dt-bindings/thermal/thermal_exynos.h index aed28c4451d9..0646500bca69 100644 --- a/include/linux/clk/sunxi.h +++ b/include/dt-bindings/thermal/thermal_exynos.h | |||
| @@ -1,5 +1,8 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright 2013 - Hans de Goede <hdegoede@redhat.com> | 2 | * thermal_exynos.h - Samsung EXYNOS TMU device tree definitions |
| 3 | * | ||
| 4 | * Copyright (C) 2014 Samsung Electronics | ||
| 5 | * Lukasz Majewski <l.majewski@samsung.com> | ||
| 3 | * | 6 | * |
| 4 | * This program is free software; you can redistribute it and/or modify | 7 | * This program is free software; you can redistribute it and/or modify |
| 5 | * it under the terms of the GNU General Public License as published by | 8 | * it under the terms of the GNU General Public License as published by |
| @@ -10,13 +13,16 @@ | |||
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 | * GNU General Public License for more details. | 15 | * GNU General Public License for more details. |
| 16 | * | ||
| 13 | */ | 17 | */ |
| 14 | 18 | ||
| 15 | #ifndef __LINUX_CLK_SUNXI_H_ | 19 | #ifndef _EXYNOS_THERMAL_TMU_DT_H |
| 16 | #define __LINUX_CLK_SUNXI_H_ | 20 | #define _EXYNOS_THERMAL_TMU_DT_H |
| 17 | |||
| 18 | #include <linux/clk.h> | ||
| 19 | 21 | ||
| 20 | void clk_sunxi_mmc_phase_control(struct clk *clk, u8 sample, u8 output); | 22 | #define TYPE_ONE_POINT_TRIMMING 0 |
| 23 | #define TYPE_ONE_POINT_TRIMMING_25 1 | ||
| 24 | #define TYPE_ONE_POINT_TRIMMING_85 2 | ||
| 25 | #define TYPE_TWO_POINT_TRIMMING 3 | ||
| 26 | #define TYPE_NONE 4 | ||
| 21 | 27 | ||
| 22 | #endif | 28 | #endif /* _EXYNOS_THERMAL_TMU_DT_H */ |
diff --git a/include/linux/bcm47xx_wdt.h b/include/linux/bcm47xx_wdt.h index b708786d4cbf..5582c211f594 100644 --- a/include/linux/bcm47xx_wdt.h +++ b/include/linux/bcm47xx_wdt.h | |||
| @@ -16,6 +16,7 @@ struct bcm47xx_wdt { | |||
| 16 | 16 | ||
| 17 | struct watchdog_device wdd; | 17 | struct watchdog_device wdd; |
| 18 | struct notifier_block notifier; | 18 | struct notifier_block notifier; |
| 19 | struct notifier_block restart_handler; | ||
| 19 | 20 | ||
| 20 | struct timer_list soft_timer; | 21 | struct timer_list soft_timer; |
| 21 | atomic_t soft_ticks; | 22 | atomic_t soft_ticks; |
diff --git a/include/linux/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h index c0dadaac26e3..31eb03d0c766 100644 --- a/include/linux/ceph/ceph_fs.h +++ b/include/linux/ceph/ceph_fs.h | |||
| @@ -158,17 +158,6 @@ enum { | |||
| 158 | }; | 158 | }; |
| 159 | 159 | ||
| 160 | 160 | ||
| 161 | /* pool operations */ | ||
| 162 | enum { | ||
| 163 | POOL_OP_CREATE = 0x01, | ||
| 164 | POOL_OP_DELETE = 0x02, | ||
| 165 | POOL_OP_AUID_CHANGE = 0x03, | ||
| 166 | POOL_OP_CREATE_SNAP = 0x11, | ||
| 167 | POOL_OP_DELETE_SNAP = 0x12, | ||
| 168 | POOL_OP_CREATE_UNMANAGED_SNAP = 0x21, | ||
| 169 | POOL_OP_DELETE_UNMANAGED_SNAP = 0x22, | ||
| 170 | }; | ||
| 171 | |||
| 172 | struct ceph_mon_request_header { | 161 | struct ceph_mon_request_header { |
| 173 | __le64 have_version; | 162 | __le64 have_version; |
| 174 | __le16 session_mon; | 163 | __le16 session_mon; |
| @@ -191,31 +180,6 @@ struct ceph_mon_statfs_reply { | |||
| 191 | struct ceph_statfs st; | 180 | struct ceph_statfs st; |
| 192 | } __attribute__ ((packed)); | 181 | } __attribute__ ((packed)); |
| 193 | 182 | ||
| 194 | const char *ceph_pool_op_name(int op); | ||
| 195 | |||
| 196 | struct ceph_mon_poolop { | ||
| 197 | struct ceph_mon_request_header monhdr; | ||
| 198 | struct ceph_fsid fsid; | ||
| 199 | __le32 pool; | ||
| 200 | __le32 op; | ||
| 201 | __le64 auid; | ||
| 202 | __le64 snapid; | ||
| 203 | __le32 name_len; | ||
| 204 | } __attribute__ ((packed)); | ||
| 205 | |||
| 206 | struct ceph_mon_poolop_reply { | ||
| 207 | struct ceph_mon_request_header monhdr; | ||
| 208 | struct ceph_fsid fsid; | ||
| 209 | __le32 reply_code; | ||
| 210 | __le32 epoch; | ||
| 211 | char has_data; | ||
| 212 | char data[0]; | ||
| 213 | } __attribute__ ((packed)); | ||
| 214 | |||
| 215 | struct ceph_mon_unmanaged_snap { | ||
| 216 | __le64 snapid; | ||
| 217 | } __attribute__ ((packed)); | ||
| 218 | |||
| 219 | struct ceph_osd_getmap { | 183 | struct ceph_osd_getmap { |
| 220 | struct ceph_mon_request_header monhdr; | 184 | struct ceph_mon_request_header monhdr; |
| 221 | struct ceph_fsid fsid; | 185 | struct ceph_fsid fsid; |
| @@ -307,6 +271,7 @@ enum { | |||
| 307 | CEPH_SESSION_RECALL_STATE, | 271 | CEPH_SESSION_RECALL_STATE, |
| 308 | CEPH_SESSION_FLUSHMSG, | 272 | CEPH_SESSION_FLUSHMSG, |
| 309 | CEPH_SESSION_FLUSHMSG_ACK, | 273 | CEPH_SESSION_FLUSHMSG_ACK, |
| 274 | CEPH_SESSION_FORCE_RO, | ||
| 310 | }; | 275 | }; |
| 311 | 276 | ||
| 312 | extern const char *ceph_session_op_name(int op); | 277 | extern const char *ceph_session_op_name(int op); |
diff --git a/include/linux/ceph/libceph.h b/include/linux/ceph/libceph.h index 8b11a79ca1cb..16fff9608848 100644 --- a/include/linux/ceph/libceph.h +++ b/include/linux/ceph/libceph.h | |||
| @@ -30,8 +30,9 @@ | |||
| 30 | #define CEPH_OPT_MYIP (1<<2) /* specified my ip */ | 30 | #define CEPH_OPT_MYIP (1<<2) /* specified my ip */ |
| 31 | #define CEPH_OPT_NOCRC (1<<3) /* no data crc on writes */ | 31 | #define CEPH_OPT_NOCRC (1<<3) /* no data crc on writes */ |
| 32 | #define CEPH_OPT_NOMSGAUTH (1<<4) /* not require cephx message signature */ | 32 | #define CEPH_OPT_NOMSGAUTH (1<<4) /* not require cephx message signature */ |
| 33 | #define CEPH_OPT_TCP_NODELAY (1<<5) /* TCP_NODELAY on TCP sockets */ | ||
| 33 | 34 | ||
| 34 | #define CEPH_OPT_DEFAULT (0) | 35 | #define CEPH_OPT_DEFAULT (CEPH_OPT_TCP_NODELAY) |
| 35 | 36 | ||
| 36 | #define ceph_set_opt(client, opt) \ | 37 | #define ceph_set_opt(client, opt) \ |
| 37 | (client)->options->flags |= CEPH_OPT_##opt; | 38 | (client)->options->flags |= CEPH_OPT_##opt; |
diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h index d9d396c16503..e15499422fdc 100644 --- a/include/linux/ceph/messenger.h +++ b/include/linux/ceph/messenger.h | |||
| @@ -57,6 +57,7 @@ struct ceph_messenger { | |||
| 57 | 57 | ||
| 58 | atomic_t stopping; | 58 | atomic_t stopping; |
| 59 | bool nocrc; | 59 | bool nocrc; |
| 60 | bool tcp_nodelay; | ||
| 60 | 61 | ||
| 61 | /* | 62 | /* |
| 62 | * the global_seq counts connections i (attempt to) initiate | 63 | * the global_seq counts connections i (attempt to) initiate |
| @@ -264,7 +265,8 @@ extern void ceph_messenger_init(struct ceph_messenger *msgr, | |||
| 264 | struct ceph_entity_addr *myaddr, | 265 | struct ceph_entity_addr *myaddr, |
| 265 | u64 supported_features, | 266 | u64 supported_features, |
| 266 | u64 required_features, | 267 | u64 required_features, |
| 267 | bool nocrc); | 268 | bool nocrc, |
| 269 | bool tcp_nodelay); | ||
| 268 | 270 | ||
| 269 | extern void ceph_con_init(struct ceph_connection *con, void *private, | 271 | extern void ceph_con_init(struct ceph_connection *con, void *private, |
| 270 | const struct ceph_connection_operations *ops, | 272 | const struct ceph_connection_operations *ops, |
diff --git a/include/linux/ceph/mon_client.h b/include/linux/ceph/mon_client.h index deb47e45ac7c..81810dc21f06 100644 --- a/include/linux/ceph/mon_client.h +++ b/include/linux/ceph/mon_client.h | |||
| @@ -40,7 +40,7 @@ struct ceph_mon_request { | |||
| 40 | }; | 40 | }; |
| 41 | 41 | ||
| 42 | /* | 42 | /* |
| 43 | * ceph_mon_generic_request is being used for the statfs, poolop and | 43 | * ceph_mon_generic_request is being used for the statfs and |
| 44 | * mon_get_version requests which are being done a bit differently | 44 | * mon_get_version requests which are being done a bit differently |
| 45 | * because we need to get data back to the caller | 45 | * because we need to get data back to the caller |
| 46 | */ | 46 | */ |
| @@ -50,7 +50,6 @@ struct ceph_mon_generic_request { | |||
| 50 | struct rb_node node; | 50 | struct rb_node node; |
| 51 | int result; | 51 | int result; |
| 52 | void *buf; | 52 | void *buf; |
| 53 | int buf_len; | ||
| 54 | struct completion completion; | 53 | struct completion completion; |
| 55 | struct ceph_msg *request; /* original request */ | 54 | struct ceph_msg *request; /* original request */ |
| 56 | struct ceph_msg *reply; /* and reply */ | 55 | struct ceph_msg *reply; /* and reply */ |
| @@ -117,10 +116,4 @@ extern int ceph_monc_open_session(struct ceph_mon_client *monc); | |||
| 117 | 116 | ||
| 118 | extern int ceph_monc_validate_auth(struct ceph_mon_client *monc); | 117 | extern int ceph_monc_validate_auth(struct ceph_mon_client *monc); |
| 119 | 118 | ||
| 120 | extern int ceph_monc_create_snapid(struct ceph_mon_client *monc, | ||
| 121 | u32 pool, u64 *snapid); | ||
| 122 | |||
| 123 | extern int ceph_monc_delete_snapid(struct ceph_mon_client *monc, | ||
| 124 | u32 pool, u64 snapid); | ||
| 125 | |||
| 126 | #endif | 119 | #endif |
diff --git a/include/linux/clk-private.h b/include/linux/clk-private.h deleted file mode 100644 index 0ca5f6046920..000000000000 --- a/include/linux/clk-private.h +++ /dev/null | |||
| @@ -1,220 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/linux/clk-private.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2010-2011 Jeremy Kerr <jeremy.kerr@canonical.com> | ||
| 5 | * Copyright (C) 2011-2012 Linaro Ltd <mturquette@linaro.org> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published by the Free Software Foundation. | ||
| 10 | */ | ||
| 11 | #ifndef __LINUX_CLK_PRIVATE_H | ||
| 12 | #define __LINUX_CLK_PRIVATE_H | ||
| 13 | |||
| 14 | #include <linux/clk-provider.h> | ||
| 15 | #include <linux/kref.h> | ||
| 16 | #include <linux/list.h> | ||
| 17 | |||
| 18 | /* | ||
| 19 | * WARNING: Do not include clk-private.h from any file that implements struct | ||
| 20 | * clk_ops. Doing so is a layering violation! | ||
| 21 | * | ||
| 22 | * This header exists only to allow for statically initialized clock data. Any | ||
| 23 | * static clock data must be defined in a separate file from the logic that | ||
| 24 | * implements the clock operations for that same data. | ||
| 25 | */ | ||
| 26 | |||
| 27 | #ifdef CONFIG_COMMON_CLK | ||
| 28 | |||
| 29 | struct module; | ||
| 30 | |||
| 31 | struct clk { | ||
| 32 | const char *name; | ||
| 33 | const struct clk_ops *ops; | ||
| 34 | struct clk_hw *hw; | ||
| 35 | struct module *owner; | ||
| 36 | struct clk *parent; | ||
| 37 | const char **parent_names; | ||
| 38 | struct clk **parents; | ||
| 39 | u8 num_parents; | ||
| 40 | u8 new_parent_index; | ||
| 41 | unsigned long rate; | ||
| 42 | unsigned long new_rate; | ||
| 43 | struct clk *new_parent; | ||
| 44 | struct clk *new_child; | ||
| 45 | unsigned long flags; | ||
| 46 | unsigned int enable_count; | ||
| 47 | unsigned int prepare_count; | ||
| 48 | unsigned long accuracy; | ||
| 49 | int phase; | ||
| 50 | struct hlist_head children; | ||
| 51 | struct hlist_node child_node; | ||
| 52 | struct hlist_node debug_node; | ||
| 53 | unsigned int notifier_count; | ||
| 54 | #ifdef CONFIG_DEBUG_FS | ||
| 55 | struct dentry *dentry; | ||
| 56 | #endif | ||
| 57 | struct kref ref; | ||
| 58 | }; | ||
| 59 | |||
| 60 | /* | ||
| 61 | * DOC: Basic clock implementations common to many platforms | ||
| 62 | * | ||
| 63 | * Each basic clock hardware type is comprised of a structure describing the | ||
| 64 | * clock hardware, implementations of the relevant callbacks in struct clk_ops, | ||
| 65 | * unique flags for that hardware type, a registration function and an | ||
| 66 | * alternative macro for static initialization | ||
| 67 | */ | ||
| 68 | |||
| 69 | #define DEFINE_CLK(_name, _ops, _flags, _parent_names, \ | ||
| 70 | _parents) \ | ||
| 71 | static struct clk _name = { \ | ||
| 72 | .name = #_name, \ | ||
| 73 | .ops = &_ops, \ | ||
| 74 | .hw = &_name##_hw.hw, \ | ||
| 75 | .parent_names = _parent_names, \ | ||
| 76 | .num_parents = ARRAY_SIZE(_parent_names), \ | ||
| 77 | .parents = _parents, \ | ||
| 78 | .flags = _flags | CLK_IS_BASIC, \ | ||
| 79 | } | ||
| 80 | |||
| 81 | #define DEFINE_CLK_FIXED_RATE(_name, _flags, _rate, \ | ||
| 82 | _fixed_rate_flags) \ | ||
| 83 | static struct clk _name; \ | ||
| 84 | static const char *_name##_parent_names[] = {}; \ | ||
| 85 | static struct clk_fixed_rate _name##_hw = { \ | ||
| 86 | .hw = { \ | ||
| 87 | .clk = &_name, \ | ||
| 88 | }, \ | ||
| 89 | .fixed_rate = _rate, \ | ||
| 90 | .flags = _fixed_rate_flags, \ | ||
| 91 | }; \ | ||
| 92 | DEFINE_CLK(_name, clk_fixed_rate_ops, _flags, \ | ||
| 93 | _name##_parent_names, NULL); | ||
| 94 | |||
| 95 | #define DEFINE_CLK_GATE(_name, _parent_name, _parent_ptr, \ | ||
| 96 | _flags, _reg, _bit_idx, \ | ||
| 97 | _gate_flags, _lock) \ | ||
| 98 | static struct clk _name; \ | ||
| 99 | static const char *_name##_parent_names[] = { \ | ||
| 100 | _parent_name, \ | ||
| 101 | }; \ | ||
| 102 | static struct clk *_name##_parents[] = { \ | ||
| 103 | _parent_ptr, \ | ||
| 104 | }; \ | ||
| 105 | static struct clk_gate _name##_hw = { \ | ||
| 106 | .hw = { \ | ||
| 107 | .clk = &_name, \ | ||
| 108 | }, \ | ||
| 109 | .reg = _reg, \ | ||
| 110 | .bit_idx = _bit_idx, \ | ||
| 111 | .flags = _gate_flags, \ | ||
| 112 | .lock = _lock, \ | ||
| 113 | }; \ | ||
| 114 | DEFINE_CLK(_name, clk_gate_ops, _flags, \ | ||
| 115 | _name##_parent_names, _name##_parents); | ||
| 116 | |||
| 117 | #define _DEFINE_CLK_DIVIDER(_name, _parent_name, _parent_ptr, \ | ||
| 118 | _flags, _reg, _shift, _width, \ | ||
| 119 | _divider_flags, _table, _lock) \ | ||
| 120 | static struct clk _name; \ | ||
| 121 | static const char *_name##_parent_names[] = { \ | ||
| 122 | _parent_name, \ | ||
| 123 | }; \ | ||
| 124 | static struct clk *_name##_parents[] = { \ | ||
| 125 | _parent_ptr, \ | ||
| 126 | }; \ | ||
| 127 | static struct clk_divider _name##_hw = { \ | ||
| 128 | .hw = { \ | ||
| 129 | .clk = &_name, \ | ||
| 130 | }, \ | ||
| 131 | .reg = _reg, \ | ||
| 132 | .shift = _shift, \ | ||
| 133 | .width = _width, \ | ||
| 134 | .flags = _divider_flags, \ | ||
| 135 | .table = _table, \ | ||
| 136 | .lock = _lock, \ | ||
| 137 | }; \ | ||
| 138 | DEFINE_CLK(_name, clk_divider_ops, _flags, \ | ||
| 139 | _name##_parent_names, _name##_parents); | ||
| 140 | |||
| 141 | #define DEFINE_CLK_DIVIDER(_name, _parent_name, _parent_ptr, \ | ||
| 142 | _flags, _reg, _shift, _width, \ | ||
| 143 | _divider_flags, _lock) \ | ||
| 144 | _DEFINE_CLK_DIVIDER(_name, _parent_name, _parent_ptr, \ | ||
| 145 | _flags, _reg, _shift, _width, \ | ||
| 146 | _divider_flags, NULL, _lock) | ||
| 147 | |||
| 148 | #define DEFINE_CLK_DIVIDER_TABLE(_name, _parent_name, \ | ||
| 149 | _parent_ptr, _flags, _reg, \ | ||
| 150 | _shift, _width, _divider_flags, \ | ||
| 151 | _table, _lock) \ | ||
| 152 | _DEFINE_CLK_DIVIDER(_name, _parent_name, _parent_ptr, \ | ||
| 153 | _flags, _reg, _shift, _width, \ | ||
| 154 | _divider_flags, _table, _lock) \ | ||
| 155 | |||
| 156 | #define DEFINE_CLK_MUX(_name, _parent_names, _parents, _flags, \ | ||
| 157 | _reg, _shift, _width, \ | ||
| 158 | _mux_flags, _lock) \ | ||
| 159 | static struct clk _name; \ | ||
| 160 | static struct clk_mux _name##_hw = { \ | ||
| 161 | .hw = { \ | ||
| 162 | .clk = &_name, \ | ||
| 163 | }, \ | ||
| 164 | .reg = _reg, \ | ||
| 165 | .shift = _shift, \ | ||
| 166 | .mask = BIT(_width) - 1, \ | ||
| 167 | .flags = _mux_flags, \ | ||
| 168 | .lock = _lock, \ | ||
| 169 | }; \ | ||
| 170 | DEFINE_CLK(_name, clk_mux_ops, _flags, _parent_names, \ | ||
| 171 | _parents); | ||
| 172 | |||
| 173 | #define DEFINE_CLK_FIXED_FACTOR(_name, _parent_name, \ | ||
| 174 | _parent_ptr, _flags, \ | ||
| 175 | _mult, _div) \ | ||
| 176 | static struct clk _name; \ | ||
| 177 | static const char *_name##_parent_names[] = { \ | ||
| 178 | _parent_name, \ | ||
| 179 | }; \ | ||
| 180 | static struct clk *_name##_parents[] = { \ | ||
| 181 | _parent_ptr, \ | ||
| 182 | }; \ | ||
| 183 | static struct clk_fixed_factor _name##_hw = { \ | ||
| 184 | .hw = { \ | ||
| 185 | .clk = &_name, \ | ||
| 186 | }, \ | ||
| 187 | .mult = _mult, \ | ||
| 188 | .div = _div, \ | ||
| 189 | }; \ | ||
| 190 | DEFINE_CLK(_name, clk_fixed_factor_ops, _flags, \ | ||
| 191 | _name##_parent_names, _name##_parents); | ||
| 192 | |||
| 193 | /** | ||
| 194 | * __clk_init - initialize the data structures in a struct clk | ||
| 195 | * @dev: device initializing this clk, placeholder for now | ||
| 196 | * @clk: clk being initialized | ||
| 197 | * | ||
| 198 | * Initializes the lists in struct clk, queries the hardware for the | ||
| 199 | * parent and rate and sets them both. | ||
| 200 | * | ||
| 201 | * Any struct clk passed into __clk_init must have the following members | ||
| 202 | * populated: | ||
| 203 | * .name | ||
| 204 | * .ops | ||
| 205 | * .hw | ||
| 206 | * .parent_names | ||
| 207 | * .num_parents | ||
| 208 | * .flags | ||
| 209 | * | ||
| 210 | * It is not necessary to call clk_register if __clk_init is used directly with | ||
| 211 | * statically initialized clock data. | ||
| 212 | * | ||
| 213 | * Returns 0 on success, otherwise an error code. | ||
| 214 | */ | ||
| 215 | int __clk_init(struct device *dev, struct clk *clk); | ||
| 216 | |||
| 217 | struct clk *__clk_register(struct device *dev, struct clk_hw *hw); | ||
| 218 | |||
| 219 | #endif /* CONFIG_COMMON_CLK */ | ||
| 220 | #endif /* CLK_PRIVATE_H */ | ||
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index d936409520f8..5591ea71a8d1 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h | |||
| @@ -33,6 +33,7 @@ | |||
| 33 | #define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */ | 33 | #define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */ |
| 34 | 34 | ||
| 35 | struct clk_hw; | 35 | struct clk_hw; |
| 36 | struct clk_core; | ||
| 36 | struct dentry; | 37 | struct dentry; |
| 37 | 38 | ||
| 38 | /** | 39 | /** |
| @@ -174,9 +175,12 @@ struct clk_ops { | |||
| 174 | unsigned long parent_rate); | 175 | unsigned long parent_rate); |
| 175 | long (*round_rate)(struct clk_hw *hw, unsigned long rate, | 176 | long (*round_rate)(struct clk_hw *hw, unsigned long rate, |
| 176 | unsigned long *parent_rate); | 177 | unsigned long *parent_rate); |
| 177 | long (*determine_rate)(struct clk_hw *hw, unsigned long rate, | 178 | long (*determine_rate)(struct clk_hw *hw, |
| 178 | unsigned long *best_parent_rate, | 179 | unsigned long rate, |
| 179 | struct clk_hw **best_parent_hw); | 180 | unsigned long min_rate, |
| 181 | unsigned long max_rate, | ||
| 182 | unsigned long *best_parent_rate, | ||
| 183 | struct clk_hw **best_parent_hw); | ||
| 180 | int (*set_parent)(struct clk_hw *hw, u8 index); | 184 | int (*set_parent)(struct clk_hw *hw, u8 index); |
| 181 | u8 (*get_parent)(struct clk_hw *hw); | 185 | u8 (*get_parent)(struct clk_hw *hw); |
| 182 | int (*set_rate)(struct clk_hw *hw, unsigned long rate, | 186 | int (*set_rate)(struct clk_hw *hw, unsigned long rate, |
| @@ -216,13 +220,17 @@ struct clk_init_data { | |||
| 216 | * clk_foo and then referenced by the struct clk instance that uses struct | 220 | * clk_foo and then referenced by the struct clk instance that uses struct |
| 217 | * clk_foo's clk_ops | 221 | * clk_foo's clk_ops |
| 218 | * | 222 | * |
| 219 | * @clk: pointer to the struct clk instance that points back to this struct | 223 | * @core: pointer to the struct clk_core instance that points back to this |
| 220 | * clk_hw instance | 224 | * struct clk_hw instance |
| 225 | * | ||
| 226 | * @clk: pointer to the per-user struct clk instance that can be used to call | ||
| 227 | * into the clk API | ||
| 221 | * | 228 | * |
| 222 | * @init: pointer to struct clk_init_data that contains the init data shared | 229 | * @init: pointer to struct clk_init_data that contains the init data shared |
| 223 | * with the common clock framework. | 230 | * with the common clock framework. |
| 224 | */ | 231 | */ |
| 225 | struct clk_hw { | 232 | struct clk_hw { |
| 233 | struct clk_core *core; | ||
| 226 | struct clk *clk; | 234 | struct clk *clk; |
| 227 | const struct clk_init_data *init; | 235 | const struct clk_init_data *init; |
| 228 | }; | 236 | }; |
| @@ -294,6 +302,7 @@ struct clk *clk_register_gate(struct device *dev, const char *name, | |||
| 294 | const char *parent_name, unsigned long flags, | 302 | const char *parent_name, unsigned long flags, |
| 295 | void __iomem *reg, u8 bit_idx, | 303 | void __iomem *reg, u8 bit_idx, |
| 296 | u8 clk_gate_flags, spinlock_t *lock); | 304 | u8 clk_gate_flags, spinlock_t *lock); |
| 305 | void clk_unregister_gate(struct clk *clk); | ||
| 297 | 306 | ||
| 298 | struct clk_div_table { | 307 | struct clk_div_table { |
| 299 | unsigned int val; | 308 | unsigned int val; |
| @@ -352,6 +361,17 @@ struct clk_divider { | |||
| 352 | #define CLK_DIVIDER_READ_ONLY BIT(5) | 361 | #define CLK_DIVIDER_READ_ONLY BIT(5) |
| 353 | 362 | ||
| 354 | extern const struct clk_ops clk_divider_ops; | 363 | extern const struct clk_ops clk_divider_ops; |
| 364 | |||
| 365 | unsigned long divider_recalc_rate(struct clk_hw *hw, unsigned long parent_rate, | ||
| 366 | unsigned int val, const struct clk_div_table *table, | ||
| 367 | unsigned long flags); | ||
| 368 | long divider_round_rate(struct clk_hw *hw, unsigned long rate, | ||
| 369 | unsigned long *prate, const struct clk_div_table *table, | ||
| 370 | u8 width, unsigned long flags); | ||
| 371 | int divider_get_val(unsigned long rate, unsigned long parent_rate, | ||
| 372 | const struct clk_div_table *table, u8 width, | ||
| 373 | unsigned long flags); | ||
| 374 | |||
| 355 | struct clk *clk_register_divider(struct device *dev, const char *name, | 375 | struct clk *clk_register_divider(struct device *dev, const char *name, |
| 356 | const char *parent_name, unsigned long flags, | 376 | const char *parent_name, unsigned long flags, |
| 357 | void __iomem *reg, u8 shift, u8 width, | 377 | void __iomem *reg, u8 shift, u8 width, |
| @@ -361,6 +381,7 @@ struct clk *clk_register_divider_table(struct device *dev, const char *name, | |||
| 361 | void __iomem *reg, u8 shift, u8 width, | 381 | void __iomem *reg, u8 shift, u8 width, |
| 362 | u8 clk_divider_flags, const struct clk_div_table *table, | 382 | u8 clk_divider_flags, const struct clk_div_table *table, |
| 363 | spinlock_t *lock); | 383 | spinlock_t *lock); |
| 384 | void clk_unregister_divider(struct clk *clk); | ||
| 364 | 385 | ||
| 365 | /** | 386 | /** |
| 366 | * struct clk_mux - multiplexer clock | 387 | * struct clk_mux - multiplexer clock |
| @@ -382,6 +403,8 @@ struct clk *clk_register_divider_table(struct device *dev, const char *name, | |||
| 382 | * register, and mask of mux bits are in higher 16-bit of this register. | 403 | * register, and mask of mux bits are in higher 16-bit of this register. |
| 383 | * While setting the mux bits, higher 16-bit should also be updated to | 404 | * While setting the mux bits, higher 16-bit should also be updated to |
| 384 | * indicate changing mux bits. | 405 | * indicate changing mux bits. |
| 406 | * CLK_MUX_ROUND_CLOSEST - Use the parent rate that is closest to the desired | ||
| 407 | * frequency. | ||
| 385 | */ | 408 | */ |
| 386 | struct clk_mux { | 409 | struct clk_mux { |
| 387 | struct clk_hw hw; | 410 | struct clk_hw hw; |
| @@ -396,7 +419,8 @@ struct clk_mux { | |||
| 396 | #define CLK_MUX_INDEX_ONE BIT(0) | 419 | #define CLK_MUX_INDEX_ONE BIT(0) |
| 397 | #define CLK_MUX_INDEX_BIT BIT(1) | 420 | #define CLK_MUX_INDEX_BIT BIT(1) |
| 398 | #define CLK_MUX_HIWORD_MASK BIT(2) | 421 | #define CLK_MUX_HIWORD_MASK BIT(2) |
| 399 | #define CLK_MUX_READ_ONLY BIT(3) /* mux setting cannot be changed */ | 422 | #define CLK_MUX_READ_ONLY BIT(3) /* mux can't be changed */ |
| 423 | #define CLK_MUX_ROUND_CLOSEST BIT(4) | ||
| 400 | 424 | ||
| 401 | extern const struct clk_ops clk_mux_ops; | 425 | extern const struct clk_ops clk_mux_ops; |
| 402 | extern const struct clk_ops clk_mux_ro_ops; | 426 | extern const struct clk_ops clk_mux_ro_ops; |
| @@ -411,6 +435,8 @@ struct clk *clk_register_mux_table(struct device *dev, const char *name, | |||
| 411 | void __iomem *reg, u8 shift, u32 mask, | 435 | void __iomem *reg, u8 shift, u32 mask, |
| 412 | u8 clk_mux_flags, u32 *table, spinlock_t *lock); | 436 | u8 clk_mux_flags, u32 *table, spinlock_t *lock); |
| 413 | 437 | ||
| 438 | void clk_unregister_mux(struct clk *clk); | ||
| 439 | |||
| 414 | void of_fixed_factor_clk_setup(struct device_node *node); | 440 | void of_fixed_factor_clk_setup(struct device_node *node); |
| 415 | 441 | ||
| 416 | /** | 442 | /** |
| @@ -550,15 +576,29 @@ bool __clk_is_prepared(struct clk *clk); | |||
| 550 | bool __clk_is_enabled(struct clk *clk); | 576 | bool __clk_is_enabled(struct clk *clk); |
| 551 | struct clk *__clk_lookup(const char *name); | 577 | struct clk *__clk_lookup(const char *name); |
| 552 | long __clk_mux_determine_rate(struct clk_hw *hw, unsigned long rate, | 578 | long __clk_mux_determine_rate(struct clk_hw *hw, unsigned long rate, |
| 579 | unsigned long min_rate, | ||
| 580 | unsigned long max_rate, | ||
| 553 | unsigned long *best_parent_rate, | 581 | unsigned long *best_parent_rate, |
| 554 | struct clk_hw **best_parent_p); | 582 | struct clk_hw **best_parent_p); |
| 583 | unsigned long __clk_determine_rate(struct clk_hw *core, | ||
| 584 | unsigned long rate, | ||
| 585 | unsigned long min_rate, | ||
| 586 | unsigned long max_rate); | ||
| 587 | long __clk_mux_determine_rate_closest(struct clk_hw *hw, unsigned long rate, | ||
| 588 | unsigned long min_rate, | ||
| 589 | unsigned long max_rate, | ||
| 590 | unsigned long *best_parent_rate, | ||
| 591 | struct clk_hw **best_parent_p); | ||
| 592 | |||
| 593 | static inline void __clk_hw_set_clk(struct clk_hw *dst, struct clk_hw *src) | ||
| 594 | { | ||
| 595 | dst->clk = src->clk; | ||
| 596 | dst->core = src->core; | ||
| 597 | } | ||
| 555 | 598 | ||
| 556 | /* | 599 | /* |
| 557 | * FIXME clock api without lock protection | 600 | * FIXME clock api without lock protection |
| 558 | */ | 601 | */ |
| 559 | int __clk_prepare(struct clk *clk); | ||
| 560 | void __clk_unprepare(struct clk *clk); | ||
| 561 | void __clk_reparent(struct clk *clk, struct clk *new_parent); | ||
| 562 | unsigned long __clk_round_rate(struct clk *clk, unsigned long rate); | 602 | unsigned long __clk_round_rate(struct clk *clk, unsigned long rate); |
| 563 | 603 | ||
| 564 | struct of_device_id; | 604 | struct of_device_id; |
diff --git a/include/linux/clk.h b/include/linux/clk.h index c7f258a81761..8381bbfbc308 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h | |||
| @@ -302,6 +302,46 @@ long clk_round_rate(struct clk *clk, unsigned long rate); | |||
| 302 | int clk_set_rate(struct clk *clk, unsigned long rate); | 302 | int clk_set_rate(struct clk *clk, unsigned long rate); |
| 303 | 303 | ||
| 304 | /** | 304 | /** |
| 305 | * clk_has_parent - check if a clock is a possible parent for another | ||
| 306 | * @clk: clock source | ||
| 307 | * @parent: parent clock source | ||
| 308 | * | ||
| 309 | * This function can be used in drivers that need to check that a clock can be | ||
| 310 | * the parent of another without actually changing the parent. | ||
| 311 | * | ||
| 312 | * Returns true if @parent is a possible parent for @clk, false otherwise. | ||
| 313 | */ | ||
| 314 | bool clk_has_parent(struct clk *clk, struct clk *parent); | ||
| 315 | |||
| 316 | /** | ||
| 317 | * clk_set_rate_range - set a rate range for a clock source | ||
| 318 | * @clk: clock source | ||
| 319 | * @min: desired minimum clock rate in Hz, inclusive | ||
| 320 | * @max: desired maximum clock rate in Hz, inclusive | ||
| 321 | * | ||
| 322 | * Returns success (0) or negative errno. | ||
| 323 | */ | ||
| 324 | int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max); | ||
| 325 | |||
| 326 | /** | ||
| 327 | * clk_set_min_rate - set a minimum clock rate for a clock source | ||
| 328 | * @clk: clock source | ||
| 329 | * @rate: desired minimum clock rate in Hz, inclusive | ||
| 330 | * | ||
| 331 | * Returns success (0) or negative errno. | ||
| 332 | */ | ||
| 333 | int clk_set_min_rate(struct clk *clk, unsigned long rate); | ||
| 334 | |||
| 335 | /** | ||
| 336 | * clk_set_max_rate - set a maximum clock rate for a clock source | ||
| 337 | * @clk: clock source | ||
| 338 | * @rate: desired maximum clock rate in Hz, inclusive | ||
| 339 | * | ||
| 340 | * Returns success (0) or negative errno. | ||
| 341 | */ | ||
| 342 | int clk_set_max_rate(struct clk *clk, unsigned long rate); | ||
| 343 | |||
| 344 | /** | ||
| 305 | * clk_set_parent - set the parent clock source for this clock | 345 | * clk_set_parent - set the parent clock source for this clock |
| 306 | * @clk: clock source | 346 | * @clk: clock source |
| 307 | * @parent: parent clock source | 347 | * @parent: parent clock source |
| @@ -374,6 +414,11 @@ static inline long clk_round_rate(struct clk *clk, unsigned long rate) | |||
| 374 | return 0; | 414 | return 0; |
| 375 | } | 415 | } |
| 376 | 416 | ||
| 417 | static inline bool clk_has_parent(struct clk *clk, struct clk *parent) | ||
| 418 | { | ||
| 419 | return true; | ||
| 420 | } | ||
| 421 | |||
| 377 | static inline int clk_set_parent(struct clk *clk, struct clk *parent) | 422 | static inline int clk_set_parent(struct clk *clk, struct clk *parent) |
| 378 | { | 423 | { |
| 379 | return 0; | 424 | return 0; |
diff --git a/include/linux/clk/tegra.h b/include/linux/clk/tegra.h index 3ca9fca827a2..19c4208f4752 100644 --- a/include/linux/clk/tegra.h +++ b/include/linux/clk/tegra.h | |||
| @@ -120,6 +120,4 @@ static inline void tegra_cpu_clock_resume(void) | |||
| 120 | } | 120 | } |
| 121 | #endif | 121 | #endif |
| 122 | 122 | ||
| 123 | void tegra_clocks_apply_init_table(void); | ||
| 124 | |||
| 125 | #endif /* __LINUX_CLK_TEGRA_H_ */ | 123 | #endif /* __LINUX_CLK_TEGRA_H_ */ |
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h index 55ef529a0dbf..67844003493d 100644 --- a/include/linux/clk/ti.h +++ b/include/linux/clk/ti.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #ifndef __LINUX_CLK_TI_H__ | 15 | #ifndef __LINUX_CLK_TI_H__ |
| 16 | #define __LINUX_CLK_TI_H__ | 16 | #define __LINUX_CLK_TI_H__ |
| 17 | 17 | ||
| 18 | #include <linux/clk-provider.h> | ||
| 18 | #include <linux/clkdev.h> | 19 | #include <linux/clkdev.h> |
| 19 | 20 | ||
| 20 | /** | 21 | /** |
| @@ -217,6 +218,13 @@ struct ti_dt_clk { | |||
| 217 | /* Maximum number of clock memmaps */ | 218 | /* Maximum number of clock memmaps */ |
| 218 | #define CLK_MAX_MEMMAPS 4 | 219 | #define CLK_MAX_MEMMAPS 4 |
| 219 | 220 | ||
| 221 | /* Static memmap indices */ | ||
| 222 | enum { | ||
| 223 | TI_CLKM_CM = 0, | ||
| 224 | TI_CLKM_PRM, | ||
| 225 | TI_CLKM_SCRM, | ||
| 226 | }; | ||
| 227 | |||
| 220 | typedef void (*ti_of_clk_init_cb_t)(struct clk_hw *, struct device_node *); | 228 | typedef void (*ti_of_clk_init_cb_t)(struct clk_hw *, struct device_node *); |
| 221 | 229 | ||
| 222 | /** | 230 | /** |
| @@ -263,6 +271,8 @@ int omap3_noncore_dpll_set_rate_and_parent(struct clk_hw *hw, | |||
| 263 | u8 index); | 271 | u8 index); |
| 264 | long omap3_noncore_dpll_determine_rate(struct clk_hw *hw, | 272 | long omap3_noncore_dpll_determine_rate(struct clk_hw *hw, |
| 265 | unsigned long rate, | 273 | unsigned long rate, |
| 274 | unsigned long min_rate, | ||
| 275 | unsigned long max_rate, | ||
| 266 | unsigned long *best_parent_rate, | 276 | unsigned long *best_parent_rate, |
| 267 | struct clk_hw **best_parent_clk); | 277 | struct clk_hw **best_parent_clk); |
| 268 | unsigned long omap4_dpll_regm4xen_recalc(struct clk_hw *hw, | 278 | unsigned long omap4_dpll_regm4xen_recalc(struct clk_hw *hw, |
| @@ -272,6 +282,8 @@ long omap4_dpll_regm4xen_round_rate(struct clk_hw *hw, | |||
| 272 | unsigned long *parent_rate); | 282 | unsigned long *parent_rate); |
| 273 | long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw, | 283 | long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw, |
| 274 | unsigned long rate, | 284 | unsigned long rate, |
| 285 | unsigned long min_rate, | ||
| 286 | unsigned long max_rate, | ||
| 275 | unsigned long *best_parent_rate, | 287 | unsigned long *best_parent_rate, |
| 276 | struct clk_hw **best_parent_clk); | 288 | struct clk_hw **best_parent_clk); |
| 277 | u8 omap2_init_dpll_parent(struct clk_hw *hw); | 289 | u8 omap2_init_dpll_parent(struct clk_hw *hw); |
| @@ -348,4 +360,17 @@ extern const struct clk_hw_omap_ops clkhwops_omap3430es2_iclk_ssi_wait; | |||
| 348 | extern const struct clk_hw_omap_ops clkhwops_omap3430es2_iclk_dss_usbhost_wait; | 360 | extern const struct clk_hw_omap_ops clkhwops_omap3430es2_iclk_dss_usbhost_wait; |
| 349 | extern const struct clk_hw_omap_ops clkhwops_omap3430es2_iclk_hsotgusb_wait; | 361 | extern const struct clk_hw_omap_ops clkhwops_omap3430es2_iclk_hsotgusb_wait; |
| 350 | 362 | ||
| 363 | #ifdef CONFIG_ATAGS | ||
| 364 | int omap3430_clk_legacy_init(void); | ||
| 365 | int omap3430es1_clk_legacy_init(void); | ||
| 366 | int omap36xx_clk_legacy_init(void); | ||
| 367 | int am35xx_clk_legacy_init(void); | ||
| 368 | #else | ||
| 369 | static inline int omap3430_clk_legacy_init(void) { return -ENXIO; } | ||
| 370 | static inline int omap3430es1_clk_legacy_init(void) { return -ENXIO; } | ||
| 371 | static inline int omap36xx_clk_legacy_init(void) { return -ENXIO; } | ||
| 372 | static inline int am35xx_clk_legacy_init(void) { return -ENXIO; } | ||
| 373 | #endif | ||
| 374 | |||
| 375 | |||
| 351 | #endif | 376 | #endif |
diff --git a/include/linux/compiler.h b/include/linux/compiler.h index d1ec10a940ff..1b45e4a0519b 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h | |||
| @@ -202,7 +202,7 @@ static __always_inline void data_access_exceeds_word_size(void) | |||
| 202 | { | 202 | { |
| 203 | } | 203 | } |
| 204 | 204 | ||
| 205 | static __always_inline void __read_once_size(volatile void *p, void *res, int size) | 205 | static __always_inline void __read_once_size(const volatile void *p, void *res, int size) |
| 206 | { | 206 | { |
| 207 | switch (size) { | 207 | switch (size) { |
| 208 | case 1: *(__u8 *)res = *(volatile __u8 *)p; break; | 208 | case 1: *(__u8 *)res = *(volatile __u8 *)p; break; |
| @@ -259,10 +259,10 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s | |||
| 259 | */ | 259 | */ |
| 260 | 260 | ||
| 261 | #define READ_ONCE(x) \ | 261 | #define READ_ONCE(x) \ |
| 262 | ({ typeof(x) __val; __read_once_size(&x, &__val, sizeof(__val)); __val; }) | 262 | ({ union { typeof(x) __val; char __c[1]; } __u; __read_once_size(&(x), __u.__c, sizeof(x)); __u.__val; }) |
| 263 | 263 | ||
| 264 | #define WRITE_ONCE(x, val) \ | 264 | #define WRITE_ONCE(x, val) \ |
| 265 | ({ typeof(x) __val; __val = val; __write_once_size(&x, &__val, sizeof(__val)); __val; }) | 265 | ({ typeof(x) __val = (val); __write_once_size(&(x), &__val, sizeof(__val)); __val; }) |
| 266 | 266 | ||
| 267 | #endif /* __KERNEL__ */ | 267 | #endif /* __KERNEL__ */ |
| 268 | 268 | ||
diff --git a/include/linux/dcache.h b/include/linux/dcache.h index 92c08cf7670e..d8358799c594 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h | |||
| @@ -215,13 +215,16 @@ struct dentry_operations { | |||
| 215 | #define DCACHE_LRU_LIST 0x00080000 | 215 | #define DCACHE_LRU_LIST 0x00080000 |
| 216 | 216 | ||
| 217 | #define DCACHE_ENTRY_TYPE 0x00700000 | 217 | #define DCACHE_ENTRY_TYPE 0x00700000 |
| 218 | #define DCACHE_MISS_TYPE 0x00000000 /* Negative dentry */ | 218 | #define DCACHE_MISS_TYPE 0x00000000 /* Negative dentry (maybe fallthru to nowhere) */ |
| 219 | #define DCACHE_DIRECTORY_TYPE 0x00100000 /* Normal directory */ | 219 | #define DCACHE_WHITEOUT_TYPE 0x00100000 /* Whiteout dentry (stop pathwalk) */ |
| 220 | #define DCACHE_AUTODIR_TYPE 0x00200000 /* Lookupless directory (presumed automount) */ | 220 | #define DCACHE_DIRECTORY_TYPE 0x00200000 /* Normal directory */ |
| 221 | #define DCACHE_SYMLINK_TYPE 0x00300000 /* Symlink */ | 221 | #define DCACHE_AUTODIR_TYPE 0x00300000 /* Lookupless directory (presumed automount) */ |
| 222 | #define DCACHE_FILE_TYPE 0x00400000 /* Other file type */ | 222 | #define DCACHE_REGULAR_TYPE 0x00400000 /* Regular file type (or fallthru to such) */ |
| 223 | #define DCACHE_SPECIAL_TYPE 0x00500000 /* Other file type (or fallthru to such) */ | ||
| 224 | #define DCACHE_SYMLINK_TYPE 0x00600000 /* Symlink (or fallthru to such) */ | ||
| 223 | 225 | ||
| 224 | #define DCACHE_MAY_FREE 0x00800000 | 226 | #define DCACHE_MAY_FREE 0x00800000 |
| 227 | #define DCACHE_FALLTHRU 0x01000000 /* Fall through to lower layer */ | ||
| 225 | 228 | ||
| 226 | extern seqlock_t rename_lock; | 229 | extern seqlock_t rename_lock; |
| 227 | 230 | ||
| @@ -423,6 +426,16 @@ static inline unsigned __d_entry_type(const struct dentry *dentry) | |||
| 423 | return dentry->d_flags & DCACHE_ENTRY_TYPE; | 426 | return dentry->d_flags & DCACHE_ENTRY_TYPE; |
| 424 | } | 427 | } |
| 425 | 428 | ||
| 429 | static inline bool d_is_miss(const struct dentry *dentry) | ||
| 430 | { | ||
| 431 | return __d_entry_type(dentry) == DCACHE_MISS_TYPE; | ||
| 432 | } | ||
| 433 | |||
| 434 | static inline bool d_is_whiteout(const struct dentry *dentry) | ||
| 435 | { | ||
| 436 | return __d_entry_type(dentry) == DCACHE_WHITEOUT_TYPE; | ||
| 437 | } | ||
| 438 | |||
| 426 | static inline bool d_can_lookup(const struct dentry *dentry) | 439 | static inline bool d_can_lookup(const struct dentry *dentry) |
| 427 | { | 440 | { |
| 428 | return __d_entry_type(dentry) == DCACHE_DIRECTORY_TYPE; | 441 | return __d_entry_type(dentry) == DCACHE_DIRECTORY_TYPE; |
| @@ -443,14 +456,25 @@ static inline bool d_is_symlink(const struct dentry *dentry) | |||
| 443 | return __d_entry_type(dentry) == DCACHE_SYMLINK_TYPE; | 456 | return __d_entry_type(dentry) == DCACHE_SYMLINK_TYPE; |
| 444 | } | 457 | } |
| 445 | 458 | ||
| 459 | static inline bool d_is_reg(const struct dentry *dentry) | ||
| 460 | { | ||
| 461 | return __d_entry_type(dentry) == DCACHE_REGULAR_TYPE; | ||
| 462 | } | ||
| 463 | |||
| 464 | static inline bool d_is_special(const struct dentry *dentry) | ||
| 465 | { | ||
| 466 | return __d_entry_type(dentry) == DCACHE_SPECIAL_TYPE; | ||
| 467 | } | ||
| 468 | |||
| 446 | static inline bool d_is_file(const struct dentry *dentry) | 469 | static inline bool d_is_file(const struct dentry *dentry) |
| 447 | { | 470 | { |
| 448 | return __d_entry_type(dentry) == DCACHE_FILE_TYPE; | 471 | return d_is_reg(dentry) || d_is_special(dentry); |
| 449 | } | 472 | } |
| 450 | 473 | ||
| 451 | static inline bool d_is_negative(const struct dentry *dentry) | 474 | static inline bool d_is_negative(const struct dentry *dentry) |
| 452 | { | 475 | { |
| 453 | return __d_entry_type(dentry) == DCACHE_MISS_TYPE; | 476 | // TODO: check d_is_whiteout(dentry) also. |
| 477 | return d_is_miss(dentry); | ||
| 454 | } | 478 | } |
| 455 | 479 | ||
| 456 | static inline bool d_is_positive(const struct dentry *dentry) | 480 | static inline bool d_is_positive(const struct dentry *dentry) |
| @@ -458,10 +482,75 @@ static inline bool d_is_positive(const struct dentry *dentry) | |||
| 458 | return !d_is_negative(dentry); | 482 | return !d_is_negative(dentry); |
| 459 | } | 483 | } |
| 460 | 484 | ||
| 485 | extern void d_set_fallthru(struct dentry *dentry); | ||
| 486 | |||
| 487 | static inline bool d_is_fallthru(const struct dentry *dentry) | ||
| 488 | { | ||
| 489 | return dentry->d_flags & DCACHE_FALLTHRU; | ||
| 490 | } | ||
| 491 | |||
| 492 | |||
| 461 | extern int sysctl_vfs_cache_pressure; | 493 | extern int sysctl_vfs_cache_pressure; |
| 462 | 494 | ||
| 463 | static inline unsigned long vfs_pressure_ratio(unsigned long val) | 495 | static inline unsigned long vfs_pressure_ratio(unsigned long val) |
| 464 | { | 496 | { |
| 465 | return mult_frac(val, sysctl_vfs_cache_pressure, 100); | 497 | return mult_frac(val, sysctl_vfs_cache_pressure, 100); |
| 466 | } | 498 | } |
| 499 | |||
| 500 | /** | ||
| 501 | * d_inode - Get the actual inode of this dentry | ||
| 502 | * @dentry: The dentry to query | ||
| 503 | * | ||
| 504 | * This is the helper normal filesystems should use to get at their own inodes | ||
| 505 | * in their own dentries and ignore the layering superimposed upon them. | ||
| 506 | */ | ||
| 507 | static inline struct inode *d_inode(const struct dentry *dentry) | ||
| 508 | { | ||
| 509 | return dentry->d_inode; | ||
| 510 | } | ||
| 511 | |||
| 512 | /** | ||
| 513 | * d_inode_rcu - Get the actual inode of this dentry with ACCESS_ONCE() | ||
| 514 | * @dentry: The dentry to query | ||
| 515 | * | ||
| 516 | * This is the helper normal filesystems should use to get at their own inodes | ||
| 517 | * in their own dentries and ignore the layering superimposed upon them. | ||
| 518 | */ | ||
| 519 | static inline struct inode *d_inode_rcu(const struct dentry *dentry) | ||
| 520 | { | ||
| 521 | return ACCESS_ONCE(dentry->d_inode); | ||
| 522 | } | ||
| 523 | |||
| 524 | /** | ||
| 525 | * d_backing_inode - Get upper or lower inode we should be using | ||
| 526 | * @upper: The upper layer | ||
| 527 | * | ||
| 528 | * This is the helper that should be used to get at the inode that will be used | ||
| 529 | * if this dentry were to be opened as a file. The inode may be on the upper | ||
| 530 | * dentry or it may be on a lower dentry pinned by the upper. | ||
| 531 | * | ||
| 532 | * Normal filesystems should not use this to access their own inodes. | ||
| 533 | */ | ||
| 534 | static inline struct inode *d_backing_inode(const struct dentry *upper) | ||
| 535 | { | ||
| 536 | struct inode *inode = upper->d_inode; | ||
| 537 | |||
| 538 | return inode; | ||
| 539 | } | ||
| 540 | |||
| 541 | /** | ||
| 542 | * d_backing_dentry - Get upper or lower dentry we should be using | ||
| 543 | * @upper: The upper layer | ||
| 544 | * | ||
| 545 | * This is the helper that should be used to get the dentry of the inode that | ||
| 546 | * will be used if this dentry were opened as a file. It may be the upper | ||
| 547 | * dentry or it may be a lower dentry pinned by the upper. | ||
| 548 | * | ||
| 549 | * Normal filesystems should not use this to access their own dentries. | ||
| 550 | */ | ||
| 551 | static inline struct dentry *d_backing_dentry(struct dentry *upper) | ||
| 552 | { | ||
| 553 | return upper; | ||
| 554 | } | ||
| 555 | |||
| 467 | #endif /* __LINUX_DCACHE_H */ | 556 | #endif /* __LINUX_DCACHE_H */ |
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 40cd75e21ea2..b6997a0cb528 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
| @@ -189,25 +189,6 @@ enum dma_ctrl_flags { | |||
| 189 | }; | 189 | }; |
| 190 | 190 | ||
| 191 | /** | 191 | /** |
| 192 | * enum dma_ctrl_cmd - DMA operations that can optionally be exercised | ||
| 193 | * on a running channel. | ||
| 194 | * @DMA_TERMINATE_ALL: terminate all ongoing transfers | ||
| 195 | * @DMA_PAUSE: pause ongoing transfers | ||
| 196 | * @DMA_RESUME: resume paused transfer | ||
| 197 | * @DMA_SLAVE_CONFIG: this command is only implemented by DMA controllers | ||
| 198 | * that need to runtime reconfigure the slave channels (as opposed to passing | ||
| 199 | * configuration data in statically from the platform). An additional | ||
| 200 | * argument of struct dma_slave_config must be passed in with this | ||
| 201 | * command. | ||
| 202 | */ | ||
| 203 | enum dma_ctrl_cmd { | ||
| 204 | DMA_TERMINATE_ALL, | ||
| 205 | DMA_PAUSE, | ||
| 206 | DMA_RESUME, | ||
| 207 | DMA_SLAVE_CONFIG, | ||
| 208 | }; | ||
| 209 | |||
| 210 | /** | ||
| 211 | * enum sum_check_bits - bit position of pq_check_flags | 192 | * enum sum_check_bits - bit position of pq_check_flags |
| 212 | */ | 193 | */ |
| 213 | enum sum_check_bits { | 194 | enum sum_check_bits { |
| @@ -298,6 +279,9 @@ enum dma_slave_buswidth { | |||
| 298 | DMA_SLAVE_BUSWIDTH_3_BYTES = 3, | 279 | DMA_SLAVE_BUSWIDTH_3_BYTES = 3, |
| 299 | DMA_SLAVE_BUSWIDTH_4_BYTES = 4, | 280 | DMA_SLAVE_BUSWIDTH_4_BYTES = 4, |
| 300 | DMA_SLAVE_BUSWIDTH_8_BYTES = 8, | 281 | DMA_SLAVE_BUSWIDTH_8_BYTES = 8, |
| 282 | DMA_SLAVE_BUSWIDTH_16_BYTES = 16, | ||
| 283 | DMA_SLAVE_BUSWIDTH_32_BYTES = 32, | ||
| 284 | DMA_SLAVE_BUSWIDTH_64_BYTES = 64, | ||
| 301 | }; | 285 | }; |
| 302 | 286 | ||
| 303 | /** | 287 | /** |
| @@ -336,9 +320,8 @@ enum dma_slave_buswidth { | |||
| 336 | * This struct is passed in as configuration data to a DMA engine | 320 | * This struct is passed in as configuration data to a DMA engine |
| 337 | * in order to set up a certain channel for DMA transport at runtime. | 321 | * in order to set up a certain channel for DMA transport at runtime. |
| 338 | * The DMA device/engine has to provide support for an additional | 322 | * The DMA device/engine has to provide support for an additional |
| 339 | * command in the channel config interface, DMA_SLAVE_CONFIG | 323 | * callback in the dma_device structure, device_config and this struct |
| 340 | * and this struct will then be passed in as an argument to the | 324 | * will then be passed in as an argument to the function. |
| 341 | * DMA engine device_control() function. | ||
| 342 | * | 325 | * |
| 343 | * The rationale for adding configuration information to this struct is as | 326 | * The rationale for adding configuration information to this struct is as |
| 344 | * follows: if it is likely that more than one DMA slave controllers in | 327 | * follows: if it is likely that more than one DMA slave controllers in |
| @@ -387,7 +370,7 @@ enum dma_residue_granularity { | |||
| 387 | /* struct dma_slave_caps - expose capabilities of a slave channel only | 370 | /* struct dma_slave_caps - expose capabilities of a slave channel only |
| 388 | * | 371 | * |
| 389 | * @src_addr_widths: bit mask of src addr widths the channel supports | 372 | * @src_addr_widths: bit mask of src addr widths the channel supports |
| 390 | * @dstn_addr_widths: bit mask of dstn addr widths the channel supports | 373 | * @dst_addr_widths: bit mask of dstn addr widths the channel supports |
| 391 | * @directions: bit mask of slave direction the channel supported | 374 | * @directions: bit mask of slave direction the channel supported |
| 392 | * since the enum dma_transfer_direction is not defined as bits for each | 375 | * since the enum dma_transfer_direction is not defined as bits for each |
| 393 | * type of direction, the dma controller should fill (1 << <TYPE>) and same | 376 | * type of direction, the dma controller should fill (1 << <TYPE>) and same |
| @@ -398,7 +381,7 @@ enum dma_residue_granularity { | |||
| 398 | */ | 381 | */ |
| 399 | struct dma_slave_caps { | 382 | struct dma_slave_caps { |
| 400 | u32 src_addr_widths; | 383 | u32 src_addr_widths; |
| 401 | u32 dstn_addr_widths; | 384 | u32 dst_addr_widths; |
| 402 | u32 directions; | 385 | u32 directions; |
| 403 | bool cmd_pause; | 386 | bool cmd_pause; |
| 404 | bool cmd_terminate; | 387 | bool cmd_terminate; |
| @@ -594,6 +577,14 @@ struct dma_tx_state { | |||
| 594 | * @fill_align: alignment shift for memset operations | 577 | * @fill_align: alignment shift for memset operations |
| 595 | * @dev_id: unique device ID | 578 | * @dev_id: unique device ID |
| 596 | * @dev: struct device reference for dma mapping api | 579 | * @dev: struct device reference for dma mapping api |
| 580 | * @src_addr_widths: bit mask of src addr widths the device supports | ||
| 581 | * @dst_addr_widths: bit mask of dst addr widths the device supports | ||
| 582 | * @directions: bit mask of slave direction the device supports since | ||
| 583 | * the enum dma_transfer_direction is not defined as bits for | ||
| 584 | * each type of direction, the dma controller should fill (1 << | ||
| 585 | * <TYPE>) and same should be checked by controller as well | ||
| 586 | * @residue_granularity: granularity of the transfer residue reported | ||
| 587 | * by tx_status | ||
| 597 | * @device_alloc_chan_resources: allocate resources and return the | 588 | * @device_alloc_chan_resources: allocate resources and return the |
| 598 | * number of allocated descriptors | 589 | * number of allocated descriptors |
| 599 | * @device_free_chan_resources: release DMA channel's resources | 590 | * @device_free_chan_resources: release DMA channel's resources |
| @@ -608,14 +599,19 @@ struct dma_tx_state { | |||
| 608 | * The function takes a buffer of size buf_len. The callback function will | 599 | * The function takes a buffer of size buf_len. The callback function will |
| 609 | * be called after period_len bytes have been transferred. | 600 | * be called after period_len bytes have been transferred. |
| 610 | * @device_prep_interleaved_dma: Transfer expression in a generic way. | 601 | * @device_prep_interleaved_dma: Transfer expression in a generic way. |
| 611 | * @device_control: manipulate all pending operations on a channel, returns | 602 | * @device_config: Pushes a new configuration to a channel, return 0 or an error |
| 612 | * zero or error code | 603 | * code |
| 604 | * @device_pause: Pauses any transfer happening on a channel. Returns | ||
| 605 | * 0 or an error code | ||
| 606 | * @device_resume: Resumes any transfer on a channel previously | ||
| 607 | * paused. Returns 0 or an error code | ||
| 608 | * @device_terminate_all: Aborts all transfers on a channel. Returns 0 | ||
| 609 | * or an error code | ||
| 613 | * @device_tx_status: poll for transaction completion, the optional | 610 | * @device_tx_status: poll for transaction completion, the optional |
| 614 | * txstate parameter can be supplied with a pointer to get a | 611 | * txstate parameter can be supplied with a pointer to get a |
| 615 | * struct with auxiliary transfer status information, otherwise the call | 612 | * struct with auxiliary transfer status information, otherwise the call |
| 616 | * will just return a simple status code | 613 | * will just return a simple status code |
| 617 | * @device_issue_pending: push pending transactions to hardware | 614 | * @device_issue_pending: push pending transactions to hardware |
| 618 | * @device_slave_caps: return the slave channel capabilities | ||
| 619 | */ | 615 | */ |
| 620 | struct dma_device { | 616 | struct dma_device { |
| 621 | 617 | ||
| @@ -635,14 +631,19 @@ struct dma_device { | |||
| 635 | int dev_id; | 631 | int dev_id; |
| 636 | struct device *dev; | 632 | struct device *dev; |
| 637 | 633 | ||
| 634 | u32 src_addr_widths; | ||
| 635 | u32 dst_addr_widths; | ||
| 636 | u32 directions; | ||
| 637 | enum dma_residue_granularity residue_granularity; | ||
| 638 | |||
| 638 | int (*device_alloc_chan_resources)(struct dma_chan *chan); | 639 | int (*device_alloc_chan_resources)(struct dma_chan *chan); |
| 639 | void (*device_free_chan_resources)(struct dma_chan *chan); | 640 | void (*device_free_chan_resources)(struct dma_chan *chan); |
| 640 | 641 | ||
| 641 | struct dma_async_tx_descriptor *(*device_prep_dma_memcpy)( | 642 | struct dma_async_tx_descriptor *(*device_prep_dma_memcpy)( |
| 642 | struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, | 643 | struct dma_chan *chan, dma_addr_t dst, dma_addr_t src, |
| 643 | size_t len, unsigned long flags); | 644 | size_t len, unsigned long flags); |
| 644 | struct dma_async_tx_descriptor *(*device_prep_dma_xor)( | 645 | struct dma_async_tx_descriptor *(*device_prep_dma_xor)( |
| 645 | struct dma_chan *chan, dma_addr_t dest, dma_addr_t *src, | 646 | struct dma_chan *chan, dma_addr_t dst, dma_addr_t *src, |
| 646 | unsigned int src_cnt, size_t len, unsigned long flags); | 647 | unsigned int src_cnt, size_t len, unsigned long flags); |
| 647 | struct dma_async_tx_descriptor *(*device_prep_dma_xor_val)( | 648 | struct dma_async_tx_descriptor *(*device_prep_dma_xor_val)( |
| 648 | struct dma_chan *chan, dma_addr_t *src, unsigned int src_cnt, | 649 | struct dma_chan *chan, dma_addr_t *src, unsigned int src_cnt, |
| @@ -674,31 +675,26 @@ struct dma_device { | |||
| 674 | struct dma_async_tx_descriptor *(*device_prep_interleaved_dma)( | 675 | struct dma_async_tx_descriptor *(*device_prep_interleaved_dma)( |
| 675 | struct dma_chan *chan, struct dma_interleaved_template *xt, | 676 | struct dma_chan *chan, struct dma_interleaved_template *xt, |
| 676 | unsigned long flags); | 677 | unsigned long flags); |
| 677 | int (*device_control)(struct dma_chan *chan, enum dma_ctrl_cmd cmd, | 678 | |
| 678 | unsigned long arg); | 679 | int (*device_config)(struct dma_chan *chan, |
| 680 | struct dma_slave_config *config); | ||
| 681 | int (*device_pause)(struct dma_chan *chan); | ||
| 682 | int (*device_resume)(struct dma_chan *chan); | ||
| 683 | int (*device_terminate_all)(struct dma_chan *chan); | ||
| 679 | 684 | ||
| 680 | enum dma_status (*device_tx_status)(struct dma_chan *chan, | 685 | enum dma_status (*device_tx_status)(struct dma_chan *chan, |
| 681 | dma_cookie_t cookie, | 686 | dma_cookie_t cookie, |
| 682 | struct dma_tx_state *txstate); | 687 | struct dma_tx_state *txstate); |
| 683 | void (*device_issue_pending)(struct dma_chan *chan); | 688 | void (*device_issue_pending)(struct dma_chan *chan); |
| 684 | int (*device_slave_caps)(struct dma_chan *chan, struct dma_slave_caps *caps); | ||
| 685 | }; | 689 | }; |
| 686 | 690 | ||
| 687 | static inline int dmaengine_device_control(struct dma_chan *chan, | ||
| 688 | enum dma_ctrl_cmd cmd, | ||
| 689 | unsigned long arg) | ||
| 690 | { | ||
| 691 | if (chan->device->device_control) | ||
| 692 | return chan->device->device_control(chan, cmd, arg); | ||
| 693 | |||
| 694 | return -ENOSYS; | ||
| 695 | } | ||
| 696 | |||
| 697 | static inline int dmaengine_slave_config(struct dma_chan *chan, | 691 | static inline int dmaengine_slave_config(struct dma_chan *chan, |
| 698 | struct dma_slave_config *config) | 692 | struct dma_slave_config *config) |
| 699 | { | 693 | { |
| 700 | return dmaengine_device_control(chan, DMA_SLAVE_CONFIG, | 694 | if (chan->device->device_config) |
| 701 | (unsigned long)config); | 695 | return chan->device->device_config(chan, config); |
| 696 | |||
| 697 | return -ENOSYS; | ||
| 702 | } | 698 | } |
| 703 | 699 | ||
| 704 | static inline bool is_slave_direction(enum dma_transfer_direction direction) | 700 | static inline bool is_slave_direction(enum dma_transfer_direction direction) |
| @@ -765,34 +761,28 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_sg( | |||
| 765 | src_sg, src_nents, flags); | 761 | src_sg, src_nents, flags); |
| 766 | } | 762 | } |
| 767 | 763 | ||
| 768 | static inline int dma_get_slave_caps(struct dma_chan *chan, struct dma_slave_caps *caps) | ||
| 769 | { | ||
| 770 | if (!chan || !caps) | ||
| 771 | return -EINVAL; | ||
| 772 | |||
| 773 | /* check if the channel supports slave transactions */ | ||
| 774 | if (!test_bit(DMA_SLAVE, chan->device->cap_mask.bits)) | ||
| 775 | return -ENXIO; | ||
| 776 | |||
| 777 | if (chan->device->device_slave_caps) | ||
| 778 | return chan->device->device_slave_caps(chan, caps); | ||
| 779 | |||
| 780 | return -ENXIO; | ||
| 781 | } | ||
| 782 | |||
| 783 | static inline int dmaengine_terminate_all(struct dma_chan *chan) | 764 | static inline int dmaengine_terminate_all(struct dma_chan *chan) |
| 784 | { | 765 | { |
| 785 | return dmaengine_device_control(chan, DMA_TERMINATE_ALL, 0); | 766 | if (chan->device->device_terminate_all) |
| 767 | return chan->device->device_terminate_all(chan); | ||
| 768 | |||
| 769 | return -ENOSYS; | ||
| 786 | } | 770 | } |
| 787 | 771 | ||
| 788 | static inline int dmaengine_pause(struct dma_chan *chan) | 772 | static inline int dmaengine_pause(struct dma_chan *chan) |
| 789 | { | 773 | { |
| 790 | return dmaengine_device_control(chan, DMA_PAUSE, 0); | 774 | if (chan->device->device_pause) |
| 775 | return chan->device->device_pause(chan); | ||
| 776 | |||
| 777 | return -ENOSYS; | ||
| 791 | } | 778 | } |
| 792 | 779 | ||
| 793 | static inline int dmaengine_resume(struct dma_chan *chan) | 780 | static inline int dmaengine_resume(struct dma_chan *chan) |
| 794 | { | 781 | { |
| 795 | return dmaengine_device_control(chan, DMA_RESUME, 0); | 782 | if (chan->device->device_resume) |
| 783 | return chan->device->device_resume(chan); | ||
| 784 | |||
| 785 | return -ENOSYS; | ||
| 796 | } | 786 | } |
| 797 | 787 | ||
| 798 | static inline enum dma_status dmaengine_tx_status(struct dma_chan *chan, | 788 | static inline enum dma_status dmaengine_tx_status(struct dma_chan *chan, |
| @@ -1059,6 +1049,7 @@ struct dma_chan *dma_request_slave_channel_reason(struct device *dev, | |||
| 1059 | const char *name); | 1049 | const char *name); |
| 1060 | struct dma_chan *dma_request_slave_channel(struct device *dev, const char *name); | 1050 | struct dma_chan *dma_request_slave_channel(struct device *dev, const char *name); |
| 1061 | void dma_release_channel(struct dma_chan *chan); | 1051 | void dma_release_channel(struct dma_chan *chan); |
| 1052 | int dma_get_slave_caps(struct dma_chan *chan, struct dma_slave_caps *caps); | ||
| 1062 | #else | 1053 | #else |
| 1063 | static inline struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type) | 1054 | static inline struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type) |
| 1064 | { | 1055 | { |
| @@ -1093,6 +1084,11 @@ static inline struct dma_chan *dma_request_slave_channel(struct device *dev, | |||
| 1093 | static inline void dma_release_channel(struct dma_chan *chan) | 1084 | static inline void dma_release_channel(struct dma_chan *chan) |
| 1094 | { | 1085 | { |
| 1095 | } | 1086 | } |
| 1087 | static inline int dma_get_slave_caps(struct dma_chan *chan, | ||
| 1088 | struct dma_slave_caps *caps) | ||
| 1089 | { | ||
| 1090 | return -ENXIO; | ||
| 1091 | } | ||
| 1096 | #endif | 1092 | #endif |
| 1097 | 1093 | ||
| 1098 | /* --- DMA device --- */ | 1094 | /* --- DMA device --- */ |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 447932aed1e1..b4d71b5e1ff2 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -968,9 +968,6 @@ struct file_lock_context { | |||
| 968 | struct list_head flc_flock; | 968 | struct list_head flc_flock; |
| 969 | struct list_head flc_posix; | 969 | struct list_head flc_posix; |
| 970 | struct list_head flc_lease; | 970 | struct list_head flc_lease; |
| 971 | int flc_flock_cnt; | ||
| 972 | int flc_posix_cnt; | ||
| 973 | int flc_lease_cnt; | ||
| 974 | }; | 971 | }; |
| 975 | 972 | ||
| 976 | /* The following constant reflects the upper bound of the file/locking space */ | 973 | /* The following constant reflects the upper bound of the file/locking space */ |
diff --git a/include/linux/hid-sensor-hub.h b/include/linux/hid-sensor-hub.h index 51f7ccadf923..4173a8fdad9e 100644 --- a/include/linux/hid-sensor-hub.h +++ b/include/linux/hid-sensor-hub.h | |||
| @@ -33,6 +33,8 @@ | |||
| 33 | * @units: Measurment unit for this attribute. | 33 | * @units: Measurment unit for this attribute. |
| 34 | * @unit_expo: Exponent used in the data. | 34 | * @unit_expo: Exponent used in the data. |
| 35 | * @size: Size in bytes for data size. | 35 | * @size: Size in bytes for data size. |
| 36 | * @logical_minimum: Logical minimum value for this attribute. | ||
| 37 | * @logical_maximum: Logical maximum value for this attribute. | ||
| 36 | */ | 38 | */ |
| 37 | struct hid_sensor_hub_attribute_info { | 39 | struct hid_sensor_hub_attribute_info { |
| 38 | u32 usage_id; | 40 | u32 usage_id; |
| @@ -146,6 +148,7 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev, | |||
| 146 | 148 | ||
| 147 | /** | 149 | /** |
| 148 | * sensor_hub_input_attr_get_raw_value() - Synchronous read request | 150 | * sensor_hub_input_attr_get_raw_value() - Synchronous read request |
| 151 | * @hsdev: Hub device instance. | ||
| 149 | * @usage_id: Attribute usage id of parent physical device as per spec | 152 | * @usage_id: Attribute usage id of parent physical device as per spec |
| 150 | * @attr_usage_id: Attribute usage id as per spec | 153 | * @attr_usage_id: Attribute usage id as per spec |
| 151 | * @report_id: Report id to look for | 154 | * @report_id: Report id to look for |
| @@ -160,6 +163,7 @@ int sensor_hub_input_attr_get_raw_value(struct hid_sensor_hub_device *hsdev, | |||
| 160 | u32 attr_usage_id, u32 report_id); | 163 | u32 attr_usage_id, u32 report_id); |
| 161 | /** | 164 | /** |
| 162 | * sensor_hub_set_feature() - Feature set request | 165 | * sensor_hub_set_feature() - Feature set request |
| 166 | * @hsdev: Hub device instance. | ||
| 163 | * @report_id: Report id to look for | 167 | * @report_id: Report id to look for |
| 164 | * @field_index: Field index inside a report | 168 | * @field_index: Field index inside a report |
| 165 | * @value: Value to set | 169 | * @value: Value to set |
| @@ -172,6 +176,7 @@ int sensor_hub_set_feature(struct hid_sensor_hub_device *hsdev, u32 report_id, | |||
| 172 | 176 | ||
| 173 | /** | 177 | /** |
| 174 | * sensor_hub_get_feature() - Feature get request | 178 | * sensor_hub_get_feature() - Feature get request |
| 179 | * @hsdev: Hub device instance. | ||
| 175 | * @report_id: Report id to look for | 180 | * @report_id: Report id to look for |
| 176 | * @field_index: Field index inside a report | 181 | * @field_index: Field index inside a report |
| 177 | * @value: Place holder for return value | 182 | * @value: Place holder for return value |
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 7c7695940ddd..f17da50402a4 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
| @@ -130,8 +130,6 @@ extern s32 i2c_smbus_write_i2c_block_data(const struct i2c_client *client, | |||
| 130 | * @probe: Callback for device binding | 130 | * @probe: Callback for device binding |
| 131 | * @remove: Callback for device unbinding | 131 | * @remove: Callback for device unbinding |
| 132 | * @shutdown: Callback for device shutdown | 132 | * @shutdown: Callback for device shutdown |
| 133 | * @suspend: Callback for device suspend | ||
| 134 | * @resume: Callback for device resume | ||
| 135 | * @alert: Alert callback, for example for the SMBus alert protocol | 133 | * @alert: Alert callback, for example for the SMBus alert protocol |
| 136 | * @command: Callback for bus-wide signaling (optional) | 134 | * @command: Callback for bus-wide signaling (optional) |
| 137 | * @driver: Device driver model driver | 135 | * @driver: Device driver model driver |
| @@ -174,8 +172,6 @@ struct i2c_driver { | |||
| 174 | 172 | ||
| 175 | /* driver model interfaces that don't relate to enumeration */ | 173 | /* driver model interfaces that don't relate to enumeration */ |
| 176 | void (*shutdown)(struct i2c_client *); | 174 | void (*shutdown)(struct i2c_client *); |
| 177 | int (*suspend)(struct i2c_client *, pm_message_t mesg); | ||
| 178 | int (*resume)(struct i2c_client *); | ||
| 179 | 175 | ||
| 180 | /* Alert callback, for example for the SMBus alert protocol. | 176 | /* Alert callback, for example for the SMBus alert protocol. |
| 181 | * The format and meaning of the data value depends on the protocol. | 177 | * The format and meaning of the data value depends on the protocol. |
diff --git a/include/linux/irqchip/mips-gic.h b/include/linux/irqchip/mips-gic.h index 420f77b34d02..e6a6aac451db 100644 --- a/include/linux/irqchip/mips-gic.h +++ b/include/linux/irqchip/mips-gic.h | |||
| @@ -243,7 +243,6 @@ extern void gic_write_cpu_compare(cycle_t cnt, int cpu); | |||
| 243 | extern void gic_send_ipi(unsigned int intr); | 243 | extern void gic_send_ipi(unsigned int intr); |
| 244 | extern unsigned int plat_ipi_call_int_xlate(unsigned int); | 244 | extern unsigned int plat_ipi_call_int_xlate(unsigned int); |
| 245 | extern unsigned int plat_ipi_resched_int_xlate(unsigned int); | 245 | extern unsigned int plat_ipi_resched_int_xlate(unsigned int); |
| 246 | extern unsigned int gic_get_timer_pending(void); | ||
| 247 | extern int gic_get_c0_compare_int(void); | 246 | extern int gic_get_c0_compare_int(void); |
| 248 | extern int gic_get_c0_perfcount_int(void); | 247 | extern int gic_get_c0_perfcount_int(void); |
| 249 | #endif /* __LINUX_IRQCHIP_MIPS_GIC_H */ | 248 | #endif /* __LINUX_IRQCHIP_MIPS_GIC_H */ |
diff --git a/include/linux/kdb.h b/include/linux/kdb.h index 75ae2e2631fc..a19bcf9e762e 100644 --- a/include/linux/kdb.h +++ b/include/linux/kdb.h | |||
| @@ -156,8 +156,14 @@ typedef enum { | |||
| 156 | KDB_REASON_SYSTEM_NMI, /* In NMI due to SYSTEM cmd; regs valid */ | 156 | KDB_REASON_SYSTEM_NMI, /* In NMI due to SYSTEM cmd; regs valid */ |
| 157 | } kdb_reason_t; | 157 | } kdb_reason_t; |
| 158 | 158 | ||
| 159 | enum kdb_msgsrc { | ||
| 160 | KDB_MSGSRC_INTERNAL, /* direct call to kdb_printf() */ | ||
| 161 | KDB_MSGSRC_PRINTK, /* trapped from printk() */ | ||
| 162 | }; | ||
| 163 | |||
| 159 | extern int kdb_trap_printk; | 164 | extern int kdb_trap_printk; |
| 160 | extern __printf(1, 0) int vkdb_printf(const char *fmt, va_list args); | 165 | extern __printf(2, 0) int vkdb_printf(enum kdb_msgsrc src, const char *fmt, |
| 166 | va_list args); | ||
| 161 | extern __printf(1, 2) int kdb_printf(const char *, ...); | 167 | extern __printf(1, 2) int kdb_printf(const char *, ...); |
| 162 | typedef __printf(1, 2) int (*kdb_printf_t)(const char *, ...); | 168 | typedef __printf(1, 2) int (*kdb_printf_t)(const char *, ...); |
| 163 | 169 | ||
diff --git a/include/linux/lguest_launcher.h b/include/linux/lguest_launcher.h index 495203ff221c..acd5b12565cc 100644 --- a/include/linux/lguest_launcher.h +++ b/include/linux/lguest_launcher.h | |||
| @@ -8,52 +8,13 @@ | |||
| 8 | * | 8 | * |
| 9 | * The Guest needs devices to do anything useful. Since we don't let it touch | 9 | * The Guest needs devices to do anything useful. Since we don't let it touch |
| 10 | * real devices (think of the damage it could do!) we provide virtual devices. | 10 | * real devices (think of the damage it could do!) we provide virtual devices. |
| 11 | * We could emulate a PCI bus with various devices on it, but that is a fairly | 11 | * We emulate a PCI bus with virtio devices on it; we used to have our own |
| 12 | * complex burden for the Host and suboptimal for the Guest, so we have our own | 12 | * lguest bus which was far simpler, but this tests the virtio 1.0 standard. |
| 13 | * simple lguest bus and we use "virtio" drivers. These drivers need a set of | ||
| 14 | * routines from us which will actually do the virtual I/O, but they handle all | ||
| 15 | * the net/block/console stuff themselves. This means that if we want to add | ||
| 16 | * a new device, we simply need to write a new virtio driver and create support | ||
| 17 | * for it in the Launcher: this code won't need to change. | ||
| 18 | * | 13 | * |
| 19 | * Virtio devices are also used by kvm, so we can simply reuse their optimized | 14 | * Virtio devices are also used by kvm, so we can simply reuse their optimized |
| 20 | * device drivers. And one day when everyone uses virtio, my plan will be | 15 | * device drivers. And one day when everyone uses virtio, my plan will be |
| 21 | * complete. Bwahahahah! | 16 | * complete. Bwahahahah! |
| 22 | * | ||
| 23 | * Devices are described by a simplified ID, a status byte, and some "config" | ||
| 24 | * bytes which describe this device's configuration. This is placed by the | ||
| 25 | * Launcher just above the top of physical memory: | ||
| 26 | */ | ||
| 27 | struct lguest_device_desc { | ||
| 28 | /* The device type: console, network, disk etc. Type 0 terminates. */ | ||
| 29 | __u8 type; | ||
| 30 | /* The number of virtqueues (first in config array) */ | ||
| 31 | __u8 num_vq; | ||
| 32 | /* | ||
| 33 | * The number of bytes of feature bits. Multiply by 2: one for host | ||
| 34 | * features and one for Guest acknowledgements. | ||
| 35 | */ | ||
| 36 | __u8 feature_len; | ||
| 37 | /* The number of bytes of the config array after virtqueues. */ | ||
| 38 | __u8 config_len; | ||
| 39 | /* A status byte, written by the Guest. */ | ||
| 40 | __u8 status; | ||
| 41 | __u8 config[0]; | ||
| 42 | }; | ||
| 43 | |||
| 44 | /*D:135 | ||
| 45 | * This is how we expect the device configuration field for a virtqueue | ||
| 46 | * to be laid out in config space. | ||
| 47 | */ | 17 | */ |
| 48 | struct lguest_vqconfig { | ||
| 49 | /* The number of entries in the virtio_ring */ | ||
| 50 | __u16 num; | ||
| 51 | /* The interrupt we get when something happens. */ | ||
| 52 | __u16 irq; | ||
| 53 | /* The page number of the virtio ring for this device. */ | ||
| 54 | __u32 pfn; | ||
| 55 | }; | ||
| 56 | /*:*/ | ||
| 57 | 18 | ||
| 58 | /* Write command first word is a request. */ | 19 | /* Write command first word is a request. */ |
| 59 | enum lguest_req | 20 | enum lguest_req |
| @@ -62,12 +23,22 @@ enum lguest_req | |||
| 62 | LHREQ_GETDMA, /* No longer used */ | 23 | LHREQ_GETDMA, /* No longer used */ |
| 63 | LHREQ_IRQ, /* + irq */ | 24 | LHREQ_IRQ, /* + irq */ |
| 64 | LHREQ_BREAK, /* No longer used */ | 25 | LHREQ_BREAK, /* No longer used */ |
| 65 | LHREQ_EVENTFD, /* + address, fd. */ | 26 | LHREQ_EVENTFD, /* No longer used. */ |
| 27 | LHREQ_GETREG, /* + offset within struct pt_regs (then read value). */ | ||
| 28 | LHREQ_SETREG, /* + offset within struct pt_regs, value. */ | ||
| 29 | LHREQ_TRAP, /* + trap number to deliver to guest. */ | ||
| 66 | }; | 30 | }; |
| 67 | 31 | ||
| 68 | /* | 32 | /* |
| 69 | * The alignment to use between consumer and producer parts of vring. | 33 | * This is what read() of the lguest fd populates. trap == |
| 70 | * x86 pagesize for historical reasons. | 34 | * LGUEST_TRAP_ENTRY for an LHCALL_NOTIFY (addr is the |
| 35 | * argument), 14 for a page fault in the MMIO region (addr is | ||
| 36 | * the trap address, insn is the instruction), or 13 for a GPF | ||
| 37 | * (insn is the instruction). | ||
| 71 | */ | 38 | */ |
| 72 | #define LGUEST_VRING_ALIGN 4096 | 39 | struct lguest_pending { |
| 40 | __u8 trap; | ||
| 41 | __u8 insn[7]; | ||
| 42 | __u32 addr; | ||
| 43 | }; | ||
| 73 | #endif /* _LINUX_LGUEST_LAUNCHER */ | 44 | #endif /* _LINUX_LGUEST_LAUNCHER */ |
diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h index 81589d176ae8..dfabd6db7ddf 100644 --- a/include/linux/mfd/axp20x.h +++ b/include/linux/mfd/axp20x.h | |||
| @@ -124,10 +124,27 @@ enum { | |||
| 124 | #define AXP288_PMIC_ADC_H 0x56 | 124 | #define AXP288_PMIC_ADC_H 0x56 |
| 125 | #define AXP288_PMIC_ADC_L 0x57 | 125 | #define AXP288_PMIC_ADC_L 0x57 |
| 126 | #define AXP288_ADC_TS_PIN_CTRL 0x84 | 126 | #define AXP288_ADC_TS_PIN_CTRL 0x84 |
| 127 | |||
| 128 | #define AXP288_PMIC_ADC_EN 0x84 | 127 | #define AXP288_PMIC_ADC_EN 0x84 |
| 129 | #define AXP288_FG_TUNE5 0xed | ||
| 130 | 128 | ||
| 129 | /* Fuel Gauge */ | ||
| 130 | #define AXP288_FG_RDC1_REG 0xba | ||
| 131 | #define AXP288_FG_RDC0_REG 0xbb | ||
| 132 | #define AXP288_FG_OCVH_REG 0xbc | ||
| 133 | #define AXP288_FG_OCVL_REG 0xbd | ||
| 134 | #define AXP288_FG_OCV_CURVE_REG 0xc0 | ||
| 135 | #define AXP288_FG_DES_CAP1_REG 0xe0 | ||
| 136 | #define AXP288_FG_DES_CAP0_REG 0xe1 | ||
| 137 | #define AXP288_FG_CC_MTR1_REG 0xe2 | ||
| 138 | #define AXP288_FG_CC_MTR0_REG 0xe3 | ||
| 139 | #define AXP288_FG_OCV_CAP_REG 0xe4 | ||
| 140 | #define AXP288_FG_CC_CAP_REG 0xe5 | ||
| 141 | #define AXP288_FG_LOW_CAP_REG 0xe6 | ||
| 142 | #define AXP288_FG_TUNE0 0xe8 | ||
| 143 | #define AXP288_FG_TUNE1 0xe9 | ||
| 144 | #define AXP288_FG_TUNE2 0xea | ||
| 145 | #define AXP288_FG_TUNE3 0xeb | ||
| 146 | #define AXP288_FG_TUNE4 0xec | ||
| 147 | #define AXP288_FG_TUNE5 0xed | ||
| 131 | 148 | ||
| 132 | /* Regulators IDs */ | 149 | /* Regulators IDs */ |
| 133 | enum { | 150 | enum { |
| @@ -236,4 +253,26 @@ struct axp20x_dev { | |||
| 236 | const struct regmap_irq_chip *regmap_irq_chip; | 253 | const struct regmap_irq_chip *regmap_irq_chip; |
| 237 | }; | 254 | }; |
| 238 | 255 | ||
| 256 | #define BATTID_LEN 64 | ||
| 257 | #define OCV_CURVE_SIZE 32 | ||
| 258 | #define MAX_THERM_CURVE_SIZE 25 | ||
| 259 | #define PD_DEF_MIN_TEMP 0 | ||
| 260 | #define PD_DEF_MAX_TEMP 55 | ||
| 261 | |||
| 262 | struct axp20x_fg_pdata { | ||
| 263 | char battid[BATTID_LEN + 1]; | ||
| 264 | int design_cap; | ||
| 265 | int min_volt; | ||
| 266 | int max_volt; | ||
| 267 | int max_temp; | ||
| 268 | int min_temp; | ||
| 269 | int cap1; | ||
| 270 | int cap0; | ||
| 271 | int rdc1; | ||
| 272 | int rdc0; | ||
| 273 | int ocv_curve[OCV_CURVE_SIZE]; | ||
| 274 | int tcsz; | ||
| 275 | int thermistor_curve[MAX_THERM_CURVE_SIZE][2]; | ||
| 276 | }; | ||
| 277 | |||
| 239 | #endif /* __LINUX_MFD_AXP20X_H */ | 278 | #endif /* __LINUX_MFD_AXP20X_H */ |
diff --git a/include/linux/mfd/da9063/core.h b/include/linux/mfd/da9063/core.h index b92a3262f8f6..79f4d822ba13 100644 --- a/include/linux/mfd/da9063/core.h +++ b/include/linux/mfd/da9063/core.h | |||
| @@ -36,6 +36,7 @@ enum da9063_models { | |||
| 36 | enum da9063_variant_codes { | 36 | enum da9063_variant_codes { |
| 37 | PMIC_DA9063_AD = 0x3, | 37 | PMIC_DA9063_AD = 0x3, |
| 38 | PMIC_DA9063_BB = 0x5, | 38 | PMIC_DA9063_BB = 0x5, |
| 39 | PMIC_DA9063_CA = 0x6, | ||
| 39 | }; | 40 | }; |
| 40 | 41 | ||
| 41 | /* Interrupts */ | 42 | /* Interrupts */ |
diff --git a/include/linux/mfd/da9150/core.h b/include/linux/mfd/da9150/core.h new file mode 100644 index 000000000000..76e668933a77 --- /dev/null +++ b/include/linux/mfd/da9150/core.h | |||
| @@ -0,0 +1,68 @@ | |||
| 1 | /* | ||
| 2 | * DA9150 MFD Driver - Core Data | ||
| 3 | * | ||
| 4 | * Copyright (c) 2014 Dialog Semiconductor | ||
| 5 | * | ||
| 6 | * Author: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify it | ||
| 9 | * under the terms of the GNU General Public License as published by the | ||
| 10 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 11 | * option) any later version. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __DA9150_CORE_H | ||
| 15 | #define __DA9150_CORE_H | ||
| 16 | |||
| 17 | #include <linux/device.h> | ||
| 18 | #include <linux/interrupt.h> | ||
| 19 | #include <linux/regmap.h> | ||
| 20 | |||
| 21 | /* I2C address paging */ | ||
| 22 | #define DA9150_REG_PAGE_SHIFT 8 | ||
| 23 | #define DA9150_REG_PAGE_MASK 0xFF | ||
| 24 | |||
| 25 | /* IRQs */ | ||
| 26 | #define DA9150_NUM_IRQ_REGS 4 | ||
| 27 | #define DA9150_IRQ_VBUS 0 | ||
| 28 | #define DA9150_IRQ_CHG 1 | ||
| 29 | #define DA9150_IRQ_TCLASS 2 | ||
| 30 | #define DA9150_IRQ_TJUNC 3 | ||
| 31 | #define DA9150_IRQ_VFAULT 4 | ||
| 32 | #define DA9150_IRQ_CONF 5 | ||
| 33 | #define DA9150_IRQ_DAT 6 | ||
| 34 | #define DA9150_IRQ_DTYPE 7 | ||
| 35 | #define DA9150_IRQ_ID 8 | ||
| 36 | #define DA9150_IRQ_ADP 9 | ||
| 37 | #define DA9150_IRQ_SESS_END 10 | ||
| 38 | #define DA9150_IRQ_SESS_VLD 11 | ||
| 39 | #define DA9150_IRQ_FG 12 | ||
| 40 | #define DA9150_IRQ_GP 13 | ||
| 41 | #define DA9150_IRQ_TBAT 14 | ||
| 42 | #define DA9150_IRQ_GPIOA 15 | ||
| 43 | #define DA9150_IRQ_GPIOB 16 | ||
| 44 | #define DA9150_IRQ_GPIOC 17 | ||
| 45 | #define DA9150_IRQ_GPIOD 18 | ||
| 46 | #define DA9150_IRQ_GPADC 19 | ||
| 47 | #define DA9150_IRQ_WKUP 20 | ||
| 48 | |||
| 49 | struct da9150_pdata { | ||
| 50 | int irq_base; | ||
| 51 | }; | ||
| 52 | |||
| 53 | struct da9150 { | ||
| 54 | struct device *dev; | ||
| 55 | struct regmap *regmap; | ||
| 56 | struct regmap_irq_chip_data *regmap_irq_data; | ||
| 57 | int irq; | ||
| 58 | int irq_base; | ||
| 59 | }; | ||
| 60 | |||
| 61 | /* Device I/O */ | ||
| 62 | u8 da9150_reg_read(struct da9150 *da9150, u16 reg); | ||
| 63 | void da9150_reg_write(struct da9150 *da9150, u16 reg, u8 val); | ||
| 64 | void da9150_set_bits(struct da9150 *da9150, u16 reg, u8 mask, u8 val); | ||
| 65 | |||
| 66 | void da9150_bulk_read(struct da9150 *da9150, u16 reg, int count, u8 *buf); | ||
| 67 | void da9150_bulk_write(struct da9150 *da9150, u16 reg, int count, const u8 *buf); | ||
| 68 | #endif /* __DA9150_CORE_H */ | ||
diff --git a/include/linux/mfd/da9150/registers.h b/include/linux/mfd/da9150/registers.h new file mode 100644 index 000000000000..27ca6ee4d840 --- /dev/null +++ b/include/linux/mfd/da9150/registers.h | |||
| @@ -0,0 +1,1155 @@ | |||
| 1 | /* | ||
| 2 | * DA9150 MFD Driver - Registers | ||
| 3 | * | ||
| 4 | * Copyright (c) 2014 Dialog Semiconductor | ||
| 5 | * | ||
| 6 | * Author: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify it | ||
| 9 | * under the terms of the GNU General Public License as published by the | ||
| 10 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 11 | * option) any later version. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __DA9150_REGISTERS_H | ||
| 15 | #define __DA9150_REGISTERS_H | ||
| 16 | |||
| 17 | #include <linux/bitops.h> | ||
| 18 | |||
| 19 | /* Registers */ | ||
| 20 | #define DA9150_PAGE_CON 0x000 | ||
| 21 | #define DA9150_STATUS_A 0x068 | ||
| 22 | #define DA9150_STATUS_B 0x069 | ||
| 23 | #define DA9150_STATUS_C 0x06A | ||
| 24 | #define DA9150_STATUS_D 0x06B | ||
| 25 | #define DA9150_STATUS_E 0x06C | ||
| 26 | #define DA9150_STATUS_F 0x06D | ||
| 27 | #define DA9150_STATUS_G 0x06E | ||
| 28 | #define DA9150_STATUS_H 0x06F | ||
| 29 | #define DA9150_STATUS_I 0x070 | ||
| 30 | #define DA9150_STATUS_J 0x071 | ||
| 31 | #define DA9150_STATUS_K 0x072 | ||
| 32 | #define DA9150_STATUS_L 0x073 | ||
| 33 | #define DA9150_STATUS_N 0x074 | ||
| 34 | #define DA9150_FAULT_LOG_A 0x076 | ||
| 35 | #define DA9150_FAULT_LOG_B 0x077 | ||
| 36 | #define DA9150_EVENT_E 0x078 | ||
| 37 | #define DA9150_EVENT_F 0x079 | ||
| 38 | #define DA9150_EVENT_G 0x07A | ||
| 39 | #define DA9150_EVENT_H 0x07B | ||
| 40 | #define DA9150_IRQ_MASK_E 0x07C | ||
| 41 | #define DA9150_IRQ_MASK_F 0x07D | ||
| 42 | #define DA9150_IRQ_MASK_G 0x07E | ||
| 43 | #define DA9150_IRQ_MASK_H 0x07F | ||
| 44 | #define DA9150_PAGE_CON_1 0x080 | ||
| 45 | #define DA9150_CONFIG_A 0x0E0 | ||
| 46 | #define DA9150_CONFIG_B 0x0E1 | ||
| 47 | #define DA9150_CONFIG_C 0x0E2 | ||
| 48 | #define DA9150_CONFIG_D 0x0E3 | ||
| 49 | #define DA9150_CONFIG_E 0x0E4 | ||
| 50 | #define DA9150_CONTROL_A 0x0E5 | ||
| 51 | #define DA9150_CONTROL_B 0x0E6 | ||
| 52 | #define DA9150_CONTROL_C 0x0E7 | ||
| 53 | #define DA9150_GPIO_A_B 0x0E8 | ||
| 54 | #define DA9150_GPIO_C_D 0x0E9 | ||
| 55 | #define DA9150_GPIO_MODE_CONT 0x0EA | ||
| 56 | #define DA9150_GPIO_CTRL_B 0x0EB | ||
| 57 | #define DA9150_GPIO_CTRL_A 0x0EC | ||
| 58 | #define DA9150_GPIO_CTRL_C 0x0ED | ||
| 59 | #define DA9150_GPIO_CFG_A 0x0EE | ||
| 60 | #define DA9150_GPIO_CFG_B 0x0EF | ||
| 61 | #define DA9150_GPIO_CFG_C 0x0F0 | ||
| 62 | #define DA9150_GPADC_MAN 0x0F2 | ||
| 63 | #define DA9150_GPADC_RES_A 0x0F4 | ||
| 64 | #define DA9150_GPADC_RES_B 0x0F5 | ||
| 65 | #define DA9150_PAGE_CON_2 0x100 | ||
| 66 | #define DA9150_OTP_CONT_SHARED 0x101 | ||
| 67 | #define DA9150_INTERFACE_SHARED 0x105 | ||
| 68 | #define DA9150_CONFIG_A_SHARED 0x106 | ||
| 69 | #define DA9150_CONFIG_D_SHARED 0x109 | ||
| 70 | #define DA9150_ADETVB_CFG_C 0x150 | ||
| 71 | #define DA9150_ADETD_STAT 0x151 | ||
| 72 | #define DA9150_ADET_CMPSTAT 0x152 | ||
| 73 | #define DA9150_ADET_CTRL_A 0x153 | ||
| 74 | #define DA9150_ADETVB_CFG_B 0x154 | ||
| 75 | #define DA9150_ADETVB_CFG_A 0x155 | ||
| 76 | #define DA9150_ADETAC_CFG_A 0x156 | ||
| 77 | #define DA9150_ADDETAC_CFG_B 0x157 | ||
| 78 | #define DA9150_ADETAC_CFG_C 0x158 | ||
| 79 | #define DA9150_ADETAC_CFG_D 0x159 | ||
| 80 | #define DA9150_ADETVB_CFG_D 0x15A | ||
| 81 | #define DA9150_ADETID_CFG_A 0x15B | ||
| 82 | #define DA9150_ADET_RID_PT_CHG_H 0x15C | ||
| 83 | #define DA9150_ADET_RID_PT_CHG_L 0x15D | ||
| 84 | #define DA9150_PPR_TCTR_B 0x160 | ||
| 85 | #define DA9150_PPR_BKCTRL_A 0x163 | ||
| 86 | #define DA9150_PPR_BKCFG_A 0x164 | ||
| 87 | #define DA9150_PPR_BKCFG_B 0x165 | ||
| 88 | #define DA9150_PPR_CHGCTRL_A 0x166 | ||
| 89 | #define DA9150_PPR_CHGCTRL_B 0x167 | ||
| 90 | #define DA9150_PPR_CHGCTRL_C 0x168 | ||
| 91 | #define DA9150_PPR_TCTR_A 0x169 | ||
| 92 | #define DA9150_PPR_CHGCTRL_D 0x16A | ||
| 93 | #define DA9150_PPR_CHGCTRL_E 0x16B | ||
| 94 | #define DA9150_PPR_CHGCTRL_F 0x16C | ||
| 95 | #define DA9150_PPR_CHGCTRL_G 0x16D | ||
| 96 | #define DA9150_PPR_CHGCTRL_H 0x16E | ||
| 97 | #define DA9150_PPR_CHGCTRL_I 0x16F | ||
| 98 | #define DA9150_PPR_CHGCTRL_J 0x170 | ||
| 99 | #define DA9150_PPR_CHGCTRL_K 0x171 | ||
| 100 | #define DA9150_PPR_CHGCTRL_L 0x172 | ||
| 101 | #define DA9150_PPR_CHGCTRL_M 0x173 | ||
| 102 | #define DA9150_PPR_THYST_A 0x174 | ||
| 103 | #define DA9150_PPR_THYST_B 0x175 | ||
| 104 | #define DA9150_PPR_THYST_C 0x176 | ||
| 105 | #define DA9150_PPR_THYST_D 0x177 | ||
| 106 | #define DA9150_PPR_THYST_E 0x178 | ||
| 107 | #define DA9150_PPR_THYST_F 0x179 | ||
| 108 | #define DA9150_PPR_THYST_G 0x17A | ||
| 109 | #define DA9150_PAGE_CON_3 0x180 | ||
| 110 | #define DA9150_PAGE_CON_4 0x200 | ||
| 111 | #define DA9150_PAGE_CON_5 0x280 | ||
| 112 | #define DA9150_PAGE_CON_6 0x300 | ||
| 113 | #define DA9150_COREBTLD_STAT_A 0x302 | ||
| 114 | #define DA9150_COREBTLD_CTRL_A 0x303 | ||
| 115 | #define DA9150_CORE_CONFIG_A 0x304 | ||
| 116 | #define DA9150_CORE_CONFIG_C 0x305 | ||
| 117 | #define DA9150_CORE_CONFIG_B 0x306 | ||
| 118 | #define DA9150_CORE_CFG_DATA_A 0x307 | ||
| 119 | #define DA9150_CORE_CFG_DATA_B 0x308 | ||
| 120 | #define DA9150_CORE_CMD_A 0x309 | ||
| 121 | #define DA9150_CORE_DATA_A 0x30A | ||
| 122 | #define DA9150_CORE_DATA_B 0x30B | ||
| 123 | #define DA9150_CORE_DATA_C 0x30C | ||
| 124 | #define DA9150_CORE_DATA_D 0x30D | ||
| 125 | #define DA9150_CORE2WIRE_STAT_A 0x310 | ||
| 126 | #define DA9150_CORE2WIRE_CTRL_A 0x311 | ||
| 127 | #define DA9150_FW_CTRL_A 0x312 | ||
| 128 | #define DA9150_FW_CTRL_C 0x313 | ||
| 129 | #define DA9150_FW_CTRL_D 0x314 | ||
| 130 | #define DA9150_FG_CTRL_A 0x315 | ||
| 131 | #define DA9150_FG_CTRL_B 0x316 | ||
| 132 | #define DA9150_FW_CTRL_E 0x317 | ||
| 133 | #define DA9150_FW_CTRL_B 0x318 | ||
| 134 | #define DA9150_GPADC_CMAN 0x320 | ||
| 135 | #define DA9150_GPADC_CRES_A 0x322 | ||
| 136 | #define DA9150_GPADC_CRES_B 0x323 | ||
| 137 | #define DA9150_CC_CFG_A 0x328 | ||
| 138 | #define DA9150_CC_CFG_B 0x329 | ||
| 139 | #define DA9150_CC_ICHG_RES_A 0x32A | ||
| 140 | #define DA9150_CC_ICHG_RES_B 0x32B | ||
| 141 | #define DA9150_CC_IAVG_RES_A 0x32C | ||
| 142 | #define DA9150_CC_IAVG_RES_B 0x32D | ||
| 143 | #define DA9150_TAUX_CTRL_A 0x330 | ||
| 144 | #define DA9150_TAUX_RELOAD_H 0x332 | ||
| 145 | #define DA9150_TAUX_RELOAD_L 0x333 | ||
| 146 | #define DA9150_TAUX_VALUE_H 0x334 | ||
| 147 | #define DA9150_TAUX_VALUE_L 0x335 | ||
| 148 | #define DA9150_AUX_DATA_0 0x338 | ||
| 149 | #define DA9150_AUX_DATA_1 0x339 | ||
| 150 | #define DA9150_AUX_DATA_2 0x33A | ||
| 151 | #define DA9150_AUX_DATA_3 0x33B | ||
| 152 | #define DA9150_BIF_CTRL 0x340 | ||
| 153 | #define DA9150_TBAT_CTRL_A 0x342 | ||
| 154 | #define DA9150_TBAT_CTRL_B 0x343 | ||
| 155 | #define DA9150_TBAT_RES_A 0x344 | ||
| 156 | #define DA9150_TBAT_RES_B 0x345 | ||
| 157 | |||
| 158 | /* DA9150_PAGE_CON = 0x000 */ | ||
| 159 | #define DA9150_PAGE_SHIFT 0 | ||
| 160 | #define DA9150_PAGE_MASK (0x3f << 0) | ||
| 161 | #define DA9150_I2C_PAGE_SHIFT 1 | ||
| 162 | #define DA9150_I2C_PAGE_MASK (0x1f << 1) | ||
| 163 | #define DA9150_WRITE_MODE_SHIFT 6 | ||
| 164 | #define DA9150_WRITE_MODE_MASK BIT(6) | ||
| 165 | #define DA9150_REVERT_SHIFT 7 | ||
| 166 | #define DA9150_REVERT_MASK BIT(7) | ||
| 167 | |||
| 168 | /* DA9150_STATUS_A = 0x068 */ | ||
| 169 | #define DA9150_WKUP_STAT_SHIFT 2 | ||
| 170 | #define DA9150_WKUP_STAT_MASK (0x0f << 2) | ||
| 171 | #define DA9150_SLEEP_STAT_SHIFT 6 | ||
| 172 | #define DA9150_SLEEP_STAT_MASK (0x03 << 6) | ||
| 173 | |||
| 174 | /* DA9150_STATUS_B = 0x069 */ | ||
| 175 | #define DA9150_VFAULT_STAT_SHIFT 0 | ||
| 176 | #define DA9150_VFAULT_STAT_MASK BIT(0) | ||
| 177 | #define DA9150_TFAULT_STAT_SHIFT 1 | ||
| 178 | #define DA9150_TFAULT_STAT_MASK BIT(1) | ||
| 179 | |||
| 180 | /* DA9150_STATUS_C = 0x06A */ | ||
| 181 | #define DA9150_VDD33_STAT_SHIFT 0 | ||
| 182 | #define DA9150_VDD33_STAT_MASK BIT(0) | ||
| 183 | #define DA9150_VDD33_SLEEP_SHIFT 1 | ||
| 184 | #define DA9150_VDD33_SLEEP_MASK BIT(1) | ||
| 185 | #define DA9150_LFOSC_STAT_SHIFT 7 | ||
| 186 | #define DA9150_LFOSC_STAT_MASK BIT(7) | ||
| 187 | |||
| 188 | /* DA9150_STATUS_D = 0x06B */ | ||
| 189 | #define DA9150_GPIOA_STAT_SHIFT 0 | ||
| 190 | #define DA9150_GPIOA_STAT_MASK BIT(0) | ||
| 191 | #define DA9150_GPIOB_STAT_SHIFT 1 | ||
| 192 | #define DA9150_GPIOB_STAT_MASK BIT(1) | ||
| 193 | #define DA9150_GPIOC_STAT_SHIFT 2 | ||
| 194 | #define DA9150_GPIOC_STAT_MASK BIT(2) | ||
| 195 | #define DA9150_GPIOD_STAT_SHIFT 3 | ||
| 196 | #define DA9150_GPIOD_STAT_MASK BIT(3) | ||
| 197 | |||
| 198 | /* DA9150_STATUS_E = 0x06C */ | ||
| 199 | #define DA9150_DTYPE_SHIFT 0 | ||
| 200 | #define DA9150_DTYPE_MASK (0x1f << 0) | ||
| 201 | #define DA9150_DTYPE_DT_NIL (0x00 << 0) | ||
| 202 | #define DA9150_DTYPE_DT_USB_OTG BIT(0) | ||
| 203 | #define DA9150_DTYPE_DT_USB_STD (0x02 << 0) | ||
| 204 | #define DA9150_DTYPE_DT_USB_CHG (0x03 << 0) | ||
| 205 | #define DA9150_DTYPE_DT_ACA_CHG (0x04 << 0) | ||
| 206 | #define DA9150_DTYPE_DT_ACA_OTG (0x05 << 0) | ||
| 207 | #define DA9150_DTYPE_DT_ACA_DOC (0x06 << 0) | ||
| 208 | #define DA9150_DTYPE_DT_DED_CHG (0x07 << 0) | ||
| 209 | #define DA9150_DTYPE_DT_CR5_CHG (0x08 << 0) | ||
| 210 | #define DA9150_DTYPE_DT_CR4_CHG (0x0c << 0) | ||
| 211 | #define DA9150_DTYPE_DT_PT_CHG (0x11 << 0) | ||
| 212 | #define DA9150_DTYPE_DT_NN_ACC (0x16 << 0) | ||
| 213 | #define DA9150_DTYPE_DT_NN_CHG (0x17 << 0) | ||
| 214 | |||
| 215 | /* DA9150_STATUS_F = 0x06D */ | ||
| 216 | #define DA9150_SESS_VLD_SHIFT 0 | ||
| 217 | #define DA9150_SESS_VLD_MASK BIT(0) | ||
| 218 | #define DA9150_ID_ERR_SHIFT 1 | ||
| 219 | #define DA9150_ID_ERR_MASK BIT(1) | ||
| 220 | #define DA9150_PT_CHG_SHIFT 2 | ||
| 221 | #define DA9150_PT_CHG_MASK BIT(2) | ||
| 222 | |||
| 223 | /* DA9150_STATUS_G = 0x06E */ | ||
| 224 | #define DA9150_RID_SHIFT 0 | ||
| 225 | #define DA9150_RID_MASK (0xff << 0) | ||
| 226 | |||
| 227 | /* DA9150_STATUS_H = 0x06F */ | ||
| 228 | #define DA9150_VBUS_STAT_SHIFT 0 | ||
| 229 | #define DA9150_VBUS_STAT_MASK (0x07 << 0) | ||
| 230 | #define DA9150_VBUS_STAT_OFF (0x00 << 0) | ||
| 231 | #define DA9150_VBUS_STAT_WAIT BIT(0) | ||
| 232 | #define DA9150_VBUS_STAT_CHG (0x02 << 0) | ||
| 233 | #define DA9150_VBUS_TRED_SHIFT 3 | ||
| 234 | #define DA9150_VBUS_TRED_MASK BIT(3) | ||
| 235 | #define DA9150_VBUS_DROP_STAT_SHIFT 4 | ||
| 236 | #define DA9150_VBUS_DROP_STAT_MASK (0x0f << 4) | ||
| 237 | |||
| 238 | /* DA9150_STATUS_I = 0x070 */ | ||
| 239 | #define DA9150_VBUS_ISET_STAT_SHIFT 0 | ||
| 240 | #define DA9150_VBUS_ISET_STAT_MASK (0x1f << 0) | ||
| 241 | #define DA9150_VBUS_OT_SHIFT 7 | ||
| 242 | #define DA9150_VBUS_OT_MASK BIT(7) | ||
| 243 | |||
| 244 | /* DA9150_STATUS_J = 0x071 */ | ||
| 245 | #define DA9150_CHG_STAT_SHIFT 0 | ||
| 246 | #define DA9150_CHG_STAT_MASK (0x0f << 0) | ||
| 247 | #define DA9150_CHG_STAT_OFF (0x00 << 0) | ||
| 248 | #define DA9150_CHG_STAT_SUSP BIT(0) | ||
| 249 | #define DA9150_CHG_STAT_ACT (0x02 << 0) | ||
| 250 | #define DA9150_CHG_STAT_PRE (0x03 << 0) | ||
| 251 | #define DA9150_CHG_STAT_CC (0x04 << 0) | ||
| 252 | #define DA9150_CHG_STAT_CV (0x05 << 0) | ||
| 253 | #define DA9150_CHG_STAT_FULL (0x06 << 0) | ||
| 254 | #define DA9150_CHG_STAT_TEMP (0x07 << 0) | ||
| 255 | #define DA9150_CHG_STAT_TIME (0x08 << 0) | ||
| 256 | #define DA9150_CHG_STAT_BAT (0x09 << 0) | ||
| 257 | #define DA9150_CHG_TEMP_SHIFT 4 | ||
| 258 | #define DA9150_CHG_TEMP_MASK (0x07 << 4) | ||
| 259 | #define DA9150_CHG_TEMP_UNDER (0x06 << 4) | ||
| 260 | #define DA9150_CHG_TEMP_OVER (0x07 << 4) | ||
| 261 | #define DA9150_CHG_IEND_STAT_SHIFT 7 | ||
| 262 | #define DA9150_CHG_IEND_STAT_MASK BIT(7) | ||
| 263 | |||
| 264 | /* DA9150_STATUS_K = 0x072 */ | ||
| 265 | #define DA9150_CHG_IAV_H_SHIFT 0 | ||
| 266 | #define DA9150_CHG_IAV_H_MASK (0xff << 0) | ||
| 267 | |||
| 268 | /* DA9150_STATUS_L = 0x073 */ | ||
| 269 | #define DA9150_CHG_IAV_L_SHIFT 5 | ||
| 270 | #define DA9150_CHG_IAV_L_MASK (0x07 << 5) | ||
| 271 | |||
| 272 | /* DA9150_STATUS_N = 0x074 */ | ||
| 273 | #define DA9150_CHG_TIME_SHIFT 1 | ||
| 274 | #define DA9150_CHG_TIME_MASK BIT(1) | ||
| 275 | #define DA9150_CHG_TRED_SHIFT 2 | ||
| 276 | #define DA9150_CHG_TRED_MASK BIT(2) | ||
| 277 | #define DA9150_CHG_TJUNC_CLASS_SHIFT 3 | ||
| 278 | #define DA9150_CHG_TJUNC_CLASS_MASK (0x07 << 3) | ||
| 279 | #define DA9150_CHG_TJUNC_CLASS_6 (0x06 << 3) | ||
| 280 | #define DA9150_EBS_STAT_SHIFT 6 | ||
| 281 | #define DA9150_EBS_STAT_MASK BIT(6) | ||
| 282 | #define DA9150_CHG_BAT_REMOVED_SHIFT 7 | ||
| 283 | #define DA9150_CHG_BAT_REMOVED_MASK BIT(7) | ||
| 284 | |||
| 285 | /* DA9150_FAULT_LOG_A = 0x076 */ | ||
| 286 | #define DA9150_TEMP_FAULT_SHIFT 0 | ||
| 287 | #define DA9150_TEMP_FAULT_MASK BIT(0) | ||
| 288 | #define DA9150_VSYS_FAULT_SHIFT 1 | ||
| 289 | #define DA9150_VSYS_FAULT_MASK BIT(1) | ||
| 290 | #define DA9150_START_FAULT_SHIFT 2 | ||
| 291 | #define DA9150_START_FAULT_MASK BIT(2) | ||
| 292 | #define DA9150_EXT_FAULT_SHIFT 3 | ||
| 293 | #define DA9150_EXT_FAULT_MASK BIT(3) | ||
| 294 | #define DA9150_POR_FAULT_SHIFT 4 | ||
| 295 | #define DA9150_POR_FAULT_MASK BIT(4) | ||
| 296 | |||
| 297 | /* DA9150_FAULT_LOG_B = 0x077 */ | ||
| 298 | #define DA9150_VBUS_FAULT_SHIFT 0 | ||
| 299 | #define DA9150_VBUS_FAULT_MASK BIT(0) | ||
| 300 | #define DA9150_OTG_FAULT_SHIFT 1 | ||
| 301 | #define DA9150_OTG_FAULT_MASK BIT(1) | ||
| 302 | |||
| 303 | /* DA9150_EVENT_E = 0x078 */ | ||
| 304 | #define DA9150_E_VBUS_SHIFT 0 | ||
| 305 | #define DA9150_E_VBUS_MASK BIT(0) | ||
| 306 | #define DA9150_E_CHG_SHIFT 1 | ||
| 307 | #define DA9150_E_CHG_MASK BIT(1) | ||
| 308 | #define DA9150_E_TCLASS_SHIFT 2 | ||
| 309 | #define DA9150_E_TCLASS_MASK BIT(2) | ||
| 310 | #define DA9150_E_TJUNC_SHIFT 3 | ||
| 311 | #define DA9150_E_TJUNC_MASK BIT(3) | ||
| 312 | #define DA9150_E_VFAULT_SHIFT 4 | ||
| 313 | #define DA9150_E_VFAULT_MASK BIT(4) | ||
| 314 | #define DA9150_EVENTS_H_SHIFT 5 | ||
| 315 | #define DA9150_EVENTS_H_MASK BIT(5) | ||
| 316 | #define DA9150_EVENTS_G_SHIFT 6 | ||
| 317 | #define DA9150_EVENTS_G_MASK BIT(6) | ||
| 318 | #define DA9150_EVENTS_F_SHIFT 7 | ||
| 319 | #define DA9150_EVENTS_F_MASK BIT(7) | ||
| 320 | |||
| 321 | /* DA9150_EVENT_F = 0x079 */ | ||
| 322 | #define DA9150_E_CONF_SHIFT 0 | ||
| 323 | #define DA9150_E_CONF_MASK BIT(0) | ||
| 324 | #define DA9150_E_DAT_SHIFT 1 | ||
| 325 | #define DA9150_E_DAT_MASK BIT(1) | ||
| 326 | #define DA9150_E_DTYPE_SHIFT 3 | ||
| 327 | #define DA9150_E_DTYPE_MASK BIT(3) | ||
| 328 | #define DA9150_E_ID_SHIFT 4 | ||
| 329 | #define DA9150_E_ID_MASK BIT(4) | ||
| 330 | #define DA9150_E_ADP_SHIFT 5 | ||
| 331 | #define DA9150_E_ADP_MASK BIT(5) | ||
| 332 | #define DA9150_E_SESS_END_SHIFT 6 | ||
| 333 | #define DA9150_E_SESS_END_MASK BIT(6) | ||
| 334 | #define DA9150_E_SESS_VLD_SHIFT 7 | ||
| 335 | #define DA9150_E_SESS_VLD_MASK BIT(7) | ||
| 336 | |||
| 337 | /* DA9150_EVENT_G = 0x07A */ | ||
| 338 | #define DA9150_E_FG_SHIFT 0 | ||
| 339 | #define DA9150_E_FG_MASK BIT(0) | ||
| 340 | #define DA9150_E_GP_SHIFT 1 | ||
| 341 | #define DA9150_E_GP_MASK BIT(1) | ||
| 342 | #define DA9150_E_TBAT_SHIFT 2 | ||
| 343 | #define DA9150_E_TBAT_MASK BIT(2) | ||
| 344 | #define DA9150_E_GPIOA_SHIFT 3 | ||
| 345 | #define DA9150_E_GPIOA_MASK BIT(3) | ||
| 346 | #define DA9150_E_GPIOB_SHIFT 4 | ||
| 347 | #define DA9150_E_GPIOB_MASK BIT(4) | ||
| 348 | #define DA9150_E_GPIOC_SHIFT 5 | ||
| 349 | #define DA9150_E_GPIOC_MASK BIT(5) | ||
| 350 | #define DA9150_E_GPIOD_SHIFT 6 | ||
| 351 | #define DA9150_E_GPIOD_MASK BIT(6) | ||
| 352 | #define DA9150_E_GPADC_SHIFT 7 | ||
| 353 | #define DA9150_E_GPADC_MASK BIT(7) | ||
| 354 | |||
| 355 | /* DA9150_EVENT_H = 0x07B */ | ||
| 356 | #define DA9150_E_WKUP_SHIFT 0 | ||
| 357 | #define DA9150_E_WKUP_MASK BIT(0) | ||
| 358 | |||
| 359 | /* DA9150_IRQ_MASK_E = 0x07C */ | ||
| 360 | #define DA9150_M_VBUS_SHIFT 0 | ||
| 361 | #define DA9150_M_VBUS_MASK BIT(0) | ||
| 362 | #define DA9150_M_CHG_SHIFT 1 | ||
| 363 | #define DA9150_M_CHG_MASK BIT(1) | ||
| 364 | #define DA9150_M_TJUNC_SHIFT 3 | ||
| 365 | #define DA9150_M_TJUNC_MASK BIT(3) | ||
| 366 | #define DA9150_M_VFAULT_SHIFT 4 | ||
| 367 | #define DA9150_M_VFAULT_MASK BIT(4) | ||
| 368 | |||
| 369 | /* DA9150_IRQ_MASK_F = 0x07D */ | ||
| 370 | #define DA9150_M_CONF_SHIFT 0 | ||
| 371 | #define DA9150_M_CONF_MASK BIT(0) | ||
| 372 | #define DA9150_M_DAT_SHIFT 1 | ||
| 373 | #define DA9150_M_DAT_MASK BIT(1) | ||
| 374 | #define DA9150_M_DTYPE_SHIFT 3 | ||
| 375 | #define DA9150_M_DTYPE_MASK BIT(3) | ||
| 376 | #define DA9150_M_ID_SHIFT 4 | ||
| 377 | #define DA9150_M_ID_MASK BIT(4) | ||
| 378 | #define DA9150_M_ADP_SHIFT 5 | ||
| 379 | #define DA9150_M_ADP_MASK BIT(5) | ||
| 380 | #define DA9150_M_SESS_END_SHIFT 6 | ||
| 381 | #define DA9150_M_SESS_END_MASK BIT(6) | ||
| 382 | #define DA9150_M_SESS_VLD_SHIFT 7 | ||
| 383 | #define DA9150_M_SESS_VLD_MASK BIT(7) | ||
| 384 | |||
| 385 | /* DA9150_IRQ_MASK_G = 0x07E */ | ||
| 386 | #define DA9150_M_FG_SHIFT 0 | ||
| 387 | #define DA9150_M_FG_MASK BIT(0) | ||
| 388 | #define DA9150_M_GP_SHIFT 1 | ||
| 389 | #define DA9150_M_GP_MASK BIT(1) | ||
| 390 | #define DA9150_M_TBAT_SHIFT 2 | ||
| 391 | #define DA9150_M_TBAT_MASK BIT(2) | ||
| 392 | #define DA9150_M_GPIOA_SHIFT 3 | ||
| 393 | #define DA9150_M_GPIOA_MASK BIT(3) | ||
| 394 | #define DA9150_M_GPIOB_SHIFT 4 | ||
| 395 | #define DA9150_M_GPIOB_MASK BIT(4) | ||
| 396 | #define DA9150_M_GPIOC_SHIFT 5 | ||
| 397 | #define DA9150_M_GPIOC_MASK BIT(5) | ||
| 398 | #define DA9150_M_GPIOD_SHIFT 6 | ||
| 399 | #define DA9150_M_GPIOD_MASK BIT(6) | ||
| 400 | #define DA9150_M_GPADC_SHIFT 7 | ||
| 401 | #define DA9150_M_GPADC_MASK BIT(7) | ||
| 402 | |||
| 403 | /* DA9150_IRQ_MASK_H = 0x07F */ | ||
| 404 | #define DA9150_M_WKUP_SHIFT 0 | ||
| 405 | #define DA9150_M_WKUP_MASK BIT(0) | ||
| 406 | |||
| 407 | /* DA9150_PAGE_CON_1 = 0x080 */ | ||
| 408 | #define DA9150_PAGE_SHIFT 0 | ||
| 409 | #define DA9150_PAGE_MASK (0x3f << 0) | ||
| 410 | #define DA9150_WRITE_MODE_SHIFT 6 | ||
| 411 | #define DA9150_WRITE_MODE_MASK BIT(6) | ||
| 412 | #define DA9150_REVERT_SHIFT 7 | ||
| 413 | #define DA9150_REVERT_MASK BIT(7) | ||
| 414 | |||
| 415 | /* DA9150_CONFIG_A = 0x0E0 */ | ||
| 416 | #define DA9150_RESET_DUR_SHIFT 0 | ||
| 417 | #define DA9150_RESET_DUR_MASK (0x03 << 0) | ||
| 418 | #define DA9150_RESET_EXT_SHIFT 2 | ||
| 419 | #define DA9150_RESET_EXT_MASK (0x03 << 2) | ||
| 420 | #define DA9150_START_MAX_SHIFT 4 | ||
| 421 | #define DA9150_START_MAX_MASK (0x03 << 4) | ||
| 422 | #define DA9150_PS_WAIT_EN_SHIFT 6 | ||
| 423 | #define DA9150_PS_WAIT_EN_MASK BIT(6) | ||
| 424 | #define DA9150_PS_DISABLE_DIRECT_SHIFT 7 | ||
| 425 | #define DA9150_PS_DISABLE_DIRECT_MASK BIT(7) | ||
| 426 | |||
| 427 | /* DA9150_CONFIG_B = 0x0E1 */ | ||
| 428 | #define DA9150_VFAULT_ADJ_SHIFT 0 | ||
| 429 | #define DA9150_VFAULT_ADJ_MASK (0x0f << 0) | ||
| 430 | #define DA9150_VFAULT_HYST_SHIFT 4 | ||
| 431 | #define DA9150_VFAULT_HYST_MASK (0x07 << 4) | ||
| 432 | #define DA9150_VFAULT_EN_SHIFT 7 | ||
| 433 | #define DA9150_VFAULT_EN_MASK BIT(7) | ||
| 434 | |||
| 435 | /* DA9150_CONFIG_C = 0x0E2 */ | ||
| 436 | #define DA9150_VSYS_MIN_SHIFT 3 | ||
| 437 | #define DA9150_VSYS_MIN_MASK (0x1f << 3) | ||
| 438 | |||
| 439 | /* DA9150_CONFIG_D = 0x0E3 */ | ||
| 440 | #define DA9150_LFOSC_EXT_SHIFT 0 | ||
| 441 | #define DA9150_LFOSC_EXT_MASK BIT(0) | ||
| 442 | #define DA9150_VDD33_DWN_SHIFT 1 | ||
| 443 | #define DA9150_VDD33_DWN_MASK BIT(1) | ||
| 444 | #define DA9150_WKUP_PM_EN_SHIFT 2 | ||
| 445 | #define DA9150_WKUP_PM_EN_MASK BIT(2) | ||
| 446 | #define DA9150_WKUP_CE_SEL_SHIFT 3 | ||
| 447 | #define DA9150_WKUP_CE_SEL_MASK (0x03 << 3) | ||
| 448 | #define DA9150_WKUP_CLK32K_EN_SHIFT 5 | ||
| 449 | #define DA9150_WKUP_CLK32K_EN_MASK BIT(5) | ||
| 450 | #define DA9150_DISABLE_DEL_SHIFT 7 | ||
| 451 | #define DA9150_DISABLE_DEL_MASK BIT(7) | ||
| 452 | |||
| 453 | /* DA9150_CONFIG_E = 0x0E4 */ | ||
| 454 | #define DA9150_PM_SPKSUP_DIS_SHIFT 0 | ||
| 455 | #define DA9150_PM_SPKSUP_DIS_MASK BIT(0) | ||
| 456 | #define DA9150_PM_MERGE_SHIFT 1 | ||
| 457 | #define DA9150_PM_MERGE_MASK BIT(1) | ||
| 458 | #define DA9150_PM_SR_OFF_SHIFT 2 | ||
| 459 | #define DA9150_PM_SR_OFF_MASK BIT(2) | ||
| 460 | #define DA9150_PM_TIMEOUT_EN_SHIFT 3 | ||
| 461 | #define DA9150_PM_TIMEOUT_EN_MASK BIT(3) | ||
| 462 | #define DA9150_PM_DLY_SEL_SHIFT 4 | ||
| 463 | #define DA9150_PM_DLY_SEL_MASK (0x07 << 4) | ||
| 464 | #define DA9150_PM_OUT_DLY_SEL_SHIFT 7 | ||
| 465 | #define DA9150_PM_OUT_DLY_SEL_MASK BIT(7) | ||
| 466 | |||
| 467 | /* DA9150_CONTROL_A = 0x0E5 */ | ||
| 468 | #define DA9150_VDD33_SL_SHIFT 0 | ||
| 469 | #define DA9150_VDD33_SL_MASK BIT(0) | ||
| 470 | #define DA9150_VDD33_LPM_SHIFT 1 | ||
| 471 | #define DA9150_VDD33_LPM_MASK (0x03 << 1) | ||
| 472 | #define DA9150_VDD33_EN_SHIFT 3 | ||
| 473 | #define DA9150_VDD33_EN_MASK BIT(3) | ||
| 474 | #define DA9150_GPI_LPM_SHIFT 6 | ||
| 475 | #define DA9150_GPI_LPM_MASK BIT(6) | ||
| 476 | #define DA9150_PM_IF_LPM_SHIFT 7 | ||
| 477 | #define DA9150_PM_IF_LPM_MASK BIT(7) | ||
| 478 | |||
| 479 | /* DA9150_CONTROL_B = 0x0E6 */ | ||
| 480 | #define DA9150_LPM_SHIFT 0 | ||
| 481 | #define DA9150_LPM_MASK BIT(0) | ||
| 482 | #define DA9150_RESET_SHIFT 1 | ||
| 483 | #define DA9150_RESET_MASK BIT(1) | ||
| 484 | #define DA9150_RESET_USRCONF_EN_SHIFT 2 | ||
| 485 | #define DA9150_RESET_USRCONF_EN_MASK BIT(2) | ||
| 486 | |||
| 487 | /* DA9150_CONTROL_C = 0x0E7 */ | ||
| 488 | #define DA9150_DISABLE_SHIFT 0 | ||
| 489 | #define DA9150_DISABLE_MASK BIT(0) | ||
| 490 | |||
| 491 | /* DA9150_GPIO_A_B = 0x0E8 */ | ||
| 492 | #define DA9150_GPIOA_PIN_SHIFT 0 | ||
| 493 | #define DA9150_GPIOA_PIN_MASK (0x07 << 0) | ||
| 494 | #define DA9150_GPIOA_PIN_GPI (0x00 << 0) | ||
| 495 | #define DA9150_GPIOA_PIN_GPO_OD BIT(0) | ||
| 496 | #define DA9150_GPIOA_TYPE_SHIFT 3 | ||
| 497 | #define DA9150_GPIOA_TYPE_MASK BIT(3) | ||
| 498 | #define DA9150_GPIOB_PIN_SHIFT 4 | ||
| 499 | #define DA9150_GPIOB_PIN_MASK (0x07 << 4) | ||
| 500 | #define DA9150_GPIOB_PIN_GPI (0x00 << 4) | ||
| 501 | #define DA9150_GPIOB_PIN_GPO_OD BIT(4) | ||
| 502 | #define DA9150_GPIOB_TYPE_SHIFT 7 | ||
| 503 | #define DA9150_GPIOB_TYPE_MASK BIT(7) | ||
| 504 | |||
| 505 | /* DA9150_GPIO_C_D = 0x0E9 */ | ||
| 506 | #define DA9150_GPIOC_PIN_SHIFT 0 | ||
| 507 | #define DA9150_GPIOC_PIN_MASK (0x07 << 0) | ||
| 508 | #define DA9150_GPIOC_PIN_GPI (0x00 << 0) | ||
| 509 | #define DA9150_GPIOC_PIN_GPO_OD BIT(0) | ||
| 510 | #define DA9150_GPIOC_TYPE_SHIFT 3 | ||
| 511 | #define DA9150_GPIOC_TYPE_MASK BIT(3) | ||
| 512 | #define DA9150_GPIOD_PIN_SHIFT 4 | ||
| 513 | #define DA9150_GPIOD_PIN_MASK (0x07 << 4) | ||
| 514 | #define DA9150_GPIOD_PIN_GPI (0x00 << 4) | ||
| 515 | #define DA9150_GPIOD_PIN_GPO_OD BIT(4) | ||
| 516 | #define DA9150_GPIOD_TYPE_SHIFT 7 | ||
| 517 | #define DA9150_GPIOD_TYPE_MASK BIT(7) | ||
| 518 | |||
| 519 | /* DA9150_GPIO_MODE_CONT = 0x0EA */ | ||
| 520 | #define DA9150_GPIOA_MODE_SHIFT 0 | ||
| 521 | #define DA9150_GPIOA_MODE_MASK BIT(0) | ||
| 522 | #define DA9150_GPIOB_MODE_SHIFT 1 | ||
| 523 | #define DA9150_GPIOB_MODE_MASK BIT(1) | ||
| 524 | #define DA9150_GPIOC_MODE_SHIFT 2 | ||
| 525 | #define DA9150_GPIOC_MODE_MASK BIT(2) | ||
| 526 | #define DA9150_GPIOD_MODE_SHIFT 3 | ||
| 527 | #define DA9150_GPIOD_MODE_MASK BIT(3) | ||
| 528 | #define DA9150_GPIOA_CONT_SHIFT 4 | ||
| 529 | #define DA9150_GPIOA_CONT_MASK BIT(4) | ||
| 530 | #define DA9150_GPIOB_CONT_SHIFT 5 | ||
| 531 | #define DA9150_GPIOB_CONT_MASK BIT(5) | ||
| 532 | #define DA9150_GPIOC_CONT_SHIFT 6 | ||
| 533 | #define DA9150_GPIOC_CONT_MASK BIT(6) | ||
| 534 | #define DA9150_GPIOD_CONT_SHIFT 7 | ||
| 535 | #define DA9150_GPIOD_CONT_MASK BIT(7) | ||
| 536 | |||
| 537 | /* DA9150_GPIO_CTRL_B = 0x0EB */ | ||
| 538 | #define DA9150_WAKE_PIN_SHIFT 0 | ||
| 539 | #define DA9150_WAKE_PIN_MASK (0x03 << 0) | ||
| 540 | #define DA9150_WAKE_MODE_SHIFT 2 | ||
| 541 | #define DA9150_WAKE_MODE_MASK BIT(2) | ||
| 542 | #define DA9150_WAKE_CONT_SHIFT 3 | ||
| 543 | #define DA9150_WAKE_CONT_MASK BIT(3) | ||
| 544 | #define DA9150_WAKE_DLY_SHIFT 4 | ||
| 545 | #define DA9150_WAKE_DLY_MASK BIT(4) | ||
| 546 | |||
| 547 | /* DA9150_GPIO_CTRL_A = 0x0EC */ | ||
| 548 | #define DA9150_GPIOA_ANAEN_SHIFT 0 | ||
| 549 | #define DA9150_GPIOA_ANAEN_MASK BIT(0) | ||
| 550 | #define DA9150_GPIOB_ANAEN_SHIFT 1 | ||
| 551 | #define DA9150_GPIOB_ANAEN_MASK BIT(1) | ||
| 552 | #define DA9150_GPIOC_ANAEN_SHIFT 2 | ||
| 553 | #define DA9150_GPIOC_ANAEN_MASK BIT(2) | ||
| 554 | #define DA9150_GPIOD_ANAEN_SHIFT 3 | ||
| 555 | #define DA9150_GPIOD_ANAEN_MASK BIT(3) | ||
| 556 | #define DA9150_GPIO_ANAEN 0x01 | ||
| 557 | #define DA9150_GPIO_ANAEN_MASK 0x0F | ||
| 558 | #define DA9150_CHGLED_PIN_SHIFT 5 | ||
| 559 | #define DA9150_CHGLED_PIN_MASK (0x07 << 5) | ||
| 560 | |||
| 561 | /* DA9150_GPIO_CTRL_C = 0x0ED */ | ||
| 562 | #define DA9150_CHGBL_DUR_SHIFT 0 | ||
| 563 | #define DA9150_CHGBL_DUR_MASK (0x03 << 0) | ||
| 564 | #define DA9150_CHGBL_DBL_SHIFT 2 | ||
| 565 | #define DA9150_CHGBL_DBL_MASK BIT(2) | ||
| 566 | #define DA9150_CHGBL_FRQ_SHIFT 3 | ||
| 567 | #define DA9150_CHGBL_FRQ_MASK (0x03 << 3) | ||
| 568 | #define DA9150_CHGBL_FLKR_SHIFT 5 | ||
| 569 | #define DA9150_CHGBL_FLKR_MASK BIT(5) | ||
| 570 | |||
| 571 | /* DA9150_GPIO_CFG_A = 0x0EE */ | ||
| 572 | #define DA9150_CE_LPM_DEB_SHIFT 0 | ||
| 573 | #define DA9150_CE_LPM_DEB_MASK (0x07 << 0) | ||
| 574 | |||
| 575 | /* DA9150_GPIO_CFG_B = 0x0EF */ | ||
| 576 | #define DA9150_GPIOA_PUPD_SHIFT 0 | ||
| 577 | #define DA9150_GPIOA_PUPD_MASK BIT(0) | ||
| 578 | #define DA9150_GPIOB_PUPD_SHIFT 1 | ||
| 579 | #define DA9150_GPIOB_PUPD_MASK BIT(1) | ||
| 580 | #define DA9150_GPIOC_PUPD_SHIFT 2 | ||
| 581 | #define DA9150_GPIOC_PUPD_MASK BIT(2) | ||
| 582 | #define DA9150_GPIOD_PUPD_SHIFT 3 | ||
| 583 | #define DA9150_GPIOD_PUPD_MASK BIT(3) | ||
| 584 | #define DA9150_GPIO_PUPD_MASK (0xF << 0) | ||
| 585 | #define DA9150_GPI_DEB_SHIFT 4 | ||
| 586 | #define DA9150_GPI_DEB_MASK (0x07 << 4) | ||
| 587 | #define DA9150_LPM_EN_SHIFT 7 | ||
| 588 | #define DA9150_LPM_EN_MASK BIT(7) | ||
| 589 | |||
| 590 | /* DA9150_GPIO_CFG_C = 0x0F0 */ | ||
| 591 | #define DA9150_GPI_V_SHIFT 0 | ||
| 592 | #define DA9150_GPI_V_MASK BIT(0) | ||
| 593 | #define DA9150_VDDIO_INT_SHIFT 1 | ||
| 594 | #define DA9150_VDDIO_INT_MASK BIT(1) | ||
| 595 | #define DA9150_FAULT_PIN_SHIFT 3 | ||
| 596 | #define DA9150_FAULT_PIN_MASK (0x07 << 3) | ||
| 597 | #define DA9150_FAULT_TYPE_SHIFT 6 | ||
| 598 | #define DA9150_FAULT_TYPE_MASK BIT(6) | ||
| 599 | #define DA9150_NIRQ_PUPD_SHIFT 7 | ||
| 600 | #define DA9150_NIRQ_PUPD_MASK BIT(7) | ||
| 601 | |||
| 602 | /* DA9150_GPADC_MAN = 0x0F2 */ | ||
| 603 | #define DA9150_GPADC_EN_SHIFT 0 | ||
| 604 | #define DA9150_GPADC_EN_MASK BIT(0) | ||
| 605 | #define DA9150_GPADC_MUX_SHIFT 1 | ||
| 606 | #define DA9150_GPADC_MUX_MASK (0x1f << 1) | ||
| 607 | |||
| 608 | /* DA9150_GPADC_RES_A = 0x0F4 */ | ||
| 609 | #define DA9150_GPADC_RES_H_SHIFT 0 | ||
| 610 | #define DA9150_GPADC_RES_H_MASK (0xff << 0) | ||
| 611 | |||
| 612 | /* DA9150_GPADC_RES_B = 0x0F5 */ | ||
| 613 | #define DA9150_GPADC_RUN_SHIFT 0 | ||
| 614 | #define DA9150_GPADC_RUN_MASK BIT(0) | ||
| 615 | #define DA9150_GPADC_RES_L_SHIFT 6 | ||
| 616 | #define DA9150_GPADC_RES_L_MASK (0x03 << 6) | ||
| 617 | #define DA9150_GPADC_RES_L_BITS 2 | ||
| 618 | |||
| 619 | /* DA9150_PAGE_CON_2 = 0x100 */ | ||
| 620 | #define DA9150_PAGE_SHIFT 0 | ||
| 621 | #define DA9150_PAGE_MASK (0x3f << 0) | ||
| 622 | #define DA9150_WRITE_MODE_SHIFT 6 | ||
| 623 | #define DA9150_WRITE_MODE_MASK BIT(6) | ||
| 624 | #define DA9150_REVERT_SHIFT 7 | ||
| 625 | #define DA9150_REVERT_MASK BIT(7) | ||
| 626 | |||
| 627 | /* DA9150_OTP_CONT_SHARED = 0x101 */ | ||
| 628 | #define DA9150_PC_DONE_SHIFT 3 | ||
| 629 | #define DA9150_PC_DONE_MASK BIT(3) | ||
| 630 | |||
| 631 | /* DA9150_INTERFACE_SHARED = 0x105 */ | ||
| 632 | #define DA9150_IF_BASE_ADDR_SHIFT 4 | ||
| 633 | #define DA9150_IF_BASE_ADDR_MASK (0x0f << 4) | ||
| 634 | |||
| 635 | /* DA9150_CONFIG_A_SHARED = 0x106 */ | ||
| 636 | #define DA9150_NIRQ_VDD_SHIFT 1 | ||
| 637 | #define DA9150_NIRQ_VDD_MASK BIT(1) | ||
| 638 | #define DA9150_NIRQ_PIN_SHIFT 2 | ||
| 639 | #define DA9150_NIRQ_PIN_MASK BIT(2) | ||
| 640 | #define DA9150_NIRQ_TYPE_SHIFT 3 | ||
| 641 | #define DA9150_NIRQ_TYPE_MASK BIT(3) | ||
| 642 | #define DA9150_PM_IF_V_SHIFT 4 | ||
| 643 | #define DA9150_PM_IF_V_MASK BIT(4) | ||
| 644 | #define DA9150_PM_IF_FMP_SHIFT 5 | ||
| 645 | #define DA9150_PM_IF_FMP_MASK BIT(5) | ||
| 646 | #define DA9150_PM_IF_HSM_SHIFT 6 | ||
| 647 | #define DA9150_PM_IF_HSM_MASK BIT(6) | ||
| 648 | |||
| 649 | /* DA9150_CONFIG_D_SHARED = 0x109 */ | ||
| 650 | #define DA9150_NIRQ_MODE_SHIFT 1 | ||
| 651 | #define DA9150_NIRQ_MODE_MASK BIT(1) | ||
| 652 | |||
| 653 | /* DA9150_ADETVB_CFG_C = 0x150 */ | ||
| 654 | #define DA9150_TADP_RISE_SHIFT 0 | ||
| 655 | #define DA9150_TADP_RISE_MASK (0xff << 0) | ||
| 656 | |||
| 657 | /* DA9150_ADETD_STAT = 0x151 */ | ||
| 658 | #define DA9150_DCD_STAT_SHIFT 0 | ||
| 659 | #define DA9150_DCD_STAT_MASK BIT(0) | ||
| 660 | #define DA9150_PCD_STAT_SHIFT 1 | ||
| 661 | #define DA9150_PCD_STAT_MASK (0x03 << 1) | ||
| 662 | #define DA9150_SCD_STAT_SHIFT 3 | ||
| 663 | #define DA9150_SCD_STAT_MASK (0x03 << 3) | ||
| 664 | #define DA9150_DP_STAT_SHIFT 5 | ||
| 665 | #define DA9150_DP_STAT_MASK BIT(5) | ||
| 666 | #define DA9150_DM_STAT_SHIFT 6 | ||
| 667 | #define DA9150_DM_STAT_MASK BIT(6) | ||
| 668 | |||
| 669 | /* DA9150_ADET_CMPSTAT = 0x152 */ | ||
| 670 | #define DA9150_DP_COMP_SHIFT 1 | ||
| 671 | #define DA9150_DP_COMP_MASK BIT(1) | ||
| 672 | #define DA9150_DM_COMP_SHIFT 2 | ||
| 673 | #define DA9150_DM_COMP_MASK BIT(2) | ||
| 674 | #define DA9150_ADP_SNS_COMP_SHIFT 3 | ||
| 675 | #define DA9150_ADP_SNS_COMP_MASK BIT(3) | ||
| 676 | #define DA9150_ADP_PRB_COMP_SHIFT 4 | ||
| 677 | #define DA9150_ADP_PRB_COMP_MASK BIT(4) | ||
| 678 | #define DA9150_ID_COMP_SHIFT 5 | ||
| 679 | #define DA9150_ID_COMP_MASK BIT(5) | ||
| 680 | |||
| 681 | /* DA9150_ADET_CTRL_A = 0x153 */ | ||
| 682 | #define DA9150_AID_DAT_SHIFT 0 | ||
| 683 | #define DA9150_AID_DAT_MASK BIT(0) | ||
| 684 | #define DA9150_AID_ID_SHIFT 1 | ||
| 685 | #define DA9150_AID_ID_MASK BIT(1) | ||
| 686 | #define DA9150_AID_TRIG_SHIFT 2 | ||
| 687 | #define DA9150_AID_TRIG_MASK BIT(2) | ||
| 688 | |||
| 689 | /* DA9150_ADETVB_CFG_B = 0x154 */ | ||
| 690 | #define DA9150_VB_MODE_SHIFT 0 | ||
| 691 | #define DA9150_VB_MODE_MASK (0x03 << 0) | ||
| 692 | #define DA9150_VB_MODE_VB_SESS BIT(0) | ||
| 693 | |||
| 694 | #define DA9150_TADP_PRB_SHIFT 2 | ||
| 695 | #define DA9150_TADP_PRB_MASK BIT(2) | ||
| 696 | #define DA9150_DAT_RPD_EXT_SHIFT 5 | ||
| 697 | #define DA9150_DAT_RPD_EXT_MASK BIT(5) | ||
| 698 | #define DA9150_CONF_RPD_SHIFT 6 | ||
| 699 | #define DA9150_CONF_RPD_MASK BIT(6) | ||
| 700 | #define DA9150_CONF_SRP_SHIFT 7 | ||
| 701 | #define DA9150_CONF_SRP_MASK BIT(7) | ||
| 702 | |||
| 703 | /* DA9150_ADETVB_CFG_A = 0x155 */ | ||
| 704 | #define DA9150_AID_MODE_SHIFT 0 | ||
| 705 | #define DA9150_AID_MODE_MASK (0x03 << 0) | ||
| 706 | #define DA9150_AID_EXT_POL_SHIFT 2 | ||
| 707 | #define DA9150_AID_EXT_POL_MASK BIT(2) | ||
| 708 | |||
| 709 | /* DA9150_ADETAC_CFG_A = 0x156 */ | ||
| 710 | #define DA9150_ISET_CDP_SHIFT 0 | ||
| 711 | #define DA9150_ISET_CDP_MASK (0x1f << 0) | ||
| 712 | #define DA9150_CONF_DBP_SHIFT 5 | ||
| 713 | #define DA9150_CONF_DBP_MASK BIT(5) | ||
| 714 | |||
| 715 | /* DA9150_ADDETAC_CFG_B = 0x157 */ | ||
| 716 | #define DA9150_ISET_DCHG_SHIFT 0 | ||
| 717 | #define DA9150_ISET_DCHG_MASK (0x1f << 0) | ||
| 718 | #define DA9150_CONF_GPIOA_SHIFT 5 | ||
| 719 | #define DA9150_CONF_GPIOA_MASK BIT(5) | ||
| 720 | #define DA9150_CONF_GPIOB_SHIFT 6 | ||
| 721 | #define DA9150_CONF_GPIOB_MASK BIT(6) | ||
| 722 | #define DA9150_AID_VB_SHIFT 7 | ||
| 723 | #define DA9150_AID_VB_MASK BIT(7) | ||
| 724 | |||
| 725 | /* DA9150_ADETAC_CFG_C = 0x158 */ | ||
| 726 | #define DA9150_ISET_DEF_SHIFT 0 | ||
| 727 | #define DA9150_ISET_DEF_MASK (0x1f << 0) | ||
| 728 | #define DA9150_CONF_MODE_SHIFT 5 | ||
| 729 | #define DA9150_CONF_MODE_MASK (0x03 << 5) | ||
| 730 | #define DA9150_AID_CR_DIS_SHIFT 7 | ||
| 731 | #define DA9150_AID_CR_DIS_MASK BIT(7) | ||
| 732 | |||
| 733 | /* DA9150_ADETAC_CFG_D = 0x159 */ | ||
| 734 | #define DA9150_ISET_UNIT_SHIFT 0 | ||
| 735 | #define DA9150_ISET_UNIT_MASK (0x1f << 0) | ||
| 736 | #define DA9150_AID_UNCLAMP_SHIFT 5 | ||
| 737 | #define DA9150_AID_UNCLAMP_MASK BIT(5) | ||
| 738 | |||
| 739 | /* DA9150_ADETVB_CFG_D = 0x15A */ | ||
| 740 | #define DA9150_ID_MODE_SHIFT 0 | ||
| 741 | #define DA9150_ID_MODE_MASK (0x03 << 0) | ||
| 742 | #define DA9150_DAT_MODE_SHIFT 2 | ||
| 743 | #define DA9150_DAT_MODE_MASK (0x0f << 2) | ||
| 744 | #define DA9150_DAT_SWP_SHIFT 6 | ||
| 745 | #define DA9150_DAT_SWP_MASK BIT(6) | ||
| 746 | #define DA9150_DAT_CLAMP_EXT_SHIFT 7 | ||
| 747 | #define DA9150_DAT_CLAMP_EXT_MASK BIT(7) | ||
| 748 | |||
| 749 | /* DA9150_ADETID_CFG_A = 0x15B */ | ||
| 750 | #define DA9150_TID_POLL_SHIFT 0 | ||
| 751 | #define DA9150_TID_POLL_MASK (0x07 << 0) | ||
| 752 | #define DA9150_RID_CONV_SHIFT 3 | ||
| 753 | #define DA9150_RID_CONV_MASK BIT(3) | ||
| 754 | |||
| 755 | /* DA9150_ADET_RID_PT_CHG_H = 0x15C */ | ||
| 756 | #define DA9150_RID_PT_CHG_H_SHIFT 0 | ||
| 757 | #define DA9150_RID_PT_CHG_H_MASK (0xff << 0) | ||
| 758 | |||
| 759 | /* DA9150_ADET_RID_PT_CHG_L = 0x15D */ | ||
| 760 | #define DA9150_RID_PT_CHG_L_SHIFT 6 | ||
| 761 | #define DA9150_RID_PT_CHG_L_MASK (0x03 << 6) | ||
| 762 | |||
| 763 | /* DA9150_PPR_TCTR_B = 0x160 */ | ||
| 764 | #define DA9150_CHG_TCTR_VAL_SHIFT 0 | ||
| 765 | #define DA9150_CHG_TCTR_VAL_MASK (0xff << 0) | ||
| 766 | |||
| 767 | /* DA9150_PPR_BKCTRL_A = 0x163 */ | ||
| 768 | #define DA9150_VBUS_MODE_SHIFT 0 | ||
| 769 | #define DA9150_VBUS_MODE_MASK (0x03 << 0) | ||
| 770 | #define DA9150_VBUS_MODE_CHG BIT(0) | ||
| 771 | #define DA9150_VBUS_MODE_OTG (0x02 << 0) | ||
| 772 | #define DA9150_VBUS_LPM_SHIFT 2 | ||
| 773 | #define DA9150_VBUS_LPM_MASK (0x03 << 2) | ||
| 774 | #define DA9150_VBUS_SUSP_SHIFT 4 | ||
| 775 | #define DA9150_VBUS_SUSP_MASK BIT(4) | ||
| 776 | #define DA9150_VBUS_PWM_SHIFT 5 | ||
| 777 | #define DA9150_VBUS_PWM_MASK BIT(5) | ||
| 778 | #define DA9150_VBUS_ISO_SHIFT 6 | ||
| 779 | #define DA9150_VBUS_ISO_MASK BIT(6) | ||
| 780 | #define DA9150_VBUS_LDO_SHIFT 7 | ||
| 781 | #define DA9150_VBUS_LDO_MASK BIT(7) | ||
| 782 | |||
| 783 | /* DA9150_PPR_BKCFG_A = 0x164 */ | ||
| 784 | #define DA9150_VBUS_ISET_SHIFT 0 | ||
| 785 | #define DA9150_VBUS_ISET_MASK (0x1f << 0) | ||
| 786 | #define DA9150_VBUS_IMAX_SHIFT 5 | ||
| 787 | #define DA9150_VBUS_IMAX_MASK BIT(5) | ||
| 788 | #define DA9150_VBUS_IOTG_SHIFT 6 | ||
| 789 | #define DA9150_VBUS_IOTG_MASK (0x03 << 6) | ||
| 790 | |||
| 791 | /* DA9150_PPR_BKCFG_B = 0x165 */ | ||
| 792 | #define DA9150_VBUS_DROP_SHIFT 0 | ||
| 793 | #define DA9150_VBUS_DROP_MASK (0x0f << 0) | ||
| 794 | #define DA9150_VBUS_FAULT_DIS_SHIFT 6 | ||
| 795 | #define DA9150_VBUS_FAULT_DIS_MASK BIT(6) | ||
| 796 | #define DA9150_OTG_FAULT_DIS_SHIFT 7 | ||
| 797 | #define DA9150_OTG_FAULT_DIS_MASK BIT(7) | ||
| 798 | |||
| 799 | /* DA9150_PPR_CHGCTRL_A = 0x166 */ | ||
| 800 | #define DA9150_CHG_EN_SHIFT 0 | ||
| 801 | #define DA9150_CHG_EN_MASK BIT(0) | ||
| 802 | |||
| 803 | /* DA9150_PPR_CHGCTRL_B = 0x167 */ | ||
| 804 | #define DA9150_CHG_VBAT_SHIFT 0 | ||
| 805 | #define DA9150_CHG_VBAT_MASK (0x1f << 0) | ||
| 806 | #define DA9150_CHG_VDROP_SHIFT 6 | ||
| 807 | #define DA9150_CHG_VDROP_MASK (0x03 << 6) | ||
| 808 | |||
| 809 | /* DA9150_PPR_CHGCTRL_C = 0x168 */ | ||
| 810 | #define DA9150_CHG_VFAULT_SHIFT 0 | ||
| 811 | #define DA9150_CHG_VFAULT_MASK (0x0f << 0) | ||
| 812 | #define DA9150_CHG_IPRE_SHIFT 4 | ||
| 813 | #define DA9150_CHG_IPRE_MASK (0x03 << 4) | ||
| 814 | |||
| 815 | /* DA9150_PPR_TCTR_A = 0x169 */ | ||
| 816 | #define DA9150_CHG_TCTR_SHIFT 0 | ||
| 817 | #define DA9150_CHG_TCTR_MASK (0x07 << 0) | ||
| 818 | #define DA9150_CHG_TCTR_MODE_SHIFT 4 | ||
| 819 | #define DA9150_CHG_TCTR_MODE_MASK BIT(4) | ||
| 820 | |||
| 821 | /* DA9150_PPR_CHGCTRL_D = 0x16A */ | ||
| 822 | #define DA9150_CHG_IBAT_SHIFT 0 | ||
| 823 | #define DA9150_CHG_IBAT_MASK (0xff << 0) | ||
| 824 | |||
| 825 | /* DA9150_PPR_CHGCTRL_E = 0x16B */ | ||
| 826 | #define DA9150_CHG_IEND_SHIFT 0 | ||
| 827 | #define DA9150_CHG_IEND_MASK (0xff << 0) | ||
| 828 | |||
| 829 | /* DA9150_PPR_CHGCTRL_F = 0x16C */ | ||
| 830 | #define DA9150_CHG_VCOLD_SHIFT 0 | ||
| 831 | #define DA9150_CHG_VCOLD_MASK (0x1f << 0) | ||
| 832 | #define DA9150_TBAT_TQA_EN_SHIFT 6 | ||
| 833 | #define DA9150_TBAT_TQA_EN_MASK BIT(6) | ||
| 834 | #define DA9150_TBAT_TDP_EN_SHIFT 7 | ||
| 835 | #define DA9150_TBAT_TDP_EN_MASK BIT(7) | ||
| 836 | |||
| 837 | /* DA9150_PPR_CHGCTRL_G = 0x16D */ | ||
| 838 | #define DA9150_CHG_VWARM_SHIFT 0 | ||
| 839 | #define DA9150_CHG_VWARM_MASK (0x1f << 0) | ||
| 840 | |||
| 841 | /* DA9150_PPR_CHGCTRL_H = 0x16E */ | ||
| 842 | #define DA9150_CHG_VHOT_SHIFT 0 | ||
| 843 | #define DA9150_CHG_VHOT_MASK (0x1f << 0) | ||
| 844 | |||
| 845 | /* DA9150_PPR_CHGCTRL_I = 0x16F */ | ||
| 846 | #define DA9150_CHG_ICOLD_SHIFT 0 | ||
| 847 | #define DA9150_CHG_ICOLD_MASK (0xff << 0) | ||
| 848 | |||
| 849 | /* DA9150_PPR_CHGCTRL_J = 0x170 */ | ||
| 850 | #define DA9150_CHG_IWARM_SHIFT 0 | ||
| 851 | #define DA9150_CHG_IWARM_MASK (0xff << 0) | ||
| 852 | |||
| 853 | /* DA9150_PPR_CHGCTRL_K = 0x171 */ | ||
| 854 | #define DA9150_CHG_IHOT_SHIFT 0 | ||
| 855 | #define DA9150_CHG_IHOT_MASK (0xff << 0) | ||
| 856 | |||
| 857 | /* DA9150_PPR_CHGCTRL_L = 0x172 */ | ||
| 858 | #define DA9150_CHG_IBAT_TRED_SHIFT 0 | ||
| 859 | #define DA9150_CHG_IBAT_TRED_MASK (0xff << 0) | ||
| 860 | |||
| 861 | /* DA9150_PPR_CHGCTRL_M = 0x173 */ | ||
| 862 | #define DA9150_CHG_VFLOAT_SHIFT 0 | ||
| 863 | #define DA9150_CHG_VFLOAT_MASK (0x0f << 0) | ||
| 864 | #define DA9150_CHG_LPM_SHIFT 5 | ||
| 865 | #define DA9150_CHG_LPM_MASK BIT(5) | ||
| 866 | #define DA9150_CHG_NBLO_SHIFT 6 | ||
| 867 | #define DA9150_CHG_NBLO_MASK BIT(6) | ||
| 868 | #define DA9150_EBS_EN_SHIFT 7 | ||
| 869 | #define DA9150_EBS_EN_MASK BIT(7) | ||
| 870 | |||
| 871 | /* DA9150_PPR_THYST_A = 0x174 */ | ||
| 872 | #define DA9150_TBAT_T1_SHIFT 0 | ||
| 873 | #define DA9150_TBAT_T1_MASK (0xff << 0) | ||
| 874 | |||
| 875 | /* DA9150_PPR_THYST_B = 0x175 */ | ||
| 876 | #define DA9150_TBAT_T2_SHIFT 0 | ||
| 877 | #define DA9150_TBAT_T2_MASK (0xff << 0) | ||
| 878 | |||
| 879 | /* DA9150_PPR_THYST_C = 0x176 */ | ||
| 880 | #define DA9150_TBAT_T3_SHIFT 0 | ||
| 881 | #define DA9150_TBAT_T3_MASK (0xff << 0) | ||
| 882 | |||
| 883 | /* DA9150_PPR_THYST_D = 0x177 */ | ||
| 884 | #define DA9150_TBAT_T4_SHIFT 0 | ||
| 885 | #define DA9150_TBAT_T4_MASK (0xff << 0) | ||
| 886 | |||
| 887 | /* DA9150_PPR_THYST_E = 0x178 */ | ||
| 888 | #define DA9150_TBAT_T5_SHIFT 0 | ||
| 889 | #define DA9150_TBAT_T5_MASK (0xff << 0) | ||
| 890 | |||
| 891 | /* DA9150_PPR_THYST_F = 0x179 */ | ||
| 892 | #define DA9150_TBAT_H1_SHIFT 0 | ||
| 893 | #define DA9150_TBAT_H1_MASK (0xff << 0) | ||
| 894 | |||
| 895 | /* DA9150_PPR_THYST_G = 0x17A */ | ||
| 896 | #define DA9150_TBAT_H5_SHIFT 0 | ||
| 897 | #define DA9150_TBAT_H5_MASK (0xff << 0) | ||
| 898 | |||
| 899 | /* DA9150_PAGE_CON_3 = 0x180 */ | ||
| 900 | #define DA9150_PAGE_SHIFT 0 | ||
| 901 | #define DA9150_PAGE_MASK (0x3f << 0) | ||
| 902 | #define DA9150_WRITE_MODE_SHIFT 6 | ||
| 903 | #define DA9150_WRITE_MODE_MASK BIT(6) | ||
| 904 | #define DA9150_REVERT_SHIFT 7 | ||
| 905 | #define DA9150_REVERT_MASK BIT(7) | ||
| 906 | |||
| 907 | /* DA9150_PAGE_CON_4 = 0x200 */ | ||
| 908 | #define DA9150_PAGE_SHIFT 0 | ||
| 909 | #define DA9150_PAGE_MASK (0x3f << 0) | ||
| 910 | #define DA9150_WRITE_MODE_SHIFT 6 | ||
| 911 | #define DA9150_WRITE_MODE_MASK BIT(6) | ||
| 912 | #define DA9150_REVERT_SHIFT 7 | ||
| 913 | #define DA9150_REVERT_MASK BIT(7) | ||
| 914 | |||
| 915 | /* DA9150_PAGE_CON_5 = 0x280 */ | ||
| 916 | #define DA9150_PAGE_SHIFT 0 | ||
| 917 | #define DA9150_PAGE_MASK (0x3f << 0) | ||
| 918 | #define DA9150_WRITE_MODE_SHIFT 6 | ||
| 919 | #define DA9150_WRITE_MODE_MASK BIT(6) | ||
| 920 | #define DA9150_REVERT_SHIFT 7 | ||
| 921 | #define DA9150_REVERT_MASK BIT(7) | ||
| 922 | |||
| 923 | /* DA9150_PAGE_CON_6 = 0x300 */ | ||
| 924 | #define DA9150_PAGE_SHIFT 0 | ||
| 925 | #define DA9150_PAGE_MASK (0x3f << 0) | ||
| 926 | #define DA9150_WRITE_MODE_SHIFT 6 | ||
| 927 | #define DA9150_WRITE_MODE_MASK BIT(6) | ||
| 928 | #define DA9150_REVERT_SHIFT 7 | ||
| 929 | #define DA9150_REVERT_MASK BIT(7) | ||
| 930 | |||
| 931 | /* DA9150_COREBTLD_STAT_A = 0x302 */ | ||
| 932 | #define DA9150_BOOTLD_STAT_SHIFT 0 | ||
| 933 | #define DA9150_BOOTLD_STAT_MASK (0x03 << 0) | ||
| 934 | #define DA9150_CORE_LOCKUP_SHIFT 2 | ||
| 935 | #define DA9150_CORE_LOCKUP_MASK BIT(2) | ||
| 936 | |||
| 937 | /* DA9150_COREBTLD_CTRL_A = 0x303 */ | ||
| 938 | #define DA9150_CORE_RESET_SHIFT 0 | ||
| 939 | #define DA9150_CORE_RESET_MASK BIT(0) | ||
| 940 | #define DA9150_CORE_STOP_SHIFT 1 | ||
| 941 | #define DA9150_CORE_STOP_MASK BIT(1) | ||
| 942 | |||
| 943 | /* DA9150_CORE_CONFIG_A = 0x304 */ | ||
| 944 | #define DA9150_CORE_MEMMUX_SHIFT 0 | ||
| 945 | #define DA9150_CORE_MEMMUX_MASK (0x03 << 0) | ||
| 946 | #define DA9150_WDT_AUTO_START_SHIFT 2 | ||
| 947 | #define DA9150_WDT_AUTO_START_MASK BIT(2) | ||
| 948 | #define DA9150_WDT_AUTO_LOCK_SHIFT 3 | ||
| 949 | #define DA9150_WDT_AUTO_LOCK_MASK BIT(3) | ||
| 950 | #define DA9150_WDT_HLT_NO_CLK_SHIFT 4 | ||
| 951 | #define DA9150_WDT_HLT_NO_CLK_MASK BIT(4) | ||
| 952 | |||
| 953 | /* DA9150_CORE_CONFIG_C = 0x305 */ | ||
| 954 | #define DA9150_CORE_SW_SIZE_SHIFT 0 | ||
| 955 | #define DA9150_CORE_SW_SIZE_MASK (0xff << 0) | ||
| 956 | |||
| 957 | /* DA9150_CORE_CONFIG_B = 0x306 */ | ||
| 958 | #define DA9150_BOOTLD_EN_SHIFT 0 | ||
| 959 | #define DA9150_BOOTLD_EN_MASK BIT(0) | ||
| 960 | #define DA9150_CORE_EN_SHIFT 2 | ||
| 961 | #define DA9150_CORE_EN_MASK BIT(2) | ||
| 962 | #define DA9150_CORE_SW_SRC_SHIFT 3 | ||
| 963 | #define DA9150_CORE_SW_SRC_MASK (0x07 << 3) | ||
| 964 | #define DA9150_DEEP_SLEEP_EN_SHIFT 7 | ||
| 965 | #define DA9150_DEEP_SLEEP_EN_MASK BIT(7) | ||
| 966 | |||
| 967 | /* DA9150_CORE_CFG_DATA_A = 0x307 */ | ||
| 968 | #define DA9150_CORE_CFG_DT_A_SHIFT 0 | ||
| 969 | #define DA9150_CORE_CFG_DT_A_MASK (0xff << 0) | ||
| 970 | |||
| 971 | /* DA9150_CORE_CFG_DATA_B = 0x308 */ | ||
| 972 | #define DA9150_CORE_CFG_DT_B_SHIFT 0 | ||
| 973 | #define DA9150_CORE_CFG_DT_B_MASK (0xff << 0) | ||
| 974 | |||
| 975 | /* DA9150_CORE_CMD_A = 0x309 */ | ||
| 976 | #define DA9150_CORE_CMD_SHIFT 0 | ||
| 977 | #define DA9150_CORE_CMD_MASK (0xff << 0) | ||
| 978 | |||
| 979 | /* DA9150_CORE_DATA_A = 0x30A */ | ||
| 980 | #define DA9150_CORE_DATA_0_SHIFT 0 | ||
| 981 | #define DA9150_CORE_DATA_0_MASK (0xff << 0) | ||
| 982 | |||
| 983 | /* DA9150_CORE_DATA_B = 0x30B */ | ||
| 984 | #define DA9150_CORE_DATA_1_SHIFT 0 | ||
| 985 | #define DA9150_CORE_DATA_1_MASK (0xff << 0) | ||
| 986 | |||
| 987 | /* DA9150_CORE_DATA_C = 0x30C */ | ||
| 988 | #define DA9150_CORE_DATA_2_SHIFT 0 | ||
| 989 | #define DA9150_CORE_DATA_2_MASK (0xff << 0) | ||
| 990 | |||
| 991 | /* DA9150_CORE_DATA_D = 0x30D */ | ||
| 992 | #define DA9150_CORE_DATA_3_SHIFT 0 | ||
| 993 | #define DA9150_CORE_DATA_3_MASK (0xff << 0) | ||
| 994 | |||
| 995 | /* DA9150_CORE2WIRE_STAT_A = 0x310 */ | ||
| 996 | #define DA9150_FW_FWDL_ERR_SHIFT 7 | ||
| 997 | #define DA9150_FW_FWDL_ERR_MASK BIT(7) | ||
| 998 | |||
| 999 | /* DA9150_CORE2WIRE_CTRL_A = 0x311 */ | ||
| 1000 | #define DA9150_FW_FWDL_EN_SHIFT 0 | ||
| 1001 | #define DA9150_FW_FWDL_EN_MASK BIT(0) | ||
| 1002 | #define DA9150_FG_QIF_EN_SHIFT 1 | ||
| 1003 | #define DA9150_FG_QIF_EN_MASK BIT(1) | ||
| 1004 | #define DA9150_CORE_BASE_ADDR_SHIFT 4 | ||
| 1005 | #define DA9150_CORE_BASE_ADDR_MASK (0x0f << 4) | ||
| 1006 | |||
| 1007 | /* DA9150_FW_CTRL_A = 0x312 */ | ||
| 1008 | #define DA9150_FW_SEAL_SHIFT 0 | ||
| 1009 | #define DA9150_FW_SEAL_MASK (0xff << 0) | ||
| 1010 | |||
| 1011 | /* DA9150_FW_CTRL_C = 0x313 */ | ||
| 1012 | #define DA9150_FW_FWDL_CRC_SHIFT 0 | ||
| 1013 | #define DA9150_FW_FWDL_CRC_MASK (0xff << 0) | ||
| 1014 | |||
| 1015 | /* DA9150_FW_CTRL_D = 0x314 */ | ||
| 1016 | #define DA9150_FW_FWDL_BASE_SHIFT 0 | ||
| 1017 | #define DA9150_FW_FWDL_BASE_MASK (0x0f << 0) | ||
| 1018 | |||
| 1019 | /* DA9150_FG_CTRL_A = 0x315 */ | ||
| 1020 | #define DA9150_FG_QIF_CODE_SHIFT 0 | ||
| 1021 | #define DA9150_FG_QIF_CODE_MASK (0xff << 0) | ||
| 1022 | |||
| 1023 | /* DA9150_FG_CTRL_B = 0x316 */ | ||
| 1024 | #define DA9150_FG_QIF_VALUE_SHIFT 0 | ||
| 1025 | #define DA9150_FG_QIF_VALUE_MASK (0xff << 0) | ||
| 1026 | |||
| 1027 | /* DA9150_FW_CTRL_E = 0x317 */ | ||
| 1028 | #define DA9150_FW_FWDL_SEG_SHIFT 0 | ||
| 1029 | #define DA9150_FW_FWDL_SEG_MASK (0xff << 0) | ||
| 1030 | |||
| 1031 | /* DA9150_FW_CTRL_B = 0x318 */ | ||
| 1032 | #define DA9150_FW_FWDL_VALUE_SHIFT 0 | ||
| 1033 | #define DA9150_FW_FWDL_VALUE_MASK (0xff << 0) | ||
| 1034 | |||
| 1035 | /* DA9150_GPADC_CMAN = 0x320 */ | ||
| 1036 | #define DA9150_GPADC_CEN_SHIFT 0 | ||
| 1037 | #define DA9150_GPADC_CEN_MASK BIT(0) | ||
| 1038 | #define DA9150_GPADC_CMUX_SHIFT 1 | ||
| 1039 | #define DA9150_GPADC_CMUX_MASK (0x1f << 1) | ||
| 1040 | |||
| 1041 | /* DA9150_GPADC_CRES_A = 0x322 */ | ||
| 1042 | #define DA9150_GPADC_CRES_H_SHIFT 0 | ||
| 1043 | #define DA9150_GPADC_CRES_H_MASK (0xff << 0) | ||
| 1044 | |||
| 1045 | /* DA9150_GPADC_CRES_B = 0x323 */ | ||
| 1046 | #define DA9150_GPADC_CRUN_SHIFT 0 | ||
| 1047 | #define DA9150_GPADC_CRUN_MASK BIT(0) | ||
| 1048 | #define DA9150_GPADC_CRES_L_SHIFT 6 | ||
| 1049 | #define DA9150_GPADC_CRES_L_MASK (0x03 << 6) | ||
| 1050 | |||
| 1051 | /* DA9150_CC_CFG_A = 0x328 */ | ||
| 1052 | #define DA9150_CC_EN_SHIFT 0 | ||
| 1053 | #define DA9150_CC_EN_MASK BIT(0) | ||
| 1054 | #define DA9150_CC_TIMEBASE_SHIFT 1 | ||
| 1055 | #define DA9150_CC_TIMEBASE_MASK (0x03 << 1) | ||
| 1056 | #define DA9150_CC_CFG_SHIFT 5 | ||
| 1057 | #define DA9150_CC_CFG_MASK (0x03 << 5) | ||
| 1058 | #define DA9150_CC_ENDLESS_MODE_SHIFT 7 | ||
| 1059 | #define DA9150_CC_ENDLESS_MODE_MASK BIT(7) | ||
| 1060 | |||
| 1061 | /* DA9150_CC_CFG_B = 0x329 */ | ||
| 1062 | #define DA9150_CC_OPT_SHIFT 0 | ||
| 1063 | #define DA9150_CC_OPT_MASK (0x03 << 0) | ||
| 1064 | #define DA9150_CC_PREAMP_SHIFT 2 | ||
| 1065 | #define DA9150_CC_PREAMP_MASK (0x03 << 2) | ||
| 1066 | |||
| 1067 | /* DA9150_CC_ICHG_RES_A = 0x32A */ | ||
| 1068 | #define DA9150_CC_ICHG_RES_H_SHIFT 0 | ||
| 1069 | #define DA9150_CC_ICHG_RES_H_MASK (0xff << 0) | ||
| 1070 | |||
| 1071 | /* DA9150_CC_ICHG_RES_B = 0x32B */ | ||
| 1072 | #define DA9150_CC_ICHG_RES_L_SHIFT 3 | ||
| 1073 | #define DA9150_CC_ICHG_RES_L_MASK (0x1f << 3) | ||
| 1074 | |||
| 1075 | /* DA9150_CC_IAVG_RES_A = 0x32C */ | ||
| 1076 | #define DA9150_CC_IAVG_RES_H_SHIFT 0 | ||
| 1077 | #define DA9150_CC_IAVG_RES_H_MASK (0xff << 0) | ||
| 1078 | |||
| 1079 | /* DA9150_CC_IAVG_RES_B = 0x32D */ | ||
| 1080 | #define DA9150_CC_IAVG_RES_L_SHIFT 0 | ||
| 1081 | #define DA9150_CC_IAVG_RES_L_MASK (0xff << 0) | ||
| 1082 | |||
| 1083 | /* DA9150_TAUX_CTRL_A = 0x330 */ | ||
| 1084 | #define DA9150_TAUX_EN_SHIFT 0 | ||
| 1085 | #define DA9150_TAUX_EN_MASK BIT(0) | ||
| 1086 | #define DA9150_TAUX_MOD_SHIFT 1 | ||
| 1087 | #define DA9150_TAUX_MOD_MASK BIT(1) | ||
| 1088 | #define DA9150_TAUX_UPDATE_SHIFT 2 | ||
| 1089 | #define DA9150_TAUX_UPDATE_MASK BIT(2) | ||
| 1090 | |||
| 1091 | /* DA9150_TAUX_RELOAD_H = 0x332 */ | ||
| 1092 | #define DA9150_TAUX_RLD_H_SHIFT 0 | ||
| 1093 | #define DA9150_TAUX_RLD_H_MASK (0xff << 0) | ||
| 1094 | |||
| 1095 | /* DA9150_TAUX_RELOAD_L = 0x333 */ | ||
| 1096 | #define DA9150_TAUX_RLD_L_SHIFT 3 | ||
| 1097 | #define DA9150_TAUX_RLD_L_MASK (0x1f << 3) | ||
| 1098 | |||
| 1099 | /* DA9150_TAUX_VALUE_H = 0x334 */ | ||
| 1100 | #define DA9150_TAUX_VAL_H_SHIFT 0 | ||
| 1101 | #define DA9150_TAUX_VAL_H_MASK (0xff << 0) | ||
| 1102 | |||
| 1103 | /* DA9150_TAUX_VALUE_L = 0x335 */ | ||
| 1104 | #define DA9150_TAUX_VAL_L_SHIFT 3 | ||
| 1105 | #define DA9150_TAUX_VAL_L_MASK (0x1f << 3) | ||
| 1106 | |||
| 1107 | /* DA9150_AUX_DATA_0 = 0x338 */ | ||
| 1108 | #define DA9150_AUX_DAT_0_SHIFT 0 | ||
| 1109 | #define DA9150_AUX_DAT_0_MASK (0xff << 0) | ||
| 1110 | |||
| 1111 | /* DA9150_AUX_DATA_1 = 0x339 */ | ||
| 1112 | #define DA9150_AUX_DAT_1_SHIFT 0 | ||
| 1113 | #define DA9150_AUX_DAT_1_MASK (0xff << 0) | ||
| 1114 | |||
| 1115 | /* DA9150_AUX_DATA_2 = 0x33A */ | ||
| 1116 | #define DA9150_AUX_DAT_2_SHIFT 0 | ||
| 1117 | #define DA9150_AUX_DAT_2_MASK (0xff << 0) | ||
| 1118 | |||
| 1119 | /* DA9150_AUX_DATA_3 = 0x33B */ | ||
| 1120 | #define DA9150_AUX_DAT_3_SHIFT 0 | ||
| 1121 | #define DA9150_AUX_DAT_3_MASK (0xff << 0) | ||
| 1122 | |||
| 1123 | /* DA9150_BIF_CTRL = 0x340 */ | ||
| 1124 | #define DA9150_BIF_ISRC_EN_SHIFT 0 | ||
| 1125 | #define DA9150_BIF_ISRC_EN_MASK BIT(0) | ||
| 1126 | |||
| 1127 | /* DA9150_TBAT_CTRL_A = 0x342 */ | ||
| 1128 | #define DA9150_TBAT_EN_SHIFT 0 | ||
| 1129 | #define DA9150_TBAT_EN_MASK BIT(0) | ||
| 1130 | #define DA9150_TBAT_SW1_SHIFT 1 | ||
| 1131 | #define DA9150_TBAT_SW1_MASK BIT(1) | ||
| 1132 | #define DA9150_TBAT_SW2_SHIFT 2 | ||
| 1133 | #define DA9150_TBAT_SW2_MASK BIT(2) | ||
| 1134 | |||
| 1135 | /* DA9150_TBAT_CTRL_B = 0x343 */ | ||
| 1136 | #define DA9150_TBAT_SW_FRC_SHIFT 0 | ||
| 1137 | #define DA9150_TBAT_SW_FRC_MASK BIT(0) | ||
| 1138 | #define DA9150_TBAT_STAT_SW1_SHIFT 1 | ||
| 1139 | #define DA9150_TBAT_STAT_SW1_MASK BIT(1) | ||
| 1140 | #define DA9150_TBAT_STAT_SW2_SHIFT 2 | ||
| 1141 | #define DA9150_TBAT_STAT_SW2_MASK BIT(2) | ||
| 1142 | #define DA9150_TBAT_HIGH_CURR_SHIFT 3 | ||
| 1143 | #define DA9150_TBAT_HIGH_CURR_MASK BIT(3) | ||
| 1144 | |||
| 1145 | /* DA9150_TBAT_RES_A = 0x344 */ | ||
| 1146 | #define DA9150_TBAT_RES_H_SHIFT 0 | ||
| 1147 | #define DA9150_TBAT_RES_H_MASK (0xff << 0) | ||
| 1148 | |||
| 1149 | /* DA9150_TBAT_RES_B = 0x345 */ | ||
| 1150 | #define DA9150_TBAT_RES_DIS_SHIFT 0 | ||
| 1151 | #define DA9150_TBAT_RES_DIS_MASK BIT(0) | ||
| 1152 | #define DA9150_TBAT_RES_L_SHIFT 6 | ||
| 1153 | #define DA9150_TBAT_RES_L_MASK (0x03 << 6) | ||
| 1154 | |||
| 1155 | #endif /* __DA9150_REGISTERS_H */ | ||
diff --git a/include/linux/mfd/max77686-private.h b/include/linux/mfd/max77686-private.h index 960b92ad450d..f5043490d67c 100644 --- a/include/linux/mfd/max77686-private.h +++ b/include/linux/mfd/max77686-private.h | |||
| @@ -447,7 +447,6 @@ struct max77686_dev { | |||
| 447 | struct regmap_irq_chip_data *rtc_irq_data; | 447 | struct regmap_irq_chip_data *rtc_irq_data; |
| 448 | 448 | ||
| 449 | int irq; | 449 | int irq; |
| 450 | bool wakeup; | ||
| 451 | struct mutex irqlock; | 450 | struct mutex irqlock; |
| 452 | int irq_masks_cur[MAX77686_IRQ_GROUP_NR]; | 451 | int irq_masks_cur[MAX77686_IRQ_GROUP_NR]; |
| 453 | int irq_masks_cache[MAX77686_IRQ_GROUP_NR]; | 452 | int irq_masks_cache[MAX77686_IRQ_GROUP_NR]; |
diff --git a/include/linux/mfd/max77686.h b/include/linux/mfd/max77686.h index 553f7d09258a..bb995ab9a575 100644 --- a/include/linux/mfd/max77686.h +++ b/include/linux/mfd/max77686.h | |||
| @@ -119,12 +119,6 @@ enum max77802_regulators { | |||
| 119 | MAX77802_REG_MAX, | 119 | MAX77802_REG_MAX, |
| 120 | }; | 120 | }; |
| 121 | 121 | ||
| 122 | struct max77686_regulator_data { | ||
| 123 | int id; | ||
| 124 | struct regulator_init_data *initdata; | ||
| 125 | struct device_node *of_node; | ||
| 126 | }; | ||
| 127 | |||
| 128 | enum max77686_opmode { | 122 | enum max77686_opmode { |
| 129 | MAX77686_OPMODE_NORMAL, | 123 | MAX77686_OPMODE_NORMAL, |
| 130 | MAX77686_OPMODE_LP, | 124 | MAX77686_OPMODE_LP, |
| @@ -136,26 +130,4 @@ struct max77686_opmode_data { | |||
| 136 | int mode; | 130 | int mode; |
| 137 | }; | 131 | }; |
| 138 | 132 | ||
| 139 | struct max77686_platform_data { | ||
| 140 | int ono; | ||
| 141 | int wakeup; | ||
| 142 | |||
| 143 | /* ---- PMIC ---- */ | ||
| 144 | struct max77686_regulator_data *regulators; | ||
| 145 | int num_regulators; | ||
| 146 | |||
| 147 | struct max77686_opmode_data *opmode_data; | ||
| 148 | |||
| 149 | /* | ||
| 150 | * GPIO-DVS feature is not enabled with the current version of | ||
| 151 | * MAX77686 driver. Buck2/3/4_voltages[0] is used as the default | ||
| 152 | * voltage at probe. DVS/SELB gpios are set as OUTPUT-LOW. | ||
| 153 | */ | ||
| 154 | int buck234_gpio_dvs[3]; /* GPIO of [0]DVS1, [1]DVS2, [2]DVS3 */ | ||
| 155 | int buck234_gpio_selb[3]; /* [0]SELB2, [1]SELB3, [2]SELB4 */ | ||
| 156 | unsigned int buck2_voltage[8]; /* buckx_voltage in uV */ | ||
| 157 | unsigned int buck3_voltage[8]; | ||
| 158 | unsigned int buck4_voltage[8]; | ||
| 159 | }; | ||
| 160 | |||
| 161 | #endif /* __LINUX_MFD_MAX77686_H */ | 133 | #endif /* __LINUX_MFD_MAX77686_H */ |
diff --git a/include/linux/mfd/qcom_rpm.h b/include/linux/mfd/qcom_rpm.h new file mode 100644 index 000000000000..742ebf1b76ca --- /dev/null +++ b/include/linux/mfd/qcom_rpm.h | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | #ifndef __QCOM_RPM_H__ | ||
| 2 | #define __QCOM_RPM_H__ | ||
| 3 | |||
| 4 | #include <linux/types.h> | ||
| 5 | |||
| 6 | struct qcom_rpm; | ||
| 7 | |||
| 8 | #define QCOM_RPM_ACTIVE_STATE 0 | ||
| 9 | #define QCOM_RPM_SLEEP_STATE 1 | ||
| 10 | |||
| 11 | int qcom_rpm_write(struct qcom_rpm *rpm, int state, int resource, u32 *buf, size_t count); | ||
| 12 | |||
| 13 | #endif | ||
diff --git a/include/linux/mfd/rt5033-private.h b/include/linux/mfd/rt5033-private.h new file mode 100644 index 000000000000..1b63fc2f42d1 --- /dev/null +++ b/include/linux/mfd/rt5033-private.h | |||
| @@ -0,0 +1,260 @@ | |||
| 1 | /* | ||
| 2 | * MFD core driver for Richtek RT5033 | ||
| 3 | * | ||
| 4 | * Copyright (C) 2014 Samsung Electronics, Co., Ltd. | ||
| 5 | * Author: Beomho Seo <beomho.seo@samsung.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published bythe Free Software Foundation. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #ifndef __RT5033_PRIVATE_H__ | ||
| 13 | #define __RT5033_PRIVATE_H__ | ||
| 14 | |||
| 15 | enum rt5033_reg { | ||
| 16 | RT5033_REG_CHG_STAT = 0x00, | ||
| 17 | RT5033_REG_CHG_CTRL1 = 0x01, | ||
| 18 | RT5033_REG_CHG_CTRL2 = 0x02, | ||
| 19 | RT5033_REG_DEVICE_ID = 0x03, | ||
| 20 | RT5033_REG_CHG_CTRL3 = 0x04, | ||
| 21 | RT5033_REG_CHG_CTRL4 = 0x05, | ||
| 22 | RT5033_REG_CHG_CTRL5 = 0x06, | ||
| 23 | RT5033_REG_RT_CTRL0 = 0x07, | ||
| 24 | RT5033_REG_CHG_RESET = 0x08, | ||
| 25 | /* Reserved 0x09~0x18 */ | ||
| 26 | RT5033_REG_RT_CTRL1 = 0x19, | ||
| 27 | /* Reserved 0x1A~0x20 */ | ||
| 28 | RT5033_REG_FLED_FUNCTION1 = 0x21, | ||
| 29 | RT5033_REG_FLED_FUNCTION2 = 0x22, | ||
| 30 | RT5033_REG_FLED_STROBE_CTRL1 = 0x23, | ||
| 31 | RT5033_REG_FLED_STROBE_CTRL2 = 0x24, | ||
| 32 | RT5033_REG_FLED_CTRL1 = 0x25, | ||
| 33 | RT5033_REG_FLED_CTRL2 = 0x26, | ||
| 34 | RT5033_REG_FLED_CTRL3 = 0x27, | ||
| 35 | RT5033_REG_FLED_CTRL4 = 0x28, | ||
| 36 | RT5033_REG_FLED_CTRL5 = 0x29, | ||
| 37 | /* Reserved 0x2A~0x40 */ | ||
| 38 | RT5033_REG_CTRL = 0x41, | ||
| 39 | RT5033_REG_BUCK_CTRL = 0x42, | ||
| 40 | RT5033_REG_LDO_CTRL = 0x43, | ||
| 41 | /* Reserved 0x44~0x46 */ | ||
| 42 | RT5033_REG_MANUAL_RESET_CTRL = 0x47, | ||
| 43 | /* Reserved 0x48~0x5F */ | ||
| 44 | RT5033_REG_CHG_IRQ1 = 0x60, | ||
| 45 | RT5033_REG_CHG_IRQ2 = 0x61, | ||
| 46 | RT5033_REG_CHG_IRQ3 = 0x62, | ||
| 47 | RT5033_REG_CHG_IRQ1_CTRL = 0x63, | ||
| 48 | RT5033_REG_CHG_IRQ2_CTRL = 0x64, | ||
| 49 | RT5033_REG_CHG_IRQ3_CTRL = 0x65, | ||
| 50 | RT5033_REG_LED_IRQ_STAT = 0x66, | ||
| 51 | RT5033_REG_LED_IRQ_CTRL = 0x67, | ||
| 52 | RT5033_REG_PMIC_IRQ_STAT = 0x68, | ||
| 53 | RT5033_REG_PMIC_IRQ_CTRL = 0x69, | ||
| 54 | RT5033_REG_SHDN_CTRL = 0x6A, | ||
| 55 | RT5033_REG_OFF_EVENT = 0x6B, | ||
| 56 | |||
| 57 | RT5033_REG_END, | ||
| 58 | }; | ||
| 59 | |||
| 60 | /* RT5033 Charger state register */ | ||
| 61 | #define RT5033_CHG_STAT_MASK 0x20 | ||
| 62 | #define RT5033_CHG_STAT_DISCHARGING 0x00 | ||
| 63 | #define RT5033_CHG_STAT_FULL 0x10 | ||
| 64 | #define RT5033_CHG_STAT_CHARGING 0x20 | ||
| 65 | #define RT5033_CHG_STAT_NOT_CHARGING 0x30 | ||
| 66 | #define RT5033_CHG_STAT_TYPE_MASK 0x60 | ||
| 67 | #define RT5033_CHG_STAT_TYPE_PRE 0x20 | ||
| 68 | #define RT5033_CHG_STAT_TYPE_FAST 0x60 | ||
| 69 | |||
| 70 | /* RT5033 CHGCTRL1 register */ | ||
| 71 | #define RT5033_CHGCTRL1_IAICR_MASK 0xe0 | ||
| 72 | #define RT5033_CHGCTRL1_MODE_MASK 0x01 | ||
| 73 | |||
| 74 | /* RT5033 CHGCTRL2 register */ | ||
| 75 | #define RT5033_CHGCTRL2_CV_MASK 0xfc | ||
| 76 | |||
| 77 | /* RT5033 CHGCTRL3 register */ | ||
| 78 | #define RT5033_CHGCTRL3_CFO_EN_MASK 0x40 | ||
| 79 | #define RT5033_CHGCTRL3_TIMER_MASK 0x38 | ||
| 80 | #define RT5033_CHGCTRL3_TIMER_EN_MASK 0x01 | ||
| 81 | |||
| 82 | /* RT5033 CHGCTRL4 register */ | ||
| 83 | #define RT5033_CHGCTRL4_EOC_MASK 0x07 | ||
| 84 | #define RT5033_CHGCTRL4_IPREC_MASK 0x18 | ||
| 85 | |||
| 86 | /* RT5033 CHGCTRL5 register */ | ||
| 87 | #define RT5033_CHGCTRL5_VPREC_MASK 0x0f | ||
| 88 | #define RT5033_CHGCTRL5_ICHG_MASK 0xf0 | ||
| 89 | #define RT5033_CHGCTRL5_ICHG_SHIFT 0x04 | ||
| 90 | #define RT5033_CHG_MAX_CURRENT 0x0d | ||
| 91 | |||
| 92 | /* RT5033 RT CTRL1 register */ | ||
| 93 | #define RT5033_RT_CTRL1_UUG_MASK 0x02 | ||
| 94 | #define RT5033_RT_HZ_MASK 0x01 | ||
| 95 | |||
| 96 | /* RT5033 control register */ | ||
| 97 | #define RT5033_CTRL_FCCM_BUCK_MASK 0x00 | ||
| 98 | #define RT5033_CTRL_BUCKOMS_MASK 0x01 | ||
| 99 | #define RT5033_CTRL_LDOOMS_MASK 0x02 | ||
| 100 | #define RT5033_CTRL_SLDOOMS_MASK 0x03 | ||
| 101 | #define RT5033_CTRL_EN_BUCK_MASK 0x04 | ||
| 102 | #define RT5033_CTRL_EN_LDO_MASK 0x05 | ||
| 103 | #define RT5033_CTRL_EN_SAFE_LDO_MASK 0x06 | ||
| 104 | #define RT5033_CTRL_LDO_SLEEP_MASK 0x07 | ||
| 105 | |||
| 106 | /* RT5033 BUCK control register */ | ||
| 107 | #define RT5033_BUCK_CTRL_MASK 0x1f | ||
| 108 | |||
| 109 | /* RT5033 LDO control register */ | ||
| 110 | #define RT5033_LDO_CTRL_MASK 0x1f | ||
| 111 | |||
| 112 | /* RT5033 charger property - model, manufacturer */ | ||
| 113 | |||
| 114 | #define RT5033_CHARGER_MODEL "RT5033WSC Charger" | ||
| 115 | #define RT5033_MANUFACTURER "Richtek Technology Corporation" | ||
| 116 | |||
| 117 | /* | ||
| 118 | * RT5033 charger fast-charge current lmits (as in CHGCTRL1 register), | ||
| 119 | * AICR mode limits the input current for example, | ||
| 120 | * the AIRC 100 mode limits the input current to 100 mA. | ||
| 121 | */ | ||
| 122 | #define RT5033_AICR_100_MODE 0x20 | ||
| 123 | #define RT5033_AICR_500_MODE 0x40 | ||
| 124 | #define RT5033_AICR_700_MODE 0x60 | ||
| 125 | #define RT5033_AICR_900_MODE 0x80 | ||
| 126 | #define RT5033_AICR_1500_MODE 0xc0 | ||
| 127 | #define RT5033_AICR_2000_MODE 0xe0 | ||
| 128 | #define RT5033_AICR_MODE_MASK 0xe0 | ||
| 129 | |||
| 130 | /* RT5033 use internal timer need to set time */ | ||
| 131 | #define RT5033_FAST_CHARGE_TIMER4 0x00 | ||
| 132 | #define RT5033_FAST_CHARGE_TIMER6 0x01 | ||
| 133 | #define RT5033_FAST_CHARGE_TIMER8 0x02 | ||
| 134 | #define RT5033_FAST_CHARGE_TIMER9 0x03 | ||
| 135 | #define RT5033_FAST_CHARGE_TIMER12 0x04 | ||
| 136 | #define RT5033_FAST_CHARGE_TIMER14 0x05 | ||
| 137 | #define RT5033_FAST_CHARGE_TIMER16 0x06 | ||
| 138 | |||
| 139 | #define RT5033_INT_TIMER_ENABLE 0x01 | ||
| 140 | |||
| 141 | /* RT5033 charger termination enable mask */ | ||
| 142 | #define RT5033_TE_ENABLE_MASK 0x08 | ||
| 143 | |||
| 144 | /* | ||
| 145 | * RT5033 charger opa mode. RT50300 have two opa mode charger mode | ||
| 146 | * and boost mode for OTG | ||
| 147 | */ | ||
| 148 | |||
| 149 | #define RT5033_CHARGER_MODE 0x00 | ||
| 150 | #define RT5033_BOOST_MODE 0x01 | ||
| 151 | |||
| 152 | /* RT5033 charger termination enable */ | ||
| 153 | #define RT5033_TE_ENABLE 0x08 | ||
| 154 | |||
| 155 | /* RT5033 charger CFO enable */ | ||
| 156 | #define RT5033_CFO_ENABLE 0x40 | ||
| 157 | |||
| 158 | /* RT5033 charger constant charge voltage (as in CHGCTRL2 register), uV */ | ||
| 159 | #define RT5033_CHARGER_CONST_VOLTAGE_LIMIT_MIN 3650000U | ||
| 160 | #define RT5033_CHARGER_CONST_VOLTAGE_STEP_NUM 25000U | ||
| 161 | #define RT5033_CHARGER_CONST_VOLTAGE_LIMIT_MAX 4400000U | ||
| 162 | |||
| 163 | /* RT5033 charger pre-charge current limits (as in CHGCTRL4 register), uA */ | ||
| 164 | #define RT5033_CHARGER_PRE_CURRENT_LIMIT_MIN 350000U | ||
| 165 | #define RT5033_CHARGER_PRE_CURRENT_STEP_NUM 100000U | ||
| 166 | #define RT5033_CHARGER_PRE_CURRENT_LIMIT_MAX 650000U | ||
| 167 | |||
| 168 | /* RT5033 charger fast-charge current (as in CHGCTRL5 register), uA */ | ||
| 169 | #define RT5033_CHARGER_FAST_CURRENT_MIN 700000U | ||
| 170 | #define RT5033_CHARGER_FAST_CURRENT_STEP_NUM 100000U | ||
| 171 | #define RT5033_CHARGER_FAST_CURRENT_MAX 2000000U | ||
| 172 | |||
| 173 | /* | ||
| 174 | * RT5033 charger const-charge end of charger current ( | ||
| 175 | * as in CHGCTRL4 register), uA | ||
| 176 | */ | ||
| 177 | #define RT5033_CHARGER_EOC_MIN 150000U | ||
| 178 | #define RT5033_CHARGER_EOC_REF 300000U | ||
| 179 | #define RT5033_CHARGER_EOC_STEP_NUM1 50000U | ||
| 180 | #define RT5033_CHARGER_EOC_STEP_NUM2 100000U | ||
| 181 | #define RT5033_CHARGER_EOC_MAX 600000U | ||
| 182 | |||
| 183 | /* | ||
| 184 | * RT5033 charger pre-charge threshold volt limits | ||
| 185 | * (as in CHGCTRL5 register), uV | ||
| 186 | */ | ||
| 187 | |||
| 188 | #define RT5033_CHARGER_PRE_THRESHOLD_LIMIT_MIN 2300000U | ||
| 189 | #define RT5033_CHARGER_PRE_THRESHOLD_STEP_NUM 100000U | ||
| 190 | #define RT5033_CHARGER_PRE_THRESHOLD_LIMIT_MAX 3800000U | ||
| 191 | |||
| 192 | /* | ||
| 193 | * RT5033 charger enable UUG, If UUG enable MOS auto control by H/W charger | ||
| 194 | * circuit. | ||
| 195 | */ | ||
| 196 | #define RT5033_CHARGER_UUG_ENABLE 0x02 | ||
| 197 | |||
| 198 | /* RT5033 charger High impedance mode */ | ||
| 199 | #define RT5033_CHARGER_HZ_DISABLE 0x00 | ||
| 200 | #define RT5033_CHARGER_HZ_ENABLE 0x01 | ||
| 201 | |||
| 202 | /* RT5033 regulator BUCK output voltage uV */ | ||
| 203 | #define RT5033_REGULATOR_BUCK_VOLTAGE_MIN 1000000U | ||
| 204 | #define RT5033_REGULATOR_BUCK_VOLTAGE_MAX 3000000U | ||
| 205 | #define RT5033_REGULATOR_BUCK_VOLTAGE_STEP 100000U | ||
| 206 | #define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 32 | ||
| 207 | |||
| 208 | /* RT5033 regulator LDO output voltage uV */ | ||
| 209 | #define RT5033_REGULATOR_LDO_VOLTAGE_MIN 1200000U | ||
| 210 | #define RT5033_REGULATOR_LDO_VOLTAGE_MAX 3000000U | ||
| 211 | #define RT5033_REGULATOR_LDO_VOLTAGE_STEP 100000U | ||
| 212 | #define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 32 | ||
| 213 | |||
| 214 | /* RT5033 regulator SAFE LDO output voltage uV */ | ||
| 215 | #define RT5033_REGULATOR_SAFE_LDO_VOLTAGE 4900000U | ||
| 216 | |||
| 217 | enum rt5033_fuel_reg { | ||
| 218 | RT5033_FUEL_REG_OCV_H = 0x00, | ||
| 219 | RT5033_FUEL_REG_OCV_L = 0x01, | ||
| 220 | RT5033_FUEL_REG_VBAT_H = 0x02, | ||
| 221 | RT5033_FUEL_REG_VBAT_L = 0x03, | ||
| 222 | RT5033_FUEL_REG_SOC_H = 0x04, | ||
| 223 | RT5033_FUEL_REG_SOC_L = 0x05, | ||
| 224 | RT5033_FUEL_REG_CTRL_H = 0x06, | ||
| 225 | RT5033_FUEL_REG_CTRL_L = 0x07, | ||
| 226 | RT5033_FUEL_REG_CRATE = 0x08, | ||
| 227 | RT5033_FUEL_REG_DEVICE_ID = 0x09, | ||
| 228 | RT5033_FUEL_REG_AVG_VOLT_H = 0x0A, | ||
| 229 | RT5033_FUEL_REG_AVG_VOLT_L = 0x0B, | ||
| 230 | RT5033_FUEL_REG_CONFIG_H = 0x0C, | ||
| 231 | RT5033_FUEL_REG_CONFIG_L = 0x0D, | ||
| 232 | /* Reserved 0x0E~0x0F */ | ||
| 233 | RT5033_FUEL_REG_IRQ_CTRL = 0x10, | ||
| 234 | RT5033_FUEL_REG_IRQ_FLAG = 0x11, | ||
| 235 | RT5033_FUEL_VMIN = 0x12, | ||
| 236 | RT5033_FUEL_SMIN = 0x13, | ||
| 237 | /* Reserved 0x14~0x1F */ | ||
| 238 | RT5033_FUEL_VGCOMP1 = 0x20, | ||
| 239 | RT5033_FUEL_VGCOMP2 = 0x21, | ||
| 240 | RT5033_FUEL_VGCOMP3 = 0x22, | ||
| 241 | RT5033_FUEL_VGCOMP4 = 0x23, | ||
| 242 | /* Reserved 0x24~0xFD */ | ||
| 243 | RT5033_FUEL_MFA_H = 0xFE, | ||
| 244 | RT5033_FUEL_MFA_L = 0xFF, | ||
| 245 | |||
| 246 | RT5033_FUEL_REG_END, | ||
| 247 | }; | ||
| 248 | |||
| 249 | /* RT5033 fuel gauge battery present property */ | ||
| 250 | #define RT5033_FUEL_BAT_PRESENT 0x02 | ||
| 251 | |||
| 252 | /* RT5033 PMIC interrupts */ | ||
| 253 | #define RT5033_PMIC_IRQ_BUCKOCP 2 | ||
| 254 | #define RT5033_PMIC_IRQ_BUCKLV 3 | ||
| 255 | #define RT5033_PMIC_IRQ_SAFELDOLV 4 | ||
| 256 | #define RT5033_PMIC_IRQ_LDOLV 5 | ||
| 257 | #define RT5033_PMIC_IRQ_OT 6 | ||
| 258 | #define RT5033_PMIC_IRQ_VDDA_UV 7 | ||
| 259 | |||
| 260 | #endif /* __RT5033_PRIVATE_H__ */ | ||
diff --git a/include/linux/mfd/rt5033.h b/include/linux/mfd/rt5033.h new file mode 100644 index 000000000000..010cff49a98e --- /dev/null +++ b/include/linux/mfd/rt5033.h | |||
| @@ -0,0 +1,62 @@ | |||
| 1 | /* | ||
| 2 | * MFD core driver for the RT5033 | ||
| 3 | * | ||
| 4 | * Copyright (C) 2014 Samsung Electronics | ||
| 5 | * Author: Beomho Seo <beomho.seo@samsung.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published bythe Free Software Foundation. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #ifndef __RT5033_H__ | ||
| 13 | #define __RT5033_H__ | ||
| 14 | |||
| 15 | #include <linux/regulator/consumer.h> | ||
| 16 | #include <linux/i2c.h> | ||
| 17 | #include <linux/regmap.h> | ||
| 18 | #include <linux/power_supply.h> | ||
| 19 | |||
| 20 | /* RT5033 regulator IDs */ | ||
| 21 | enum rt5033_regulators { | ||
| 22 | RT5033_BUCK = 0, | ||
| 23 | RT5033_LDO, | ||
| 24 | RT5033_SAFE_LDO, | ||
| 25 | |||
| 26 | RT5033_REGULATOR_NUM, | ||
| 27 | }; | ||
| 28 | |||
| 29 | struct rt5033_dev { | ||
| 30 | struct device *dev; | ||
| 31 | |||
| 32 | struct regmap *regmap; | ||
| 33 | struct regmap_irq_chip_data *irq_data; | ||
| 34 | int irq; | ||
| 35 | bool wakeup; | ||
| 36 | }; | ||
| 37 | |||
| 38 | struct rt5033_battery { | ||
| 39 | struct i2c_client *client; | ||
| 40 | struct rt5033_dev *rt5033; | ||
| 41 | struct regmap *regmap; | ||
| 42 | struct power_supply psy; | ||
| 43 | }; | ||
| 44 | |||
| 45 | /* RT5033 charger platform data */ | ||
| 46 | struct rt5033_charger_data { | ||
| 47 | unsigned int pre_uamp; | ||
| 48 | unsigned int pre_uvolt; | ||
| 49 | unsigned int const_uvolt; | ||
| 50 | unsigned int eoc_uamp; | ||
| 51 | unsigned int fast_uamp; | ||
| 52 | }; | ||
| 53 | |||
| 54 | struct rt5033_charger { | ||
| 55 | struct device *dev; | ||
| 56 | struct rt5033_dev *rt5033; | ||
| 57 | struct power_supply psy; | ||
| 58 | |||
| 59 | struct rt5033_charger_data *chg; | ||
| 60 | }; | ||
| 61 | |||
| 62 | #endif /* __RT5033_H__ */ | ||
diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h index 2bbc62aa818a..551f85456c11 100644 --- a/include/linux/mlx4/qp.h +++ b/include/linux/mlx4/qp.h | |||
| @@ -427,7 +427,7 @@ struct mlx4_wqe_inline_seg { | |||
| 427 | 427 | ||
| 428 | enum mlx4_update_qp_attr { | 428 | enum mlx4_update_qp_attr { |
| 429 | MLX4_UPDATE_QP_SMAC = 1 << 0, | 429 | MLX4_UPDATE_QP_SMAC = 1 << 0, |
| 430 | MLX4_UPDATE_QP_VSD = 1 << 2, | 430 | MLX4_UPDATE_QP_VSD = 1 << 1, |
| 431 | MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 2) - 1 | 431 | MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 2) - 1 |
| 432 | }; | 432 | }; |
| 433 | 433 | ||
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 3301c4c289d6..f17fa75809aa 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
| @@ -227,6 +227,7 @@ struct mtd_info { | |||
| 227 | int (*_block_markbad) (struct mtd_info *mtd, loff_t ofs); | 227 | int (*_block_markbad) (struct mtd_info *mtd, loff_t ofs); |
| 228 | int (*_suspend) (struct mtd_info *mtd); | 228 | int (*_suspend) (struct mtd_info *mtd); |
| 229 | void (*_resume) (struct mtd_info *mtd); | 229 | void (*_resume) (struct mtd_info *mtd); |
| 230 | void (*_reboot) (struct mtd_info *mtd); | ||
| 230 | /* | 231 | /* |
| 231 | * If the driver is something smart, like UBI, it may need to maintain | 232 | * If the driver is something smart, like UBI, it may need to maintain |
| 232 | * its own reference counting. The below functions are only for driver. | 233 | * its own reference counting. The below functions are only for driver. |
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h index 63aeccf9ddc8..4720b86ee73d 100644 --- a/include/linux/mtd/spi-nor.h +++ b/include/linux/mtd/spi-nor.h | |||
| @@ -56,6 +56,10 @@ | |||
| 56 | /* Used for Spansion flashes only. */ | 56 | /* Used for Spansion flashes only. */ |
| 57 | #define SPINOR_OP_BRWR 0x17 /* Bank register write */ | 57 | #define SPINOR_OP_BRWR 0x17 /* Bank register write */ |
| 58 | 58 | ||
| 59 | /* Used for Micron flashes only. */ | ||
| 60 | #define SPINOR_OP_RD_EVCR 0x65 /* Read EVCR register */ | ||
| 61 | #define SPINOR_OP_WD_EVCR 0x61 /* Write EVCR register */ | ||
| 62 | |||
| 59 | /* Status Register bits. */ | 63 | /* Status Register bits. */ |
| 60 | #define SR_WIP 1 /* Write in progress */ | 64 | #define SR_WIP 1 /* Write in progress */ |
| 61 | #define SR_WEL 2 /* Write enable latch */ | 65 | #define SR_WEL 2 /* Write enable latch */ |
| @@ -67,6 +71,9 @@ | |||
| 67 | 71 | ||
| 68 | #define SR_QUAD_EN_MX 0x40 /* Macronix Quad I/O */ | 72 | #define SR_QUAD_EN_MX 0x40 /* Macronix Quad I/O */ |
| 69 | 73 | ||
| 74 | /* Enhanced Volatile Configuration Register bits */ | ||
| 75 | #define EVCR_QUAD_EN_MICRON 0x80 /* Micron Quad I/O */ | ||
| 76 | |||
| 70 | /* Flag Status Register bits */ | 77 | /* Flag Status Register bits */ |
| 71 | #define FSR_READY 0x80 | 78 | #define FSR_READY 0x80 |
| 72 | 79 | ||
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 2007f3b44d05..625c8d71511b 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -2341,6 +2341,7 @@ struct gro_remcsum { | |||
| 2341 | 2341 | ||
| 2342 | static inline void skb_gro_remcsum_init(struct gro_remcsum *grc) | 2342 | static inline void skb_gro_remcsum_init(struct gro_remcsum *grc) |
| 2343 | { | 2343 | { |
| 2344 | grc->offset = 0; | ||
| 2344 | grc->delta = 0; | 2345 | grc->delta = 0; |
| 2345 | } | 2346 | } |
| 2346 | 2347 | ||
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 6d627b92df53..2f77e0c651c8 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
| @@ -180,7 +180,6 @@ struct nfs_inode { | |||
| 180 | /* NFSv4 state */ | 180 | /* NFSv4 state */ |
| 181 | struct list_head open_states; | 181 | struct list_head open_states; |
| 182 | struct nfs_delegation __rcu *delegation; | 182 | struct nfs_delegation __rcu *delegation; |
| 183 | fmode_t delegation_state; | ||
| 184 | struct rw_semaphore rwsem; | 183 | struct rw_semaphore rwsem; |
| 185 | 184 | ||
| 186 | /* pNFS layout information */ | 185 | /* pNFS layout information */ |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 38d96ba935c2..4cb3eaa89cf7 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
| @@ -1167,8 +1167,15 @@ struct nfs41_impl_id { | |||
| 1167 | struct nfstime4 date; | 1167 | struct nfstime4 date; |
| 1168 | }; | 1168 | }; |
| 1169 | 1169 | ||
| 1170 | struct nfs41_bind_conn_to_session_args { | ||
| 1171 | struct nfs_client *client; | ||
| 1172 | struct nfs4_sessionid sessionid; | ||
| 1173 | u32 dir; | ||
| 1174 | bool use_conn_in_rdma_mode; | ||
| 1175 | }; | ||
| 1176 | |||
| 1170 | struct nfs41_bind_conn_to_session_res { | 1177 | struct nfs41_bind_conn_to_session_res { |
| 1171 | struct nfs4_session *session; | 1178 | struct nfs4_sessionid sessionid; |
| 1172 | u32 dir; | 1179 | u32 dir; |
| 1173 | bool use_conn_in_rdma_mode; | 1180 | bool use_conn_in_rdma_mode; |
| 1174 | }; | 1181 | }; |
| @@ -1185,6 +1192,8 @@ struct nfs41_exchange_id_res { | |||
| 1185 | 1192 | ||
| 1186 | struct nfs41_create_session_args { | 1193 | struct nfs41_create_session_args { |
| 1187 | struct nfs_client *client; | 1194 | struct nfs_client *client; |
| 1195 | u64 clientid; | ||
| 1196 | uint32_t seqid; | ||
| 1188 | uint32_t flags; | 1197 | uint32_t flags; |
| 1189 | uint32_t cb_program; | 1198 | uint32_t cb_program; |
| 1190 | struct nfs4_channel_attrs fc_attrs; /* Fore Channel */ | 1199 | struct nfs4_channel_attrs fc_attrs; /* Fore Channel */ |
| @@ -1192,7 +1201,11 @@ struct nfs41_create_session_args { | |||
| 1192 | }; | 1201 | }; |
| 1193 | 1202 | ||
| 1194 | struct nfs41_create_session_res { | 1203 | struct nfs41_create_session_res { |
| 1195 | struct nfs_client *client; | 1204 | struct nfs4_sessionid sessionid; |
| 1205 | uint32_t seqid; | ||
| 1206 | uint32_t flags; | ||
| 1207 | struct nfs4_channel_attrs fc_attrs; /* Fore Channel */ | ||
| 1208 | struct nfs4_channel_attrs bc_attrs; /* Back Channel */ | ||
| 1196 | }; | 1209 | }; |
| 1197 | 1210 | ||
| 1198 | struct nfs41_reclaim_complete_args { | 1211 | struct nfs41_reclaim_complete_args { |
| @@ -1351,7 +1364,7 @@ struct nfs_commit_completion_ops { | |||
| 1351 | }; | 1364 | }; |
| 1352 | 1365 | ||
| 1353 | struct nfs_commit_info { | 1366 | struct nfs_commit_info { |
| 1354 | spinlock_t *lock; | 1367 | spinlock_t *lock; /* inode->i_lock */ |
| 1355 | struct nfs_mds_commit_info *mds; | 1368 | struct nfs_mds_commit_info *mds; |
| 1356 | struct pnfs_ds_commit_info *ds; | 1369 | struct pnfs_ds_commit_info *ds; |
| 1357 | struct nfs_direct_req *dreq; /* O_DIRECT request */ | 1370 | struct nfs_direct_req *dreq; /* O_DIRECT request */ |
diff --git a/include/linux/nvme.h b/include/linux/nvme.h index 19a5d4b23209..0adad4a5419b 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h | |||
| @@ -17,7 +17,6 @@ | |||
| 17 | 17 | ||
| 18 | #include <uapi/linux/nvme.h> | 18 | #include <uapi/linux/nvme.h> |
| 19 | #include <linux/pci.h> | 19 | #include <linux/pci.h> |
| 20 | #include <linux/miscdevice.h> | ||
| 21 | #include <linux/kref.h> | 20 | #include <linux/kref.h> |
| 22 | #include <linux/blk-mq.h> | 21 | #include <linux/blk-mq.h> |
| 23 | 22 | ||
| @@ -62,8 +61,6 @@ enum { | |||
| 62 | NVME_CSTS_SHST_MASK = 3 << 2, | 61 | NVME_CSTS_SHST_MASK = 3 << 2, |
| 63 | }; | 62 | }; |
| 64 | 63 | ||
| 65 | #define NVME_VS(major, minor) (major << 16 | minor) | ||
| 66 | |||
| 67 | extern unsigned char nvme_io_timeout; | 64 | extern unsigned char nvme_io_timeout; |
| 68 | #define NVME_IO_TIMEOUT (nvme_io_timeout * HZ) | 65 | #define NVME_IO_TIMEOUT (nvme_io_timeout * HZ) |
| 69 | 66 | ||
| @@ -91,9 +88,10 @@ struct nvme_dev { | |||
| 91 | struct nvme_bar __iomem *bar; | 88 | struct nvme_bar __iomem *bar; |
| 92 | struct list_head namespaces; | 89 | struct list_head namespaces; |
| 93 | struct kref kref; | 90 | struct kref kref; |
| 94 | struct miscdevice miscdev; | 91 | struct device *device; |
| 95 | work_func_t reset_workfn; | 92 | work_func_t reset_workfn; |
| 96 | struct work_struct reset_work; | 93 | struct work_struct reset_work; |
| 94 | struct work_struct probe_work; | ||
| 97 | char name[12]; | 95 | char name[12]; |
| 98 | char serial[20]; | 96 | char serial[20]; |
| 99 | char model[40]; | 97 | char model[40]; |
| @@ -105,7 +103,6 @@ struct nvme_dev { | |||
| 105 | u16 abort_limit; | 103 | u16 abort_limit; |
| 106 | u8 event_limit; | 104 | u8 event_limit; |
| 107 | u8 vwc; | 105 | u8 vwc; |
| 108 | u8 initialized; | ||
| 109 | }; | 106 | }; |
| 110 | 107 | ||
| 111 | /* | 108 | /* |
| @@ -121,6 +118,7 @@ struct nvme_ns { | |||
| 121 | unsigned ns_id; | 118 | unsigned ns_id; |
| 122 | int lba_shift; | 119 | int lba_shift; |
| 123 | int ms; | 120 | int ms; |
| 121 | int pi_type; | ||
| 124 | u64 mode_select_num_blocks; | 122 | u64 mode_select_num_blocks; |
| 125 | u32 mode_select_block_len; | 123 | u32 mode_select_block_len; |
| 126 | }; | 124 | }; |
| @@ -138,6 +136,7 @@ struct nvme_iod { | |||
| 138 | int nents; /* Used in scatterlist */ | 136 | int nents; /* Used in scatterlist */ |
| 139 | int length; /* Of data, in bytes */ | 137 | int length; /* Of data, in bytes */ |
| 140 | dma_addr_t first_dma; | 138 | dma_addr_t first_dma; |
| 139 | struct scatterlist meta_sg[1]; /* metadata requires single contiguous buffer */ | ||
| 141 | struct scatterlist sg[0]; | 140 | struct scatterlist sg[0]; |
| 142 | }; | 141 | }; |
| 143 | 142 | ||
diff --git a/include/linux/platform_data/bfin_rotary.h b/include/linux/platform_data/bfin_rotary.h new file mode 100644 index 000000000000..98829370fee2 --- /dev/null +++ b/include/linux/platform_data/bfin_rotary.h | |||
| @@ -0,0 +1,117 @@ | |||
| 1 | /* | ||
| 2 | * board initialization should put one of these structures into platform_data | ||
| 3 | * and place the bfin-rotary onto platform_bus named "bfin-rotary". | ||
| 4 | * | ||
| 5 | * Copyright 2008-2010 Analog Devices Inc. | ||
| 6 | * | ||
| 7 | * Licensed under the GPL-2 or later. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef _BFIN_ROTARY_H | ||
| 11 | #define _BFIN_ROTARY_H | ||
| 12 | |||
| 13 | /* mode bitmasks */ | ||
| 14 | #define ROT_QUAD_ENC CNTMODE_QUADENC /* quadrature/grey code encoder mode */ | ||
| 15 | #define ROT_BIN_ENC CNTMODE_BINENC /* binary encoder mode */ | ||
| 16 | #define ROT_UD_CNT CNTMODE_UDCNT /* rotary counter mode */ | ||
| 17 | #define ROT_DIR_CNT CNTMODE_DIRCNT /* direction counter mode */ | ||
| 18 | |||
| 19 | #define ROT_DEBE DEBE /* Debounce Enable */ | ||
| 20 | |||
| 21 | #define ROT_CDGINV CDGINV /* CDG Pin Polarity Invert */ | ||
| 22 | #define ROT_CUDINV CUDINV /* CUD Pin Polarity Invert */ | ||
| 23 | #define ROT_CZMINV CZMINV /* CZM Pin Polarity Invert */ | ||
| 24 | |||
| 25 | struct bfin_rotary_platform_data { | ||
| 26 | /* set rotary UP KEY_### or BTN_### in case you prefer | ||
| 27 | * bfin-rotary to send EV_KEY otherwise set 0 | ||
| 28 | */ | ||
| 29 | unsigned int rotary_up_key; | ||
| 30 | /* set rotary DOWN KEY_### or BTN_### in case you prefer | ||
| 31 | * bfin-rotary to send EV_KEY otherwise set 0 | ||
| 32 | */ | ||
| 33 | unsigned int rotary_down_key; | ||
| 34 | /* set rotary BUTTON KEY_### or BTN_### */ | ||
| 35 | unsigned int rotary_button_key; | ||
| 36 | /* set rotary Relative Axis REL_### in case you prefer | ||
| 37 | * bfin-rotary to send EV_REL otherwise set 0 | ||
| 38 | */ | ||
| 39 | unsigned int rotary_rel_code; | ||
| 40 | unsigned short debounce; /* 0..17 */ | ||
| 41 | unsigned short mode; | ||
| 42 | unsigned short pm_wakeup; | ||
| 43 | unsigned short *pin_list; | ||
| 44 | }; | ||
| 45 | |||
| 46 | /* CNT_CONFIG bitmasks */ | ||
| 47 | #define CNTE (1 << 0) /* Counter Enable */ | ||
| 48 | #define DEBE (1 << 1) /* Debounce Enable */ | ||
| 49 | #define CDGINV (1 << 4) /* CDG Pin Polarity Invert */ | ||
| 50 | #define CUDINV (1 << 5) /* CUD Pin Polarity Invert */ | ||
| 51 | #define CZMINV (1 << 6) /* CZM Pin Polarity Invert */ | ||
| 52 | #define CNTMODE_SHIFT 8 | ||
| 53 | #define CNTMODE (0x7 << CNTMODE_SHIFT) /* Counter Operating Mode */ | ||
| 54 | #define ZMZC (1 << 1) /* CZM Zeroes Counter Enable */ | ||
| 55 | #define BNDMODE_SHIFT 12 | ||
| 56 | #define BNDMODE (0x3 << BNDMODE_SHIFT) /* Boundary register Mode */ | ||
| 57 | #define INPDIS (1 << 15) /* CUG and CDG Input Disable */ | ||
| 58 | |||
| 59 | #define CNTMODE_QUADENC (0 << CNTMODE_SHIFT) /* quadrature encoder mode */ | ||
| 60 | #define CNTMODE_BINENC (1 << CNTMODE_SHIFT) /* binary encoder mode */ | ||
| 61 | #define CNTMODE_UDCNT (2 << CNTMODE_SHIFT) /* up/down counter mode */ | ||
| 62 | #define CNTMODE_DIRCNT (4 << CNTMODE_SHIFT) /* direction counter mode */ | ||
| 63 | #define CNTMODE_DIRTMR (5 << CNTMODE_SHIFT) /* direction timer mode */ | ||
| 64 | |||
| 65 | #define BNDMODE_COMP (0 << BNDMODE_SHIFT) /* boundary compare mode */ | ||
| 66 | #define BNDMODE_ZERO (1 << BNDMODE_SHIFT) /* boundary compare and zero mode */ | ||
| 67 | #define BNDMODE_CAPT (2 << BNDMODE_SHIFT) /* boundary capture mode */ | ||
| 68 | #define BNDMODE_AEXT (3 << BNDMODE_SHIFT) /* boundary auto-extend mode */ | ||
| 69 | |||
| 70 | /* CNT_IMASK bitmasks */ | ||
| 71 | #define ICIE (1 << 0) /* Illegal Gray/Binary Code Interrupt Enable */ | ||
| 72 | #define UCIE (1 << 1) /* Up count Interrupt Enable */ | ||
| 73 | #define DCIE (1 << 2) /* Down count Interrupt Enable */ | ||
| 74 | #define MINCIE (1 << 3) /* Min Count Interrupt Enable */ | ||
| 75 | #define MAXCIE (1 << 4) /* Max Count Interrupt Enable */ | ||
| 76 | #define COV31IE (1 << 5) /* Bit 31 Overflow Interrupt Enable */ | ||
| 77 | #define COV15IE (1 << 6) /* Bit 15 Overflow Interrupt Enable */ | ||
| 78 | #define CZEROIE (1 << 7) /* Count to Zero Interrupt Enable */ | ||
| 79 | #define CZMIE (1 << 8) /* CZM Pin Interrupt Enable */ | ||
| 80 | #define CZMEIE (1 << 9) /* CZM Error Interrupt Enable */ | ||
| 81 | #define CZMZIE (1 << 10) /* CZM Zeroes Counter Interrupt Enable */ | ||
| 82 | |||
| 83 | /* CNT_STATUS bitmasks */ | ||
| 84 | #define ICII (1 << 0) /* Illegal Gray/Binary Code Interrupt Identifier */ | ||
| 85 | #define UCII (1 << 1) /* Up count Interrupt Identifier */ | ||
| 86 | #define DCII (1 << 2) /* Down count Interrupt Identifier */ | ||
| 87 | #define MINCII (1 << 3) /* Min Count Interrupt Identifier */ | ||
| 88 | #define MAXCII (1 << 4) /* Max Count Interrupt Identifier */ | ||
| 89 | #define COV31II (1 << 5) /* Bit 31 Overflow Interrupt Identifier */ | ||
| 90 | #define COV15II (1 << 6) /* Bit 15 Overflow Interrupt Identifier */ | ||
| 91 | #define CZEROII (1 << 7) /* Count to Zero Interrupt Identifier */ | ||
| 92 | #define CZMII (1 << 8) /* CZM Pin Interrupt Identifier */ | ||
| 93 | #define CZMEII (1 << 9) /* CZM Error Interrupt Identifier */ | ||
| 94 | #define CZMZII (1 << 10) /* CZM Zeroes Counter Interrupt Identifier */ | ||
| 95 | |||
| 96 | /* CNT_COMMAND bitmasks */ | ||
| 97 | #define W1LCNT 0xf /* Load Counter Register */ | ||
| 98 | #define W1LMIN 0xf0 /* Load Min Register */ | ||
| 99 | #define W1LMAX 0xf00 /* Load Max Register */ | ||
| 100 | #define W1ZMONCE (1 << 12) /* Enable CZM Clear Counter Once */ | ||
| 101 | |||
| 102 | #define W1LCNT_ZERO (1 << 0) /* write 1 to load CNT_COUNTER with zero */ | ||
| 103 | #define W1LCNT_MIN (1 << 2) /* write 1 to load CNT_COUNTER from CNT_MIN */ | ||
| 104 | #define W1LCNT_MAX (1 << 3) /* write 1 to load CNT_COUNTER from CNT_MAX */ | ||
| 105 | |||
| 106 | #define W1LMIN_ZERO (1 << 4) /* write 1 to load CNT_MIN with zero */ | ||
| 107 | #define W1LMIN_CNT (1 << 5) /* write 1 to load CNT_MIN from CNT_COUNTER */ | ||
| 108 | #define W1LMIN_MAX (1 << 7) /* write 1 to load CNT_MIN from CNT_MAX */ | ||
| 109 | |||
| 110 | #define W1LMAX_ZERO (1 << 8) /* write 1 to load CNT_MAX with zero */ | ||
| 111 | #define W1LMAX_CNT (1 << 9) /* write 1 to load CNT_MAX from CNT_COUNTER */ | ||
| 112 | #define W1LMAX_MIN (1 << 10) /* write 1 to load CNT_MAX from CNT_MIN */ | ||
| 113 | |||
| 114 | /* CNT_DEBOUNCE bitmasks */ | ||
| 115 | #define DPRESCALE 0xf /* Load Counter Register */ | ||
| 116 | |||
| 117 | #endif | ||
diff --git a/include/linux/platform_data/dma-dw.h b/include/linux/platform_data/dma-dw.h index d8155c005242..87ac14c584f2 100644 --- a/include/linux/platform_data/dma-dw.h +++ b/include/linux/platform_data/dma-dw.h | |||
| @@ -13,10 +13,12 @@ | |||
| 13 | 13 | ||
| 14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
| 15 | 15 | ||
| 16 | #define DW_DMA_MAX_NR_MASTERS 4 | ||
| 17 | |||
| 16 | /** | 18 | /** |
| 17 | * struct dw_dma_slave - Controller-specific information about a slave | 19 | * struct dw_dma_slave - Controller-specific information about a slave |
| 18 | * | 20 | * |
| 19 | * @dma_dev: required DMA master device. Depricated. | 21 | * @dma_dev: required DMA master device |
| 20 | * @src_id: src request line | 22 | * @src_id: src request line |
| 21 | * @dst_id: dst request line | 23 | * @dst_id: dst request line |
| 22 | * @src_master: src master for transfers on allocated channel. | 24 | * @src_master: src master for transfers on allocated channel. |
| @@ -53,7 +55,7 @@ struct dw_dma_platform_data { | |||
| 53 | unsigned char chan_priority; | 55 | unsigned char chan_priority; |
| 54 | unsigned short block_size; | 56 | unsigned short block_size; |
| 55 | unsigned char nr_masters; | 57 | unsigned char nr_masters; |
| 56 | unsigned char data_width[4]; | 58 | unsigned char data_width[DW_DMA_MAX_NR_MASTERS]; |
| 57 | }; | 59 | }; |
| 58 | 60 | ||
| 59 | #endif /* _PLATFORM_DATA_DMA_DW_H */ | 61 | #endif /* _PLATFORM_DATA_DMA_DW_H */ |
diff --git a/include/linux/platform_data/dma-mmp_tdma.h b/include/linux/platform_data/dma-mmp_tdma.h index 66574ea39f97..0c72886030ef 100644 --- a/include/linux/platform_data/dma-mmp_tdma.h +++ b/include/linux/platform_data/dma-mmp_tdma.h | |||
| @@ -28,6 +28,13 @@ struct sram_platdata { | |||
| 28 | int granularity; | 28 | int granularity; |
| 29 | }; | 29 | }; |
| 30 | 30 | ||
| 31 | #ifdef CONFIG_ARM | ||
| 31 | extern struct gen_pool *sram_get_gpool(char *pool_name); | 32 | extern struct gen_pool *sram_get_gpool(char *pool_name); |
| 33 | #else | ||
| 34 | static inline struct gen_pool *sram_get_gpool(char *pool_name) | ||
| 35 | { | ||
| 36 | return NULL; | ||
| 37 | } | ||
| 38 | #endif | ||
| 32 | 39 | ||
| 33 | #endif /* __DMA_MMP_TDMA_H */ | 40 | #endif /* __DMA_MMP_TDMA_H */ |
diff --git a/include/linux/rhashtable.h b/include/linux/rhashtable.h index 58851275fed9..d438eeb08bff 100644 --- a/include/linux/rhashtable.h +++ b/include/linux/rhashtable.h | |||
| @@ -54,10 +54,11 @@ struct rhash_head { | |||
| 54 | * @buckets: size * hash buckets | 54 | * @buckets: size * hash buckets |
| 55 | */ | 55 | */ |
| 56 | struct bucket_table { | 56 | struct bucket_table { |
| 57 | size_t size; | 57 | size_t size; |
| 58 | unsigned int locks_mask; | 58 | unsigned int locks_mask; |
| 59 | spinlock_t *locks; | 59 | spinlock_t *locks; |
| 60 | struct rhash_head __rcu *buckets[]; | 60 | |
| 61 | struct rhash_head __rcu *buckets[] ____cacheline_aligned_in_smp; | ||
| 61 | }; | 62 | }; |
| 62 | 63 | ||
| 63 | typedef u32 (*rht_hashfn_t)(const void *data, u32 len, u32 seed); | 64 | typedef u32 (*rht_hashfn_t)(const void *data, u32 len, u32 seed); |
| @@ -78,12 +79,6 @@ struct rhashtable; | |||
| 78 | * @locks_mul: Number of bucket locks to allocate per cpu (default: 128) | 79 | * @locks_mul: Number of bucket locks to allocate per cpu (default: 128) |
| 79 | * @hashfn: Function to hash key | 80 | * @hashfn: Function to hash key |
| 80 | * @obj_hashfn: Function to hash object | 81 | * @obj_hashfn: Function to hash object |
| 81 | * @grow_decision: If defined, may return true if table should expand | ||
| 82 | * @shrink_decision: If defined, may return true if table should shrink | ||
| 83 | * | ||
| 84 | * Note: when implementing the grow and shrink decision function, min/max | ||
| 85 | * shift must be enforced, otherwise, resizing watermarks they set may be | ||
| 86 | * useless. | ||
| 87 | */ | 82 | */ |
| 88 | struct rhashtable_params { | 83 | struct rhashtable_params { |
| 89 | size_t nelem_hint; | 84 | size_t nelem_hint; |
| @@ -97,10 +92,6 @@ struct rhashtable_params { | |||
| 97 | size_t locks_mul; | 92 | size_t locks_mul; |
| 98 | rht_hashfn_t hashfn; | 93 | rht_hashfn_t hashfn; |
| 99 | rht_obj_hashfn_t obj_hashfn; | 94 | rht_obj_hashfn_t obj_hashfn; |
| 100 | bool (*grow_decision)(const struct rhashtable *ht, | ||
| 101 | size_t new_size); | ||
| 102 | bool (*shrink_decision)(const struct rhashtable *ht, | ||
| 103 | size_t new_size); | ||
| 104 | }; | 95 | }; |
| 105 | 96 | ||
| 106 | /** | 97 | /** |
| @@ -192,9 +183,6 @@ int rhashtable_init(struct rhashtable *ht, struct rhashtable_params *params); | |||
| 192 | void rhashtable_insert(struct rhashtable *ht, struct rhash_head *node); | 183 | void rhashtable_insert(struct rhashtable *ht, struct rhash_head *node); |
| 193 | bool rhashtable_remove(struct rhashtable *ht, struct rhash_head *node); | 184 | bool rhashtable_remove(struct rhashtable *ht, struct rhash_head *node); |
| 194 | 185 | ||
| 195 | bool rht_grow_above_75(const struct rhashtable *ht, size_t new_size); | ||
| 196 | bool rht_shrink_below_30(const struct rhashtable *ht, size_t new_size); | ||
| 197 | |||
| 198 | int rhashtable_expand(struct rhashtable *ht); | 186 | int rhashtable_expand(struct rhashtable *ht); |
| 199 | int rhashtable_shrink(struct rhashtable *ht); | 187 | int rhashtable_shrink(struct rhashtable *ht); |
| 200 | 188 | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index 41c60e5302d7..6d77432e14ff 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -363,9 +363,6 @@ extern void show_regs(struct pt_regs *); | |||
| 363 | */ | 363 | */ |
| 364 | extern void show_stack(struct task_struct *task, unsigned long *sp); | 364 | extern void show_stack(struct task_struct *task, unsigned long *sp); |
| 365 | 365 | ||
| 366 | void io_schedule(void); | ||
| 367 | long io_schedule_timeout(long timeout); | ||
| 368 | |||
| 369 | extern void cpu_init (void); | 366 | extern void cpu_init (void); |
| 370 | extern void trap_init(void); | 367 | extern void trap_init(void); |
| 371 | extern void update_process_times(int user); | 368 | extern void update_process_times(int user); |
| @@ -422,6 +419,13 @@ extern signed long schedule_timeout_uninterruptible(signed long timeout); | |||
| 422 | asmlinkage void schedule(void); | 419 | asmlinkage void schedule(void); |
| 423 | extern void schedule_preempt_disabled(void); | 420 | extern void schedule_preempt_disabled(void); |
| 424 | 421 | ||
| 422 | extern long io_schedule_timeout(long timeout); | ||
| 423 | |||
| 424 | static inline void io_schedule(void) | ||
| 425 | { | ||
| 426 | io_schedule_timeout(MAX_SCHEDULE_TIMEOUT); | ||
| 427 | } | ||
| 428 | |||
| 425 | struct nsproxy; | 429 | struct nsproxy; |
| 426 | struct user_namespace; | 430 | struct user_namespace; |
| 427 | 431 | ||
diff --git a/include/linux/sunrpc/metrics.h b/include/linux/sunrpc/metrics.h index 7e61a17030a4..694eecb2f1b5 100644 --- a/include/linux/sunrpc/metrics.h +++ b/include/linux/sunrpc/metrics.h | |||
| @@ -89,8 +89,11 @@ void rpc_free_iostats(struct rpc_iostats *); | |||
| 89 | static inline struct rpc_iostats *rpc_alloc_iostats(struct rpc_clnt *clnt) { return NULL; } | 89 | static inline struct rpc_iostats *rpc_alloc_iostats(struct rpc_clnt *clnt) { return NULL; } |
| 90 | static inline void rpc_count_iostats(const struct rpc_task *task, | 90 | static inline void rpc_count_iostats(const struct rpc_task *task, |
| 91 | struct rpc_iostats *stats) {} | 91 | struct rpc_iostats *stats) {} |
| 92 | static inline void rpc_count_iostats_metrics(const struct rpc_task *, | 92 | static inline void rpc_count_iostats_metrics(const struct rpc_task *task, |
| 93 | struct rpc_iostats *) {} | 93 | struct rpc_iostats *stats) |
| 94 | { | ||
| 95 | } | ||
| 96 | |||
| 94 | static inline void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) {} | 97 | static inline void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) {} |
| 95 | static inline void rpc_free_iostats(struct rpc_iostats *stats) {} | 98 | static inline void rpc_free_iostats(struct rpc_iostats *stats) {} |
| 96 | 99 | ||
diff --git a/include/linux/thermal.h b/include/linux/thermal.h index fc52e307efab..5eac316490ea 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h | |||
| @@ -314,6 +314,8 @@ void thermal_zone_of_sensor_unregister(struct device *dev, | |||
| 314 | } | 314 | } |
| 315 | 315 | ||
| 316 | #endif | 316 | #endif |
| 317 | |||
| 318 | #if IS_ENABLED(CONFIG_THERMAL) | ||
| 317 | struct thermal_zone_device *thermal_zone_device_register(const char *, int, int, | 319 | struct thermal_zone_device *thermal_zone_device_register(const char *, int, int, |
| 318 | void *, struct thermal_zone_device_ops *, | 320 | void *, struct thermal_zone_device_ops *, |
| 319 | const struct thermal_zone_params *, int, int); | 321 | const struct thermal_zone_params *, int, int); |
| @@ -340,8 +342,58 @@ struct thermal_instance *get_thermal_instance(struct thermal_zone_device *, | |||
| 340 | struct thermal_cooling_device *, int); | 342 | struct thermal_cooling_device *, int); |
| 341 | void thermal_cdev_update(struct thermal_cooling_device *); | 343 | void thermal_cdev_update(struct thermal_cooling_device *); |
| 342 | void thermal_notify_framework(struct thermal_zone_device *, int); | 344 | void thermal_notify_framework(struct thermal_zone_device *, int); |
| 343 | 345 | #else | |
| 344 | #ifdef CONFIG_NET | 346 | static inline struct thermal_zone_device *thermal_zone_device_register( |
| 347 | const char *type, int trips, int mask, void *devdata, | ||
| 348 | struct thermal_zone_device_ops *ops, | ||
| 349 | const struct thermal_zone_params *tzp, | ||
| 350 | int passive_delay, int polling_delay) | ||
| 351 | { return ERR_PTR(-ENODEV); } | ||
| 352 | static inline void thermal_zone_device_unregister( | ||
| 353 | struct thermal_zone_device *tz) | ||
| 354 | { } | ||
| 355 | static inline int thermal_zone_bind_cooling_device( | ||
| 356 | struct thermal_zone_device *tz, int trip, | ||
| 357 | struct thermal_cooling_device *cdev, | ||
| 358 | unsigned long upper, unsigned long lower) | ||
| 359 | { return -ENODEV; } | ||
| 360 | static inline int thermal_zone_unbind_cooling_device( | ||
| 361 | struct thermal_zone_device *tz, int trip, | ||
| 362 | struct thermal_cooling_device *cdev) | ||
| 363 | { return -ENODEV; } | ||
| 364 | static inline void thermal_zone_device_update(struct thermal_zone_device *tz) | ||
| 365 | { } | ||
| 366 | static inline struct thermal_cooling_device * | ||
| 367 | thermal_cooling_device_register(char *type, void *devdata, | ||
| 368 | const struct thermal_cooling_device_ops *ops) | ||
| 369 | { return ERR_PTR(-ENODEV); } | ||
| 370 | static inline struct thermal_cooling_device * | ||
| 371 | thermal_of_cooling_device_register(struct device_node *np, | ||
| 372 | char *type, void *devdata, const struct thermal_cooling_device_ops *ops) | ||
| 373 | { return ERR_PTR(-ENODEV); } | ||
| 374 | static inline void thermal_cooling_device_unregister( | ||
| 375 | struct thermal_cooling_device *cdev) | ||
| 376 | { } | ||
| 377 | static inline struct thermal_zone_device *thermal_zone_get_zone_by_name( | ||
| 378 | const char *name) | ||
| 379 | { return ERR_PTR(-ENODEV); } | ||
| 380 | static inline int thermal_zone_get_temp( | ||
| 381 | struct thermal_zone_device *tz, unsigned long *temp) | ||
| 382 | { return -ENODEV; } | ||
| 383 | static inline int get_tz_trend(struct thermal_zone_device *tz, int trip) | ||
| 384 | { return -ENODEV; } | ||
| 385 | static inline struct thermal_instance * | ||
| 386 | get_thermal_instance(struct thermal_zone_device *tz, | ||
| 387 | struct thermal_cooling_device *cdev, int trip) | ||
| 388 | { return ERR_PTR(-ENODEV); } | ||
| 389 | static inline void thermal_cdev_update(struct thermal_cooling_device *cdev) | ||
| 390 | { } | ||
| 391 | static inline void thermal_notify_framework(struct thermal_zone_device *tz, | ||
| 392 | int trip) | ||
| 393 | { } | ||
| 394 | #endif /* CONFIG_THERMAL */ | ||
| 395 | |||
| 396 | #if defined(CONFIG_NET) && IS_ENABLED(CONFIG_THERMAL) | ||
| 345 | extern int thermal_generate_netlink_event(struct thermal_zone_device *tz, | 397 | extern int thermal_generate_netlink_event(struct thermal_zone_device *tz, |
| 346 | enum events event); | 398 | enum events event); |
| 347 | #else | 399 | #else |
diff --git a/include/linux/vfio.h b/include/linux/vfio.h index d3204115f15d..2d67b8998fd8 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | * @ioctl: Perform ioctl(2) on device file descriptor, supporting VFIO_DEVICE_* | 26 | * @ioctl: Perform ioctl(2) on device file descriptor, supporting VFIO_DEVICE_* |
| 27 | * operations documented below | 27 | * operations documented below |
| 28 | * @mmap: Perform mmap(2) on a region of the device file descriptor | 28 | * @mmap: Perform mmap(2) on a region of the device file descriptor |
| 29 | * @request: Request for the bus driver to release the device | ||
| 29 | */ | 30 | */ |
| 30 | struct vfio_device_ops { | 31 | struct vfio_device_ops { |
| 31 | char *name; | 32 | char *name; |
| @@ -38,6 +39,7 @@ struct vfio_device_ops { | |||
| 38 | long (*ioctl)(void *device_data, unsigned int cmd, | 39 | long (*ioctl)(void *device_data, unsigned int cmd, |
| 39 | unsigned long arg); | 40 | unsigned long arg); |
| 40 | int (*mmap)(void *device_data, struct vm_area_struct *vma); | 41 | int (*mmap)(void *device_data, struct vm_area_struct *vma); |
| 42 | void (*request)(void *device_data, unsigned int count); | ||
| 41 | }; | 43 | }; |
| 42 | 44 | ||
| 43 | extern int vfio_add_group_dev(struct device *dev, | 45 | extern int vfio_add_group_dev(struct device *dev, |
diff --git a/include/linux/virtio_mmio.h b/include/linux/virtio_mmio.h index 5c7b6f0daef8..c4b09689ab64 100644 --- a/include/linux/virtio_mmio.h +++ b/include/linux/virtio_mmio.h | |||
| @@ -51,23 +51,29 @@ | |||
| 51 | /* Virtio vendor ID - Read Only */ | 51 | /* Virtio vendor ID - Read Only */ |
| 52 | #define VIRTIO_MMIO_VENDOR_ID 0x00c | 52 | #define VIRTIO_MMIO_VENDOR_ID 0x00c |
| 53 | 53 | ||
| 54 | /* Bitmask of the features supported by the host | 54 | /* Bitmask of the features supported by the device (host) |
| 55 | * (32 bits per set) - Read Only */ | 55 | * (32 bits per set) - Read Only */ |
| 56 | #define VIRTIO_MMIO_HOST_FEATURES 0x010 | 56 | #define VIRTIO_MMIO_DEVICE_FEATURES 0x010 |
| 57 | 57 | ||
| 58 | /* Host features set selector - Write Only */ | 58 | /* Device (host) features set selector - Write Only */ |
| 59 | #define VIRTIO_MMIO_HOST_FEATURES_SEL 0x014 | 59 | #define VIRTIO_MMIO_DEVICE_FEATURES_SEL 0x014 |
| 60 | 60 | ||
| 61 | /* Bitmask of features activated by the guest | 61 | /* Bitmask of features activated by the driver (guest) |
| 62 | * (32 bits per set) - Write Only */ | 62 | * (32 bits per set) - Write Only */ |
| 63 | #define VIRTIO_MMIO_GUEST_FEATURES 0x020 | 63 | #define VIRTIO_MMIO_DRIVER_FEATURES 0x020 |
| 64 | 64 | ||
| 65 | /* Activated features set selector - Write Only */ | 65 | /* Activated features set selector - Write Only */ |
| 66 | #define VIRTIO_MMIO_GUEST_FEATURES_SEL 0x024 | 66 | #define VIRTIO_MMIO_DRIVER_FEATURES_SEL 0x024 |
| 67 | |||
| 68 | |||
| 69 | #ifndef VIRTIO_MMIO_NO_LEGACY /* LEGACY DEVICES ONLY! */ | ||
| 67 | 70 | ||
| 68 | /* Guest's memory page size in bytes - Write Only */ | 71 | /* Guest's memory page size in bytes - Write Only */ |
| 69 | #define VIRTIO_MMIO_GUEST_PAGE_SIZE 0x028 | 72 | #define VIRTIO_MMIO_GUEST_PAGE_SIZE 0x028 |
| 70 | 73 | ||
| 74 | #endif | ||
| 75 | |||
| 76 | |||
| 71 | /* Queue selector - Write Only */ | 77 | /* Queue selector - Write Only */ |
| 72 | #define VIRTIO_MMIO_QUEUE_SEL 0x030 | 78 | #define VIRTIO_MMIO_QUEUE_SEL 0x030 |
| 73 | 79 | ||
| @@ -77,12 +83,21 @@ | |||
| 77 | /* Queue size for the currently selected queue - Write Only */ | 83 | /* Queue size for the currently selected queue - Write Only */ |
| 78 | #define VIRTIO_MMIO_QUEUE_NUM 0x038 | 84 | #define VIRTIO_MMIO_QUEUE_NUM 0x038 |
| 79 | 85 | ||
| 86 | |||
| 87 | #ifndef VIRTIO_MMIO_NO_LEGACY /* LEGACY DEVICES ONLY! */ | ||
| 88 | |||
| 80 | /* Used Ring alignment for the currently selected queue - Write Only */ | 89 | /* Used Ring alignment for the currently selected queue - Write Only */ |
| 81 | #define VIRTIO_MMIO_QUEUE_ALIGN 0x03c | 90 | #define VIRTIO_MMIO_QUEUE_ALIGN 0x03c |
| 82 | 91 | ||
| 83 | /* Guest's PFN for the currently selected queue - Read Write */ | 92 | /* Guest's PFN for the currently selected queue - Read Write */ |
| 84 | #define VIRTIO_MMIO_QUEUE_PFN 0x040 | 93 | #define VIRTIO_MMIO_QUEUE_PFN 0x040 |
| 85 | 94 | ||
| 95 | #endif | ||
| 96 | |||
| 97 | |||
| 98 | /* Ready bit for the currently selected queue - Read Write */ | ||
| 99 | #define VIRTIO_MMIO_QUEUE_READY 0x044 | ||
| 100 | |||
| 86 | /* Queue notifier - Write Only */ | 101 | /* Queue notifier - Write Only */ |
| 87 | #define VIRTIO_MMIO_QUEUE_NOTIFY 0x050 | 102 | #define VIRTIO_MMIO_QUEUE_NOTIFY 0x050 |
| 88 | 103 | ||
| @@ -95,6 +110,21 @@ | |||
| 95 | /* Device status register - Read Write */ | 110 | /* Device status register - Read Write */ |
| 96 | #define VIRTIO_MMIO_STATUS 0x070 | 111 | #define VIRTIO_MMIO_STATUS 0x070 |
| 97 | 112 | ||
| 113 | /* Selected queue's Descriptor Table address, 64 bits in two halves */ | ||
| 114 | #define VIRTIO_MMIO_QUEUE_DESC_LOW 0x080 | ||
| 115 | #define VIRTIO_MMIO_QUEUE_DESC_HIGH 0x084 | ||
| 116 | |||
| 117 | /* Selected queue's Available Ring address, 64 bits in two halves */ | ||
| 118 | #define VIRTIO_MMIO_QUEUE_AVAIL_LOW 0x090 | ||
| 119 | #define VIRTIO_MMIO_QUEUE_AVAIL_HIGH 0x094 | ||
| 120 | |||
| 121 | /* Selected queue's Used Ring address, 64 bits in two halves */ | ||
| 122 | #define VIRTIO_MMIO_QUEUE_USED_LOW 0x0a0 | ||
| 123 | #define VIRTIO_MMIO_QUEUE_USED_HIGH 0x0a4 | ||
| 124 | |||
| 125 | /* Configuration atomicity value */ | ||
| 126 | #define VIRTIO_MMIO_CONFIG_GENERATION 0x0fc | ||
| 127 | |||
| 98 | /* The config space is defined by each driver as | 128 | /* The config space is defined by each driver as |
| 99 | * the per-driver configuration space - Read Write */ | 129 | * the per-driver configuration space - Read Write */ |
| 100 | #define VIRTIO_MMIO_CONFIG 0x100 | 130 | #define VIRTIO_MMIO_CONFIG 0x100 |
diff --git a/include/net/caif/cfpkt.h b/include/net/caif/cfpkt.h index 1c1ad46250d5..fe328c52c46b 100644 --- a/include/net/caif/cfpkt.h +++ b/include/net/caif/cfpkt.h | |||
| @@ -171,7 +171,7 @@ struct cfpkt *cfpkt_split(struct cfpkt *pkt, u16 pos); | |||
| 171 | * @return Checksum of buffer. | 171 | * @return Checksum of buffer. |
| 172 | */ | 172 | */ |
| 173 | 173 | ||
| 174 | u16 cfpkt_iterate(struct cfpkt *pkt, | 174 | int cfpkt_iterate(struct cfpkt *pkt, |
| 175 | u16 (*iter_func)(u16 chks, void *buf, u16 len), | 175 | u16 (*iter_func)(u16 chks, void *buf, u16 len), |
| 176 | u16 data); | 176 | u16 data); |
| 177 | 177 | ||
diff --git a/include/target/iscsi/iscsi_target_core.h b/include/target/iscsi/iscsi_target_core.h new file mode 100644 index 000000000000..d3583d3ee193 --- /dev/null +++ b/include/target/iscsi/iscsi_target_core.h | |||
| @@ -0,0 +1,897 @@ | |||
| 1 | #ifndef ISCSI_TARGET_CORE_H | ||
| 2 | #define ISCSI_TARGET_CORE_H | ||
| 3 | |||
| 4 | #include <linux/in.h> | ||
| 5 | #include <linux/configfs.h> | ||
| 6 | #include <net/sock.h> | ||
| 7 | #include <net/tcp.h> | ||
| 8 | #include <scsi/scsi_cmnd.h> | ||
| 9 | #include <scsi/iscsi_proto.h> | ||
| 10 | #include <target/target_core_base.h> | ||
| 11 | |||
| 12 | #define ISCSIT_VERSION "v4.1.0" | ||
| 13 | #define ISCSI_MAX_DATASN_MISSING_COUNT 16 | ||
| 14 | #define ISCSI_TX_THREAD_TCP_TIMEOUT 2 | ||
| 15 | #define ISCSI_RX_THREAD_TCP_TIMEOUT 2 | ||
| 16 | #define SECONDS_FOR_ASYNC_LOGOUT 10 | ||
| 17 | #define SECONDS_FOR_ASYNC_TEXT 10 | ||
| 18 | #define SECONDS_FOR_LOGOUT_COMP 15 | ||
| 19 | #define WHITE_SPACE " \t\v\f\n\r" | ||
| 20 | #define ISCSIT_MIN_TAGS 16 | ||
| 21 | #define ISCSIT_EXTRA_TAGS 8 | ||
| 22 | #define ISCSIT_TCP_BACKLOG 256 | ||
| 23 | |||
| 24 | /* struct iscsi_node_attrib sanity values */ | ||
| 25 | #define NA_DATAOUT_TIMEOUT 3 | ||
| 26 | #define NA_DATAOUT_TIMEOUT_MAX 60 | ||
| 27 | #define NA_DATAOUT_TIMEOUT_MIX 2 | ||
| 28 | #define NA_DATAOUT_TIMEOUT_RETRIES 5 | ||
| 29 | #define NA_DATAOUT_TIMEOUT_RETRIES_MAX 15 | ||
| 30 | #define NA_DATAOUT_TIMEOUT_RETRIES_MIN 1 | ||
| 31 | #define NA_NOPIN_TIMEOUT 15 | ||
| 32 | #define NA_NOPIN_TIMEOUT_MAX 60 | ||
| 33 | #define NA_NOPIN_TIMEOUT_MIN 3 | ||
| 34 | #define NA_NOPIN_RESPONSE_TIMEOUT 30 | ||
| 35 | #define NA_NOPIN_RESPONSE_TIMEOUT_MAX 60 | ||
| 36 | #define NA_NOPIN_RESPONSE_TIMEOUT_MIN 3 | ||
| 37 | #define NA_RANDOM_DATAIN_PDU_OFFSETS 0 | ||
| 38 | #define NA_RANDOM_DATAIN_SEQ_OFFSETS 0 | ||
| 39 | #define NA_RANDOM_R2T_OFFSETS 0 | ||
| 40 | |||
| 41 | /* struct iscsi_tpg_attrib sanity values */ | ||
| 42 | #define TA_AUTHENTICATION 1 | ||
| 43 | #define TA_LOGIN_TIMEOUT 15 | ||
| 44 | #define TA_LOGIN_TIMEOUT_MAX 30 | ||
| 45 | #define TA_LOGIN_TIMEOUT_MIN 5 | ||
| 46 | #define TA_NETIF_TIMEOUT 2 | ||
| 47 | #define TA_NETIF_TIMEOUT_MAX 15 | ||
| 48 | #define TA_NETIF_TIMEOUT_MIN 2 | ||
| 49 | #define TA_GENERATE_NODE_ACLS 0 | ||
| 50 | #define TA_DEFAULT_CMDSN_DEPTH 64 | ||
| 51 | #define TA_DEFAULT_CMDSN_DEPTH_MAX 512 | ||
| 52 | #define TA_DEFAULT_CMDSN_DEPTH_MIN 1 | ||
| 53 | #define TA_CACHE_DYNAMIC_ACLS 0 | ||
| 54 | /* Enabled by default in demo mode (generic_node_acls=1) */ | ||
| 55 | #define TA_DEMO_MODE_WRITE_PROTECT 1 | ||
| 56 | /* Disabled by default in production mode w/ explict ACLs */ | ||
| 57 | #define TA_PROD_MODE_WRITE_PROTECT 0 | ||
| 58 | #define TA_DEMO_MODE_DISCOVERY 1 | ||
| 59 | #define TA_DEFAULT_ERL 0 | ||
| 60 | #define TA_CACHE_CORE_NPS 0 | ||
| 61 | /* T10 protection information disabled by default */ | ||
| 62 | #define TA_DEFAULT_T10_PI 0 | ||
| 63 | |||
| 64 | #define ISCSI_IOV_DATA_BUFFER 5 | ||
| 65 | |||
| 66 | enum iscsit_transport_type { | ||
| 67 | ISCSI_TCP = 0, | ||
| 68 | ISCSI_SCTP_TCP = 1, | ||
| 69 | ISCSI_SCTP_UDP = 2, | ||
| 70 | ISCSI_IWARP_TCP = 3, | ||
| 71 | ISCSI_IWARP_SCTP = 4, | ||
| 72 | ISCSI_INFINIBAND = 5, | ||
| 73 | }; | ||
| 74 | |||
| 75 | /* RFC-3720 7.1.4 Standard Connection State Diagram for a Target */ | ||
| 76 | enum target_conn_state_table { | ||
| 77 | TARG_CONN_STATE_FREE = 0x1, | ||
| 78 | TARG_CONN_STATE_XPT_UP = 0x3, | ||
| 79 | TARG_CONN_STATE_IN_LOGIN = 0x4, | ||
| 80 | TARG_CONN_STATE_LOGGED_IN = 0x5, | ||
| 81 | TARG_CONN_STATE_IN_LOGOUT = 0x6, | ||
| 82 | TARG_CONN_STATE_LOGOUT_REQUESTED = 0x7, | ||
| 83 | TARG_CONN_STATE_CLEANUP_WAIT = 0x8, | ||
| 84 | }; | ||
| 85 | |||
| 86 | /* RFC-3720 7.3.2 Session State Diagram for a Target */ | ||
| 87 | enum target_sess_state_table { | ||
| 88 | TARG_SESS_STATE_FREE = 0x1, | ||
| 89 | TARG_SESS_STATE_ACTIVE = 0x2, | ||
| 90 | TARG_SESS_STATE_LOGGED_IN = 0x3, | ||
| 91 | TARG_SESS_STATE_FAILED = 0x4, | ||
| 92 | TARG_SESS_STATE_IN_CONTINUE = 0x5, | ||
| 93 | }; | ||
| 94 | |||
| 95 | /* struct iscsi_data_count->type */ | ||
| 96 | enum data_count_type { | ||
| 97 | ISCSI_RX_DATA = 1, | ||
| 98 | ISCSI_TX_DATA = 2, | ||
| 99 | }; | ||
| 100 | |||
| 101 | /* struct iscsi_datain_req->dr_complete */ | ||
| 102 | enum datain_req_comp_table { | ||
| 103 | DATAIN_COMPLETE_NORMAL = 1, | ||
| 104 | DATAIN_COMPLETE_WITHIN_COMMAND_RECOVERY = 2, | ||
| 105 | DATAIN_COMPLETE_CONNECTION_RECOVERY = 3, | ||
| 106 | }; | ||
| 107 | |||
| 108 | /* struct iscsi_datain_req->recovery */ | ||
| 109 | enum datain_req_rec_table { | ||
| 110 | DATAIN_WITHIN_COMMAND_RECOVERY = 1, | ||
| 111 | DATAIN_CONNECTION_RECOVERY = 2, | ||
| 112 | }; | ||
| 113 | |||
| 114 | /* struct iscsi_portal_group->state */ | ||
| 115 | enum tpg_state_table { | ||
| 116 | TPG_STATE_FREE = 0, | ||
| 117 | TPG_STATE_ACTIVE = 1, | ||
| 118 | TPG_STATE_INACTIVE = 2, | ||
| 119 | TPG_STATE_COLD_RESET = 3, | ||
| 120 | }; | ||
| 121 | |||
| 122 | /* struct iscsi_tiqn->tiqn_state */ | ||
| 123 | enum tiqn_state_table { | ||
| 124 | TIQN_STATE_ACTIVE = 1, | ||
| 125 | TIQN_STATE_SHUTDOWN = 2, | ||
| 126 | }; | ||
| 127 | |||
| 128 | /* struct iscsi_cmd->cmd_flags */ | ||
| 129 | enum cmd_flags_table { | ||
| 130 | ICF_GOT_LAST_DATAOUT = 0x00000001, | ||
| 131 | ICF_GOT_DATACK_SNACK = 0x00000002, | ||
| 132 | ICF_NON_IMMEDIATE_UNSOLICITED_DATA = 0x00000004, | ||
| 133 | ICF_SENT_LAST_R2T = 0x00000008, | ||
| 134 | ICF_WITHIN_COMMAND_RECOVERY = 0x00000010, | ||
| 135 | ICF_CONTIG_MEMORY = 0x00000020, | ||
| 136 | ICF_ATTACHED_TO_RQUEUE = 0x00000040, | ||
| 137 | ICF_OOO_CMDSN = 0x00000080, | ||
| 138 | ICF_SENDTARGETS_ALL = 0x00000100, | ||
| 139 | ICF_SENDTARGETS_SINGLE = 0x00000200, | ||
| 140 | }; | ||
| 141 | |||
| 142 | /* struct iscsi_cmd->i_state */ | ||
| 143 | enum cmd_i_state_table { | ||
| 144 | ISTATE_NO_STATE = 0, | ||
| 145 | ISTATE_NEW_CMD = 1, | ||
| 146 | ISTATE_DEFERRED_CMD = 2, | ||
| 147 | ISTATE_UNSOLICITED_DATA = 3, | ||
| 148 | ISTATE_RECEIVE_DATAOUT = 4, | ||
| 149 | ISTATE_RECEIVE_DATAOUT_RECOVERY = 5, | ||
| 150 | ISTATE_RECEIVED_LAST_DATAOUT = 6, | ||
| 151 | ISTATE_WITHIN_DATAOUT_RECOVERY = 7, | ||
| 152 | ISTATE_IN_CONNECTION_RECOVERY = 8, | ||
| 153 | ISTATE_RECEIVED_TASKMGT = 9, | ||
| 154 | ISTATE_SEND_ASYNCMSG = 10, | ||
| 155 | ISTATE_SENT_ASYNCMSG = 11, | ||
| 156 | ISTATE_SEND_DATAIN = 12, | ||
| 157 | ISTATE_SEND_LAST_DATAIN = 13, | ||
| 158 | ISTATE_SENT_LAST_DATAIN = 14, | ||
| 159 | ISTATE_SEND_LOGOUTRSP = 15, | ||
| 160 | ISTATE_SENT_LOGOUTRSP = 16, | ||
| 161 | ISTATE_SEND_NOPIN = 17, | ||
| 162 | ISTATE_SENT_NOPIN = 18, | ||
| 163 | ISTATE_SEND_REJECT = 19, | ||
| 164 | ISTATE_SENT_REJECT = 20, | ||
| 165 | ISTATE_SEND_R2T = 21, | ||
| 166 | ISTATE_SENT_R2T = 22, | ||
| 167 | ISTATE_SEND_R2T_RECOVERY = 23, | ||
| 168 | ISTATE_SENT_R2T_RECOVERY = 24, | ||
| 169 | ISTATE_SEND_LAST_R2T = 25, | ||
| 170 | ISTATE_SENT_LAST_R2T = 26, | ||
| 171 | ISTATE_SEND_LAST_R2T_RECOVERY = 27, | ||
| 172 | ISTATE_SENT_LAST_R2T_RECOVERY = 28, | ||
| 173 | ISTATE_SEND_STATUS = 29, | ||
| 174 | ISTATE_SEND_STATUS_BROKEN_PC = 30, | ||
| 175 | ISTATE_SENT_STATUS = 31, | ||
| 176 | ISTATE_SEND_STATUS_RECOVERY = 32, | ||
| 177 | ISTATE_SENT_STATUS_RECOVERY = 33, | ||
| 178 | ISTATE_SEND_TASKMGTRSP = 34, | ||
| 179 | ISTATE_SENT_TASKMGTRSP = 35, | ||
| 180 | ISTATE_SEND_TEXTRSP = 36, | ||
| 181 | ISTATE_SENT_TEXTRSP = 37, | ||
| 182 | ISTATE_SEND_NOPIN_WANT_RESPONSE = 38, | ||
| 183 | ISTATE_SENT_NOPIN_WANT_RESPONSE = 39, | ||
| 184 | ISTATE_SEND_NOPIN_NO_RESPONSE = 40, | ||
| 185 | ISTATE_REMOVE = 41, | ||
| 186 | ISTATE_FREE = 42, | ||
| 187 | }; | ||
| 188 | |||
| 189 | /* Used for iscsi_recover_cmdsn() return values */ | ||
| 190 | enum recover_cmdsn_ret_table { | ||
| 191 | CMDSN_ERROR_CANNOT_RECOVER = -1, | ||
| 192 | CMDSN_NORMAL_OPERATION = 0, | ||
| 193 | CMDSN_LOWER_THAN_EXP = 1, | ||
| 194 | CMDSN_HIGHER_THAN_EXP = 2, | ||
| 195 | CMDSN_MAXCMDSN_OVERRUN = 3, | ||
| 196 | }; | ||
| 197 | |||
| 198 | /* Used for iscsi_handle_immediate_data() return values */ | ||
| 199 | enum immedate_data_ret_table { | ||
| 200 | IMMEDIATE_DATA_CANNOT_RECOVER = -1, | ||
| 201 | IMMEDIATE_DATA_NORMAL_OPERATION = 0, | ||
| 202 | IMMEDIATE_DATA_ERL1_CRC_FAILURE = 1, | ||
| 203 | }; | ||
| 204 | |||
| 205 | /* Used for iscsi_decide_dataout_action() return values */ | ||
| 206 | enum dataout_action_ret_table { | ||
| 207 | DATAOUT_CANNOT_RECOVER = -1, | ||
| 208 | DATAOUT_NORMAL = 0, | ||
| 209 | DATAOUT_SEND_R2T = 1, | ||
| 210 | DATAOUT_SEND_TO_TRANSPORT = 2, | ||
| 211 | DATAOUT_WITHIN_COMMAND_RECOVERY = 3, | ||
| 212 | }; | ||
| 213 | |||
| 214 | /* Used for struct iscsi_node_auth->naf_flags */ | ||
| 215 | enum naf_flags_table { | ||
| 216 | NAF_USERID_SET = 0x01, | ||
| 217 | NAF_PASSWORD_SET = 0x02, | ||
| 218 | NAF_USERID_IN_SET = 0x04, | ||
| 219 | NAF_PASSWORD_IN_SET = 0x08, | ||
| 220 | }; | ||
| 221 | |||
| 222 | /* Used by various struct timer_list to manage iSCSI specific state */ | ||
| 223 | enum iscsi_timer_flags_table { | ||
| 224 | ISCSI_TF_RUNNING = 0x01, | ||
| 225 | ISCSI_TF_STOP = 0x02, | ||
| 226 | ISCSI_TF_EXPIRED = 0x04, | ||
| 227 | }; | ||
| 228 | |||
| 229 | /* Used for struct iscsi_np->np_flags */ | ||
| 230 | enum np_flags_table { | ||
| 231 | NPF_IP_NETWORK = 0x00, | ||
| 232 | }; | ||
| 233 | |||
| 234 | /* Used for struct iscsi_np->np_thread_state */ | ||
| 235 | enum np_thread_state_table { | ||
| 236 | ISCSI_NP_THREAD_ACTIVE = 1, | ||
| 237 | ISCSI_NP_THREAD_INACTIVE = 2, | ||
| 238 | ISCSI_NP_THREAD_RESET = 3, | ||
| 239 | ISCSI_NP_THREAD_SHUTDOWN = 4, | ||
| 240 | ISCSI_NP_THREAD_EXIT = 5, | ||
| 241 | }; | ||
| 242 | |||
| 243 | struct iscsi_conn_ops { | ||
| 244 | u8 HeaderDigest; /* [0,1] == [None,CRC32C] */ | ||
| 245 | u8 DataDigest; /* [0,1] == [None,CRC32C] */ | ||
| 246 | u32 MaxRecvDataSegmentLength; /* [512..2**24-1] */ | ||
| 247 | u32 MaxXmitDataSegmentLength; /* [512..2**24-1] */ | ||
| 248 | u8 OFMarker; /* [0,1] == [No,Yes] */ | ||
| 249 | u8 IFMarker; /* [0,1] == [No,Yes] */ | ||
| 250 | u32 OFMarkInt; /* [1..65535] */ | ||
| 251 | u32 IFMarkInt; /* [1..65535] */ | ||
| 252 | /* | ||
| 253 | * iSER specific connection parameters | ||
| 254 | */ | ||
| 255 | u32 InitiatorRecvDataSegmentLength; /* [512..2**24-1] */ | ||
| 256 | u32 TargetRecvDataSegmentLength; /* [512..2**24-1] */ | ||
| 257 | }; | ||
| 258 | |||
| 259 | struct iscsi_sess_ops { | ||
| 260 | char InitiatorName[224]; | ||
| 261 | char InitiatorAlias[256]; | ||
| 262 | char TargetName[224]; | ||
| 263 | char TargetAlias[256]; | ||
| 264 | char TargetAddress[256]; | ||
| 265 | u16 TargetPortalGroupTag; /* [0..65535] */ | ||
| 266 | u16 MaxConnections; /* [1..65535] */ | ||
| 267 | u8 InitialR2T; /* [0,1] == [No,Yes] */ | ||
| 268 | u8 ImmediateData; /* [0,1] == [No,Yes] */ | ||
| 269 | u32 MaxBurstLength; /* [512..2**24-1] */ | ||
| 270 | u32 FirstBurstLength; /* [512..2**24-1] */ | ||
| 271 | u16 DefaultTime2Wait; /* [0..3600] */ | ||
| 272 | u16 DefaultTime2Retain; /* [0..3600] */ | ||
| 273 | u16 MaxOutstandingR2T; /* [1..65535] */ | ||
| 274 | u8 DataPDUInOrder; /* [0,1] == [No,Yes] */ | ||
| 275 | u8 DataSequenceInOrder; /* [0,1] == [No,Yes] */ | ||
| 276 | u8 ErrorRecoveryLevel; /* [0..2] */ | ||
| 277 | u8 SessionType; /* [0,1] == [Normal,Discovery]*/ | ||
| 278 | /* | ||
| 279 | * iSER specific session parameters | ||
| 280 | */ | ||
| 281 | u8 RDMAExtensions; /* [0,1] == [No,Yes] */ | ||
| 282 | }; | ||
| 283 | |||
| 284 | struct iscsi_queue_req { | ||
| 285 | int state; | ||
| 286 | struct iscsi_cmd *cmd; | ||
| 287 | struct list_head qr_list; | ||
| 288 | }; | ||
| 289 | |||
| 290 | struct iscsi_data_count { | ||
| 291 | int data_length; | ||
| 292 | int sync_and_steering; | ||
| 293 | enum data_count_type type; | ||
| 294 | u32 iov_count; | ||
| 295 | u32 ss_iov_count; | ||
| 296 | u32 ss_marker_count; | ||
| 297 | struct kvec *iov; | ||
| 298 | }; | ||
| 299 | |||
| 300 | struct iscsi_param_list { | ||
| 301 | bool iser; | ||
| 302 | struct list_head param_list; | ||
| 303 | struct list_head extra_response_list; | ||
| 304 | }; | ||
| 305 | |||
| 306 | struct iscsi_datain_req { | ||
| 307 | enum datain_req_comp_table dr_complete; | ||
| 308 | int generate_recovery_values; | ||
| 309 | enum datain_req_rec_table recovery; | ||
| 310 | u32 begrun; | ||
| 311 | u32 runlength; | ||
| 312 | u32 data_length; | ||
| 313 | u32 data_offset; | ||
| 314 | u32 data_sn; | ||
| 315 | u32 next_burst_len; | ||
| 316 | u32 read_data_done; | ||
| 317 | u32 seq_send_order; | ||
| 318 | struct list_head cmd_datain_node; | ||
| 319 | } ____cacheline_aligned; | ||
| 320 | |||
| 321 | struct iscsi_ooo_cmdsn { | ||
| 322 | u16 cid; | ||
| 323 | u32 batch_count; | ||
| 324 | u32 cmdsn; | ||
| 325 | u32 exp_cmdsn; | ||
| 326 | struct iscsi_cmd *cmd; | ||
| 327 | struct list_head ooo_list; | ||
| 328 | } ____cacheline_aligned; | ||
| 329 | |||
| 330 | struct iscsi_datain { | ||
| 331 | u8 flags; | ||
| 332 | u32 data_sn; | ||
| 333 | u32 length; | ||
| 334 | u32 offset; | ||
| 335 | } ____cacheline_aligned; | ||
| 336 | |||
| 337 | struct iscsi_r2t { | ||
| 338 | int seq_complete; | ||
| 339 | int recovery_r2t; | ||
| 340 | int sent_r2t; | ||
| 341 | u32 r2t_sn; | ||
| 342 | u32 offset; | ||
| 343 | u32 targ_xfer_tag; | ||
| 344 | u32 xfer_len; | ||
| 345 | struct list_head r2t_list; | ||
| 346 | } ____cacheline_aligned; | ||
| 347 | |||
| 348 | struct iscsi_cmd { | ||
| 349 | enum iscsi_timer_flags_table dataout_timer_flags; | ||
| 350 | /* DataOUT timeout retries */ | ||
| 351 | u8 dataout_timeout_retries; | ||
| 352 | /* Within command recovery count */ | ||
| 353 | u8 error_recovery_count; | ||
| 354 | /* iSCSI dependent state for out or order CmdSNs */ | ||
| 355 | enum cmd_i_state_table deferred_i_state; | ||
| 356 | /* iSCSI dependent state */ | ||
| 357 | enum cmd_i_state_table i_state; | ||
| 358 | /* Command is an immediate command (ISCSI_OP_IMMEDIATE set) */ | ||
| 359 | u8 immediate_cmd; | ||
| 360 | /* Immediate data present */ | ||
| 361 | u8 immediate_data; | ||
| 362 | /* iSCSI Opcode */ | ||
| 363 | u8 iscsi_opcode; | ||
| 364 | /* iSCSI Response Code */ | ||
| 365 | u8 iscsi_response; | ||
| 366 | /* Logout reason when iscsi_opcode == ISCSI_INIT_LOGOUT_CMND */ | ||
| 367 | u8 logout_reason; | ||
| 368 | /* Logout response code when iscsi_opcode == ISCSI_INIT_LOGOUT_CMND */ | ||
| 369 | u8 logout_response; | ||
| 370 | /* MaxCmdSN has been incremented */ | ||
| 371 | u8 maxcmdsn_inc; | ||
| 372 | /* Immediate Unsolicited Dataout */ | ||
| 373 | u8 unsolicited_data; | ||
| 374 | /* Reject reason code */ | ||
| 375 | u8 reject_reason; | ||
| 376 | /* CID contained in logout PDU when opcode == ISCSI_INIT_LOGOUT_CMND */ | ||
| 377 | u16 logout_cid; | ||
| 378 | /* Command flags */ | ||
| 379 | enum cmd_flags_table cmd_flags; | ||
| 380 | /* Initiator Task Tag assigned from Initiator */ | ||
| 381 | itt_t init_task_tag; | ||
| 382 | /* Target Transfer Tag assigned from Target */ | ||
| 383 | u32 targ_xfer_tag; | ||
| 384 | /* CmdSN assigned from Initiator */ | ||
| 385 | u32 cmd_sn; | ||
| 386 | /* ExpStatSN assigned from Initiator */ | ||
| 387 | u32 exp_stat_sn; | ||
| 388 | /* StatSN assigned to this ITT */ | ||
| 389 | u32 stat_sn; | ||
| 390 | /* DataSN Counter */ | ||
| 391 | u32 data_sn; | ||
| 392 | /* R2TSN Counter */ | ||
| 393 | u32 r2t_sn; | ||
| 394 | /* Last DataSN acknowledged via DataAck SNACK */ | ||
| 395 | u32 acked_data_sn; | ||
| 396 | /* Used for echoing NOPOUT ping data */ | ||
| 397 | u32 buf_ptr_size; | ||
| 398 | /* Used to store DataDigest */ | ||
| 399 | u32 data_crc; | ||
| 400 | /* Counter for MaxOutstandingR2T */ | ||
| 401 | u32 outstanding_r2ts; | ||
| 402 | /* Next R2T Offset when DataSequenceInOrder=Yes */ | ||
| 403 | u32 r2t_offset; | ||
| 404 | /* Iovec current and orig count for iscsi_cmd->iov_data */ | ||
| 405 | u32 iov_data_count; | ||
| 406 | u32 orig_iov_data_count; | ||
| 407 | /* Number of miscellaneous iovecs used for IP stack calls */ | ||
| 408 | u32 iov_misc_count; | ||
| 409 | /* Number of struct iscsi_pdu in struct iscsi_cmd->pdu_list */ | ||
| 410 | u32 pdu_count; | ||
| 411 | /* Next struct iscsi_pdu to send in struct iscsi_cmd->pdu_list */ | ||
| 412 | u32 pdu_send_order; | ||
| 413 | /* Current struct iscsi_pdu in struct iscsi_cmd->pdu_list */ | ||
| 414 | u32 pdu_start; | ||
| 415 | /* Next struct iscsi_seq to send in struct iscsi_cmd->seq_list */ | ||
| 416 | u32 seq_send_order; | ||
| 417 | /* Number of struct iscsi_seq in struct iscsi_cmd->seq_list */ | ||
| 418 | u32 seq_count; | ||
| 419 | /* Current struct iscsi_seq in struct iscsi_cmd->seq_list */ | ||
| 420 | u32 seq_no; | ||
| 421 | /* Lowest offset in current DataOUT sequence */ | ||
| 422 | u32 seq_start_offset; | ||
| 423 | /* Highest offset in current DataOUT sequence */ | ||
| 424 | u32 seq_end_offset; | ||
| 425 | /* Total size in bytes received so far of READ data */ | ||
| 426 | u32 read_data_done; | ||
| 427 | /* Total size in bytes received so far of WRITE data */ | ||
| 428 | u32 write_data_done; | ||
| 429 | /* Counter for FirstBurstLength key */ | ||
| 430 | u32 first_burst_len; | ||
| 431 | /* Counter for MaxBurstLength key */ | ||
| 432 | u32 next_burst_len; | ||
| 433 | /* Transfer size used for IP stack calls */ | ||
| 434 | u32 tx_size; | ||
| 435 | /* Buffer used for various purposes */ | ||
| 436 | void *buf_ptr; | ||
| 437 | /* Used by SendTargets=[iqn.,eui.] discovery */ | ||
| 438 | void *text_in_ptr; | ||
| 439 | /* See include/linux/dma-mapping.h */ | ||
| 440 | enum dma_data_direction data_direction; | ||
| 441 | /* iSCSI PDU Header + CRC */ | ||
| 442 | unsigned char pdu[ISCSI_HDR_LEN + ISCSI_CRC_LEN]; | ||
| 443 | /* Number of times struct iscsi_cmd is present in immediate queue */ | ||
| 444 | atomic_t immed_queue_count; | ||
| 445 | atomic_t response_queue_count; | ||
| 446 | spinlock_t datain_lock; | ||
| 447 | spinlock_t dataout_timeout_lock; | ||
| 448 | /* spinlock for protecting struct iscsi_cmd->i_state */ | ||
| 449 | spinlock_t istate_lock; | ||
| 450 | /* spinlock for adding within command recovery entries */ | ||
| 451 | spinlock_t error_lock; | ||
| 452 | /* spinlock for adding R2Ts */ | ||
| 453 | spinlock_t r2t_lock; | ||
| 454 | /* DataIN List */ | ||
| 455 | struct list_head datain_list; | ||
| 456 | /* R2T List */ | ||
| 457 | struct list_head cmd_r2t_list; | ||
| 458 | /* Timer for DataOUT */ | ||
| 459 | struct timer_list dataout_timer; | ||
| 460 | /* Iovecs for SCSI data payload RX/TX w/ kernel level sockets */ | ||
| 461 | struct kvec *iov_data; | ||
| 462 | /* Iovecs for miscellaneous purposes */ | ||
| 463 | #define ISCSI_MISC_IOVECS 5 | ||
| 464 | struct kvec iov_misc[ISCSI_MISC_IOVECS]; | ||
| 465 | /* Array of struct iscsi_pdu used for DataPDUInOrder=No */ | ||
| 466 | struct iscsi_pdu *pdu_list; | ||
| 467 | /* Current struct iscsi_pdu used for DataPDUInOrder=No */ | ||
| 468 | struct iscsi_pdu *pdu_ptr; | ||
| 469 | /* Array of struct iscsi_seq used for DataSequenceInOrder=No */ | ||
| 470 | struct iscsi_seq *seq_list; | ||
| 471 | /* Current struct iscsi_seq used for DataSequenceInOrder=No */ | ||
| 472 | struct iscsi_seq *seq_ptr; | ||
| 473 | /* TMR Request when iscsi_opcode == ISCSI_OP_SCSI_TMFUNC */ | ||
| 474 | struct iscsi_tmr_req *tmr_req; | ||
| 475 | /* Connection this command is alligient to */ | ||
| 476 | struct iscsi_conn *conn; | ||
| 477 | /* Pointer to connection recovery entry */ | ||
| 478 | struct iscsi_conn_recovery *cr; | ||
| 479 | /* Session the command is part of, used for connection recovery */ | ||
| 480 | struct iscsi_session *sess; | ||
| 481 | /* list_head for connection list */ | ||
| 482 | struct list_head i_conn_node; | ||
| 483 | /* The TCM I/O descriptor that is accessed via container_of() */ | ||
| 484 | struct se_cmd se_cmd; | ||
| 485 | /* Sense buffer that will be mapped into outgoing status */ | ||
| 486 | #define ISCSI_SENSE_BUFFER_LEN (TRANSPORT_SENSE_BUFFER + 2) | ||
| 487 | unsigned char sense_buffer[ISCSI_SENSE_BUFFER_LEN]; | ||
| 488 | |||
| 489 | u32 padding; | ||
| 490 | u8 pad_bytes[4]; | ||
| 491 | |||
| 492 | struct scatterlist *first_data_sg; | ||
| 493 | u32 first_data_sg_off; | ||
| 494 | u32 kmapped_nents; | ||
| 495 | sense_reason_t sense_reason; | ||
| 496 | } ____cacheline_aligned; | ||
| 497 | |||
| 498 | struct iscsi_tmr_req { | ||
| 499 | bool task_reassign:1; | ||
| 500 | u32 exp_data_sn; | ||
| 501 | struct iscsi_cmd *ref_cmd; | ||
| 502 | struct iscsi_conn_recovery *conn_recovery; | ||
| 503 | struct se_tmr_req *se_tmr_req; | ||
| 504 | }; | ||
| 505 | |||
| 506 | struct iscsi_conn { | ||
| 507 | wait_queue_head_t queues_wq; | ||
| 508 | /* Authentication Successful for this connection */ | ||
| 509 | u8 auth_complete; | ||
| 510 | /* State connection is currently in */ | ||
| 511 | u8 conn_state; | ||
| 512 | u8 conn_logout_reason; | ||
| 513 | u8 network_transport; | ||
| 514 | enum iscsi_timer_flags_table nopin_timer_flags; | ||
| 515 | enum iscsi_timer_flags_table nopin_response_timer_flags; | ||
| 516 | /* Used to know what thread encountered a transport failure */ | ||
| 517 | u8 which_thread; | ||
| 518 | /* connection id assigned by the Initiator */ | ||
| 519 | u16 cid; | ||
| 520 | /* Remote TCP Port */ | ||
| 521 | u16 login_port; | ||
| 522 | u16 local_port; | ||
| 523 | int net_size; | ||
| 524 | int login_family; | ||
| 525 | u32 auth_id; | ||
| 526 | u32 conn_flags; | ||
| 527 | /* Used for iscsi_tx_login_rsp() */ | ||
| 528 | itt_t login_itt; | ||
| 529 | u32 exp_statsn; | ||
| 530 | /* Per connection status sequence number */ | ||
| 531 | u32 stat_sn; | ||
| 532 | /* IFMarkInt's Current Value */ | ||
| 533 | u32 if_marker; | ||
| 534 | /* OFMarkInt's Current Value */ | ||
| 535 | u32 of_marker; | ||
| 536 | /* Used for calculating OFMarker offset to next PDU */ | ||
| 537 | u32 of_marker_offset; | ||
| 538 | #define IPV6_ADDRESS_SPACE 48 | ||
| 539 | unsigned char login_ip[IPV6_ADDRESS_SPACE]; | ||
| 540 | unsigned char local_ip[IPV6_ADDRESS_SPACE]; | ||
| 541 | int conn_usage_count; | ||
| 542 | int conn_waiting_on_uc; | ||
| 543 | atomic_t check_immediate_queue; | ||
| 544 | atomic_t conn_logout_remove; | ||
| 545 | atomic_t connection_exit; | ||
| 546 | atomic_t connection_recovery; | ||
| 547 | atomic_t connection_reinstatement; | ||
| 548 | atomic_t connection_wait_rcfr; | ||
| 549 | atomic_t sleep_on_conn_wait_comp; | ||
| 550 | atomic_t transport_failed; | ||
| 551 | struct completion conn_post_wait_comp; | ||
| 552 | struct completion conn_wait_comp; | ||
| 553 | struct completion conn_wait_rcfr_comp; | ||
| 554 | struct completion conn_waiting_on_uc_comp; | ||
| 555 | struct completion conn_logout_comp; | ||
| 556 | struct completion tx_half_close_comp; | ||
| 557 | struct completion rx_half_close_comp; | ||
| 558 | /* socket used by this connection */ | ||
| 559 | struct socket *sock; | ||
| 560 | void (*orig_data_ready)(struct sock *); | ||
| 561 | void (*orig_state_change)(struct sock *); | ||
| 562 | #define LOGIN_FLAGS_READ_ACTIVE 1 | ||
| 563 | #define LOGIN_FLAGS_CLOSED 2 | ||
| 564 | #define LOGIN_FLAGS_READY 4 | ||
| 565 | unsigned long login_flags; | ||
| 566 | struct delayed_work login_work; | ||
| 567 | struct delayed_work login_cleanup_work; | ||
| 568 | struct iscsi_login *login; | ||
| 569 | struct timer_list nopin_timer; | ||
| 570 | struct timer_list nopin_response_timer; | ||
| 571 | struct timer_list transport_timer; | ||
| 572 | struct task_struct *login_kworker; | ||
| 573 | /* Spinlock used for add/deleting cmd's from conn_cmd_list */ | ||
| 574 | spinlock_t cmd_lock; | ||
| 575 | spinlock_t conn_usage_lock; | ||
| 576 | spinlock_t immed_queue_lock; | ||
| 577 | spinlock_t nopin_timer_lock; | ||
| 578 | spinlock_t response_queue_lock; | ||
| 579 | spinlock_t state_lock; | ||
| 580 | /* libcrypto RX and TX contexts for crc32c */ | ||
| 581 | struct hash_desc conn_rx_hash; | ||
| 582 | struct hash_desc conn_tx_hash; | ||
| 583 | /* Used for scheduling TX and RX connection kthreads */ | ||
| 584 | cpumask_var_t conn_cpumask; | ||
| 585 | unsigned int conn_rx_reset_cpumask:1; | ||
| 586 | unsigned int conn_tx_reset_cpumask:1; | ||
| 587 | /* list_head of struct iscsi_cmd for this connection */ | ||
| 588 | struct list_head conn_cmd_list; | ||
| 589 | struct list_head immed_queue_list; | ||
| 590 | struct list_head response_queue_list; | ||
| 591 | struct iscsi_conn_ops *conn_ops; | ||
| 592 | struct iscsi_login *conn_login; | ||
| 593 | struct iscsit_transport *conn_transport; | ||
| 594 | struct iscsi_param_list *param_list; | ||
| 595 | /* Used for per connection auth state machine */ | ||
| 596 | void *auth_protocol; | ||
| 597 | void *context; | ||
| 598 | struct iscsi_login_thread_s *login_thread; | ||
| 599 | struct iscsi_portal_group *tpg; | ||
| 600 | struct iscsi_tpg_np *tpg_np; | ||
| 601 | /* Pointer to parent session */ | ||
| 602 | struct iscsi_session *sess; | ||
| 603 | /* Pointer to thread_set in use for this conn's threads */ | ||
| 604 | struct iscsi_thread_set *thread_set; | ||
| 605 | /* list_head for session connection list */ | ||
| 606 | struct list_head conn_list; | ||
| 607 | } ____cacheline_aligned; | ||
| 608 | |||
| 609 | struct iscsi_conn_recovery { | ||
| 610 | u16 cid; | ||
| 611 | u32 cmd_count; | ||
| 612 | u32 maxrecvdatasegmentlength; | ||
| 613 | u32 maxxmitdatasegmentlength; | ||
| 614 | int ready_for_reallegiance; | ||
| 615 | struct list_head conn_recovery_cmd_list; | ||
| 616 | spinlock_t conn_recovery_cmd_lock; | ||
| 617 | struct timer_list time2retain_timer; | ||
| 618 | struct iscsi_session *sess; | ||
| 619 | struct list_head cr_list; | ||
| 620 | } ____cacheline_aligned; | ||
| 621 | |||
| 622 | struct iscsi_session { | ||
| 623 | u8 initiator_vendor; | ||
| 624 | u8 isid[6]; | ||
| 625 | enum iscsi_timer_flags_table time2retain_timer_flags; | ||
| 626 | u8 version_active; | ||
| 627 | u16 cid_called; | ||
| 628 | u16 conn_recovery_count; | ||
| 629 | u16 tsih; | ||
| 630 | /* state session is currently in */ | ||
| 631 | u32 session_state; | ||
| 632 | /* session wide counter: initiator assigned task tag */ | ||
| 633 | itt_t init_task_tag; | ||
| 634 | /* session wide counter: target assigned task tag */ | ||
| 635 | u32 targ_xfer_tag; | ||
| 636 | u32 cmdsn_window; | ||
| 637 | |||
| 638 | /* protects cmdsn values */ | ||
| 639 | struct mutex cmdsn_mutex; | ||
| 640 | /* session wide counter: expected command sequence number */ | ||
| 641 | u32 exp_cmd_sn; | ||
| 642 | /* session wide counter: maximum allowed command sequence number */ | ||
| 643 | u32 max_cmd_sn; | ||
| 644 | struct list_head sess_ooo_cmdsn_list; | ||
| 645 | |||
| 646 | /* LIO specific session ID */ | ||
| 647 | u32 sid; | ||
| 648 | char auth_type[8]; | ||
| 649 | /* unique within the target */ | ||
| 650 | int session_index; | ||
| 651 | /* Used for session reference counting */ | ||
| 652 | int session_usage_count; | ||
| 653 | int session_waiting_on_uc; | ||
| 654 | atomic_long_t cmd_pdus; | ||
| 655 | atomic_long_t rsp_pdus; | ||
| 656 | atomic_long_t tx_data_octets; | ||
| 657 | atomic_long_t rx_data_octets; | ||
| 658 | atomic_long_t conn_digest_errors; | ||
| 659 | atomic_long_t conn_timeout_errors; | ||
| 660 | u64 creation_time; | ||
| 661 | /* Number of active connections */ | ||
| 662 | atomic_t nconn; | ||
| 663 | atomic_t session_continuation; | ||
| 664 | atomic_t session_fall_back_to_erl0; | ||
| 665 | atomic_t session_logout; | ||
| 666 | atomic_t session_reinstatement; | ||
| 667 | atomic_t session_stop_active; | ||
| 668 | atomic_t sleep_on_sess_wait_comp; | ||
| 669 | /* connection list */ | ||
| 670 | struct list_head sess_conn_list; | ||
| 671 | struct list_head cr_active_list; | ||
| 672 | struct list_head cr_inactive_list; | ||
| 673 | spinlock_t conn_lock; | ||
| 674 | spinlock_t cr_a_lock; | ||
| 675 | spinlock_t cr_i_lock; | ||
| 676 | spinlock_t session_usage_lock; | ||
| 677 | spinlock_t ttt_lock; | ||
| 678 | struct completion async_msg_comp; | ||
| 679 | struct completion reinstatement_comp; | ||
| 680 | struct completion session_wait_comp; | ||
| 681 | struct completion session_waiting_on_uc_comp; | ||
| 682 | struct timer_list time2retain_timer; | ||
| 683 | struct iscsi_sess_ops *sess_ops; | ||
| 684 | struct se_session *se_sess; | ||
| 685 | struct iscsi_portal_group *tpg; | ||
| 686 | } ____cacheline_aligned; | ||
| 687 | |||
| 688 | struct iscsi_login { | ||
| 689 | u8 auth_complete; | ||
| 690 | u8 checked_for_existing; | ||
| 691 | u8 current_stage; | ||
| 692 | u8 leading_connection; | ||
| 693 | u8 first_request; | ||
| 694 | u8 version_min; | ||
| 695 | u8 version_max; | ||
| 696 | u8 login_complete; | ||
| 697 | u8 login_failed; | ||
| 698 | bool zero_tsih; | ||
| 699 | char isid[6]; | ||
| 700 | u32 cmd_sn; | ||
| 701 | itt_t init_task_tag; | ||
| 702 | u32 initial_exp_statsn; | ||
| 703 | u32 rsp_length; | ||
| 704 | u16 cid; | ||
| 705 | u16 tsih; | ||
| 706 | char req[ISCSI_HDR_LEN]; | ||
| 707 | char rsp[ISCSI_HDR_LEN]; | ||
| 708 | char *req_buf; | ||
| 709 | char *rsp_buf; | ||
| 710 | struct iscsi_conn *conn; | ||
| 711 | struct iscsi_np *np; | ||
| 712 | } ____cacheline_aligned; | ||
| 713 | |||
| 714 | struct iscsi_node_attrib { | ||
| 715 | u32 dataout_timeout; | ||
| 716 | u32 dataout_timeout_retries; | ||
| 717 | u32 default_erl; | ||
| 718 | u32 nopin_timeout; | ||
| 719 | u32 nopin_response_timeout; | ||
| 720 | u32 random_datain_pdu_offsets; | ||
| 721 | u32 random_datain_seq_offsets; | ||
| 722 | u32 random_r2t_offsets; | ||
| 723 | u32 tmr_cold_reset; | ||
| 724 | u32 tmr_warm_reset; | ||
| 725 | struct iscsi_node_acl *nacl; | ||
| 726 | }; | ||
| 727 | |||
| 728 | struct se_dev_entry_s; | ||
| 729 | |||
| 730 | struct iscsi_node_auth { | ||
| 731 | enum naf_flags_table naf_flags; | ||
| 732 | int authenticate_target; | ||
| 733 | /* Used for iscsit_global->discovery_auth, | ||
| 734 | * set to zero (auth disabled) by default */ | ||
| 735 | int enforce_discovery_auth; | ||
| 736 | #define MAX_USER_LEN 256 | ||
| 737 | #define MAX_PASS_LEN 256 | ||
| 738 | char userid[MAX_USER_LEN]; | ||
| 739 | char password[MAX_PASS_LEN]; | ||
| 740 | char userid_mutual[MAX_USER_LEN]; | ||
| 741 | char password_mutual[MAX_PASS_LEN]; | ||
| 742 | }; | ||
| 743 | |||
| 744 | #include "iscsi_target_stat.h" | ||
| 745 | |||
| 746 | struct iscsi_node_stat_grps { | ||
| 747 | struct config_group iscsi_sess_stats_group; | ||
| 748 | struct config_group iscsi_conn_stats_group; | ||
| 749 | }; | ||
| 750 | |||
| 751 | struct iscsi_node_acl { | ||
| 752 | struct iscsi_node_attrib node_attrib; | ||
| 753 | struct iscsi_node_auth node_auth; | ||
| 754 | struct iscsi_node_stat_grps node_stat_grps; | ||
| 755 | struct se_node_acl se_node_acl; | ||
| 756 | }; | ||
| 757 | |||
| 758 | struct iscsi_tpg_attrib { | ||
| 759 | u32 authentication; | ||
| 760 | u32 login_timeout; | ||
| 761 | u32 netif_timeout; | ||
| 762 | u32 generate_node_acls; | ||
| 763 | u32 cache_dynamic_acls; | ||
| 764 | u32 default_cmdsn_depth; | ||
| 765 | u32 demo_mode_write_protect; | ||
| 766 | u32 prod_mode_write_protect; | ||
| 767 | u32 demo_mode_discovery; | ||
| 768 | u32 default_erl; | ||
| 769 | u8 t10_pi; | ||
| 770 | struct iscsi_portal_group *tpg; | ||
| 771 | }; | ||
| 772 | |||
| 773 | struct iscsi_np { | ||
| 774 | int np_network_transport; | ||
| 775 | int np_ip_proto; | ||
| 776 | int np_sock_type; | ||
| 777 | enum np_thread_state_table np_thread_state; | ||
| 778 | bool enabled; | ||
| 779 | enum iscsi_timer_flags_table np_login_timer_flags; | ||
| 780 | u32 np_exports; | ||
| 781 | enum np_flags_table np_flags; | ||
| 782 | unsigned char np_ip[IPV6_ADDRESS_SPACE]; | ||
| 783 | u16 np_port; | ||
| 784 | spinlock_t np_thread_lock; | ||
| 785 | struct completion np_restart_comp; | ||
| 786 | struct socket *np_socket; | ||
| 787 | struct __kernel_sockaddr_storage np_sockaddr; | ||
| 788 | struct task_struct *np_thread; | ||
| 789 | struct timer_list np_login_timer; | ||
| 790 | void *np_context; | ||
| 791 | struct iscsit_transport *np_transport; | ||
| 792 | struct list_head np_list; | ||
| 793 | } ____cacheline_aligned; | ||
| 794 | |||
| 795 | struct iscsi_tpg_np { | ||
| 796 | struct iscsi_np *tpg_np; | ||
| 797 | struct iscsi_portal_group *tpg; | ||
| 798 | struct iscsi_tpg_np *tpg_np_parent; | ||
| 799 | struct list_head tpg_np_list; | ||
| 800 | struct list_head tpg_np_child_list; | ||
| 801 | struct list_head tpg_np_parent_list; | ||
| 802 | struct se_tpg_np se_tpg_np; | ||
| 803 | spinlock_t tpg_np_parent_lock; | ||
| 804 | struct completion tpg_np_comp; | ||
| 805 | struct kref tpg_np_kref; | ||
| 806 | }; | ||
| 807 | |||
| 808 | struct iscsi_portal_group { | ||
| 809 | unsigned char tpg_chap_id; | ||
| 810 | /* TPG State */ | ||
| 811 | enum tpg_state_table tpg_state; | ||
| 812 | /* Target Portal Group Tag */ | ||
| 813 | u16 tpgt; | ||
| 814 | /* Id assigned to target sessions */ | ||
| 815 | u16 ntsih; | ||
| 816 | /* Number of active sessions */ | ||
| 817 | u32 nsessions; | ||
| 818 | /* Number of Network Portals available for this TPG */ | ||
| 819 | u32 num_tpg_nps; | ||
| 820 | /* Per TPG LIO specific session ID. */ | ||
| 821 | u32 sid; | ||
| 822 | /* Spinlock for adding/removing Network Portals */ | ||
| 823 | spinlock_t tpg_np_lock; | ||
| 824 | spinlock_t tpg_state_lock; | ||
| 825 | struct se_portal_group tpg_se_tpg; | ||
| 826 | struct mutex tpg_access_lock; | ||
| 827 | struct semaphore np_login_sem; | ||
| 828 | struct iscsi_tpg_attrib tpg_attrib; | ||
| 829 | struct iscsi_node_auth tpg_demo_auth; | ||
| 830 | /* Pointer to default list of iSCSI parameters for TPG */ | ||
| 831 | struct iscsi_param_list *param_list; | ||
| 832 | struct iscsi_tiqn *tpg_tiqn; | ||
| 833 | struct list_head tpg_gnp_list; | ||
| 834 | struct list_head tpg_list; | ||
| 835 | } ____cacheline_aligned; | ||
| 836 | |||
| 837 | struct iscsi_wwn_stat_grps { | ||
| 838 | struct config_group iscsi_stat_group; | ||
| 839 | struct config_group iscsi_instance_group; | ||
| 840 | struct config_group iscsi_sess_err_group; | ||
| 841 | struct config_group iscsi_tgt_attr_group; | ||
| 842 | struct config_group iscsi_login_stats_group; | ||
| 843 | struct config_group iscsi_logout_stats_group; | ||
| 844 | }; | ||
| 845 | |||
| 846 | struct iscsi_tiqn { | ||
| 847 | #define ISCSI_IQN_LEN 224 | ||
| 848 | unsigned char tiqn[ISCSI_IQN_LEN]; | ||
| 849 | enum tiqn_state_table tiqn_state; | ||
| 850 | int tiqn_access_count; | ||
| 851 | u32 tiqn_active_tpgs; | ||
| 852 | u32 tiqn_ntpgs; | ||
| 853 | u32 tiqn_num_tpg_nps; | ||
| 854 | u32 tiqn_nsessions; | ||
| 855 | struct list_head tiqn_list; | ||
| 856 | struct list_head tiqn_tpg_list; | ||
| 857 | spinlock_t tiqn_state_lock; | ||
| 858 | spinlock_t tiqn_tpg_lock; | ||
| 859 | struct se_wwn tiqn_wwn; | ||
| 860 | struct iscsi_wwn_stat_grps tiqn_stat_grps; | ||
| 861 | int tiqn_index; | ||
| 862 | struct iscsi_sess_err_stats sess_err_stats; | ||
| 863 | struct iscsi_login_stats login_stats; | ||
| 864 | struct iscsi_logout_stats logout_stats; | ||
| 865 | } ____cacheline_aligned; | ||
| 866 | |||
| 867 | struct iscsit_global { | ||
| 868 | /* In core shutdown */ | ||
| 869 | u32 in_shutdown; | ||
| 870 | u32 active_ts; | ||
| 871 | /* Unique identifier used for the authentication daemon */ | ||
| 872 | u32 auth_id; | ||
| 873 | u32 inactive_ts; | ||
| 874 | /* Thread Set bitmap count */ | ||
| 875 | int ts_bitmap_count; | ||
| 876 | /* Thread Set bitmap pointer */ | ||
| 877 | unsigned long *ts_bitmap; | ||
| 878 | /* Used for iSCSI discovery session authentication */ | ||
| 879 | struct iscsi_node_acl discovery_acl; | ||
| 880 | struct iscsi_portal_group *discovery_tpg; | ||
| 881 | }; | ||
| 882 | |||
| 883 | static inline u32 session_get_next_ttt(struct iscsi_session *session) | ||
| 884 | { | ||
| 885 | u32 ttt; | ||
| 886 | |||
| 887 | spin_lock_bh(&session->ttt_lock); | ||
| 888 | ttt = session->targ_xfer_tag++; | ||
| 889 | if (ttt == 0xFFFFFFFF) | ||
| 890 | ttt = session->targ_xfer_tag++; | ||
| 891 | spin_unlock_bh(&session->ttt_lock); | ||
| 892 | |||
| 893 | return ttt; | ||
| 894 | } | ||
| 895 | |||
| 896 | extern struct iscsi_cmd *iscsit_find_cmd_from_itt(struct iscsi_conn *, itt_t); | ||
| 897 | #endif /* ISCSI_TARGET_CORE_H */ | ||
diff --git a/include/target/iscsi/iscsi_target_stat.h b/include/target/iscsi/iscsi_target_stat.h new file mode 100644 index 000000000000..3ff76b4faad3 --- /dev/null +++ b/include/target/iscsi/iscsi_target_stat.h | |||
| @@ -0,0 +1,64 @@ | |||
| 1 | #ifndef ISCSI_TARGET_STAT_H | ||
| 2 | #define ISCSI_TARGET_STAT_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | * For struct iscsi_tiqn->tiqn_wwn default groups | ||
| 6 | */ | ||
| 7 | extern struct config_item_type iscsi_stat_instance_cit; | ||
| 8 | extern struct config_item_type iscsi_stat_sess_err_cit; | ||
| 9 | extern struct config_item_type iscsi_stat_tgt_attr_cit; | ||
| 10 | extern struct config_item_type iscsi_stat_login_cit; | ||
| 11 | extern struct config_item_type iscsi_stat_logout_cit; | ||
| 12 | |||
| 13 | /* | ||
| 14 | * For struct iscsi_session->se_sess default groups | ||
| 15 | */ | ||
| 16 | extern struct config_item_type iscsi_stat_sess_cit; | ||
| 17 | |||
| 18 | /* iSCSI session error types */ | ||
| 19 | #define ISCSI_SESS_ERR_UNKNOWN 0 | ||
| 20 | #define ISCSI_SESS_ERR_DIGEST 1 | ||
| 21 | #define ISCSI_SESS_ERR_CXN_TIMEOUT 2 | ||
| 22 | #define ISCSI_SESS_ERR_PDU_FORMAT 3 | ||
| 23 | |||
| 24 | /* iSCSI session error stats */ | ||
| 25 | struct iscsi_sess_err_stats { | ||
| 26 | spinlock_t lock; | ||
| 27 | u32 digest_errors; | ||
| 28 | u32 cxn_timeout_errors; | ||
| 29 | u32 pdu_format_errors; | ||
| 30 | u32 last_sess_failure_type; | ||
| 31 | char last_sess_fail_rem_name[224]; | ||
| 32 | } ____cacheline_aligned; | ||
| 33 | |||
| 34 | /* iSCSI login failure types (sub oids) */ | ||
| 35 | #define ISCSI_LOGIN_FAIL_OTHER 2 | ||
| 36 | #define ISCSI_LOGIN_FAIL_REDIRECT 3 | ||
| 37 | #define ISCSI_LOGIN_FAIL_AUTHORIZE 4 | ||
| 38 | #define ISCSI_LOGIN_FAIL_AUTHENTICATE 5 | ||
| 39 | #define ISCSI_LOGIN_FAIL_NEGOTIATE 6 | ||
| 40 | |||
| 41 | /* iSCSI login stats */ | ||
| 42 | struct iscsi_login_stats { | ||
| 43 | spinlock_t lock; | ||
| 44 | u32 accepts; | ||
| 45 | u32 other_fails; | ||
| 46 | u32 redirects; | ||
| 47 | u32 authorize_fails; | ||
| 48 | u32 authenticate_fails; | ||
| 49 | u32 negotiate_fails; /* used for notifications */ | ||
| 50 | u64 last_fail_time; /* time stamp (jiffies) */ | ||
| 51 | u32 last_fail_type; | ||
| 52 | int last_intr_fail_ip_family; | ||
| 53 | unsigned char last_intr_fail_ip_addr[IPV6_ADDRESS_SPACE]; | ||
| 54 | char last_intr_fail_name[224]; | ||
| 55 | } ____cacheline_aligned; | ||
| 56 | |||
| 57 | /* iSCSI logout stats */ | ||
| 58 | struct iscsi_logout_stats { | ||
| 59 | spinlock_t lock; | ||
| 60 | u32 normal_logouts; | ||
| 61 | u32 abnormal_logouts; | ||
| 62 | } ____cacheline_aligned; | ||
| 63 | |||
| 64 | #endif /*** ISCSI_TARGET_STAT_H ***/ | ||
diff --git a/include/target/iscsi/iscsi_transport.h b/include/target/iscsi/iscsi_transport.h index daef9daa500c..e6bb166f12c2 100644 --- a/include/target/iscsi/iscsi_transport.h +++ b/include/target/iscsi/iscsi_transport.h | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | #include <linux/module.h> | 1 | #include <linux/module.h> |
| 2 | #include <linux/list.h> | 2 | #include <linux/list.h> |
| 3 | #include "../../../drivers/target/iscsi/iscsi_target_core.h" | 3 | #include "iscsi_target_core.h" |
| 4 | 4 | ||
| 5 | struct iscsit_transport { | 5 | struct iscsit_transport { |
| 6 | #define ISCSIT_TRANSPORT_NAME 16 | 6 | #define ISCSIT_TRANSPORT_NAME 16 |
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h index 4a8795a87b9e..672150b6aaf5 100644 --- a/include/target/target_core_base.h +++ b/include/target/target_core_base.h | |||
| @@ -407,7 +407,7 @@ struct t10_reservation { | |||
| 407 | /* Activate Persistence across Target Power Loss enabled | 407 | /* Activate Persistence across Target Power Loss enabled |
| 408 | * for SCSI device */ | 408 | * for SCSI device */ |
| 409 | int pr_aptpl_active; | 409 | int pr_aptpl_active; |
| 410 | #define PR_APTPL_BUF_LEN 8192 | 410 | #define PR_APTPL_BUF_LEN 262144 |
| 411 | u32 pr_generation; | 411 | u32 pr_generation; |
| 412 | spinlock_t registration_lock; | 412 | spinlock_t registration_lock; |
| 413 | spinlock_t aptpl_reg_lock; | 413 | spinlock_t aptpl_reg_lock; |
diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h index 611e1c5893b4..b6dec05c7196 100644 --- a/include/uapi/linux/btrfs.h +++ b/include/uapi/linux/btrfs.h | |||
| @@ -495,8 +495,7 @@ struct btrfs_ioctl_send_args { | |||
| 495 | 495 | ||
| 496 | /* Error codes as returned by the kernel */ | 496 | /* Error codes as returned by the kernel */ |
| 497 | enum btrfs_err_code { | 497 | enum btrfs_err_code { |
| 498 | notused, | 498 | BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1, |
| 499 | BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET, | ||
| 500 | BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET, | 499 | BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET, |
| 501 | BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET, | 500 | BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET, |
| 502 | BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET, | 501 | BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET, |
diff --git a/include/uapi/linux/nvme.h b/include/uapi/linux/nvme.h index 26386cf3db44..aef9a81b2d75 100644 --- a/include/uapi/linux/nvme.h +++ b/include/uapi/linux/nvme.h | |||
| @@ -115,7 +115,13 @@ struct nvme_id_ns { | |||
| 115 | __le16 nawun; | 115 | __le16 nawun; |
| 116 | __le16 nawupf; | 116 | __le16 nawupf; |
| 117 | __le16 nacwu; | 117 | __le16 nacwu; |
| 118 | __u8 rsvd40[80]; | 118 | __le16 nabsn; |
| 119 | __le16 nabo; | ||
| 120 | __le16 nabspf; | ||
| 121 | __u16 rsvd46; | ||
| 122 | __le64 nvmcap[2]; | ||
| 123 | __u8 rsvd64[40]; | ||
| 124 | __u8 nguid[16]; | ||
| 119 | __u8 eui64[8]; | 125 | __u8 eui64[8]; |
| 120 | struct nvme_lbaf lbaf[16]; | 126 | struct nvme_lbaf lbaf[16]; |
| 121 | __u8 rsvd192[192]; | 127 | __u8 rsvd192[192]; |
| @@ -124,10 +130,22 @@ struct nvme_id_ns { | |||
| 124 | 130 | ||
| 125 | enum { | 131 | enum { |
| 126 | NVME_NS_FEAT_THIN = 1 << 0, | 132 | NVME_NS_FEAT_THIN = 1 << 0, |
| 133 | NVME_NS_FLBAS_LBA_MASK = 0xf, | ||
| 134 | NVME_NS_FLBAS_META_EXT = 0x10, | ||
| 127 | NVME_LBAF_RP_BEST = 0, | 135 | NVME_LBAF_RP_BEST = 0, |
| 128 | NVME_LBAF_RP_BETTER = 1, | 136 | NVME_LBAF_RP_BETTER = 1, |
| 129 | NVME_LBAF_RP_GOOD = 2, | 137 | NVME_LBAF_RP_GOOD = 2, |
| 130 | NVME_LBAF_RP_DEGRADED = 3, | 138 | NVME_LBAF_RP_DEGRADED = 3, |
| 139 | NVME_NS_DPC_PI_LAST = 1 << 4, | ||
| 140 | NVME_NS_DPC_PI_FIRST = 1 << 3, | ||
| 141 | NVME_NS_DPC_PI_TYPE3 = 1 << 2, | ||
| 142 | NVME_NS_DPC_PI_TYPE2 = 1 << 1, | ||
| 143 | NVME_NS_DPC_PI_TYPE1 = 1 << 0, | ||
| 144 | NVME_NS_DPS_PI_FIRST = 1 << 3, | ||
| 145 | NVME_NS_DPS_PI_MASK = 0x7, | ||
| 146 | NVME_NS_DPS_PI_TYPE1 = 1, | ||
| 147 | NVME_NS_DPS_PI_TYPE2 = 2, | ||
| 148 | NVME_NS_DPS_PI_TYPE3 = 3, | ||
| 131 | }; | 149 | }; |
| 132 | 150 | ||
| 133 | struct nvme_smart_log { | 151 | struct nvme_smart_log { |
| @@ -261,6 +279,10 @@ enum { | |||
| 261 | NVME_RW_DSM_LATENCY_LOW = 3 << 4, | 279 | NVME_RW_DSM_LATENCY_LOW = 3 << 4, |
| 262 | NVME_RW_DSM_SEQ_REQ = 1 << 6, | 280 | NVME_RW_DSM_SEQ_REQ = 1 << 6, |
| 263 | NVME_RW_DSM_COMPRESSED = 1 << 7, | 281 | NVME_RW_DSM_COMPRESSED = 1 << 7, |
| 282 | NVME_RW_PRINFO_PRCHK_REF = 1 << 10, | ||
| 283 | NVME_RW_PRINFO_PRCHK_APP = 1 << 11, | ||
| 284 | NVME_RW_PRINFO_PRCHK_GUARD = 1 << 12, | ||
| 285 | NVME_RW_PRINFO_PRACT = 1 << 13, | ||
| 264 | }; | 286 | }; |
| 265 | 287 | ||
| 266 | struct nvme_dsm_cmd { | 288 | struct nvme_dsm_cmd { |
| @@ -549,6 +571,8 @@ struct nvme_passthru_cmd { | |||
| 549 | __u32 result; | 571 | __u32 result; |
| 550 | }; | 572 | }; |
| 551 | 573 | ||
| 574 | #define NVME_VS(major, minor) (((major) << 16) | ((minor) << 8)) | ||
| 575 | |||
| 552 | #define nvme_admin_cmd nvme_passthru_cmd | 576 | #define nvme_admin_cmd nvme_passthru_cmd |
| 553 | 577 | ||
| 554 | #define NVME_IOCTL_ID _IO('N', 0x40) | 578 | #define NVME_IOCTL_ID _IO('N', 0x40) |
diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h index 89f63503f903..31891d9535e2 100644 --- a/include/uapi/linux/prctl.h +++ b/include/uapi/linux/prctl.h | |||
| @@ -185,4 +185,9 @@ struct prctl_mm_map { | |||
| 185 | #define PR_MPX_ENABLE_MANAGEMENT 43 | 185 | #define PR_MPX_ENABLE_MANAGEMENT 43 |
| 186 | #define PR_MPX_DISABLE_MANAGEMENT 44 | 186 | #define PR_MPX_DISABLE_MANAGEMENT 44 |
| 187 | 187 | ||
| 188 | #define PR_SET_FP_MODE 45 | ||
| 189 | #define PR_GET_FP_MODE 46 | ||
| 190 | # define PR_FP_MODE_FR (1 << 0) /* 64b FP registers */ | ||
| 191 | # define PR_FP_MODE_FRE (1 << 1) /* 32b compatibility */ | ||
| 192 | |||
| 188 | #endif /* _LINUX_PRCTL_H */ | 193 | #endif /* _LINUX_PRCTL_H */ |
diff --git a/include/uapi/linux/tc_act/Kbuild b/include/uapi/linux/tc_act/Kbuild index 19d5219b0b99..242cf0c6e33d 100644 --- a/include/uapi/linux/tc_act/Kbuild +++ b/include/uapi/linux/tc_act/Kbuild | |||
| @@ -9,3 +9,4 @@ header-y += tc_pedit.h | |||
| 9 | header-y += tc_skbedit.h | 9 | header-y += tc_skbedit.h |
| 10 | header-y += tc_vlan.h | 10 | header-y += tc_vlan.h |
| 11 | header-y += tc_bpf.h | 11 | header-y += tc_bpf.h |
| 12 | header-y += tc_connmark.h | ||
diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h index 29715d27548f..82889c30f4f5 100644 --- a/include/uapi/linux/vfio.h +++ b/include/uapi/linux/vfio.h | |||
| @@ -333,6 +333,7 @@ enum { | |||
| 333 | VFIO_PCI_MSI_IRQ_INDEX, | 333 | VFIO_PCI_MSI_IRQ_INDEX, |
| 334 | VFIO_PCI_MSIX_IRQ_INDEX, | 334 | VFIO_PCI_MSIX_IRQ_INDEX, |
| 335 | VFIO_PCI_ERR_IRQ_INDEX, | 335 | VFIO_PCI_ERR_IRQ_INDEX, |
| 336 | VFIO_PCI_REQ_IRQ_INDEX, | ||
| 336 | VFIO_PCI_NUM_IRQS | 337 | VFIO_PCI_NUM_IRQS |
| 337 | }; | 338 | }; |
| 338 | 339 | ||
diff --git a/include/uapi/linux/virtio_balloon.h b/include/uapi/linux/virtio_balloon.h index be40f7059e93..4b0488f20b2e 100644 --- a/include/uapi/linux/virtio_balloon.h +++ b/include/uapi/linux/virtio_balloon.h | |||
| @@ -36,8 +36,7 @@ | |||
| 36 | /* Size of a PFN in the balloon interface. */ | 36 | /* Size of a PFN in the balloon interface. */ |
| 37 | #define VIRTIO_BALLOON_PFN_SHIFT 12 | 37 | #define VIRTIO_BALLOON_PFN_SHIFT 12 |
| 38 | 38 | ||
| 39 | struct virtio_balloon_config | 39 | struct virtio_balloon_config { |
| 40 | { | ||
| 41 | /* Number of pages host wants Guest to give up. */ | 40 | /* Number of pages host wants Guest to give up. */ |
| 42 | __le32 num_pages; | 41 | __le32 num_pages; |
| 43 | /* Number of pages we've actually got in balloon. */ | 42 | /* Number of pages we've actually got in balloon. */ |
diff --git a/include/uapi/linux/virtio_blk.h b/include/uapi/linux/virtio_blk.h index 247c8ba8544a..3c53eec4ae22 100644 --- a/include/uapi/linux/virtio_blk.h +++ b/include/uapi/linux/virtio_blk.h | |||
| @@ -31,22 +31,25 @@ | |||
| 31 | #include <linux/virtio_types.h> | 31 | #include <linux/virtio_types.h> |
| 32 | 32 | ||
| 33 | /* Feature bits */ | 33 | /* Feature bits */ |
| 34 | #define VIRTIO_BLK_F_BARRIER 0 /* Does host support barriers? */ | ||
| 35 | #define VIRTIO_BLK_F_SIZE_MAX 1 /* Indicates maximum segment size */ | 34 | #define VIRTIO_BLK_F_SIZE_MAX 1 /* Indicates maximum segment size */ |
| 36 | #define VIRTIO_BLK_F_SEG_MAX 2 /* Indicates maximum # of segments */ | 35 | #define VIRTIO_BLK_F_SEG_MAX 2 /* Indicates maximum # of segments */ |
| 37 | #define VIRTIO_BLK_F_GEOMETRY 4 /* Legacy geometry available */ | 36 | #define VIRTIO_BLK_F_GEOMETRY 4 /* Legacy geometry available */ |
| 38 | #define VIRTIO_BLK_F_RO 5 /* Disk is read-only */ | 37 | #define VIRTIO_BLK_F_RO 5 /* Disk is read-only */ |
| 39 | #define VIRTIO_BLK_F_BLK_SIZE 6 /* Block size of disk is available*/ | 38 | #define VIRTIO_BLK_F_BLK_SIZE 6 /* Block size of disk is available*/ |
| 40 | #define VIRTIO_BLK_F_SCSI 7 /* Supports scsi command passthru */ | ||
| 41 | #define VIRTIO_BLK_F_WCE 9 /* Writeback mode enabled after reset */ | ||
| 42 | #define VIRTIO_BLK_F_TOPOLOGY 10 /* Topology information is available */ | 39 | #define VIRTIO_BLK_F_TOPOLOGY 10 /* Topology information is available */ |
| 43 | #define VIRTIO_BLK_F_CONFIG_WCE 11 /* Writeback mode available in config */ | ||
| 44 | #define VIRTIO_BLK_F_MQ 12 /* support more than one vq */ | 40 | #define VIRTIO_BLK_F_MQ 12 /* support more than one vq */ |
| 45 | 41 | ||
| 42 | /* Legacy feature bits */ | ||
| 43 | #ifndef VIRTIO_BLK_NO_LEGACY | ||
| 44 | #define VIRTIO_BLK_F_BARRIER 0 /* Does host support barriers? */ | ||
| 45 | #define VIRTIO_BLK_F_SCSI 7 /* Supports scsi command passthru */ | ||
| 46 | #define VIRTIO_BLK_F_WCE 9 /* Writeback mode enabled after reset */ | ||
| 47 | #define VIRTIO_BLK_F_CONFIG_WCE 11 /* Writeback mode available in config */ | ||
| 46 | #ifndef __KERNEL__ | 48 | #ifndef __KERNEL__ |
| 47 | /* Old (deprecated) name for VIRTIO_BLK_F_WCE. */ | 49 | /* Old (deprecated) name for VIRTIO_BLK_F_WCE. */ |
| 48 | #define VIRTIO_BLK_F_FLUSH VIRTIO_BLK_F_WCE | 50 | #define VIRTIO_BLK_F_FLUSH VIRTIO_BLK_F_WCE |
| 49 | #endif | 51 | #endif |
| 52 | #endif /* !VIRTIO_BLK_NO_LEGACY */ | ||
| 50 | 53 | ||
| 51 | #define VIRTIO_BLK_ID_BYTES 20 /* ID string length */ | 54 | #define VIRTIO_BLK_ID_BYTES 20 /* ID string length */ |
| 52 | 55 | ||
| @@ -100,8 +103,10 @@ struct virtio_blk_config { | |||
| 100 | #define VIRTIO_BLK_T_IN 0 | 103 | #define VIRTIO_BLK_T_IN 0 |
| 101 | #define VIRTIO_BLK_T_OUT 1 | 104 | #define VIRTIO_BLK_T_OUT 1 |
| 102 | 105 | ||
| 106 | #ifndef VIRTIO_BLK_NO_LEGACY | ||
| 103 | /* This bit says it's a scsi command, not an actual read or write. */ | 107 | /* This bit says it's a scsi command, not an actual read or write. */ |
| 104 | #define VIRTIO_BLK_T_SCSI_CMD 2 | 108 | #define VIRTIO_BLK_T_SCSI_CMD 2 |
| 109 | #endif /* VIRTIO_BLK_NO_LEGACY */ | ||
| 105 | 110 | ||
| 106 | /* Cache flush command */ | 111 | /* Cache flush command */ |
| 107 | #define VIRTIO_BLK_T_FLUSH 4 | 112 | #define VIRTIO_BLK_T_FLUSH 4 |
| @@ -109,8 +114,10 @@ struct virtio_blk_config { | |||
| 109 | /* Get device ID command */ | 114 | /* Get device ID command */ |
| 110 | #define VIRTIO_BLK_T_GET_ID 8 | 115 | #define VIRTIO_BLK_T_GET_ID 8 |
| 111 | 116 | ||
| 117 | #ifndef VIRTIO_BLK_NO_LEGACY | ||
| 112 | /* Barrier before this op. */ | 118 | /* Barrier before this op. */ |
| 113 | #define VIRTIO_BLK_T_BARRIER 0x80000000 | 119 | #define VIRTIO_BLK_T_BARRIER 0x80000000 |
| 120 | #endif /* !VIRTIO_BLK_NO_LEGACY */ | ||
| 114 | 121 | ||
| 115 | /* This is the first element of the read scatter-gather list. */ | 122 | /* This is the first element of the read scatter-gather list. */ |
| 116 | struct virtio_blk_outhdr { | 123 | struct virtio_blk_outhdr { |
| @@ -122,12 +129,14 @@ struct virtio_blk_outhdr { | |||
| 122 | __virtio64 sector; | 129 | __virtio64 sector; |
| 123 | }; | 130 | }; |
| 124 | 131 | ||
| 132 | #ifndef VIRTIO_BLK_NO_LEGACY | ||
| 125 | struct virtio_scsi_inhdr { | 133 | struct virtio_scsi_inhdr { |
| 126 | __virtio32 errors; | 134 | __virtio32 errors; |
| 127 | __virtio32 data_len; | 135 | __virtio32 data_len; |
| 128 | __virtio32 sense_len; | 136 | __virtio32 sense_len; |
| 129 | __virtio32 residual; | 137 | __virtio32 residual; |
| 130 | }; | 138 | }; |
| 139 | #endif /* !VIRTIO_BLK_NO_LEGACY */ | ||
| 131 | 140 | ||
| 132 | /* And this is the final byte of the write scatter-gather list. */ | 141 | /* And this is the final byte of the write scatter-gather list. */ |
| 133 | #define VIRTIO_BLK_S_OK 0 | 142 | #define VIRTIO_BLK_S_OK 0 |
diff --git a/include/uapi/linux/virtio_config.h b/include/uapi/linux/virtio_config.h index a6d0cdeaacd4..c18264df9504 100644 --- a/include/uapi/linux/virtio_config.h +++ b/include/uapi/linux/virtio_config.h | |||
| @@ -49,12 +49,14 @@ | |||
| 49 | #define VIRTIO_TRANSPORT_F_START 28 | 49 | #define VIRTIO_TRANSPORT_F_START 28 |
| 50 | #define VIRTIO_TRANSPORT_F_END 33 | 50 | #define VIRTIO_TRANSPORT_F_END 33 |
| 51 | 51 | ||
| 52 | #ifndef VIRTIO_CONFIG_NO_LEGACY | ||
| 52 | /* Do we get callbacks when the ring is completely used, even if we've | 53 | /* Do we get callbacks when the ring is completely used, even if we've |
| 53 | * suppressed them? */ | 54 | * suppressed them? */ |
| 54 | #define VIRTIO_F_NOTIFY_ON_EMPTY 24 | 55 | #define VIRTIO_F_NOTIFY_ON_EMPTY 24 |
| 55 | 56 | ||
| 56 | /* Can the device handle any descriptor layout? */ | 57 | /* Can the device handle any descriptor layout? */ |
| 57 | #define VIRTIO_F_ANY_LAYOUT 27 | 58 | #define VIRTIO_F_ANY_LAYOUT 27 |
| 59 | #endif /* VIRTIO_CONFIG_NO_LEGACY */ | ||
| 58 | 60 | ||
| 59 | /* v1.0 compliant. */ | 61 | /* v1.0 compliant. */ |
| 60 | #define VIRTIO_F_VERSION_1 32 | 62 | #define VIRTIO_F_VERSION_1 32 |
diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h index b5f1677b291c..7bbee79ca293 100644 --- a/include/uapi/linux/virtio_net.h +++ b/include/uapi/linux/virtio_net.h | |||
| @@ -35,7 +35,6 @@ | |||
| 35 | #define VIRTIO_NET_F_CSUM 0 /* Host handles pkts w/ partial csum */ | 35 | #define VIRTIO_NET_F_CSUM 0 /* Host handles pkts w/ partial csum */ |
| 36 | #define VIRTIO_NET_F_GUEST_CSUM 1 /* Guest handles pkts w/ partial csum */ | 36 | #define VIRTIO_NET_F_GUEST_CSUM 1 /* Guest handles pkts w/ partial csum */ |
| 37 | #define VIRTIO_NET_F_MAC 5 /* Host has given MAC address. */ | 37 | #define VIRTIO_NET_F_MAC 5 /* Host has given MAC address. */ |
| 38 | #define VIRTIO_NET_F_GSO 6 /* Host handles pkts w/ any GSO type */ | ||
| 39 | #define VIRTIO_NET_F_GUEST_TSO4 7 /* Guest can handle TSOv4 in. */ | 38 | #define VIRTIO_NET_F_GUEST_TSO4 7 /* Guest can handle TSOv4 in. */ |
| 40 | #define VIRTIO_NET_F_GUEST_TSO6 8 /* Guest can handle TSOv6 in. */ | 39 | #define VIRTIO_NET_F_GUEST_TSO6 8 /* Guest can handle TSOv6 in. */ |
| 41 | #define VIRTIO_NET_F_GUEST_ECN 9 /* Guest can handle TSO[6] w/ ECN in. */ | 40 | #define VIRTIO_NET_F_GUEST_ECN 9 /* Guest can handle TSO[6] w/ ECN in. */ |
| @@ -56,6 +55,10 @@ | |||
| 56 | * Steering */ | 55 | * Steering */ |
| 57 | #define VIRTIO_NET_F_CTRL_MAC_ADDR 23 /* Set MAC address */ | 56 | #define VIRTIO_NET_F_CTRL_MAC_ADDR 23 /* Set MAC address */ |
| 58 | 57 | ||
| 58 | #ifndef VIRTIO_NET_NO_LEGACY | ||
| 59 | #define VIRTIO_NET_F_GSO 6 /* Host handles pkts w/ any GSO type */ | ||
| 60 | #endif /* VIRTIO_NET_NO_LEGACY */ | ||
| 61 | |||
| 59 | #define VIRTIO_NET_S_LINK_UP 1 /* Link is up */ | 62 | #define VIRTIO_NET_S_LINK_UP 1 /* Link is up */ |
| 60 | #define VIRTIO_NET_S_ANNOUNCE 2 /* Announcement is needed */ | 63 | #define VIRTIO_NET_S_ANNOUNCE 2 /* Announcement is needed */ |
| 61 | 64 | ||
| @@ -71,19 +74,39 @@ struct virtio_net_config { | |||
| 71 | __u16 max_virtqueue_pairs; | 74 | __u16 max_virtqueue_pairs; |
| 72 | } __attribute__((packed)); | 75 | } __attribute__((packed)); |
| 73 | 76 | ||
| 77 | /* | ||
| 78 | * This header comes first in the scatter-gather list. If you don't | ||
| 79 | * specify GSO or CSUM features, you can simply ignore the header. | ||
| 80 | * | ||
| 81 | * This is bitwise-equivalent to the legacy struct virtio_net_hdr_mrg_rxbuf, | ||
| 82 | * only flattened. | ||
| 83 | */ | ||
| 84 | struct virtio_net_hdr_v1 { | ||
| 85 | #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 /* Use csum_start, csum_offset */ | ||
| 86 | #define VIRTIO_NET_HDR_F_DATA_VALID 2 /* Csum is valid */ | ||
| 87 | __u8 flags; | ||
| 88 | #define VIRTIO_NET_HDR_GSO_NONE 0 /* Not a GSO frame */ | ||
| 89 | #define VIRTIO_NET_HDR_GSO_TCPV4 1 /* GSO frame, IPv4 TCP (TSO) */ | ||
| 90 | #define VIRTIO_NET_HDR_GSO_UDP 3 /* GSO frame, IPv4 UDP (UFO) */ | ||
| 91 | #define VIRTIO_NET_HDR_GSO_TCPV6 4 /* GSO frame, IPv6 TCP */ | ||
| 92 | #define VIRTIO_NET_HDR_GSO_ECN 0x80 /* TCP has ECN set */ | ||
| 93 | __u8 gso_type; | ||
| 94 | __virtio16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */ | ||
| 95 | __virtio16 gso_size; /* Bytes to append to hdr_len per frame */ | ||
| 96 | __virtio16 csum_start; /* Position to start checksumming from */ | ||
| 97 | __virtio16 csum_offset; /* Offset after that to place checksum */ | ||
| 98 | __virtio16 num_buffers; /* Number of merged rx buffers */ | ||
| 99 | }; | ||
| 100 | |||
| 101 | #ifndef VIRTIO_NET_NO_LEGACY | ||
| 74 | /* This header comes first in the scatter-gather list. | 102 | /* This header comes first in the scatter-gather list. |
| 75 | * If VIRTIO_F_ANY_LAYOUT is not negotiated, it must | 103 | * For legacy virtio, if VIRTIO_F_ANY_LAYOUT is not negotiated, it must |
| 76 | * be the first element of the scatter-gather list. If you don't | 104 | * be the first element of the scatter-gather list. If you don't |
| 77 | * specify GSO or CSUM features, you can simply ignore the header. */ | 105 | * specify GSO or CSUM features, you can simply ignore the header. */ |
| 78 | struct virtio_net_hdr { | 106 | struct virtio_net_hdr { |
| 79 | #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 // Use csum_start, csum_offset | 107 | /* See VIRTIO_NET_HDR_F_* */ |
| 80 | #define VIRTIO_NET_HDR_F_DATA_VALID 2 // Csum is valid | ||
| 81 | __u8 flags; | 108 | __u8 flags; |
| 82 | #define VIRTIO_NET_HDR_GSO_NONE 0 // Not a GSO frame | 109 | /* See VIRTIO_NET_HDR_GSO_* */ |
| 83 | #define VIRTIO_NET_HDR_GSO_TCPV4 1 // GSO frame, IPv4 TCP (TSO) | ||
| 84 | #define VIRTIO_NET_HDR_GSO_UDP 3 // GSO frame, IPv4 UDP (UFO) | ||
| 85 | #define VIRTIO_NET_HDR_GSO_TCPV6 4 // GSO frame, IPv6 TCP | ||
| 86 | #define VIRTIO_NET_HDR_GSO_ECN 0x80 // TCP has ECN set | ||
| 87 | __u8 gso_type; | 110 | __u8 gso_type; |
| 88 | __virtio16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */ | 111 | __virtio16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */ |
| 89 | __virtio16 gso_size; /* Bytes to append to hdr_len per frame */ | 112 | __virtio16 gso_size; /* Bytes to append to hdr_len per frame */ |
| @@ -97,6 +120,7 @@ struct virtio_net_hdr_mrg_rxbuf { | |||
| 97 | struct virtio_net_hdr hdr; | 120 | struct virtio_net_hdr hdr; |
| 98 | __virtio16 num_buffers; /* Number of merged rx buffers */ | 121 | __virtio16 num_buffers; /* Number of merged rx buffers */ |
| 99 | }; | 122 | }; |
| 123 | #endif /* ...VIRTIO_NET_NO_LEGACY */ | ||
| 100 | 124 | ||
| 101 | /* | 125 | /* |
| 102 | * Control virtqueue data structures | 126 | * Control virtqueue data structures |
diff --git a/include/uapi/linux/virtio_pci.h b/include/uapi/linux/virtio_pci.h index 35b552c7f330..75301468359f 100644 --- a/include/uapi/linux/virtio_pci.h +++ b/include/uapi/linux/virtio_pci.h | |||
| @@ -39,7 +39,7 @@ | |||
| 39 | #ifndef _LINUX_VIRTIO_PCI_H | 39 | #ifndef _LINUX_VIRTIO_PCI_H |
| 40 | #define _LINUX_VIRTIO_PCI_H | 40 | #define _LINUX_VIRTIO_PCI_H |
| 41 | 41 | ||
| 42 | #include <linux/virtio_config.h> | 42 | #include <linux/types.h> |
| 43 | 43 | ||
| 44 | #ifndef VIRTIO_PCI_NO_LEGACY | 44 | #ifndef VIRTIO_PCI_NO_LEGACY |
| 45 | 45 | ||
| @@ -99,4 +99,95 @@ | |||
| 99 | /* Vector value used to disable MSI for queue */ | 99 | /* Vector value used to disable MSI for queue */ |
| 100 | #define VIRTIO_MSI_NO_VECTOR 0xffff | 100 | #define VIRTIO_MSI_NO_VECTOR 0xffff |
| 101 | 101 | ||
| 102 | #ifndef VIRTIO_PCI_NO_MODERN | ||
| 103 | |||
| 104 | /* IDs for different capabilities. Must all exist. */ | ||
| 105 | |||
| 106 | /* Common configuration */ | ||
| 107 | #define VIRTIO_PCI_CAP_COMMON_CFG 1 | ||
| 108 | /* Notifications */ | ||
| 109 | #define VIRTIO_PCI_CAP_NOTIFY_CFG 2 | ||
| 110 | /* ISR access */ | ||
| 111 | #define VIRTIO_PCI_CAP_ISR_CFG 3 | ||
| 112 | /* Device specific configuration */ | ||
| 113 | #define VIRTIO_PCI_CAP_DEVICE_CFG 4 | ||
| 114 | /* PCI configuration access */ | ||
| 115 | #define VIRTIO_PCI_CAP_PCI_CFG 5 | ||
| 116 | |||
| 117 | /* This is the PCI capability header: */ | ||
| 118 | struct virtio_pci_cap { | ||
| 119 | __u8 cap_vndr; /* Generic PCI field: PCI_CAP_ID_VNDR */ | ||
| 120 | __u8 cap_next; /* Generic PCI field: next ptr. */ | ||
| 121 | __u8 cap_len; /* Generic PCI field: capability length */ | ||
| 122 | __u8 cfg_type; /* Identifies the structure. */ | ||
| 123 | __u8 bar; /* Where to find it. */ | ||
| 124 | __u8 padding[3]; /* Pad to full dword. */ | ||
| 125 | __le32 offset; /* Offset within bar. */ | ||
| 126 | __le32 length; /* Length of the structure, in bytes. */ | ||
| 127 | }; | ||
| 128 | |||
| 129 | struct virtio_pci_notify_cap { | ||
| 130 | struct virtio_pci_cap cap; | ||
| 131 | __le32 notify_off_multiplier; /* Multiplier for queue_notify_off. */ | ||
| 132 | }; | ||
| 133 | |||
| 134 | /* Fields in VIRTIO_PCI_CAP_COMMON_CFG: */ | ||
| 135 | struct virtio_pci_common_cfg { | ||
| 136 | /* About the whole device. */ | ||
| 137 | __le32 device_feature_select; /* read-write */ | ||
| 138 | __le32 device_feature; /* read-only */ | ||
| 139 | __le32 guest_feature_select; /* read-write */ | ||
| 140 | __le32 guest_feature; /* read-write */ | ||
| 141 | __le16 msix_config; /* read-write */ | ||
| 142 | __le16 num_queues; /* read-only */ | ||
| 143 | __u8 device_status; /* read-write */ | ||
| 144 | __u8 config_generation; /* read-only */ | ||
| 145 | |||
| 146 | /* About a specific virtqueue. */ | ||
| 147 | __le16 queue_select; /* read-write */ | ||
| 148 | __le16 queue_size; /* read-write, power of 2. */ | ||
| 149 | __le16 queue_msix_vector; /* read-write */ | ||
| 150 | __le16 queue_enable; /* read-write */ | ||
| 151 | __le16 queue_notify_off; /* read-only */ | ||
| 152 | __le32 queue_desc_lo; /* read-write */ | ||
| 153 | __le32 queue_desc_hi; /* read-write */ | ||
| 154 | __le32 queue_avail_lo; /* read-write */ | ||
| 155 | __le32 queue_avail_hi; /* read-write */ | ||
| 156 | __le32 queue_used_lo; /* read-write */ | ||
| 157 | __le32 queue_used_hi; /* read-write */ | ||
| 158 | }; | ||
| 159 | |||
| 160 | /* Macro versions of offsets for the Old Timers! */ | ||
| 161 | #define VIRTIO_PCI_CAP_VNDR 0 | ||
| 162 | #define VIRTIO_PCI_CAP_NEXT 1 | ||
| 163 | #define VIRTIO_PCI_CAP_LEN 2 | ||
| 164 | #define VIRTIO_PCI_CAP_CFG_TYPE 3 | ||
| 165 | #define VIRTIO_PCI_CAP_BAR 4 | ||
| 166 | #define VIRTIO_PCI_CAP_OFFSET 8 | ||
| 167 | #define VIRTIO_PCI_CAP_LENGTH 12 | ||
| 168 | |||
| 169 | #define VIRTIO_PCI_NOTIFY_CAP_MULT 16 | ||
| 170 | |||
| 171 | #define VIRTIO_PCI_COMMON_DFSELECT 0 | ||
| 172 | #define VIRTIO_PCI_COMMON_DF 4 | ||
| 173 | #define VIRTIO_PCI_COMMON_GFSELECT 8 | ||
| 174 | #define VIRTIO_PCI_COMMON_GF 12 | ||
| 175 | #define VIRTIO_PCI_COMMON_MSIX 16 | ||
| 176 | #define VIRTIO_PCI_COMMON_NUMQ 18 | ||
| 177 | #define VIRTIO_PCI_COMMON_STATUS 20 | ||
| 178 | #define VIRTIO_PCI_COMMON_CFGGENERATION 21 | ||
| 179 | #define VIRTIO_PCI_COMMON_Q_SELECT 22 | ||
| 180 | #define VIRTIO_PCI_COMMON_Q_SIZE 24 | ||
| 181 | #define VIRTIO_PCI_COMMON_Q_MSIX 26 | ||
| 182 | #define VIRTIO_PCI_COMMON_Q_ENABLE 28 | ||
| 183 | #define VIRTIO_PCI_COMMON_Q_NOFF 30 | ||
| 184 | #define VIRTIO_PCI_COMMON_Q_DESCLO 32 | ||
| 185 | #define VIRTIO_PCI_COMMON_Q_DESCHI 36 | ||
| 186 | #define VIRTIO_PCI_COMMON_Q_AVAILLO 40 | ||
| 187 | #define VIRTIO_PCI_COMMON_Q_AVAILHI 44 | ||
| 188 | #define VIRTIO_PCI_COMMON_Q_USEDLO 48 | ||
| 189 | #define VIRTIO_PCI_COMMON_Q_USEDHI 52 | ||
| 190 | |||
| 191 | #endif /* VIRTIO_PCI_NO_MODERN */ | ||
| 192 | |||
| 102 | #endif | 193 | #endif |
diff --git a/include/uapi/rdma/ib_user_verbs.h b/include/uapi/rdma/ib_user_verbs.h index 867cc5084afb..b513e662d8e4 100644 --- a/include/uapi/rdma/ib_user_verbs.h +++ b/include/uapi/rdma/ib_user_verbs.h | |||
| @@ -90,6 +90,7 @@ enum { | |||
| 90 | }; | 90 | }; |
| 91 | 91 | ||
| 92 | enum { | 92 | enum { |
| 93 | IB_USER_VERBS_EX_CMD_QUERY_DEVICE = IB_USER_VERBS_CMD_QUERY_DEVICE, | ||
| 93 | IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD, | 94 | IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD, |
| 94 | IB_USER_VERBS_EX_CMD_DESTROY_FLOW, | 95 | IB_USER_VERBS_EX_CMD_DESTROY_FLOW, |
| 95 | }; | 96 | }; |
| @@ -201,6 +202,28 @@ struct ib_uverbs_query_device_resp { | |||
| 201 | __u8 reserved[4]; | 202 | __u8 reserved[4]; |
| 202 | }; | 203 | }; |
| 203 | 204 | ||
| 205 | struct ib_uverbs_ex_query_device { | ||
| 206 | __u32 comp_mask; | ||
| 207 | __u32 reserved; | ||
| 208 | }; | ||
| 209 | |||
| 210 | struct ib_uverbs_odp_caps { | ||
| 211 | __u64 general_caps; | ||
| 212 | struct { | ||
| 213 | __u32 rc_odp_caps; | ||
| 214 | __u32 uc_odp_caps; | ||
| 215 | __u32 ud_odp_caps; | ||
| 216 | } per_transport_caps; | ||
| 217 | __u32 reserved; | ||
| 218 | }; | ||
| 219 | |||
| 220 | struct ib_uverbs_ex_query_device_resp { | ||
| 221 | struct ib_uverbs_query_device_resp base; | ||
| 222 | __u32 comp_mask; | ||
| 223 | __u32 response_length; | ||
| 224 | struct ib_uverbs_odp_caps odp_caps; | ||
| 225 | }; | ||
| 226 | |||
| 204 | struct ib_uverbs_query_port { | 227 | struct ib_uverbs_query_port { |
| 205 | __u64 response; | 228 | __u64 response; |
| 206 | __u8 port_num; | 229 | __u8 port_num; |
diff --git a/include/xen/xen-ops.h b/include/xen/xen-ops.h index 7491ee5d8164..83338210ee04 100644 --- a/include/xen/xen-ops.h +++ b/include/xen/xen-ops.h | |||
| @@ -46,4 +46,30 @@ static inline efi_system_table_t __init *xen_efi_probe(void) | |||
| 46 | } | 46 | } |
| 47 | #endif | 47 | #endif |
| 48 | 48 | ||
| 49 | #ifdef CONFIG_PREEMPT | ||
| 50 | |||
| 51 | static inline void xen_preemptible_hcall_begin(void) | ||
| 52 | { | ||
| 53 | } | ||
| 54 | |||
| 55 | static inline void xen_preemptible_hcall_end(void) | ||
| 56 | { | ||
| 57 | } | ||
| 58 | |||
| 59 | #else | ||
| 60 | |||
| 61 | DECLARE_PER_CPU(bool, xen_in_preemptible_hcall); | ||
| 62 | |||
| 63 | static inline void xen_preemptible_hcall_begin(void) | ||
| 64 | { | ||
| 65 | __this_cpu_write(xen_in_preemptible_hcall, true); | ||
| 66 | } | ||
| 67 | |||
| 68 | static inline void xen_preemptible_hcall_end(void) | ||
| 69 | { | ||
| 70 | __this_cpu_write(xen_in_preemptible_hcall, false); | ||
| 71 | } | ||
| 72 | |||
| 73 | #endif /* CONFIG_PREEMPT */ | ||
| 74 | |||
| 49 | #endif /* INCLUDE_XEN_OPS_H */ | 75 | #endif /* INCLUDE_XEN_OPS_H */ |
