diff options
Diffstat (limited to 'include')
108 files changed, 4420 insertions, 921 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/drm_mm.h b/include/drm/drm_mm.h index a24addfdfcec..0de6290df4da 100644 --- a/include/drm/drm_mm.h +++ b/include/drm/drm_mm.h | |||
@@ -68,8 +68,8 @@ struct drm_mm_node { | |||
68 | unsigned scanned_preceeds_hole : 1; | 68 | unsigned scanned_preceeds_hole : 1; |
69 | unsigned allocated : 1; | 69 | unsigned allocated : 1; |
70 | unsigned long color; | 70 | unsigned long color; |
71 | unsigned long start; | 71 | u64 start; |
72 | unsigned long size; | 72 | u64 size; |
73 | struct drm_mm *mm; | 73 | struct drm_mm *mm; |
74 | }; | 74 | }; |
75 | 75 | ||
@@ -82,16 +82,16 @@ struct drm_mm { | |||
82 | unsigned int scan_check_range : 1; | 82 | unsigned int scan_check_range : 1; |
83 | unsigned scan_alignment; | 83 | unsigned scan_alignment; |
84 | unsigned long scan_color; | 84 | unsigned long scan_color; |
85 | unsigned long scan_size; | 85 | u64 scan_size; |
86 | unsigned long scan_hit_start; | 86 | u64 scan_hit_start; |
87 | unsigned long scan_hit_end; | 87 | u64 scan_hit_end; |
88 | unsigned scanned_blocks; | 88 | unsigned scanned_blocks; |
89 | unsigned long scan_start; | 89 | u64 scan_start; |
90 | unsigned long scan_end; | 90 | u64 scan_end; |
91 | struct drm_mm_node *prev_scanned_node; | 91 | struct drm_mm_node *prev_scanned_node; |
92 | 92 | ||
93 | void (*color_adjust)(struct drm_mm_node *node, unsigned long color, | 93 | void (*color_adjust)(struct drm_mm_node *node, unsigned long color, |
94 | unsigned long *start, unsigned long *end); | 94 | u64 *start, u64 *end); |
95 | }; | 95 | }; |
96 | 96 | ||
97 | /** | 97 | /** |
@@ -124,7 +124,7 @@ static inline bool drm_mm_initialized(struct drm_mm *mm) | |||
124 | return mm->hole_stack.next; | 124 | return mm->hole_stack.next; |
125 | } | 125 | } |
126 | 126 | ||
127 | static inline unsigned long __drm_mm_hole_node_start(struct drm_mm_node *hole_node) | 127 | static inline u64 __drm_mm_hole_node_start(struct drm_mm_node *hole_node) |
128 | { | 128 | { |
129 | return hole_node->start + hole_node->size; | 129 | return hole_node->start + hole_node->size; |
130 | } | 130 | } |
@@ -140,13 +140,13 @@ static inline unsigned long __drm_mm_hole_node_start(struct drm_mm_node *hole_no | |||
140 | * Returns: | 140 | * Returns: |
141 | * Start of the subsequent hole. | 141 | * Start of the subsequent hole. |
142 | */ | 142 | */ |
143 | static inline unsigned long drm_mm_hole_node_start(struct drm_mm_node *hole_node) | 143 | static inline u64 drm_mm_hole_node_start(struct drm_mm_node *hole_node) |
144 | { | 144 | { |
145 | BUG_ON(!hole_node->hole_follows); | 145 | BUG_ON(!hole_node->hole_follows); |
146 | return __drm_mm_hole_node_start(hole_node); | 146 | return __drm_mm_hole_node_start(hole_node); |
147 | } | 147 | } |
148 | 148 | ||
149 | static inline unsigned long __drm_mm_hole_node_end(struct drm_mm_node *hole_node) | 149 | static inline u64 __drm_mm_hole_node_end(struct drm_mm_node *hole_node) |
150 | { | 150 | { |
151 | return list_entry(hole_node->node_list.next, | 151 | return list_entry(hole_node->node_list.next, |
152 | struct drm_mm_node, node_list)->start; | 152 | struct drm_mm_node, node_list)->start; |
@@ -163,7 +163,7 @@ static inline unsigned long __drm_mm_hole_node_end(struct drm_mm_node *hole_node | |||
163 | * Returns: | 163 | * Returns: |
164 | * End of the subsequent hole. | 164 | * End of the subsequent hole. |
165 | */ | 165 | */ |
166 | static inline unsigned long drm_mm_hole_node_end(struct drm_mm_node *hole_node) | 166 | static inline u64 drm_mm_hole_node_end(struct drm_mm_node *hole_node) |
167 | { | 167 | { |
168 | return __drm_mm_hole_node_end(hole_node); | 168 | return __drm_mm_hole_node_end(hole_node); |
169 | } | 169 | } |
@@ -222,7 +222,7 @@ int drm_mm_reserve_node(struct drm_mm *mm, struct drm_mm_node *node); | |||
222 | 222 | ||
223 | int drm_mm_insert_node_generic(struct drm_mm *mm, | 223 | int drm_mm_insert_node_generic(struct drm_mm *mm, |
224 | struct drm_mm_node *node, | 224 | struct drm_mm_node *node, |
225 | unsigned long size, | 225 | u64 size, |
226 | unsigned alignment, | 226 | unsigned alignment, |
227 | unsigned long color, | 227 | unsigned long color, |
228 | enum drm_mm_search_flags sflags, | 228 | enum drm_mm_search_flags sflags, |
@@ -245,7 +245,7 @@ int drm_mm_insert_node_generic(struct drm_mm *mm, | |||
245 | */ | 245 | */ |
246 | static inline int drm_mm_insert_node(struct drm_mm *mm, | 246 | static inline int drm_mm_insert_node(struct drm_mm *mm, |
247 | struct drm_mm_node *node, | 247 | struct drm_mm_node *node, |
248 | unsigned long size, | 248 | u64 size, |
249 | unsigned alignment, | 249 | unsigned alignment, |
250 | enum drm_mm_search_flags flags) | 250 | enum drm_mm_search_flags flags) |
251 | { | 251 | { |
@@ -255,11 +255,11 @@ static inline int drm_mm_insert_node(struct drm_mm *mm, | |||
255 | 255 | ||
256 | int drm_mm_insert_node_in_range_generic(struct drm_mm *mm, | 256 | int drm_mm_insert_node_in_range_generic(struct drm_mm *mm, |
257 | struct drm_mm_node *node, | 257 | struct drm_mm_node *node, |
258 | unsigned long size, | 258 | u64 size, |
259 | unsigned alignment, | 259 | unsigned alignment, |
260 | unsigned long color, | 260 | unsigned long color, |
261 | unsigned long start, | 261 | u64 start, |
262 | unsigned long end, | 262 | u64 end, |
263 | enum drm_mm_search_flags sflags, | 263 | enum drm_mm_search_flags sflags, |
264 | enum drm_mm_allocator_flags aflags); | 264 | enum drm_mm_allocator_flags aflags); |
265 | /** | 265 | /** |
@@ -282,10 +282,10 @@ int drm_mm_insert_node_in_range_generic(struct drm_mm *mm, | |||
282 | */ | 282 | */ |
283 | static inline int drm_mm_insert_node_in_range(struct drm_mm *mm, | 283 | static inline int drm_mm_insert_node_in_range(struct drm_mm *mm, |
284 | struct drm_mm_node *node, | 284 | struct drm_mm_node *node, |
285 | unsigned long size, | 285 | u64 size, |
286 | unsigned alignment, | 286 | unsigned alignment, |
287 | unsigned long start, | 287 | u64 start, |
288 | unsigned long end, | 288 | u64 end, |
289 | enum drm_mm_search_flags flags) | 289 | enum drm_mm_search_flags flags) |
290 | { | 290 | { |
291 | return drm_mm_insert_node_in_range_generic(mm, node, size, alignment, | 291 | return drm_mm_insert_node_in_range_generic(mm, node, size, alignment, |
@@ -296,21 +296,21 @@ static inline int drm_mm_insert_node_in_range(struct drm_mm *mm, | |||
296 | void drm_mm_remove_node(struct drm_mm_node *node); | 296 | void drm_mm_remove_node(struct drm_mm_node *node); |
297 | void drm_mm_replace_node(struct drm_mm_node *old, struct drm_mm_node *new); | 297 | void drm_mm_replace_node(struct drm_mm_node *old, struct drm_mm_node *new); |
298 | void drm_mm_init(struct drm_mm *mm, | 298 | void drm_mm_init(struct drm_mm *mm, |
299 | unsigned long start, | 299 | u64 start, |
300 | unsigned long size); | 300 | u64 size); |
301 | void drm_mm_takedown(struct drm_mm *mm); | 301 | void drm_mm_takedown(struct drm_mm *mm); |
302 | bool drm_mm_clean(struct drm_mm *mm); | 302 | bool drm_mm_clean(struct drm_mm *mm); |
303 | 303 | ||
304 | void drm_mm_init_scan(struct drm_mm *mm, | 304 | void drm_mm_init_scan(struct drm_mm *mm, |
305 | unsigned long size, | 305 | u64 size, |
306 | unsigned alignment, | 306 | unsigned alignment, |
307 | unsigned long color); | 307 | unsigned long color); |
308 | void drm_mm_init_scan_with_range(struct drm_mm *mm, | 308 | void drm_mm_init_scan_with_range(struct drm_mm *mm, |
309 | unsigned long size, | 309 | u64 size, |
310 | unsigned alignment, | 310 | unsigned alignment, |
311 | unsigned long color, | 311 | unsigned long color, |
312 | unsigned long start, | 312 | u64 start, |
313 | unsigned long end); | 313 | u64 end); |
314 | bool drm_mm_scan_add_block(struct drm_mm_node *node); | 314 | bool drm_mm_scan_add_block(struct drm_mm_node *node); |
315 | bool drm_mm_scan_remove_block(struct drm_mm_node *node); | 315 | bool drm_mm_scan_remove_block(struct drm_mm_node *node); |
316 | 316 | ||
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/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h index 0ccf7f267ff9..c768ddfbe53c 100644 --- a/include/drm/ttm/ttm_bo_api.h +++ b/include/drm/ttm/ttm_bo_api.h | |||
@@ -249,7 +249,7 @@ struct ttm_buffer_object { | |||
249 | * either of these locks held. | 249 | * either of these locks held. |
250 | */ | 250 | */ |
251 | 251 | ||
252 | unsigned long offset; | 252 | uint64_t offset; /* GPU address space is independent of CPU word size */ |
253 | uint32_t cur_placement; | 253 | uint32_t cur_placement; |
254 | 254 | ||
255 | struct sg_table *sg; | 255 | struct sg_table *sg; |
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h index 142d752fc450..813042cede57 100644 --- a/include/drm/ttm/ttm_bo_driver.h +++ b/include/drm/ttm/ttm_bo_driver.h | |||
@@ -277,7 +277,7 @@ struct ttm_mem_type_manager { | |||
277 | bool has_type; | 277 | bool has_type; |
278 | bool use_type; | 278 | bool use_type; |
279 | uint32_t flags; | 279 | uint32_t flags; |
280 | unsigned long gpu_offset; | 280 | uint64_t gpu_offset; /* GPU address space is independent of CPU word size */ |
281 | uint64_t size; | 281 | uint64_t size; |
282 | uint32_t available_caching; | 282 | uint32_t available_caching; |
283 | uint32_t default_caching; | 283 | uint32_t default_caching; |
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/dt-bindings/pinctrl/am33xx.h b/include/dt-bindings/pinctrl/am33xx.h index 2fbc804e1a45..226f77246a70 100644 --- a/include/dt-bindings/pinctrl/am33xx.h +++ b/include/dt-bindings/pinctrl/am33xx.h | |||
@@ -13,7 +13,8 @@ | |||
13 | 13 | ||
14 | #define PULL_DISABLE (1 << 3) | 14 | #define PULL_DISABLE (1 << 3) |
15 | #define INPUT_EN (1 << 5) | 15 | #define INPUT_EN (1 << 5) |
16 | #define SLEWCTRL_FAST (1 << 6) | 16 | #define SLEWCTRL_SLOW (1 << 6) |
17 | #define SLEWCTRL_FAST 0 | ||
17 | 18 | ||
18 | /* update macro depending on INPUT_EN and PULL_ENA */ | 19 | /* update macro depending on INPUT_EN and PULL_ENA */ |
19 | #undef PIN_OUTPUT | 20 | #undef PIN_OUTPUT |
diff --git a/include/dt-bindings/pinctrl/am43xx.h b/include/dt-bindings/pinctrl/am43xx.h index 9c2e4f82381e..5f4d01898c9c 100644 --- a/include/dt-bindings/pinctrl/am43xx.h +++ b/include/dt-bindings/pinctrl/am43xx.h | |||
@@ -18,7 +18,8 @@ | |||
18 | #define PULL_DISABLE (1 << 16) | 18 | #define PULL_DISABLE (1 << 16) |
19 | #define PULL_UP (1 << 17) | 19 | #define PULL_UP (1 << 17) |
20 | #define INPUT_EN (1 << 18) | 20 | #define INPUT_EN (1 << 18) |
21 | #define SLEWCTRL_FAST (1 << 19) | 21 | #define SLEWCTRL_SLOW (1 << 19) |
22 | #define SLEWCTRL_FAST 0 | ||
22 | #define DS0_PULL_UP_DOWN_EN (1 << 27) | 23 | #define DS0_PULL_UP_DOWN_EN (1 << 27) |
23 | 24 | ||
24 | #define PIN_OUTPUT (PULL_DISABLE) | 25 | #define PIN_OUTPUT (PULL_DISABLE) |
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/kvm/arm_vgic.h b/include/kvm/arm_vgic.h index 7c55dd5dd2c9..66203b268984 100644 --- a/include/kvm/arm_vgic.h +++ b/include/kvm/arm_vgic.h | |||
@@ -114,6 +114,7 @@ struct vgic_ops { | |||
114 | void (*sync_lr_elrsr)(struct kvm_vcpu *, int, struct vgic_lr); | 114 | void (*sync_lr_elrsr)(struct kvm_vcpu *, int, struct vgic_lr); |
115 | u64 (*get_elrsr)(const struct kvm_vcpu *vcpu); | 115 | u64 (*get_elrsr)(const struct kvm_vcpu *vcpu); |
116 | u64 (*get_eisr)(const struct kvm_vcpu *vcpu); | 116 | u64 (*get_eisr)(const struct kvm_vcpu *vcpu); |
117 | void (*clear_eisr)(struct kvm_vcpu *vcpu); | ||
117 | u32 (*get_interrupt_status)(const struct kvm_vcpu *vcpu); | 118 | u32 (*get_interrupt_status)(const struct kvm_vcpu *vcpu); |
118 | void (*enable_underflow)(struct kvm_vcpu *vcpu); | 119 | void (*enable_underflow)(struct kvm_vcpu *vcpu); |
119 | void (*disable_underflow)(struct kvm_vcpu *vcpu); | 120 | void (*disable_underflow)(struct kvm_vcpu *vcpu); |
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..68c16a6bedb3 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h | |||
@@ -125,6 +125,19 @@ int clk_set_phase(struct clk *clk, int degrees); | |||
125 | */ | 125 | */ |
126 | int clk_get_phase(struct clk *clk); | 126 | int clk_get_phase(struct clk *clk); |
127 | 127 | ||
128 | /** | ||
129 | * clk_is_match - check if two clk's point to the same hardware clock | ||
130 | * @p: clk compared against q | ||
131 | * @q: clk compared against p | ||
132 | * | ||
133 | * Returns true if the two struct clk pointers both point to the same hardware | ||
134 | * clock node. Put differently, returns true if struct clk *p and struct clk *q | ||
135 | * share the same struct clk_core object. | ||
136 | * | ||
137 | * Returns false otherwise. Note that two NULL clks are treated as matching. | ||
138 | */ | ||
139 | bool clk_is_match(const struct clk *p, const struct clk *q); | ||
140 | |||
128 | #else | 141 | #else |
129 | 142 | ||
130 | static inline long clk_get_accuracy(struct clk *clk) | 143 | static inline long clk_get_accuracy(struct clk *clk) |
@@ -142,6 +155,11 @@ static inline long clk_get_phase(struct clk *clk) | |||
142 | return -ENOTSUPP; | 155 | return -ENOTSUPP; |
143 | } | 156 | } |
144 | 157 | ||
158 | static inline bool clk_is_match(const struct clk *p, const struct clk *q) | ||
159 | { | ||
160 | return p == q; | ||
161 | } | ||
162 | |||
145 | #endif | 163 | #endif |
146 | 164 | ||
147 | /** | 165 | /** |
@@ -302,6 +320,46 @@ long clk_round_rate(struct clk *clk, unsigned long rate); | |||
302 | int clk_set_rate(struct clk *clk, unsigned long rate); | 320 | int clk_set_rate(struct clk *clk, unsigned long rate); |
303 | 321 | ||
304 | /** | 322 | /** |
323 | * clk_has_parent - check if a clock is a possible parent for another | ||
324 | * @clk: clock source | ||
325 | * @parent: parent clock source | ||
326 | * | ||
327 | * This function can be used in drivers that need to check that a clock can be | ||
328 | * the parent of another without actually changing the parent. | ||
329 | * | ||
330 | * Returns true if @parent is a possible parent for @clk, false otherwise. | ||
331 | */ | ||
332 | bool clk_has_parent(struct clk *clk, struct clk *parent); | ||
333 | |||
334 | /** | ||
335 | * clk_set_rate_range - set a rate range for a clock source | ||
336 | * @clk: clock source | ||
337 | * @min: desired minimum clock rate in Hz, inclusive | ||
338 | * @max: desired maximum clock rate in Hz, inclusive | ||
339 | * | ||
340 | * Returns success (0) or negative errno. | ||
341 | */ | ||
342 | int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max); | ||
343 | |||
344 | /** | ||
345 | * clk_set_min_rate - set a minimum clock rate for a clock source | ||
346 | * @clk: clock source | ||
347 | * @rate: desired minimum clock rate in Hz, inclusive | ||
348 | * | ||
349 | * Returns success (0) or negative errno. | ||
350 | */ | ||
351 | int clk_set_min_rate(struct clk *clk, unsigned long rate); | ||
352 | |||
353 | /** | ||
354 | * clk_set_max_rate - set a maximum clock rate for a clock source | ||
355 | * @clk: clock source | ||
356 | * @rate: desired maximum clock rate in Hz, inclusive | ||
357 | * | ||
358 | * Returns success (0) or negative errno. | ||
359 | */ | ||
360 | int clk_set_max_rate(struct clk *clk, unsigned long rate); | ||
361 | |||
362 | /** | ||
305 | * clk_set_parent - set the parent clock source for this clock | 363 | * clk_set_parent - set the parent clock source for this clock |
306 | * @clk: clock source | 364 | * @clk: clock source |
307 | * @parent: parent clock source | 365 | * @parent: parent clock source |
@@ -374,6 +432,11 @@ static inline long clk_round_rate(struct clk *clk, unsigned long rate) | |||
374 | return 0; | 432 | return 0; |
375 | } | 433 | } |
376 | 434 | ||
435 | static inline bool clk_has_parent(struct clk *clk, struct clk *parent) | ||
436 | { | ||
437 | return true; | ||
438 | } | ||
439 | |||
377 | static inline int clk_set_parent(struct clk *clk, struct clk *parent) | 440 | static inline int clk_set_parent(struct clk *clk, struct clk *parent) |
378 | { | 441 | { |
379 | return 0; | 442 | 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/cpuidle.h b/include/linux/cpuidle.h index f551a9299ac9..306178d7309f 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h | |||
@@ -126,6 +126,8 @@ struct cpuidle_driver { | |||
126 | 126 | ||
127 | #ifdef CONFIG_CPU_IDLE | 127 | #ifdef CONFIG_CPU_IDLE |
128 | extern void disable_cpuidle(void); | 128 | extern void disable_cpuidle(void); |
129 | extern bool cpuidle_not_available(struct cpuidle_driver *drv, | ||
130 | struct cpuidle_device *dev); | ||
129 | 131 | ||
130 | extern int cpuidle_select(struct cpuidle_driver *drv, | 132 | extern int cpuidle_select(struct cpuidle_driver *drv, |
131 | struct cpuidle_device *dev); | 133 | struct cpuidle_device *dev); |
@@ -150,11 +152,17 @@ extern void cpuidle_resume(void); | |||
150 | extern int cpuidle_enable_device(struct cpuidle_device *dev); | 152 | extern int cpuidle_enable_device(struct cpuidle_device *dev); |
151 | extern void cpuidle_disable_device(struct cpuidle_device *dev); | 153 | extern void cpuidle_disable_device(struct cpuidle_device *dev); |
152 | extern int cpuidle_play_dead(void); | 154 | extern int cpuidle_play_dead(void); |
153 | extern void cpuidle_enter_freeze(void); | 155 | extern int cpuidle_find_deepest_state(struct cpuidle_driver *drv, |
156 | struct cpuidle_device *dev); | ||
157 | extern int cpuidle_enter_freeze(struct cpuidle_driver *drv, | ||
158 | struct cpuidle_device *dev); | ||
154 | 159 | ||
155 | extern struct cpuidle_driver *cpuidle_get_cpu_driver(struct cpuidle_device *dev); | 160 | extern struct cpuidle_driver *cpuidle_get_cpu_driver(struct cpuidle_device *dev); |
156 | #else | 161 | #else |
157 | static inline void disable_cpuidle(void) { } | 162 | static inline void disable_cpuidle(void) { } |
163 | static inline bool cpuidle_not_available(struct cpuidle_driver *drv, | ||
164 | struct cpuidle_device *dev) | ||
165 | {return true; } | ||
158 | static inline int cpuidle_select(struct cpuidle_driver *drv, | 166 | static inline int cpuidle_select(struct cpuidle_driver *drv, |
159 | struct cpuidle_device *dev) | 167 | struct cpuidle_device *dev) |
160 | {return -ENODEV; } | 168 | {return -ENODEV; } |
@@ -183,7 +191,12 @@ static inline int cpuidle_enable_device(struct cpuidle_device *dev) | |||
183 | {return -ENODEV; } | 191 | {return -ENODEV; } |
184 | static inline void cpuidle_disable_device(struct cpuidle_device *dev) { } | 192 | static inline void cpuidle_disable_device(struct cpuidle_device *dev) { } |
185 | static inline int cpuidle_play_dead(void) {return -ENODEV; } | 193 | static inline int cpuidle_play_dead(void) {return -ENODEV; } |
186 | static inline void cpuidle_enter_freeze(void) { } | 194 | static inline int cpuidle_find_deepest_state(struct cpuidle_driver *drv, |
195 | struct cpuidle_device *dev) | ||
196 | {return -ENODEV; } | ||
197 | static inline int cpuidle_enter_freeze(struct cpuidle_driver *drv, | ||
198 | struct cpuidle_device *dev) | ||
199 | {return -ENODEV; } | ||
187 | static inline struct cpuidle_driver *cpuidle_get_cpu_driver( | 200 | static inline struct cpuidle_driver *cpuidle_get_cpu_driver( |
188 | struct cpuidle_device *dev) {return NULL; } | 201 | struct cpuidle_device *dev) {return NULL; } |
189 | #endif | 202 | #endif |
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/device-mapper.h b/include/linux/device-mapper.h index 2646aed1d3fe..fd23978d93fe 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h | |||
@@ -375,6 +375,7 @@ int dm_create(int minor, struct mapped_device **md); | |||
375 | */ | 375 | */ |
376 | struct mapped_device *dm_get_md(dev_t dev); | 376 | struct mapped_device *dm_get_md(dev_t dev); |
377 | void dm_get(struct mapped_device *md); | 377 | void dm_get(struct mapped_device *md); |
378 | int dm_hold(struct mapped_device *md); | ||
378 | void dm_put(struct mapped_device *md); | 379 | void dm_put(struct mapped_device *md); |
379 | 380 | ||
380 | /* | 381 | /* |
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 48c1472bde4a..dfbd88a7f769 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -990,9 +990,6 @@ struct file_lock_context { | |||
990 | struct list_head flc_flock; | 990 | struct list_head flc_flock; |
991 | struct list_head flc_posix; | 991 | struct list_head flc_posix; |
992 | struct list_head flc_lease; | 992 | struct list_head flc_lease; |
993 | int flc_flock_cnt; | ||
994 | int flc_posix_cnt; | ||
995 | int flc_lease_cnt; | ||
996 | }; | 993 | }; |
997 | 994 | ||
998 | /* The following constant reflects the upper bound of the file/locking space */ | 995 | /* The following constant reflects the upper bound of the file/locking space */ |
@@ -2169,7 +2166,7 @@ struct filename { | |||
2169 | const __user char *uptr; /* original userland pointer */ | 2166 | const __user char *uptr; /* original userland pointer */ |
2170 | struct audit_names *aname; | 2167 | struct audit_names *aname; |
2171 | int refcnt; | 2168 | int refcnt; |
2172 | bool separate; /* should "name" be freed? */ | 2169 | const char iname[]; |
2173 | }; | 2170 | }; |
2174 | 2171 | ||
2175 | extern long vfs_truncate(struct path *, loff_t); | 2172 | extern long vfs_truncate(struct path *, loff_t); |
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/interrupt.h b/include/linux/interrupt.h index d9b05b5bf8c7..2e88580194f0 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
@@ -52,11 +52,17 @@ | |||
52 | * IRQF_ONESHOT - Interrupt is not reenabled after the hardirq handler finished. | 52 | * IRQF_ONESHOT - Interrupt is not reenabled after the hardirq handler finished. |
53 | * Used by threaded interrupts which need to keep the | 53 | * Used by threaded interrupts which need to keep the |
54 | * irq line disabled until the threaded handler has been run. | 54 | * irq line disabled until the threaded handler has been run. |
55 | * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend | 55 | * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend. Does not guarantee |
56 | * that this interrupt will wake the system from a suspended | ||
57 | * state. See Documentation/power/suspend-and-interrupts.txt | ||
56 | * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set | 58 | * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set |
57 | * IRQF_NO_THREAD - Interrupt cannot be threaded | 59 | * IRQF_NO_THREAD - Interrupt cannot be threaded |
58 | * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device | 60 | * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device |
59 | * resume time. | 61 | * resume time. |
62 | * IRQF_COND_SUSPEND - If the IRQ is shared with a NO_SUSPEND user, execute this | ||
63 | * interrupt handler after suspending interrupts. For system | ||
64 | * wakeup devices users need to implement wakeup detection in | ||
65 | * their interrupt handlers. | ||
60 | */ | 66 | */ |
61 | #define IRQF_DISABLED 0x00000020 | 67 | #define IRQF_DISABLED 0x00000020 |
62 | #define IRQF_SHARED 0x00000080 | 68 | #define IRQF_SHARED 0x00000080 |
@@ -70,6 +76,7 @@ | |||
70 | #define IRQF_FORCE_RESUME 0x00008000 | 76 | #define IRQF_FORCE_RESUME 0x00008000 |
71 | #define IRQF_NO_THREAD 0x00010000 | 77 | #define IRQF_NO_THREAD 0x00010000 |
72 | #define IRQF_EARLY_RESUME 0x00020000 | 78 | #define IRQF_EARLY_RESUME 0x00020000 |
79 | #define IRQF_COND_SUSPEND 0x00040000 | ||
73 | 80 | ||
74 | #define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD) | 81 | #define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD) |
75 | 82 | ||
diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h index 800544bc7bfd..781974afff9f 100644 --- a/include/linux/irqchip/arm-gic-v3.h +++ b/include/linux/irqchip/arm-gic-v3.h | |||
@@ -166,6 +166,11 @@ | |||
166 | 166 | ||
167 | #define GITS_TRANSLATER 0x10040 | 167 | #define GITS_TRANSLATER 0x10040 |
168 | 168 | ||
169 | #define GITS_CTLR_ENABLE (1U << 0) | ||
170 | #define GITS_CTLR_QUIESCENT (1U << 31) | ||
171 | |||
172 | #define GITS_TYPER_DEVBITS_SHIFT 13 | ||
173 | #define GITS_TYPER_DEVBITS(r) ((((r) >> GITS_TYPER_DEVBITS_SHIFT) & 0x1f) + 1) | ||
169 | #define GITS_TYPER_PTA (1UL << 19) | 174 | #define GITS_TYPER_PTA (1UL << 19) |
170 | 175 | ||
171 | #define GITS_CBASER_VALID (1UL << 63) | 176 | #define GITS_CBASER_VALID (1UL << 63) |
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/irqdesc.h b/include/linux/irqdesc.h index faf433af425e..dd1109fb241e 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h | |||
@@ -78,6 +78,7 @@ struct irq_desc { | |||
78 | #ifdef CONFIG_PM_SLEEP | 78 | #ifdef CONFIG_PM_SLEEP |
79 | unsigned int nr_actions; | 79 | unsigned int nr_actions; |
80 | unsigned int no_suspend_depth; | 80 | unsigned int no_suspend_depth; |
81 | unsigned int cond_suspend_depth; | ||
81 | unsigned int force_resume_depth; | 82 | unsigned int force_resume_depth; |
82 | #endif | 83 | #endif |
83 | #ifdef CONFIG_PROC_FS | 84 | #ifdef CONFIG_PROC_FS |
diff --git a/include/linux/kasan.h b/include/linux/kasan.h index 72ba725ddf9c..5bb074431eb0 100644 --- a/include/linux/kasan.h +++ b/include/linux/kasan.h | |||
@@ -5,6 +5,7 @@ | |||
5 | 5 | ||
6 | struct kmem_cache; | 6 | struct kmem_cache; |
7 | struct page; | 7 | struct page; |
8 | struct vm_struct; | ||
8 | 9 | ||
9 | #ifdef CONFIG_KASAN | 10 | #ifdef CONFIG_KASAN |
10 | 11 | ||
@@ -49,15 +50,11 @@ void kasan_krealloc(const void *object, size_t new_size); | |||
49 | void kasan_slab_alloc(struct kmem_cache *s, void *object); | 50 | void kasan_slab_alloc(struct kmem_cache *s, void *object); |
50 | void kasan_slab_free(struct kmem_cache *s, void *object); | 51 | void kasan_slab_free(struct kmem_cache *s, void *object); |
51 | 52 | ||
52 | #define MODULE_ALIGN (PAGE_SIZE << KASAN_SHADOW_SCALE_SHIFT) | ||
53 | |||
54 | int kasan_module_alloc(void *addr, size_t size); | 53 | int kasan_module_alloc(void *addr, size_t size); |
55 | void kasan_module_free(void *addr); | 54 | void kasan_free_shadow(const struct vm_struct *vm); |
56 | 55 | ||
57 | #else /* CONFIG_KASAN */ | 56 | #else /* CONFIG_KASAN */ |
58 | 57 | ||
59 | #define MODULE_ALIGN 1 | ||
60 | |||
61 | static inline void kasan_unpoison_shadow(const void *address, size_t size) {} | 58 | static inline void kasan_unpoison_shadow(const void *address, size_t size) {} |
62 | 59 | ||
63 | static inline void kasan_enable_current(void) {} | 60 | static inline void kasan_enable_current(void) {} |
@@ -82,7 +79,7 @@ static inline void kasan_slab_alloc(struct kmem_cache *s, void *object) {} | |||
82 | static inline void kasan_slab_free(struct kmem_cache *s, void *object) {} | 79 | static inline void kasan_slab_free(struct kmem_cache *s, void *object) {} |
83 | 80 | ||
84 | static inline int kasan_module_alloc(void *addr, size_t size) { return 0; } | 81 | static inline int kasan_module_alloc(void *addr, size_t size) { return 0; } |
85 | static inline void kasan_module_free(void *addr) {} | 82 | static inline void kasan_free_shadow(const struct vm_struct *vm) {} |
86 | 83 | ||
87 | #endif /* CONFIG_KASAN */ | 84 | #endif /* CONFIG_KASAN */ |
88 | 85 | ||
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/module.h b/include/linux/module.h index 42999fe2dbd0..b03485bcb82a 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
@@ -344,6 +344,10 @@ struct module { | |||
344 | unsigned long *ftrace_callsites; | 344 | unsigned long *ftrace_callsites; |
345 | #endif | 345 | #endif |
346 | 346 | ||
347 | #ifdef CONFIG_LIVEPATCH | ||
348 | bool klp_alive; | ||
349 | #endif | ||
350 | |||
347 | #ifdef CONFIG_MODULE_UNLOAD | 351 | #ifdef CONFIG_MODULE_UNLOAD |
348 | /* What modules depend on me? */ | 352 | /* What modules depend on me? */ |
349 | struct list_head source_list; | 353 | struct list_head source_list; |
diff --git a/include/linux/moduleloader.h b/include/linux/moduleloader.h index f7556261fe3c..4d0cb9bba93e 100644 --- a/include/linux/moduleloader.h +++ b/include/linux/moduleloader.h | |||
@@ -84,4 +84,12 @@ void module_arch_cleanup(struct module *mod); | |||
84 | 84 | ||
85 | /* Any cleanup before freeing mod->module_init */ | 85 | /* Any cleanup before freeing mod->module_init */ |
86 | void module_arch_freeing_init(struct module *mod); | 86 | void module_arch_freeing_init(struct module *mod); |
87 | |||
88 | #ifdef CONFIG_KASAN | ||
89 | #include <linux/kasan.h> | ||
90 | #define MODULE_ALIGN (PAGE_SIZE << KASAN_SHADOW_SCALE_SHIFT) | ||
91 | #else | ||
92 | #define MODULE_ALIGN PAGE_SIZE | ||
93 | #endif | ||
94 | |||
87 | #endif | 95 | #endif |
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 5897b4ea5a3f..dcf6ec27739b 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -965,9 +965,12 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev, | |||
965 | * Used to add FDB entries to dump requests. Implementers should add | 965 | * Used to add FDB entries to dump requests. Implementers should add |
966 | * entries to skb and update idx with the number of entries. | 966 | * entries to skb and update idx with the number of entries. |
967 | * | 967 | * |
968 | * int (*ndo_bridge_setlink)(struct net_device *dev, struct nlmsghdr *nlh) | 968 | * int (*ndo_bridge_setlink)(struct net_device *dev, struct nlmsghdr *nlh, |
969 | * u16 flags) | ||
969 | * int (*ndo_bridge_getlink)(struct sk_buff *skb, u32 pid, u32 seq, | 970 | * int (*ndo_bridge_getlink)(struct sk_buff *skb, u32 pid, u32 seq, |
970 | * struct net_device *dev, u32 filter_mask) | 971 | * struct net_device *dev, u32 filter_mask) |
972 | * int (*ndo_bridge_dellink)(struct net_device *dev, struct nlmsghdr *nlh, | ||
973 | * u16 flags); | ||
971 | * | 974 | * |
972 | * int (*ndo_change_carrier)(struct net_device *dev, bool new_carrier); | 975 | * int (*ndo_change_carrier)(struct net_device *dev, bool new_carrier); |
973 | * Called to change device carrier. Soft-devices (like dummy, team, etc) | 976 | * Called to change device carrier. Soft-devices (like dummy, team, etc) |
@@ -2342,6 +2345,7 @@ struct gro_remcsum { | |||
2342 | 2345 | ||
2343 | static inline void skb_gro_remcsum_init(struct gro_remcsum *grc) | 2346 | static inline void skb_gro_remcsum_init(struct gro_remcsum *grc) |
2344 | { | 2347 | { |
2348 | grc->offset = 0; | ||
2345 | grc->delta = 0; | 2349 | grc->delta = 0; |
2346 | } | 2350 | } |
2347 | 2351 | ||
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 6d627b92df53..b01ccf371fdc 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 */ |
@@ -344,6 +343,7 @@ extern struct inode *nfs_fhget(struct super_block *, struct nfs_fh *, | |||
344 | extern int nfs_refresh_inode(struct inode *, struct nfs_fattr *); | 343 | extern int nfs_refresh_inode(struct inode *, struct nfs_fattr *); |
345 | extern int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr); | 344 | extern int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr); |
346 | extern int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr); | 345 | extern int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr); |
346 | extern int nfs_post_op_update_inode_force_wcc_locked(struct inode *inode, struct nfs_fattr *fattr); | ||
347 | extern int nfs_getattr(struct vfsmount *, struct dentry *, struct kstat *); | 347 | extern int nfs_getattr(struct vfsmount *, struct dentry *, struct kstat *); |
348 | extern void nfs_access_add_cache(struct inode *, struct nfs_access_entry *); | 348 | extern void nfs_access_add_cache(struct inode *, struct nfs_access_entry *); |
349 | extern void nfs_access_set_mask(struct nfs_access_entry *, u32); | 349 | extern void nfs_access_set_mask(struct nfs_access_entry *, u32); |
@@ -356,8 +356,9 @@ extern int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode); | |||
356 | extern int nfs_revalidate_inode_rcu(struct nfs_server *server, struct inode *inode); | 356 | extern int nfs_revalidate_inode_rcu(struct nfs_server *server, struct inode *inode); |
357 | extern int __nfs_revalidate_inode(struct nfs_server *, struct inode *); | 357 | extern int __nfs_revalidate_inode(struct nfs_server *, struct inode *); |
358 | extern int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping); | 358 | extern int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping); |
359 | extern int nfs_revalidate_mapping_protected(struct inode *inode, struct address_space *mapping); | ||
359 | extern int nfs_setattr(struct dentry *, struct iattr *); | 360 | extern int nfs_setattr(struct dentry *, struct iattr *); |
360 | extern void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr); | 361 | extern void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr, struct nfs_fattr *); |
361 | extern void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, | 362 | extern void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, |
362 | struct nfs4_label *label); | 363 | struct nfs4_label *label); |
363 | extern struct nfs_open_context *get_nfs_open_context(struct nfs_open_context *ctx); | 364 | extern struct nfs_open_context *get_nfs_open_context(struct nfs_open_context *ctx); |
@@ -370,6 +371,7 @@ extern struct nfs_lock_context *nfs_get_lock_context(struct nfs_open_context *ct | |||
370 | extern void nfs_put_lock_context(struct nfs_lock_context *l_ctx); | 371 | extern void nfs_put_lock_context(struct nfs_lock_context *l_ctx); |
371 | extern u64 nfs_compat_user_ino64(u64 fileid); | 372 | extern u64 nfs_compat_user_ino64(u64 fileid); |
372 | extern void nfs_fattr_init(struct nfs_fattr *fattr); | 373 | extern void nfs_fattr_init(struct nfs_fattr *fattr); |
374 | extern void nfs_fattr_set_barrier(struct nfs_fattr *fattr); | ||
373 | extern unsigned long nfs_inc_attr_generation_counter(void); | 375 | extern unsigned long nfs_inc_attr_generation_counter(void); |
374 | 376 | ||
375 | extern struct nfs_fattr *nfs_alloc_fattr(void); | 377 | extern struct nfs_fattr *nfs_alloc_fattr(void); |
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/of_platform.h b/include/linux/of_platform.h index 8a860f096c35..611a691145c4 100644 --- a/include/linux/of_platform.h +++ b/include/linux/of_platform.h | |||
@@ -84,7 +84,7 @@ static inline int of_platform_populate(struct device_node *root, | |||
84 | static inline void of_platform_depopulate(struct device *parent) { } | 84 | static inline void of_platform_depopulate(struct device *parent) { } |
85 | #endif | 85 | #endif |
86 | 86 | ||
87 | #ifdef CONFIG_OF_DYNAMIC | 87 | #if defined(CONFIG_OF_DYNAMIC) && defined(CONFIG_OF_ADDRESS) |
88 | extern void of_platform_register_reconfig_notifier(void); | 88 | extern void of_platform_register_reconfig_notifier(void); |
89 | #else | 89 | #else |
90 | static inline void of_platform_register_reconfig_notifier(void) { } | 90 | static inline void of_platform_register_reconfig_notifier(void) { } |
diff --git a/include/linux/pinctrl/consumer.h b/include/linux/pinctrl/consumer.h index 72c0415d6c21..18eccefea06e 100644 --- a/include/linux/pinctrl/consumer.h +++ b/include/linux/pinctrl/consumer.h | |||
@@ -82,7 +82,7 @@ static inline int pinctrl_gpio_direction_output(unsigned gpio) | |||
82 | 82 | ||
83 | static inline struct pinctrl * __must_check pinctrl_get(struct device *dev) | 83 | static inline struct pinctrl * __must_check pinctrl_get(struct device *dev) |
84 | { | 84 | { |
85 | return ERR_PTR(-ENOSYS); | 85 | return NULL; |
86 | } | 86 | } |
87 | 87 | ||
88 | static inline void pinctrl_put(struct pinctrl *p) | 88 | static inline void pinctrl_put(struct pinctrl *p) |
@@ -93,7 +93,7 @@ static inline struct pinctrl_state * __must_check pinctrl_lookup_state( | |||
93 | struct pinctrl *p, | 93 | struct pinctrl *p, |
94 | const char *name) | 94 | const char *name) |
95 | { | 95 | { |
96 | return ERR_PTR(-ENOSYS); | 96 | return NULL; |
97 | } | 97 | } |
98 | 98 | ||
99 | static inline int pinctrl_select_state(struct pinctrl *p, | 99 | static inline int pinctrl_select_state(struct pinctrl *p, |
@@ -104,7 +104,7 @@ static inline int pinctrl_select_state(struct pinctrl *p, | |||
104 | 104 | ||
105 | static inline struct pinctrl * __must_check devm_pinctrl_get(struct device *dev) | 105 | static inline struct pinctrl * __must_check devm_pinctrl_get(struct device *dev) |
106 | { | 106 | { |
107 | return ERR_PTR(-ENOSYS); | 107 | return NULL; |
108 | } | 108 | } |
109 | 109 | ||
110 | static inline void devm_pinctrl_put(struct pinctrl *p) | 110 | static inline void devm_pinctrl_put(struct pinctrl *p) |
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/security.h b/include/linux/security.h index a1b7dbd127ff..4e14e3d6309f 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
@@ -1556,7 +1556,7 @@ struct security_operations { | |||
1556 | int (*inode_follow_link) (struct dentry *dentry, struct nameidata *nd); | 1556 | int (*inode_follow_link) (struct dentry *dentry, struct nameidata *nd); |
1557 | int (*inode_permission) (struct inode *inode, int mask); | 1557 | int (*inode_permission) (struct inode *inode, int mask); |
1558 | int (*inode_setattr) (struct dentry *dentry, struct iattr *attr); | 1558 | int (*inode_setattr) (struct dentry *dentry, struct iattr *attr); |
1559 | int (*inode_getattr) (struct vfsmount *mnt, struct dentry *dentry); | 1559 | int (*inode_getattr) (const struct path *path); |
1560 | int (*inode_setxattr) (struct dentry *dentry, const char *name, | 1560 | int (*inode_setxattr) (struct dentry *dentry, const char *name, |
1561 | const void *value, size_t size, int flags); | 1561 | const void *value, size_t size, int flags); |
1562 | void (*inode_post_setxattr) (struct dentry *dentry, const char *name, | 1562 | void (*inode_post_setxattr) (struct dentry *dentry, const char *name, |
@@ -1843,7 +1843,7 @@ int security_inode_readlink(struct dentry *dentry); | |||
1843 | int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd); | 1843 | int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd); |
1844 | int security_inode_permission(struct inode *inode, int mask); | 1844 | int security_inode_permission(struct inode *inode, int mask); |
1845 | int security_inode_setattr(struct dentry *dentry, struct iattr *attr); | 1845 | int security_inode_setattr(struct dentry *dentry, struct iattr *attr); |
1846 | int security_inode_getattr(struct vfsmount *mnt, struct dentry *dentry); | 1846 | int security_inode_getattr(const struct path *path); |
1847 | int security_inode_setxattr(struct dentry *dentry, const char *name, | 1847 | int security_inode_setxattr(struct dentry *dentry, const char *name, |
1848 | const void *value, size_t size, int flags); | 1848 | const void *value, size_t size, int flags); |
1849 | void security_inode_post_setxattr(struct dentry *dentry, const char *name, | 1849 | void security_inode_post_setxattr(struct dentry *dentry, const char *name, |
@@ -2259,8 +2259,7 @@ static inline int security_inode_setattr(struct dentry *dentry, | |||
2259 | return 0; | 2259 | return 0; |
2260 | } | 2260 | } |
2261 | 2261 | ||
2262 | static inline int security_inode_getattr(struct vfsmount *mnt, | 2262 | static inline int security_inode_getattr(const struct path *path) |
2263 | struct dentry *dentry) | ||
2264 | { | 2263 | { |
2265 | return 0; | 2264 | return 0; |
2266 | } | 2265 | } |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index baf3e1d08416..d10965f0d8a4 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
@@ -143,13 +143,13 @@ struct uart_port { | |||
143 | unsigned char iotype; /* io access style */ | 143 | unsigned char iotype; /* io access style */ |
144 | unsigned char unused1; | 144 | unsigned char unused1; |
145 | 145 | ||
146 | #define UPIO_PORT (0) /* 8b I/O port access */ | 146 | #define UPIO_PORT (SERIAL_IO_PORT) /* 8b I/O port access */ |
147 | #define UPIO_HUB6 (1) /* Hub6 ISA card */ | 147 | #define UPIO_HUB6 (SERIAL_IO_HUB6) /* Hub6 ISA card */ |
148 | #define UPIO_MEM (2) /* 8b MMIO access */ | 148 | #define UPIO_MEM (SERIAL_IO_MEM) /* 8b MMIO access */ |
149 | #define UPIO_MEM32 (3) /* 32b little endian */ | 149 | #define UPIO_MEM32 (SERIAL_IO_MEM32) /* 32b little endian */ |
150 | #define UPIO_MEM32BE (4) /* 32b big endian */ | 150 | #define UPIO_AU (SERIAL_IO_AU) /* Au1x00 and RT288x type IO */ |
151 | #define UPIO_AU (5) /* Au1x00 and RT288x type IO */ | 151 | #define UPIO_TSI (SERIAL_IO_TSI) /* Tsi108/109 type IO */ |
152 | #define UPIO_TSI (6) /* Tsi108/109 type IO */ | 152 | #define UPIO_MEM32BE (SERIAL_IO_MEM32BE) /* 32b big endian */ |
153 | 153 | ||
154 | unsigned int read_status_mask; /* driver specific */ | 154 | unsigned int read_status_mask; /* driver specific */ |
155 | unsigned int ignore_status_mask; /* driver specific */ | 155 | unsigned int ignore_status_mask; /* driver specific */ |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 30007afe70b3..f54d6659713a 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -948,6 +948,13 @@ static inline void skb_copy_hash(struct sk_buff *to, const struct sk_buff *from) | |||
948 | to->l4_hash = from->l4_hash; | 948 | to->l4_hash = from->l4_hash; |
949 | }; | 949 | }; |
950 | 950 | ||
951 | static inline void skb_sender_cpu_clear(struct sk_buff *skb) | ||
952 | { | ||
953 | #ifdef CONFIG_XPS | ||
954 | skb->sender_cpu = 0; | ||
955 | #endif | ||
956 | } | ||
957 | |||
951 | #ifdef NET_SKBUFF_DATA_USES_OFFSET | 958 | #ifdef NET_SKBUFF_DATA_USES_OFFSET |
952 | static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) | 959 | static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) |
953 | { | 960 | { |
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index ed9489d893a4..856d34dde79b 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h | |||
@@ -649,7 +649,7 @@ struct spi_transfer { | |||
649 | * sequence completes. On some systems, many such sequences can execute as | 649 | * sequence completes. On some systems, many such sequences can execute as |
650 | * as single programmed DMA transfer. On all systems, these messages are | 650 | * as single programmed DMA transfer. On all systems, these messages are |
651 | * queued, and might complete after transactions to other devices. Messages | 651 | * queued, and might complete after transactions to other devices. Messages |
652 | * sent to a given spi_device are alway executed in FIFO order. | 652 | * sent to a given spi_device are always executed in FIFO order. |
653 | * | 653 | * |
654 | * The code that submits an spi_message (and its spi_transfers) | 654 | * The code that submits an spi_message (and its spi_transfers) |
655 | * to the lower layers is responsible for managing its memory. | 655 | * to the lower layers is responsible for managing its memory. |
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/uio.h b/include/linux/uio.h index 71880299ed48..a69ed25af07f 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h | |||
@@ -76,6 +76,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page, | |||
76 | struct iov_iter *i, unsigned long offset, size_t bytes); | 76 | struct iov_iter *i, unsigned long offset, size_t bytes); |
77 | void iov_iter_advance(struct iov_iter *i, size_t bytes); | 77 | void iov_iter_advance(struct iov_iter *i, size_t bytes); |
78 | int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes); | 78 | int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes); |
79 | int iov_iter_fault_in_multipages_readable(struct iov_iter *i, size_t bytes); | ||
79 | size_t iov_iter_single_seg_count(const struct iov_iter *i); | 80 | size_t iov_iter_single_seg_count(const struct iov_iter *i); |
80 | size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes, | 81 | size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes, |
81 | struct iov_iter *i); | 82 | struct iov_iter *i); |
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h index 9bb547c7bce7..704a1ab8240c 100644 --- a/include/linux/usb/serial.h +++ b/include/linux/usb/serial.h | |||
@@ -190,8 +190,7 @@ static inline void usb_set_serial_data(struct usb_serial *serial, void *data) | |||
190 | * @num_ports: the number of different ports this device will have. | 190 | * @num_ports: the number of different ports this device will have. |
191 | * @bulk_in_size: minimum number of bytes to allocate for bulk-in buffer | 191 | * @bulk_in_size: minimum number of bytes to allocate for bulk-in buffer |
192 | * (0 = end-point size) | 192 | * (0 = end-point size) |
193 | * @bulk_out_size: minimum number of bytes to allocate for bulk-out buffer | 193 | * @bulk_out_size: bytes to allocate for bulk-out buffer (0 = end-point size) |
194 | * (0 = end-point size) | ||
195 | * @calc_num_ports: pointer to a function to determine how many ports this | 194 | * @calc_num_ports: pointer to a function to determine how many ports this |
196 | * device has dynamically. It will be called after the probe() | 195 | * device has dynamically. It will be called after the probe() |
197 | * callback is called, but before attach() | 196 | * callback is called, but before attach() |
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/linux/vmalloc.h b/include/linux/vmalloc.h index 7d7acb35603d..0ec598381f97 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h | |||
@@ -17,6 +17,7 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */ | |||
17 | #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */ | 17 | #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */ |
18 | #define VM_UNINITIALIZED 0x00000020 /* vm_struct is not fully initialized */ | 18 | #define VM_UNINITIALIZED 0x00000020 /* vm_struct is not fully initialized */ |
19 | #define VM_NO_GUARD 0x00000040 /* don't add guard page */ | 19 | #define VM_NO_GUARD 0x00000040 /* don't add guard page */ |
20 | #define VM_KASAN 0x00000080 /* has allocated kasan shadow memory */ | ||
20 | /* bits [20..32] reserved for arch specific ioremap internals */ | 21 | /* bits [20..32] reserved for arch specific ioremap internals */ |
21 | 22 | ||
22 | /* | 23 | /* |
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 74db135f9957..f597846ff605 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h | |||
@@ -70,7 +70,8 @@ enum { | |||
70 | /* data contains off-queue information when !WORK_STRUCT_PWQ */ | 70 | /* data contains off-queue information when !WORK_STRUCT_PWQ */ |
71 | WORK_OFFQ_FLAG_BASE = WORK_STRUCT_COLOR_SHIFT, | 71 | WORK_OFFQ_FLAG_BASE = WORK_STRUCT_COLOR_SHIFT, |
72 | 72 | ||
73 | WORK_OFFQ_CANCELING = (1 << WORK_OFFQ_FLAG_BASE), | 73 | __WORK_OFFQ_CANCELING = WORK_OFFQ_FLAG_BASE, |
74 | WORK_OFFQ_CANCELING = (1 << __WORK_OFFQ_CANCELING), | ||
74 | 75 | ||
75 | /* | 76 | /* |
76 | * When a work item is off queue, its high bits point to the last | 77 | * When a work item is off queue, its high bits point to the last |
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/net/dst.h b/include/net/dst.h index a8ae4e760778..0fb99a26e973 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -481,6 +481,7 @@ void dst_init(void); | |||
481 | enum { | 481 | enum { |
482 | XFRM_LOOKUP_ICMP = 1 << 0, | 482 | XFRM_LOOKUP_ICMP = 1 << 0, |
483 | XFRM_LOOKUP_QUEUE = 1 << 1, | 483 | XFRM_LOOKUP_QUEUE = 1 << 1, |
484 | XFRM_LOOKUP_KEEP_DST_REF = 1 << 2, | ||
484 | }; | 485 | }; |
485 | 486 | ||
486 | struct flowi; | 487 | struct flowi; |
diff --git a/include/net/netfilter/nf_log.h b/include/net/netfilter/nf_log.h index 534e1f2ac4fc..57639fca223a 100644 --- a/include/net/netfilter/nf_log.h +++ b/include/net/netfilter/nf_log.h | |||
@@ -79,6 +79,16 @@ void nf_log_packet(struct net *net, | |||
79 | const struct nf_loginfo *li, | 79 | const struct nf_loginfo *li, |
80 | const char *fmt, ...); | 80 | const char *fmt, ...); |
81 | 81 | ||
82 | __printf(8, 9) | ||
83 | void nf_log_trace(struct net *net, | ||
84 | u_int8_t pf, | ||
85 | unsigned int hooknum, | ||
86 | const struct sk_buff *skb, | ||
87 | const struct net_device *in, | ||
88 | const struct net_device *out, | ||
89 | const struct nf_loginfo *li, | ||
90 | const char *fmt, ...); | ||
91 | |||
82 | struct nf_log_buf; | 92 | struct nf_log_buf; |
83 | 93 | ||
84 | struct nf_log_buf *nf_log_buf_open(void); | 94 | struct nf_log_buf *nf_log_buf_open(void); |
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 9eaaa7884586..decb9a095ae7 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h | |||
@@ -119,6 +119,22 @@ int nft_validate_data_load(const struct nft_ctx *ctx, enum nft_registers reg, | |||
119 | const struct nft_data *data, | 119 | const struct nft_data *data, |
120 | enum nft_data_types type); | 120 | enum nft_data_types type); |
121 | 121 | ||
122 | |||
123 | /** | ||
124 | * struct nft_userdata - user defined data associated with an object | ||
125 | * | ||
126 | * @len: length of the data | ||
127 | * @data: content | ||
128 | * | ||
129 | * The presence of user data is indicated in an object specific fashion, | ||
130 | * so a length of zero can't occur and the value "len" indicates data | ||
131 | * of length len + 1. | ||
132 | */ | ||
133 | struct nft_userdata { | ||
134 | u8 len; | ||
135 | unsigned char data[0]; | ||
136 | }; | ||
137 | |||
122 | /** | 138 | /** |
123 | * struct nft_set_elem - generic representation of set elements | 139 | * struct nft_set_elem - generic representation of set elements |
124 | * | 140 | * |
@@ -380,7 +396,7 @@ static inline void *nft_expr_priv(const struct nft_expr *expr) | |||
380 | * @handle: rule handle | 396 | * @handle: rule handle |
381 | * @genmask: generation mask | 397 | * @genmask: generation mask |
382 | * @dlen: length of expression data | 398 | * @dlen: length of expression data |
383 | * @ulen: length of user data (used for comments) | 399 | * @udata: user data is appended to the rule |
384 | * @data: expression data | 400 | * @data: expression data |
385 | */ | 401 | */ |
386 | struct nft_rule { | 402 | struct nft_rule { |
@@ -388,7 +404,7 @@ struct nft_rule { | |||
388 | u64 handle:42, | 404 | u64 handle:42, |
389 | genmask:2, | 405 | genmask:2, |
390 | dlen:12, | 406 | dlen:12, |
391 | ulen:8; | 407 | udata:1; |
392 | unsigned char data[] | 408 | unsigned char data[] |
393 | __attribute__((aligned(__alignof__(struct nft_expr)))); | 409 | __attribute__((aligned(__alignof__(struct nft_expr)))); |
394 | }; | 410 | }; |
@@ -476,7 +492,7 @@ static inline struct nft_expr *nft_expr_last(const struct nft_rule *rule) | |||
476 | return (struct nft_expr *)&rule->data[rule->dlen]; | 492 | return (struct nft_expr *)&rule->data[rule->dlen]; |
477 | } | 493 | } |
478 | 494 | ||
479 | static inline void *nft_userdata(const struct nft_rule *rule) | 495 | static inline struct nft_userdata *nft_userdata(const struct nft_rule *rule) |
480 | { | 496 | { |
481 | return (void *)&rule->data[rule->dlen]; | 497 | return (void *)&rule->data[rule->dlen]; |
482 | } | 498 | } |
diff --git a/include/net/vxlan.h b/include/net/vxlan.h index eabd3a038674..c73e7abbbaa5 100644 --- a/include/net/vxlan.h +++ b/include/net/vxlan.h | |||
@@ -91,6 +91,7 @@ struct vxlanhdr { | |||
91 | 91 | ||
92 | #define VXLAN_N_VID (1u << 24) | 92 | #define VXLAN_N_VID (1u << 24) |
93 | #define VXLAN_VID_MASK (VXLAN_N_VID - 1) | 93 | #define VXLAN_VID_MASK (VXLAN_N_VID - 1) |
94 | #define VXLAN_VNI_MASK (VXLAN_VID_MASK << 8) | ||
94 | #define VXLAN_HLEN (sizeof(struct udphdr) + sizeof(struct vxlanhdr)) | 95 | #define VXLAN_HLEN (sizeof(struct udphdr) + sizeof(struct vxlanhdr)) |
95 | 96 | ||
96 | struct vxlan_metadata { | 97 | struct vxlan_metadata { |
diff --git a/include/soc/at91/at91sam9_ddrsdr.h b/include/soc/at91/at91sam9_ddrsdr.h index 0210797abf2e..dc10c52e0e91 100644 --- a/include/soc/at91/at91sam9_ddrsdr.h +++ b/include/soc/at91/at91sam9_ddrsdr.h | |||
@@ -92,7 +92,7 @@ | |||
92 | #define AT91_DDRSDRC_UPD_MR (3 << 20) /* Update load mode register and extended mode register */ | 92 | #define AT91_DDRSDRC_UPD_MR (3 << 20) /* Update load mode register and extended mode register */ |
93 | 93 | ||
94 | #define AT91_DDRSDRC_MDR 0x20 /* Memory Device Register */ | 94 | #define AT91_DDRSDRC_MDR 0x20 /* Memory Device Register */ |
95 | #define AT91_DDRSDRC_MD (3 << 0) /* Memory Device Type */ | 95 | #define AT91_DDRSDRC_MD (7 << 0) /* Memory Device Type */ |
96 | #define AT91_DDRSDRC_MD_SDR 0 | 96 | #define AT91_DDRSDRC_MD_SDR 0 |
97 | #define AT91_DDRSDRC_MD_LOW_POWER_SDR 1 | 97 | #define AT91_DDRSDRC_MD_LOW_POWER_SDR 1 |
98 | #define AT91_DDRSDRC_MD_LOW_POWER_DDR 3 | 98 | #define AT91_DDRSDRC_MD_LOW_POWER_DDR 3 |
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_backend.h b/include/target/target_core_backend.h index db81c65b8f48..d61be7297b2c 100644 --- a/include/target/target_core_backend.h +++ b/include/target/target_core_backend.h | |||
@@ -111,6 +111,7 @@ void array_free(void *array, int n); | |||
111 | void target_core_setup_sub_cits(struct se_subsystem_api *); | 111 | void target_core_setup_sub_cits(struct se_subsystem_api *); |
112 | 112 | ||
113 | /* attribute helpers from target_core_device.c for backend drivers */ | 113 | /* attribute helpers from target_core_device.c for backend drivers */ |
114 | bool se_dev_check_wce(struct se_device *); | ||
114 | int se_dev_set_max_unmap_lba_count(struct se_device *, u32); | 115 | int se_dev_set_max_unmap_lba_count(struct se_device *, u32); |
115 | int se_dev_set_max_unmap_block_desc_count(struct se_device *, u32); | 116 | int se_dev_set_max_unmap_block_desc_count(struct se_device *, u32); |
116 | int se_dev_set_unmap_granularity(struct se_device *, u32); | 117 | int se_dev_set_unmap_granularity(struct se_device *, u32); |
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/serial.h b/include/uapi/linux/serial.h index 5e0d0ed61cf3..25331f9faa76 100644 --- a/include/uapi/linux/serial.h +++ b/include/uapi/linux/serial.h | |||
@@ -65,6 +65,10 @@ struct serial_struct { | |||
65 | #define SERIAL_IO_PORT 0 | 65 | #define SERIAL_IO_PORT 0 |
66 | #define SERIAL_IO_HUB6 1 | 66 | #define SERIAL_IO_HUB6 1 |
67 | #define SERIAL_IO_MEM 2 | 67 | #define SERIAL_IO_MEM 2 |
68 | #define SERIAL_IO_MEM32 3 | ||
69 | #define SERIAL_IO_AU 4 | ||
70 | #define SERIAL_IO_TSI 5 | ||
71 | #define SERIAL_IO_MEM32BE 6 | ||
68 | 72 | ||
69 | #define UART_CLEAR_FIFO 0x01 | 73 | #define UART_CLEAR_FIFO 0x01 |
70 | #define UART_USE_FIFO 0x02 | 74 | #define UART_USE_FIFO 0x02 |
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..19c66fcbab8a 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 | ||
@@ -57,7 +60,7 @@ struct virtio_blk_config { | |||
57 | __u32 size_max; | 60 | __u32 size_max; |
58 | /* The maximum number of segments (if VIRTIO_BLK_F_SEG_MAX) */ | 61 | /* The maximum number of segments (if VIRTIO_BLK_F_SEG_MAX) */ |
59 | __u32 seg_max; | 62 | __u32 seg_max; |
60 | /* geometry the device (if VIRTIO_BLK_F_GEOMETRY) */ | 63 | /* geometry of the device (if VIRTIO_BLK_F_GEOMETRY) */ |
61 | struct virtio_blk_geometry { | 64 | struct virtio_blk_geometry { |
62 | __u16 cylinders; | 65 | __u16 cylinders; |
63 | __u8 heads; | 66 | __u8 heads; |
@@ -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,10 +114,16 @@ 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 | /* |
123 | * This comes first in the read scatter-gather list. | ||
124 | * For legacy virtio, if VIRTIO_F_ANY_LAYOUT is not negotiated, | ||
125 | * this is the first element of the read scatter-gather list. | ||
126 | */ | ||
116 | struct virtio_blk_outhdr { | 127 | struct virtio_blk_outhdr { |
117 | /* VIRTIO_BLK_T* */ | 128 | /* VIRTIO_BLK_T* */ |
118 | __virtio32 type; | 129 | __virtio32 type; |
@@ -122,12 +133,14 @@ struct virtio_blk_outhdr { | |||
122 | __virtio64 sector; | 133 | __virtio64 sector; |
123 | }; | 134 | }; |
124 | 135 | ||
136 | #ifndef VIRTIO_BLK_NO_LEGACY | ||
125 | struct virtio_scsi_inhdr { | 137 | struct virtio_scsi_inhdr { |
126 | __virtio32 errors; | 138 | __virtio32 errors; |
127 | __virtio32 data_len; | 139 | __virtio32 data_len; |
128 | __virtio32 sense_len; | 140 | __virtio32 sense_len; |
129 | __virtio32 residual; | 141 | __virtio32 residual; |
130 | }; | 142 | }; |
143 | #endif /* !VIRTIO_BLK_NO_LEGACY */ | ||
131 | 144 | ||
132 | /* And this is the final byte of the write scatter-gather list. */ | 145 | /* And this is the final byte of the write scatter-gather list. */ |
133 | #define VIRTIO_BLK_S_OK 0 | 146 | #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/linux/virtio_scsi.h b/include/uapi/linux/virtio_scsi.h index 42b9370771b0..cc18ef8825c0 100644 --- a/include/uapi/linux/virtio_scsi.h +++ b/include/uapi/linux/virtio_scsi.h | |||
@@ -29,8 +29,16 @@ | |||
29 | 29 | ||
30 | #include <linux/virtio_types.h> | 30 | #include <linux/virtio_types.h> |
31 | 31 | ||
32 | #define VIRTIO_SCSI_CDB_SIZE 32 | 32 | /* Default values of the CDB and sense data size configuration fields */ |
33 | #define VIRTIO_SCSI_SENSE_SIZE 96 | 33 | #define VIRTIO_SCSI_CDB_DEFAULT_SIZE 32 |
34 | #define VIRTIO_SCSI_SENSE_DEFAULT_SIZE 96 | ||
35 | |||
36 | #ifndef VIRTIO_SCSI_CDB_SIZE | ||
37 | #define VIRTIO_SCSI_CDB_SIZE VIRTIO_SCSI_CDB_DEFAULT_SIZE | ||
38 | #endif | ||
39 | #ifndef VIRTIO_SCSI_SENSE_SIZE | ||
40 | #define VIRTIO_SCSI_SENSE_SIZE VIRTIO_SCSI_SENSE_DEFAULT_SIZE | ||
41 | #endif | ||
34 | 42 | ||
35 | /* SCSI command request, followed by data-out */ | 43 | /* SCSI command request, followed by data-out */ |
36 | struct virtio_scsi_cmd_req { | 44 | struct virtio_scsi_cmd_req { |
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/video/omapdss.h b/include/video/omapdss.h index 60de61fea8e3..c8ed15daad02 100644 --- a/include/video/omapdss.h +++ b/include/video/omapdss.h | |||
@@ -689,6 +689,7 @@ struct omapdss_dsi_ops { | |||
689 | }; | 689 | }; |
690 | 690 | ||
691 | struct omap_dss_device { | 691 | struct omap_dss_device { |
692 | struct kobject kobj; | ||
692 | struct device *dev; | 693 | struct device *dev; |
693 | 694 | ||
694 | struct module *owner; | 695 | struct module *owner; |
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 */ |
diff --git a/include/xen/xenbus.h b/include/xen/xenbus.h index b78f21caf55a..b0f1c9e5d687 100644 --- a/include/xen/xenbus.h +++ b/include/xen/xenbus.h | |||
@@ -114,9 +114,9 @@ int __must_check __xenbus_register_backend(struct xenbus_driver *drv, | |||
114 | const char *mod_name); | 114 | const char *mod_name); |
115 | 115 | ||
116 | #define xenbus_register_frontend(drv) \ | 116 | #define xenbus_register_frontend(drv) \ |
117 | __xenbus_register_frontend(drv, THIS_MODULE, KBUILD_MODNAME); | 117 | __xenbus_register_frontend(drv, THIS_MODULE, KBUILD_MODNAME) |
118 | #define xenbus_register_backend(drv) \ | 118 | #define xenbus_register_backend(drv) \ |
119 | __xenbus_register_backend(drv, THIS_MODULE, KBUILD_MODNAME); | 119 | __xenbus_register_backend(drv, THIS_MODULE, KBUILD_MODNAME) |
120 | 120 | ||
121 | void xenbus_unregister_driver(struct xenbus_driver *drv); | 121 | void xenbus_unregister_driver(struct xenbus_driver *drv); |
122 | 122 | ||