diff options
Diffstat (limited to 'include')
28 files changed, 301 insertions, 137 deletions
diff --git a/include/acpi/acnames.h b/include/acpi/acnames.h index c728113374f5..f97804bdf1ff 100644 --- a/include/acpi/acnames.h +++ b/include/acpi/acnames.h | |||
@@ -59,6 +59,10 @@ | |||
59 | #define METHOD_NAME__PRS "_PRS" | 59 | #define METHOD_NAME__PRS "_PRS" |
60 | #define METHOD_NAME__PRT "_PRT" | 60 | #define METHOD_NAME__PRT "_PRT" |
61 | #define METHOD_NAME__PRW "_PRW" | 61 | #define METHOD_NAME__PRW "_PRW" |
62 | #define METHOD_NAME__PS0 "_PS0" | ||
63 | #define METHOD_NAME__PS1 "_PS1" | ||
64 | #define METHOD_NAME__PS2 "_PS2" | ||
65 | #define METHOD_NAME__PS3 "_PS3" | ||
62 | #define METHOD_NAME__REG "_REG" | 66 | #define METHOD_NAME__REG "_REG" |
63 | #define METHOD_NAME__SB_ "_SB_" | 67 | #define METHOD_NAME__SB_ "_SB_" |
64 | #define METHOD_NAME__SEG "_SEG" | 68 | #define METHOD_NAME__SEG "_SEG" |
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h index b7c89d47efbe..9fc1d71c82bc 100644 --- a/include/acpi/acpixf.h +++ b/include/acpi/acpixf.h | |||
@@ -46,7 +46,7 @@ | |||
46 | 46 | ||
47 | /* Current ACPICA subsystem version in YYYYMMDD format */ | 47 | /* Current ACPICA subsystem version in YYYYMMDD format */ |
48 | 48 | ||
49 | #define ACPI_CA_VERSION 0x20140724 | 49 | #define ACPI_CA_VERSION 0x20140828 |
50 | 50 | ||
51 | #include <acpi/acconfig.h> | 51 | #include <acpi/acconfig.h> |
52 | #include <acpi/actypes.h> | 52 | #include <acpi/actypes.h> |
@@ -692,6 +692,7 @@ ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status | |||
692 | *event_status)) | 692 | *event_status)) |
693 | ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable_all_gpes(void)) | 693 | ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable_all_gpes(void)) |
694 | ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_runtime_gpes(void)) | 694 | ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_runtime_gpes(void)) |
695 | ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_wakeup_gpes(void)) | ||
695 | 696 | ||
696 | ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status | 697 | ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status |
697 | acpi_get_gpe_device(u32 gpe_index, | 698 | acpi_get_gpe_device(u32 gpe_index, |
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index 7626bfeac2cb..29e79370641d 100644 --- a/include/acpi/actbl1.h +++ b/include/acpi/actbl1.h | |||
@@ -952,7 +952,8 @@ enum acpi_srat_type { | |||
952 | ACPI_SRAT_TYPE_CPU_AFFINITY = 0, | 952 | ACPI_SRAT_TYPE_CPU_AFFINITY = 0, |
953 | ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, | 953 | ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, |
954 | ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, | 954 | ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, |
955 | ACPI_SRAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ | 955 | ACPI_SRAT_TYPE_GICC_AFFINITY = 3, |
956 | ACPI_SRAT_TYPE_RESERVED = 4 /* 4 and greater are reserved */ | ||
956 | }; | 957 | }; |
957 | 958 | ||
958 | /* | 959 | /* |
@@ -968,7 +969,7 @@ struct acpi_srat_cpu_affinity { | |||
968 | u32 flags; | 969 | u32 flags; |
969 | u8 local_sapic_eid; | 970 | u8 local_sapic_eid; |
970 | u8 proximity_domain_hi[3]; | 971 | u8 proximity_domain_hi[3]; |
971 | u32 reserved; /* Reserved, must be zero */ | 972 | u32 clock_domain; |
972 | }; | 973 | }; |
973 | 974 | ||
974 | /* Flags */ | 975 | /* Flags */ |
@@ -1010,6 +1011,20 @@ struct acpi_srat_x2apic_cpu_affinity { | |||
1010 | 1011 | ||
1011 | #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ | 1012 | #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ |
1012 | 1013 | ||
1014 | /* 3: GICC Affinity (ACPI 5.1) */ | ||
1015 | |||
1016 | struct acpi_srat_gicc_affinity { | ||
1017 | struct acpi_subtable_header header; | ||
1018 | u32 proximity_domain; | ||
1019 | u32 acpi_processor_uid; | ||
1020 | u32 flags; | ||
1021 | u32 clock_domain; | ||
1022 | }; | ||
1023 | |||
1024 | /* Flags for struct acpi_srat_gicc_affinity */ | ||
1025 | |||
1026 | #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */ | ||
1027 | |||
1013 | /* Reset to default packing */ | 1028 | /* Reset to default packing */ |
1014 | 1029 | ||
1015 | #pragma pack() | 1030 | #pragma pack() |
diff --git a/include/acpi/actbl3.h b/include/acpi/actbl3.h index 787bcc814463..5480cb2236bf 100644 --- a/include/acpi/actbl3.h +++ b/include/acpi/actbl3.h | |||
@@ -310,10 +310,15 @@ struct acpi_gtdt_timer_entry { | |||
310 | u32 common_flags; | 310 | u32 common_flags; |
311 | }; | 311 | }; |
312 | 312 | ||
313 | /* Flag Definitions: timer_flags and virtual_timer_flags above */ | ||
314 | |||
315 | #define ACPI_GTDT_GT_IRQ_MODE (1) | ||
316 | #define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) | ||
317 | |||
313 | /* Flag Definitions: common_flags above */ | 318 | /* Flag Definitions: common_flags above */ |
314 | 319 | ||
315 | #define ACPI_GTDT_GT_IS_SECURE_TIMER (1) | 320 | #define ACPI_GTDT_GT_IS_SECURE_TIMER (1) |
316 | #define ACPI_GTDT_GT_ALWAYS_ON (1<<1) | 321 | #define ACPI_GTDT_GT_ALWAYS_ON (1<<1) |
317 | 322 | ||
318 | /* 1: SBSA Generic Watchdog Structure */ | 323 | /* 1: SBSA Generic Watchdog Structure */ |
319 | 324 | ||
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h index c1d4105e1c1d..383ade1a211b 100644 --- a/include/asm-generic/gpio.h +++ b/include/asm-generic/gpio.h | |||
@@ -27,7 +27,7 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #ifndef ARCH_NR_GPIOS | 29 | #ifndef ARCH_NR_GPIOS |
30 | #define ARCH_NR_GPIOS 256 | 30 | #define ARCH_NR_GPIOS 512 |
31 | #endif | 31 | #endif |
32 | 32 | ||
33 | /* | 33 | /* |
diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index 975e1cc75edb..b8fdc57a7335 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h | |||
@@ -331,7 +331,7 @@ static inline void iounmap(void __iomem *addr) | |||
331 | #ifndef CONFIG_GENERIC_IOMAP | 331 | #ifndef CONFIG_GENERIC_IOMAP |
332 | static inline void __iomem *ioport_map(unsigned long port, unsigned int nr) | 332 | static inline void __iomem *ioport_map(unsigned long port, unsigned int nr) |
333 | { | 333 | { |
334 | return (void __iomem *) port; | 334 | return PCI_IOBASE + (port & IO_SPACE_LIMIT); |
335 | } | 335 | } |
336 | 336 | ||
337 | static inline void ioport_unmap(void __iomem *p) | 337 | static inline void ioport_unmap(void __iomem *p) |
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index 281870f56450..081ff8826bf6 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h | |||
@@ -249,6 +249,10 @@ static inline int pmd_same(pmd_t pmd_a, pmd_t pmd_b) | |||
249 | #define pgprot_writecombine pgprot_noncached | 249 | #define pgprot_writecombine pgprot_noncached |
250 | #endif | 250 | #endif |
251 | 251 | ||
252 | #ifndef pgprot_device | ||
253 | #define pgprot_device pgprot_noncached | ||
254 | #endif | ||
255 | |||
252 | /* | 256 | /* |
253 | * When walking page tables, get the address of the next boundary, | 257 | * When walking page tables, get the address of the next boundary, |
254 | * or the end address of the range if that comes earlier. Although no | 258 | * or the end address of the range if that comes earlier. Although no |
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 807cbc46d73e..b7926bb9b444 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h | |||
@@ -587,7 +587,6 @@ static inline int acpi_subsys_freeze(struct device *dev) { return 0; } | |||
587 | #if defined(CONFIG_ACPI) && defined(CONFIG_PM) | 587 | #if defined(CONFIG_ACPI) && defined(CONFIG_PM) |
588 | struct acpi_device *acpi_dev_pm_get_node(struct device *dev); | 588 | struct acpi_device *acpi_dev_pm_get_node(struct device *dev); |
589 | int acpi_dev_pm_attach(struct device *dev, bool power_on); | 589 | int acpi_dev_pm_attach(struct device *dev, bool power_on); |
590 | void acpi_dev_pm_detach(struct device *dev, bool power_off); | ||
591 | #else | 590 | #else |
592 | static inline struct acpi_device *acpi_dev_pm_get_node(struct device *dev) | 591 | static inline struct acpi_device *acpi_dev_pm_get_node(struct device *dev) |
593 | { | 592 | { |
@@ -597,7 +596,6 @@ static inline int acpi_dev_pm_attach(struct device *dev, bool power_on) | |||
597 | { | 596 | { |
598 | return -ENODEV; | 597 | return -ENODEV; |
599 | } | 598 | } |
600 | static inline void acpi_dev_pm_detach(struct device *dev, bool power_off) {} | ||
601 | #endif | 599 | #endif |
602 | 600 | ||
603 | #ifdef CONFIG_ACPI | 601 | #ifdef CONFIG_ACPI |
diff --git a/include/linux/aer.h b/include/linux/aer.h index c826d1c28f9c..4fef65e57023 100644 --- a/include/linux/aer.h +++ b/include/linux/aer.h | |||
@@ -7,6 +7,8 @@ | |||
7 | #ifndef _AER_H_ | 7 | #ifndef _AER_H_ |
8 | #define _AER_H_ | 8 | #define _AER_H_ |
9 | 9 | ||
10 | #include <linux/types.h> | ||
11 | |||
10 | #define AER_NONFATAL 0 | 12 | #define AER_NONFATAL 0 |
11 | #define AER_FATAL 1 | 13 | #define AER_FATAL 1 |
12 | #define AER_CORRECTABLE 2 | 14 | #define AER_CORRECTABLE 2 |
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 7d1955afa62c..138336b6bb04 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h | |||
@@ -112,6 +112,9 @@ struct cpufreq_policy { | |||
112 | spinlock_t transition_lock; | 112 | spinlock_t transition_lock; |
113 | wait_queue_head_t transition_wait; | 113 | wait_queue_head_t transition_wait; |
114 | struct task_struct *transition_task; /* Task which is doing the transition */ | 114 | struct task_struct *transition_task; /* Task which is doing the transition */ |
115 | |||
116 | /* For cpufreq driver's internal use */ | ||
117 | void *driver_data; | ||
115 | }; | 118 | }; |
116 | 119 | ||
117 | /* Only for ACPI */ | 120 | /* Only for ACPI */ |
diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h index c5e41da20112..249db3057e4d 100644 --- a/include/linux/gpio/driver.h +++ b/include/linux/gpio/driver.h | |||
@@ -56,6 +56,8 @@ struct seq_file; | |||
56 | * as the chip access may sleep when e.g. reading out the IRQ status | 56 | * as the chip access may sleep when e.g. reading out the IRQ status |
57 | * registers. | 57 | * registers. |
58 | * @exported: flags if the gpiochip is exported for use from sysfs. Private. | 58 | * @exported: flags if the gpiochip is exported for use from sysfs. Private. |
59 | * @irq_not_threaded: flag must be set if @can_sleep is set but the | ||
60 | * IRQs don't need to be threaded | ||
59 | * | 61 | * |
60 | * A gpio_chip can help platforms abstract various sources of GPIOs so | 62 | * A gpio_chip can help platforms abstract various sources of GPIOs so |
61 | * they can all be accessed through a common programing interface. | 63 | * they can all be accessed through a common programing interface. |
@@ -101,6 +103,7 @@ struct gpio_chip { | |||
101 | struct gpio_desc *desc; | 103 | struct gpio_desc *desc; |
102 | const char *const *names; | 104 | const char *const *names; |
103 | bool can_sleep; | 105 | bool can_sleep; |
106 | bool irq_not_threaded; | ||
104 | bool exported; | 107 | bool exported; |
105 | 108 | ||
106 | #ifdef CONFIG_GPIOLIB_IRQCHIP | 109 | #ifdef CONFIG_GPIOLIB_IRQCHIP |
@@ -141,7 +144,7 @@ extern const char *gpiochip_is_requested(struct gpio_chip *chip, | |||
141 | 144 | ||
142 | /* add/remove chips */ | 145 | /* add/remove chips */ |
143 | extern int gpiochip_add(struct gpio_chip *chip); | 146 | extern int gpiochip_add(struct gpio_chip *chip); |
144 | extern int gpiochip_remove(struct gpio_chip *chip); | 147 | extern void gpiochip_remove(struct gpio_chip *chip); |
145 | extern struct gpio_chip *gpiochip_find(void *data, | 148 | extern struct gpio_chip *gpiochip_find(void *data, |
146 | int (*match)(struct gpio_chip *chip, void *data)); | 149 | int (*match)(struct gpio_chip *chip, void *data)); |
147 | 150 | ||
@@ -166,7 +169,8 @@ int gpiochip_irqchip_add(struct gpio_chip *gpiochip, | |||
166 | 169 | ||
167 | #endif /* CONFIG_GPIOLIB_IRQCHIP */ | 170 | #endif /* CONFIG_GPIOLIB_IRQCHIP */ |
168 | 171 | ||
169 | int gpiochip_request_own_desc(struct gpio_desc *desc, const char *label); | 172 | struct gpio_desc *gpiochip_request_own_desc(struct gpio_chip *chip, u16 hwnum, |
173 | const char *label); | ||
170 | void gpiochip_free_own_desc(struct gpio_desc *desc); | 174 | void gpiochip_free_own_desc(struct gpio_desc *desc); |
171 | 175 | ||
172 | #else /* CONFIG_GPIOLIB */ | 176 | #else /* CONFIG_GPIOLIB */ |
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 698ad053d064..69517a24bc50 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
@@ -193,11 +193,6 @@ extern void irq_wake_thread(unsigned int irq, void *dev_id); | |||
193 | /* The following three functions are for the core kernel use only. */ | 193 | /* The following three functions are for the core kernel use only. */ |
194 | extern void suspend_device_irqs(void); | 194 | extern void suspend_device_irqs(void); |
195 | extern void resume_device_irqs(void); | 195 | extern void resume_device_irqs(void); |
196 | #ifdef CONFIG_PM_SLEEP | ||
197 | extern int check_wakeup_irqs(void); | ||
198 | #else | ||
199 | static inline int check_wakeup_irqs(void) { return 0; } | ||
200 | #endif | ||
201 | 196 | ||
202 | /** | 197 | /** |
203 | * struct irq_affinity_notify - context for notification of IRQ affinity changes | 198 | * struct irq_affinity_notify - context for notification of IRQ affinity changes |
diff --git a/include/linux/ioport.h b/include/linux/ioport.h index 142ec544167c..2c5250222278 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h | |||
@@ -215,6 +215,11 @@ static inline int __deprecated check_region(resource_size_t s, | |||
215 | 215 | ||
216 | /* Wrappers for managed devices */ | 216 | /* Wrappers for managed devices */ |
217 | struct device; | 217 | struct device; |
218 | |||
219 | extern int devm_request_resource(struct device *dev, struct resource *root, | ||
220 | struct resource *new); | ||
221 | extern void devm_release_resource(struct device *dev, struct resource *new); | ||
222 | |||
218 | #define devm_request_region(dev,start,n,name) \ | 223 | #define devm_request_region(dev,start,n,name) \ |
219 | __devm_request_region(dev, &ioport_resource, (start), (n), (name)) | 224 | __devm_request_region(dev, &ioport_resource, (start), (n), (name)) |
220 | #define devm_request_mem_region(dev,start,n,name) \ | 225 | #define devm_request_mem_region(dev,start,n,name) \ |
diff --git a/include/linux/irq.h b/include/linux/irq.h index 62af59242ddc..03f48d936f66 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -173,6 +173,7 @@ struct irq_data { | |||
173 | * IRQD_IRQ_DISABLED - Disabled state of the interrupt | 173 | * IRQD_IRQ_DISABLED - Disabled state of the interrupt |
174 | * IRQD_IRQ_MASKED - Masked state of the interrupt | 174 | * IRQD_IRQ_MASKED - Masked state of the interrupt |
175 | * IRQD_IRQ_INPROGRESS - In progress state of the interrupt | 175 | * IRQD_IRQ_INPROGRESS - In progress state of the interrupt |
176 | * IRQD_WAKEUP_ARMED - Wakeup mode armed | ||
176 | */ | 177 | */ |
177 | enum { | 178 | enum { |
178 | IRQD_TRIGGER_MASK = 0xf, | 179 | IRQD_TRIGGER_MASK = 0xf, |
@@ -186,6 +187,7 @@ enum { | |||
186 | IRQD_IRQ_DISABLED = (1 << 16), | 187 | IRQD_IRQ_DISABLED = (1 << 16), |
187 | IRQD_IRQ_MASKED = (1 << 17), | 188 | IRQD_IRQ_MASKED = (1 << 17), |
188 | IRQD_IRQ_INPROGRESS = (1 << 18), | 189 | IRQD_IRQ_INPROGRESS = (1 << 18), |
190 | IRQD_WAKEUP_ARMED = (1 << 19), | ||
189 | }; | 191 | }; |
190 | 192 | ||
191 | static inline bool irqd_is_setaffinity_pending(struct irq_data *d) | 193 | static inline bool irqd_is_setaffinity_pending(struct irq_data *d) |
@@ -257,6 +259,12 @@ static inline bool irqd_irq_inprogress(struct irq_data *d) | |||
257 | return d->state_use_accessors & IRQD_IRQ_INPROGRESS; | 259 | return d->state_use_accessors & IRQD_IRQ_INPROGRESS; |
258 | } | 260 | } |
259 | 261 | ||
262 | static inline bool irqd_is_wakeup_armed(struct irq_data *d) | ||
263 | { | ||
264 | return d->state_use_accessors & IRQD_WAKEUP_ARMED; | ||
265 | } | ||
266 | |||
267 | |||
260 | /* | 268 | /* |
261 | * Functions for chained handlers which can be enabled/disabled by the | 269 | * Functions for chained handlers which can be enabled/disabled by the |
262 | * standard disable_irq/enable_irq calls. Must be called with | 270 | * standard disable_irq/enable_irq calls. Must be called with |
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h index ff24667cd86c..faf433af425e 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h | |||
@@ -38,6 +38,11 @@ struct pt_regs; | |||
38 | * @threads_oneshot: bitfield to handle shared oneshot threads | 38 | * @threads_oneshot: bitfield to handle shared oneshot threads |
39 | * @threads_active: number of irqaction threads currently running | 39 | * @threads_active: number of irqaction threads currently running |
40 | * @wait_for_threads: wait queue for sync_irq to wait for threaded handlers | 40 | * @wait_for_threads: wait queue for sync_irq to wait for threaded handlers |
41 | * @nr_actions: number of installed actions on this descriptor | ||
42 | * @no_suspend_depth: number of irqactions on a irq descriptor with | ||
43 | * IRQF_NO_SUSPEND set | ||
44 | * @force_resume_depth: number of irqactions on a irq descriptor with | ||
45 | * IRQF_FORCE_RESUME set | ||
41 | * @dir: /proc/irq/ procfs entry | 46 | * @dir: /proc/irq/ procfs entry |
42 | * @name: flow handler name for /proc/interrupts output | 47 | * @name: flow handler name for /proc/interrupts output |
43 | */ | 48 | */ |
@@ -70,6 +75,11 @@ struct irq_desc { | |||
70 | unsigned long threads_oneshot; | 75 | unsigned long threads_oneshot; |
71 | atomic_t threads_active; | 76 | atomic_t threads_active; |
72 | wait_queue_head_t wait_for_threads; | 77 | wait_queue_head_t wait_for_threads; |
78 | #ifdef CONFIG_PM_SLEEP | ||
79 | unsigned int nr_actions; | ||
80 | unsigned int no_suspend_depth; | ||
81 | unsigned int force_resume_depth; | ||
82 | #endif | ||
73 | #ifdef CONFIG_PROC_FS | 83 | #ifdef CONFIG_PROC_FS |
74 | struct proc_dir_entry *dir; | 84 | struct proc_dir_entry *dir; |
75 | #endif | 85 | #endif |
diff --git a/include/linux/msi.h b/include/linux/msi.h index 8103f32f6d87..44f4746d033b 100644 --- a/include/linux/msi.h +++ b/include/linux/msi.h | |||
@@ -29,7 +29,6 @@ struct msi_desc { | |||
29 | __u8 multi_cap : 3; /* log2 num of messages supported */ | 29 | __u8 multi_cap : 3; /* log2 num of messages supported */ |
30 | __u8 maskbit : 1; /* mask-pending bit supported ? */ | 30 | __u8 maskbit : 1; /* mask-pending bit supported ? */ |
31 | __u8 is_64 : 1; /* Address size: 0=32bit 1=64bit */ | 31 | __u8 is_64 : 1; /* Address size: 0=32bit 1=64bit */ |
32 | __u8 pos; /* Location of the msi capability */ | ||
33 | __u16 entry_nr; /* specific enabled entry */ | 32 | __u16 entry_nr; /* specific enabled entry */ |
34 | unsigned default_irq; /* default pre-assigned irq */ | 33 | unsigned default_irq; /* default pre-assigned irq */ |
35 | } msi_attrib; | 34 | } msi_attrib; |
@@ -47,8 +46,6 @@ struct msi_desc { | |||
47 | 46 | ||
48 | /* Last set MSI message */ | 47 | /* Last set MSI message */ |
49 | struct msi_msg msg; | 48 | struct msi_msg msg; |
50 | |||
51 | struct kobject kobj; | ||
52 | }; | 49 | }; |
53 | 50 | ||
54 | /* | 51 | /* |
@@ -60,7 +57,6 @@ int arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc); | |||
60 | void arch_teardown_msi_irq(unsigned int irq); | 57 | void arch_teardown_msi_irq(unsigned int irq); |
61 | int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); | 58 | int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); |
62 | void arch_teardown_msi_irqs(struct pci_dev *dev); | 59 | void arch_teardown_msi_irqs(struct pci_dev *dev); |
63 | int arch_msi_check_device(struct pci_dev* dev, int nvec, int type); | ||
64 | void arch_restore_msi_irqs(struct pci_dev *dev); | 60 | void arch_restore_msi_irqs(struct pci_dev *dev); |
65 | 61 | ||
66 | void default_teardown_msi_irqs(struct pci_dev *dev); | 62 | void default_teardown_msi_irqs(struct pci_dev *dev); |
@@ -77,8 +73,6 @@ struct msi_chip { | |||
77 | int (*setup_irq)(struct msi_chip *chip, struct pci_dev *dev, | 73 | int (*setup_irq)(struct msi_chip *chip, struct pci_dev *dev, |
78 | struct msi_desc *desc); | 74 | struct msi_desc *desc); |
79 | void (*teardown_irq)(struct msi_chip *chip, unsigned int irq); | 75 | void (*teardown_irq)(struct msi_chip *chip, unsigned int irq); |
80 | int (*check_device)(struct msi_chip *chip, struct pci_dev *dev, | ||
81 | int nvec, int type); | ||
82 | }; | 76 | }; |
83 | 77 | ||
84 | #endif /* LINUX_MSI_H */ | 78 | #endif /* LINUX_MSI_H */ |
diff --git a/include/linux/of_address.h b/include/linux/of_address.h index fb7b7221e063..8cb14eb393d6 100644 --- a/include/linux/of_address.h +++ b/include/linux/of_address.h | |||
@@ -23,17 +23,6 @@ struct of_pci_range { | |||
23 | #define for_each_of_pci_range(parser, range) \ | 23 | #define for_each_of_pci_range(parser, range) \ |
24 | for (; of_pci_range_parser_one(parser, range);) | 24 | for (; of_pci_range_parser_one(parser, range);) |
25 | 25 | ||
26 | static inline void of_pci_range_to_resource(struct of_pci_range *range, | ||
27 | struct device_node *np, | ||
28 | struct resource *res) | ||
29 | { | ||
30 | res->flags = range->flags; | ||
31 | res->start = range->cpu_addr; | ||
32 | res->end = range->cpu_addr + range->size - 1; | ||
33 | res->parent = res->child = res->sibling = NULL; | ||
34 | res->name = np->full_name; | ||
35 | } | ||
36 | |||
37 | /* Translate a DMA address from device space to CPU space */ | 26 | /* Translate a DMA address from device space to CPU space */ |
38 | extern u64 of_translate_dma_address(struct device_node *dev, | 27 | extern u64 of_translate_dma_address(struct device_node *dev, |
39 | const __be32 *in_addr); | 28 | const __be32 *in_addr); |
@@ -55,7 +44,9 @@ extern void __iomem *of_iomap(struct device_node *device, int index); | |||
55 | extern const __be32 *of_get_address(struct device_node *dev, int index, | 44 | extern const __be32 *of_get_address(struct device_node *dev, int index, |
56 | u64 *size, unsigned int *flags); | 45 | u64 *size, unsigned int *flags); |
57 | 46 | ||
47 | extern int pci_register_io_range(phys_addr_t addr, resource_size_t size); | ||
58 | extern unsigned long pci_address_to_pio(phys_addr_t addr); | 48 | extern unsigned long pci_address_to_pio(phys_addr_t addr); |
49 | extern phys_addr_t pci_pio_to_address(unsigned long pio); | ||
59 | 50 | ||
60 | extern int of_pci_range_parser_init(struct of_pci_range_parser *parser, | 51 | extern int of_pci_range_parser_init(struct of_pci_range_parser *parser, |
61 | struct device_node *node); | 52 | struct device_node *node); |
@@ -80,6 +71,11 @@ static inline const __be32 *of_get_address(struct device_node *dev, int index, | |||
80 | return NULL; | 71 | return NULL; |
81 | } | 72 | } |
82 | 73 | ||
74 | static inline phys_addr_t pci_pio_to_address(unsigned long pio) | ||
75 | { | ||
76 | return 0; | ||
77 | } | ||
78 | |||
83 | static inline int of_pci_range_parser_init(struct of_pci_range_parser *parser, | 79 | static inline int of_pci_range_parser_init(struct of_pci_range_parser *parser, |
84 | struct device_node *node) | 80 | struct device_node *node) |
85 | { | 81 | { |
@@ -138,6 +134,9 @@ extern const __be32 *of_get_pci_address(struct device_node *dev, int bar_no, | |||
138 | u64 *size, unsigned int *flags); | 134 | u64 *size, unsigned int *flags); |
139 | extern int of_pci_address_to_resource(struct device_node *dev, int bar, | 135 | extern int of_pci_address_to_resource(struct device_node *dev, int bar, |
140 | struct resource *r); | 136 | struct resource *r); |
137 | extern int of_pci_range_to_resource(struct of_pci_range *range, | ||
138 | struct device_node *np, | ||
139 | struct resource *res); | ||
141 | #else /* CONFIG_OF_ADDRESS && CONFIG_PCI */ | 140 | #else /* CONFIG_OF_ADDRESS && CONFIG_PCI */ |
142 | static inline int of_pci_address_to_resource(struct device_node *dev, int bar, | 141 | static inline int of_pci_address_to_resource(struct device_node *dev, int bar, |
143 | struct resource *r) | 142 | struct resource *r) |
@@ -150,6 +149,12 @@ static inline const __be32 *of_get_pci_address(struct device_node *dev, | |||
150 | { | 149 | { |
151 | return NULL; | 150 | return NULL; |
152 | } | 151 | } |
152 | static inline int of_pci_range_to_resource(struct of_pci_range *range, | ||
153 | struct device_node *np, | ||
154 | struct resource *res) | ||
155 | { | ||
156 | return -ENOSYS; | ||
157 | } | ||
153 | #endif /* CONFIG_OF_ADDRESS && CONFIG_PCI */ | 158 | #endif /* CONFIG_OF_ADDRESS && CONFIG_PCI */ |
154 | 159 | ||
155 | #endif /* __OF_ADDRESS_H */ | 160 | #endif /* __OF_ADDRESS_H */ |
diff --git a/include/linux/of_pci.h b/include/linux/of_pci.h index dde3a4a0fa5d..1fd207e7a847 100644 --- a/include/linux/of_pci.h +++ b/include/linux/of_pci.h | |||
@@ -15,6 +15,7 @@ struct device_node *of_pci_find_child_device(struct device_node *parent, | |||
15 | int of_pci_get_devfn(struct device_node *np); | 15 | int of_pci_get_devfn(struct device_node *np); |
16 | int of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin); | 16 | int of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin); |
17 | int of_pci_parse_bus_range(struct device_node *node, struct resource *res); | 17 | int of_pci_parse_bus_range(struct device_node *node, struct resource *res); |
18 | int of_get_pci_domain_nr(struct device_node *node); | ||
18 | #else | 19 | #else |
19 | static inline int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq) | 20 | static inline int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq) |
20 | { | 21 | { |
@@ -43,6 +44,18 @@ of_pci_parse_bus_range(struct device_node *node, struct resource *res) | |||
43 | { | 44 | { |
44 | return -EINVAL; | 45 | return -EINVAL; |
45 | } | 46 | } |
47 | |||
48 | static inline int | ||
49 | of_get_pci_domain_nr(struct device_node *node) | ||
50 | { | ||
51 | return -1; | ||
52 | } | ||
53 | #endif | ||
54 | |||
55 | #if defined(CONFIG_OF_ADDRESS) | ||
56 | int of_pci_get_host_bridge_resources(struct device_node *dev, | ||
57 | unsigned char busno, unsigned char bus_max, | ||
58 | struct list_head *resources, resource_size_t *io_base); | ||
46 | #endif | 59 | #endif |
47 | 60 | ||
48 | #if defined(CONFIG_OF) && defined(CONFIG_PCI_MSI) | 61 | #if defined(CONFIG_OF) && defined(CONFIG_PCI_MSI) |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 96453f9bc8ba..5be8db45e368 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -45,7 +45,7 @@ | |||
45 | * In the interest of not exposing interfaces to user-space unnecessarily, | 45 | * In the interest of not exposing interfaces to user-space unnecessarily, |
46 | * the following kernel-only defines are being added here. | 46 | * the following kernel-only defines are being added here. |
47 | */ | 47 | */ |
48 | #define PCI_DEVID(bus, devfn) ((((u16)bus) << 8) | devfn) | 48 | #define PCI_DEVID(bus, devfn) ((((u16)(bus)) << 8) | (devfn)) |
49 | /* return bus from PCI devid = ((u16)bus_number) << 8) | devfn */ | 49 | /* return bus from PCI devid = ((u16)bus_number) << 8) | devfn */ |
50 | #define PCI_BUS_NUM(x) (((x) >> 8) & 0xff) | 50 | #define PCI_BUS_NUM(x) (((x) >> 8) & 0xff) |
51 | 51 | ||
@@ -457,6 +457,9 @@ struct pci_bus { | |||
457 | unsigned char primary; /* number of primary bridge */ | 457 | unsigned char primary; /* number of primary bridge */ |
458 | unsigned char max_bus_speed; /* enum pci_bus_speed */ | 458 | unsigned char max_bus_speed; /* enum pci_bus_speed */ |
459 | unsigned char cur_bus_speed; /* enum pci_bus_speed */ | 459 | unsigned char cur_bus_speed; /* enum pci_bus_speed */ |
460 | #ifdef CONFIG_PCI_DOMAINS_GENERIC | ||
461 | int domain_nr; | ||
462 | #endif | ||
460 | 463 | ||
461 | char name[48]; | 464 | char name[48]; |
462 | 465 | ||
@@ -1103,6 +1106,9 @@ int __must_check pci_bus_alloc_resource(struct pci_bus *bus, | |||
1103 | resource_size_t), | 1106 | resource_size_t), |
1104 | void *alignf_data); | 1107 | void *alignf_data); |
1105 | 1108 | ||
1109 | |||
1110 | int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr); | ||
1111 | |||
1106 | static inline dma_addr_t pci_bus_address(struct pci_dev *pdev, int bar) | 1112 | static inline dma_addr_t pci_bus_address(struct pci_dev *pdev, int bar) |
1107 | { | 1113 | { |
1108 | struct pci_bus_region region; | 1114 | struct pci_bus_region region; |
@@ -1288,12 +1294,32 @@ void pci_cfg_access_unlock(struct pci_dev *dev); | |||
1288 | */ | 1294 | */ |
1289 | #ifdef CONFIG_PCI_DOMAINS | 1295 | #ifdef CONFIG_PCI_DOMAINS |
1290 | extern int pci_domains_supported; | 1296 | extern int pci_domains_supported; |
1297 | int pci_get_new_domain_nr(void); | ||
1291 | #else | 1298 | #else |
1292 | enum { pci_domains_supported = 0 }; | 1299 | enum { pci_domains_supported = 0 }; |
1293 | static inline int pci_domain_nr(struct pci_bus *bus) { return 0; } | 1300 | static inline int pci_domain_nr(struct pci_bus *bus) { return 0; } |
1294 | static inline int pci_proc_domain(struct pci_bus *bus) { return 0; } | 1301 | static inline int pci_proc_domain(struct pci_bus *bus) { return 0; } |
1302 | static inline int pci_get_new_domain_nr(void) { return -ENOSYS; } | ||
1295 | #endif /* CONFIG_PCI_DOMAINS */ | 1303 | #endif /* CONFIG_PCI_DOMAINS */ |
1296 | 1304 | ||
1305 | /* | ||
1306 | * Generic implementation for PCI domain support. If your | ||
1307 | * architecture does not need custom management of PCI | ||
1308 | * domains then this implementation will be used | ||
1309 | */ | ||
1310 | #ifdef CONFIG_PCI_DOMAINS_GENERIC | ||
1311 | static inline int pci_domain_nr(struct pci_bus *bus) | ||
1312 | { | ||
1313 | return bus->domain_nr; | ||
1314 | } | ||
1315 | void pci_bus_assign_domain_nr(struct pci_bus *bus, struct device *parent); | ||
1316 | #else | ||
1317 | static inline void pci_bus_assign_domain_nr(struct pci_bus *bus, | ||
1318 | struct device *parent) | ||
1319 | { | ||
1320 | } | ||
1321 | #endif | ||
1322 | |||
1297 | /* some architectures require additional setup to direct VGA traffic */ | 1323 | /* some architectures require additional setup to direct VGA traffic */ |
1298 | typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode, | 1324 | typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode, |
1299 | unsigned int command_bits, u32 flags); | 1325 | unsigned int command_bits, u32 flags); |
@@ -1402,6 +1428,7 @@ static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus, | |||
1402 | 1428 | ||
1403 | static inline int pci_domain_nr(struct pci_bus *bus) { return 0; } | 1429 | static inline int pci_domain_nr(struct pci_bus *bus) { return 0; } |
1404 | static inline struct pci_dev *pci_dev_get(struct pci_dev *dev) { return NULL; } | 1430 | static inline struct pci_dev *pci_dev_get(struct pci_dev *dev) { return NULL; } |
1431 | static inline int pci_get_new_domain_nr(void) { return -ENOSYS; } | ||
1405 | 1432 | ||
1406 | #define dev_is_pci(d) (false) | 1433 | #define dev_is_pci(d) (false) |
1407 | #define dev_is_pf(d) (false) | 1434 | #define dev_is_pf(d) (false) |
@@ -1563,16 +1590,11 @@ enum pci_fixup_pass { | |||
1563 | 1590 | ||
1564 | #ifdef CONFIG_PCI_QUIRKS | 1591 | #ifdef CONFIG_PCI_QUIRKS |
1565 | void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev); | 1592 | void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev); |
1566 | struct pci_dev *pci_get_dma_source(struct pci_dev *dev); | ||
1567 | int pci_dev_specific_acs_enabled(struct pci_dev *dev, u16 acs_flags); | 1593 | int pci_dev_specific_acs_enabled(struct pci_dev *dev, u16 acs_flags); |
1568 | void pci_dev_specific_enable_acs(struct pci_dev *dev); | 1594 | void pci_dev_specific_enable_acs(struct pci_dev *dev); |
1569 | #else | 1595 | #else |
1570 | static inline void pci_fixup_device(enum pci_fixup_pass pass, | 1596 | static inline void pci_fixup_device(enum pci_fixup_pass pass, |
1571 | struct pci_dev *dev) { } | 1597 | struct pci_dev *dev) { } |
1572 | static inline struct pci_dev *pci_get_dma_source(struct pci_dev *dev) | ||
1573 | { | ||
1574 | return pci_dev_get(dev); | ||
1575 | } | ||
1576 | static inline int pci_dev_specific_acs_enabled(struct pci_dev *dev, | 1598 | static inline int pci_dev_specific_acs_enabled(struct pci_dev *dev, |
1577 | u16 acs_flags) | 1599 | u16 acs_flags) |
1578 | { | 1600 | { |
@@ -1707,7 +1729,7 @@ bool pci_acs_path_enabled(struct pci_dev *start, | |||
1707 | struct pci_dev *end, u16 acs_flags); | 1729 | struct pci_dev *end, u16 acs_flags); |
1708 | 1730 | ||
1709 | #define PCI_VPD_LRDT 0x80 /* Large Resource Data Type */ | 1731 | #define PCI_VPD_LRDT 0x80 /* Large Resource Data Type */ |
1710 | #define PCI_VPD_LRDT_ID(x) (x | PCI_VPD_LRDT) | 1732 | #define PCI_VPD_LRDT_ID(x) ((x) | PCI_VPD_LRDT) |
1711 | 1733 | ||
1712 | /* Large Resource Data Type Tag Item Names */ | 1734 | /* Large Resource Data Type Tag Item Names */ |
1713 | #define PCI_VPD_LTIN_ID_STRING 0x02 /* Identifier String */ | 1735 | #define PCI_VPD_LTIN_ID_STRING 0x02 /* Identifier String */ |
@@ -1834,15 +1856,17 @@ int pci_for_each_dma_alias(struct pci_dev *pdev, | |||
1834 | int (*fn)(struct pci_dev *pdev, | 1856 | int (*fn)(struct pci_dev *pdev, |
1835 | u16 alias, void *data), void *data); | 1857 | u16 alias, void *data), void *data); |
1836 | 1858 | ||
1837 | /** | 1859 | /* helper functions for operation of device flag */ |
1838 | * pci_find_upstream_pcie_bridge - find upstream PCIe-to-PCI bridge of a device | 1860 | static inline void pci_set_dev_assigned(struct pci_dev *pdev) |
1839 | * @pdev: the PCI device | 1861 | { |
1840 | * | 1862 | pdev->dev_flags |= PCI_DEV_FLAGS_ASSIGNED; |
1841 | * if the device is PCIE, return NULL | 1863 | } |
1842 | * if the device isn't connected to a PCIe bridge (that is its parent is a | 1864 | static inline void pci_clear_dev_assigned(struct pci_dev *pdev) |
1843 | * legacy PCI bridge and the bridge is directly connected to bus 0), return its | 1865 | { |
1844 | * parent | 1866 | pdev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED; |
1845 | */ | 1867 | } |
1846 | struct pci_dev *pci_find_upstream_pcie_bridge(struct pci_dev *pdev); | 1868 | static inline bool pci_is_dev_assigned(struct pci_dev *pdev) |
1847 | 1869 | { | |
1870 | return (pdev->dev_flags & PCI_DEV_FLAGS_ASSIGNED) == PCI_DEV_FLAGS_ASSIGNED; | ||
1871 | } | ||
1848 | #endif /* LINUX_PCI_H */ | 1872 | #endif /* LINUX_PCI_H */ |
diff --git a/include/linux/pci_hotplug.h b/include/linux/pci_hotplug.h index 5f2e559af6b0..2706ee9a4327 100644 --- a/include/linux/pci_hotplug.h +++ b/include/linux/pci_hotplug.h | |||
@@ -187,6 +187,4 @@ static inline int pci_get_hp_params(struct pci_dev *dev, | |||
187 | return -ENODEV; | 187 | return -ENODEV; |
188 | } | 188 | } |
189 | #endif | 189 | #endif |
190 | |||
191 | void pci_configure_slot(struct pci_dev *dev); | ||
192 | #endif | 190 | #endif |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 6ed0bb73a864..da9e6f753196 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -2245,6 +2245,8 @@ | |||
2245 | #define PCI_VENDOR_ID_MORETON 0x15aa | 2245 | #define PCI_VENDOR_ID_MORETON 0x15aa |
2246 | #define PCI_DEVICE_ID_RASTEL_2PORT 0x2000 | 2246 | #define PCI_DEVICE_ID_RASTEL_2PORT 0x2000 |
2247 | 2247 | ||
2248 | #define PCI_VENDOR_ID_VMWARE 0x15ad | ||
2249 | |||
2248 | #define PCI_VENDOR_ID_ZOLTRIX 0x15b0 | 2250 | #define PCI_VENDOR_ID_ZOLTRIX 0x15b0 |
2249 | #define PCI_DEVICE_ID_ZOLTRIX_2BD0 0x2bd0 | 2251 | #define PCI_DEVICE_ID_ZOLTRIX_2BD0 0x2bd0 |
2250 | 2252 | ||
diff --git a/include/linux/platform_data/gpio-dwapb.h b/include/linux/platform_data/gpio-dwapb.h new file mode 100644 index 000000000000..28702c849af1 --- /dev/null +++ b/include/linux/platform_data/gpio-dwapb.h | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * Copyright(c) 2014 Intel Corporation. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it | ||
5 | * under the terms and conditions of the GNU General Public License, | ||
6 | * version 2, as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
11 | * more details. | ||
12 | */ | ||
13 | |||
14 | #ifndef GPIO_DW_APB_H | ||
15 | #define GPIO_DW_APB_H | ||
16 | |||
17 | struct dwapb_port_property { | ||
18 | struct device_node *node; | ||
19 | const char *name; | ||
20 | unsigned int idx; | ||
21 | unsigned int ngpio; | ||
22 | unsigned int gpio_base; | ||
23 | unsigned int irq; | ||
24 | bool irq_shared; | ||
25 | }; | ||
26 | |||
27 | struct dwapb_platform_data { | ||
28 | struct dwapb_port_property *properties; | ||
29 | unsigned int nports; | ||
30 | }; | ||
31 | |||
32 | #endif | ||
diff --git a/include/linux/pm.h b/include/linux/pm.h index 72c0fe098a27..383fd68aaee1 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
@@ -619,6 +619,7 @@ extern int dev_pm_put_subsys_data(struct device *dev); | |||
619 | */ | 619 | */ |
620 | struct dev_pm_domain { | 620 | struct dev_pm_domain { |
621 | struct dev_pm_ops ops; | 621 | struct dev_pm_ops ops; |
622 | void (*detach)(struct device *dev, bool power_off); | ||
622 | }; | 623 | }; |
623 | 624 | ||
624 | /* | 625 | /* |
@@ -679,12 +680,16 @@ struct dev_pm_domain { | |||
679 | extern void device_pm_lock(void); | 680 | extern void device_pm_lock(void); |
680 | extern void dpm_resume_start(pm_message_t state); | 681 | extern void dpm_resume_start(pm_message_t state); |
681 | extern void dpm_resume_end(pm_message_t state); | 682 | extern void dpm_resume_end(pm_message_t state); |
683 | extern void dpm_resume_noirq(pm_message_t state); | ||
684 | extern void dpm_resume_early(pm_message_t state); | ||
682 | extern void dpm_resume(pm_message_t state); | 685 | extern void dpm_resume(pm_message_t state); |
683 | extern void dpm_complete(pm_message_t state); | 686 | extern void dpm_complete(pm_message_t state); |
684 | 687 | ||
685 | extern void device_pm_unlock(void); | 688 | extern void device_pm_unlock(void); |
686 | extern int dpm_suspend_end(pm_message_t state); | 689 | extern int dpm_suspend_end(pm_message_t state); |
687 | extern int dpm_suspend_start(pm_message_t state); | 690 | extern int dpm_suspend_start(pm_message_t state); |
691 | extern int dpm_suspend_noirq(pm_message_t state); | ||
692 | extern int dpm_suspend_late(pm_message_t state); | ||
688 | extern int dpm_suspend(pm_message_t state); | 693 | extern int dpm_suspend(pm_message_t state); |
689 | extern int dpm_prepare(pm_message_t state); | 694 | extern int dpm_prepare(pm_message_t state); |
690 | 695 | ||
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index ebc4c76ffb73..73e938b7e937 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h | |||
@@ -35,18 +35,10 @@ struct gpd_dev_ops { | |||
35 | int (*stop)(struct device *dev); | 35 | int (*stop)(struct device *dev); |
36 | int (*save_state)(struct device *dev); | 36 | int (*save_state)(struct device *dev); |
37 | int (*restore_state)(struct device *dev); | 37 | int (*restore_state)(struct device *dev); |
38 | int (*suspend)(struct device *dev); | ||
39 | int (*suspend_late)(struct device *dev); | ||
40 | int (*resume_early)(struct device *dev); | ||
41 | int (*resume)(struct device *dev); | ||
42 | int (*freeze)(struct device *dev); | ||
43 | int (*freeze_late)(struct device *dev); | ||
44 | int (*thaw_early)(struct device *dev); | ||
45 | int (*thaw)(struct device *dev); | ||
46 | bool (*active_wakeup)(struct device *dev); | 38 | bool (*active_wakeup)(struct device *dev); |
47 | }; | 39 | }; |
48 | 40 | ||
49 | struct gpd_cpu_data { | 41 | struct gpd_cpuidle_data { |
50 | unsigned int saved_exit_latency; | 42 | unsigned int saved_exit_latency; |
51 | struct cpuidle_state *idle_state; | 43 | struct cpuidle_state *idle_state; |
52 | }; | 44 | }; |
@@ -71,7 +63,6 @@ struct generic_pm_domain { | |||
71 | unsigned int suspended_count; /* System suspend device counter */ | 63 | unsigned int suspended_count; /* System suspend device counter */ |
72 | unsigned int prepared_count; /* Suspend counter of prepared devices */ | 64 | unsigned int prepared_count; /* Suspend counter of prepared devices */ |
73 | bool suspend_power_off; /* Power status before system suspend */ | 65 | bool suspend_power_off; /* Power status before system suspend */ |
74 | bool dev_irq_safe; /* Device callbacks are IRQ-safe */ | ||
75 | int (*power_off)(struct generic_pm_domain *domain); | 66 | int (*power_off)(struct generic_pm_domain *domain); |
76 | s64 power_off_latency_ns; | 67 | s64 power_off_latency_ns; |
77 | int (*power_on)(struct generic_pm_domain *domain); | 68 | int (*power_on)(struct generic_pm_domain *domain); |
@@ -80,8 +71,9 @@ struct generic_pm_domain { | |||
80 | s64 max_off_time_ns; /* Maximum allowed "suspended" time. */ | 71 | s64 max_off_time_ns; /* Maximum allowed "suspended" time. */ |
81 | bool max_off_time_changed; | 72 | bool max_off_time_changed; |
82 | bool cached_power_down_ok; | 73 | bool cached_power_down_ok; |
83 | struct device_node *of_node; /* Node in device tree */ | 74 | struct gpd_cpuidle_data *cpuidle_data; |
84 | struct gpd_cpu_data *cpu_data; | 75 | void (*attach_dev)(struct device *dev); |
76 | void (*detach_dev)(struct device *dev); | ||
85 | }; | 77 | }; |
86 | 78 | ||
87 | static inline struct generic_pm_domain *pd_to_genpd(struct dev_pm_domain *pd) | 79 | static inline struct generic_pm_domain *pd_to_genpd(struct dev_pm_domain *pd) |
@@ -108,7 +100,6 @@ struct gpd_timing_data { | |||
108 | 100 | ||
109 | struct generic_pm_domain_data { | 101 | struct generic_pm_domain_data { |
110 | struct pm_domain_data base; | 102 | struct pm_domain_data base; |
111 | struct gpd_dev_ops ops; | ||
112 | struct gpd_timing_data td; | 103 | struct gpd_timing_data td; |
113 | struct notifier_block nb; | 104 | struct notifier_block nb; |
114 | struct mutex lock; | 105 | struct mutex lock; |
@@ -127,17 +118,11 @@ static inline struct generic_pm_domain_data *dev_gpd_data(struct device *dev) | |||
127 | return to_gpd_data(dev->power.subsys_data->domain_data); | 118 | return to_gpd_data(dev->power.subsys_data->domain_data); |
128 | } | 119 | } |
129 | 120 | ||
130 | extern struct dev_power_governor simple_qos_governor; | ||
131 | |||
132 | extern struct generic_pm_domain *dev_to_genpd(struct device *dev); | 121 | extern struct generic_pm_domain *dev_to_genpd(struct device *dev); |
133 | extern int __pm_genpd_add_device(struct generic_pm_domain *genpd, | 122 | extern int __pm_genpd_add_device(struct generic_pm_domain *genpd, |
134 | struct device *dev, | 123 | struct device *dev, |
135 | struct gpd_timing_data *td); | 124 | struct gpd_timing_data *td); |
136 | 125 | ||
137 | extern int __pm_genpd_of_add_device(struct device_node *genpd_node, | ||
138 | struct device *dev, | ||
139 | struct gpd_timing_data *td); | ||
140 | |||
141 | extern int __pm_genpd_name_add_device(const char *domain_name, | 126 | extern int __pm_genpd_name_add_device(const char *domain_name, |
142 | struct device *dev, | 127 | struct device *dev, |
143 | struct gpd_timing_data *td); | 128 | struct gpd_timing_data *td); |
@@ -151,10 +136,6 @@ extern int pm_genpd_add_subdomain_names(const char *master_name, | |||
151 | const char *subdomain_name); | 136 | const char *subdomain_name); |
152 | extern int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd, | 137 | extern int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd, |
153 | struct generic_pm_domain *target); | 138 | struct generic_pm_domain *target); |
154 | extern int pm_genpd_add_callbacks(struct device *dev, | ||
155 | struct gpd_dev_ops *ops, | ||
156 | struct gpd_timing_data *td); | ||
157 | extern int __pm_genpd_remove_callbacks(struct device *dev, bool clear_td); | ||
158 | extern int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int state); | 139 | extern int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int state); |
159 | extern int pm_genpd_name_attach_cpuidle(const char *name, int state); | 140 | extern int pm_genpd_name_attach_cpuidle(const char *name, int state); |
160 | extern int pm_genpd_detach_cpuidle(struct generic_pm_domain *genpd); | 141 | extern int pm_genpd_detach_cpuidle(struct generic_pm_domain *genpd); |
@@ -165,8 +146,7 @@ extern void pm_genpd_init(struct generic_pm_domain *genpd, | |||
165 | extern int pm_genpd_poweron(struct generic_pm_domain *genpd); | 146 | extern int pm_genpd_poweron(struct generic_pm_domain *genpd); |
166 | extern int pm_genpd_name_poweron(const char *domain_name); | 147 | extern int pm_genpd_name_poweron(const char *domain_name); |
167 | 148 | ||
168 | extern bool default_stop_ok(struct device *dev); | 149 | extern struct dev_power_governor simple_qos_governor; |
169 | |||
170 | extern struct dev_power_governor pm_domain_always_on_gov; | 150 | extern struct dev_power_governor pm_domain_always_on_gov; |
171 | #else | 151 | #else |
172 | 152 | ||
@@ -184,12 +164,6 @@ static inline int __pm_genpd_add_device(struct generic_pm_domain *genpd, | |||
184 | { | 164 | { |
185 | return -ENOSYS; | 165 | return -ENOSYS; |
186 | } | 166 | } |
187 | static inline int __pm_genpd_of_add_device(struct device_node *genpd_node, | ||
188 | struct device *dev, | ||
189 | struct gpd_timing_data *td) | ||
190 | { | ||
191 | return -ENOSYS; | ||
192 | } | ||
193 | static inline int __pm_genpd_name_add_device(const char *domain_name, | 167 | static inline int __pm_genpd_name_add_device(const char *domain_name, |
194 | struct device *dev, | 168 | struct device *dev, |
195 | struct gpd_timing_data *td) | 169 | struct gpd_timing_data *td) |
@@ -217,16 +191,6 @@ static inline int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd, | |||
217 | { | 191 | { |
218 | return -ENOSYS; | 192 | return -ENOSYS; |
219 | } | 193 | } |
220 | static inline int pm_genpd_add_callbacks(struct device *dev, | ||
221 | struct gpd_dev_ops *ops, | ||
222 | struct gpd_timing_data *td) | ||
223 | { | ||
224 | return -ENOSYS; | ||
225 | } | ||
226 | static inline int __pm_genpd_remove_callbacks(struct device *dev, bool clear_td) | ||
227 | { | ||
228 | return -ENOSYS; | ||
229 | } | ||
230 | static inline int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int st) | 194 | static inline int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int st) |
231 | { | 195 | { |
232 | return -ENOSYS; | 196 | return -ENOSYS; |
@@ -255,10 +219,6 @@ static inline int pm_genpd_name_poweron(const char *domain_name) | |||
255 | { | 219 | { |
256 | return -ENOSYS; | 220 | return -ENOSYS; |
257 | } | 221 | } |
258 | static inline bool default_stop_ok(struct device *dev) | ||
259 | { | ||
260 | return false; | ||
261 | } | ||
262 | #define simple_qos_governor NULL | 222 | #define simple_qos_governor NULL |
263 | #define pm_domain_always_on_gov NULL | 223 | #define pm_domain_always_on_gov NULL |
264 | #endif | 224 | #endif |
@@ -269,45 +229,87 @@ static inline int pm_genpd_add_device(struct generic_pm_domain *genpd, | |||
269 | return __pm_genpd_add_device(genpd, dev, NULL); | 229 | return __pm_genpd_add_device(genpd, dev, NULL); |
270 | } | 230 | } |
271 | 231 | ||
272 | static inline int pm_genpd_of_add_device(struct device_node *genpd_node, | ||
273 | struct device *dev) | ||
274 | { | ||
275 | return __pm_genpd_of_add_device(genpd_node, dev, NULL); | ||
276 | } | ||
277 | |||
278 | static inline int pm_genpd_name_add_device(const char *domain_name, | 232 | static inline int pm_genpd_name_add_device(const char *domain_name, |
279 | struct device *dev) | 233 | struct device *dev) |
280 | { | 234 | { |
281 | return __pm_genpd_name_add_device(domain_name, dev, NULL); | 235 | return __pm_genpd_name_add_device(domain_name, dev, NULL); |
282 | } | 236 | } |
283 | 237 | ||
284 | static inline int pm_genpd_remove_callbacks(struct device *dev) | ||
285 | { | ||
286 | return __pm_genpd_remove_callbacks(dev, true); | ||
287 | } | ||
288 | |||
289 | #ifdef CONFIG_PM_GENERIC_DOMAINS_RUNTIME | 238 | #ifdef CONFIG_PM_GENERIC_DOMAINS_RUNTIME |
290 | extern void genpd_queue_power_off_work(struct generic_pm_domain *genpd); | ||
291 | extern void pm_genpd_poweroff_unused(void); | 239 | extern void pm_genpd_poweroff_unused(void); |
292 | #else | 240 | #else |
293 | static inline void genpd_queue_power_off_work(struct generic_pm_domain *gpd) {} | ||
294 | static inline void pm_genpd_poweroff_unused(void) {} | 241 | static inline void pm_genpd_poweroff_unused(void) {} |
295 | #endif | 242 | #endif |
296 | 243 | ||
297 | #ifdef CONFIG_PM_GENERIC_DOMAINS_SLEEP | 244 | #ifdef CONFIG_PM_GENERIC_DOMAINS_SLEEP |
298 | extern void pm_genpd_syscore_switch(struct device *dev, bool suspend); | 245 | extern void pm_genpd_syscore_poweroff(struct device *dev); |
246 | extern void pm_genpd_syscore_poweron(struct device *dev); | ||
299 | #else | 247 | #else |
300 | static inline void pm_genpd_syscore_switch(struct device *dev, bool suspend) {} | 248 | static inline void pm_genpd_syscore_poweroff(struct device *dev) {} |
249 | static inline void pm_genpd_syscore_poweron(struct device *dev) {} | ||
301 | #endif | 250 | #endif |
302 | 251 | ||
303 | static inline void pm_genpd_syscore_poweroff(struct device *dev) | 252 | /* OF PM domain providers */ |
253 | struct of_device_id; | ||
254 | |||
255 | struct genpd_onecell_data { | ||
256 | struct generic_pm_domain **domains; | ||
257 | unsigned int num_domains; | ||
258 | }; | ||
259 | |||
260 | typedef struct generic_pm_domain *(*genpd_xlate_t)(struct of_phandle_args *args, | ||
261 | void *data); | ||
262 | |||
263 | #ifdef CONFIG_PM_GENERIC_DOMAINS_OF | ||
264 | int __of_genpd_add_provider(struct device_node *np, genpd_xlate_t xlate, | ||
265 | void *data); | ||
266 | void of_genpd_del_provider(struct device_node *np); | ||
267 | |||
268 | struct generic_pm_domain *__of_genpd_xlate_simple( | ||
269 | struct of_phandle_args *genpdspec, | ||
270 | void *data); | ||
271 | struct generic_pm_domain *__of_genpd_xlate_onecell( | ||
272 | struct of_phandle_args *genpdspec, | ||
273 | void *data); | ||
274 | |||
275 | int genpd_dev_pm_attach(struct device *dev); | ||
276 | #else /* !CONFIG_PM_GENERIC_DOMAINS_OF */ | ||
277 | static inline int __of_genpd_add_provider(struct device_node *np, | ||
278 | genpd_xlate_t xlate, void *data) | ||
279 | { | ||
280 | return 0; | ||
281 | } | ||
282 | static inline void of_genpd_del_provider(struct device_node *np) {} | ||
283 | |||
284 | #define __of_genpd_xlate_simple NULL | ||
285 | #define __of_genpd_xlate_onecell NULL | ||
286 | |||
287 | static inline int genpd_dev_pm_attach(struct device *dev) | ||
288 | { | ||
289 | return -ENODEV; | ||
290 | } | ||
291 | #endif /* CONFIG_PM_GENERIC_DOMAINS_OF */ | ||
292 | |||
293 | static inline int of_genpd_add_provider_simple(struct device_node *np, | ||
294 | struct generic_pm_domain *genpd) | ||
295 | { | ||
296 | return __of_genpd_add_provider(np, __of_genpd_xlate_simple, genpd); | ||
297 | } | ||
298 | static inline int of_genpd_add_provider_onecell(struct device_node *np, | ||
299 | struct genpd_onecell_data *data) | ||
304 | { | 300 | { |
305 | pm_genpd_syscore_switch(dev, true); | 301 | return __of_genpd_add_provider(np, __of_genpd_xlate_onecell, data); |
306 | } | 302 | } |
307 | 303 | ||
308 | static inline void pm_genpd_syscore_poweron(struct device *dev) | 304 | #ifdef CONFIG_PM |
305 | extern int dev_pm_domain_attach(struct device *dev, bool power_on); | ||
306 | extern void dev_pm_domain_detach(struct device *dev, bool power_off); | ||
307 | #else | ||
308 | static inline int dev_pm_domain_attach(struct device *dev, bool power_on) | ||
309 | { | 309 | { |
310 | pm_genpd_syscore_switch(dev, false); | 310 | return -ENODEV; |
311 | } | 311 | } |
312 | static inline void dev_pm_domain_detach(struct device *dev, bool power_off) {} | ||
313 | #endif | ||
312 | 314 | ||
313 | #endif /* _LINUX_PM_DOMAIN_H */ | 315 | #endif /* _LINUX_PM_DOMAIN_H */ |
diff --git a/include/linux/spi/mcp23s08.h b/include/linux/spi/mcp23s08.h index 2d676d5aaa89..aa07d7b32568 100644 --- a/include/linux/spi/mcp23s08.h +++ b/include/linux/spi/mcp23s08.h | |||
@@ -22,4 +22,22 @@ struct mcp23s08_platform_data { | |||
22 | * base to base+15 (or base+31 for s17 variant). | 22 | * base to base+15 (or base+31 for s17 variant). |
23 | */ | 23 | */ |
24 | unsigned base; | 24 | unsigned base; |
25 | /* Marks the device as a interrupt controller. | ||
26 | * NOTE: The interrupt functionality is only supported for i2c | ||
27 | * versions of the chips. The spi chips can also do the interrupts, | ||
28 | * but this is not supported by the linux driver yet. | ||
29 | */ | ||
30 | bool irq_controller; | ||
31 | |||
32 | /* Sets the mirror flag in the IOCON register. Devices | ||
33 | * with two interrupt outputs (these are the devices ending with 17 and | ||
34 | * those that have 16 IOs) have two IO banks: IO 0-7 form bank 1 and | ||
35 | * IO 8-15 are bank 2. These chips have two different interrupt outputs: | ||
36 | * One for bank 1 and another for bank 2. If irq-mirror is set, both | ||
37 | * interrupts are generated regardless of the bank that an input change | ||
38 | * occurred on. If it is not set, the interrupt are only generated for | ||
39 | * the bank they belong to. | ||
40 | * On devices with only one interrupt output this property is useless. | ||
41 | */ | ||
42 | bool mirror; | ||
25 | }; | 43 | }; |
diff --git a/include/linux/suspend.h b/include/linux/suspend.h index 519064e0c943..3388c1b6f7d8 100644 --- a/include/linux/suspend.h +++ b/include/linux/suspend.h | |||
@@ -189,6 +189,8 @@ struct platform_suspend_ops { | |||
189 | 189 | ||
190 | struct platform_freeze_ops { | 190 | struct platform_freeze_ops { |
191 | int (*begin)(void); | 191 | int (*begin)(void); |
192 | int (*prepare)(void); | ||
193 | void (*restore)(void); | ||
192 | void (*end)(void); | 194 | void (*end)(void); |
193 | }; | 195 | }; |
194 | 196 | ||
@@ -371,6 +373,8 @@ extern int unregister_pm_notifier(struct notifier_block *nb); | |||
371 | extern bool events_check_enabled; | 373 | extern bool events_check_enabled; |
372 | 374 | ||
373 | extern bool pm_wakeup_pending(void); | 375 | extern bool pm_wakeup_pending(void); |
376 | extern void pm_system_wakeup(void); | ||
377 | extern void pm_wakeup_clear(void); | ||
374 | extern bool pm_get_wakeup_count(unsigned int *count, bool block); | 378 | extern bool pm_get_wakeup_count(unsigned int *count, bool block); |
375 | extern bool pm_save_wakeup_count(unsigned int count); | 379 | extern bool pm_save_wakeup_count(unsigned int count); |
376 | extern void pm_wakep_autosleep_enabled(bool set); | 380 | extern void pm_wakep_autosleep_enabled(bool set); |
@@ -418,6 +422,8 @@ static inline int unregister_pm_notifier(struct notifier_block *nb) | |||
418 | #define pm_notifier(fn, pri) do { (void)(fn); } while (0) | 422 | #define pm_notifier(fn, pri) do { (void)(fn); } while (0) |
419 | 423 | ||
420 | static inline bool pm_wakeup_pending(void) { return false; } | 424 | static inline bool pm_wakeup_pending(void) { return false; } |
425 | static inline void pm_system_wakeup(void) {} | ||
426 | static inline void pm_wakeup_clear(void) {} | ||
421 | 427 | ||
422 | static inline void lock_system_sleep(void) {} | 428 | static inline void lock_system_sleep(void) {} |
423 | static inline void unlock_system_sleep(void) {} | 429 | static inline void unlock_system_sleep(void) {} |
diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h index 47da53c27ffa..79abb9c71772 100644 --- a/include/ras/ras_event.h +++ b/include/ras/ras_event.h | |||
@@ -8,6 +8,7 @@ | |||
8 | #include <linux/tracepoint.h> | 8 | #include <linux/tracepoint.h> |
9 | #include <linux/edac.h> | 9 | #include <linux/edac.h> |
10 | #include <linux/ktime.h> | 10 | #include <linux/ktime.h> |
11 | #include <linux/pci.h> | ||
11 | #include <linux/aer.h> | 12 | #include <linux/aer.h> |
12 | #include <linux/cper.h> | 13 | #include <linux/cper.h> |
13 | 14 | ||
@@ -173,25 +174,34 @@ TRACE_EVENT(mc_event, | |||
173 | * u8 severity - error severity 0:NONFATAL 1:FATAL 2:CORRECTED | 174 | * u8 severity - error severity 0:NONFATAL 1:FATAL 2:CORRECTED |
174 | */ | 175 | */ |
175 | 176 | ||
176 | #define aer_correctable_errors \ | 177 | #define aer_correctable_errors \ |
177 | {BIT(0), "Receiver Error"}, \ | 178 | {PCI_ERR_COR_RCVR, "Receiver Error"}, \ |
178 | {BIT(6), "Bad TLP"}, \ | 179 | {PCI_ERR_COR_BAD_TLP, "Bad TLP"}, \ |
179 | {BIT(7), "Bad DLLP"}, \ | 180 | {PCI_ERR_COR_BAD_DLLP, "Bad DLLP"}, \ |
180 | {BIT(8), "RELAY_NUM Rollover"}, \ | 181 | {PCI_ERR_COR_REP_ROLL, "RELAY_NUM Rollover"}, \ |
181 | {BIT(12), "Replay Timer Timeout"}, \ | 182 | {PCI_ERR_COR_REP_TIMER, "Replay Timer Timeout"}, \ |
182 | {BIT(13), "Advisory Non-Fatal"} | 183 | {PCI_ERR_COR_ADV_NFAT, "Advisory Non-Fatal Error"}, \ |
183 | 184 | {PCI_ERR_COR_INTERNAL, "Corrected Internal Error"}, \ | |
184 | #define aer_uncorrectable_errors \ | 185 | {PCI_ERR_COR_LOG_OVER, "Header Log Overflow"} |
185 | {BIT(4), "Data Link Protocol"}, \ | 186 | |
186 | {BIT(12), "Poisoned TLP"}, \ | 187 | #define aer_uncorrectable_errors \ |
187 | {BIT(13), "Flow Control Protocol"}, \ | 188 | {PCI_ERR_UNC_UND, "Undefined"}, \ |
188 | {BIT(14), "Completion Timeout"}, \ | 189 | {PCI_ERR_UNC_DLP, "Data Link Protocol Error"}, \ |
189 | {BIT(15), "Completer Abort"}, \ | 190 | {PCI_ERR_UNC_SURPDN, "Surprise Down Error"}, \ |
190 | {BIT(16), "Unexpected Completion"}, \ | 191 | {PCI_ERR_UNC_POISON_TLP,"Poisoned TLP"}, \ |
191 | {BIT(17), "Receiver Overflow"}, \ | 192 | {PCI_ERR_UNC_FCP, "Flow Control Protocol Error"}, \ |
192 | {BIT(18), "Malformed TLP"}, \ | 193 | {PCI_ERR_UNC_COMP_TIME, "Completion Timeout"}, \ |
193 | {BIT(19), "ECRC"}, \ | 194 | {PCI_ERR_UNC_COMP_ABORT,"Completer Abort"}, \ |
194 | {BIT(20), "Unsupported Request"} | 195 | {PCI_ERR_UNC_UNX_COMP, "Unexpected Completion"}, \ |
196 | {PCI_ERR_UNC_RX_OVER, "Receiver Overflow"}, \ | ||
197 | {PCI_ERR_UNC_MALF_TLP, "Malformed TLP"}, \ | ||
198 | {PCI_ERR_UNC_ECRC, "ECRC Error"}, \ | ||
199 | {PCI_ERR_UNC_UNSUP, "Unsupported Request Error"}, \ | ||
200 | {PCI_ERR_UNC_ACSV, "ACS Violation"}, \ | ||
201 | {PCI_ERR_UNC_INTN, "Uncorrectable Internal Error"},\ | ||
202 | {PCI_ERR_UNC_MCBTLP, "MC Blocked TLP"}, \ | ||
203 | {PCI_ERR_UNC_ATOMEG, "AtomicOp Egress Blocked"}, \ | ||
204 | {PCI_ERR_UNC_TLPPRE, "TLP Prefix Blocked Error"} | ||
195 | 205 | ||
196 | TRACE_EVENT(aer_event, | 206 | TRACE_EVENT(aer_event, |
197 | TP_PROTO(const char *dev_name, | 207 | TP_PROTO(const char *dev_name, |
diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h index 30db069bce62..4a1d0cc38ff2 100644 --- a/include/uapi/linux/pci_regs.h +++ b/include/uapi/linux/pci_regs.h | |||
@@ -552,6 +552,7 @@ | |||
552 | #define PCI_EXP_RTCTL_PMEIE 0x0008 /* PME Interrupt Enable */ | 552 | #define PCI_EXP_RTCTL_PMEIE 0x0008 /* PME Interrupt Enable */ |
553 | #define PCI_EXP_RTCTL_CRSSVE 0x0010 /* CRS Software Visibility Enable */ | 553 | #define PCI_EXP_RTCTL_CRSSVE 0x0010 /* CRS Software Visibility Enable */ |
554 | #define PCI_EXP_RTCAP 30 /* Root Capabilities */ | 554 | #define PCI_EXP_RTCAP 30 /* Root Capabilities */ |
555 | #define PCI_EXP_RTCAP_CRSVIS 0x0001 /* CRS Software Visibility capability */ | ||
555 | #define PCI_EXP_RTSTA 32 /* Root Status */ | 556 | #define PCI_EXP_RTSTA 32 /* Root Status */ |
556 | #define PCI_EXP_RTSTA_PME 0x00010000 /* PME status */ | 557 | #define PCI_EXP_RTSTA_PME 0x00010000 /* PME status */ |
557 | #define PCI_EXP_RTSTA_PENDING 0x00020000 /* PME pending */ | 558 | #define PCI_EXP_RTSTA_PENDING 0x00020000 /* PME pending */ |
@@ -630,7 +631,7 @@ | |||
630 | 631 | ||
631 | /* Advanced Error Reporting */ | 632 | /* Advanced Error Reporting */ |
632 | #define PCI_ERR_UNCOR_STATUS 4 /* Uncorrectable Error Status */ | 633 | #define PCI_ERR_UNCOR_STATUS 4 /* Uncorrectable Error Status */ |
633 | #define PCI_ERR_UNC_TRAIN 0x00000001 /* Training */ | 634 | #define PCI_ERR_UNC_UND 0x00000001 /* Undefined */ |
634 | #define PCI_ERR_UNC_DLP 0x00000010 /* Data Link Protocol */ | 635 | #define PCI_ERR_UNC_DLP 0x00000010 /* Data Link Protocol */ |
635 | #define PCI_ERR_UNC_SURPDN 0x00000020 /* Surprise Down */ | 636 | #define PCI_ERR_UNC_SURPDN 0x00000020 /* Surprise Down */ |
636 | #define PCI_ERR_UNC_POISON_TLP 0x00001000 /* Poisoned TLP */ | 637 | #define PCI_ERR_UNC_POISON_TLP 0x00001000 /* Poisoned TLP */ |