Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'doc/4.2' into docs-next

+175 -62
+1 -1
Documentation/CodingStyle
··· 670 670 typeof(x) ret; \ 671 671 ret = calc_ret(x); \ 672 672 (ret); \ 673 - )} 673 + }) 674 674 675 675 ret is a common name for a local variable - __foo_ret is less likely 676 676 to collide with an existing variable.
+2 -2
Documentation/DMA-API-HOWTO.txt
··· 240 240 241 241 if (!dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64))) { 242 242 using_dac = 1; 243 - consistent_using_dac = 1; 243 + consistent_using_dac = 1; 244 244 } else if (!dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32))) { 245 245 using_dac = 0; 246 246 consistent_using_dac = 0; ··· 353 353 transfer, unmapped right after it (unless you use dma_sync_* below) 354 354 and for which hardware can optimize for sequential accesses. 355 355 356 - This of "streaming" as "asynchronous" or "outside the coherency 356 + Think of "streaming" as "asynchronous" or "outside the coherency 357 357 domain". 358 358 359 359 Good examples of what to use streaming mappings for are:
+2
Documentation/DocBook/kernel-hacking.tmpl
··· 954 954 <function>MODULE_LICENSE()</function> that specifies a GPL 955 955 compatible license. It implies that the function is considered 956 956 an internal implementation issue, and not really an interface. 957 + Some maintainers and developers may however 958 + require EXPORT_SYMBOL_GPL() when adding any new APIs or functionality. 957 959 </para> 958 960 </sect1> 959 961 </chapter>
+3 -1
Documentation/SubmittingPatches
··· 299 299 300 300 Cc: stable@vger.kernel.org 301 301 302 - into your patch. 302 + into the sign-off area of your patch (note, NOT an email recipient). You 303 + should also read Documentation/stable_kernel_rules.txt in addition to this 304 + file. 303 305 304 306 Note, however, that some subsystem maintainers want to come to their own 305 307 conclusions on which patches should go to the stable trees. The networking
+53
Documentation/arm/Samsung/Bootloader-interface.txt
··· 1 + Interface between kernel and boot loaders on Exynos boards 2 + ========================================================== 3 + 4 + Author: Krzysztof Kozlowski 5 + Date : 6 June 2015 6 + 7 + The document tries to describe currently used interface between Linux kernel 8 + and boot loaders on Samsung Exynos based boards. This is not a definition 9 + of interface but rather a description of existing state, a reference 10 + for information purpose only. 11 + 12 + In the document "boot loader" means any of following: U-boot, proprietary 13 + SBOOT or any other firmware for ARMv7 and ARMv8 initializing the board before 14 + executing kernel. 15 + 16 + 17 + 1. Non-Secure mode 18 + Address: sysram_ns_base_addr 19 + Offset Value Purpose 20 + ============================================================================= 21 + 0x08 exynos_cpu_resume_ns System suspend 22 + 0x0c 0x00000bad (Magic cookie) System suspend 23 + 0x1c exynos4_secondary_startup Secondary CPU boot 24 + 0x1c + 4*cpu exynos4_secondary_startup (Exynos4412) Secondary CPU boot 25 + 0x20 0xfcba0d10 (Magic cookie) AFTR 26 + 0x24 exynos_cpu_resume_ns AFTR 27 + 0x28 + 4*cpu 0x8 (Magic cookie, Exynos3250) AFTR 28 + 29 + 30 + 2. Secure mode 31 + Address: sysram_base_addr 32 + Offset Value Purpose 33 + ============================================================================= 34 + 0x00 exynos4_secondary_startup Secondary CPU boot 35 + 0x04 exynos4_secondary_startup (Exynos542x) Secondary CPU boot 36 + 4*cpu exynos4_secondary_startup (Exynos4412) Secondary CPU boot 37 + 0x20 exynos_cpu_resume (Exynos4210 r1.0) AFTR 38 + 0x24 0xfcba0d10 (Magic cookie, Exynos4210 r1.0) AFTR 39 + 40 + Address: pmu_base_addr 41 + Offset Value Purpose 42 + ============================================================================= 43 + 0x0800 exynos_cpu_resume AFTR 44 + 0x0814 exynos4_secondary_startup (Exynos4210 r1.1) Secondary CPU boot 45 + 0x0818 0xfcba0d10 (Magic cookie, Exynos4210 r1.1) AFTR 46 + 0x081C exynos_cpu_resume (Exynos4210 r1.1) AFTR 47 + 48 + 49 + 3. Other (regardless of secure/non-secure mode) 50 + Address: pmu_base_addr 51 + Offset Value Purpose 52 + ============================================================================= 53 + 0x0908 Non-zero (only Exynos3250) Secondary CPU boot up indicator
+11 -3
Documentation/blackfin/gptimers-example.c
··· 17 17 18 18 #define DRIVER_NAME "gptimer_example" 19 19 20 + #ifdef IRQ_TIMER5 21 + #define SAMPLE_IRQ_TIMER IRQ_TIMER5 22 + #else 23 + #define SAMPLE_IRQ_TIMER IRQ_TIMER2 24 + #endif 25 + 20 26 struct gptimer_data { 21 27 uint32_t period, width; 22 28 }; ··· 63 57 } 64 58 65 59 /* grab the IRQ for the timer */ 66 - ret = request_irq(IRQ_TIMER5, gptimer_example_irq, IRQF_SHARED, DRIVER_NAME, &data); 60 + ret = request_irq(SAMPLE_IRQ_TIMER, gptimer_example_irq, 61 + IRQF_SHARED, DRIVER_NAME, &data); 67 62 if (ret) { 68 63 printk(KERN_NOTICE DRIVER_NAME ": IRQ request failed\n"); 69 64 peripheral_free(P_TMR5); ··· 72 65 } 73 66 74 67 /* setup the timer and enable it */ 75 - set_gptimer_config(TIMER5_id, WDTH_CAP | PULSE_HI | PERIOD_CNT | IRQ_ENA); 68 + set_gptimer_config(TIMER5_id, 69 + WDTH_CAP | PULSE_HI | PERIOD_CNT | IRQ_ENA); 76 70 enable_gptimers(TIMER5bit); 77 71 78 72 return 0; ··· 83 75 static void __exit gptimer_example_exit(void) 84 76 { 85 77 disable_gptimers(TIMER5bit); 86 - free_irq(IRQ_TIMER5, &data); 78 + free_irq(SAMPLE_IRQ_TIMER, &data); 87 79 peripheral_free(P_TMR5); 88 80 } 89 81 module_exit(gptimer_example_exit);
+1 -1
Documentation/cpu-freq/governors.txt
··· 36 36 1. What Is A CPUFreq Governor? 37 37 ============================== 38 38 39 - Most cpufreq drivers (in fact, all except one, longrun) or even most 39 + Most cpufreq drivers (except the intel_pstate and longrun) or even most 40 40 cpu frequency scaling algorithms only offer the CPU to be set to one 41 41 frequency. In order to offer dynamic frequency scaling, the cpufreq 42 42 core must be able to tell these drivers of a "target frequency". So
+11 -10
Documentation/cpu-freq/intel-pstate.txt
··· 3 3 4 4 This driver provides an interface to control the P state selection for 5 5 SandyBridge+ Intel processors. The driver can operate two different 6 - modes based on the processor model legacy and Hardware P state (HWP) 6 + modes based on the processor model, legacy mode and Hardware P state (HWP) 7 7 mode. 8 8 9 - In legacy mode the driver implements a scaling driver with an internal 10 - governor for Intel Core processors. The driver follows the same model 11 - as the Transmeta scaling driver (longrun.c) and implements the 12 - setpolicy() instead of target(). Scaling drivers that implement 13 - setpolicy() are assumed to implement internal governors by the cpufreq 14 - core. All the logic for selecting the current P state is contained 15 - within the driver; no external governor is used by the cpufreq core. 9 + In legacy mode, the Intel P-state implements two internal governors, 10 + performance and powersave, that differ from the general cpufreq governors of 11 + the same name (the general cpufreq governors implement target(), whereas the 12 + internal Intel P-state governors implement setpolicy()). The internal 13 + performance governor sets the max_perf_pct and min_perf_pct to 100; that is, 14 + the governor selects the highest available P state to maximize the performance 15 + of the core. The internal powersave governor selects the appropriate P state 16 + based on the current load on the CPU. 16 17 17 18 In HWP mode P state selection is implemented in the processor 18 19 itself. The driver provides the interfaces between the cpufreq core and 19 20 the processor to control P state selection based on user preferences 20 21 and reporting frequency to the cpufreq core. In this mode the 21 - internal governor code is disabled. 22 + internal Intel P-state governor code is disabled. 22 23 23 - In addtion to the interfaces provided by the cpufreq core for 24 + In addition to the interfaces provided by the cpufreq core for 24 25 controlling frequency the driver provides sysfs files for 25 26 controlling P state selection. These files have been added to 26 27 /sys/devices/system/cpu/intel_pstate/
+4 -4
Documentation/filesystems/porting
··· 379 379 returned if the filesystem cannot handle rcu-walk. See 380 380 Documentation/filesystems/vfs.txt for more details. 381 381 382 - permission and check_acl are inode permission checks that are called 383 - on many or all directory inodes on the way down a path walk (to check for 384 - exec permission). These must now be rcu-walk aware (flags & IPERM_FLAG_RCU). 385 - See Documentation/filesystems/vfs.txt for more details. 382 + permission is an inode permission check that is called on many or all 383 + directory inodes on the way down a path walk (to check for exec permission). It 384 + must now be rcu-walk aware (mask & MAY_NOT_BLOCK). See 385 + Documentation/filesystems/vfs.txt for more details. 386 386 387 387 -- 388 388 [mandatory]
+2 -1
Documentation/filesystems/proc.txt
··· 205 205 snapshot of a moment, you can see /proc/<pid>/smaps file and scan page table. 206 206 It's slow but very precise. 207 207 208 - Table 1-2: Contents of the status files (as of 3.20.0) 208 + Table 1-2: Contents of the status files (as of 4.1) 209 209 .............................................................................. 210 210 Field Content 211 211 Name filename of the executable ··· 235 235 VmExe size of text segment 236 236 VmLib size of shared library code 237 237 VmPTE size of page table entries 238 + VmPMD size of second level page tables 238 239 VmSwap size of swap usage (the number of referred swapents) 239 240 Threads number of threads 240 241 SigQ number of signals queued/max. number for queue
+11 -6
Documentation/filesystems/vfs.txt
··· 797 797 ---------------------- 798 798 799 799 This describes how the VFS can manipulate an open file. As of kernel 800 - 3.12, the following members are defined: 800 + 4.1, the following members are defined: 801 801 802 802 struct file_operations { 803 803 struct module *owner; ··· 811 811 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); 812 812 long (*compat_ioctl) (struct file *, unsigned int, unsigned long); 813 813 int (*mmap) (struct file *, struct vm_area_struct *); 814 + int (*mremap)(struct file *, struct vm_area_struct *); 814 815 int (*open) (struct inode *, struct file *); 815 - int (*flush) (struct file *); 816 + int (*flush) (struct file *, fl_owner_t id); 816 817 int (*release) (struct inode *, struct file *); 817 818 int (*fsync) (struct file *, loff_t, loff_t, int datasync); 818 819 int (*aio_fsync) (struct kiocb *, int datasync); ··· 823 822 unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); 824 823 int (*check_flags)(int); 825 824 int (*flock) (struct file *, int, struct file_lock *); 826 - ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned int); 827 - ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int); 828 - int (*setlease)(struct file *, long arg, struct file_lock **, void **); 829 - long (*fallocate)(struct file *, int mode, loff_t offset, loff_t len); 825 + ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); 826 + ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); 827 + int (*setlease)(struct file *, long, struct file_lock **, void **); 828 + long (*fallocate)(struct file *file, int mode, loff_t offset, 829 + loff_t len); 830 830 void (*show_fdinfo)(struct seq_file *m, struct file *f); 831 + #ifndef CONFIG_MMU 832 + unsigned (*mmap_capabilities)(struct file *); 833 + #endif 831 834 }; 832 835 833 836 Again, all methods are called without any locks being held, unless
+1 -1
Documentation/gpio/consumer.txt
··· 290 290 291 291 int gpiod_to_irq(const struct gpio_desc *desc) 292 292 293 - It will return an IRQ number, or an negative errno code if the mapping can't be 293 + It will return an IRQ number, or a negative errno code if the mapping can't be 294 294 done (most likely because that particular GPIO cannot be used as IRQ). It is an 295 295 unchecked error to use a GPIO that wasn't set up as an input using 296 296 gpiod_direction_input(), or to use an IRQ number that didn't originally come
+1 -1
Documentation/ja_JP/HOWTO
··· 445 445 メールの先頭でなく、各引用行の間にあなたの言いたいことを追加するべきで 446 446 す。 447 447 448 - もしパッチをメールに付ける場合は、Documentaion/SubmittingPatches に提 448 + もしパッチをメールに付ける場合は、Documentation/SubmittingPatches に提 449 449 示されているように、それは プレーンな可読テキストにすることを忘れない 450 450 ようにしましょう。カーネル開発者は 添付や圧縮したパッチを扱いたがりま 451 451 せん-
+1 -1
Documentation/kasan.txt
··· 150 150 (e.g. 16TB to cover 128TB on x86_64) and uses direct mapping with a scale and 151 151 offset to translate a memory address to its corresponding shadow address. 152 152 153 - Here is the function witch translate an address to its corresponding shadow 153 + Here is the function which translates an address to its corresponding shadow 154 154 address: 155 155 156 156 static inline void *kasan_mem_to_shadow(const void *addr)
+2 -2
Documentation/kbuild/makefiles.txt
··· 755 755 #lib/Makefile 756 756 clean-files := crc32table.h 757 757 758 - When executing "make clean", the two files "devlist.h classlist.h" will be 759 - deleted. Kbuild will assume files to be in the same relative directory as the 758 + When executing "make clean", the file "crc32table.h" will be deleted. 759 + Kbuild will assume files to be in the same relative directory as the 760 760 Makefile, except if prefixed with $(objtree). 761 761 762 762 To delete a directory hierarchy use:
+1 -1
Documentation/kernel-parameters.txt
··· 2437 2437 2438 2438 nomca [IA-64] Disable machine check abort handling 2439 2439 2440 - nomce [X86-32] Machine Check Exception 2440 + nomce [X86-32] Disable Machine Check Exception 2441 2441 2442 2442 nomfgpt [X86-32] Disable Multi-Function General Purpose 2443 2443 Timer usage (for AMD Geode machines).
-1
Documentation/laptops/.gitignore
··· 1 1 dslm 2 - freefall
-2
Documentation/laptops/00-INDEX
··· 8 8 - information on hard disk shock protection. 9 9 dslm.c 10 10 - Simple Disk Sleep Monitor program 11 - freefall.c 12 - - (HP/DELL) laptop accelerometer program for disk protection. 13 11 laptop-mode.txt 14 12 - how to conserve battery power using laptop-mode. 15 13 sony-laptop.txt
+1 -1
Documentation/laptops/Makefile
··· 1 1 # List of programs to build 2 - hostprogs-y := dslm freefall 2 + hostprogs-y := dslm 3 3 4 4 # Tell kbuild to always build the programs 5 5 always := $(hostprogs-y)
Documentation/laptops/freefall.c tools/laptop/freefall/freefall.c
-2
Documentation/magic-number.txt
··· 116 116 I810_CARD_MAGIC 0x5072696E i810_card sound/oss/i810_audio.c 117 117 TRIDENT_CARD_MAGIC 0x5072696E trident_card sound/oss/trident.c 118 118 ROUTER_MAGIC 0x524d4157 wan_device [in wanrouter.h pre 3.9] 119 - SCC_MAGIC 0x52696368 gs_port drivers/char/scc.h 120 119 SAVEKMSG_MAGIC1 0x53415645 savekmsg arch/*/amiga/config.c 121 120 GDA_MAGIC 0x58464552 gda arch/mips/include/asm/sn/gda.h 122 121 RED_MAGIC1 0x5a2cf071 (any) mm/slab.c ··· 137 138 PWC_MAGIC 0x89DC10AB pwc_device drivers/usb/media/pwc.h 138 139 NBD_REPLY_MAGIC 0x96744668 nbd_reply include/linux/nbd.h 139 140 ENI155_MAGIC 0xa54b872d midway_eprom drivers/atm/eni.h 140 - SCI_MAGIC 0xbabeface gs_port drivers/char/sh-sci.h 141 141 CODA_MAGIC 0xC0DAC0DA coda_file_info fs/coda/coda_fs_i.h 142 142 DPMEM_MAGIC 0xc0ffee11 gdt_pci_sram drivers/scsi/gdth.h 143 143 YAM_MAGIC 0xF10A7654 yam_port drivers/net/hamradio/yam.c
+2 -2
Documentation/networking/timestamping/txtimestamp.c
··· 36 36 #include <asm/types.h> 37 37 #include <error.h> 38 38 #include <errno.h> 39 + #include <inttypes.h> 39 40 #include <linux/errqueue.h> 40 41 #include <linux/if_ether.h> 41 42 #include <linux/net_tstamp.h> ··· 50 49 #include <poll.h> 51 50 #include <stdarg.h> 52 51 #include <stdbool.h> 53 - #include <stdint.h> 54 52 #include <stdio.h> 55 53 #include <stdlib.h> 56 54 #include <string.h> ··· 96 96 prev_ms = (long) ts_prev.tv_sec * 1000 * 1000; 97 97 prev_ms += ts_prev.tv_nsec / 1000; 98 98 99 - fprintf(stderr, " (%+ld us)", cur_ms - prev_ms); 99 + fprintf(stderr, " (%+" PRId64 " us)", cur_ms - prev_ms); 100 100 } 101 101 102 102 ts_prev = *cur;
+1 -1
Documentation/nfc/nfc-hci.txt
··· 122 122 PHY Management 123 123 -------------- 124 124 125 - The physical link (i2c, ...) management is defined by the following struture: 125 + The physical link (i2c, ...) management is defined by the following structure: 126 126 127 127 struct nfc_phy_ops { 128 128 int (*write)(void *dev_id, struct sk_buff *skb);
+14 -5
Documentation/stable_kernel_rules.txt
··· 59 59 changelog of your submission, as well as the kernel version you wish 60 60 it to be applied to. 61 61 62 - Option 1 is probably the easiest and most common. Options 2 and 3 are more 63 - useful if the patch isn't deemed worthy at the time it is applied to a public 64 - git tree (for instance, because it deserves more regression testing first). 65 - Option 3 is especially useful if the patch needs some special handling to apply 66 - to an older kernel (e.g., if API's have changed in the meantime). 62 + Option 1 is *strongly* preferred, is the easiest and most common. Options 2 and 63 + 3 are more useful if the patch isn't deemed worthy at the time it is applied to 64 + a public git tree (for instance, because it deserves more regression testing 65 + first). Option 3 is especially useful if the patch needs some special handling 66 + to apply to an older kernel (e.g., if API's have changed in the meantime). 67 + 68 + Note that for Option 3, if the patch deviates from the original upstream patch 69 + (for example because it had to be backported) this must be very clearly 70 + documented and justified in the patch description. 71 + 72 + The upstream commit ID must be specified with a separate line above the commit 73 + text, like this: 74 + 75 + commit <sha1> upstream. 67 76 68 77 Additionally, some patches submitted via Option 1 may have additional patch 69 78 prerequisites which can be cherry-picked. This can be specified in the following
+2 -2
Documentation/trace/ftrace.txt
··· 108 108 data is read from this file, it is consumed, and 109 109 will not be read again with a sequential read. The 110 110 "trace" file is static, and if the tracer is not 111 - adding more data,they will display the same 112 - information every time they are read. 111 + adding more data, it will display the same 112 + information every time it is read. 113 113 114 114 trace_options: 115 115
+7 -5
Documentation/usb/usb-serial.txt
··· 465 465 device, and does not support any kind of device flow control. All that 466 466 is required of your device is that it has at least one bulk in endpoint, 467 467 or one bulk out endpoint. 468 - 469 - To enable the generic driver to recognize your device, build the driver 470 - as a module and load it by the following invocation: 468 + 469 + To enable the generic driver to recognize your device, provide 470 + echo <vid> <pid> >/sys/bus/usb-serial/drivers/generic/new_id 471 + where the <vid> and <pid> is replaced with the hex representation of your 472 + device's vendor id and product id. 473 + If the driver is compiled as a module you can also provide one id when 474 + loading the module 471 475 insmod usbserial vendor=0x#### product=0x#### 472 - where the #### is replaced with the hex representation of your device's 473 - vendor id and product id. 474 476 475 477 This driver has been successfully used to connect to the NetChip USB 476 478 development board, providing a way to develop USB firmware without
-2
Documentation/zh_CN/magic-number.txt
··· 116 116 I810_CARD_MAGIC 0x5072696E i810_card sound/oss/i810_audio.c 117 117 TRIDENT_CARD_MAGIC 0x5072696E trident_card sound/oss/trident.c 118 118 ROUTER_MAGIC 0x524d4157 wan_device [in wanrouter.h pre 3.9] 119 - SCC_MAGIC 0x52696368 gs_port drivers/char/scc.h 120 119 SAVEKMSG_MAGIC1 0x53415645 savekmsg arch/*/amiga/config.c 121 120 GDA_MAGIC 0x58464552 gda arch/mips/include/asm/sn/gda.h 122 121 RED_MAGIC1 0x5a2cf071 (any) mm/slab.c ··· 137 138 PWC_MAGIC 0x89DC10AB pwc_device drivers/usb/media/pwc.h 138 139 NBD_REPLY_MAGIC 0x96744668 nbd_reply include/linux/nbd.h 139 140 ENI155_MAGIC 0xa54b872d midway_eprom drivers/atm/eni.h 140 - SCI_MAGIC 0xbabeface gs_port drivers/char/sh-sci.h 141 141 CODA_MAGIC 0xC0DAC0DA coda_file_info include/linux/coda_fs_i.h 142 142 DPMEM_MAGIC 0xc0ffee11 gdt_pci_sram drivers/scsi/gdth.h 143 143 YAM_MAGIC 0xF10A7654 yam_port drivers/net/hamradio/yam.c
+12 -2
firmware/README.AddingFirmware
··· 21 21 22 22 To submit firmware to that repository, please send either a git binary 23 23 diff or preferably a git pull request to: 24 - David Woodhouse <dwmw2@infradead.org> 25 - Ben Hutchings <ben@decadent.org.uk> 24 + linux-firmware@kernel.org 25 + and also cc: to related mailing lists. 26 26 27 27 Your commit should include an update to the WHENCE file clearly 28 28 identifying the licence under which the firmware is available, and 29 29 that it is redistributable. If the licence is long and involved, it's 30 30 permitted to include it in a separate file and refer to it from the 31 31 WHENCE file. 32 + And if it were possible, a changelog of the firmware itself. 32 33 33 34 Ideally, your commit should contain a Signed-Off-By: from someone 34 35 authoritative on the licensing of the firmware in question (i.e. from 35 36 within the company that owns the code). 37 + 38 + 39 + WARNING: 40 + ======= 41 + 42 + Don't send any "CONFIDENTIALITY STATEMENT" in your e-mail, patch or 43 + request. Otherwise your firmware _will never be accepted_. 44 + 45 + Maintainers are really busy, so don't expect a prompt reply.
+12 -2
tools/Makefile
··· 18 18 @echo ' vm - misc vm tools' 19 19 @echo ' x86_energy_perf_policy - Intel energy policy tool' 20 20 @echo ' tmon - thermal monitoring and tuning tool' 21 + @echo ' freefall - laptop accelerometer program for disk protection' 21 22 @echo '' 22 23 @echo 'You can do:' 23 24 @echo ' $$ make -C tools/ <tool>_install' ··· 63 62 tmon: FORCE 64 63 $(call descend,thermal/$@) 65 64 65 + freefall: FORCE 66 + $(call descend,laptop/$@) 67 + 66 68 acpi_install: 67 69 $(call descend,power/$(@:_install=),install) 68 70 ··· 84 80 tmon_install: 85 81 $(call descend,thermal/$(@:_install=),install) 86 82 83 + freefall_install: 84 + $(call descend,laptop/$(@:_install=),install) 85 + 87 86 install: acpi_install cgroup_install cpupower_install hv_install firewire_install lguest_install \ 88 87 perf_install selftests_install turbostat_install usb_install \ 89 88 virtio_install vm_install net_install x86_energy_perf_policy_install \ 90 - tmon 89 + tmon freefall_install 91 90 92 91 acpi_clean: 93 92 $(call descend,power/acpi,clean) ··· 119 112 tmon_clean: 120 113 $(call descend,thermal/tmon,clean) 121 114 115 + freefall_clean: 116 + $(call descend,laptop/freefall,clean) 117 + 122 118 clean: acpi_clean cgroup_clean cpupower_clean hv_clean firewire_clean lguest_clean \ 123 119 perf_clean selftests_clean turbostat_clean usb_clean virtio_clean \ 124 - vm_clean net_clean x86_energy_perf_policy_clean tmon_clean 120 + vm_clean net_clean x86_energy_perf_policy_clean tmon_clean freefall_clean 125 121 126 122 .PHONY: FORCE
+17
tools/laptop/freefall/Makefile
··· 1 + PREFIX ?= /usr 2 + SBINDIR ?= sbin 3 + INSTALL ?= install 4 + CC = $(CROSS_COMPILE)gcc 5 + 6 + TARGET = freefall 7 + 8 + all: $(TARGET) 9 + 10 + %: %.c 11 + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< 12 + 13 + clean: 14 + $(RM) $(TARGET) 15 + 16 + install: freefall 17 + $(INSTALL) -D -m 755 $(TARGET) $(DESTDIR)$(PREFIX)/$(SBINDIR)/$(TARGET)