diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-02-25 22:41:00 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-02-25 22:41:00 -0500 |
commit | 874f2f997dbe041a6c6e509dae8656ed9022d65d (patch) | |
tree | 61898165882041ef7f9beaf2ef6663a1a4d3c29a /include | |
parent | 071c06cb570d38efe23a124e885f2f3e643a9206 (diff) | |
parent | 6ebdc661b608671e9ca572af8bb42d58108cc008 (diff) |
Merge commit 'origin/master' into next
Manual merge of:
drivers/char/hvc_console.c
drivers/char/hvc_console.h
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/amba/bus.h | 6 | ||||
-rw-r--r-- | include/linux/blkdev.h | 4 | ||||
-rw-r--r-- | include/linux/fs.h | 2 | ||||
-rw-r--r-- | include/linux/hid.h | 5 | ||||
-rw-r--r-- | include/linux/input.h | 43 | ||||
-rw-r--r-- | include/linux/kfifo.h | 2 | ||||
-rw-r--r-- | include/linux/of.h | 62 | ||||
-rw-r--r-- | include/linux/of_fdt.h | 75 | ||||
-rw-r--r-- | include/linux/spi/dw_spi.h | 5 | ||||
-rw-r--r-- | include/linux/virtio.h | 4 | ||||
-rw-r--r-- | include/linux/virtio_balloon.h | 15 | ||||
-rw-r--r-- | include/linux/virtio_blk.h | 13 | ||||
-rw-r--r-- | include/linux/virtio_console.h | 30 |
13 files changed, 209 insertions, 57 deletions
diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h index ab94335b4bb9..6816be6c3f77 100644 --- a/include/linux/amba/bus.h +++ b/include/linux/amba/bus.h | |||
@@ -1,5 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-arm/hardware/amba.h | 2 | * linux/include/amba/bus.h |
3 | * | ||
4 | * This device type deals with ARM PrimeCells and anything else that | ||
5 | * presents a proper CID (0xB105F00D) at the end of the I/O register | ||
6 | * region or that is derived from a PrimeCell. | ||
3 | * | 7 | * |
4 | * Copyright (C) 2003 Deep Blue Solutions Ltd, All Rights Reserved. | 8 | * Copyright (C) 2003 Deep Blue Solutions Ltd, All Rights Reserved. |
5 | * | 9 | * |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 5c8018977efa..1896e868854f 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -461,8 +461,7 @@ struct request_queue | |||
461 | #define QUEUE_FLAG_NONROT 14 /* non-rotational device (SSD) */ | 461 | #define QUEUE_FLAG_NONROT 14 /* non-rotational device (SSD) */ |
462 | #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ | 462 | #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ |
463 | #define QUEUE_FLAG_IO_STAT 15 /* do IO stats */ | 463 | #define QUEUE_FLAG_IO_STAT 15 /* do IO stats */ |
464 | #define QUEUE_FLAG_CQ 16 /* hardware does queuing */ | 464 | #define QUEUE_FLAG_DISCARD 16 /* supports DISCARD */ |
465 | #define QUEUE_FLAG_DISCARD 17 /* supports DISCARD */ | ||
466 | 465 | ||
467 | #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ | 466 | #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ |
468 | (1 << QUEUE_FLAG_CLUSTER) | \ | 467 | (1 << QUEUE_FLAG_CLUSTER) | \ |
@@ -586,7 +585,6 @@ enum { | |||
586 | 585 | ||
587 | #define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags) | 586 | #define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags) |
588 | #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags) | 587 | #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags) |
589 | #define blk_queue_queuing(q) test_bit(QUEUE_FLAG_CQ, &(q)->queue_flags) | ||
590 | #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) | 588 | #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) |
591 | #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags) | 589 | #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags) |
592 | #define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags) | 590 | #define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags) |
diff --git a/include/linux/fs.h b/include/linux/fs.h index b1bcb275b596..ebb1cd5bc241 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -729,6 +729,7 @@ struct inode { | |||
729 | uid_t i_uid; | 729 | uid_t i_uid; |
730 | gid_t i_gid; | 730 | gid_t i_gid; |
731 | dev_t i_rdev; | 731 | dev_t i_rdev; |
732 | unsigned int i_blkbits; | ||
732 | u64 i_version; | 733 | u64 i_version; |
733 | loff_t i_size; | 734 | loff_t i_size; |
734 | #ifdef __NEED_I_SIZE_ORDERED | 735 | #ifdef __NEED_I_SIZE_ORDERED |
@@ -738,7 +739,6 @@ struct inode { | |||
738 | struct timespec i_mtime; | 739 | struct timespec i_mtime; |
739 | struct timespec i_ctime; | 740 | struct timespec i_ctime; |
740 | blkcnt_t i_blocks; | 741 | blkcnt_t i_blocks; |
741 | unsigned int i_blkbits; | ||
742 | unsigned short i_bytes; | 742 | unsigned short i_bytes; |
743 | umode_t i_mode; | 743 | umode_t i_mode; |
744 | spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */ | 744 | spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */ |
diff --git a/include/linux/hid.h b/include/linux/hid.h index 87093652dda8..b1344ec4b7fc 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h | |||
@@ -501,7 +501,7 @@ struct hid_device { /* device report descriptor */ | |||
501 | void (*hiddev_report_event) (struct hid_device *, struct hid_report *); | 501 | void (*hiddev_report_event) (struct hid_device *, struct hid_report *); |
502 | 502 | ||
503 | /* handler for raw output data, used by hidraw */ | 503 | /* handler for raw output data, used by hidraw */ |
504 | int (*hid_output_raw_report) (struct hid_device *, __u8 *, size_t); | 504 | int (*hid_output_raw_report) (struct hid_device *, __u8 *, size_t, unsigned char); |
505 | 505 | ||
506 | /* debugging support via debugfs */ | 506 | /* debugging support via debugfs */ |
507 | unsigned short debug; | 507 | unsigned short debug; |
@@ -663,7 +663,7 @@ struct hid_ll_driver { | |||
663 | 663 | ||
664 | /* Applications from HID Usage Tables 4/8/99 Version 1.1 */ | 664 | /* Applications from HID Usage Tables 4/8/99 Version 1.1 */ |
665 | /* We ignore a few input applications that are not widely used */ | 665 | /* We ignore a few input applications that are not widely used */ |
666 | #define IS_INPUT_APPLICATION(a) (((a >= 0x00010000) && (a <= 0x00010008)) || (a == 0x00010080) || (a == 0x000c0001) || (a == 0x000d0002)) | 666 | #define IS_INPUT_APPLICATION(a) (((a >= 0x00010000) && (a <= 0x00010008)) || (a == 0x00010080) || (a == 0x000c0001) || ((a >= 0x000d0002) && (a <= 0x000d0006))) |
667 | 667 | ||
668 | /* HID core API */ | 668 | /* HID core API */ |
669 | 669 | ||
@@ -690,6 +690,7 @@ int hid_input_report(struct hid_device *, int type, u8 *, int, int); | |||
690 | int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_field **field); | 690 | int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_field **field); |
691 | void hid_output_report(struct hid_report *report, __u8 *data); | 691 | void hid_output_report(struct hid_report *report, __u8 *data); |
692 | struct hid_device *hid_allocate_device(void); | 692 | struct hid_device *hid_allocate_device(void); |
693 | struct hid_report *hid_register_report(struct hid_device *device, unsigned type, unsigned id); | ||
693 | int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size); | 694 | int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size); |
694 | int hid_check_keys_pressed(struct hid_device *hid); | 695 | int hid_check_keys_pressed(struct hid_device *hid); |
695 | int hid_connect(struct hid_device *hid, unsigned int connect_mask); | 696 | int hid_connect(struct hid_device *hid, unsigned int connect_mask); |
diff --git a/include/linux/input.h b/include/linux/input.h index 735ceaf1bc2d..f44ee9114401 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -376,6 +376,7 @@ struct input_absinfo { | |||
376 | #define KEY_DISPLAY_OFF 245 /* display device to off state */ | 376 | #define KEY_DISPLAY_OFF 245 /* display device to off state */ |
377 | 377 | ||
378 | #define KEY_WIMAX 246 | 378 | #define KEY_WIMAX 246 |
379 | #define KEY_RFKILL 247 /* Key that controls all radios */ | ||
379 | 380 | ||
380 | /* Range 248 - 255 is reserved for special needs of AT keyboard driver */ | 381 | /* Range 248 - 255 is reserved for special needs of AT keyboard driver */ |
381 | 382 | ||
@@ -597,6 +598,48 @@ struct input_absinfo { | |||
597 | 598 | ||
598 | #define KEY_CAMERA_FOCUS 0x210 | 599 | #define KEY_CAMERA_FOCUS 0x210 |
599 | 600 | ||
601 | #define BTN_TRIGGER_HAPPY 0x2c0 | ||
602 | #define BTN_TRIGGER_HAPPY1 0x2c0 | ||
603 | #define BTN_TRIGGER_HAPPY2 0x2c1 | ||
604 | #define BTN_TRIGGER_HAPPY3 0x2c2 | ||
605 | #define BTN_TRIGGER_HAPPY4 0x2c3 | ||
606 | #define BTN_TRIGGER_HAPPY5 0x2c4 | ||
607 | #define BTN_TRIGGER_HAPPY6 0x2c5 | ||
608 | #define BTN_TRIGGER_HAPPY7 0x2c6 | ||
609 | #define BTN_TRIGGER_HAPPY8 0x2c7 | ||
610 | #define BTN_TRIGGER_HAPPY9 0x2c8 | ||
611 | #define BTN_TRIGGER_HAPPY10 0x2c9 | ||
612 | #define BTN_TRIGGER_HAPPY11 0x2ca | ||
613 | #define BTN_TRIGGER_HAPPY12 0x2cb | ||
614 | #define BTN_TRIGGER_HAPPY13 0x2cc | ||
615 | #define BTN_TRIGGER_HAPPY14 0x2cd | ||
616 | #define BTN_TRIGGER_HAPPY15 0x2ce | ||
617 | #define BTN_TRIGGER_HAPPY16 0x2cf | ||
618 | #define BTN_TRIGGER_HAPPY17 0x2d0 | ||
619 | #define BTN_TRIGGER_HAPPY18 0x2d1 | ||
620 | #define BTN_TRIGGER_HAPPY19 0x2d2 | ||
621 | #define BTN_TRIGGER_HAPPY20 0x2d3 | ||
622 | #define BTN_TRIGGER_HAPPY21 0x2d4 | ||
623 | #define BTN_TRIGGER_HAPPY22 0x2d5 | ||
624 | #define BTN_TRIGGER_HAPPY23 0x2d6 | ||
625 | #define BTN_TRIGGER_HAPPY24 0x2d7 | ||
626 | #define BTN_TRIGGER_HAPPY25 0x2d8 | ||
627 | #define BTN_TRIGGER_HAPPY26 0x2d9 | ||
628 | #define BTN_TRIGGER_HAPPY27 0x2da | ||
629 | #define BTN_TRIGGER_HAPPY28 0x2db | ||
630 | #define BTN_TRIGGER_HAPPY29 0x2dc | ||
631 | #define BTN_TRIGGER_HAPPY30 0x2dd | ||
632 | #define BTN_TRIGGER_HAPPY31 0x2de | ||
633 | #define BTN_TRIGGER_HAPPY32 0x2df | ||
634 | #define BTN_TRIGGER_HAPPY33 0x2e0 | ||
635 | #define BTN_TRIGGER_HAPPY34 0x2e1 | ||
636 | #define BTN_TRIGGER_HAPPY35 0x2e2 | ||
637 | #define BTN_TRIGGER_HAPPY36 0x2e3 | ||
638 | #define BTN_TRIGGER_HAPPY37 0x2e4 | ||
639 | #define BTN_TRIGGER_HAPPY38 0x2e5 | ||
640 | #define BTN_TRIGGER_HAPPY39 0x2e6 | ||
641 | #define BTN_TRIGGER_HAPPY40 0x2e7 | ||
642 | |||
600 | /* We avoid low common keys in module aliases so they don't get huge. */ | 643 | /* We avoid low common keys in module aliases so they don't get huge. */ |
601 | #define KEY_MIN_INTERESTING KEY_MUTE | 644 | #define KEY_MIN_INTERESTING KEY_MUTE |
602 | #define KEY_MAX 0x2ff | 645 | #define KEY_MAX 0x2ff |
diff --git a/include/linux/kfifo.h b/include/linux/kfifo.h index 6f6c5f300af6..bc0fc795bd35 100644 --- a/include/linux/kfifo.h +++ b/include/linux/kfifo.h | |||
@@ -124,7 +124,7 @@ extern __must_check unsigned int kfifo_out_peek(struct kfifo *fifo, | |||
124 | */ | 124 | */ |
125 | static inline bool kfifo_initialized(struct kfifo *fifo) | 125 | static inline bool kfifo_initialized(struct kfifo *fifo) |
126 | { | 126 | { |
127 | return fifo->buffer != 0; | 127 | return fifo->buffer != NULL; |
128 | } | 128 | } |
129 | 129 | ||
130 | /** | 130 | /** |
diff --git a/include/linux/of.h b/include/linux/of.h index e7facd8fbce8..f6d9cbc39c9c 100644 --- a/include/linux/of.h +++ b/include/linux/of.h | |||
@@ -19,6 +19,11 @@ | |||
19 | #include <linux/bitops.h> | 19 | #include <linux/bitops.h> |
20 | #include <linux/kref.h> | 20 | #include <linux/kref.h> |
21 | #include <linux/mod_devicetable.h> | 21 | #include <linux/mod_devicetable.h> |
22 | #include <linux/spinlock.h> | ||
23 | |||
24 | #include <asm/byteorder.h> | ||
25 | |||
26 | #ifdef CONFIG_OF | ||
22 | 27 | ||
23 | typedef u32 phandle; | 28 | typedef u32 phandle; |
24 | typedef u32 ihandle; | 29 | typedef u32 ihandle; |
@@ -39,10 +44,7 @@ struct of_irq_controller; | |||
39 | struct device_node { | 44 | struct device_node { |
40 | const char *name; | 45 | const char *name; |
41 | const char *type; | 46 | const char *type; |
42 | phandle node; | 47 | phandle phandle; |
43 | #if !defined(CONFIG_SPARC) | ||
44 | phandle linux_phandle; | ||
45 | #endif | ||
46 | char *full_name; | 48 | char *full_name; |
47 | 49 | ||
48 | struct property *properties; | 50 | struct property *properties; |
@@ -63,6 +65,11 @@ struct device_node { | |||
63 | #endif | 65 | #endif |
64 | }; | 66 | }; |
65 | 67 | ||
68 | /* Pointer for first entry in chain of all nodes. */ | ||
69 | extern struct device_node *allnodes; | ||
70 | extern struct device_node *of_chosen; | ||
71 | extern rwlock_t devtree_lock; | ||
72 | |||
66 | static inline int of_node_check_flag(struct device_node *n, unsigned long flag) | 73 | static inline int of_node_check_flag(struct device_node *n, unsigned long flag) |
67 | { | 74 | { |
68 | return test_bit(flag, &n->_flags); | 75 | return test_bit(flag, &n->_flags); |
@@ -73,12 +80,6 @@ static inline void of_node_set_flag(struct device_node *n, unsigned long flag) | |||
73 | set_bit(flag, &n->_flags); | 80 | set_bit(flag, &n->_flags); |
74 | } | 81 | } |
75 | 82 | ||
76 | static inline void | ||
77 | set_node_proc_entry(struct device_node *dn, struct proc_dir_entry *de) | ||
78 | { | ||
79 | dn->pde = de; | ||
80 | } | ||
81 | |||
82 | extern struct device_node *of_find_all_nodes(struct device_node *prev); | 83 | extern struct device_node *of_find_all_nodes(struct device_node *prev); |
83 | 84 | ||
84 | #if defined(CONFIG_SPARC) | 85 | #if defined(CONFIG_SPARC) |
@@ -101,26 +102,36 @@ extern void of_node_put(struct device_node *node); | |||
101 | */ | 102 | */ |
102 | 103 | ||
103 | /* Helper to read a big number; size is in cells (not bytes) */ | 104 | /* Helper to read a big number; size is in cells (not bytes) */ |
104 | static inline u64 of_read_number(const u32 *cell, int size) | 105 | static inline u64 of_read_number(const __be32 *cell, int size) |
105 | { | 106 | { |
106 | u64 r = 0; | 107 | u64 r = 0; |
107 | while (size--) | 108 | while (size--) |
108 | r = (r << 32) | *(cell++); | 109 | r = (r << 32) | be32_to_cpu(*(cell++)); |
109 | return r; | 110 | return r; |
110 | } | 111 | } |
111 | 112 | ||
112 | /* Like of_read_number, but we want an unsigned long result */ | 113 | /* Like of_read_number, but we want an unsigned long result */ |
113 | #ifdef CONFIG_PPC32 | 114 | static inline unsigned long of_read_ulong(const __be32 *cell, int size) |
114 | static inline unsigned long of_read_ulong(const u32 *cell, int size) | ||
115 | { | 115 | { |
116 | return cell[size-1]; | 116 | /* toss away upper bits if unsigned long is smaller than u64 */ |
117 | return of_read_number(cell, size); | ||
117 | } | 118 | } |
118 | #else | ||
119 | #define of_read_ulong(cell, size) of_read_number(cell, size) | ||
120 | #endif | ||
121 | 119 | ||
122 | #include <asm/prom.h> | 120 | #include <asm/prom.h> |
123 | 121 | ||
122 | /* Default #address and #size cells. Allow arch asm/prom.h to override */ | ||
123 | #if !defined(OF_ROOT_NODE_ADDR_CELLS_DEFAULT) | ||
124 | #define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 1 | ||
125 | #define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1 | ||
126 | #endif | ||
127 | |||
128 | /* Default string compare functions, Allow arch asm/prom.h to override */ | ||
129 | #if !defined(of_compat_cmp) | ||
130 | #define of_compat_cmp(s1, s2, l) strncasecmp((s1), (s2), (l)) | ||
131 | #define of_prop_cmp(s1, s2) strcmp((s1), (s2)) | ||
132 | #define of_node_cmp(s1, s2) strcasecmp((s1), (s2)) | ||
133 | #endif | ||
134 | |||
124 | /* flag descriptions */ | 135 | /* flag descriptions */ |
125 | #define OF_DYNAMIC 1 /* node and properties were allocated via kmalloc */ | 136 | #define OF_DYNAMIC 1 /* node and properties were allocated via kmalloc */ |
126 | #define OF_DETACHED 2 /* node has been detached from the device tree */ | 137 | #define OF_DETACHED 2 /* node has been detached from the device tree */ |
@@ -187,4 +198,19 @@ extern int of_parse_phandles_with_args(struct device_node *np, | |||
187 | const char *list_name, const char *cells_name, int index, | 198 | const char *list_name, const char *cells_name, int index, |
188 | struct device_node **out_node, const void **out_args); | 199 | struct device_node **out_node, const void **out_args); |
189 | 200 | ||
201 | extern int of_machine_is_compatible(const char *compat); | ||
202 | |||
203 | extern int prom_add_property(struct device_node* np, struct property* prop); | ||
204 | extern int prom_remove_property(struct device_node *np, struct property *prop); | ||
205 | extern int prom_update_property(struct device_node *np, | ||
206 | struct property *newprop, | ||
207 | struct property *oldprop); | ||
208 | |||
209 | #if defined(CONFIG_OF_DYNAMIC) | ||
210 | /* For updating the device tree at runtime */ | ||
211 | extern void of_attach_node(struct device_node *); | ||
212 | extern void of_detach_node(struct device_node *); | ||
213 | #endif | ||
214 | |||
215 | #endif /* CONFIG_OF */ | ||
190 | #endif /* _LINUX_OF_H */ | 216 | #endif /* _LINUX_OF_H */ |
diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h index 41d432b13553..a1ca92ccb0ff 100644 --- a/include/linux/of_fdt.h +++ b/include/linux/of_fdt.h | |||
@@ -42,45 +42,62 @@ | |||
42 | * ends when size is 0 | 42 | * ends when size is 0 |
43 | */ | 43 | */ |
44 | struct boot_param_header { | 44 | struct boot_param_header { |
45 | u32 magic; /* magic word OF_DT_HEADER */ | 45 | __be32 magic; /* magic word OF_DT_HEADER */ |
46 | u32 totalsize; /* total size of DT block */ | 46 | __be32 totalsize; /* total size of DT block */ |
47 | u32 off_dt_struct; /* offset to structure */ | 47 | __be32 off_dt_struct; /* offset to structure */ |
48 | u32 off_dt_strings; /* offset to strings */ | 48 | __be32 off_dt_strings; /* offset to strings */ |
49 | u32 off_mem_rsvmap; /* offset to memory reserve map */ | 49 | __be32 off_mem_rsvmap; /* offset to memory reserve map */ |
50 | u32 version; /* format version */ | 50 | __be32 version; /* format version */ |
51 | u32 last_comp_version; /* last compatible version */ | 51 | __be32 last_comp_version; /* last compatible version */ |
52 | /* version 2 fields below */ | 52 | /* version 2 fields below */ |
53 | u32 boot_cpuid_phys; /* Physical CPU id we're booting on */ | 53 | __be32 boot_cpuid_phys; /* Physical CPU id we're booting on */ |
54 | /* version 3 fields below */ | 54 | /* version 3 fields below */ |
55 | u32 dt_strings_size; /* size of the DT strings block */ | 55 | __be32 dt_strings_size; /* size of the DT strings block */ |
56 | /* version 17 fields below */ | 56 | /* version 17 fields below */ |
57 | u32 dt_struct_size; /* size of the DT structure block */ | 57 | __be32 dt_struct_size; /* size of the DT structure block */ |
58 | }; | 58 | }; |
59 | 59 | ||
60 | /* TBD: Temporary export of fdt globals - remove when code fully merged */ | ||
61 | extern int __initdata dt_root_addr_cells; | ||
62 | extern int __initdata dt_root_size_cells; | ||
63 | extern struct boot_param_header *initial_boot_params; | ||
64 | |||
60 | /* For scanning the flat device-tree at boot time */ | 65 | /* For scanning the flat device-tree at boot time */ |
61 | extern int __init of_scan_flat_dt(int (*it)(unsigned long node, | 66 | extern char *find_flat_dt_string(u32 offset); |
62 | const char *uname, int depth, | 67 | extern int of_scan_flat_dt(int (*it)(unsigned long node, const char *uname, |
63 | void *data), | 68 | int depth, void *data), |
64 | void *data); | 69 | void *data); |
65 | extern void __init *of_get_flat_dt_prop(unsigned long node, const char *name, | 70 | extern void *of_get_flat_dt_prop(unsigned long node, const char *name, |
66 | unsigned long *size); | 71 | unsigned long *size); |
67 | extern int __init of_flat_dt_is_compatible(unsigned long node, | 72 | extern int of_flat_dt_is_compatible(unsigned long node, const char *name); |
68 | const char *name); | 73 | extern unsigned long of_get_flat_dt_root(void); |
69 | extern unsigned long __init of_get_flat_dt_root(void); | 74 | extern void early_init_dt_scan_chosen_arch(unsigned long node); |
75 | extern int early_init_dt_scan_chosen(unsigned long node, const char *uname, | ||
76 | int depth, void *data); | ||
77 | extern void early_init_dt_check_for_initrd(unsigned long node); | ||
78 | extern int early_init_dt_scan_memory(unsigned long node, const char *uname, | ||
79 | int depth, void *data); | ||
80 | extern void early_init_dt_add_memory_arch(u64 base, u64 size); | ||
81 | extern u64 early_init_dt_alloc_memory_arch(u64 size, u64 align); | ||
82 | extern u64 dt_mem_next_cell(int s, __be32 **cellp); | ||
83 | |||
84 | /* | ||
85 | * If BLK_DEV_INITRD, the fdt early init code will call this function, | ||
86 | * to be provided by the arch code. start and end are specified as | ||
87 | * physical addresses. | ||
88 | */ | ||
89 | #ifdef CONFIG_BLK_DEV_INITRD | ||
90 | extern void early_init_dt_setup_initrd_arch(unsigned long start, | ||
91 | unsigned long end); | ||
92 | #endif | ||
93 | |||
94 | /* Early flat tree scan hooks */ | ||
95 | extern int early_init_dt_scan_root(unsigned long node, const char *uname, | ||
96 | int depth, void *data); | ||
70 | 97 | ||
71 | /* Other Prototypes */ | 98 | /* Other Prototypes */ |
72 | extern void finish_device_tree(void); | ||
73 | extern void unflatten_device_tree(void); | 99 | extern void unflatten_device_tree(void); |
74 | extern void early_init_devtree(void *); | 100 | extern void early_init_devtree(void *); |
75 | extern int machine_is_compatible(const char *compat); | ||
76 | extern void print_properties(struct device_node *node); | ||
77 | extern int prom_n_intr_cells(struct device_node* np); | ||
78 | extern void prom_get_irq_senses(unsigned char *senses, int off, int max); | ||
79 | extern int prom_add_property(struct device_node* np, struct property* prop); | ||
80 | extern int prom_remove_property(struct device_node *np, struct property *prop); | ||
81 | extern int prom_update_property(struct device_node *np, | ||
82 | struct property *newprop, | ||
83 | struct property *oldprop); | ||
84 | 101 | ||
85 | #endif /* __ASSEMBLY__ */ | 102 | #endif /* __ASSEMBLY__ */ |
86 | #endif /* _LINUX_OF_FDT_H */ | 103 | #endif /* _LINUX_OF_FDT_H */ |
diff --git a/include/linux/spi/dw_spi.h b/include/linux/spi/dw_spi.h index 51b3e771a9a3..cc813f95a2f2 100644 --- a/include/linux/spi/dw_spi.h +++ b/include/linux/spi/dw_spi.h | |||
@@ -90,6 +90,7 @@ struct dw_spi { | |||
90 | unsigned long paddr; | 90 | unsigned long paddr; |
91 | u32 iolen; | 91 | u32 iolen; |
92 | int irq; | 92 | int irq; |
93 | u32 fifo_len; /* depth of the FIFO buffer */ | ||
93 | u32 max_freq; /* max bus freq supported */ | 94 | u32 max_freq; /* max bus freq supported */ |
94 | 95 | ||
95 | u16 bus_num; | 96 | u16 bus_num; |
@@ -171,6 +172,10 @@ static inline void spi_chip_sel(struct dw_spi *dws, u16 cs) | |||
171 | { | 172 | { |
172 | if (cs > dws->num_cs) | 173 | if (cs > dws->num_cs) |
173 | return; | 174 | return; |
175 | |||
176 | if (dws->cs_control) | ||
177 | dws->cs_control(1); | ||
178 | |||
174 | dw_writel(dws, ser, 1 << cs); | 179 | dw_writel(dws, ser, 1 << cs); |
175 | } | 180 | } |
176 | 181 | ||
diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 057a2e010758..f508c651e53d 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h | |||
@@ -51,6 +51,9 @@ struct virtqueue { | |||
51 | * This re-enables callbacks; it returns "false" if there are pending | 51 | * This re-enables callbacks; it returns "false" if there are pending |
52 | * buffers in the queue, to detect a possible race between the driver | 52 | * buffers in the queue, to detect a possible race between the driver |
53 | * checking for more work, and enabling callbacks. | 53 | * checking for more work, and enabling callbacks. |
54 | * @detach_unused_buf: detach first unused buffer | ||
55 | * vq: the struct virtqueue we're talking about. | ||
56 | * Returns NULL or the "data" token handed to add_buf | ||
54 | * | 57 | * |
55 | * Locking rules are straightforward: the driver is responsible for | 58 | * Locking rules are straightforward: the driver is responsible for |
56 | * locking. No two operations may be invoked simultaneously, with the exception | 59 | * locking. No two operations may be invoked simultaneously, with the exception |
@@ -71,6 +74,7 @@ struct virtqueue_ops { | |||
71 | 74 | ||
72 | void (*disable_cb)(struct virtqueue *vq); | 75 | void (*disable_cb)(struct virtqueue *vq); |
73 | bool (*enable_cb)(struct virtqueue *vq); | 76 | bool (*enable_cb)(struct virtqueue *vq); |
77 | void *(*detach_unused_buf)(struct virtqueue *vq); | ||
74 | }; | 78 | }; |
75 | 79 | ||
76 | /** | 80 | /** |
diff --git a/include/linux/virtio_balloon.h b/include/linux/virtio_balloon.h index 1418f048cb34..a50ecd1b81a2 100644 --- a/include/linux/virtio_balloon.h +++ b/include/linux/virtio_balloon.h | |||
@@ -7,6 +7,7 @@ | |||
7 | 7 | ||
8 | /* The feature bitmap for virtio balloon */ | 8 | /* The feature bitmap for virtio balloon */ |
9 | #define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */ | 9 | #define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */ |
10 | #define VIRTIO_BALLOON_F_STATS_VQ 1 /* Memory Stats virtqueue */ | ||
10 | 11 | ||
11 | /* Size of a PFN in the balloon interface. */ | 12 | /* Size of a PFN in the balloon interface. */ |
12 | #define VIRTIO_BALLOON_PFN_SHIFT 12 | 13 | #define VIRTIO_BALLOON_PFN_SHIFT 12 |
@@ -18,4 +19,18 @@ struct virtio_balloon_config | |||
18 | /* Number of pages we've actually got in balloon. */ | 19 | /* Number of pages we've actually got in balloon. */ |
19 | __le32 actual; | 20 | __le32 actual; |
20 | }; | 21 | }; |
22 | |||
23 | #define VIRTIO_BALLOON_S_SWAP_IN 0 /* Amount of memory swapped in */ | ||
24 | #define VIRTIO_BALLOON_S_SWAP_OUT 1 /* Amount of memory swapped out */ | ||
25 | #define VIRTIO_BALLOON_S_MAJFLT 2 /* Number of major faults */ | ||
26 | #define VIRTIO_BALLOON_S_MINFLT 3 /* Number of minor faults */ | ||
27 | #define VIRTIO_BALLOON_S_MEMFREE 4 /* Total amount of free memory */ | ||
28 | #define VIRTIO_BALLOON_S_MEMTOT 5 /* Total amount of memory */ | ||
29 | #define VIRTIO_BALLOON_S_NR 6 | ||
30 | |||
31 | struct virtio_balloon_stat { | ||
32 | u16 tag; | ||
33 | u64 val; | ||
34 | } __attribute__((packed)); | ||
35 | |||
21 | #endif /* _LINUX_VIRTIO_BALLOON_H */ | 36 | #endif /* _LINUX_VIRTIO_BALLOON_H */ |
diff --git a/include/linux/virtio_blk.h b/include/linux/virtio_blk.h index fd294c56d571..e52029e98919 100644 --- a/include/linux/virtio_blk.h +++ b/include/linux/virtio_blk.h | |||
@@ -15,6 +15,7 @@ | |||
15 | #define VIRTIO_BLK_F_BLK_SIZE 6 /* Block size of disk is available*/ | 15 | #define VIRTIO_BLK_F_BLK_SIZE 6 /* Block size of disk is available*/ |
16 | #define VIRTIO_BLK_F_SCSI 7 /* Supports scsi command passthru */ | 16 | #define VIRTIO_BLK_F_SCSI 7 /* Supports scsi command passthru */ |
17 | #define VIRTIO_BLK_F_FLUSH 9 /* Cache flush command support */ | 17 | #define VIRTIO_BLK_F_FLUSH 9 /* Cache flush command support */ |
18 | #define VIRTIO_BLK_F_TOPOLOGY 10 /* Topology information is available */ | ||
18 | 19 | ||
19 | struct virtio_blk_config { | 20 | struct virtio_blk_config { |
20 | /* The capacity (in 512-byte sectors). */ | 21 | /* The capacity (in 512-byte sectors). */ |
@@ -29,8 +30,20 @@ struct virtio_blk_config { | |||
29 | __u8 heads; | 30 | __u8 heads; |
30 | __u8 sectors; | 31 | __u8 sectors; |
31 | } geometry; | 32 | } geometry; |
33 | |||
32 | /* block size of device (if VIRTIO_BLK_F_BLK_SIZE) */ | 34 | /* block size of device (if VIRTIO_BLK_F_BLK_SIZE) */ |
33 | __u32 blk_size; | 35 | __u32 blk_size; |
36 | |||
37 | /* the next 4 entries are guarded by VIRTIO_BLK_F_TOPOLOGY */ | ||
38 | /* exponent for physical block per logical block. */ | ||
39 | __u8 physical_block_exp; | ||
40 | /* alignment offset in logical blocks. */ | ||
41 | __u8 alignment_offset; | ||
42 | /* minimum I/O size without performance penalty in logical blocks. */ | ||
43 | __u16 min_io_size; | ||
44 | /* optimal sustained I/O size in logical blocks. */ | ||
45 | __u32 opt_io_size; | ||
46 | |||
34 | } __attribute__((packed)); | 47 | } __attribute__((packed)); |
35 | 48 | ||
36 | /* | 49 | /* |
diff --git a/include/linux/virtio_console.h b/include/linux/virtio_console.h index fe885174cc1f..ae4f039515b4 100644 --- a/include/linux/virtio_console.h +++ b/include/linux/virtio_console.h | |||
@@ -3,19 +3,45 @@ | |||
3 | #include <linux/types.h> | 3 | #include <linux/types.h> |
4 | #include <linux/virtio_ids.h> | 4 | #include <linux/virtio_ids.h> |
5 | #include <linux/virtio_config.h> | 5 | #include <linux/virtio_config.h> |
6 | /* This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so | 6 | /* |
7 | * anyone can use the definitions to implement compatible drivers/servers. */ | 7 | * This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so |
8 | * anyone can use the definitions to implement compatible drivers/servers. | ||
9 | * | ||
10 | * Copyright (C) Red Hat, Inc., 2009, 2010 | ||
11 | */ | ||
8 | 12 | ||
9 | /* Feature bits */ | 13 | /* Feature bits */ |
10 | #define VIRTIO_CONSOLE_F_SIZE 0 /* Does host provide console size? */ | 14 | #define VIRTIO_CONSOLE_F_SIZE 0 /* Does host provide console size? */ |
15 | #define VIRTIO_CONSOLE_F_MULTIPORT 1 /* Does host provide multiple ports? */ | ||
11 | 16 | ||
12 | struct virtio_console_config { | 17 | struct virtio_console_config { |
13 | /* colums of the screens */ | 18 | /* colums of the screens */ |
14 | __u16 cols; | 19 | __u16 cols; |
15 | /* rows of the screens */ | 20 | /* rows of the screens */ |
16 | __u16 rows; | 21 | __u16 rows; |
22 | /* max. number of ports this device can hold */ | ||
23 | __u32 max_nr_ports; | ||
24 | /* number of ports added so far */ | ||
25 | __u32 nr_ports; | ||
17 | } __attribute__((packed)); | 26 | } __attribute__((packed)); |
18 | 27 | ||
28 | /* | ||
29 | * A message that's passed between the Host and the Guest for a | ||
30 | * particular port. | ||
31 | */ | ||
32 | struct virtio_console_control { | ||
33 | __u32 id; /* Port number */ | ||
34 | __u16 event; /* The kind of control event (see below) */ | ||
35 | __u16 value; /* Extra information for the key */ | ||
36 | }; | ||
37 | |||
38 | /* Some events for control messages */ | ||
39 | #define VIRTIO_CONSOLE_PORT_READY 0 | ||
40 | #define VIRTIO_CONSOLE_CONSOLE_PORT 1 | ||
41 | #define VIRTIO_CONSOLE_RESIZE 2 | ||
42 | #define VIRTIO_CONSOLE_PORT_OPEN 3 | ||
43 | #define VIRTIO_CONSOLE_PORT_NAME 4 | ||
44 | #define VIRTIO_CONSOLE_PORT_REMOVE 5 | ||
19 | 45 | ||
20 | #ifdef __KERNEL__ | 46 | #ifdef __KERNEL__ |
21 | int __init virtio_cons_early_init(int (*put_chars)(u32, const char *, int)); | 47 | int __init virtio_cons_early_init(int (*put_chars)(u32, const char *, int)); |