diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-09-22 15:54:53 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-09-22 16:01:40 -0400 |
commit | ae19ffbadc1b2100285a5b5b3d0a4e0a11390904 (patch) | |
tree | 3c2086ab67398a019089a47ca3f362a4bc6db74f /include | |
parent | 34e84f39a27d059a3e6ec6e8b94aafa702e6f220 (diff) | |
parent | 9173a8ef24a6b1b8031507b35b8ffe5f85a87692 (diff) |
Merge branch 'master' into for-linus
Diffstat (limited to 'include')
56 files changed, 1287 insertions, 239 deletions
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h index c65e4ce6c3af..1fa3ffb7c93b 100644 --- a/include/acpi/acpi_bus.h +++ b/include/acpi/acpi_bus.h | |||
@@ -248,7 +248,6 @@ struct acpi_device_perf { | |||
248 | /* Wakeup Management */ | 248 | /* Wakeup Management */ |
249 | struct acpi_device_wakeup_flags { | 249 | struct acpi_device_wakeup_flags { |
250 | u8 valid:1; /* Can successfully enable wakeup? */ | 250 | u8 valid:1; /* Can successfully enable wakeup? */ |
251 | u8 prepared:1; /* Has the wake-up capability been enabled? */ | ||
252 | u8 run_wake:1; /* Run-Wake GPE devices */ | 251 | u8 run_wake:1; /* Run-Wake GPE devices */ |
253 | }; | 252 | }; |
254 | 253 | ||
@@ -263,6 +262,7 @@ struct acpi_device_wakeup { | |||
263 | struct acpi_handle_list resources; | 262 | struct acpi_handle_list resources; |
264 | struct acpi_device_wakeup_state state; | 263 | struct acpi_device_wakeup_state state; |
265 | struct acpi_device_wakeup_flags flags; | 264 | struct acpi_device_wakeup_flags flags; |
265 | int prepare_count; | ||
266 | }; | 266 | }; |
267 | 267 | ||
268 | /* Device */ | 268 | /* Device */ |
@@ -369,10 +369,26 @@ int register_acpi_bus_type(struct acpi_bus_type *); | |||
369 | int unregister_acpi_bus_type(struct acpi_bus_type *); | 369 | int unregister_acpi_bus_type(struct acpi_bus_type *); |
370 | struct device *acpi_get_physical_device(acpi_handle); | 370 | struct device *acpi_get_physical_device(acpi_handle); |
371 | 371 | ||
372 | struct acpi_pci_root { | ||
373 | struct list_head node; | ||
374 | struct acpi_device * device; | ||
375 | struct acpi_pci_id id; | ||
376 | struct pci_bus *bus; | ||
377 | u16 segment; | ||
378 | u8 bus_nr; | ||
379 | |||
380 | u32 osc_support_set; /* _OSC state of support bits */ | ||
381 | u32 osc_control_set; /* _OSC state of control bits */ | ||
382 | u32 osc_control_qry; /* the latest _OSC query result */ | ||
383 | |||
384 | u32 osc_queried:1; /* has _OSC control been queried? */ | ||
385 | }; | ||
386 | |||
372 | /* helper */ | 387 | /* helper */ |
373 | acpi_handle acpi_get_child(acpi_handle, acpi_integer); | 388 | acpi_handle acpi_get_child(acpi_handle, acpi_integer); |
374 | int acpi_is_root_bridge(acpi_handle); | 389 | int acpi_is_root_bridge(acpi_handle); |
375 | acpi_handle acpi_get_pci_rootbridge_handle(unsigned int, unsigned int); | 390 | acpi_handle acpi_get_pci_rootbridge_handle(unsigned int, unsigned int); |
391 | struct acpi_pci_root *acpi_pci_find_root(acpi_handle handle); | ||
376 | #define DEVICE_ACPI_HANDLE(dev) ((acpi_handle)((dev)->archdata.acpi_handle)) | 392 | #define DEVICE_ACPI_HANDLE(dev) ((acpi_handle)((dev)->archdata.acpi_handle)) |
377 | 393 | ||
378 | #ifdef CONFIG_PM_SLEEP | 394 | #ifdef CONFIG_PM_SLEEP |
diff --git a/include/asm-generic/pci.h b/include/asm-generic/pci.h index b4326b5466eb..26373cff4546 100644 --- a/include/asm-generic/pci.h +++ b/include/asm-generic/pci.h | |||
@@ -30,7 +30,18 @@ pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, | |||
30 | res->end = region->end; | 30 | res->end = region->end; |
31 | } | 31 | } |
32 | 32 | ||
33 | #define pcibios_scan_all_fns(a, b) 0 | 33 | static inline struct resource * |
34 | pcibios_select_root(struct pci_dev *pdev, struct resource *res) | ||
35 | { | ||
36 | struct resource *root = NULL; | ||
37 | |||
38 | if (res->flags & IORESOURCE_IO) | ||
39 | root = &ioport_resource; | ||
40 | if (res->flags & IORESOURCE_MEM) | ||
41 | root = &iomem_resource; | ||
42 | |||
43 | return root; | ||
44 | } | ||
34 | 45 | ||
35 | #ifndef HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ | 46 | #ifndef HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ |
36 | static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) | 47 | static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 6ad76bf5fb40..29ca8f53ffbe 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -33,13 +33,10 @@ | |||
33 | * BSS_SECTION(0, 0, 0) | 33 | * BSS_SECTION(0, 0, 0) |
34 | * _end = .; | 34 | * _end = .; |
35 | * | 35 | * |
36 | * /DISCARD/ : { | ||
37 | * EXIT_TEXT | ||
38 | * EXIT_DATA | ||
39 | * EXIT_CALL | ||
40 | * } | ||
41 | * STABS_DEBUG | 36 | * STABS_DEBUG |
42 | * DWARF_DEBUG | 37 | * DWARF_DEBUG |
38 | * | ||
39 | * DISCARDS // must be the last | ||
43 | * } | 40 | * } |
44 | * | 41 | * |
45 | * [__init_begin, __init_end] is the init section that may be freed after init | 42 | * [__init_begin, __init_end] is the init section that may be freed after init |
@@ -91,7 +88,8 @@ | |||
91 | #endif | 88 | #endif |
92 | 89 | ||
93 | #ifdef CONFIG_FTRACE_MCOUNT_RECORD | 90 | #ifdef CONFIG_FTRACE_MCOUNT_RECORD |
94 | #define MCOUNT_REC() VMLINUX_SYMBOL(__start_mcount_loc) = .; \ | 91 | #define MCOUNT_REC() . = ALIGN(8); \ |
92 | VMLINUX_SYMBOL(__start_mcount_loc) = .; \ | ||
95 | *(__mcount_loc) \ | 93 | *(__mcount_loc) \ |
96 | VMLINUX_SYMBOL(__stop_mcount_loc) = .; | 94 | VMLINUX_SYMBOL(__stop_mcount_loc) = .; |
97 | #else | 95 | #else |
@@ -331,7 +329,6 @@ | |||
331 | /* __*init sections */ \ | 329 | /* __*init sections */ \ |
332 | __init_rodata : AT(ADDR(__init_rodata) - LOAD_OFFSET) { \ | 330 | __init_rodata : AT(ADDR(__init_rodata) - LOAD_OFFSET) { \ |
333 | *(.ref.rodata) \ | 331 | *(.ref.rodata) \ |
334 | MCOUNT_REC() \ | ||
335 | DEV_KEEP(init.rodata) \ | 332 | DEV_KEEP(init.rodata) \ |
336 | DEV_KEEP(exit.rodata) \ | 333 | DEV_KEEP(exit.rodata) \ |
337 | CPU_KEEP(init.rodata) \ | 334 | CPU_KEEP(init.rodata) \ |
@@ -455,6 +452,7 @@ | |||
455 | MEM_DISCARD(init.data) \ | 452 | MEM_DISCARD(init.data) \ |
456 | KERNEL_CTORS() \ | 453 | KERNEL_CTORS() \ |
457 | *(.init.rodata) \ | 454 | *(.init.rodata) \ |
455 | MCOUNT_REC() \ | ||
458 | DEV_DISCARD(init.rodata) \ | 456 | DEV_DISCARD(init.rodata) \ |
459 | CPU_DISCARD(init.rodata) \ | 457 | CPU_DISCARD(init.rodata) \ |
460 | MEM_DISCARD(init.rodata) | 458 | MEM_DISCARD(init.rodata) |
@@ -626,6 +624,23 @@ | |||
626 | #define INIT_RAM_FS | 624 | #define INIT_RAM_FS |
627 | #endif | 625 | #endif |
628 | 626 | ||
627 | /* | ||
628 | * Default discarded sections. | ||
629 | * | ||
630 | * Some archs want to discard exit text/data at runtime rather than | ||
631 | * link time due to cross-section references such as alt instructions, | ||
632 | * bug table, eh_frame, etc. DISCARDS must be the last of output | ||
633 | * section definitions so that such archs put those in earlier section | ||
634 | * definitions. | ||
635 | */ | ||
636 | #define DISCARDS \ | ||
637 | /DISCARD/ : { \ | ||
638 | EXIT_TEXT \ | ||
639 | EXIT_DATA \ | ||
640 | EXIT_CALL \ | ||
641 | *(.discard) \ | ||
642 | } | ||
643 | |||
629 | /** | 644 | /** |
630 | * PERCPU_VADDR - define output section for percpu area | 645 | * PERCPU_VADDR - define output section for percpu area |
631 | * @vaddr: explicit base address (optional) | 646 | * @vaddr: explicit base address (optional) |
diff --git a/include/keys/rxrpc-type.h b/include/keys/rxrpc-type.h index 7609365577f1..5cb86c307f5d 100644 --- a/include/keys/rxrpc-type.h +++ b/include/keys/rxrpc-type.h | |||
@@ -21,4 +21,111 @@ extern struct key_type key_type_rxrpc; | |||
21 | 21 | ||
22 | extern struct key *rxrpc_get_null_key(const char *); | 22 | extern struct key *rxrpc_get_null_key(const char *); |
23 | 23 | ||
24 | /* | ||
25 | * RxRPC key for Kerberos IV (type-2 security) | ||
26 | */ | ||
27 | struct rxkad_key { | ||
28 | u32 vice_id; | ||
29 | u32 start; /* time at which ticket starts */ | ||
30 | u32 expiry; /* time at which ticket expires */ | ||
31 | u32 kvno; /* key version number */ | ||
32 | u8 primary_flag; /* T if key for primary cell for this user */ | ||
33 | u16 ticket_len; /* length of ticket[] */ | ||
34 | u8 session_key[8]; /* DES session key */ | ||
35 | u8 ticket[0]; /* the encrypted ticket */ | ||
36 | }; | ||
37 | |||
38 | /* | ||
39 | * Kerberos 5 principal | ||
40 | * name/name/name@realm | ||
41 | */ | ||
42 | struct krb5_principal { | ||
43 | u8 n_name_parts; /* N of parts of the name part of the principal */ | ||
44 | char **name_parts; /* parts of the name part of the principal */ | ||
45 | char *realm; /* parts of the realm part of the principal */ | ||
46 | }; | ||
47 | |||
48 | /* | ||
49 | * Kerberos 5 tagged data | ||
50 | */ | ||
51 | struct krb5_tagged_data { | ||
52 | /* for tag value, see /usr/include/krb5/krb5.h | ||
53 | * - KRB5_AUTHDATA_* for auth data | ||
54 | * - | ||
55 | */ | ||
56 | s32 tag; | ||
57 | u32 data_len; | ||
58 | u8 *data; | ||
59 | }; | ||
60 | |||
61 | /* | ||
62 | * RxRPC key for Kerberos V (type-5 security) | ||
63 | */ | ||
64 | struct rxk5_key { | ||
65 | u64 authtime; /* time at which auth token generated */ | ||
66 | u64 starttime; /* time at which auth token starts */ | ||
67 | u64 endtime; /* time at which auth token expired */ | ||
68 | u64 renew_till; /* time to which auth token can be renewed */ | ||
69 | s32 is_skey; /* T if ticket is encrypted in another ticket's | ||
70 | * skey */ | ||
71 | s32 flags; /* mask of TKT_FLG_* bits (krb5/krb5.h) */ | ||
72 | struct krb5_principal client; /* client principal name */ | ||
73 | struct krb5_principal server; /* server principal name */ | ||
74 | u16 ticket_len; /* length of ticket */ | ||
75 | u16 ticket2_len; /* length of second ticket */ | ||
76 | u8 n_authdata; /* number of authorisation data elements */ | ||
77 | u8 n_addresses; /* number of addresses */ | ||
78 | struct krb5_tagged_data session; /* session data; tag is enctype */ | ||
79 | struct krb5_tagged_data *addresses; /* addresses */ | ||
80 | u8 *ticket; /* krb5 ticket */ | ||
81 | u8 *ticket2; /* second krb5 ticket, if related to ticket (via | ||
82 | * DUPLICATE-SKEY or ENC-TKT-IN-SKEY) */ | ||
83 | struct krb5_tagged_data *authdata; /* authorisation data */ | ||
84 | }; | ||
85 | |||
86 | /* | ||
87 | * list of tokens attached to an rxrpc key | ||
88 | */ | ||
89 | struct rxrpc_key_token { | ||
90 | u16 security_index; /* RxRPC header security index */ | ||
91 | struct rxrpc_key_token *next; /* the next token in the list */ | ||
92 | union { | ||
93 | struct rxkad_key *kad; | ||
94 | struct rxk5_key *k5; | ||
95 | }; | ||
96 | }; | ||
97 | |||
98 | /* | ||
99 | * structure of raw payloads passed to add_key() or instantiate key | ||
100 | */ | ||
101 | struct rxrpc_key_data_v1 { | ||
102 | u32 kif_version; /* 1 */ | ||
103 | u16 security_index; | ||
104 | u16 ticket_length; | ||
105 | u32 expiry; /* time_t */ | ||
106 | u32 kvno; | ||
107 | u8 session_key[8]; | ||
108 | u8 ticket[0]; | ||
109 | }; | ||
110 | |||
111 | /* | ||
112 | * AF_RXRPC key payload derived from XDR format | ||
113 | * - based on openafs-1.4.10/src/auth/afs_token.xg | ||
114 | */ | ||
115 | #define AFSTOKEN_LENGTH_MAX 16384 /* max payload size */ | ||
116 | #define AFSTOKEN_STRING_MAX 256 /* max small string length */ | ||
117 | #define AFSTOKEN_DATA_MAX 64 /* max small data length */ | ||
118 | #define AFSTOKEN_CELL_MAX 64 /* max cellname length */ | ||
119 | #define AFSTOKEN_MAX 8 /* max tokens per payload */ | ||
120 | #define AFSTOKEN_BDATALN_MAX 16384 /* max big data length */ | ||
121 | #define AFSTOKEN_RK_TIX_MAX 12000 /* max RxKAD ticket size */ | ||
122 | #define AFSTOKEN_GK_KEY_MAX 64 /* max GSSAPI key size */ | ||
123 | #define AFSTOKEN_GK_TOKEN_MAX 16384 /* max GSSAPI token size */ | ||
124 | #define AFSTOKEN_K5_COMPONENTS_MAX 16 /* max K5 components */ | ||
125 | #define AFSTOKEN_K5_NAME_MAX 128 /* max K5 name length */ | ||
126 | #define AFSTOKEN_K5_REALM_MAX 64 /* max K5 realm name length */ | ||
127 | #define AFSTOKEN_K5_TIX_MAX 16384 /* max K5 ticket size */ | ||
128 | #define AFSTOKEN_K5_ADDRESSES_MAX 16 /* max K5 addresses */ | ||
129 | #define AFSTOKEN_K5_AUTHDATA_MAX 16 /* max K5 pieces of auth data */ | ||
130 | |||
24 | #endif /* _KEYS_RXRPC_TYPE_H */ | 131 | #endif /* _KEYS_RXRPC_TYPE_H */ |
diff --git a/include/linux/agp_backend.h b/include/linux/agp_backend.h index 76fa794fdac0..880130f7311f 100644 --- a/include/linux/agp_backend.h +++ b/include/linux/agp_backend.h | |||
@@ -79,9 +79,12 @@ struct agp_memory { | |||
79 | u32 physical; | 79 | u32 physical; |
80 | bool is_bound; | 80 | bool is_bound; |
81 | bool is_flushed; | 81 | bool is_flushed; |
82 | bool vmalloc_flag; | 82 | bool vmalloc_flag; |
83 | /* list of agp_memory mapped to the aperture */ | 83 | /* list of agp_memory mapped to the aperture */ |
84 | struct list_head mapped_list; | 84 | struct list_head mapped_list; |
85 | /* DMA-mapped addresses */ | ||
86 | struct scatterlist *sg_list; | ||
87 | int num_sg; | ||
85 | }; | 88 | }; |
86 | 89 | ||
87 | #define AGP_NORMAL_MEMORY 0 | 90 | #define AGP_NORMAL_MEMORY 0 |
diff --git a/include/linux/attribute_container.h b/include/linux/attribute_container.h index 794ad74b1d61..c3ab81428c66 100644 --- a/include/linux/attribute_container.h +++ b/include/linux/attribute_container.h | |||
@@ -17,7 +17,7 @@ struct attribute_container { | |||
17 | struct list_head node; | 17 | struct list_head node; |
18 | struct klist containers; | 18 | struct klist containers; |
19 | struct class *class; | 19 | struct class *class; |
20 | struct attribute_group *grp; | 20 | const struct attribute_group *grp; |
21 | struct device_attribute **attrs; | 21 | struct device_attribute **attrs; |
22 | int (*match)(struct attribute_container *, struct device *); | 22 | int (*match)(struct attribute_container *, struct device *); |
23 | #define ATTRIBUTE_CONTAINER_NO_CLASSDEVS 0x01 | 23 | #define ATTRIBUTE_CONTAINER_NO_CLASSDEVS 0x01 |
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index f169bcb90b58..0ee33c2e6129 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h | |||
@@ -59,6 +59,7 @@ struct bdi_writeback { | |||
59 | 59 | ||
60 | struct backing_dev_info { | 60 | struct backing_dev_info { |
61 | struct list_head bdi_list; | 61 | struct list_head bdi_list; |
62 | struct rcu_head rcu_head; | ||
62 | unsigned long ra_pages; /* max readahead in PAGE_CACHE_SIZE units */ | 63 | unsigned long ra_pages; /* max readahead in PAGE_CACHE_SIZE units */ |
63 | unsigned long state; /* Always use atomic bitops on this */ | 64 | unsigned long state; /* Always use atomic bitops on this */ |
64 | unsigned int capabilities; /* Device capabilities */ | 65 | unsigned int capabilities; /* Device capabilities */ |
@@ -100,7 +101,7 @@ int bdi_register(struct backing_dev_info *bdi, struct device *parent, | |||
100 | const char *fmt, ...); | 101 | const char *fmt, ...); |
101 | int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); | 102 | int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); |
102 | void bdi_unregister(struct backing_dev_info *bdi); | 103 | void bdi_unregister(struct backing_dev_info *bdi); |
103 | void bdi_start_writeback(struct writeback_control *wbc); | 104 | void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages); |
104 | int bdi_writeback_task(struct bdi_writeback *wb); | 105 | int bdi_writeback_task(struct bdi_writeback *wb); |
105 | int bdi_has_dirty_io(struct backing_dev_info *bdi); | 106 | int bdi_has_dirty_io(struct backing_dev_info *bdi); |
106 | 107 | ||
diff --git a/include/linux/device.h b/include/linux/device.h index a28642975053..847b763e40e9 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -2,7 +2,8 @@ | |||
2 | * device.h - generic, centralized driver model | 2 | * device.h - generic, centralized driver model |
3 | * | 3 | * |
4 | * Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org> | 4 | * Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org> |
5 | * Copyright (c) 2004-2007 Greg Kroah-Hartman <gregkh@suse.de> | 5 | * Copyright (c) 2004-2009 Greg Kroah-Hartman <gregkh@suse.de> |
6 | * Copyright (c) 2008-2009 Novell Inc. | ||
6 | * | 7 | * |
7 | * This file is released under the GPLv2 | 8 | * This file is released under the GPLv2 |
8 | * | 9 | * |
@@ -130,7 +131,7 @@ struct device_driver { | |||
130 | void (*shutdown) (struct device *dev); | 131 | void (*shutdown) (struct device *dev); |
131 | int (*suspend) (struct device *dev, pm_message_t state); | 132 | int (*suspend) (struct device *dev, pm_message_t state); |
132 | int (*resume) (struct device *dev); | 133 | int (*resume) (struct device *dev); |
133 | struct attribute_group **groups; | 134 | const struct attribute_group **groups; |
134 | 135 | ||
135 | const struct dev_pm_ops *pm; | 136 | const struct dev_pm_ops *pm; |
136 | 137 | ||
@@ -224,6 +225,14 @@ extern void class_unregister(struct class *class); | |||
224 | __class_register(class, &__key); \ | 225 | __class_register(class, &__key); \ |
225 | }) | 226 | }) |
226 | 227 | ||
228 | struct class_compat; | ||
229 | struct class_compat *class_compat_register(const char *name); | ||
230 | void class_compat_unregister(struct class_compat *cls); | ||
231 | int class_compat_create_link(struct class_compat *cls, struct device *dev, | ||
232 | struct device *device_link); | ||
233 | void class_compat_remove_link(struct class_compat *cls, struct device *dev, | ||
234 | struct device *device_link); | ||
235 | |||
227 | extern void class_dev_iter_init(struct class_dev_iter *iter, | 236 | extern void class_dev_iter_init(struct class_dev_iter *iter, |
228 | struct class *class, | 237 | struct class *class, |
229 | struct device *start, | 238 | struct device *start, |
@@ -287,7 +296,7 @@ extern void class_destroy(struct class *cls); | |||
287 | */ | 296 | */ |
288 | struct device_type { | 297 | struct device_type { |
289 | const char *name; | 298 | const char *name; |
290 | struct attribute_group **groups; | 299 | const struct attribute_group **groups; |
291 | int (*uevent)(struct device *dev, struct kobj_uevent_env *env); | 300 | int (*uevent)(struct device *dev, struct kobj_uevent_env *env); |
292 | char *(*nodename)(struct device *dev); | 301 | char *(*nodename)(struct device *dev); |
293 | void (*release)(struct device *dev); | 302 | void (*release)(struct device *dev); |
@@ -381,7 +390,6 @@ struct device { | |||
381 | struct bus_type *bus; /* type of bus device is on */ | 390 | struct bus_type *bus; /* type of bus device is on */ |
382 | struct device_driver *driver; /* which driver has allocated this | 391 | struct device_driver *driver; /* which driver has allocated this |
383 | device */ | 392 | device */ |
384 | void *driver_data; /* data private to the driver */ | ||
385 | void *platform_data; /* Platform specific data, device | 393 | void *platform_data; /* Platform specific data, device |
386 | core doesn't touch it */ | 394 | core doesn't touch it */ |
387 | struct dev_pm_info power; | 395 | struct dev_pm_info power; |
@@ -412,7 +420,7 @@ struct device { | |||
412 | 420 | ||
413 | struct klist_node knode_class; | 421 | struct klist_node knode_class; |
414 | struct class *class; | 422 | struct class *class; |
415 | struct attribute_group **groups; /* optional groups */ | 423 | const struct attribute_group **groups; /* optional groups */ |
416 | 424 | ||
417 | void (*release)(struct device *dev); | 425 | void (*release)(struct device *dev); |
418 | }; | 426 | }; |
@@ -447,16 +455,6 @@ static inline void set_dev_node(struct device *dev, int node) | |||
447 | } | 455 | } |
448 | #endif | 456 | #endif |
449 | 457 | ||
450 | static inline void *dev_get_drvdata(const struct device *dev) | ||
451 | { | ||
452 | return dev->driver_data; | ||
453 | } | ||
454 | |||
455 | static inline void dev_set_drvdata(struct device *dev, void *data) | ||
456 | { | ||
457 | dev->driver_data = data; | ||
458 | } | ||
459 | |||
460 | static inline unsigned int dev_get_uevent_suppress(const struct device *dev) | 458 | static inline unsigned int dev_get_uevent_suppress(const struct device *dev) |
461 | { | 459 | { |
462 | return dev->kobj.uevent_suppress; | 460 | return dev->kobj.uevent_suppress; |
@@ -490,6 +488,8 @@ extern int device_rename(struct device *dev, char *new_name); | |||
490 | extern int device_move(struct device *dev, struct device *new_parent, | 488 | extern int device_move(struct device *dev, struct device *new_parent, |
491 | enum dpm_order dpm_order); | 489 | enum dpm_order dpm_order); |
492 | extern const char *device_get_nodename(struct device *dev, const char **tmp); | 490 | extern const char *device_get_nodename(struct device *dev, const char **tmp); |
491 | extern void *dev_get_drvdata(const struct device *dev); | ||
492 | extern void dev_set_drvdata(struct device *dev, void *data); | ||
493 | 493 | ||
494 | /* | 494 | /* |
495 | * Root device objects for grouping under /sys/devices | 495 | * Root device objects for grouping under /sys/devices |
@@ -502,6 +502,11 @@ static inline struct device *root_device_register(const char *name) | |||
502 | } | 502 | } |
503 | extern void root_device_unregister(struct device *root); | 503 | extern void root_device_unregister(struct device *root); |
504 | 504 | ||
505 | static inline void *dev_get_platdata(const struct device *dev) | ||
506 | { | ||
507 | return dev->platform_data; | ||
508 | } | ||
509 | |||
505 | /* | 510 | /* |
506 | * Manual binding of a device to driver. See drivers/base/bus.c | 511 | * Manual binding of a device to driver. See drivers/base/bus.c |
507 | * for information on use. | 512 | * for information on use. |
@@ -547,6 +552,16 @@ extern void put_device(struct device *dev); | |||
547 | 552 | ||
548 | extern void wait_for_device_probe(void); | 553 | extern void wait_for_device_probe(void); |
549 | 554 | ||
555 | #ifdef CONFIG_DEVTMPFS | ||
556 | extern int devtmpfs_create_node(struct device *dev); | ||
557 | extern int devtmpfs_delete_node(struct device *dev); | ||
558 | extern int devtmpfs_mount(const char *mountpoint); | ||
559 | #else | ||
560 | static inline int devtmpfs_create_node(struct device *dev) { return 0; } | ||
561 | static inline int devtmpfs_delete_node(struct device *dev) { return 0; } | ||
562 | static inline int devtmpfs_mount(const char *mountpoint) { return 0; } | ||
563 | #endif | ||
564 | |||
550 | /* drivers/base/power/shutdown.c */ | 565 | /* drivers/base/power/shutdown.c */ |
551 | extern void device_shutdown(void); | 566 | extern void device_shutdown(void); |
552 | 567 | ||
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index c0f6c3cd788c..91b761846061 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h | |||
@@ -58,6 +58,7 @@ struct dma_map_ops { | |||
58 | enum dma_data_direction dir); | 58 | enum dma_data_direction dir); |
59 | int (*mapping_error)(struct device *dev, dma_addr_t dma_addr); | 59 | int (*mapping_error)(struct device *dev, dma_addr_t dma_addr); |
60 | int (*dma_supported)(struct device *dev, u64 mask); | 60 | int (*dma_supported)(struct device *dev, u64 mask); |
61 | int (*set_dma_mask)(struct device *dev, u64 mask); | ||
61 | int is_phys; | 62 | int is_phys; |
62 | }; | 63 | }; |
63 | 64 | ||
diff --git a/include/linux/dvb/dmx.h b/include/linux/dvb/dmx.h index fef943738a24..f078f3ac82d4 100644 --- a/include/linux/dvb/dmx.h +++ b/include/linux/dvb/dmx.h | |||
@@ -151,5 +151,7 @@ struct dmx_stc { | |||
151 | #define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t) | 151 | #define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t) |
152 | #define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t) | 152 | #define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t) |
153 | #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc) | 153 | #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc) |
154 | #define DMX_ADD_PID _IOW('o', 51, __u16) | ||
155 | #define DMX_REMOVE_PID _IOW('o', 52, __u16) | ||
154 | 156 | ||
155 | #endif /*_DVBDMX_H_*/ | 157 | #endif /*_DVBDMX_H_*/ |
diff --git a/include/linux/fs.h b/include/linux/fs.h index b21cf6b9c80b..90162fb3bf04 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -655,7 +655,6 @@ struct block_device { | |||
655 | int bd_invalidated; | 655 | int bd_invalidated; |
656 | struct gendisk * bd_disk; | 656 | struct gendisk * bd_disk; |
657 | struct list_head bd_list; | 657 | struct list_head bd_list; |
658 | struct backing_dev_info *bd_inode_backing_dev_info; | ||
659 | /* | 658 | /* |
660 | * Private data. You must have bd_claim'ed the block_device | 659 | * Private data. You must have bd_claim'ed the block_device |
661 | * to use this. NOTE: bd_claim allows an owner to claim | 660 | * to use this. NOTE: bd_claim allows an owner to claim |
@@ -1343,6 +1342,7 @@ struct super_block { | |||
1343 | int s_nr_dentry_unused; /* # of dentry on lru */ | 1342 | int s_nr_dentry_unused; /* # of dentry on lru */ |
1344 | 1343 | ||
1345 | struct block_device *s_bdev; | 1344 | struct block_device *s_bdev; |
1345 | struct backing_dev_info *s_bdi; | ||
1346 | struct mtd_info *s_mtd; | 1346 | struct mtd_info *s_mtd; |
1347 | struct list_head s_instances; | 1347 | struct list_head s_instances; |
1348 | struct quota_info s_dquot; /* Diskquota specific options */ | 1348 | struct quota_info s_dquot; /* Diskquota specific options */ |
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 23f7179bf74e..bd099ba82ccc 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
@@ -1,8 +1,8 @@ | |||
1 | #ifndef _LINUX_FTRACE_EVENT_H | 1 | #ifndef _LINUX_FTRACE_EVENT_H |
2 | #define _LINUX_FTRACE_EVENT_H | 2 | #define _LINUX_FTRACE_EVENT_H |
3 | 3 | ||
4 | #include <linux/trace_seq.h> | ||
5 | #include <linux/ring_buffer.h> | 4 | #include <linux/ring_buffer.h> |
5 | #include <linux/trace_seq.h> | ||
6 | #include <linux/percpu.h> | 6 | #include <linux/percpu.h> |
7 | 7 | ||
8 | struct trace_array; | 8 | struct trace_array; |
@@ -34,7 +34,7 @@ struct trace_entry { | |||
34 | unsigned char flags; | 34 | unsigned char flags; |
35 | unsigned char preempt_count; | 35 | unsigned char preempt_count; |
36 | int pid; | 36 | int pid; |
37 | int tgid; | 37 | int lock_depth; |
38 | }; | 38 | }; |
39 | 39 | ||
40 | #define FTRACE_MAX_EVENT \ | 40 | #define FTRACE_MAX_EVENT \ |
@@ -135,7 +135,7 @@ struct ftrace_event_call { | |||
135 | }; | 135 | }; |
136 | 136 | ||
137 | #define MAX_FILTER_PRED 32 | 137 | #define MAX_FILTER_PRED 32 |
138 | #define MAX_FILTER_STR_VAL 128 | 138 | #define MAX_FILTER_STR_VAL 256 /* Should handle KSYM_SYMBOL_LEN */ |
139 | 139 | ||
140 | extern void destroy_preds(struct ftrace_event_call *call); | 140 | extern void destroy_preds(struct ftrace_event_call *call); |
141 | extern int filter_match_preds(struct ftrace_event_call *call, void *rec); | 141 | extern int filter_match_preds(struct ftrace_event_call *call, void *rec); |
diff --git a/include/linux/ide.h b/include/linux/ide.h index edc93a6d931d..e4135d6e0556 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -258,6 +258,7 @@ enum { | |||
258 | IDE_TFLAG_DYN = (1 << 5), | 258 | IDE_TFLAG_DYN = (1 << 5), |
259 | IDE_TFLAG_FS = (1 << 6), | 259 | IDE_TFLAG_FS = (1 << 6), |
260 | IDE_TFLAG_MULTI_PIO = (1 << 7), | 260 | IDE_TFLAG_MULTI_PIO = (1 << 7), |
261 | IDE_TFLAG_SET_XFER = (1 << 8), | ||
261 | }; | 262 | }; |
262 | 263 | ||
263 | enum { | 264 | enum { |
@@ -294,7 +295,7 @@ struct ide_cmd { | |||
294 | } out, in; | 295 | } out, in; |
295 | } valid; | 296 | } valid; |
296 | 297 | ||
297 | u8 tf_flags; | 298 | u16 tf_flags; |
298 | u8 ftf_flags; /* for TASKFILE ioctl */ | 299 | u8 ftf_flags; /* for TASKFILE ioctl */ |
299 | int protocol; | 300 | int protocol; |
300 | 301 | ||
@@ -918,8 +919,7 @@ __IDE_PROC_DEVSET(_name, _min, _max, NULL, NULL) | |||
918 | typedef struct { | 919 | typedef struct { |
919 | const char *name; | 920 | const char *name; |
920 | mode_t mode; | 921 | mode_t mode; |
921 | read_proc_t *read_proc; | 922 | const struct file_operations *proc_fops; |
922 | write_proc_t *write_proc; | ||
923 | } ide_proc_entry_t; | 923 | } ide_proc_entry_t; |
924 | 924 | ||
925 | void proc_ide_create(void); | 925 | void proc_ide_create(void); |
@@ -931,24 +931,8 @@ void ide_proc_unregister_port(ide_hwif_t *); | |||
931 | void ide_proc_register_driver(ide_drive_t *, struct ide_driver *); | 931 | void ide_proc_register_driver(ide_drive_t *, struct ide_driver *); |
932 | void ide_proc_unregister_driver(ide_drive_t *, struct ide_driver *); | 932 | void ide_proc_unregister_driver(ide_drive_t *, struct ide_driver *); |
933 | 933 | ||
934 | read_proc_t proc_ide_read_capacity; | 934 | extern const struct file_operations ide_capacity_proc_fops; |
935 | read_proc_t proc_ide_read_geometry; | 935 | extern const struct file_operations ide_geometry_proc_fops; |
936 | |||
937 | /* | ||
938 | * Standard exit stuff: | ||
939 | */ | ||
940 | #define PROC_IDE_READ_RETURN(page,start,off,count,eof,len) \ | ||
941 | { \ | ||
942 | len -= off; \ | ||
943 | if (len < count) { \ | ||
944 | *eof = 1; \ | ||
945 | if (len <= 0) \ | ||
946 | return 0; \ | ||
947 | } else \ | ||
948 | len = count; \ | ||
949 | *start = page + off; \ | ||
950 | return len; \ | ||
951 | } | ||
952 | #else | 936 | #else |
953 | static inline void proc_ide_create(void) { ; } | 937 | static inline void proc_ide_create(void) { ; } |
954 | static inline void proc_ide_destroy(void) { ; } | 938 | static inline void proc_ide_destroy(void) { ; } |
@@ -960,7 +944,6 @@ static inline void ide_proc_register_driver(ide_drive_t *drive, | |||
960 | struct ide_driver *driver) { ; } | 944 | struct ide_driver *driver) { ; } |
961 | static inline void ide_proc_unregister_driver(ide_drive_t *drive, | 945 | static inline void ide_proc_unregister_driver(ide_drive_t *drive, |
962 | struct ide_driver *driver) { ; } | 946 | struct ide_driver *driver) { ; } |
963 | #define PROC_IDE_READ_RETURN(page,start,off,count,eof,len) return 0; | ||
964 | #endif | 947 | #endif |
965 | 948 | ||
966 | enum { | 949 | enum { |
@@ -1081,6 +1064,7 @@ extern void ide_fixstring(u8 *, const int, const int); | |||
1081 | 1064 | ||
1082 | int ide_busy_sleep(ide_drive_t *, unsigned long, int); | 1065 | int ide_busy_sleep(ide_drive_t *, unsigned long, int); |
1083 | 1066 | ||
1067 | int __ide_wait_stat(ide_drive_t *, u8, u8, unsigned long, u8 *); | ||
1084 | int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long); | 1068 | int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long); |
1085 | 1069 | ||
1086 | ide_startstop_t ide_do_park_unpark(ide_drive_t *, struct request *); | 1070 | ide_startstop_t ide_do_park_unpark(ide_drive_t *, struct request *); |
@@ -1169,7 +1153,7 @@ int ide_no_data_taskfile(ide_drive_t *, struct ide_cmd *); | |||
1169 | 1153 | ||
1170 | int ide_taskfile_ioctl(ide_drive_t *, unsigned long); | 1154 | int ide_taskfile_ioctl(ide_drive_t *, unsigned long); |
1171 | 1155 | ||
1172 | int ide_dev_read_id(ide_drive_t *, u8, u16 *); | 1156 | int ide_dev_read_id(ide_drive_t *, u8, u16 *, int); |
1173 | 1157 | ||
1174 | extern int ide_driveid_update(ide_drive_t *); | 1158 | extern int ide_driveid_update(ide_drive_t *); |
1175 | extern int ide_config_drive_speed(ide_drive_t *, u8); | 1159 | extern int ide_config_drive_speed(ide_drive_t *, u8); |
diff --git a/include/linux/igmp.h b/include/linux/igmp.h index 92fbd8cbd68f..fe158e0e20e6 100644 --- a/include/linux/igmp.h +++ b/include/linux/igmp.h | |||
@@ -233,6 +233,8 @@ extern void ip_mc_init_dev(struct in_device *); | |||
233 | extern void ip_mc_destroy_dev(struct in_device *); | 233 | extern void ip_mc_destroy_dev(struct in_device *); |
234 | extern void ip_mc_up(struct in_device *); | 234 | extern void ip_mc_up(struct in_device *); |
235 | extern void ip_mc_down(struct in_device *); | 235 | extern void ip_mc_down(struct in_device *); |
236 | extern void ip_mc_unmap(struct in_device *); | ||
237 | extern void ip_mc_remap(struct in_device *); | ||
236 | extern void ip_mc_dec_group(struct in_device *in_dev, __be32 addr); | 238 | extern void ip_mc_dec_group(struct in_device *in_dev, __be32 addr); |
237 | extern void ip_mc_inc_group(struct in_device *in_dev, __be32 addr); | 239 | extern void ip_mc_inc_group(struct in_device *in_dev, __be32 addr); |
238 | extern void ip_mc_rejoin_group(struct ip_mc_list *im); | 240 | extern void ip_mc_rejoin_group(struct ip_mc_list *im); |
diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h index 0adb0f91568c..97eb928b4924 100644 --- a/include/linux/io-mapping.h +++ b/include/linux/io-mapping.h | |||
@@ -49,23 +49,30 @@ static inline struct io_mapping * | |||
49 | io_mapping_create_wc(resource_size_t base, unsigned long size) | 49 | io_mapping_create_wc(resource_size_t base, unsigned long size) |
50 | { | 50 | { |
51 | struct io_mapping *iomap; | 51 | struct io_mapping *iomap; |
52 | 52 | pgprot_t prot; | |
53 | if (!is_io_mapping_possible(base, size)) | ||
54 | return NULL; | ||
55 | 53 | ||
56 | iomap = kmalloc(sizeof(*iomap), GFP_KERNEL); | 54 | iomap = kmalloc(sizeof(*iomap), GFP_KERNEL); |
57 | if (!iomap) | 55 | if (!iomap) |
58 | return NULL; | 56 | goto out_err; |
57 | |||
58 | if (iomap_create_wc(base, size, &prot)) | ||
59 | goto out_free; | ||
59 | 60 | ||
60 | iomap->base = base; | 61 | iomap->base = base; |
61 | iomap->size = size; | 62 | iomap->size = size; |
62 | iomap->prot = pgprot_writecombine(__pgprot(__PAGE_KERNEL)); | 63 | iomap->prot = prot; |
63 | return iomap; | 64 | return iomap; |
65 | |||
66 | out_free: | ||
67 | kfree(iomap); | ||
68 | out_err: | ||
69 | return NULL; | ||
64 | } | 70 | } |
65 | 71 | ||
66 | static inline void | 72 | static inline void |
67 | io_mapping_free(struct io_mapping *mapping) | 73 | io_mapping_free(struct io_mapping *mapping) |
68 | { | 74 | { |
75 | iomap_free(mapping->base, mapping->size); | ||
69 | kfree(mapping); | 76 | kfree(mapping); |
70 | } | 77 | } |
71 | 78 | ||
diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h index bcd9c07848be..3a46b7b7abb2 100644 --- a/include/linux/kprobes.h +++ b/include/linux/kprobes.h | |||
@@ -48,13 +48,13 @@ | |||
48 | #define KPROBE_HIT_SSDONE 0x00000008 | 48 | #define KPROBE_HIT_SSDONE 0x00000008 |
49 | 49 | ||
50 | /* Attach to insert probes on any functions which should be ignored*/ | 50 | /* Attach to insert probes on any functions which should be ignored*/ |
51 | #define __kprobes __attribute__((__section__(".kprobes.text"))) notrace | 51 | #define __kprobes __attribute__((__section__(".kprobes.text"))) |
52 | #else /* CONFIG_KPROBES */ | 52 | #else /* CONFIG_KPROBES */ |
53 | typedef int kprobe_opcode_t; | 53 | typedef int kprobe_opcode_t; |
54 | struct arch_specific_insn { | 54 | struct arch_specific_insn { |
55 | int dummy; | 55 | int dummy; |
56 | }; | 56 | }; |
57 | #define __kprobes notrace | 57 | #define __kprobes |
58 | #endif /* CONFIG_KPROBES */ | 58 | #endif /* CONFIG_KPROBES */ |
59 | 59 | ||
60 | struct kprobe; | 60 | struct kprobe; |
diff --git a/include/linux/mtd/partitions.h b/include/linux/mtd/partitions.h index b70313d33ff8..274b6196091d 100644 --- a/include/linux/mtd/partitions.h +++ b/include/linux/mtd/partitions.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MTD partitioning layer definitions | 2 | * MTD partitioning layer definitions |
3 | * | 3 | * |
4 | * (C) 2000 Nicolas Pitre <nico@cam.org> | 4 | * (C) 2000 Nicolas Pitre <nico@fluxnic.net> |
5 | * | 5 | * |
6 | * This code is GPL | 6 | * This code is GPL |
7 | */ | 7 | */ |
diff --git a/include/linux/net.h b/include/linux/net.h index 4fc2ffd527f9..9040a10584f7 100644 --- a/include/linux/net.h +++ b/include/linux/net.h | |||
@@ -57,6 +57,7 @@ typedef enum { | |||
57 | #include <linux/random.h> | 57 | #include <linux/random.h> |
58 | #include <linux/wait.h> | 58 | #include <linux/wait.h> |
59 | #include <linux/fcntl.h> /* For O_CLOEXEC and O_NONBLOCK */ | 59 | #include <linux/fcntl.h> /* For O_CLOEXEC and O_NONBLOCK */ |
60 | #include <linux/kmemcheck.h> | ||
60 | 61 | ||
61 | struct poll_table_struct; | 62 | struct poll_table_struct; |
62 | struct pipe_inode_info; | 63 | struct pipe_inode_info; |
@@ -127,7 +128,11 @@ enum sock_shutdown_cmd { | |||
127 | */ | 128 | */ |
128 | struct socket { | 129 | struct socket { |
129 | socket_state state; | 130 | socket_state state; |
131 | |||
132 | kmemcheck_bitfield_begin(type); | ||
130 | short type; | 133 | short type; |
134 | kmemcheck_bitfield_end(type); | ||
135 | |||
131 | unsigned long flags; | 136 | unsigned long flags; |
132 | /* | 137 | /* |
133 | * Please keep fasync_list & wait fields in the same cache line | 138 | * Please keep fasync_list & wait fields in the same cache line |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 65ee1929b2b1..94958c109761 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -895,7 +895,7 @@ struct net_device | |||
895 | /* class/net/name entry */ | 895 | /* class/net/name entry */ |
896 | struct device dev; | 896 | struct device dev; |
897 | /* space for optional statistics and wireless sysfs groups */ | 897 | /* space for optional statistics and wireless sysfs groups */ |
898 | struct attribute_group *sysfs_groups[3]; | 898 | const struct attribute_group *sysfs_groups[3]; |
899 | 899 | ||
900 | /* rtnetlink link ops */ | 900 | /* rtnetlink link ops */ |
901 | const struct rtnl_link_ops *rtnl_link_ops; | 901 | const struct rtnl_link_ops *rtnl_link_ops; |
@@ -1873,7 +1873,8 @@ extern void __dev_addr_unsync(struct dev_addr_list **to, int *to_count, struct | |||
1873 | extern int dev_set_promiscuity(struct net_device *dev, int inc); | 1873 | extern int dev_set_promiscuity(struct net_device *dev, int inc); |
1874 | extern int dev_set_allmulti(struct net_device *dev, int inc); | 1874 | extern int dev_set_allmulti(struct net_device *dev, int inc); |
1875 | extern void netdev_state_change(struct net_device *dev); | 1875 | extern void netdev_state_change(struct net_device *dev); |
1876 | extern void netdev_bonding_change(struct net_device *dev); | 1876 | extern void netdev_bonding_change(struct net_device *dev, |
1877 | unsigned long event); | ||
1877 | extern void netdev_features_change(struct net_device *dev); | 1878 | extern void netdev_features_change(struct net_device *dev); |
1878 | /* Load a device via the kmod */ | 1879 | /* Load a device via the kmod */ |
1879 | extern void dev_load(struct net *net, const char *name); | 1880 | extern void dev_load(struct net *net, const char *name); |
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index 0fbecbbe8e9e..080f6ba9e73a 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
@@ -176,12 +176,16 @@ struct netlink_skb_parms | |||
176 | #define NETLINK_CREDS(skb) (&NETLINK_CB((skb)).creds) | 176 | #define NETLINK_CREDS(skb) (&NETLINK_CB((skb)).creds) |
177 | 177 | ||
178 | 178 | ||
179 | extern void netlink_table_grab(void); | ||
180 | extern void netlink_table_ungrab(void); | ||
181 | |||
179 | extern struct sock *netlink_kernel_create(struct net *net, | 182 | extern struct sock *netlink_kernel_create(struct net *net, |
180 | int unit,unsigned int groups, | 183 | int unit,unsigned int groups, |
181 | void (*input)(struct sk_buff *skb), | 184 | void (*input)(struct sk_buff *skb), |
182 | struct mutex *cb_mutex, | 185 | struct mutex *cb_mutex, |
183 | struct module *module); | 186 | struct module *module); |
184 | extern void netlink_kernel_release(struct sock *sk); | 187 | extern void netlink_kernel_release(struct sock *sk); |
188 | extern int __netlink_change_ngroups(struct sock *sk, unsigned int groups); | ||
185 | extern int netlink_change_ngroups(struct sock *sk, unsigned int groups); | 189 | extern int netlink_change_ngroups(struct sock *sk, unsigned int groups); |
186 | extern void netlink_clear_multicast_users(struct sock *sk, unsigned int group); | 190 | extern void netlink_clear_multicast_users(struct sock *sk, unsigned int group); |
187 | extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); | 191 | extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); |
diff --git a/include/linux/notifier.h b/include/linux/notifier.h index 81bc252dc8ac..44428d247dbe 100644 --- a/include/linux/notifier.h +++ b/include/linux/notifier.h | |||
@@ -199,6 +199,8 @@ static inline int notifier_to_errno(int ret) | |||
199 | #define NETDEV_FEAT_CHANGE 0x000B | 199 | #define NETDEV_FEAT_CHANGE 0x000B |
200 | #define NETDEV_BONDING_FAILOVER 0x000C | 200 | #define NETDEV_BONDING_FAILOVER 0x000C |
201 | #define NETDEV_PRE_UP 0x000D | 201 | #define NETDEV_PRE_UP 0x000D |
202 | #define NETDEV_BONDING_OLDTYPE 0x000E | ||
203 | #define NETDEV_BONDING_NEWTYPE 0x000F | ||
202 | 204 | ||
203 | #define SYS_DOWN 0x0001 /* Notify of system down */ | 205 | #define SYS_DOWN 0x0001 /* Notify of system down */ |
204 | #define SYS_RESTART SYS_DOWN | 206 | #define SYS_RESTART SYS_DOWN |
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index e2e5ce543595..2b87acfc5f87 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
@@ -99,7 +99,7 @@ enum pageflags { | |||
99 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT | 99 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT |
100 | PG_mlocked, /* Page is vma mlocked */ | 100 | PG_mlocked, /* Page is vma mlocked */ |
101 | #endif | 101 | #endif |
102 | #ifdef CONFIG_IA64_UNCACHED_ALLOCATOR | 102 | #ifdef CONFIG_ARCH_USES_PG_UNCACHED |
103 | PG_uncached, /* Page has been mapped as uncached */ | 103 | PG_uncached, /* Page has been mapped as uncached */ |
104 | #endif | 104 | #endif |
105 | __NR_PAGEFLAGS, | 105 | __NR_PAGEFLAGS, |
@@ -257,7 +257,7 @@ PAGEFLAG_FALSE(Mlocked) | |||
257 | SETPAGEFLAG_NOOP(Mlocked) TESTCLEARFLAG_FALSE(Mlocked) | 257 | SETPAGEFLAG_NOOP(Mlocked) TESTCLEARFLAG_FALSE(Mlocked) |
258 | #endif | 258 | #endif |
259 | 259 | ||
260 | #ifdef CONFIG_IA64_UNCACHED_ALLOCATOR | 260 | #ifdef CONFIG_ARCH_USES_PG_UNCACHED |
261 | PAGEFLAG(Uncached, uncached) | 261 | PAGEFLAG(Uncached, uncached) |
262 | #else | 262 | #else |
263 | PAGEFLAG_FALSE(Uncached) | 263 | PAGEFLAG_FALSE(Uncached) |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 115fb7ba5089..f5c7cd343e56 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -241,6 +241,7 @@ struct pci_dev { | |||
241 | unsigned int d1_support:1; /* Low power state D1 is supported */ | 241 | unsigned int d1_support:1; /* Low power state D1 is supported */ |
242 | unsigned int d2_support:1; /* Low power state D2 is supported */ | 242 | unsigned int d2_support:1; /* Low power state D2 is supported */ |
243 | unsigned int no_d1d2:1; /* Only allow D0 and D3 */ | 243 | unsigned int no_d1d2:1; /* Only allow D0 and D3 */ |
244 | unsigned int wakeup_prepared:1; | ||
244 | 245 | ||
245 | #ifdef CONFIG_PCIEASPM | 246 | #ifdef CONFIG_PCIEASPM |
246 | struct pcie_link_state *link_state; /* ASPM link state. */ | 247 | struct pcie_link_state *link_state; /* ASPM link state. */ |
@@ -273,9 +274,12 @@ struct pci_dev { | |||
273 | unsigned int ari_enabled:1; /* ARI forwarding */ | 274 | unsigned int ari_enabled:1; /* ARI forwarding */ |
274 | unsigned int is_managed:1; | 275 | unsigned int is_managed:1; |
275 | unsigned int is_pcie:1; | 276 | unsigned int is_pcie:1; |
277 | unsigned int needs_freset:1; /* Dev requires fundamental reset */ | ||
276 | unsigned int state_saved:1; | 278 | unsigned int state_saved:1; |
277 | unsigned int is_physfn:1; | 279 | unsigned int is_physfn:1; |
278 | unsigned int is_virtfn:1; | 280 | unsigned int is_virtfn:1; |
281 | unsigned int reset_fn:1; | ||
282 | unsigned int is_hotplug_bridge:1; | ||
279 | pci_dev_flags_t dev_flags; | 283 | pci_dev_flags_t dev_flags; |
280 | atomic_t enable_cnt; /* pci_enable_device has been called */ | 284 | atomic_t enable_cnt; /* pci_enable_device has been called */ |
281 | 285 | ||
@@ -794,6 +798,11 @@ int __must_check __pci_register_driver(struct pci_driver *, struct module *, | |||
794 | void pci_unregister_driver(struct pci_driver *dev); | 798 | void pci_unregister_driver(struct pci_driver *dev); |
795 | void pci_remove_behind_bridge(struct pci_dev *dev); | 799 | void pci_remove_behind_bridge(struct pci_dev *dev); |
796 | struct pci_driver *pci_dev_driver(const struct pci_dev *dev); | 800 | struct pci_driver *pci_dev_driver(const struct pci_dev *dev); |
801 | int pci_add_dynid(struct pci_driver *drv, | ||
802 | unsigned int vendor, unsigned int device, | ||
803 | unsigned int subvendor, unsigned int subdevice, | ||
804 | unsigned int class, unsigned int class_mask, | ||
805 | unsigned long driver_data); | ||
797 | const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, | 806 | const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, |
798 | struct pci_dev *dev); | 807 | struct pci_dev *dev); |
799 | int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, | 808 | int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, |
@@ -805,6 +814,8 @@ int pci_cfg_space_size_ext(struct pci_dev *dev); | |||
805 | int pci_cfg_space_size(struct pci_dev *dev); | 814 | int pci_cfg_space_size(struct pci_dev *dev); |
806 | unsigned char pci_bus_max_busnr(struct pci_bus *bus); | 815 | unsigned char pci_bus_max_busnr(struct pci_bus *bus); |
807 | 816 | ||
817 | int pci_set_vga_state(struct pci_dev *pdev, bool decode, | ||
818 | unsigned int command_bits, bool change_bridge); | ||
808 | /* kmem_cache style wrapper around pci_alloc_consistent() */ | 819 | /* kmem_cache style wrapper around pci_alloc_consistent() */ |
809 | 820 | ||
810 | #include <linux/dmapool.h> | 821 | #include <linux/dmapool.h> |
@@ -1236,6 +1247,9 @@ extern int pci_pci_problems; | |||
1236 | extern unsigned long pci_cardbus_io_size; | 1247 | extern unsigned long pci_cardbus_io_size; |
1237 | extern unsigned long pci_cardbus_mem_size; | 1248 | extern unsigned long pci_cardbus_mem_size; |
1238 | 1249 | ||
1250 | extern unsigned long pci_hotplug_io_size; | ||
1251 | extern unsigned long pci_hotplug_mem_size; | ||
1252 | |||
1239 | int pcibios_add_platform_entries(struct pci_dev *dev); | 1253 | int pcibios_add_platform_entries(struct pci_dev *dev); |
1240 | void pcibios_disable_device(struct pci_dev *dev); | 1254 | void pcibios_disable_device(struct pci_dev *dev); |
1241 | int pcibios_set_pcie_reset_state(struct pci_dev *dev, | 1255 | int pcibios_set_pcie_reset_state(struct pci_dev *dev, |
diff --git a/include/linux/pci_hotplug.h b/include/linux/pci_hotplug.h index 4391741b99dc..652ba797696d 100644 --- a/include/linux/pci_hotplug.h +++ b/include/linux/pci_hotplug.h | |||
@@ -62,7 +62,8 @@ enum pcie_link_width { | |||
62 | }; | 62 | }; |
63 | 63 | ||
64 | enum pcie_link_speed { | 64 | enum pcie_link_speed { |
65 | PCIE_2PT5GB = 0x14, | 65 | PCIE_2_5GB = 0x14, |
66 | PCIE_5_0GB = 0x15, | ||
66 | PCIE_LNK_SPEED_UNKNOWN = 0xFF, | 67 | PCIE_LNK_SPEED_UNKNOWN = 0xFF, |
67 | }; | 68 | }; |
68 | 69 | ||
@@ -226,11 +227,18 @@ struct hotplug_params { | |||
226 | #ifdef CONFIG_ACPI | 227 | #ifdef CONFIG_ACPI |
227 | #include <acpi/acpi.h> | 228 | #include <acpi/acpi.h> |
228 | #include <acpi/acpi_bus.h> | 229 | #include <acpi/acpi_bus.h> |
229 | extern acpi_status acpi_get_hp_params_from_firmware(struct pci_bus *bus, | 230 | int pci_get_hp_params(struct pci_dev *dev, struct hotplug_params *hpp); |
230 | struct hotplug_params *hpp); | ||
231 | int acpi_get_hp_hw_control_from_firmware(struct pci_dev *dev, u32 flags); | 231 | int acpi_get_hp_hw_control_from_firmware(struct pci_dev *dev, u32 flags); |
232 | int acpi_pci_check_ejectable(struct pci_bus *pbus, acpi_handle handle); | 232 | int acpi_pci_check_ejectable(struct pci_bus *pbus, acpi_handle handle); |
233 | int acpi_pci_detect_ejectable(struct pci_bus *pbus); | 233 | int acpi_pci_detect_ejectable(acpi_handle handle); |
234 | #else | ||
235 | static inline int pci_get_hp_params(struct pci_dev *dev, | ||
236 | struct hotplug_params *hpp) | ||
237 | { | ||
238 | return -ENODEV; | ||
239 | } | ||
234 | #endif | 240 | #endif |
241 | |||
242 | void pci_configure_slot(struct pci_dev *dev); | ||
235 | #endif | 243 | #endif |
236 | 244 | ||
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 555a8262fbc2..3b6b788fe2b5 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -2,6 +2,9 @@ | |||
2 | * PCI Class, Vendor and Device IDs | 2 | * PCI Class, Vendor and Device IDs |
3 | * | 3 | * |
4 | * Please keep sorted. | 4 | * Please keep sorted. |
5 | * | ||
6 | * Do not add new entries to this file unless the definitions | ||
7 | * are shared between multiple drivers. | ||
5 | */ | 8 | */ |
6 | 9 | ||
7 | /* Device classes and subclasses */ | 10 | /* Device classes and subclasses */ |
@@ -881,6 +884,7 @@ | |||
881 | #define PCI_DEVICE_ID_APPLE_SH_SUNGEM 0x0051 | 884 | #define PCI_DEVICE_ID_APPLE_SH_SUNGEM 0x0051 |
882 | #define PCI_DEVICE_ID_APPLE_U3L_AGP 0x0058 | 885 | #define PCI_DEVICE_ID_APPLE_U3L_AGP 0x0058 |
883 | #define PCI_DEVICE_ID_APPLE_U3H_AGP 0x0059 | 886 | #define PCI_DEVICE_ID_APPLE_U3H_AGP 0x0059 |
887 | #define PCI_DEVICE_ID_APPLE_U4_PCIE 0x005b | ||
884 | #define PCI_DEVICE_ID_APPLE_IPID2_AGP 0x0066 | 888 | #define PCI_DEVICE_ID_APPLE_IPID2_AGP 0x0066 |
885 | #define PCI_DEVICE_ID_APPLE_IPID2_ATA 0x0069 | 889 | #define PCI_DEVICE_ID_APPLE_IPID2_ATA 0x0069 |
886 | #define PCI_DEVICE_ID_APPLE_IPID2_FW 0x006a | 890 | #define PCI_DEVICE_ID_APPLE_IPID2_FW 0x006a |
@@ -1525,6 +1529,8 @@ | |||
1525 | #define PCI_DEVICE_ID_ARTOP_ATP860R 0x0007 | 1529 | #define PCI_DEVICE_ID_ARTOP_ATP860R 0x0007 |
1526 | #define PCI_DEVICE_ID_ARTOP_ATP865 0x0008 | 1530 | #define PCI_DEVICE_ID_ARTOP_ATP865 0x0008 |
1527 | #define PCI_DEVICE_ID_ARTOP_ATP865R 0x0009 | 1531 | #define PCI_DEVICE_ID_ARTOP_ATP865R 0x0009 |
1532 | #define PCI_DEVICE_ID_ARTOP_ATP867A 0x000A | ||
1533 | #define PCI_DEVICE_ID_ARTOP_ATP867B 0x000B | ||
1528 | #define PCI_DEVICE_ID_ARTOP_AEC7610 0x8002 | 1534 | #define PCI_DEVICE_ID_ARTOP_AEC7610 0x8002 |
1529 | #define PCI_DEVICE_ID_ARTOP_AEC7612UW 0x8010 | 1535 | #define PCI_DEVICE_ID_ARTOP_AEC7612UW 0x8010 |
1530 | #define PCI_DEVICE_ID_ARTOP_AEC7612U 0x8020 | 1536 | #define PCI_DEVICE_ID_ARTOP_AEC7612U 0x8020 |
diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h index fcaee42c7ac2..dd0bed4f1cf0 100644 --- a/include/linux/pci_regs.h +++ b/include/linux/pci_regs.h | |||
@@ -42,6 +42,7 @@ | |||
42 | #define PCI_COMMAND_INTX_DISABLE 0x400 /* INTx Emulation Disable */ | 42 | #define PCI_COMMAND_INTX_DISABLE 0x400 /* INTx Emulation Disable */ |
43 | 43 | ||
44 | #define PCI_STATUS 0x06 /* 16 bits */ | 44 | #define PCI_STATUS 0x06 /* 16 bits */ |
45 | #define PCI_STATUS_INTERRUPT 0x08 /* Interrupt status */ | ||
45 | #define PCI_STATUS_CAP_LIST 0x10 /* Support Capability List */ | 46 | #define PCI_STATUS_CAP_LIST 0x10 /* Support Capability List */ |
46 | #define PCI_STATUS_66MHZ 0x20 /* Support 66 Mhz PCI 2.1 bus */ | 47 | #define PCI_STATUS_66MHZ 0x20 /* Support 66 Mhz PCI 2.1 bus */ |
47 | #define PCI_STATUS_UDF 0x40 /* Support User Definable Features [obsolete] */ | 48 | #define PCI_STATUS_UDF 0x40 /* Support User Definable Features [obsolete] */ |
diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h index 0761491b3eec..9bd03193ecd4 100644 --- a/include/linux/percpu-defs.h +++ b/include/linux/percpu-defs.h | |||
@@ -10,22 +10,70 @@ | |||
10 | /* | 10 | /* |
11 | * Base implementations of per-CPU variable declarations and definitions, where | 11 | * Base implementations of per-CPU variable declarations and definitions, where |
12 | * the section in which the variable is to be placed is provided by the | 12 | * the section in which the variable is to be placed is provided by the |
13 | * 'section' argument. This may be used to affect the parameters governing the | 13 | * 'sec' argument. This may be used to affect the parameters governing the |
14 | * variable's storage. | 14 | * variable's storage. |
15 | * | 15 | * |
16 | * NOTE! The sections for the DECLARE and for the DEFINE must match, lest | 16 | * NOTE! The sections for the DECLARE and for the DEFINE must match, lest |
17 | * linkage errors occur due the compiler generating the wrong code to access | 17 | * linkage errors occur due the compiler generating the wrong code to access |
18 | * that section. | 18 | * that section. |
19 | */ | 19 | */ |
20 | #define DECLARE_PER_CPU_SECTION(type, name, section) \ | 20 | #define __PCPU_ATTRS(sec) \ |
21 | extern \ | 21 | __attribute__((section(PER_CPU_BASE_SECTION sec))) \ |
22 | __attribute__((__section__(PER_CPU_BASE_SECTION section))) \ | 22 | PER_CPU_ATTRIBUTES |
23 | PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name | 23 | |
24 | 24 | #define __PCPU_DUMMY_ATTRS \ | |
25 | #define DEFINE_PER_CPU_SECTION(type, name, section) \ | 25 | __attribute__((section(".discard"), unused)) |
26 | __attribute__((__section__(PER_CPU_BASE_SECTION section))) \ | 26 | |
27 | PER_CPU_ATTRIBUTES PER_CPU_DEF_ATTRIBUTES \ | 27 | /* |
28 | * s390 and alpha modules require percpu variables to be defined as | ||
29 | * weak to force the compiler to generate GOT based external | ||
30 | * references for them. This is necessary because percpu sections | ||
31 | * will be located outside of the usually addressable area. | ||
32 | * | ||
33 | * This definition puts the following two extra restrictions when | ||
34 | * defining percpu variables. | ||
35 | * | ||
36 | * 1. The symbol must be globally unique, even the static ones. | ||
37 | * 2. Static percpu variables cannot be defined inside a function. | ||
38 | * | ||
39 | * Archs which need weak percpu definitions should define | ||
40 | * ARCH_NEEDS_WEAK_PER_CPU in asm/percpu.h when necessary. | ||
41 | * | ||
42 | * To ensure that the generic code observes the above two | ||
43 | * restrictions, if CONFIG_DEBUG_FORCE_WEAK_PER_CPU is set weak | ||
44 | * definition is used for all cases. | ||
45 | */ | ||
46 | #if defined(ARCH_NEEDS_WEAK_PER_CPU) || defined(CONFIG_DEBUG_FORCE_WEAK_PER_CPU) | ||
47 | /* | ||
48 | * __pcpu_scope_* dummy variable is used to enforce scope. It | ||
49 | * receives the static modifier when it's used in front of | ||
50 | * DEFINE_PER_CPU() and will trigger build failure if | ||
51 | * DECLARE_PER_CPU() is used for the same variable. | ||
52 | * | ||
53 | * __pcpu_unique_* dummy variable is used to enforce symbol uniqueness | ||
54 | * such that hidden weak symbol collision, which will cause unrelated | ||
55 | * variables to share the same address, can be detected during build. | ||
56 | */ | ||
57 | #define DECLARE_PER_CPU_SECTION(type, name, sec) \ | ||
58 | extern __PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \ | ||
59 | extern __PCPU_ATTRS(sec) __typeof__(type) per_cpu__##name | ||
60 | |||
61 | #define DEFINE_PER_CPU_SECTION(type, name, sec) \ | ||
62 | __PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \ | ||
63 | __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \ | ||
64 | __PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES __weak \ | ||
65 | __typeof__(type) per_cpu__##name | ||
66 | #else | ||
67 | /* | ||
68 | * Normal declaration and definition macros. | ||
69 | */ | ||
70 | #define DECLARE_PER_CPU_SECTION(type, name, sec) \ | ||
71 | extern __PCPU_ATTRS(sec) __typeof__(type) per_cpu__##name | ||
72 | |||
73 | #define DEFINE_PER_CPU_SECTION(type, name, sec) \ | ||
74 | __PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES \ | ||
28 | __typeof__(type) per_cpu__##name | 75 | __typeof__(type) per_cpu__##name |
76 | #endif | ||
29 | 77 | ||
30 | /* | 78 | /* |
31 | * Variant on the per-CPU variable declaration/definition theme used for | 79 | * Variant on the per-CPU variable declaration/definition theme used for |
diff --git a/include/linux/percpu.h b/include/linux/percpu.h index 26fd9d12f050..878836ca999c 100644 --- a/include/linux/percpu.h +++ b/include/linux/percpu.h | |||
@@ -34,7 +34,7 @@ | |||
34 | 34 | ||
35 | #ifdef CONFIG_SMP | 35 | #ifdef CONFIG_SMP |
36 | 36 | ||
37 | #ifdef CONFIG_HAVE_DYNAMIC_PER_CPU_AREA | 37 | #ifndef CONFIG_HAVE_LEGACY_PER_CPU_AREA |
38 | 38 | ||
39 | /* minimum unit size, also is the maximum supported allocation size */ | 39 | /* minimum unit size, also is the maximum supported allocation size */ |
40 | #define PCPU_MIN_UNIT_SIZE PFN_ALIGN(64 << 10) | 40 | #define PCPU_MIN_UNIT_SIZE PFN_ALIGN(64 << 10) |
@@ -57,19 +57,70 @@ | |||
57 | #endif | 57 | #endif |
58 | 58 | ||
59 | extern void *pcpu_base_addr; | 59 | extern void *pcpu_base_addr; |
60 | extern const unsigned long *pcpu_unit_offsets; | ||
60 | 61 | ||
61 | typedef struct page * (*pcpu_get_page_fn_t)(unsigned int cpu, int pageno); | 62 | struct pcpu_group_info { |
62 | typedef void (*pcpu_populate_pte_fn_t)(unsigned long addr); | 63 | int nr_units; /* aligned # of units */ |
64 | unsigned long base_offset; /* base address offset */ | ||
65 | unsigned int *cpu_map; /* unit->cpu map, empty | ||
66 | * entries contain NR_CPUS */ | ||
67 | }; | ||
68 | |||
69 | struct pcpu_alloc_info { | ||
70 | size_t static_size; | ||
71 | size_t reserved_size; | ||
72 | size_t dyn_size; | ||
73 | size_t unit_size; | ||
74 | size_t atom_size; | ||
75 | size_t alloc_size; | ||
76 | size_t __ai_size; /* internal, don't use */ | ||
77 | int nr_groups; /* 0 if grouping unnecessary */ | ||
78 | struct pcpu_group_info groups[]; | ||
79 | }; | ||
63 | 80 | ||
64 | extern size_t __init pcpu_setup_first_chunk(pcpu_get_page_fn_t get_page_fn, | 81 | enum pcpu_fc { |
65 | size_t static_size, size_t reserved_size, | 82 | PCPU_FC_AUTO, |
66 | ssize_t dyn_size, ssize_t unit_size, | 83 | PCPU_FC_EMBED, |
67 | void *base_addr, | 84 | PCPU_FC_PAGE, |
68 | pcpu_populate_pte_fn_t populate_pte_fn); | ||
69 | 85 | ||
70 | extern ssize_t __init pcpu_embed_first_chunk( | 86 | PCPU_FC_NR, |
71 | size_t static_size, size_t reserved_size, | 87 | }; |
72 | ssize_t dyn_size, ssize_t unit_size); | 88 | extern const char *pcpu_fc_names[PCPU_FC_NR]; |
89 | |||
90 | extern enum pcpu_fc pcpu_chosen_fc; | ||
91 | |||
92 | typedef void * (*pcpu_fc_alloc_fn_t)(unsigned int cpu, size_t size, | ||
93 | size_t align); | ||
94 | typedef void (*pcpu_fc_free_fn_t)(void *ptr, size_t size); | ||
95 | typedef void (*pcpu_fc_populate_pte_fn_t)(unsigned long addr); | ||
96 | typedef int (pcpu_fc_cpu_distance_fn_t)(unsigned int from, unsigned int to); | ||
97 | |||
98 | extern struct pcpu_alloc_info * __init pcpu_alloc_alloc_info(int nr_groups, | ||
99 | int nr_units); | ||
100 | extern void __init pcpu_free_alloc_info(struct pcpu_alloc_info *ai); | ||
101 | |||
102 | extern struct pcpu_alloc_info * __init pcpu_build_alloc_info( | ||
103 | size_t reserved_size, ssize_t dyn_size, | ||
104 | size_t atom_size, | ||
105 | pcpu_fc_cpu_distance_fn_t cpu_distance_fn); | ||
106 | |||
107 | extern int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, | ||
108 | void *base_addr); | ||
109 | |||
110 | #ifdef CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK | ||
111 | extern int __init pcpu_embed_first_chunk(size_t reserved_size, ssize_t dyn_size, | ||
112 | size_t atom_size, | ||
113 | pcpu_fc_cpu_distance_fn_t cpu_distance_fn, | ||
114 | pcpu_fc_alloc_fn_t alloc_fn, | ||
115 | pcpu_fc_free_fn_t free_fn); | ||
116 | #endif | ||
117 | |||
118 | #ifdef CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK | ||
119 | extern int __init pcpu_page_first_chunk(size_t reserved_size, | ||
120 | pcpu_fc_alloc_fn_t alloc_fn, | ||
121 | pcpu_fc_free_fn_t free_fn, | ||
122 | pcpu_fc_populate_pte_fn_t populate_pte_fn); | ||
123 | #endif | ||
73 | 124 | ||
74 | /* | 125 | /* |
75 | * Use this to get to a cpu's version of the per-cpu object | 126 | * Use this to get to a cpu's version of the per-cpu object |
@@ -80,7 +131,7 @@ extern ssize_t __init pcpu_embed_first_chunk( | |||
80 | 131 | ||
81 | extern void *__alloc_reserved_percpu(size_t size, size_t align); | 132 | extern void *__alloc_reserved_percpu(size_t size, size_t align); |
82 | 133 | ||
83 | #else /* CONFIG_HAVE_DYNAMIC_PER_CPU_AREA */ | 134 | #else /* CONFIG_HAVE_LEGACY_PER_CPU_AREA */ |
84 | 135 | ||
85 | struct percpu_data { | 136 | struct percpu_data { |
86 | void *ptrs[1]; | 137 | void *ptrs[1]; |
@@ -99,11 +150,15 @@ struct percpu_data { | |||
99 | (__typeof__(ptr))__p->ptrs[(cpu)]; \ | 150 | (__typeof__(ptr))__p->ptrs[(cpu)]; \ |
100 | }) | 151 | }) |
101 | 152 | ||
102 | #endif /* CONFIG_HAVE_DYNAMIC_PER_CPU_AREA */ | 153 | #endif /* CONFIG_HAVE_LEGACY_PER_CPU_AREA */ |
103 | 154 | ||
104 | extern void *__alloc_percpu(size_t size, size_t align); | 155 | extern void *__alloc_percpu(size_t size, size_t align); |
105 | extern void free_percpu(void *__pdata); | 156 | extern void free_percpu(void *__pdata); |
106 | 157 | ||
158 | #ifndef CONFIG_HAVE_SETUP_PER_CPU_AREA | ||
159 | extern void __init setup_per_cpu_areas(void); | ||
160 | #endif | ||
161 | |||
107 | #else /* CONFIG_SMP */ | 162 | #else /* CONFIG_SMP */ |
108 | 163 | ||
109 | #define per_cpu_ptr(ptr, cpu) ({ (void)(cpu); (ptr); }) | 164 | #define per_cpu_ptr(ptr, cpu) ({ (void)(cpu); (ptr); }) |
@@ -124,6 +179,13 @@ static inline void free_percpu(void *p) | |||
124 | kfree(p); | 179 | kfree(p); |
125 | } | 180 | } |
126 | 181 | ||
182 | static inline void __init setup_per_cpu_areas(void) { } | ||
183 | |||
184 | static inline void *pcpu_lpage_remapped(void *kaddr) | ||
185 | { | ||
186 | return NULL; | ||
187 | } | ||
188 | |||
127 | #endif /* CONFIG_SMP */ | 189 | #endif /* CONFIG_SMP */ |
128 | 190 | ||
129 | #define alloc_percpu(type) (type *)__alloc_percpu(sizeof(type), \ | 191 | #define alloc_percpu(type) (type *)__alloc_percpu(sizeof(type), \ |
diff --git a/include/linux/rxrpc.h b/include/linux/rxrpc.h index f7b826b565c7..a53915cd5581 100644 --- a/include/linux/rxrpc.h +++ b/include/linux/rxrpc.h | |||
@@ -58,5 +58,12 @@ struct sockaddr_rxrpc { | |||
58 | #define RXRPC_SECURITY_AUTH 1 /* authenticated packets */ | 58 | #define RXRPC_SECURITY_AUTH 1 /* authenticated packets */ |
59 | #define RXRPC_SECURITY_ENCRYPT 2 /* encrypted packets */ | 59 | #define RXRPC_SECURITY_ENCRYPT 2 /* encrypted packets */ |
60 | 60 | ||
61 | /* | ||
62 | * RxRPC security indices | ||
63 | */ | ||
64 | #define RXRPC_SECURITY_NONE 0 /* no security protocol */ | ||
65 | #define RXRPC_SECURITY_RXKAD 2 /* kaserver or kerberos 4 */ | ||
66 | #define RXRPC_SECURITY_RXGK 4 /* gssapi-based */ | ||
67 | #define RXRPC_SECURITY_RXK5 5 /* kerberos 5 */ | ||
61 | 68 | ||
62 | #endif /* _LINUX_RXRPC_H */ | 69 | #endif /* _LINUX_RXRPC_H */ |
diff --git a/include/linux/sched.h b/include/linux/sched.h index f3d74bd04d18..8af3d249170e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -190,6 +190,7 @@ extern unsigned long long time_sync_thresh; | |||
190 | /* in tsk->state again */ | 190 | /* in tsk->state again */ |
191 | #define TASK_DEAD 64 | 191 | #define TASK_DEAD 64 |
192 | #define TASK_WAKEKILL 128 | 192 | #define TASK_WAKEKILL 128 |
193 | #define TASK_WAKING 256 | ||
193 | 194 | ||
194 | /* Convenience macros for the sake of set_task_state */ | 195 | /* Convenience macros for the sake of set_task_state */ |
195 | #define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE) | 196 | #define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE) |
@@ -802,14 +803,14 @@ enum cpu_idle_type { | |||
802 | #define SD_BALANCE_NEWIDLE 0x0002 /* Balance when about to become idle */ | 803 | #define SD_BALANCE_NEWIDLE 0x0002 /* Balance when about to become idle */ |
803 | #define SD_BALANCE_EXEC 0x0004 /* Balance on exec */ | 804 | #define SD_BALANCE_EXEC 0x0004 /* Balance on exec */ |
804 | #define SD_BALANCE_FORK 0x0008 /* Balance on fork, clone */ | 805 | #define SD_BALANCE_FORK 0x0008 /* Balance on fork, clone */ |
805 | #define SD_WAKE_IDLE 0x0010 /* Wake to idle CPU on task wakeup */ | 806 | #define SD_BALANCE_WAKE 0x0010 /* Balance on wakeup */ |
806 | #define SD_WAKE_AFFINE 0x0020 /* Wake task to waking CPU */ | 807 | #define SD_WAKE_AFFINE 0x0020 /* Wake task to waking CPU */ |
807 | #define SD_WAKE_BALANCE 0x0040 /* Perform balancing at task wakeup */ | 808 | #define SD_PREFER_LOCAL 0x0040 /* Prefer to keep tasks local to this domain */ |
808 | #define SD_SHARE_CPUPOWER 0x0080 /* Domain members share cpu power */ | 809 | #define SD_SHARE_CPUPOWER 0x0080 /* Domain members share cpu power */ |
809 | #define SD_POWERSAVINGS_BALANCE 0x0100 /* Balance for power savings */ | 810 | #define SD_POWERSAVINGS_BALANCE 0x0100 /* Balance for power savings */ |
810 | #define SD_SHARE_PKG_RESOURCES 0x0200 /* Domain members share cpu pkg resources */ | 811 | #define SD_SHARE_PKG_RESOURCES 0x0200 /* Domain members share cpu pkg resources */ |
811 | #define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */ | 812 | #define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */ |
812 | #define SD_WAKE_IDLE_FAR 0x0800 /* Gain latency sacrificing cache hit */ | 813 | |
813 | #define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */ | 814 | #define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */ |
814 | 815 | ||
815 | enum powersavings_balance_level { | 816 | enum powersavings_balance_level { |
@@ -991,6 +992,9 @@ static inline int test_sd_parent(struct sched_domain *sd, int flag) | |||
991 | return 0; | 992 | return 0; |
992 | } | 993 | } |
993 | 994 | ||
995 | unsigned long default_scale_freq_power(struct sched_domain *sd, int cpu); | ||
996 | unsigned long default_scale_smt_power(struct sched_domain *sd, int cpu); | ||
997 | |||
994 | #else /* CONFIG_SMP */ | 998 | #else /* CONFIG_SMP */ |
995 | 999 | ||
996 | struct sched_domain_attr; | 1000 | struct sched_domain_attr; |
@@ -1002,6 +1006,7 @@ partition_sched_domains(int ndoms_new, struct cpumask *doms_new, | |||
1002 | } | 1006 | } |
1003 | #endif /* !CONFIG_SMP */ | 1007 | #endif /* !CONFIG_SMP */ |
1004 | 1008 | ||
1009 | |||
1005 | struct io_context; /* See blkdev.h */ | 1010 | struct io_context; /* See blkdev.h */ |
1006 | 1011 | ||
1007 | 1012 | ||
@@ -1019,6 +1024,12 @@ struct uts_namespace; | |||
1019 | struct rq; | 1024 | struct rq; |
1020 | struct sched_domain; | 1025 | struct sched_domain; |
1021 | 1026 | ||
1027 | /* | ||
1028 | * wake flags | ||
1029 | */ | ||
1030 | #define WF_SYNC 0x01 /* waker goes to sleep after wakup */ | ||
1031 | #define WF_FORK 0x02 /* child wakeup after fork */ | ||
1032 | |||
1022 | struct sched_class { | 1033 | struct sched_class { |
1023 | const struct sched_class *next; | 1034 | const struct sched_class *next; |
1024 | 1035 | ||
@@ -1026,13 +1037,13 @@ struct sched_class { | |||
1026 | void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep); | 1037 | void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep); |
1027 | void (*yield_task) (struct rq *rq); | 1038 | void (*yield_task) (struct rq *rq); |
1028 | 1039 | ||
1029 | void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int sync); | 1040 | void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int flags); |
1030 | 1041 | ||
1031 | struct task_struct * (*pick_next_task) (struct rq *rq); | 1042 | struct task_struct * (*pick_next_task) (struct rq *rq); |
1032 | void (*put_prev_task) (struct rq *rq, struct task_struct *p); | 1043 | void (*put_prev_task) (struct rq *rq, struct task_struct *p); |
1033 | 1044 | ||
1034 | #ifdef CONFIG_SMP | 1045 | #ifdef CONFIG_SMP |
1035 | int (*select_task_rq)(struct task_struct *p, int sync); | 1046 | int (*select_task_rq)(struct task_struct *p, int sd_flag, int flags); |
1036 | 1047 | ||
1037 | unsigned long (*load_balance) (struct rq *this_rq, int this_cpu, | 1048 | unsigned long (*load_balance) (struct rq *this_rq, int this_cpu, |
1038 | struct rq *busiest, unsigned long max_load_move, | 1049 | struct rq *busiest, unsigned long max_load_move, |
@@ -1102,6 +1113,8 @@ struct sched_entity { | |||
1102 | u64 start_runtime; | 1113 | u64 start_runtime; |
1103 | u64 avg_wakeup; | 1114 | u64 avg_wakeup; |
1104 | 1115 | ||
1116 | u64 avg_running; | ||
1117 | |||
1105 | #ifdef CONFIG_SCHEDSTATS | 1118 | #ifdef CONFIG_SCHEDSTATS |
1106 | u64 wait_start; | 1119 | u64 wait_start; |
1107 | u64 wait_max; | 1120 | u64 wait_max; |
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index 6d3f2f449ead..deee7afd8d66 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h | |||
@@ -38,6 +38,9 @@ static inline struct shmem_inode_info *SHMEM_I(struct inode *inode) | |||
38 | return container_of(inode, struct shmem_inode_info, vfs_inode); | 38 | return container_of(inode, struct shmem_inode_info, vfs_inode); |
39 | } | 39 | } |
40 | 40 | ||
41 | extern int init_tmpfs(void); | ||
42 | extern int shmem_fill_super(struct super_block *sb, void *data, int silent); | ||
43 | |||
41 | #ifdef CONFIG_TMPFS_POSIX_ACL | 44 | #ifdef CONFIG_TMPFS_POSIX_ACL |
42 | int shmem_check_acl(struct inode *, int); | 45 | int shmem_check_acl(struct inode *, int); |
43 | int shmem_acl_init(struct inode *, struct inode *); | 46 | int shmem_acl_init(struct inode *, struct inode *); |
diff --git a/include/linux/tboot.h b/include/linux/tboot.h new file mode 100644 index 000000000000..bf2a0c748878 --- /dev/null +++ b/include/linux/tboot.h | |||
@@ -0,0 +1,162 @@ | |||
1 | /* | ||
2 | * tboot.h: shared data structure with tboot and kernel and functions | ||
3 | * used by kernel for runtime support of Intel(R) Trusted | ||
4 | * Execution Technology | ||
5 | * | ||
6 | * Copyright (c) 2006-2009, Intel Corporation | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms and conditions of the GNU General Public License, | ||
10 | * version 2, as published by the Free Software Foundation. | ||
11 | * | ||
12 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
13 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
14 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
15 | * more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License along with | ||
18 | * this program; if not, write to the Free Software Foundation, Inc., | ||
19 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
20 | * | ||
21 | */ | ||
22 | |||
23 | #ifndef _LINUX_TBOOT_H | ||
24 | #define _LINUX_TBOOT_H | ||
25 | |||
26 | /* these must have the values from 0-5 in this order */ | ||
27 | enum { | ||
28 | TB_SHUTDOWN_REBOOT = 0, | ||
29 | TB_SHUTDOWN_S5, | ||
30 | TB_SHUTDOWN_S4, | ||
31 | TB_SHUTDOWN_S3, | ||
32 | TB_SHUTDOWN_HALT, | ||
33 | TB_SHUTDOWN_WFS | ||
34 | }; | ||
35 | |||
36 | #ifdef CONFIG_INTEL_TXT | ||
37 | #include <acpi/acpi.h> | ||
38 | /* used to communicate between tboot and the launched kernel */ | ||
39 | |||
40 | #define TB_KEY_SIZE 64 /* 512 bits */ | ||
41 | |||
42 | #define MAX_TB_MAC_REGIONS 32 | ||
43 | |||
44 | struct tboot_mac_region { | ||
45 | u64 start; /* must be 64 byte -aligned */ | ||
46 | u32 size; /* must be 64 byte -granular */ | ||
47 | } __packed; | ||
48 | |||
49 | /* GAS - Generic Address Structure (ACPI 2.0+) */ | ||
50 | struct tboot_acpi_generic_address { | ||
51 | u8 space_id; | ||
52 | u8 bit_width; | ||
53 | u8 bit_offset; | ||
54 | u8 access_width; | ||
55 | u64 address; | ||
56 | } __packed; | ||
57 | |||
58 | /* | ||
59 | * combines Sx info from FADT and FACS tables per ACPI 2.0+ spec | ||
60 | * (http://www.acpi.info/) | ||
61 | */ | ||
62 | struct tboot_acpi_sleep_info { | ||
63 | struct tboot_acpi_generic_address pm1a_cnt_blk; | ||
64 | struct tboot_acpi_generic_address pm1b_cnt_blk; | ||
65 | struct tboot_acpi_generic_address pm1a_evt_blk; | ||
66 | struct tboot_acpi_generic_address pm1b_evt_blk; | ||
67 | u16 pm1a_cnt_val; | ||
68 | u16 pm1b_cnt_val; | ||
69 | u64 wakeup_vector; | ||
70 | u32 vector_width; | ||
71 | u64 kernel_s3_resume_vector; | ||
72 | } __packed; | ||
73 | |||
74 | /* | ||
75 | * shared memory page used for communication between tboot and kernel | ||
76 | */ | ||
77 | struct tboot { | ||
78 | /* | ||
79 | * version 3+ fields: | ||
80 | */ | ||
81 | |||
82 | /* TBOOT_UUID */ | ||
83 | u8 uuid[16]; | ||
84 | |||
85 | /* version number: 5 is current */ | ||
86 | u32 version; | ||
87 | |||
88 | /* physical addr of tb_log_t log */ | ||
89 | u32 log_addr; | ||
90 | |||
91 | /* | ||
92 | * physical addr of entry point for tboot shutdown and | ||
93 | * type of shutdown (TB_SHUTDOWN_*) being requested | ||
94 | */ | ||
95 | u32 shutdown_entry; | ||
96 | u32 shutdown_type; | ||
97 | |||
98 | /* kernel-specified ACPI info for Sx shutdown */ | ||
99 | struct tboot_acpi_sleep_info acpi_sinfo; | ||
100 | |||
101 | /* tboot location in memory (physical) */ | ||
102 | u32 tboot_base; | ||
103 | u32 tboot_size; | ||
104 | |||
105 | /* memory regions (phys addrs) for tboot to MAC on S3 */ | ||
106 | u8 num_mac_regions; | ||
107 | struct tboot_mac_region mac_regions[MAX_TB_MAC_REGIONS]; | ||
108 | |||
109 | |||
110 | /* | ||
111 | * version 4+ fields: | ||
112 | */ | ||
113 | |||
114 | /* symmetric key for use by kernel; will be encrypted on S3 */ | ||
115 | u8 s3_key[TB_KEY_SIZE]; | ||
116 | |||
117 | |||
118 | /* | ||
119 | * version 5+ fields: | ||
120 | */ | ||
121 | |||
122 | /* used to 4byte-align num_in_wfs */ | ||
123 | u8 reserved_align[3]; | ||
124 | |||
125 | /* number of processors in wait-for-SIPI */ | ||
126 | u32 num_in_wfs; | ||
127 | } __packed; | ||
128 | |||
129 | /* | ||
130 | * UUID for tboot data struct to facilitate matching | ||
131 | * defined as {663C8DFF-E8B3-4b82-AABF-19EA4D057A08} by tboot, which is | ||
132 | * represented as {} in the char array used here | ||
133 | */ | ||
134 | #define TBOOT_UUID {0xff, 0x8d, 0x3c, 0x66, 0xb3, 0xe8, 0x82, 0x4b, 0xbf,\ | ||
135 | 0xaa, 0x19, 0xea, 0x4d, 0x5, 0x7a, 0x8} | ||
136 | |||
137 | extern struct tboot *tboot; | ||
138 | |||
139 | static inline int tboot_enabled(void) | ||
140 | { | ||
141 | return tboot != NULL; | ||
142 | } | ||
143 | |||
144 | extern void tboot_probe(void); | ||
145 | extern void tboot_shutdown(u32 shutdown_type); | ||
146 | extern void tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control); | ||
147 | extern struct acpi_table_header *tboot_get_dmar_table( | ||
148 | struct acpi_table_header *dmar_tbl); | ||
149 | extern int tboot_force_iommu(void); | ||
150 | |||
151 | #else | ||
152 | |||
153 | #define tboot_probe() do { } while (0) | ||
154 | #define tboot_shutdown(shutdown_type) do { } while (0) | ||
155 | #define tboot_sleep(sleep_state, pm1a_control, pm1b_control) \ | ||
156 | do { } while (0) | ||
157 | #define tboot_get_dmar_table(dmar_tbl) (dmar_tbl) | ||
158 | #define tboot_force_iommu() 0 | ||
159 | |||
160 | #endif /* !CONFIG_INTEL_TXT */ | ||
161 | |||
162 | #endif /* _LINUX_TBOOT_H */ | ||
diff --git a/include/linux/topology.h b/include/linux/topology.h index 85e8cf7d393c..809b26c07090 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
@@ -95,14 +95,12 @@ int arch_update_cpu_topology(void); | |||
95 | | 1*SD_BALANCE_NEWIDLE \ | 95 | | 1*SD_BALANCE_NEWIDLE \ |
96 | | 1*SD_BALANCE_EXEC \ | 96 | | 1*SD_BALANCE_EXEC \ |
97 | | 1*SD_BALANCE_FORK \ | 97 | | 1*SD_BALANCE_FORK \ |
98 | | 0*SD_WAKE_IDLE \ | 98 | | 0*SD_BALANCE_WAKE \ |
99 | | 1*SD_WAKE_AFFINE \ | 99 | | 1*SD_WAKE_AFFINE \ |
100 | | 1*SD_WAKE_BALANCE \ | ||
101 | | 1*SD_SHARE_CPUPOWER \ | 100 | | 1*SD_SHARE_CPUPOWER \ |
102 | | 0*SD_POWERSAVINGS_BALANCE \ | 101 | | 0*SD_POWERSAVINGS_BALANCE \ |
103 | | 0*SD_SHARE_PKG_RESOURCES \ | 102 | | 0*SD_SHARE_PKG_RESOURCES \ |
104 | | 0*SD_SERIALIZE \ | 103 | | 0*SD_SERIALIZE \ |
105 | | 0*SD_WAKE_IDLE_FAR \ | ||
106 | | 0*SD_PREFER_SIBLING \ | 104 | | 0*SD_PREFER_SIBLING \ |
107 | , \ | 105 | , \ |
108 | .last_balance = jiffies, \ | 106 | .last_balance = jiffies, \ |
@@ -122,20 +120,19 @@ int arch_update_cpu_topology(void); | |||
122 | .imbalance_pct = 125, \ | 120 | .imbalance_pct = 125, \ |
123 | .cache_nice_tries = 1, \ | 121 | .cache_nice_tries = 1, \ |
124 | .busy_idx = 2, \ | 122 | .busy_idx = 2, \ |
125 | .wake_idx = 1, \ | 123 | .wake_idx = 0, \ |
126 | .forkexec_idx = 1, \ | 124 | .forkexec_idx = 0, \ |
127 | \ | 125 | \ |
128 | .flags = 1*SD_LOAD_BALANCE \ | 126 | .flags = 1*SD_LOAD_BALANCE \ |
129 | | 1*SD_BALANCE_NEWIDLE \ | 127 | | 1*SD_BALANCE_NEWIDLE \ |
130 | | 1*SD_BALANCE_EXEC \ | 128 | | 1*SD_BALANCE_EXEC \ |
131 | | 1*SD_BALANCE_FORK \ | 129 | | 1*SD_BALANCE_FORK \ |
132 | | 1*SD_WAKE_IDLE \ | 130 | | 0*SD_BALANCE_WAKE \ |
133 | | 1*SD_WAKE_AFFINE \ | 131 | | 1*SD_WAKE_AFFINE \ |
134 | | 1*SD_WAKE_BALANCE \ | 132 | | 1*SD_PREFER_LOCAL \ |
135 | | 0*SD_SHARE_CPUPOWER \ | 133 | | 0*SD_SHARE_CPUPOWER \ |
136 | | 1*SD_SHARE_PKG_RESOURCES \ | 134 | | 1*SD_SHARE_PKG_RESOURCES \ |
137 | | 0*SD_SERIALIZE \ | 135 | | 0*SD_SERIALIZE \ |
138 | | 0*SD_WAKE_IDLE_FAR \ | ||
139 | | sd_balance_for_mc_power() \ | 136 | | sd_balance_for_mc_power() \ |
140 | | sd_power_saving_flags() \ | 137 | | sd_power_saving_flags() \ |
141 | , \ | 138 | , \ |
@@ -155,21 +152,20 @@ int arch_update_cpu_topology(void); | |||
155 | .cache_nice_tries = 1, \ | 152 | .cache_nice_tries = 1, \ |
156 | .busy_idx = 2, \ | 153 | .busy_idx = 2, \ |
157 | .idle_idx = 1, \ | 154 | .idle_idx = 1, \ |
158 | .newidle_idx = 2, \ | 155 | .newidle_idx = 0, \ |
159 | .wake_idx = 1, \ | 156 | .wake_idx = 0, \ |
160 | .forkexec_idx = 1, \ | 157 | .forkexec_idx = 0, \ |
161 | \ | 158 | \ |
162 | .flags = 1*SD_LOAD_BALANCE \ | 159 | .flags = 1*SD_LOAD_BALANCE \ |
163 | | 1*SD_BALANCE_NEWIDLE \ | 160 | | 1*SD_BALANCE_NEWIDLE \ |
164 | | 1*SD_BALANCE_EXEC \ | 161 | | 1*SD_BALANCE_EXEC \ |
165 | | 1*SD_BALANCE_FORK \ | 162 | | 1*SD_BALANCE_FORK \ |
166 | | 1*SD_WAKE_IDLE \ | 163 | | 0*SD_BALANCE_WAKE \ |
167 | | 0*SD_WAKE_AFFINE \ | 164 | | 1*SD_WAKE_AFFINE \ |
168 | | 1*SD_WAKE_BALANCE \ | 165 | | 1*SD_PREFER_LOCAL \ |
169 | | 0*SD_SHARE_CPUPOWER \ | 166 | | 0*SD_SHARE_CPUPOWER \ |
170 | | 0*SD_SHARE_PKG_RESOURCES \ | 167 | | 0*SD_SHARE_PKG_RESOURCES \ |
171 | | 0*SD_SERIALIZE \ | 168 | | 0*SD_SERIALIZE \ |
172 | | 0*SD_WAKE_IDLE_FAR \ | ||
173 | | sd_balance_for_package_power() \ | 169 | | sd_balance_for_package_power() \ |
174 | | sd_power_saving_flags() \ | 170 | | sd_power_saving_flags() \ |
175 | , \ | 171 | , \ |
@@ -191,14 +187,12 @@ int arch_update_cpu_topology(void); | |||
191 | | 1*SD_BALANCE_NEWIDLE \ | 187 | | 1*SD_BALANCE_NEWIDLE \ |
192 | | 0*SD_BALANCE_EXEC \ | 188 | | 0*SD_BALANCE_EXEC \ |
193 | | 0*SD_BALANCE_FORK \ | 189 | | 0*SD_BALANCE_FORK \ |
194 | | 0*SD_WAKE_IDLE \ | 190 | | 0*SD_BALANCE_WAKE \ |
195 | | 1*SD_WAKE_AFFINE \ | 191 | | 0*SD_WAKE_AFFINE \ |
196 | | 0*SD_WAKE_BALANCE \ | ||
197 | | 0*SD_SHARE_CPUPOWER \ | 192 | | 0*SD_SHARE_CPUPOWER \ |
198 | | 0*SD_POWERSAVINGS_BALANCE \ | 193 | | 0*SD_POWERSAVINGS_BALANCE \ |
199 | | 0*SD_SHARE_PKG_RESOURCES \ | 194 | | 0*SD_SHARE_PKG_RESOURCES \ |
200 | | 1*SD_SERIALIZE \ | 195 | | 1*SD_SERIALIZE \ |
201 | | 1*SD_WAKE_IDLE_FAR \ | ||
202 | | 0*SD_PREFER_SIBLING \ | 196 | | 0*SD_PREFER_SIBLING \ |
203 | , \ | 197 | , \ |
204 | .last_balance = jiffies, \ | 198 | .last_balance = jiffies, \ |
diff --git a/include/linux/transport_class.h b/include/linux/transport_class.h index eaec1ea9558e..9ae8da3e6407 100644 --- a/include/linux/transport_class.h +++ b/include/linux/transport_class.h | |||
@@ -55,7 +55,7 @@ struct anon_transport_class cls = { \ | |||
55 | 55 | ||
56 | struct transport_container { | 56 | struct transport_container { |
57 | struct attribute_container ac; | 57 | struct attribute_container ac; |
58 | struct attribute_group *statistics; | 58 | const struct attribute_group *statistics; |
59 | }; | 59 | }; |
60 | 60 | ||
61 | #define attribute_container_to_transport_container(x) \ | 61 | #define attribute_container_to_transport_container(x) \ |
diff --git a/include/linux/usb/video.h b/include/linux/usb/video.h new file mode 100644 index 000000000000..be436d9ee479 --- /dev/null +++ b/include/linux/usb/video.h | |||
@@ -0,0 +1,164 @@ | |||
1 | /* | ||
2 | * USB Video Class definitions. | ||
3 | * | ||
4 | * Copyright (C) 2009 Laurent Pinchart <laurent.pinchart@skynet.be> | ||
5 | * | ||
6 | * This file holds USB constants and structures defined by the USB Device | ||
7 | * Class Definition for Video Devices. Unless otherwise stated, comments | ||
8 | * below reference relevant sections of the USB Video Class 1.1 specification | ||
9 | * available at | ||
10 | * | ||
11 | * http://www.usb.org/developers/devclass_docs/USB_Video_Class_1_1.zip | ||
12 | */ | ||
13 | |||
14 | #ifndef __LINUX_USB_VIDEO_H | ||
15 | #define __LINUX_USB_VIDEO_H | ||
16 | |||
17 | #include <linux/types.h> | ||
18 | |||
19 | /* -------------------------------------------------------------------------- | ||
20 | * UVC constants | ||
21 | */ | ||
22 | |||
23 | /* A.2. Video Interface Subclass Codes */ | ||
24 | #define UVC_SC_UNDEFINED 0x00 | ||
25 | #define UVC_SC_VIDEOCONTROL 0x01 | ||
26 | #define UVC_SC_VIDEOSTREAMING 0x02 | ||
27 | #define UVC_SC_VIDEO_INTERFACE_COLLECTION 0x03 | ||
28 | |||
29 | /* A.3. Video Interface Protocol Codes */ | ||
30 | #define UVC_PC_PROTOCOL_UNDEFINED 0x00 | ||
31 | |||
32 | /* A.5. Video Class-Specific VC Interface Descriptor Subtypes */ | ||
33 | #define UVC_VC_DESCRIPTOR_UNDEFINED 0x00 | ||
34 | #define UVC_VC_HEADER 0x01 | ||
35 | #define UVC_VC_INPUT_TERMINAL 0x02 | ||
36 | #define UVC_VC_OUTPUT_TERMINAL 0x03 | ||
37 | #define UVC_VC_SELECTOR_UNIT 0x04 | ||
38 | #define UVC_VC_PROCESSING_UNIT 0x05 | ||
39 | #define UVC_VC_EXTENSION_UNIT 0x06 | ||
40 | |||
41 | /* A.6. Video Class-Specific VS Interface Descriptor Subtypes */ | ||
42 | #define UVC_VS_UNDEFINED 0x00 | ||
43 | #define UVC_VS_INPUT_HEADER 0x01 | ||
44 | #define UVC_VS_OUTPUT_HEADER 0x02 | ||
45 | #define UVC_VS_STILL_IMAGE_FRAME 0x03 | ||
46 | #define UVC_VS_FORMAT_UNCOMPRESSED 0x04 | ||
47 | #define UVC_VS_FRAME_UNCOMPRESSED 0x05 | ||
48 | #define UVC_VS_FORMAT_MJPEG 0x06 | ||
49 | #define UVC_VS_FRAME_MJPEG 0x07 | ||
50 | #define UVC_VS_FORMAT_MPEG2TS 0x0a | ||
51 | #define UVC_VS_FORMAT_DV 0x0c | ||
52 | #define UVC_VS_COLORFORMAT 0x0d | ||
53 | #define UVC_VS_FORMAT_FRAME_BASED 0x10 | ||
54 | #define UVC_VS_FRAME_FRAME_BASED 0x11 | ||
55 | #define UVC_VS_FORMAT_STREAM_BASED 0x12 | ||
56 | |||
57 | /* A.7. Video Class-Specific Endpoint Descriptor Subtypes */ | ||
58 | #define UVC_EP_UNDEFINED 0x00 | ||
59 | #define UVC_EP_GENERAL 0x01 | ||
60 | #define UVC_EP_ENDPOINT 0x02 | ||
61 | #define UVC_EP_INTERRUPT 0x03 | ||
62 | |||
63 | /* A.8. Video Class-Specific Request Codes */ | ||
64 | #define UVC_RC_UNDEFINED 0x00 | ||
65 | #define UVC_SET_CUR 0x01 | ||
66 | #define UVC_GET_CUR 0x81 | ||
67 | #define UVC_GET_MIN 0x82 | ||
68 | #define UVC_GET_MAX 0x83 | ||
69 | #define UVC_GET_RES 0x84 | ||
70 | #define UVC_GET_LEN 0x85 | ||
71 | #define UVC_GET_INFO 0x86 | ||
72 | #define UVC_GET_DEF 0x87 | ||
73 | |||
74 | /* A.9.1. VideoControl Interface Control Selectors */ | ||
75 | #define UVC_VC_CONTROL_UNDEFINED 0x00 | ||
76 | #define UVC_VC_VIDEO_POWER_MODE_CONTROL 0x01 | ||
77 | #define UVC_VC_REQUEST_ERROR_CODE_CONTROL 0x02 | ||
78 | |||
79 | /* A.9.2. Terminal Control Selectors */ | ||
80 | #define UVC_TE_CONTROL_UNDEFINED 0x00 | ||
81 | |||
82 | /* A.9.3. Selector Unit Control Selectors */ | ||
83 | #define UVC_SU_CONTROL_UNDEFINED 0x00 | ||
84 | #define UVC_SU_INPUT_SELECT_CONTROL 0x01 | ||
85 | |||
86 | /* A.9.4. Camera Terminal Control Selectors */ | ||
87 | #define UVC_CT_CONTROL_UNDEFINED 0x00 | ||
88 | #define UVC_CT_SCANNING_MODE_CONTROL 0x01 | ||
89 | #define UVC_CT_AE_MODE_CONTROL 0x02 | ||
90 | #define UVC_CT_AE_PRIORITY_CONTROL 0x03 | ||
91 | #define UVC_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04 | ||
92 | #define UVC_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05 | ||
93 | #define UVC_CT_FOCUS_ABSOLUTE_CONTROL 0x06 | ||
94 | #define UVC_CT_FOCUS_RELATIVE_CONTROL 0x07 | ||
95 | #define UVC_CT_FOCUS_AUTO_CONTROL 0x08 | ||
96 | #define UVC_CT_IRIS_ABSOLUTE_CONTROL 0x09 | ||
97 | #define UVC_CT_IRIS_RELATIVE_CONTROL 0x0a | ||
98 | #define UVC_CT_ZOOM_ABSOLUTE_CONTROL 0x0b | ||
99 | #define UVC_CT_ZOOM_RELATIVE_CONTROL 0x0c | ||
100 | #define UVC_CT_PANTILT_ABSOLUTE_CONTROL 0x0d | ||
101 | #define UVC_CT_PANTILT_RELATIVE_CONTROL 0x0e | ||
102 | #define UVC_CT_ROLL_ABSOLUTE_CONTROL 0x0f | ||
103 | #define UVC_CT_ROLL_RELATIVE_CONTROL 0x10 | ||
104 | #define UVC_CT_PRIVACY_CONTROL 0x11 | ||
105 | |||
106 | /* A.9.5. Processing Unit Control Selectors */ | ||
107 | #define UVC_PU_CONTROL_UNDEFINED 0x00 | ||
108 | #define UVC_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01 | ||
109 | #define UVC_PU_BRIGHTNESS_CONTROL 0x02 | ||
110 | #define UVC_PU_CONTRAST_CONTROL 0x03 | ||
111 | #define UVC_PU_GAIN_CONTROL 0x04 | ||
112 | #define UVC_PU_POWER_LINE_FREQUENCY_CONTROL 0x05 | ||
113 | #define UVC_PU_HUE_CONTROL 0x06 | ||
114 | #define UVC_PU_SATURATION_CONTROL 0x07 | ||
115 | #define UVC_PU_SHARPNESS_CONTROL 0x08 | ||
116 | #define UVC_PU_GAMMA_CONTROL 0x09 | ||
117 | #define UVC_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a | ||
118 | #define UVC_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b | ||
119 | #define UVC_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c | ||
120 | #define UVC_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d | ||
121 | #define UVC_PU_DIGITAL_MULTIPLIER_CONTROL 0x0e | ||
122 | #define UVC_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f | ||
123 | #define UVC_PU_HUE_AUTO_CONTROL 0x10 | ||
124 | #define UVC_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11 | ||
125 | #define UVC_PU_ANALOG_LOCK_STATUS_CONTROL 0x12 | ||
126 | |||
127 | /* A.9.7. VideoStreaming Interface Control Selectors */ | ||
128 | #define UVC_VS_CONTROL_UNDEFINED 0x00 | ||
129 | #define UVC_VS_PROBE_CONTROL 0x01 | ||
130 | #define UVC_VS_COMMIT_CONTROL 0x02 | ||
131 | #define UVC_VS_STILL_PROBE_CONTROL 0x03 | ||
132 | #define UVC_VS_STILL_COMMIT_CONTROL 0x04 | ||
133 | #define UVC_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05 | ||
134 | #define UVC_VS_STREAM_ERROR_CODE_CONTROL 0x06 | ||
135 | #define UVC_VS_GENERATE_KEY_FRAME_CONTROL 0x07 | ||
136 | #define UVC_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08 | ||
137 | #define UVC_VS_SYNC_DELAY_CONTROL 0x09 | ||
138 | |||
139 | /* B.1. USB Terminal Types */ | ||
140 | #define UVC_TT_VENDOR_SPECIFIC 0x0100 | ||
141 | #define UVC_TT_STREAMING 0x0101 | ||
142 | |||
143 | /* B.2. Input Terminal Types */ | ||
144 | #define UVC_ITT_VENDOR_SPECIFIC 0x0200 | ||
145 | #define UVC_ITT_CAMERA 0x0201 | ||
146 | #define UVC_ITT_MEDIA_TRANSPORT_INPUT 0x0202 | ||
147 | |||
148 | /* B.3. Output Terminal Types */ | ||
149 | #define UVC_OTT_VENDOR_SPECIFIC 0x0300 | ||
150 | #define UVC_OTT_DISPLAY 0x0301 | ||
151 | #define UVC_OTT_MEDIA_TRANSPORT_OUTPUT 0x0302 | ||
152 | |||
153 | /* B.4. External Terminal Types */ | ||
154 | #define UVC_EXTERNAL_VENDOR_SPECIFIC 0x0400 | ||
155 | #define UVC_COMPOSITE_CONNECTOR 0x0401 | ||
156 | #define UVC_SVIDEO_CONNECTOR 0x0402 | ||
157 | #define UVC_COMPONENT_CONNECTOR 0x0403 | ||
158 | |||
159 | /* 2.4.2.2. Status Packet Type */ | ||
160 | #define UVC_STATUS_TYPE_CONTROL 1 | ||
161 | #define UVC_STATUS_TYPE_STREAMING 2 | ||
162 | |||
163 | #endif /* __LINUX_USB_VIDEO_H */ | ||
164 | |||
diff --git a/include/linux/uwb.h b/include/linux/uwb.h index c02128991ff7..7fc9746f22cd 100644 --- a/include/linux/uwb.h +++ b/include/linux/uwb.h | |||
@@ -597,7 +597,7 @@ void uwb_rc_neh_grok(struct uwb_rc *, void *, size_t); | |||
597 | void uwb_rc_neh_error(struct uwb_rc *, int); | 597 | void uwb_rc_neh_error(struct uwb_rc *, int); |
598 | void uwb_rc_reset_all(struct uwb_rc *rc); | 598 | void uwb_rc_reset_all(struct uwb_rc *rc); |
599 | void uwb_rc_pre_reset(struct uwb_rc *rc); | 599 | void uwb_rc_pre_reset(struct uwb_rc *rc); |
600 | void uwb_rc_post_reset(struct uwb_rc *rc); | 600 | int uwb_rc_post_reset(struct uwb_rc *rc); |
601 | 601 | ||
602 | /** | 602 | /** |
603 | * uwb_rsv_is_owner - is the owner of this reservation the RC? | 603 | * uwb_rsv_is_owner - is the owner of this reservation the RC? |
diff --git a/include/linux/vgaarb.h b/include/linux/vgaarb.h new file mode 100644 index 000000000000..e81c64af80c1 --- /dev/null +++ b/include/linux/vgaarb.h | |||
@@ -0,0 +1,200 @@ | |||
1 | /* | ||
2 | * vgaarb.c | ||
3 | * | ||
4 | * (C) Copyright 2005 Benjamin Herrenschmidt <benh@kernel.crashing.org> | ||
5 | * (C) Copyright 2007 Paulo R. Zanoni <przanoni@gmail.com> | ||
6 | * (C) Copyright 2007, 2009 Tiago Vignatti <vignatti@freedesktop.org> | ||
7 | */ | ||
8 | |||
9 | #ifndef LINUX_VGA_H | ||
10 | |||
11 | #include <asm/vga.h> | ||
12 | |||
13 | /* Legacy VGA regions */ | ||
14 | #define VGA_RSRC_NONE 0x00 | ||
15 | #define VGA_RSRC_LEGACY_IO 0x01 | ||
16 | #define VGA_RSRC_LEGACY_MEM 0x02 | ||
17 | #define VGA_RSRC_LEGACY_MASK (VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM) | ||
18 | /* Non-legacy access */ | ||
19 | #define VGA_RSRC_NORMAL_IO 0x04 | ||
20 | #define VGA_RSRC_NORMAL_MEM 0x08 | ||
21 | |||
22 | /* Passing that instead of a pci_dev to use the system "default" | ||
23 | * device, that is the one used by vgacon. Archs will probably | ||
24 | * have to provide their own vga_default_device(); | ||
25 | */ | ||
26 | #define VGA_DEFAULT_DEVICE (NULL) | ||
27 | |||
28 | /* For use by clients */ | ||
29 | |||
30 | /** | ||
31 | * vga_set_legacy_decoding | ||
32 | * | ||
33 | * @pdev: pci device of the VGA card | ||
34 | * @decodes: bit mask of what legacy regions the card decodes | ||
35 | * | ||
36 | * Indicates to the arbiter if the card decodes legacy VGA IOs, | ||
37 | * legacy VGA Memory, both, or none. All cards default to both, | ||
38 | * the card driver (fbdev for example) should tell the arbiter | ||
39 | * if it has disabled legacy decoding, so the card can be left | ||
40 | * out of the arbitration process (and can be safe to take | ||
41 | * interrupts at any time. | ||
42 | */ | ||
43 | extern void vga_set_legacy_decoding(struct pci_dev *pdev, | ||
44 | unsigned int decodes); | ||
45 | |||
46 | /** | ||
47 | * vga_get - acquire & locks VGA resources | ||
48 | * | ||
49 | * @pdev: pci device of the VGA card or NULL for the system default | ||
50 | * @rsrc: bit mask of resources to acquire and lock | ||
51 | * @interruptible: blocking should be interruptible by signals ? | ||
52 | * | ||
53 | * This function acquires VGA resources for the given | ||
54 | * card and mark those resources locked. If the resource requested | ||
55 | * are "normal" (and not legacy) resources, the arbiter will first check | ||
56 | * wether the card is doing legacy decoding for that type of resource. If | ||
57 | * yes, the lock is "converted" into a legacy resource lock. | ||
58 | * The arbiter will first look for all VGA cards that might conflict | ||
59 | * and disable their IOs and/or Memory access, inlcuding VGA forwarding | ||
60 | * on P2P bridges if necessary, so that the requested resources can | ||
61 | * be used. Then, the card is marked as locking these resources and | ||
62 | * the IO and/or Memory accesse are enabled on the card (including | ||
63 | * VGA forwarding on parent P2P bridges if any). | ||
64 | * This function will block if some conflicting card is already locking | ||
65 | * one of the required resources (or any resource on a different bus | ||
66 | * segment, since P2P bridges don't differenciate VGA memory and IO | ||
67 | * afaik). You can indicate wether this blocking should be interruptible | ||
68 | * by a signal (for userland interface) or not. | ||
69 | * Must not be called at interrupt time or in atomic context. | ||
70 | * If the card already owns the resources, the function succeeds. | ||
71 | * Nested calls are supported (a per-resource counter is maintained) | ||
72 | */ | ||
73 | |||
74 | extern int vga_get(struct pci_dev *pdev, unsigned int rsrc, | ||
75 | int interruptible); | ||
76 | |||
77 | /** | ||
78 | * vga_get_interruptible | ||
79 | * | ||
80 | * Shortcut to vga_get | ||
81 | */ | ||
82 | |||
83 | static inline int vga_get_interruptible(struct pci_dev *pdev, | ||
84 | unsigned int rsrc) | ||
85 | { | ||
86 | return vga_get(pdev, rsrc, 1); | ||
87 | } | ||
88 | |||
89 | /** | ||
90 | * vga_get_uninterruptible | ||
91 | * | ||
92 | * Shortcut to vga_get | ||
93 | */ | ||
94 | |||
95 | static inline int vga_get_uninterruptible(struct pci_dev *pdev, | ||
96 | unsigned int rsrc) | ||
97 | { | ||
98 | return vga_get(pdev, rsrc, 0); | ||
99 | } | ||
100 | |||
101 | /** | ||
102 | * vga_tryget - try to acquire & lock legacy VGA resources | ||
103 | * | ||
104 | * @pdev: pci devivce of VGA card or NULL for system default | ||
105 | * @rsrc: bit mask of resources to acquire and lock | ||
106 | * | ||
107 | * This function performs the same operation as vga_get(), but | ||
108 | * will return an error (-EBUSY) instead of blocking if the resources | ||
109 | * are already locked by another card. It can be called in any context | ||
110 | */ | ||
111 | |||
112 | extern int vga_tryget(struct pci_dev *pdev, unsigned int rsrc); | ||
113 | |||
114 | /** | ||
115 | * vga_put - release lock on legacy VGA resources | ||
116 | * | ||
117 | * @pdev: pci device of VGA card or NULL for system default | ||
118 | * @rsrc: but mask of resource to release | ||
119 | * | ||
120 | * This function releases resources previously locked by vga_get() | ||
121 | * or vga_tryget(). The resources aren't disabled right away, so | ||
122 | * that a subsequence vga_get() on the same card will succeed | ||
123 | * immediately. Resources have a counter, so locks are only | ||
124 | * released if the counter reaches 0. | ||
125 | */ | ||
126 | |||
127 | extern void vga_put(struct pci_dev *pdev, unsigned int rsrc); | ||
128 | |||
129 | |||
130 | /** | ||
131 | * vga_default_device | ||
132 | * | ||
133 | * This can be defined by the platform. The default implementation | ||
134 | * is rather dumb and will probably only work properly on single | ||
135 | * vga card setups and/or x86 platforms. | ||
136 | * | ||
137 | * If your VGA default device is not PCI, you'll have to return | ||
138 | * NULL here. In this case, I assume it will not conflict with | ||
139 | * any PCI card. If this is not true, I'll have to define two archs | ||
140 | * hooks for enabling/disabling the VGA default device if that is | ||
141 | * possible. This may be a problem with real _ISA_ VGA cards, in | ||
142 | * addition to a PCI one. I don't know at this point how to deal | ||
143 | * with that card. Can theirs IOs be disabled at all ? If not, then | ||
144 | * I suppose it's a matter of having the proper arch hook telling | ||
145 | * us about it, so we basically never allow anybody to succeed a | ||
146 | * vga_get()... | ||
147 | */ | ||
148 | |||
149 | #ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE | ||
150 | extern struct pci_dev *vga_default_device(void); | ||
151 | #endif | ||
152 | |||
153 | /** | ||
154 | * vga_conflicts | ||
155 | * | ||
156 | * Architectures should define this if they have several | ||
157 | * independant PCI domains that can afford concurrent VGA | ||
158 | * decoding | ||
159 | */ | ||
160 | |||
161 | #ifndef __ARCH_HAS_VGA_CONFLICT | ||
162 | static inline int vga_conflicts(struct pci_dev *p1, struct pci_dev *p2) | ||
163 | { | ||
164 | return 1; | ||
165 | } | ||
166 | #endif | ||
167 | |||
168 | /** | ||
169 | * vga_client_register | ||
170 | * | ||
171 | * @pdev: pci device of the VGA client | ||
172 | * @cookie: client cookie to be used in callbacks | ||
173 | * @irq_set_state: irq state change callback | ||
174 | * @set_vga_decode: vga decode change callback | ||
175 | * | ||
176 | * return value: 0 on success, -1 on failure | ||
177 | * Register a client with the VGA arbitration logic | ||
178 | * | ||
179 | * Clients have two callback mechanisms they can use. | ||
180 | * irq enable/disable callback - | ||
181 | * If a client can't disable its GPUs VGA resources, then we | ||
182 | * need to be able to ask it to turn off its irqs when we | ||
183 | * turn off its mem and io decoding. | ||
184 | * set_vga_decode | ||
185 | * If a client can disable its GPU VGA resource, it will | ||
186 | * get a callback from this to set the encode/decode state | ||
187 | * | ||
188 | * Rationale: we cannot disable VGA decode resources unconditionally | ||
189 | * some single GPU laptops seem to require ACPI or BIOS access to the | ||
190 | * VGA registers to control things like backlights etc. | ||
191 | * Hopefully newer multi-GPU laptops do something saner, and desktops | ||
192 | * won't have any special ACPI for this. | ||
193 | * They driver will get a callback when VGA arbitration is first used | ||
194 | * by userspace since we some older X servers have issues. | ||
195 | */ | ||
196 | int vga_client_register(struct pci_dev *pdev, void *cookie, | ||
197 | void (*irq_set_state)(void *cookie, bool state), | ||
198 | unsigned int (*set_vga_decode)(void *cookie, bool state)); | ||
199 | |||
200 | #endif /* LINUX_VGA_H */ | ||
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 74f16876f38d..3689d7d81fe9 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
@@ -167,6 +167,7 @@ enum v4l2_ctrl_type { | |||
167 | V4L2_CTRL_TYPE_BUTTON = 4, | 167 | V4L2_CTRL_TYPE_BUTTON = 4, |
168 | V4L2_CTRL_TYPE_INTEGER64 = 5, | 168 | V4L2_CTRL_TYPE_INTEGER64 = 5, |
169 | V4L2_CTRL_TYPE_CTRL_CLASS = 6, | 169 | V4L2_CTRL_TYPE_CTRL_CLASS = 6, |
170 | V4L2_CTRL_TYPE_STRING = 7, | ||
170 | }; | 171 | }; |
171 | 172 | ||
172 | enum v4l2_tuner_type { | 173 | enum v4l2_tuner_type { |
@@ -252,10 +253,12 @@ struct v4l2_capability { | |||
252 | #define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ | 253 | #define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ |
253 | #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */ | 254 | #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */ |
254 | #define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */ | 255 | #define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */ |
256 | #define V4L2_CAP_RDS_OUTPUT 0x00000800 /* Is an RDS encoder */ | ||
255 | 257 | ||
256 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ | 258 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ |
257 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ | 259 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ |
258 | #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ | 260 | #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ |
261 | #define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */ | ||
259 | 262 | ||
260 | #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ | 263 | #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ |
261 | #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ | 264 | #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ |
@@ -275,7 +278,9 @@ struct v4l2_pix_format { | |||
275 | __u32 priv; /* private data, depends on pixelformat */ | 278 | __u32 priv; /* private data, depends on pixelformat */ |
276 | }; | 279 | }; |
277 | 280 | ||
278 | /* Pixel format FOURCC depth Description */ | 281 | /* Pixel format FOURCC depth Description */ |
282 | |||
283 | /* RGB formats */ | ||
279 | #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ | 284 | #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ |
280 | #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ | 285 | #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ |
281 | #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ | 286 | #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ |
@@ -286,12 +291,20 @@ struct v4l2_pix_format { | |||
286 | #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ | 291 | #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ |
287 | #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ | 292 | #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ |
288 | #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ | 293 | #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ |
294 | |||
295 | /* Grey formats */ | ||
289 | #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ | 296 | #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ |
290 | #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ | 297 | #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ |
298 | |||
299 | /* Palette formats */ | ||
291 | #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ | 300 | #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ |
301 | |||
302 | /* Luminance+Chrominance formats */ | ||
292 | #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */ | 303 | #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */ |
293 | #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ | 304 | #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ |
294 | #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ | 305 | #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ |
306 | #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ | ||
307 | #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ | ||
295 | #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */ | 308 | #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */ |
296 | #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */ | 309 | #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */ |
297 | #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ | 310 | #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ |
@@ -301,6 +314,10 @@ struct v4l2_pix_format { | |||
301 | #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ | 314 | #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ |
302 | #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ | 315 | #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ |
303 | #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ | 316 | #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ |
317 | #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ | ||
318 | #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ | ||
319 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ | ||
320 | #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ | ||
304 | 321 | ||
305 | /* two planes -- one Y, one Cr + Cb interleaved */ | 322 | /* two planes -- one Y, one Cr + Cb interleaved */ |
306 | #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ | 323 | #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ |
@@ -308,25 +325,17 @@ struct v4l2_pix_format { | |||
308 | #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ | 325 | #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ |
309 | #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ | 326 | #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ |
310 | 327 | ||
311 | /* The following formats are not defined in the V4L2 specification */ | 328 | /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */ |
312 | #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ | ||
313 | #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ | ||
314 | #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ | ||
315 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ | ||
316 | #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ | ||
317 | |||
318 | /* see http://www.siliconimaging.com/RGB%20Bayer.htm */ | ||
319 | #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ | 329 | #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ |
320 | #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ | 330 | #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ |
321 | #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ | 331 | #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ |
322 | 332 | #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10bit raw bayer */ | |
323 | /* | 333 | /* 10bit raw bayer DPCM compressed to 8 bits */ |
324 | * 10bit raw bayer, expanded to 16 bits | ||
325 | * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... | ||
326 | */ | ||
327 | #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') | ||
328 | /* 10bit raw bayer DPCM compressed to 8 bits */ | ||
329 | #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0') | 334 | #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0') |
335 | /* | ||
336 | * 10bit raw bayer, expanded to 16 bits | ||
337 | * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... | ||
338 | */ | ||
330 | #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ | 339 | #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ |
331 | 340 | ||
332 | /* compressed formats */ | 341 | /* compressed formats */ |
@@ -350,7 +359,6 @@ struct v4l2_pix_format { | |||
350 | #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ | 359 | #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ |
351 | #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ | 360 | #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ |
352 | #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ | 361 | #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ |
353 | #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ | ||
354 | #define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ | 362 | #define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ |
355 | #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ | 363 | #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ |
356 | 364 | ||
@@ -367,6 +375,7 @@ struct v4l2_fmtdesc { | |||
367 | }; | 375 | }; |
368 | 376 | ||
369 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 | 377 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 |
378 | #define V4L2_FMT_FLAG_EMULATED 0x0002 | ||
370 | 379 | ||
371 | #if 1 | 380 | #if 1 |
372 | /* Experimental Frame Size and frame rate enumeration */ | 381 | /* Experimental Frame Size and frame rate enumeration */ |
@@ -788,11 +797,12 @@ struct v4l2_control { | |||
788 | 797 | ||
789 | struct v4l2_ext_control { | 798 | struct v4l2_ext_control { |
790 | __u32 id; | 799 | __u32 id; |
791 | __u32 reserved2[2]; | 800 | __u32 size; |
801 | __u32 reserved2[1]; | ||
792 | union { | 802 | union { |
793 | __s32 value; | 803 | __s32 value; |
794 | __s64 value64; | 804 | __s64 value64; |
795 | void *reserved; | 805 | char *string; |
796 | }; | 806 | }; |
797 | } __attribute__ ((packed)); | 807 | } __attribute__ ((packed)); |
798 | 808 | ||
@@ -808,6 +818,7 @@ struct v4l2_ext_controls { | |||
808 | #define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */ | 818 | #define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */ |
809 | #define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */ | 819 | #define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */ |
810 | #define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */ | 820 | #define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */ |
821 | #define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator control class */ | ||
811 | 822 | ||
812 | #define V4L2_CTRL_ID_MASK (0x0fffffff) | 823 | #define V4L2_CTRL_ID_MASK (0x0fffffff) |
813 | #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) | 824 | #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) |
@@ -1147,6 +1158,39 @@ enum v4l2_exposure_auto_type { | |||
1147 | 1158 | ||
1148 | #define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16) | 1159 | #define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16) |
1149 | 1160 | ||
1161 | /* FM Modulator class control IDs */ | ||
1162 | #define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900) | ||
1163 | #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1) | ||
1164 | |||
1165 | #define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1) | ||
1166 | #define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2) | ||
1167 | #define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3) | ||
1168 | #define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5) | ||
1169 | #define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6) | ||
1170 | |||
1171 | #define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64) | ||
1172 | #define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65) | ||
1173 | #define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66) | ||
1174 | |||
1175 | #define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80) | ||
1176 | #define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81) | ||
1177 | #define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82) | ||
1178 | #define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83) | ||
1179 | #define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84) | ||
1180 | |||
1181 | #define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96) | ||
1182 | #define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97) | ||
1183 | #define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98) | ||
1184 | |||
1185 | #define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112) | ||
1186 | enum v4l2_preemphasis { | ||
1187 | V4L2_PREEMPHASIS_DISABLED = 0, | ||
1188 | V4L2_PREEMPHASIS_50_uS = 1, | ||
1189 | V4L2_PREEMPHASIS_75_uS = 2, | ||
1190 | }; | ||
1191 | #define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113) | ||
1192 | #define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114) | ||
1193 | |||
1150 | /* | 1194 | /* |
1151 | * T U N I N G | 1195 | * T U N I N G |
1152 | */ | 1196 | */ |
@@ -1181,6 +1225,7 @@ struct v4l2_modulator { | |||
1181 | #define V4L2_TUNER_CAP_LANG2 0x0020 | 1225 | #define V4L2_TUNER_CAP_LANG2 0x0020 |
1182 | #define V4L2_TUNER_CAP_SAP 0x0020 | 1226 | #define V4L2_TUNER_CAP_SAP 0x0020 |
1183 | #define V4L2_TUNER_CAP_LANG1 0x0040 | 1227 | #define V4L2_TUNER_CAP_LANG1 0x0040 |
1228 | #define V4L2_TUNER_CAP_RDS 0x0080 | ||
1184 | 1229 | ||
1185 | /* Flags for the 'rxsubchans' field */ | 1230 | /* Flags for the 'rxsubchans' field */ |
1186 | #define V4L2_TUNER_SUB_MONO 0x0001 | 1231 | #define V4L2_TUNER_SUB_MONO 0x0001 |
@@ -1188,6 +1233,7 @@ struct v4l2_modulator { | |||
1188 | #define V4L2_TUNER_SUB_LANG2 0x0004 | 1233 | #define V4L2_TUNER_SUB_LANG2 0x0004 |
1189 | #define V4L2_TUNER_SUB_SAP 0x0004 | 1234 | #define V4L2_TUNER_SUB_SAP 0x0004 |
1190 | #define V4L2_TUNER_SUB_LANG1 0x0008 | 1235 | #define V4L2_TUNER_SUB_LANG1 0x0008 |
1236 | #define V4L2_TUNER_SUB_RDS 0x0010 | ||
1191 | 1237 | ||
1192 | /* Values for the 'audmode' field */ | 1238 | /* Values for the 'audmode' field */ |
1193 | #define V4L2_TUNER_MODE_MONO 0x0000 | 1239 | #define V4L2_TUNER_MODE_MONO 0x0000 |
@@ -1213,6 +1259,27 @@ struct v4l2_hw_freq_seek { | |||
1213 | }; | 1259 | }; |
1214 | 1260 | ||
1215 | /* | 1261 | /* |
1262 | * R D S | ||
1263 | */ | ||
1264 | |||
1265 | struct v4l2_rds_data { | ||
1266 | __u8 lsb; | ||
1267 | __u8 msb; | ||
1268 | __u8 block; | ||
1269 | } __attribute__ ((packed)); | ||
1270 | |||
1271 | #define V4L2_RDS_BLOCK_MSK 0x7 | ||
1272 | #define V4L2_RDS_BLOCK_A 0 | ||
1273 | #define V4L2_RDS_BLOCK_B 1 | ||
1274 | #define V4L2_RDS_BLOCK_C 2 | ||
1275 | #define V4L2_RDS_BLOCK_D 3 | ||
1276 | #define V4L2_RDS_BLOCK_C_ALT 4 | ||
1277 | #define V4L2_RDS_BLOCK_INVALID 7 | ||
1278 | |||
1279 | #define V4L2_RDS_BLOCK_CORRECTED 0x40 | ||
1280 | #define V4L2_RDS_BLOCK_ERROR 0x80 | ||
1281 | |||
1282 | /* | ||
1216 | * A U D I O | 1283 | * A U D I O |
1217 | */ | 1284 | */ |
1218 | struct v4l2_audio { | 1285 | struct v4l2_audio { |
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index a43ebec3a7b9..227c2a585e4f 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h | |||
@@ -115,4 +115,10 @@ extern rwlock_t vmlist_lock; | |||
115 | extern struct vm_struct *vmlist; | 115 | extern struct vm_struct *vmlist; |
116 | extern __init void vm_area_register_early(struct vm_struct *vm, size_t align); | 116 | extern __init void vm_area_register_early(struct vm_struct *vm, size_t align); |
117 | 117 | ||
118 | struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets, | ||
119 | const size_t *sizes, int nr_vms, | ||
120 | size_t align, gfp_t gfp_mask); | ||
121 | |||
122 | void pcpu_free_vm_areas(struct vm_struct **vms, int nr_vms); | ||
123 | |||
118 | #endif /* _LINUX_VMALLOC_H */ | 124 | #endif /* _LINUX_VMALLOC_H */ |
diff --git a/include/linux/wait.h b/include/linux/wait.h index cf3c2f5dba51..a48e16b77d5e 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
@@ -26,8 +26,8 @@ | |||
26 | #include <asm/current.h> | 26 | #include <asm/current.h> |
27 | 27 | ||
28 | typedef struct __wait_queue wait_queue_t; | 28 | typedef struct __wait_queue wait_queue_t; |
29 | typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int sync, void *key); | 29 | typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int flags, void *key); |
30 | int default_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key); | 30 | int default_wake_function(wait_queue_t *wait, unsigned mode, int flags, void *key); |
31 | 31 | ||
32 | struct __wait_queue { | 32 | struct __wait_queue { |
33 | unsigned int flags; | 33 | unsigned int flags; |
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index d347632f1861..75cf58666ff9 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
@@ -50,7 +50,6 @@ struct writeback_control { | |||
50 | unsigned encountered_congestion:1; /* An output: a queue is full */ | 50 | unsigned encountered_congestion:1; /* An output: a queue is full */ |
51 | unsigned for_kupdate:1; /* A kupdate writeback */ | 51 | unsigned for_kupdate:1; /* A kupdate writeback */ |
52 | unsigned for_reclaim:1; /* Invoked from the page allocator */ | 52 | unsigned for_reclaim:1; /* Invoked from the page allocator */ |
53 | unsigned for_writepages:1; /* This is a writepages() call */ | ||
54 | unsigned range_cyclic:1; /* range_start is cyclic */ | 53 | unsigned range_cyclic:1; /* range_start is cyclic */ |
55 | unsigned more_io:1; /* more io to be dispatched */ | 54 | unsigned more_io:1; /* more io to be dispatched */ |
56 | /* | 55 | /* |
@@ -69,8 +68,8 @@ struct writeback_control { | |||
69 | */ | 68 | */ |
70 | struct bdi_writeback; | 69 | struct bdi_writeback; |
71 | int inode_wait(void *); | 70 | int inode_wait(void *); |
72 | long writeback_inodes_sb(struct super_block *); | 71 | void writeback_inodes_sb(struct super_block *); |
73 | long sync_inodes_sb(struct super_block *); | 72 | void sync_inodes_sb(struct super_block *); |
74 | void writeback_inodes_wbc(struct writeback_control *wbc); | 73 | void writeback_inodes_wbc(struct writeback_control *wbc); |
75 | long wb_do_writeback(struct bdi_writeback *wb, int force_wait); | 74 | long wb_do_writeback(struct bdi_writeback *wb, int force_wait); |
76 | void wakeup_flusher_threads(long nr_pages); | 75 | void wakeup_flusher_threads(long nr_pages); |
diff --git a/include/media/ir-common.h b/include/media/ir-common.h index 9dcb632f6083..29f0e53cff94 100644 --- a/include/media/ir-common.h +++ b/include/media/ir-common.h | |||
@@ -31,8 +31,18 @@ | |||
31 | #define IR_TYPE_PD 2 /* Pulse distance encoded IR */ | 31 | #define IR_TYPE_PD 2 /* Pulse distance encoded IR */ |
32 | #define IR_TYPE_OTHER 99 | 32 | #define IR_TYPE_OTHER 99 |
33 | 33 | ||
34 | #define IR_KEYTAB_TYPE u32 | 34 | #define IR_KEYTAB_TYPE u32 |
35 | #define IR_KEYTAB_SIZE 128 // enougth for rc5, probably need more some day ... | 35 | #define IR_KEYTAB_SIZE 128 /* enougth for rc5, probably need more some day */ |
36 | |||
37 | struct ir_scancode { | ||
38 | u16 scancode; | ||
39 | u32 keycode; | ||
40 | }; | ||
41 | |||
42 | struct ir_scancode_table { | ||
43 | struct ir_scancode *scan; | ||
44 | int size; | ||
45 | }; | ||
36 | 46 | ||
37 | #define IR_KEYCODE(tab,code) (((unsigned)code < IR_KEYTAB_SIZE) \ | 47 | #define IR_KEYCODE(tab,code) (((unsigned)code < IR_KEYTAB_SIZE) \ |
38 | ? tab[code] : KEY_RESERVED) | 48 | ? tab[code] : KEY_RESERVED) |
@@ -93,7 +103,7 @@ struct card_ir { | |||
93 | }; | 103 | }; |
94 | 104 | ||
95 | void ir_input_init(struct input_dev *dev, struct ir_input_state *ir, | 105 | void ir_input_init(struct input_dev *dev, struct ir_input_state *ir, |
96 | int ir_type, IR_KEYTAB_TYPE *ir_codes); | 106 | int ir_type, struct ir_scancode_table *ir_codes); |
97 | void ir_input_nokey(struct input_dev *dev, struct ir_input_state *ir); | 107 | void ir_input_nokey(struct input_dev *dev, struct ir_input_state *ir); |
98 | void ir_input_keydown(struct input_dev *dev, struct ir_input_state *ir, | 108 | void ir_input_keydown(struct input_dev *dev, struct ir_input_state *ir, |
99 | u32 ir_key, u32 ir_raw); | 109 | u32 ir_key, u32 ir_raw); |
@@ -107,67 +117,63 @@ void ir_rc5_timer_keyup(unsigned long data); | |||
107 | 117 | ||
108 | /* Keymaps to be used by other modules */ | 118 | /* Keymaps to be used by other modules */ |
109 | 119 | ||
110 | extern IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE]; | 120 | extern struct ir_scancode_table ir_codes_empty_table; |
111 | extern IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE]; | 121 | extern struct ir_scancode_table ir_codes_avermedia_table; |
112 | extern IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE]; | 122 | extern struct ir_scancode_table ir_codes_avermedia_dvbt_table; |
113 | extern IR_KEYTAB_TYPE ir_codes_avermedia_m135a[IR_KEYTAB_SIZE]; | 123 | extern struct ir_scancode_table ir_codes_avermedia_m135a_table; |
114 | extern IR_KEYTAB_TYPE ir_codes_avermedia_cardbus[IR_KEYTAB_SIZE]; | 124 | extern struct ir_scancode_table ir_codes_avermedia_cardbus_table; |
115 | extern IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE]; | 125 | extern struct ir_scancode_table ir_codes_apac_viewcomp_table; |
116 | extern IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE]; | 126 | extern struct ir_scancode_table ir_codes_pixelview_table; |
117 | extern IR_KEYTAB_TYPE ir_codes_pixelview_new[IR_KEYTAB_SIZE]; | 127 | extern struct ir_scancode_table ir_codes_pixelview_new_table; |
118 | extern IR_KEYTAB_TYPE ir_codes_nebula[IR_KEYTAB_SIZE]; | 128 | extern struct ir_scancode_table ir_codes_nebula_table; |
119 | extern IR_KEYTAB_TYPE ir_codes_dntv_live_dvb_t[IR_KEYTAB_SIZE]; | 129 | extern struct ir_scancode_table ir_codes_dntv_live_dvb_t_table; |
120 | extern IR_KEYTAB_TYPE ir_codes_iodata_bctv7e[IR_KEYTAB_SIZE]; | 130 | extern struct ir_scancode_table ir_codes_iodata_bctv7e_table; |
121 | extern IR_KEYTAB_TYPE ir_codes_adstech_dvb_t_pci[IR_KEYTAB_SIZE]; | 131 | extern struct ir_scancode_table ir_codes_adstech_dvb_t_pci_table; |
122 | extern IR_KEYTAB_TYPE ir_codes_msi_tvanywhere[IR_KEYTAB_SIZE]; | 132 | extern struct ir_scancode_table ir_codes_msi_tvanywhere_table; |
123 | extern IR_KEYTAB_TYPE ir_codes_cinergy_1400[IR_KEYTAB_SIZE]; | 133 | extern struct ir_scancode_table ir_codes_cinergy_1400_table; |
124 | extern IR_KEYTAB_TYPE ir_codes_avertv_303[IR_KEYTAB_SIZE]; | 134 | extern struct ir_scancode_table ir_codes_avertv_303_table; |
125 | extern IR_KEYTAB_TYPE ir_codes_dntv_live_dvbt_pro[IR_KEYTAB_SIZE]; | 135 | extern struct ir_scancode_table ir_codes_dntv_live_dvbt_pro_table; |
126 | extern IR_KEYTAB_TYPE ir_codes_em_terratec[IR_KEYTAB_SIZE]; | 136 | extern struct ir_scancode_table ir_codes_em_terratec_table; |
127 | extern IR_KEYTAB_TYPE ir_codes_pinnacle_grey[IR_KEYTAB_SIZE]; | 137 | extern struct ir_scancode_table ir_codes_pinnacle_grey_table; |
128 | extern IR_KEYTAB_TYPE ir_codes_flyvideo[IR_KEYTAB_SIZE]; | 138 | extern struct ir_scancode_table ir_codes_flyvideo_table; |
129 | extern IR_KEYTAB_TYPE ir_codes_flydvb[IR_KEYTAB_SIZE]; | 139 | extern struct ir_scancode_table ir_codes_flydvb_table; |
130 | extern IR_KEYTAB_TYPE ir_codes_cinergy[IR_KEYTAB_SIZE]; | 140 | extern struct ir_scancode_table ir_codes_cinergy_table; |
131 | extern IR_KEYTAB_TYPE ir_codes_eztv[IR_KEYTAB_SIZE]; | 141 | extern struct ir_scancode_table ir_codes_eztv_table; |
132 | extern IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE]; | 142 | extern struct ir_scancode_table ir_codes_avermedia_table; |
133 | extern IR_KEYTAB_TYPE ir_codes_videomate_tv_pvr[IR_KEYTAB_SIZE]; | 143 | extern struct ir_scancode_table ir_codes_videomate_tv_pvr_table; |
134 | extern IR_KEYTAB_TYPE ir_codes_manli[IR_KEYTAB_SIZE]; | 144 | extern struct ir_scancode_table ir_codes_manli_table; |
135 | extern IR_KEYTAB_TYPE ir_codes_gotview7135[IR_KEYTAB_SIZE]; | 145 | extern struct ir_scancode_table ir_codes_gotview7135_table; |
136 | extern IR_KEYTAB_TYPE ir_codes_purpletv[IR_KEYTAB_SIZE]; | 146 | extern struct ir_scancode_table ir_codes_purpletv_table; |
137 | extern IR_KEYTAB_TYPE ir_codes_pctv_sedna[IR_KEYTAB_SIZE]; | 147 | extern struct ir_scancode_table ir_codes_pctv_sedna_table; |
138 | extern IR_KEYTAB_TYPE ir_codes_pv951[IR_KEYTAB_SIZE]; | 148 | extern struct ir_scancode_table ir_codes_pv951_table; |
139 | extern IR_KEYTAB_TYPE ir_codes_rc5_tv[IR_KEYTAB_SIZE]; | 149 | extern struct ir_scancode_table ir_codes_rc5_tv_table; |
140 | extern IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE]; | 150 | extern struct ir_scancode_table ir_codes_winfast_table; |
141 | extern IR_KEYTAB_TYPE ir_codes_pinnacle_color[IR_KEYTAB_SIZE]; | 151 | extern struct ir_scancode_table ir_codes_pinnacle_color_table; |
142 | extern IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE]; | 152 | extern struct ir_scancode_table ir_codes_hauppauge_new_table; |
143 | extern IR_KEYTAB_TYPE ir_codes_npgtech[IR_KEYTAB_SIZE]; | 153 | extern struct ir_scancode_table ir_codes_npgtech_table; |
144 | extern IR_KEYTAB_TYPE ir_codes_norwood[IR_KEYTAB_SIZE]; | 154 | extern struct ir_scancode_table ir_codes_norwood_table; |
145 | extern IR_KEYTAB_TYPE ir_codes_proteus_2309[IR_KEYTAB_SIZE]; | 155 | extern struct ir_scancode_table ir_codes_proteus_2309_table; |
146 | extern IR_KEYTAB_TYPE ir_codes_budget_ci_old[IR_KEYTAB_SIZE]; | 156 | extern struct ir_scancode_table ir_codes_budget_ci_old_table; |
147 | extern IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE]; | 157 | extern struct ir_scancode_table ir_codes_asus_pc39_table; |
148 | extern IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE]; | 158 | extern struct ir_scancode_table ir_codes_encore_enltv_table; |
149 | extern IR_KEYTAB_TYPE ir_codes_encore_enltv2[IR_KEYTAB_SIZE]; | 159 | extern struct ir_scancode_table ir_codes_encore_enltv2_table; |
150 | extern IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE]; | 160 | extern struct ir_scancode_table ir_codes_tt_1500_table; |
151 | extern IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE]; | 161 | extern struct ir_scancode_table ir_codes_fusionhdtv_mce_table; |
152 | extern IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE]; | 162 | extern struct ir_scancode_table ir_codes_behold_table; |
153 | extern IR_KEYTAB_TYPE ir_codes_behold_columbus[IR_KEYTAB_SIZE]; | 163 | extern struct ir_scancode_table ir_codes_behold_columbus_table; |
154 | extern IR_KEYTAB_TYPE ir_codes_pinnacle_pctv_hd[IR_KEYTAB_SIZE]; | 164 | extern struct ir_scancode_table ir_codes_pinnacle_pctv_hd_table; |
155 | extern IR_KEYTAB_TYPE ir_codes_genius_tvgo_a11mce[IR_KEYTAB_SIZE]; | 165 | extern struct ir_scancode_table ir_codes_genius_tvgo_a11mce_table; |
156 | extern IR_KEYTAB_TYPE ir_codes_powercolor_real_angel[IR_KEYTAB_SIZE]; | 166 | extern struct ir_scancode_table ir_codes_powercolor_real_angel_table; |
157 | extern IR_KEYTAB_TYPE ir_codes_avermedia_a16d[IR_KEYTAB_SIZE]; | 167 | extern struct ir_scancode_table ir_codes_avermedia_a16d_table; |
158 | extern IR_KEYTAB_TYPE ir_codes_encore_enltv_fm53[IR_KEYTAB_SIZE]; | 168 | extern struct ir_scancode_table ir_codes_encore_enltv_fm53_table; |
159 | extern IR_KEYTAB_TYPE ir_codes_real_audio_220_32_keys[IR_KEYTAB_SIZE]; | 169 | extern struct ir_scancode_table ir_codes_real_audio_220_32_keys_table; |
160 | extern IR_KEYTAB_TYPE ir_codes_msi_tvanywhere_plus[IR_KEYTAB_SIZE]; | 170 | extern struct ir_scancode_table ir_codes_msi_tvanywhere_plus_table; |
161 | extern IR_KEYTAB_TYPE ir_codes_ati_tv_wonder_hd_600[IR_KEYTAB_SIZE]; | 171 | extern struct ir_scancode_table ir_codes_ati_tv_wonder_hd_600_table; |
162 | extern IR_KEYTAB_TYPE ir_codes_kworld_plus_tv_analog[IR_KEYTAB_SIZE]; | 172 | extern struct ir_scancode_table ir_codes_kworld_plus_tv_analog_table; |
163 | extern IR_KEYTAB_TYPE ir_codes_kaiomy[IR_KEYTAB_SIZE]; | 173 | extern struct ir_scancode_table ir_codes_kaiomy_table; |
164 | extern IR_KEYTAB_TYPE ir_codes_dm1105_nec[IR_KEYTAB_SIZE]; | 174 | extern struct ir_scancode_table ir_codes_dm1105_nec_table; |
165 | extern IR_KEYTAB_TYPE ir_codes_evga_indtube[IR_KEYTAB_SIZE]; | 175 | extern struct ir_scancode_table ir_codes_evga_indtube_table; |
166 | 176 | extern struct ir_scancode_table ir_codes_terratec_cinergy_xs_table; | |
177 | extern struct ir_scancode_table ir_codes_videomate_s350_table; | ||
178 | extern struct ir_scancode_table ir_codes_gadmei_rm008z_table; | ||
167 | #endif | 179 | #endif |
168 | |||
169 | /* | ||
170 | * Local variables: | ||
171 | * c-basic-offset: 8 | ||
172 | * End: | ||
173 | */ | ||
diff --git a/include/media/ir-kbd-i2c.h b/include/media/ir-kbd-i2c.h index 3ad4ed5402fb..aaf65e8b1a40 100644 --- a/include/media/ir-kbd-i2c.h +++ b/include/media/ir-kbd-i2c.h | |||
@@ -6,7 +6,8 @@ | |||
6 | struct IR_i2c; | 6 | struct IR_i2c; |
7 | 7 | ||
8 | struct IR_i2c { | 8 | struct IR_i2c { |
9 | IR_KEYTAB_TYPE *ir_codes; | 9 | struct ir_scancode_table *ir_codes; |
10 | |||
10 | struct i2c_client *c; | 11 | struct i2c_client *c; |
11 | struct input_dev *input; | 12 | struct input_dev *input; |
12 | struct ir_input_state ir; | 13 | struct ir_input_state ir; |
@@ -20,10 +21,27 @@ struct IR_i2c { | |||
20 | int (*get_key)(struct IR_i2c*, u32*, u32*); | 21 | int (*get_key)(struct IR_i2c*, u32*, u32*); |
21 | }; | 22 | }; |
22 | 23 | ||
24 | enum ir_kbd_get_key_fn { | ||
25 | IR_KBD_GET_KEY_CUSTOM = 0, | ||
26 | IR_KBD_GET_KEY_PIXELVIEW, | ||
27 | IR_KBD_GET_KEY_PV951, | ||
28 | IR_KBD_GET_KEY_HAUP, | ||
29 | IR_KBD_GET_KEY_KNC1, | ||
30 | IR_KBD_GET_KEY_FUSIONHDTV, | ||
31 | IR_KBD_GET_KEY_HAUP_XVR, | ||
32 | IR_KBD_GET_KEY_AVERMEDIA_CARDBUS, | ||
33 | }; | ||
34 | |||
23 | /* Can be passed when instantiating an ir_video i2c device */ | 35 | /* Can be passed when instantiating an ir_video i2c device */ |
24 | struct IR_i2c_init_data { | 36 | struct IR_i2c_init_data { |
25 | IR_KEYTAB_TYPE *ir_codes; | 37 | struct ir_scancode_table *ir_codes; |
26 | const char *name; | 38 | const char *name; |
39 | int type; /* IR_TYPE_RC5, IR_TYPE_PD, etc */ | ||
40 | /* | ||
41 | * Specify either a function pointer or a value indicating one of | ||
42 | * ir_kbd_i2c's internal get_key functions | ||
43 | */ | ||
27 | int (*get_key)(struct IR_i2c*, u32*, u32*); | 44 | int (*get_key)(struct IR_i2c*, u32*, u32*); |
45 | enum ir_kbd_get_key_fn internal_get_key_func; | ||
28 | }; | 46 | }; |
29 | #endif | 47 | #endif |
diff --git a/include/media/radio-si4713.h b/include/media/radio-si4713.h new file mode 100644 index 000000000000..f6aae29c7741 --- /dev/null +++ b/include/media/radio-si4713.h | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * include/media/radio-si4713.h | ||
3 | * | ||
4 | * Board related data definitions for Si4713 radio transmitter chip. | ||
5 | * | ||
6 | * Copyright (c) 2009 Nokia Corporation | ||
7 | * Contact: Eduardo Valentin <eduardo.valentin@nokia.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public License | ||
10 | * version 2. This program is licensed "as is" without any warranty of any | ||
11 | * kind, whether express or implied. | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | #ifndef RADIO_SI4713_H | ||
16 | #define RADIO_SI4713_H | ||
17 | |||
18 | #include <linux/i2c.h> | ||
19 | |||
20 | #define SI4713_NAME "radio-si4713" | ||
21 | |||
22 | /* | ||
23 | * Platform dependent definition | ||
24 | */ | ||
25 | struct radio_si4713_platform_data { | ||
26 | int i2c_bus; | ||
27 | struct i2c_board_info *subdev_board_info; | ||
28 | }; | ||
29 | |||
30 | #endif /* ifndef RADIO_SI4713_H*/ | ||
diff --git a/include/media/si4713.h b/include/media/si4713.h new file mode 100644 index 000000000000..99850a54ed09 --- /dev/null +++ b/include/media/si4713.h | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * include/media/si4713.h | ||
3 | * | ||
4 | * Board related data definitions for Si4713 i2c device driver. | ||
5 | * | ||
6 | * Copyright (c) 2009 Nokia Corporation | ||
7 | * Contact: Eduardo Valentin <eduardo.valentin@nokia.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public License | ||
10 | * version 2. This program is licensed "as is" without any warranty of any | ||
11 | * kind, whether express or implied. | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | #ifndef SI4713_H | ||
16 | #define SI4713_H | ||
17 | |||
18 | /* The SI4713 I2C sensor chip has a fixed slave address of 0xc6 or 0x22. */ | ||
19 | #define SI4713_I2C_ADDR_BUSEN_HIGH 0x63 | ||
20 | #define SI4713_I2C_ADDR_BUSEN_LOW 0x11 | ||
21 | |||
22 | /* | ||
23 | * Platform dependent definition | ||
24 | */ | ||
25 | struct si4713_platform_data { | ||
26 | /* Set power state, zero is off, non-zero is on. */ | ||
27 | int (*set_power)(int power); | ||
28 | }; | ||
29 | |||
30 | /* | ||
31 | * Structure to query for Received Noise Level (RNL). | ||
32 | */ | ||
33 | struct si4713_rnl { | ||
34 | __u32 index; /* modulator index */ | ||
35 | __u32 frequency; /* frequency to peform rnl measurement */ | ||
36 | __s32 rnl; /* result of measurement in dBuV */ | ||
37 | __u32 reserved[4]; /* drivers and apps must init this to 0 */ | ||
38 | }; | ||
39 | |||
40 | /* | ||
41 | * This is the ioctl number to query for rnl. Users must pass a | ||
42 | * struct si4713_rnl pointer specifying desired frequency in 'frequency' field | ||
43 | * following driver capabilities (i.e V4L2_TUNER_CAP_LOW). | ||
44 | * Driver must return measured value in the same struture, filling 'rnl' field. | ||
45 | */ | ||
46 | #define SI4713_IOC_MEASURE_RNL _IOWR('V', BASE_VIDIOC_PRIVATE + 0, \ | ||
47 | struct si4713_rnl) | ||
48 | |||
49 | #endif /* ifndef SI4713_H*/ | ||
diff --git a/include/media/tuner.h b/include/media/tuner.h index cbf97f45fbec..c146f2f530b0 100644 --- a/include/media/tuner.h +++ b/include/media/tuner.h | |||
@@ -126,6 +126,7 @@ | |||
126 | #define TUNER_PHILIPS_FMD1216MEX_MK3 78 | 126 | #define TUNER_PHILIPS_FMD1216MEX_MK3 78 |
127 | #define TUNER_PHILIPS_FM1216MK5 79 | 127 | #define TUNER_PHILIPS_FM1216MK5 79 |
128 | #define TUNER_PHILIPS_FQ1216LME_MK3 80 /* Active loopthrough, no FM */ | 128 | #define TUNER_PHILIPS_FQ1216LME_MK3 80 /* Active loopthrough, no FM */ |
129 | #define TUNER_PARTSNIC_PTI_5NF05 81 | ||
129 | 130 | ||
130 | /* tv card specific */ | 131 | /* tv card specific */ |
131 | #define TDA9887_PRESENT (1<<0) | 132 | #define TDA9887_PRESENT (1<<0) |
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index 5dcb36785529..d411345f244b 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h | |||
@@ -137,6 +137,8 @@ struct v4l2_subdev_tuner_ops { | |||
137 | int (*g_frequency)(struct v4l2_subdev *sd, struct v4l2_frequency *freq); | 137 | int (*g_frequency)(struct v4l2_subdev *sd, struct v4l2_frequency *freq); |
138 | int (*g_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt); | 138 | int (*g_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt); |
139 | int (*s_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt); | 139 | int (*s_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt); |
140 | int (*g_modulator)(struct v4l2_subdev *sd, struct v4l2_modulator *vm); | ||
141 | int (*s_modulator)(struct v4l2_subdev *sd, struct v4l2_modulator *vm); | ||
140 | int (*s_type_addr)(struct v4l2_subdev *sd, struct tuner_setup *type); | 142 | int (*s_type_addr)(struct v4l2_subdev *sd, struct tuner_setup *type); |
141 | int (*s_config)(struct v4l2_subdev *sd, const struct v4l2_priv_tun_config *config); | 143 | int (*s_config)(struct v4l2_subdev *sd, const struct v4l2_priv_tun_config *config); |
142 | int (*s_standby)(struct v4l2_subdev *sd); | 144 | int (*s_standby)(struct v4l2_subdev *sd); |
@@ -220,6 +222,9 @@ struct v4l2_subdev_video_ops { | |||
220 | int (*g_fmt)(struct v4l2_subdev *sd, struct v4l2_format *fmt); | 222 | int (*g_fmt)(struct v4l2_subdev *sd, struct v4l2_format *fmt); |
221 | int (*try_fmt)(struct v4l2_subdev *sd, struct v4l2_format *fmt); | 223 | int (*try_fmt)(struct v4l2_subdev *sd, struct v4l2_format *fmt); |
222 | int (*s_fmt)(struct v4l2_subdev *sd, struct v4l2_format *fmt); | 224 | int (*s_fmt)(struct v4l2_subdev *sd, struct v4l2_format *fmt); |
225 | int (*cropcap)(struct v4l2_subdev *sd, struct v4l2_cropcap *cc); | ||
226 | int (*g_crop)(struct v4l2_subdev *sd, struct v4l2_crop *crop); | ||
227 | int (*s_crop)(struct v4l2_subdev *sd, struct v4l2_crop *crop); | ||
223 | int (*g_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param); | 228 | int (*g_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param); |
224 | int (*s_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param); | 229 | int (*s_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param); |
225 | int (*enum_framesizes)(struct v4l2_subdev *sd, struct v4l2_frmsizeenum *fsize); | 230 | int (*enum_framesizes)(struct v4l2_subdev *sd, struct v4l2_frmsizeenum *fsize); |
diff --git a/include/net/addrconf.h b/include/net/addrconf.h index 7b55ab215a64..0f7c37825fc1 100644 --- a/include/net/addrconf.h +++ b/include/net/addrconf.h | |||
@@ -143,6 +143,8 @@ extern int __ipv6_dev_mc_dec(struct inet6_dev *idev, const struct in6_addr *addr | |||
143 | extern int ipv6_dev_mc_dec(struct net_device *dev, const struct in6_addr *addr); | 143 | extern int ipv6_dev_mc_dec(struct net_device *dev, const struct in6_addr *addr); |
144 | extern void ipv6_mc_up(struct inet6_dev *idev); | 144 | extern void ipv6_mc_up(struct inet6_dev *idev); |
145 | extern void ipv6_mc_down(struct inet6_dev *idev); | 145 | extern void ipv6_mc_down(struct inet6_dev *idev); |
146 | extern void ipv6_mc_unmap(struct inet6_dev *idev); | ||
147 | extern void ipv6_mc_remap(struct inet6_dev *idev); | ||
146 | extern void ipv6_mc_init_dev(struct inet6_dev *idev); | 148 | extern void ipv6_mc_init_dev(struct inet6_dev *idev); |
147 | extern void ipv6_mc_destroy_dev(struct inet6_dev *idev); | 149 | extern void ipv6_mc_destroy_dev(struct inet6_dev *idev); |
148 | extern void addrconf_dad_failure(struct inet6_ifaddr *ifp); | 150 | extern void addrconf_dad_failure(struct inet6_ifaddr *ifp); |
diff --git a/include/net/protocol.h b/include/net/protocol.h index 1089d5aabd49..60249e51b669 100644 --- a/include/net/protocol.h +++ b/include/net/protocol.h | |||
@@ -94,21 +94,20 @@ struct inet_protosw { | |||
94 | #define INET_PROTOSW_PERMANENT 0x02 /* Permanent protocols are unremovable. */ | 94 | #define INET_PROTOSW_PERMANENT 0x02 /* Permanent protocols are unremovable. */ |
95 | #define INET_PROTOSW_ICSK 0x04 /* Is this an inet_connection_sock? */ | 95 | #define INET_PROTOSW_ICSK 0x04 /* Is this an inet_connection_sock? */ |
96 | 96 | ||
97 | extern struct net_protocol *inet_protocol_base; | 97 | extern const struct net_protocol *inet_protos[MAX_INET_PROTOS]; |
98 | extern struct net_protocol *inet_protos[MAX_INET_PROTOS]; | ||
99 | 98 | ||
100 | #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) | 99 | #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) |
101 | extern struct inet6_protocol *inet6_protos[MAX_INET_PROTOS]; | 100 | extern const struct inet6_protocol *inet6_protos[MAX_INET_PROTOS]; |
102 | #endif | 101 | #endif |
103 | 102 | ||
104 | extern int inet_add_protocol(struct net_protocol *prot, unsigned char num); | 103 | extern int inet_add_protocol(const struct net_protocol *prot, unsigned char num); |
105 | extern int inet_del_protocol(struct net_protocol *prot, unsigned char num); | 104 | extern int inet_del_protocol(const struct net_protocol *prot, unsigned char num); |
106 | extern void inet_register_protosw(struct inet_protosw *p); | 105 | extern void inet_register_protosw(struct inet_protosw *p); |
107 | extern void inet_unregister_protosw(struct inet_protosw *p); | 106 | extern void inet_unregister_protosw(struct inet_protosw *p); |
108 | 107 | ||
109 | #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) | 108 | #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) |
110 | extern int inet6_add_protocol(struct inet6_protocol *prot, unsigned char num); | 109 | extern int inet6_add_protocol(const struct inet6_protocol *prot, unsigned char num); |
111 | extern int inet6_del_protocol(struct inet6_protocol *prot, unsigned char num); | 110 | extern int inet6_del_protocol(const struct inet6_protocol *prot, unsigned char num); |
112 | extern int inet6_register_protosw(struct inet_protosw *p); | 111 | extern int inet6_register_protosw(struct inet_protosw *p); |
113 | extern void inet6_unregister_protosw(struct inet_protosw *p); | 112 | extern void inet6_unregister_protosw(struct inet_protosw *p); |
114 | #endif | 113 | #endif |
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 88eb9de095de..c33180dd42b4 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
@@ -81,7 +81,7 @@ struct Qdisc | |||
81 | struct Qdisc_class_ops | 81 | struct Qdisc_class_ops |
82 | { | 82 | { |
83 | /* Child qdisc manipulation */ | 83 | /* Child qdisc manipulation */ |
84 | unsigned int (*select_queue)(struct Qdisc *, struct tcmsg *); | 84 | struct netdev_queue * (*select_queue)(struct Qdisc *, struct tcmsg *); |
85 | int (*graft)(struct Qdisc *, unsigned long cl, | 85 | int (*graft)(struct Qdisc *, unsigned long cl, |
86 | struct Qdisc *, struct Qdisc **); | 86 | struct Qdisc *, struct Qdisc **); |
87 | struct Qdisc * (*leaf)(struct Qdisc *, unsigned long cl); | 87 | struct Qdisc * (*leaf)(struct Qdisc *, unsigned long cl); |
diff --git a/include/net/tcp.h b/include/net/tcp.h index b71a446d58f6..56b76027b85e 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -793,6 +793,13 @@ static inline unsigned int tcp_packets_in_flight(const struct tcp_sock *tp) | |||
793 | return tp->packets_out - tcp_left_out(tp) + tp->retrans_out; | 793 | return tp->packets_out - tcp_left_out(tp) + tp->retrans_out; |
794 | } | 794 | } |
795 | 795 | ||
796 | #define TCP_INFINITE_SSTHRESH 0x7fffffff | ||
797 | |||
798 | static inline bool tcp_in_initial_slowstart(const struct tcp_sock *tp) | ||
799 | { | ||
800 | return tp->snd_ssthresh >= TCP_INFINITE_SSTHRESH; | ||
801 | } | ||
802 | |||
796 | /* If cwnd > ssthresh, we may raise ssthresh to be half-way to cwnd. | 803 | /* If cwnd > ssthresh, we may raise ssthresh to be half-way to cwnd. |
797 | * The exception is rate halving phase, when cwnd is decreasing towards | 804 | * The exception is rate halving phase, when cwnd is decreasing towards |
798 | * ssthresh. | 805 | * ssthresh. |
diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h index 9b4ac9385f5d..9a3b49865173 100644 --- a/include/pcmcia/ss.h +++ b/include/pcmcia/ss.h | |||
@@ -90,14 +90,14 @@ typedef struct pccard_io_map { | |||
90 | u_char map; | 90 | u_char map; |
91 | u_char flags; | 91 | u_char flags; |
92 | u_short speed; | 92 | u_short speed; |
93 | u_int start, stop; | 93 | phys_addr_t start, stop; |
94 | } pccard_io_map; | 94 | } pccard_io_map; |
95 | 95 | ||
96 | typedef struct pccard_mem_map { | 96 | typedef struct pccard_mem_map { |
97 | u_char map; | 97 | u_char map; |
98 | u_char flags; | 98 | u_char flags; |
99 | u_short speed; | 99 | u_short speed; |
100 | u_long static_start; | 100 | phys_addr_t static_start; |
101 | u_int card_start; | 101 | u_int card_start; |
102 | struct resource *res; | 102 | struct resource *res; |
103 | } pccard_mem_map; | 103 | } pccard_mem_map; |
diff --git a/include/trace/events/block.h b/include/trace/events/block.h index 9a74b468a229..d86af94691c2 100644 --- a/include/trace/events/block.h +++ b/include/trace/events/block.h | |||
@@ -171,6 +171,7 @@ TRACE_EVENT(block_rq_complete, | |||
171 | (unsigned long long)__entry->sector, | 171 | (unsigned long long)__entry->sector, |
172 | __entry->nr_sector, __entry->errors) | 172 | __entry->nr_sector, __entry->errors) |
173 | ); | 173 | ); |
174 | |||
174 | TRACE_EVENT(block_bio_bounce, | 175 | TRACE_EVENT(block_bio_bounce, |
175 | 176 | ||
176 | TP_PROTO(struct request_queue *q, struct bio *bio), | 177 | TP_PROTO(struct request_queue *q, struct bio *bio), |
@@ -186,7 +187,8 @@ TRACE_EVENT(block_bio_bounce, | |||
186 | ), | 187 | ), |
187 | 188 | ||
188 | TP_fast_assign( | 189 | TP_fast_assign( |
189 | __entry->dev = bio->bi_bdev->bd_dev; | 190 | __entry->dev = bio->bi_bdev ? |
191 | bio->bi_bdev->bd_dev : 0; | ||
190 | __entry->sector = bio->bi_sector; | 192 | __entry->sector = bio->bi_sector; |
191 | __entry->nr_sector = bio->bi_size >> 9; | 193 | __entry->nr_sector = bio->bi_size >> 9; |
192 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); | 194 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); |
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index 7d8b5bc74185..8d433c4e3709 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h | |||
@@ -227,7 +227,6 @@ TRACE_EVENT(ext4_da_writepages, | |||
227 | __field( char, nonblocking ) | 227 | __field( char, nonblocking ) |
228 | __field( char, for_kupdate ) | 228 | __field( char, for_kupdate ) |
229 | __field( char, for_reclaim ) | 229 | __field( char, for_reclaim ) |
230 | __field( char, for_writepages ) | ||
231 | __field( char, range_cyclic ) | 230 | __field( char, range_cyclic ) |
232 | ), | 231 | ), |
233 | 232 | ||
@@ -241,16 +240,15 @@ TRACE_EVENT(ext4_da_writepages, | |||
241 | __entry->nonblocking = wbc->nonblocking; | 240 | __entry->nonblocking = wbc->nonblocking; |
242 | __entry->for_kupdate = wbc->for_kupdate; | 241 | __entry->for_kupdate = wbc->for_kupdate; |
243 | __entry->for_reclaim = wbc->for_reclaim; | 242 | __entry->for_reclaim = wbc->for_reclaim; |
244 | __entry->for_writepages = wbc->for_writepages; | ||
245 | __entry->range_cyclic = wbc->range_cyclic; | 243 | __entry->range_cyclic = wbc->range_cyclic; |
246 | ), | 244 | ), |
247 | 245 | ||
248 | TP_printk("dev %s ino %lu nr_t_write %ld pages_skipped %ld range_start %llu range_end %llu nonblocking %d for_kupdate %d for_reclaim %d for_writepages %d range_cyclic %d", | 246 | TP_printk("dev %s ino %lu nr_t_write %ld pages_skipped %ld range_start %llu range_end %llu nonblocking %d for_kupdate %d for_reclaim %d range_cyclic %d", |
249 | jbd2_dev_to_name(__entry->dev), __entry->ino, __entry->nr_to_write, | 247 | jbd2_dev_to_name(__entry->dev), __entry->ino, __entry->nr_to_write, |
250 | __entry->pages_skipped, __entry->range_start, | 248 | __entry->pages_skipped, __entry->range_start, |
251 | __entry->range_end, __entry->nonblocking, | 249 | __entry->range_end, __entry->nonblocking, |
252 | __entry->for_kupdate, __entry->for_reclaim, | 250 | __entry->for_kupdate, __entry->for_reclaim, |
253 | __entry->for_writepages, __entry->range_cyclic) | 251 | __entry->range_cyclic) |
254 | ); | 252 | ); |
255 | 253 | ||
256 | TRACE_EVENT(ext4_da_writepages_result, | 254 | TRACE_EVENT(ext4_da_writepages_result, |
diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h index 1cb0c3aa11e6..b89f9db4a404 100644 --- a/include/trace/events/irq.h +++ b/include/trace/events/irq.h | |||
@@ -8,16 +8,17 @@ | |||
8 | #include <linux/interrupt.h> | 8 | #include <linux/interrupt.h> |
9 | 9 | ||
10 | #define softirq_name(sirq) { sirq##_SOFTIRQ, #sirq } | 10 | #define softirq_name(sirq) { sirq##_SOFTIRQ, #sirq } |
11 | #define show_softirq_name(val) \ | 11 | #define show_softirq_name(val) \ |
12 | __print_symbolic(val, \ | 12 | __print_symbolic(val, \ |
13 | softirq_name(HI), \ | 13 | softirq_name(HI), \ |
14 | softirq_name(TIMER), \ | 14 | softirq_name(TIMER), \ |
15 | softirq_name(NET_TX), \ | 15 | softirq_name(NET_TX), \ |
16 | softirq_name(NET_RX), \ | 16 | softirq_name(NET_RX), \ |
17 | softirq_name(BLOCK), \ | 17 | softirq_name(BLOCK), \ |
18 | softirq_name(TASKLET), \ | 18 | softirq_name(BLOCK_IOPOLL), \ |
19 | softirq_name(SCHED), \ | 19 | softirq_name(TASKLET), \ |
20 | softirq_name(HRTIMER), \ | 20 | softirq_name(SCHED), \ |
21 | softirq_name(HRTIMER), \ | ||
21 | softirq_name(RCU)) | 22 | softirq_name(RCU)) |
22 | 23 | ||
23 | /** | 24 | /** |
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index 308bafd93325..72a3b437b829 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h | |||
@@ -239,9 +239,9 @@ ftrace_format_##call(struct ftrace_event_call *unused, \ | |||
239 | #undef __print_flags | 239 | #undef __print_flags |
240 | #define __print_flags(flag, delim, flag_array...) \ | 240 | #define __print_flags(flag, delim, flag_array...) \ |
241 | ({ \ | 241 | ({ \ |
242 | static const struct trace_print_flags flags[] = \ | 242 | static const struct trace_print_flags __flags[] = \ |
243 | { flag_array, { -1, NULL }}; \ | 243 | { flag_array, { -1, NULL }}; \ |
244 | ftrace_print_flags_seq(p, delim, flag, flags); \ | 244 | ftrace_print_flags_seq(p, delim, flag, __flags); \ |
245 | }) | 245 | }) |
246 | 246 | ||
247 | #undef __print_symbolic | 247 | #undef __print_symbolic |
@@ -254,7 +254,7 @@ ftrace_format_##call(struct ftrace_event_call *unused, \ | |||
254 | 254 | ||
255 | #undef TRACE_EVENT | 255 | #undef TRACE_EVENT |
256 | #define TRACE_EVENT(call, proto, args, tstruct, assign, print) \ | 256 | #define TRACE_EVENT(call, proto, args, tstruct, assign, print) \ |
257 | enum print_line_t \ | 257 | static enum print_line_t \ |
258 | ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \ | 258 | ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \ |
259 | { \ | 259 | { \ |
260 | struct trace_seq *s = &iter->seq; \ | 260 | struct trace_seq *s = &iter->seq; \ |
@@ -317,7 +317,7 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \ | |||
317 | 317 | ||
318 | #undef TRACE_EVENT | 318 | #undef TRACE_EVENT |
319 | #define TRACE_EVENT(call, proto, args, tstruct, func, print) \ | 319 | #define TRACE_EVENT(call, proto, args, tstruct, func, print) \ |
320 | int \ | 320 | static int \ |
321 | ftrace_define_fields_##call(struct ftrace_event_call *event_call) \ | 321 | ftrace_define_fields_##call(struct ftrace_event_call *event_call) \ |
322 | { \ | 322 | { \ |
323 | struct ftrace_raw_##call field; \ | 323 | struct ftrace_raw_##call field; \ |