From 0d8456d604770f1106fa93569de7c8fc27afe39a Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Mon, 28 Oct 2013 19:34:36 -0400 Subject: [PATCH] Nuke the compat-wireless tree. Replace it with a readme pointing at the backports project, and a couple of out-of-tree patches. --- .compat_base | 1 - .compat_base_tree | 1 - .compat_base_tree_version | 1 - .compat_version | 1 - .gitignore | 30 - COPYING | 356 - MAINTAINERS | 9042 ----- Makefile | 264 - README-CW1200 | 37 +- README.md | 28 - code-metrics.txt | 28 - compat/Makefile | 62 - compat/ckmake | 393 - compat/compat-2.6.14.c | 14 - compat/compat-2.6.18.c | 14 - compat/compat-2.6.19.c | 14 - compat/compat-2.6.21.c | 14 - compat/compat-2.6.22.c | 14 - compat/compat-2.6.23.c | 239 - compat/compat-2.6.24.c | 158 - compat/compat-2.6.25.c | 114 - compat/compat-2.6.26.c | 87 - compat/compat-2.6.27.c | 239 - compat/compat-2.6.28.c | 463 - compat/compat-2.6.29.c | 166 - compat/compat-2.6.32.c | 216 - compat/compat-2.6.33.c | 230 - compat/compat-2.6.34.c | 85 - compat/compat-2.6.34.h | 20 - compat/compat-2.6.35.c | 125 - compat/compat-2.6.36.c | 186 - compat/compat-2.6.37.c | 358 - compat/compat-2.6.38.c | 50 - compat/compat-2.6.39.c | 114 - compat/compat-3.0.c | 85 - compat/compat-3.1.c | 107 - compat/compat-3.2.c | 34 - compat/compat-3.3.c | 173 - compat/compat-3.4.c | 491 - compat/compat-3.5.c | 45 - compat/compat-3.7.c | 251 - compat/compat-3.8.c | 365 - compat/compat_atomic.c | 33 - compat/compat_firmware_class.c | 759 - compat/cordic.c | 101 - compat/crc8.c | 87 - compat/flow_dissector.c | 143 - compat/hid-ids.h | 866 - compat/kfifo.c | 608 - compat/kstrtox.c | 236 - compat/main.c | 78 - compat/pm_qos_params.c | 477 - compat/sch_codel.c | 306 - compat/sch_fq_codel_core.c | 659 - compat/scripts/compat_firmware_install | 21 - compat/scripts/gen-compat-autoconf.sh | 105 - compat/scripts/gen-compat-config.sh | 81 - compat/scripts/skip-colors | 2 - compat/user_namespace.c | 68 - config.mk | 761 - drivers/bcma/Kconfig | 84 - drivers/bcma/Makefile | 14 - drivers/bcma/bcma_private.h | 112 - drivers/bcma/core.c | 128 - drivers/bcma/driver_chipcommon.c | 344 - drivers/bcma/driver_chipcommon_nflash.c | 44 - drivers/bcma/driver_chipcommon_pmu.c | 511 - drivers/bcma/driver_chipcommon_sflash.c | 165 - drivers/bcma/driver_gmac_cmn.c | 14 - drivers/bcma/driver_gpio.c | 114 - drivers/bcma/driver_mips.c | 374 - drivers/bcma/driver_pci.c | 277 - drivers/bcma/driver_pci_host.c | 616 - drivers/bcma/host_pci.c | 307 - drivers/bcma/host_soc.c | 183 - drivers/bcma/main.c | 485 - drivers/bcma/scan.c | 563 - drivers/bcma/scan.h | 56 - drivers/bcma/sprom.c | 609 - drivers/bluetooth/Kconfig | 245 - drivers/bluetooth/Makefile | 32 - drivers/bluetooth/ath3k.c | 481 - drivers/bluetooth/bcm203x.c | 288 - drivers/bluetooth/bfusb.c | 759 - drivers/bluetooth/bluecard_cs.c | 1025 - drivers/bluetooth/bpa10x.c | 517 - drivers/bluetooth/bt3c_cs.c | 881 - drivers/bluetooth/btmrvl_debugfs.c | 446 - drivers/bluetooth/btmrvl_drv.h | 151 - drivers/bluetooth/btmrvl_main.c | 677 - drivers/bluetooth/btmrvl_sdio.c | 1195 - drivers/bluetooth/btmrvl_sdio.h | 112 - drivers/bluetooth/btsdio.c | 393 - drivers/bluetooth/btuart_cs.c | 817 - drivers/bluetooth/btusb.c | 1262 - drivers/bluetooth/btwilink.c | 368 - drivers/bluetooth/dtl1_cs.c | 726 - drivers/bluetooth/hci_ath.c | 244 - drivers/bluetooth/hci_bcsp.c | 763 - drivers/bluetooth/hci_h4.c | 196 - drivers/bluetooth/hci_h5.c | 747 - drivers/bluetooth/hci_ldisc.c | 645 - drivers/bluetooth/hci_ll.c | 535 - drivers/bluetooth/hci_uart.h | 116 - drivers/bluetooth/hci_vhci.c | 311 - drivers/gpu/drm/Makefile | 44 - drivers/gpu/drm/ast/Kconfig | 16 - drivers/gpu/drm/ast/Makefile | 9 - drivers/gpu/drm/ast/ast_dram_tables.h | 144 - drivers/gpu/drm/ast/ast_drv.c | 245 - drivers/gpu/drm/ast/ast_drv.h | 357 - drivers/gpu/drm/ast/ast_fb.c | 331 - drivers/gpu/drm/ast/ast_main.c | 519 - drivers/gpu/drm/ast/ast_mode.c | 1160 - drivers/gpu/drm/ast/ast_post.c | 1780 - drivers/gpu/drm/ast/ast_tables.h | 265 - drivers/gpu/drm/ast/ast_ttm.c | 453 - drivers/gpu/drm/ati_pcigart.c | 202 - drivers/gpu/drm/cirrus/Kconfig | 12 - drivers/gpu/drm/cirrus/Makefile | 5 - drivers/gpu/drm/cirrus/cirrus_drv.c | 138 - drivers/gpu/drm/cirrus/cirrus_drv.h | 245 - drivers/gpu/drm/cirrus/cirrus_fbdev.c | 295 - drivers/gpu/drm/cirrus/cirrus_main.c | 326 - drivers/gpu/drm/cirrus/cirrus_mode.c | 628 - drivers/gpu/drm/cirrus/cirrus_ttm.c | 458 - drivers/gpu/drm/drm_agpsupport.c | 469 - drivers/gpu/drm/drm_auth.c | 194 - drivers/gpu/drm/drm_buffer.c | 185 - drivers/gpu/drm/drm_bufs.c | 1629 - drivers/gpu/drm/drm_cache.c | 149 - drivers/gpu/drm/drm_context.c | 452 - drivers/gpu/drm/drm_crtc.c | 4068 --- drivers/gpu/drm/drm_crtc_helper.c | 1096 - drivers/gpu/drm/drm_debugfs.c | 241 - drivers/gpu/drm/drm_dma.c | 157 - drivers/gpu/drm/drm_dp_helper.c | 348 - drivers/gpu/drm/drm_drv.c | 497 - drivers/gpu/drm/drm_edid.c | 2892 -- drivers/gpu/drm/drm_edid_load.c | 257 - drivers/gpu/drm/drm_encoder_slave.c | 188 - drivers/gpu/drm/drm_fb_cma_helper.c | 455 - drivers/gpu/drm/drm_fb_helper.c | 1592 - drivers/gpu/drm/drm_fops.c | 642 - drivers/gpu/drm/drm_gem.c | 725 - drivers/gpu/drm/drm_gem_cma_helper.c | 272 - drivers/gpu/drm/drm_global.c | 112 - drivers/gpu/drm/drm_hashtab.c | 208 - drivers/gpu/drm/drm_info.c | 278 - drivers/gpu/drm/drm_ioc32.c | 1085 - drivers/gpu/drm/drm_ioctl.c | 363 - drivers/gpu/drm/drm_irq.c | 1410 - drivers/gpu/drm/drm_lock.c | 373 - drivers/gpu/drm/drm_memory.c | 144 - drivers/gpu/drm/drm_mm.c | 792 - drivers/gpu/drm/drm_modes.c | 1252 - drivers/gpu/drm/drm_pci.c | 505 - drivers/gpu/drm/drm_platform.c | 205 - drivers/gpu/drm/drm_prime.c | 541 - drivers/gpu/drm/drm_proc.c | 220 - drivers/gpu/drm/drm_scatter.c | 213 - drivers/gpu/drm/drm_stub.c | 509 - drivers/gpu/drm/drm_sysfs.c | 570 - drivers/gpu/drm/drm_trace.h | 66 - drivers/gpu/drm/drm_trace_points.c | 4 - drivers/gpu/drm/drm_usb.c | 120 - drivers/gpu/drm/drm_vm.c | 675 - drivers/gpu/drm/gma500/Kconfig | 33 - drivers/gpu/drm/gma500/Makefile | 52 - drivers/gpu/drm/gma500/accel_2d.c | 364 - drivers/gpu/drm/gma500/backlight.c | 94 - drivers/gpu/drm/gma500/cdv_device.c | 658 - drivers/gpu/drm/gma500/cdv_device.h | 36 - drivers/gpu/drm/gma500/cdv_intel_crt.c | 326 - drivers/gpu/drm/gma500/cdv_intel_display.c | 1770 - drivers/gpu/drm/gma500/cdv_intel_dp.c | 1951 -- drivers/gpu/drm/gma500/cdv_intel_hdmi.c | 384 - drivers/gpu/drm/gma500/cdv_intel_lvds.c | 800 - drivers/gpu/drm/gma500/framebuffer.c | 798 - drivers/gpu/drm/gma500/framebuffer.h | 47 - drivers/gpu/drm/gma500/gem.c | 299 - drivers/gpu/drm/gma500/gtt.c | 551 - drivers/gpu/drm/gma500/gtt.h | 64 - drivers/gpu/drm/gma500/intel_bios.c | 598 - drivers/gpu/drm/gma500/intel_bios.h | 621 - drivers/gpu/drm/gma500/intel_gmbus.c | 492 - drivers/gpu/drm/gma500/intel_i2c.c | 169 - drivers/gpu/drm/gma500/mdfld_device.c | 551 - drivers/gpu/drm/gma500/mdfld_dsi_dpi.c | 1016 - drivers/gpu/drm/gma500/mdfld_dsi_dpi.h | 79 - drivers/gpu/drm/gma500/mdfld_dsi_output.c | 612 - drivers/gpu/drm/gma500/mdfld_dsi_output.h | 377 - drivers/gpu/drm/gma500/mdfld_dsi_pkg_sender.c | 688 - drivers/gpu/drm/gma500/mdfld_dsi_pkg_sender.h | 92 - drivers/gpu/drm/gma500/mdfld_intel_display.c | 1054 - drivers/gpu/drm/gma500/mdfld_output.c | 74 - drivers/gpu/drm/gma500/mdfld_output.h | 77 - drivers/gpu/drm/gma500/mdfld_tmd_vid.c | 201 - drivers/gpu/drm/gma500/mdfld_tpo_vid.c | 124 - drivers/gpu/drm/gma500/mid_bios.c | 338 - drivers/gpu/drm/gma500/mid_bios.h | 21 - drivers/gpu/drm/gma500/mmu.c | 849 - drivers/gpu/drm/gma500/oaktrail.h | 257 - drivers/gpu/drm/gma500/oaktrail_crtc.c | 586 - drivers/gpu/drm/gma500/oaktrail_device.c | 569 - drivers/gpu/drm/gma500/oaktrail_hdmi.c | 870 - drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c | 328 - drivers/gpu/drm/gma500/oaktrail_lvds.c | 448 - drivers/gpu/drm/gma500/opregion.c | 341 - drivers/gpu/drm/gma500/opregion.h | 54 - drivers/gpu/drm/gma500/power.c | 315 - drivers/gpu/drm/gma500/power.h | 67 - drivers/gpu/drm/gma500/psb_device.c | 396 - drivers/gpu/drm/gma500/psb_drv.c | 692 - drivers/gpu/drm/gma500/psb_drv.h | 983 - drivers/gpu/drm/gma500/psb_intel_display.c | 1443 - drivers/gpu/drm/gma500/psb_intel_display.h | 28 - drivers/gpu/drm/gma500/psb_intel_drv.h | 306 - drivers/gpu/drm/gma500/psb_intel_lvds.c | 858 - drivers/gpu/drm/gma500/psb_intel_modes.c | 75 - drivers/gpu/drm/gma500/psb_intel_reg.h | 1546 - drivers/gpu/drm/gma500/psb_intel_sdvo.c | 2595 -- drivers/gpu/drm/gma500/psb_intel_sdvo_regs.h | 723 - drivers/gpu/drm/gma500/psb_irq.c | 642 - drivers/gpu/drm/gma500/psb_irq.h | 47 - drivers/gpu/drm/gma500/psb_lid.c | 94 - drivers/gpu/drm/gma500/psb_reg.h | 582 - drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c | 829 - drivers/gpu/drm/gma500/tc35876x-dsi-lvds.h | 38 - drivers/gpu/drm/i2c/Kconfig | 28 - drivers/gpu/drm/i2c/Makefile | 10 - drivers/gpu/drm/i2c/ch7006_drv.c | 552 - drivers/gpu/drm/i2c/ch7006_mode.c | 471 - drivers/gpu/drm/i2c/ch7006_priv.h | 345 - drivers/gpu/drm/i2c/sil164_drv.c | 464 - drivers/gpu/drm/i2c/tda998x_drv.c | 906 - drivers/gpu/drm/i810/Makefile | 8 - drivers/gpu/drm/i810/i810_dma.c | 1292 - drivers/gpu/drm/i810/i810_drv.c | 104 - drivers/gpu/drm/i810/i810_drv.h | 243 - drivers/gpu/drm/i915/Makefile | 53 - drivers/gpu/drm/i915/dvo.h | 149 - drivers/gpu/drm/i915/dvo_ch7017.c | 414 - drivers/gpu/drm/i915/dvo_ch7xxx.c | 344 - drivers/gpu/drm/i915/dvo_ivch.c | 436 - drivers/gpu/drm/i915/dvo_ns2501.c | 588 - drivers/gpu/drm/i915/dvo_sil164.c | 279 - drivers/gpu/drm/i915/dvo_tfp410.c | 318 - drivers/gpu/drm/i915/i915_debugfs.c | 2340 -- drivers/gpu/drm/i915/i915_dma.c | 1900 - drivers/gpu/drm/i915/i915_drv.c | 1250 - drivers/gpu/drm/i915/i915_drv.h | 1903 - drivers/gpu/drm/i915/i915_gem.c | 4449 --- drivers/gpu/drm/i915/i915_gem_context.c | 514 - drivers/gpu/drm/i915/i915_gem_debug.c | 187 - drivers/gpu/drm/i915/i915_gem_dmabuf.c | 310 - drivers/gpu/drm/i915/i915_gem_evict.c | 185 - drivers/gpu/drm/i915/i915_gem_execbuffer.c | 1224 - drivers/gpu/drm/i915/i915_gem_gtt.c | 849 - drivers/gpu/drm/i915/i915_gem_stolen.c | 322 - drivers/gpu/drm/i915/i915_gem_tiling.c | 518 - drivers/gpu/drm/i915/i915_ioc32.c | 221 - drivers/gpu/drm/i915/i915_irq.c | 2908 -- drivers/gpu/drm/i915/i915_reg.h | 4698 --- drivers/gpu/drm/i915/i915_suspend.c | 418 - drivers/gpu/drm/i915/i915_sysfs.c | 403 - drivers/gpu/drm/i915/i915_trace.h | 455 - drivers/gpu/drm/i915/i915_trace_points.c | 13 - drivers/gpu/drm/i915/i915_ums.c | 503 - drivers/gpu/drm/i915/intel_acpi.c | 251 - drivers/gpu/drm/i915/intel_bios.c | 766 - drivers/gpu/drm/i915/intel_bios.h | 619 - drivers/gpu/drm/i915/intel_crt.c | 813 - drivers/gpu/drm/i915/intel_ddi.c | 1553 - drivers/gpu/drm/i915/intel_display.c | 9390 ----- drivers/gpu/drm/i915/intel_dp.c | 2989 -- drivers/gpu/drm/i915/intel_drv.h | 698 - drivers/gpu/drm/i915/intel_dvo.c | 522 - drivers/gpu/drm/i915/intel_fb.c | 297 - drivers/gpu/drm/i915/intel_hdmi.c | 1085 - drivers/gpu/drm/i915/intel_i2c.c | 612 - drivers/gpu/drm/i915/intel_lvds.c | 1268 - drivers/gpu/drm/i915/intel_modes.c | 128 - drivers/gpu/drm/i915/intel_opregion.c | 561 - drivers/gpu/drm/i915/intel_overlay.c | 1539 - drivers/gpu/drm/i915/intel_panel.c | 486 - drivers/gpu/drm/i915/intel_pm.c | 4510 --- drivers/gpu/drm/i915/intel_ringbuffer.c | 1920 -- drivers/gpu/drm/i915/intel_ringbuffer.h | 251 - drivers/gpu/drm/i915/intel_sdvo.c | 2856 -- drivers/gpu/drm/i915/intel_sdvo_regs.h | 730 - drivers/gpu/drm/i915/intel_sprite.c | 738 - drivers/gpu/drm/i915/intel_tv.c | 1671 - drivers/gpu/drm/mgag200/Kconfig | 15 - drivers/gpu/drm/mgag200/Makefile | 5 - drivers/gpu/drm/mgag200/mgag200_drv.c | 139 - drivers/gpu/drm/mgag200/mgag200_drv.h | 274 - drivers/gpu/drm/mgag200/mgag200_fb.c | 283 - drivers/gpu/drm/mgag200/mgag200_i2c.c | 156 - drivers/gpu/drm/mgag200/mgag200_main.c | 383 - drivers/gpu/drm/mgag200/mgag200_mode.c | 1560 - drivers/gpu/drm/mgag200/mgag200_reg.h | 661 - drivers/gpu/drm/mgag200/mgag200_ttm.c | 452 - drivers/gpu/drm/nouveau/Kconfig | 55 - drivers/gpu/drm/nouveau/Makefile | 247 - drivers/gpu/drm/nouveau/core/core/client.c | 111 - drivers/gpu/drm/nouveau/core/core/engctx.c | 251 - drivers/gpu/drm/nouveau/core/core/engine.c | 55 - drivers/gpu/drm/nouveau/core/core/enum.c | 68 - drivers/gpu/drm/nouveau/core/core/event.c | 106 - drivers/gpu/drm/nouveau/core/core/falcon.c | 250 - drivers/gpu/drm/nouveau/core/core/gpuobj.c | 323 - drivers/gpu/drm/nouveau/core/core/handle.c | 226 - drivers/gpu/drm/nouveau/core/core/mm.c | 251 - drivers/gpu/drm/nouveau/core/core/namedb.c | 203 - drivers/gpu/drm/nouveau/core/core/object.c | 467 - drivers/gpu/drm/nouveau/core/core/option.c | 131 - drivers/gpu/drm/nouveau/core/core/parent.c | 122 - drivers/gpu/drm/nouveau/core/core/printk.c | 74 - drivers/gpu/drm/nouveau/core/core/ramht.c | 109 - drivers/gpu/drm/nouveau/core/core/subdev.c | 115 - .../gpu/drm/nouveau/core/engine/bsp/nv84.c | 93 - .../gpu/drm/nouveau/core/engine/bsp/nvc0.c | 110 - .../gpu/drm/nouveau/core/engine/bsp/nve0.c | 110 - .../drm/nouveau/core/engine/copy/fuc/nva3.fuc | 872 - .../nouveau/core/engine/copy/fuc/nva3.fuc.h | 620 - .../nouveau/core/engine/copy/fuc/nvc0.fuc.h | 606 - .../gpu/drm/nouveau/core/engine/copy/nva3.c | 164 - .../gpu/drm/nouveau/core/engine/copy/nvc0.c | 178 - .../gpu/drm/nouveau/core/engine/copy/nve0.c | 136 - .../nouveau/core/engine/crypt/fuc/nv98.fuc | 698 - .../nouveau/core/engine/crypt/fuc/nv98.fuc.h | 584 - .../gpu/drm/nouveau/core/engine/crypt/nv84.c | 197 - .../gpu/drm/nouveau/core/engine/crypt/nv98.c | 165 - .../gpu/drm/nouveau/core/engine/disp/base.c | 52 - .../drm/nouveau/core/engine/disp/dacnv50.c | 88 - .../gpu/drm/nouveau/core/engine/disp/dport.c | 346 - .../gpu/drm/nouveau/core/engine/disp/dport.h | 78 - .../drm/nouveau/core/engine/disp/hdanva3.c | 48 - .../drm/nouveau/core/engine/disp/hdanvd0.c | 53 - .../drm/nouveau/core/engine/disp/hdminv84.c | 66 - .../drm/nouveau/core/engine/disp/hdminva3.c | 66 - .../drm/nouveau/core/engine/disp/hdminvd0.c | 62 - .../gpu/drm/nouveau/core/engine/disp/nv04.c | 105 - .../gpu/drm/nouveau/core/engine/disp/nv50.c | 1323 - .../gpu/drm/nouveau/core/engine/disp/nv50.h | 147 - .../gpu/drm/nouveau/core/engine/disp/nv84.c | 102 - .../gpu/drm/nouveau/core/engine/disp/nv94.c | 103 - .../gpu/drm/nouveau/core/engine/disp/nva0.c | 89 - .../gpu/drm/nouveau/core/engine/disp/nva3.c | 105 - .../gpu/drm/nouveau/core/engine/disp/nvd0.c | 993 - .../gpu/drm/nouveau/core/engine/disp/nve0.c | 89 - .../drm/nouveau/core/engine/disp/piornv50.c | 140 - .../drm/nouveau/core/engine/disp/sornv50.c | 87 - .../drm/nouveau/core/engine/disp/sornv94.c | 127 - .../drm/nouveau/core/engine/disp/sornvd0.c | 124 - .../gpu/drm/nouveau/core/engine/disp/vga.c | 215 - .../gpu/drm/nouveau/core/engine/dmaobj/base.c | 120 - .../gpu/drm/nouveau/core/engine/dmaobj/nv04.c | 143 - .../gpu/drm/nouveau/core/engine/dmaobj/nv50.c | 161 - .../gpu/drm/nouveau/core/engine/dmaobj/nvc0.c | 143 - .../gpu/drm/nouveau/core/engine/dmaobj/nvd0.c | 122 - .../gpu/drm/nouveau/core/engine/fifo/base.c | 201 - .../gpu/drm/nouveau/core/engine/fifo/nv04.c | 644 - .../gpu/drm/nouveau/core/engine/fifo/nv04.h | 178 - .../gpu/drm/nouveau/core/engine/fifo/nv10.c | 171 - .../gpu/drm/nouveau/core/engine/fifo/nv17.c | 208 - .../gpu/drm/nouveau/core/engine/fifo/nv40.c | 349 - .../gpu/drm/nouveau/core/engine/fifo/nv50.c | 505 - .../gpu/drm/nouveau/core/engine/fifo/nv50.h | 36 - .../gpu/drm/nouveau/core/engine/fifo/nv84.c | 440 - .../gpu/drm/nouveau/core/engine/fifo/nvc0.c | 722 - .../gpu/drm/nouveau/core/engine/fifo/nve0.c | 675 - .../gpu/drm/nouveau/core/engine/graph/ctx.h | 129 - .../drm/nouveau/core/engine/graph/ctxnv40.c | 695 - .../drm/nouveau/core/engine/graph/ctxnv50.c | 3341 -- .../drm/nouveau/core/engine/graph/ctxnvc0.c | 3039 -- .../drm/nouveau/core/engine/graph/ctxnve0.c | 2788 -- .../nouveau/core/engine/graph/fuc/gpcnvc0.fuc | 539 - .../core/engine/graph/fuc/gpcnvc0.fuc.h | 604 - .../nouveau/core/engine/graph/fuc/gpcnve0.fuc | 456 - .../core/engine/graph/fuc/gpcnve0.fuc.h | 533 - .../nouveau/core/engine/graph/fuc/hubnvc0.fuc | 866 - .../core/engine/graph/fuc/hubnvc0.fuc.h | 928 - .../nouveau/core/engine/graph/fuc/hubnve0.fuc | 793 - .../core/engine/graph/fuc/hubnve0.fuc.h | 858 - .../nouveau/core/engine/graph/fuc/nvc0.fuc | 400 - .../nouveau/core/engine/graph/fuc/nve0.fuc | 400 - .../gpu/drm/nouveau/core/engine/graph/nv04.c | 1389 - .../gpu/drm/nouveau/core/engine/graph/nv10.c | 1316 - .../gpu/drm/nouveau/core/engine/graph/nv20.c | 384 - .../gpu/drm/nouveau/core/engine/graph/nv20.h | 31 - .../gpu/drm/nouveau/core/engine/graph/nv25.c | 167 - .../gpu/drm/nouveau/core/engine/graph/nv2a.c | 134 - .../gpu/drm/nouveau/core/engine/graph/nv30.c | 238 - .../gpu/drm/nouveau/core/engine/graph/nv34.c | 168 - .../gpu/drm/nouveau/core/engine/graph/nv35.c | 166 - .../gpu/drm/nouveau/core/engine/graph/nv40.c | 527 - .../gpu/drm/nouveau/core/engine/graph/nv40.h | 21 - .../gpu/drm/nouveau/core/engine/graph/nv50.c | 956 - .../gpu/drm/nouveau/core/engine/graph/nv50.h | 7 - .../gpu/drm/nouveau/core/engine/graph/nvc0.c | 945 - .../gpu/drm/nouveau/core/engine/graph/nvc0.h | 172 - .../gpu/drm/nouveau/core/engine/graph/nve0.c | 581 - .../gpu/drm/nouveau/core/engine/graph/regs.h | 274 - .../gpu/drm/nouveau/core/engine/mpeg/nv31.c | 311 - .../gpu/drm/nouveau/core/engine/mpeg/nv40.c | 144 - .../gpu/drm/nouveau/core/engine/mpeg/nv50.c | 239 - .../gpu/drm/nouveau/core/engine/mpeg/nv84.c | 104 - .../gpu/drm/nouveau/core/engine/ppp/nv98.c | 98 - .../gpu/drm/nouveau/core/engine/ppp/nvc0.c | 110 - .../drm/nouveau/core/engine/software/nv04.c | 147 - .../drm/nouveau/core/engine/software/nv10.c | 129 - .../drm/nouveau/core/engine/software/nv50.c | 219 - .../drm/nouveau/core/engine/software/nvc0.c | 196 - drivers/gpu/drm/nouveau/core/engine/vp/nv84.c | 93 - drivers/gpu/drm/nouveau/core/engine/vp/nvc0.c | 110 - drivers/gpu/drm/nouveau/core/engine/vp/nve0.c | 110 - .../gpu/drm/nouveau/core/include/core/class.h | 349 - .../drm/nouveau/core/include/core/client.h | 46 - .../gpu/drm/nouveau/core/include/core/debug.h | 13 - .../drm/nouveau/core/include/core/device.h | 137 - .../drm/nouveau/core/include/core/engctx.h | 54 - .../drm/nouveau/core/include/core/engine.h | 57 - .../gpu/drm/nouveau/core/include/core/enum.h | 24 - .../gpu/drm/nouveau/core/include/core/event.h | 36 - .../drm/nouveau/core/include/core/falcon.h | 81 - .../drm/nouveau/core/include/core/gpuobj.h | 71 - .../drm/nouveau/core/include/core/handle.h | 31 - .../gpu/drm/nouveau/core/include/core/math.h | 16 - .../gpu/drm/nouveau/core/include/core/mm.h | 38 - .../drm/nouveau/core/include/core/namedb.h | 56 - .../drm/nouveau/core/include/core/object.h | 202 - .../drm/nouveau/core/include/core/option.h | 11 - .../drm/nouveau/core/include/core/parent.h | 61 - .../drm/nouveau/core/include/core/printk.h | 40 - .../gpu/drm/nouveau/core/include/core/ramht.h | 23 - .../drm/nouveau/core/include/core/subdev.h | 118 - .../gpu/drm/nouveau/core/include/engine/bsp.h | 8 - .../drm/nouveau/core/include/engine/copy.h | 12 - .../drm/nouveau/core/include/engine/crypt.h | 7 - .../drm/nouveau/core/include/engine/disp.h | 48 - .../drm/nouveau/core/include/engine/dmaobj.h | 48 - .../drm/nouveau/core/include/engine/fifo.h | 115 - .../drm/nouveau/core/include/engine/graph.h | 72 - .../drm/nouveau/core/include/engine/mpeg.h | 61 - .../gpu/drm/nouveau/core/include/engine/ppp.h | 7 - .../nouveau/core/include/engine/software.h | 60 - .../gpu/drm/nouveau/core/include/engine/vp.h | 8 - .../gpu/drm/nouveau/core/include/subdev/bar.h | 55 - .../drm/nouveau/core/include/subdev/bios.h | 35 - .../nouveau/core/include/subdev/bios/bit.h | 13 - .../nouveau/core/include/subdev/bios/bmp.h | 39 - .../nouveau/core/include/subdev/bios/conn.h | 27 - .../nouveau/core/include/subdev/bios/dcb.h | 69 - .../nouveau/core/include/subdev/bios/disp.h | 48 - .../drm/nouveau/core/include/subdev/bios/dp.h | 34 - .../nouveau/core/include/subdev/bios/extdev.h | 30 - .../nouveau/core/include/subdev/bios/gpio.h | 40 - .../nouveau/core/include/subdev/bios/i2c.h | 25 - .../nouveau/core/include/subdev/bios/init.h | 22 - .../nouveau/core/include/subdev/bios/mxm.h | 9 - .../nouveau/core/include/subdev/bios/perf.h | 14 - .../nouveau/core/include/subdev/bios/pll.h | 79 - .../nouveau/core/include/subdev/bios/therm.h | 62 - .../nouveau/core/include/subdev/bios/xpio.h | 19 - .../gpu/drm/nouveau/core/include/subdev/bus.h | 41 - .../drm/nouveau/core/include/subdev/clock.h | 60 - .../drm/nouveau/core/include/subdev/device.h | 24 - .../drm/nouveau/core/include/subdev/devinit.h | 40 - .../gpu/drm/nouveau/core/include/subdev/fb.h | 171 - .../drm/nouveau/core/include/subdev/gpio.h | 53 - .../gpu/drm/nouveau/core/include/subdev/i2c.h | 151 - .../drm/nouveau/core/include/subdev/ibus.h | 34 - .../drm/nouveau/core/include/subdev/instmem.h | 73 - .../drm/nouveau/core/include/subdev/ltcg.h | 33 - .../gpu/drm/nouveau/core/include/subdev/mc.h | 49 - .../gpu/drm/nouveau/core/include/subdev/mxm.h | 37 - .../drm/nouveau/core/include/subdev/therm.h | 79 - .../drm/nouveau/core/include/subdev/timer.h | 61 - .../gpu/drm/nouveau/core/include/subdev/vga.h | 30 - .../gpu/drm/nouveau/core/include/subdev/vm.h | 142 - drivers/gpu/drm/nouveau/core/os.h | 48 - .../gpu/drm/nouveau/core/subdev/bar/base.c | 135 - .../gpu/drm/nouveau/core/subdev/bar/nv50.c | 263 - .../gpu/drm/nouveau/core/subdev/bar/nvc0.c | 215 - .../gpu/drm/nouveau/core/subdev/bios/base.c | 503 - .../gpu/drm/nouveau/core/subdev/bios/bit.c | 52 - .../gpu/drm/nouveau/core/subdev/bios/conn.c | 56 - .../gpu/drm/nouveau/core/subdev/bios/dcb.c | 204 - .../gpu/drm/nouveau/core/subdev/bios/disp.c | 178 - drivers/gpu/drm/nouveau/core/subdev/bios/dp.c | 204 - .../gpu/drm/nouveau/core/subdev/bios/extdev.c | 100 - .../gpu/drm/nouveau/core/subdev/bios/gpio.c | 150 - .../gpu/drm/nouveau/core/subdev/bios/i2c.c | 134 - .../gpu/drm/nouveau/core/subdev/bios/init.c | 2186 -- .../gpu/drm/nouveau/core/subdev/bios/mxm.c | 135 - .../gpu/drm/nouveau/core/subdev/bios/perf.c | 75 - .../gpu/drm/nouveau/core/subdev/bios/pll.c | 415 - .../gpu/drm/nouveau/core/subdev/bios/therm.c | 203 - .../gpu/drm/nouveau/core/subdev/bios/xpio.c | 76 - .../gpu/drm/nouveau/core/subdev/bus/nv04.c | 95 - .../gpu/drm/nouveau/core/subdev/bus/nv31.c | 112 - .../gpu/drm/nouveau/core/subdev/bus/nv50.c | 105 - .../gpu/drm/nouveau/core/subdev/bus/nvc0.c | 101 - .../gpu/drm/nouveau/core/subdev/clock/nv04.c | 359 - .../gpu/drm/nouveau/core/subdev/clock/nv40.c | 59 - .../gpu/drm/nouveau/core/subdev/clock/nv50.c | 106 - .../gpu/drm/nouveau/core/subdev/clock/nva3.c | 114 - .../gpu/drm/nouveau/core/subdev/clock/nvc0.c | 97 - .../gpu/drm/nouveau/core/subdev/clock/pll.h | 9 - .../drm/nouveau/core/subdev/clock/pllnv04.c | 242 - .../drm/nouveau/core/subdev/clock/pllnva3.c | 80 - .../gpu/drm/nouveau/core/subdev/device/base.c | 477 - .../gpu/drm/nouveau/core/subdev/device/nv04.c | 89 - .../gpu/drm/nouveau/core/subdev/device/nv10.c | 204 - .../gpu/drm/nouveau/core/subdev/device/nv20.c | 131 - .../gpu/drm/nouveau/core/subdev/device/nv30.c | 153 - .../gpu/drm/nouveau/core/subdev/device/nv40.c | 393 - .../gpu/drm/nouveau/core/subdev/device/nv50.c | 425 - .../gpu/drm/nouveau/core/subdev/device/nvc0.c | 294 - .../gpu/drm/nouveau/core/subdev/device/nve0.c | 150 - .../drm/nouveau/core/subdev/devinit/base.c | 69 - .../drm/nouveau/core/subdev/devinit/fbmem.h | 98 - .../drm/nouveau/core/subdev/devinit/nv04.c | 189 - .../drm/nouveau/core/subdev/devinit/nv05.c | 159 - .../drm/nouveau/core/subdev/devinit/nv10.c | 124 - .../drm/nouveau/core/subdev/devinit/nv1a.c | 58 - .../drm/nouveau/core/subdev/devinit/nv20.c | 96 - .../drm/nouveau/core/subdev/devinit/nv50.c | 121 - drivers/gpu/drm/nouveau/core/subdev/fb/base.c | 140 - drivers/gpu/drm/nouveau/core/subdev/fb/nv04.c | 134 - drivers/gpu/drm/nouveau/core/subdev/fb/nv10.c | 104 - drivers/gpu/drm/nouveau/core/subdev/fb/nv1a.c | 89 - drivers/gpu/drm/nouveau/core/subdev/fb/nv20.c | 132 - drivers/gpu/drm/nouveau/core/subdev/fb/nv25.c | 81 - drivers/gpu/drm/nouveau/core/subdev/fb/nv30.c | 159 - drivers/gpu/drm/nouveau/core/subdev/fb/nv35.c | 82 - drivers/gpu/drm/nouveau/core/subdev/fb/nv36.c | 82 - drivers/gpu/drm/nouveau/core/subdev/fb/nv40.c | 113 - drivers/gpu/drm/nouveau/core/subdev/fb/nv41.c | 106 - drivers/gpu/drm/nouveau/core/subdev/fb/nv44.c | 114 - drivers/gpu/drm/nouveau/core/subdev/fb/nv46.c | 79 - drivers/gpu/drm/nouveau/core/subdev/fb/nv47.c | 66 - drivers/gpu/drm/nouveau/core/subdev/fb/nv49.c | 84 - drivers/gpu/drm/nouveau/core/subdev/fb/nv4e.c | 72 - drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c | 522 - drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c | 241 - .../gpu/drm/nouveau/core/subdev/gpio/base.c | 158 - .../gpu/drm/nouveau/core/subdev/gpio/nv10.c | 177 - .../gpu/drm/nouveau/core/subdev/gpio/nv50.c | 212 - .../gpu/drm/nouveau/core/subdev/gpio/nvd0.c | 107 - .../gpu/drm/nouveau/core/subdev/gpio/nve0.c | 131 - .../gpu/drm/nouveau/core/subdev/gpio/priv.h | 17 - .../gpu/drm/nouveau/core/subdev/i2c/anx9805.c | 279 - drivers/gpu/drm/nouveau/core/subdev/i2c/aux.c | 100 - .../gpu/drm/nouveau/core/subdev/i2c/base.c | 369 - drivers/gpu/drm/nouveau/core/subdev/i2c/bit.c | 232 - .../gpu/drm/nouveau/core/subdev/i2c/nv04.c | 143 - .../gpu/drm/nouveau/core/subdev/i2c/nv4e.c | 135 - .../gpu/drm/nouveau/core/subdev/i2c/nv50.c | 149 - .../gpu/drm/nouveau/core/subdev/i2c/nv50.h | 32 - .../gpu/drm/nouveau/core/subdev/i2c/nv94.c | 285 - .../gpu/drm/nouveau/core/subdev/i2c/nvd0.c | 124 - .../gpu/drm/nouveau/core/subdev/ibus/nvc0.c | 123 - .../gpu/drm/nouveau/core/subdev/ibus/nve0.c | 123 - .../drm/nouveau/core/subdev/instmem/base.c | 154 - .../drm/nouveau/core/subdev/instmem/nv04.c | 198 - .../drm/nouveau/core/subdev/instmem/nv04.h | 39 - .../drm/nouveau/core/subdev/instmem/nv40.c | 138 - .../drm/nouveau/core/subdev/instmem/nv50.c | 172 - .../gpu/drm/nouveau/core/subdev/ltcg/nvc0.c | 93 - drivers/gpu/drm/nouveau/core/subdev/mc/base.c | 49 - drivers/gpu/drm/nouveau/core/subdev/mc/nv04.c | 83 - drivers/gpu/drm/nouveau/core/subdev/mc/nv44.c | 74 - drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c | 82 - drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c | 76 - drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c | 78 - .../gpu/drm/nouveau/core/subdev/mxm/base.c | 290 - .../gpu/drm/nouveau/core/subdev/mxm/mxms.c | 193 - .../gpu/drm/nouveau/core/subdev/mxm/mxms.h | 22 - .../gpu/drm/nouveau/core/subdev/mxm/nv50.c | 233 - .../gpu/drm/nouveau/core/subdev/therm/base.c | 336 - .../gpu/drm/nouveau/core/subdev/therm/fan.c | 254 - .../drm/nouveau/core/subdev/therm/fannil.c | 54 - .../drm/nouveau/core/subdev/therm/fanpwm.c | 107 - .../drm/nouveau/core/subdev/therm/fantog.c | 115 - .../gpu/drm/nouveau/core/subdev/therm/ic.c | 120 - .../gpu/drm/nouveau/core/subdev/therm/nv40.c | 224 - .../gpu/drm/nouveau/core/subdev/therm/nv50.c | 310 - .../gpu/drm/nouveau/core/subdev/therm/nva3.c | 99 - .../gpu/drm/nouveau/core/subdev/therm/nvd0.c | 153 - .../gpu/drm/nouveau/core/subdev/therm/priv.h | 149 - .../gpu/drm/nouveau/core/subdev/therm/temp.c | 245 - .../gpu/drm/nouveau/core/subdev/timer/base.c | 87 - .../gpu/drm/nouveau/core/subdev/timer/nv04.c | 249 - drivers/gpu/drm/nouveau/core/subdev/vm/base.c | 480 - drivers/gpu/drm/nouveau/core/subdev/vm/nv04.c | 151 - drivers/gpu/drm/nouveau/core/subdev/vm/nv04.h | 19 - drivers/gpu/drm/nouveau/core/subdev/vm/nv41.c | 159 - drivers/gpu/drm/nouveau/core/subdev/vm/nv44.c | 249 - drivers/gpu/drm/nouveau/core/subdev/vm/nv50.c | 227 - drivers/gpu/drm/nouveau/core/subdev/vm/nvc0.c | 189 - drivers/gpu/drm/nouveau/nouveau_abi16.c | 495 - drivers/gpu/drm/nouveau/nouveau_abi16.h | 115 - drivers/gpu/drm/nouveau/nouveau_acpi.c | 425 - drivers/gpu/drm/nouveau/nouveau_acpi.h | 26 - drivers/gpu/drm/nouveau/nouveau_agp.c | 164 - drivers/gpu/drm/nouveau/nouveau_agp.h | 10 - drivers/gpu/drm/nouveau/nouveau_backlight.c | 261 - drivers/gpu/drm/nouveau/nouveau_bios.c | 2121 -- drivers/gpu/drm/nouveau/nouveau_bios.h | 181 - drivers/gpu/drm/nouveau/nouveau_bo.c | 1573 - drivers/gpu/drm/nouveau/nouveau_bo.h | 100 - drivers/gpu/drm/nouveau/nouveau_calc.c | 265 - drivers/gpu/drm/nouveau/nouveau_chan.c | 403 - drivers/gpu/drm/nouveau/nouveau_chan.h | 47 - drivers/gpu/drm/nouveau/nouveau_connector.c | 1150 - drivers/gpu/drm/nouveau/nouveau_connector.h | 113 - drivers/gpu/drm/nouveau/nouveau_crtc.h | 87 - drivers/gpu/drm/nouveau/nouveau_debugfs.c | 64 - drivers/gpu/drm/nouveau/nouveau_debugfs.h | 22 - drivers/gpu/drm/nouveau/nouveau_display.c | 723 - drivers/gpu/drm/nouveau/nouveau_display.h | 91 - drivers/gpu/drm/nouveau/nouveau_dma.c | 262 - drivers/gpu/drm/nouveau/nouveau_dma.h | 211 - drivers/gpu/drm/nouveau/nouveau_dp.c | 96 - drivers/gpu/drm/nouveau/nouveau_drm.c | 795 - drivers/gpu/drm/nouveau/nouveau_drm.h | 148 - drivers/gpu/drm/nouveau/nouveau_encoder.h | 94 - drivers/gpu/drm/nouveau/nouveau_fbcon.c | 528 - drivers/gpu/drm/nouveau/nouveau_fbcon.h | 70 - drivers/gpu/drm/nouveau/nouveau_fence.c | 277 - drivers/gpu/drm/nouveau/nouveau_fence.h | 96 - drivers/gpu/drm/nouveau/nouveau_gem.c | 892 - drivers/gpu/drm/nouveau/nouveau_gem.h | 45 - drivers/gpu/drm/nouveau/nouveau_hw.c | 827 - drivers/gpu/drm/nouveau/nouveau_hw.h | 408 - drivers/gpu/drm/nouveau/nouveau_hwsq.h | 115 - drivers/gpu/drm/nouveau/nouveau_ioc32.c | 69 - drivers/gpu/drm/nouveau/nouveau_ioctl.h | 6 - drivers/gpu/drm/nouveau/nouveau_irq.c | 76 - drivers/gpu/drm/nouveau/nouveau_irq.h | 11 - drivers/gpu/drm/nouveau/nouveau_mem.c | 647 - drivers/gpu/drm/nouveau/nouveau_perf.c | 416 - drivers/gpu/drm/nouveau/nouveau_pm.c | 1174 - drivers/gpu/drm/nouveau/nouveau_pm.h | 283 - drivers/gpu/drm/nouveau/nouveau_prime.c | 98 - drivers/gpu/drm/nouveau/nouveau_reg.h | 858 - drivers/gpu/drm/nouveau/nouveau_sgdma.c | 112 - drivers/gpu/drm/nouveau/nouveau_ttm.c | 423 - drivers/gpu/drm/nouveau/nouveau_ttm.h | 25 - drivers/gpu/drm/nouveau/nouveau_vga.c | 98 - drivers/gpu/drm/nouveau/nouveau_vga.h | 8 - drivers/gpu/drm/nouveau/nouveau_volt.c | 250 - drivers/gpu/drm/nouveau/nv04_crtc.c | 1073 - drivers/gpu/drm/nouveau/nv04_cursor.c | 71 - drivers/gpu/drm/nouveau/nv04_dac.c | 556 - drivers/gpu/drm/nouveau/nv04_dfp.c | 720 - drivers/gpu/drm/nouveau/nv04_display.c | 211 - drivers/gpu/drm/nouveau/nv04_display.h | 185 - drivers/gpu/drm/nouveau/nv04_fbcon.c | 277 - drivers/gpu/drm/nouveau/nv04_fence.c | 111 - drivers/gpu/drm/nouveau/nv04_pm.c | 146 - drivers/gpu/drm/nouveau/nv04_tv.c | 246 - drivers/gpu/drm/nouveau/nv10_fence.c | 110 - drivers/gpu/drm/nouveau/nv10_fence.h | 19 - drivers/gpu/drm/nouveau/nv17_fence.c | 149 - drivers/gpu/drm/nouveau/nv17_tv.c | 843 - drivers/gpu/drm/nouveau/nv17_tv.h | 163 - drivers/gpu/drm/nouveau/nv17_tv_modes.c | 592 - drivers/gpu/drm/nouveau/nv40_pm.c | 353 - drivers/gpu/drm/nouveau/nv50_display.c | 2297 -- drivers/gpu/drm/nouveau/nv50_display.h | 45 - drivers/gpu/drm/nouveau/nv50_fbcon.c | 259 - drivers/gpu/drm/nouveau/nv50_fence.c | 119 - drivers/gpu/drm/nouveau/nv50_pm.c | 855 - drivers/gpu/drm/nouveau/nv84_fence.c | 276 - drivers/gpu/drm/nouveau/nva3_pm.c | 624 - drivers/gpu/drm/nouveau/nvc0_fbcon.c | 262 - drivers/gpu/drm/nouveau/nvc0_fence.c | 90 - drivers/gpu/drm/nouveau/nvc0_pm.c | 599 - drivers/gpu/drm/nouveau/nvreg.h | 517 - drivers/gpu/drm/radeon/Kconfig | 8 - drivers/gpu/drm/radeon/Makefile | 87 - drivers/gpu/drm/radeon/ObjectID.h | 696 - drivers/gpu/drm/radeon/atom-bits.h | 48 - drivers/gpu/drm/radeon/atom-names.h | 100 - drivers/gpu/drm/radeon/atom-types.h | 42 - drivers/gpu/drm/radeon/atom.c | 1411 - drivers/gpu/drm/radeon/atom.h | 159 - drivers/gpu/drm/radeon/atombios.h | 8010 ----- drivers/gpu/drm/radeon/atombios_crtc.c | 1932 -- drivers/gpu/drm/radeon/atombios_dp.c | 890 - drivers/gpu/drm/radeon/atombios_encoders.c | 2658 -- drivers/gpu/drm/radeon/atombios_i2c.c | 139 - drivers/gpu/drm/radeon/avivod.h | 62 - drivers/gpu/drm/radeon/cayman_blit_shaders.c | 374 - drivers/gpu/drm/radeon/cayman_blit_shaders.h | 35 - drivers/gpu/drm/radeon/evergreen.c | 3921 --- drivers/gpu/drm/radeon/evergreen_blit_kms.c | 729 - .../gpu/drm/radeon/evergreen_blit_shaders.c | 357 - .../gpu/drm/radeon/evergreen_blit_shaders.h | 35 - drivers/gpu/drm/radeon/evergreen_cs.c | 3514 -- drivers/gpu/drm/radeon/evergreen_hdmi.c | 166 - drivers/gpu/drm/radeon/evergreen_reg.h | 238 - drivers/gpu/drm/radeon/evergreend.h | 2048 -- drivers/gpu/drm/radeon/mkregtable.c | 725 - drivers/gpu/drm/radeon/ni.c | 2101 -- drivers/gpu/drm/radeon/ni_reg.h | 86 - drivers/gpu/drm/radeon/nid.h | 682 - drivers/gpu/drm/radeon/r100.c | 4079 --- drivers/gpu/drm/radeon/r100_track.h | 97 - drivers/gpu/drm/radeon/r100d.h | 869 - drivers/gpu/drm/radeon/r200.c | 548 - drivers/gpu/drm/radeon/r300.c | 1555 - drivers/gpu/drm/radeon/r300_cmdbuf.c | 1186 - drivers/gpu/drm/radeon/r300_reg.h | 1789 - drivers/gpu/drm/radeon/r300d.h | 343 - drivers/gpu/drm/radeon/r420.c | 489 - drivers/gpu/drm/radeon/r420d.h | 249 - drivers/gpu/drm/radeon/r500_reg.h | 798 - drivers/gpu/drm/radeon/r520.c | 326 - drivers/gpu/drm/radeon/r520d.h | 187 - drivers/gpu/drm/radeon/r600.c | 4487 --- drivers/gpu/drm/radeon/r600_audio.c | 255 - drivers/gpu/drm/radeon/r600_blit.c | 843 - drivers/gpu/drm/radeon/r600_blit_kms.c | 785 - drivers/gpu/drm/radeon/r600_blit_shaders.c | 719 - drivers/gpu/drm/radeon/r600_blit_shaders.h | 39 - drivers/gpu/drm/radeon/r600_cp.c | 2660 -- drivers/gpu/drm/radeon/r600_cs.c | 2621 -- drivers/gpu/drm/radeon/r600_hdmi.c | 528 - drivers/gpu/drm/radeon/r600_reg.h | 174 - drivers/gpu/drm/radeon/r600d.h | 1924 -- drivers/gpu/drm/radeon/radeon.h | 2009 -- drivers/gpu/drm/radeon/radeon_acpi.c | 649 - drivers/gpu/drm/radeon/radeon_acpi.h | 445 - drivers/gpu/drm/radeon/radeon_agp.c | 285 - drivers/gpu/drm/radeon/radeon_asic.c | 1985 -- drivers/gpu/drm/radeon/radeon_asic.h | 528 - drivers/gpu/drm/radeon/radeon_atombios.c | 3198 -- drivers/gpu/drm/radeon/radeon_atpx_handler.c | 560 - drivers/gpu/drm/radeon/radeon_benchmark.c | 250 - drivers/gpu/drm/radeon/radeon_bios.c | 666 - drivers/gpu/drm/radeon/radeon_blit_common.h | 44 - drivers/gpu/drm/radeon/radeon_clocks.c | 912 - drivers/gpu/drm/radeon/radeon_combios.c | 3676 -- drivers/gpu/drm/radeon/radeon_connectors.c | 2023 -- drivers/gpu/drm/radeon/radeon_cp.c | 2243 -- drivers/gpu/drm/radeon/radeon_cs.c | 782 - drivers/gpu/drm/radeon/radeon_cursor.c | 316 - drivers/gpu/drm/radeon/radeon_device.c | 1487 - drivers/gpu/drm/radeon/radeon_display.c | 1673 - drivers/gpu/drm/radeon/radeon_drv.c | 492 - drivers/gpu/drm/radeon/radeon_drv.h | 2164 -- drivers/gpu/drm/radeon/radeon_encoders.c | 384 - drivers/gpu/drm/radeon/radeon_family.h | 115 - drivers/gpu/drm/radeon/radeon_fb.c | 405 - drivers/gpu/drm/radeon/radeon_fence.c | 931 - drivers/gpu/drm/radeon/radeon_gart.c | 1284 - drivers/gpu/drm/radeon/radeon_gem.c | 579 - drivers/gpu/drm/radeon/radeon_i2c.c | 1188 - drivers/gpu/drm/radeon/radeon_ioc32.c | 424 - drivers/gpu/drm/radeon/radeon_irq.c | 402 - drivers/gpu/drm/radeon/radeon_irq_kms.c | 479 - drivers/gpu/drm/radeon/radeon_kms.c | 720 - drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 1081 - .../gpu/drm/radeon/radeon_legacy_encoders.c | 1810 - drivers/gpu/drm/radeon/radeon_legacy_tv.c | 923 - drivers/gpu/drm/radeon/radeon_mem.c | 302 - drivers/gpu/drm/radeon/radeon_mode.h | 739 - drivers/gpu/drm/radeon/radeon_object.c | 638 - drivers/gpu/drm/radeon/radeon_object.h | 181 - drivers/gpu/drm/radeon/radeon_pm.c | 870 - drivers/gpu/drm/radeon/radeon_prime.c | 100 - drivers/gpu/drm/radeon/radeon_reg.h | 3724 -- drivers/gpu/drm/radeon/radeon_ring.c | 883 - drivers/gpu/drm/radeon/radeon_sa.c | 419 - drivers/gpu/drm/radeon/radeon_semaphore.c | 119 - drivers/gpu/drm/radeon/radeon_state.c | 3261 -- drivers/gpu/drm/radeon/radeon_test.c | 505 - drivers/gpu/drm/radeon/radeon_trace.h | 82 - drivers/gpu/drm/radeon/radeon_trace_points.c | 9 - drivers/gpu/drm/radeon/radeon_ttm.c | 905 - drivers/gpu/drm/radeon/reg_srcs/cayman | 642 - drivers/gpu/drm/radeon/reg_srcs/evergreen | 644 - drivers/gpu/drm/radeon/reg_srcs/r100 | 105 - drivers/gpu/drm/radeon/reg_srcs/r200 | 186 - drivers/gpu/drm/radeon/reg_srcs/r300 | 714 - drivers/gpu/drm/radeon/reg_srcs/r420 | 780 - drivers/gpu/drm/radeon/reg_srcs/r600 | 755 - drivers/gpu/drm/radeon/reg_srcs/rn50 | 30 - drivers/gpu/drm/radeon/reg_srcs/rs600 | 780 - drivers/gpu/drm/radeon/reg_srcs/rv515 | 496 - drivers/gpu/drm/radeon/rs100d.h | 40 - drivers/gpu/drm/radeon/rs400.c | 563 - drivers/gpu/drm/radeon/rs400d.h | 160 - drivers/gpu/drm/radeon/rs600.c | 1039 - drivers/gpu/drm/radeon/rs600d.h | 685 - drivers/gpu/drm/radeon/rs690.c | 781 - drivers/gpu/drm/radeon/rs690d.h | 310 - drivers/gpu/drm/radeon/rv200d.h | 36 - drivers/gpu/drm/radeon/rv250d.h | 123 - drivers/gpu/drm/radeon/rv350d.h | 52 - drivers/gpu/drm/radeon/rv515.c | 1200 - drivers/gpu/drm/radeon/rv515d.h | 638 - drivers/gpu/drm/radeon/rv770.c | 1321 - drivers/gpu/drm/radeon/rv770d.h | 674 - drivers/gpu/drm/radeon/si.c | 4636 --- drivers/gpu/drm/radeon/si_blit_shaders.c | 253 - drivers/gpu/drm/radeon/si_blit_shaders.h | 32 - drivers/gpu/drm/radeon/si_reg.h | 105 - drivers/gpu/drm/radeon/sid.h | 1070 - drivers/gpu/drm/ttm/Makefile | 14 - drivers/gpu/drm/ttm/ttm_agp_backend.c | 153 - drivers/gpu/drm/ttm/ttm_bo.c | 1943 -- drivers/gpu/drm/ttm/ttm_bo_manager.c | 157 - drivers/gpu/drm/ttm/ttm_bo_util.c | 697 - drivers/gpu/drm/ttm/ttm_bo_vm.c | 467 - drivers/gpu/drm/ttm/ttm_execbuf_util.c | 242 - drivers/gpu/drm/ttm/ttm_lock.c | 310 - drivers/gpu/drm/ttm/ttm_memory.c | 603 - drivers/gpu/drm/ttm/ttm_module.c | 102 - drivers/gpu/drm/ttm/ttm_object.c | 456 - drivers/gpu/drm/ttm/ttm_page_alloc.c | 921 - drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 1133 - drivers/gpu/drm/ttm/ttm_tt.c | 379 - drivers/gpu/drm/via/Makefile | 8 - drivers/gpu/drm/via/via_3d_reg.h | 1650 - drivers/gpu/drm/via/via_dma.c | 740 - drivers/gpu/drm/via/via_dmablit.c | 808 - drivers/gpu/drm/via/via_dmablit.h | 140 - drivers/gpu/drm/via/via_drv.c | 125 - drivers/gpu/drm/via/via_drv.h | 160 - drivers/gpu/drm/via/via_irq.c | 391 - drivers/gpu/drm/via/via_map.c | 128 - drivers/gpu/drm/via/via_mm.c | 237 - drivers/gpu/drm/via/via_verifier.c | 1110 - drivers/gpu/drm/via/via_verifier.h | 62 - drivers/gpu/drm/via/via_video.c | 93 - drivers/gpu/drm/vmwgfx/Kconfig | 22 - drivers/gpu/drm/vmwgfx/Makefile | 11 - drivers/gpu/drm/vmwgfx/svga3d_reg.h | 1896 - drivers/gpu/drm/vmwgfx/svga3d_surfacedefs.h | 909 - drivers/gpu/drm/vmwgfx/svga_escape.h | 89 - drivers/gpu/drm/vmwgfx/svga_overlay.h | 201 - drivers/gpu/drm/vmwgfx/svga_reg.h | 1552 - drivers/gpu/drm/vmwgfx/svga_types.h | 45 - drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c | 352 - drivers/gpu/drm/vmwgfx/vmwgfx_context.c | 274 - drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c | 320 - drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 1208 - drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 768 - drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 1773 - drivers/gpu/drm/vmwgfx/vmwgfx_fb.c | 655 - drivers/gpu/drm/vmwgfx/vmwgfx_fence.c | 1154 - drivers/gpu/drm/vmwgfx/vmwgfx_fence.h | 120 - drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c | 568 - drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c | 280 - drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c | 161 - drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c | 326 - drivers/gpu/drm/vmwgfx/vmwgfx_irq.c | 324 - drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 2060 -- drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 166 - drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 444 - drivers/gpu/drm/vmwgfx/vmwgfx_marker.c | 171 - drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c | 619 - drivers/gpu/drm/vmwgfx/vmwgfx_reg.h | 57 - drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 1298 - drivers/gpu/drm/vmwgfx/vmwgfx_resource_priv.h | 84 - drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 571 - drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 893 - drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c | 98 - drivers/misc/eeprom/Makefile | 1 - drivers/misc/eeprom/eeprom_93cx6.c | 321 - drivers/net/Makefile | 2 - drivers/net/ethernet/atheros/Kconfig | 70 - drivers/net/ethernet/atheros/Makefile | 8 - drivers/net/ethernet/atheros/atl1c/Makefile | 2 - drivers/net/ethernet/atheros/atl1c/atl1c.h | 603 - .../ethernet/atheros/atl1c/atl1c_ethtool.c | 321 - drivers/net/ethernet/atheros/atl1c/atl1c_hw.c | 865 - drivers/net/ethernet/atheros/atl1c/atl1c_hw.h | 1024 - .../net/ethernet/atheros/atl1c/atl1c_main.c | 2819 -- drivers/net/ethernet/atheros/atl1e/Makefile | 2 - drivers/net/ethernet/atheros/atl1e/atl1e.h | 509 - .../ethernet/atheros/atl1e/atl1e_ethtool.c | 397 - drivers/net/ethernet/atheros/atl1e/atl1e_hw.c | 651 - drivers/net/ethernet/atheros/atl1e/atl1e_hw.h | 690 - .../net/ethernet/atheros/atl1e/atl1e_main.c | 2548 -- .../net/ethernet/atheros/atl1e/atl1e_param.c | 269 - drivers/net/ethernet/atheros/atlx/Makefile | 3 - drivers/net/ethernet/atheros/atlx/atl1.c | 3740 -- drivers/net/ethernet/atheros/atlx/atl1.h | 802 - drivers/net/ethernet/atheros/atlx/atl2.c | 3126 -- drivers/net/ethernet/atheros/atlx/atl2.h | 524 - drivers/net/ethernet/atheros/atlx/atlx.c | 285 - drivers/net/ethernet/atheros/atlx/atlx.h | 502 - drivers/net/ethernet/broadcom/Makefile | 1 - drivers/net/ethernet/broadcom/b44.c | 2402 -- drivers/net/ethernet/broadcom/b44.h | 402 - drivers/net/mdio.c | 451 - drivers/net/usb/Makefile | 8 - drivers/net/usb/cdc_ether.c | 732 - drivers/net/usb/rndis_host.c | 654 - drivers/net/usb/usbnet.c | 1875 - drivers/net/wireless/Makefile | 46 - drivers/net/wireless/adm8211.c | 2013 -- drivers/net/wireless/adm8211.h | 602 - drivers/net/wireless/at76c50x-usb.c | 2504 -- drivers/net/wireless/at76c50x-usb.h | 464 - drivers/net/wireless/ath/Kconfig | 35 - drivers/net/wireless/ath/Makefile | 16 - drivers/net/wireless/ath/ar5523/Kconfig | 8 - drivers/net/wireless/ath/ar5523/Makefile | 1 - drivers/net/wireless/ath/ar5523/ar5523.c | 1798 - drivers/net/wireless/ath/ar5523/ar5523.h | 152 - drivers/net/wireless/ath/ar5523/ar5523_hw.h | 431 - drivers/net/wireless/ath/ath.h | 293 - drivers/net/wireless/ath/ath5k/Kconfig | 75 - drivers/net/wireless/ath/ath5k/Makefile | 21 - drivers/net/wireless/ath/ath5k/ahb.c | 239 - drivers/net/wireless/ath/ath5k/ani.c | 757 - drivers/net/wireless/ath/ath5k/ani.h | 119 - drivers/net/wireless/ath/ath5k/ath5k.h | 1713 - drivers/net/wireless/ath/ath5k/attach.c | 362 - drivers/net/wireless/ath/ath5k/base.c | 3079 -- drivers/net/wireless/ath/ath5k/base.h | 119 - drivers/net/wireless/ath/ath5k/caps.c | 154 - drivers/net/wireless/ath/ath5k/debug.c | 1031 - drivers/net/wireless/ath/ath5k/debug.h | 165 - drivers/net/wireless/ath/ath5k/desc.c | 789 - drivers/net/wireless/ath/ath5k/desc.h | 367 - drivers/net/wireless/ath/ath5k/dma.c | 922 - drivers/net/wireless/ath/ath5k/eeprom.c | 1796 - drivers/net/wireless/ath/ath5k/eeprom.h | 498 - drivers/net/wireless/ath/ath5k/gpio.c | 213 - drivers/net/wireless/ath/ath5k/initvals.c | 1608 - drivers/net/wireless/ath/ath5k/led.c | 204 - drivers/net/wireless/ath/ath5k/mac80211-ops.c | 857 - drivers/net/wireless/ath/ath5k/pci.c | 353 - drivers/net/wireless/ath/ath5k/pcu.c | 1007 - drivers/net/wireless/ath/ath5k/phy.c | 3981 --- drivers/net/wireless/ath/ath5k/qcu.c | 717 - drivers/net/wireless/ath/ath5k/reg.h | 2604 -- drivers/net/wireless/ath/ath5k/reset.c | 1408 - drivers/net/wireless/ath/ath5k/rfbuffer.h | 853 - drivers/net/wireless/ath/ath5k/rfgain.h | 534 - drivers/net/wireless/ath/ath5k/rfkill.c | 116 - drivers/net/wireless/ath/ath5k/sysfs.c | 124 - drivers/net/wireless/ath/ath5k/trace.h | 106 - drivers/net/wireless/ath/ath6kl/Kconfig | 40 - drivers/net/wireless/ath/ath6kl/Makefile | 44 - drivers/net/wireless/ath/ath6kl/bmi.c | 548 - drivers/net/wireless/ath/ath6kl/bmi.h | 270 - drivers/net/wireless/ath/ath6kl/cfg80211.c | 3852 --- drivers/net/wireless/ath/ath6kl/cfg80211.h | 65 - drivers/net/wireless/ath/ath6kl/common.h | 86 - drivers/net/wireless/ath/ath6kl/core.c | 346 - drivers/net/wireless/ath/ath6kl/core.h | 967 - drivers/net/wireless/ath/ath6kl/debug.c | 1825 - drivers/net/wireless/ath/ath6kl/debug.h | 148 - drivers/net/wireless/ath/ath6kl/hif-ops.h | 187 - drivers/net/wireless/ath/ath6kl/hif.c | 702 - drivers/net/wireless/ath/ath6kl/hif.h | 282 - drivers/net/wireless/ath/ath6kl/htc-ops.h | 113 - drivers/net/wireless/ath/ath6kl/htc.h | 677 - drivers/net/wireless/ath/ath6kl/htc_mbox.c | 2927 -- drivers/net/wireless/ath/ath6kl/htc_pipe.c | 1724 - drivers/net/wireless/ath/ath6kl/init.c | 1776 - drivers/net/wireless/ath/ath6kl/main.c | 1360 - drivers/net/wireless/ath/ath6kl/recovery.c | 160 - drivers/net/wireless/ath/ath6kl/sdio.c | 1465 - drivers/net/wireless/ath/ath6kl/target.h | 356 - drivers/net/wireless/ath/ath6kl/testmode.c | 101 - drivers/net/wireless/ath/ath6kl/testmode.h | 37 - drivers/net/wireless/ath/ath6kl/txrx.c | 1872 - drivers/net/wireless/ath/ath6kl/usb.c | 1242 - drivers/net/wireless/ath/ath6kl/wmi.c | 4128 --- drivers/net/wireless/ath/ath6kl/wmi.h | 2732 -- drivers/net/wireless/ath/ath9k/Kconfig | 123 - drivers/net/wireless/ath/ath9k/Makefile | 64 - drivers/net/wireless/ath/ath9k/ahb.c | 193 - drivers/net/wireless/ath/ath9k/ani.c | 532 - drivers/net/wireless/ath/ath9k/ani.h | 145 - drivers/net/wireless/ath/ath9k/antenna.c | 797 - .../net/wireless/ath/ath9k/ar5008_initvals.h | 674 - drivers/net/wireless/ath/ath9k/ar5008_phy.c | 1404 - .../net/wireless/ath/ath9k/ar9001_initvals.h | 1089 - drivers/net/wireless/ath/ath9k/ar9002_calib.c | 989 - drivers/net/wireless/ath/ath9k/ar9002_hw.c | 485 - .../net/wireless/ath/ath9k/ar9002_initvals.h | 3194 -- drivers/net/wireless/ath/ath9k/ar9002_mac.c | 369 - drivers/net/wireless/ath/ath9k/ar9002_phy.c | 638 - drivers/net/wireless/ath/ath9k/ar9002_phy.h | 615 - .../wireless/ath/ath9k/ar9003_2p2_initvals.h | 1741 - drivers/net/wireless/ath/ath9k/ar9003_calib.c | 1182 - .../net/wireless/ath/ath9k/ar9003_eeprom.c | 5325 --- .../net/wireless/ath/ath9k/ar9003_eeprom.h | 342 - drivers/net/wireless/ath/ath9k/ar9003_hw.c | 715 - drivers/net/wireless/ath/ath9k/ar9003_mac.c | 589 - drivers/net/wireless/ath/ath9k/ar9003_mac.h | 123 - drivers/net/wireless/ath/ath9k/ar9003_mci.c | 1485 - drivers/net/wireless/ath/ath9k/ar9003_mci.h | 335 - drivers/net/wireless/ath/ath9k/ar9003_paprd.c | 1010 - drivers/net/wireless/ath/ath9k/ar9003_phy.c | 1680 - drivers/net/wireless/ath/ath9k/ar9003_phy.h | 1320 - drivers/net/wireless/ath/ath9k/ar9003_rtt.c | 208 - drivers/net/wireless/ath/ath9k/ar9003_rtt.h | 29 - .../wireless/ath/ath9k/ar9330_1p1_initvals.h | 1100 - .../wireless/ath/ath9k/ar9330_1p2_initvals.h | 242 - .../net/wireless/ath/ath9k/ar9340_initvals.h | 1450 - .../wireless/ath/ath9k/ar9462_2p0_initvals.h | 1453 - .../net/wireless/ath/ath9k/ar9485_initvals.h | 1211 - .../wireless/ath/ath9k/ar955x_1p0_initvals.h | 1284 - .../wireless/ath/ath9k/ar9565_1p0_initvals.h | 1231 - .../wireless/ath/ath9k/ar9580_1p0_initvals.h | 997 - drivers/net/wireless/ath/ath9k/ath9k.h | 951 - drivers/net/wireless/ath/ath9k/beacon.c | 781 - drivers/net/wireless/ath/ath9k/btcoex.c | 416 - drivers/net/wireless/ath/ath9k/btcoex.h | 124 - drivers/net/wireless/ath/ath9k/calib.c | 451 - drivers/net/wireless/ath/ath9k/calib.h | 116 - drivers/net/wireless/ath/ath9k/common.c | 210 - drivers/net/wireless/ath/ath9k/common.h | 57 - drivers/net/wireless/ath/ath9k/debug.c | 2101 -- drivers/net/wireless/ath/ath9k/debug.h | 373 - drivers/net/wireless/ath/ath9k/dfs.c | 201 - drivers/net/wireless/ath/ath9k/dfs.h | 45 - drivers/net/wireless/ath/ath9k/dfs_debug.c | 120 - drivers/net/wireless/ath/ath9k/dfs_debug.h | 84 - .../wireless/ath/ath9k/dfs_pattern_detector.c | 306 - .../wireless/ath/ath9k/dfs_pattern_detector.h | 104 - .../net/wireless/ath/ath9k/dfs_pri_detector.c | 452 - .../net/wireless/ath/ath9k/dfs_pri_detector.h | 52 - drivers/net/wireless/ath/ath9k/eeprom.c | 586 - drivers/net/wireless/ath/ath9k/eeprom.h | 717 - drivers/net/wireless/ath/ath9k/eeprom_4k.c | 1106 - drivers/net/wireless/ath/ath9k/eeprom_9287.c | 1044 - drivers/net/wireless/ath/ath9k/eeprom_def.c | 1389 - drivers/net/wireless/ath/ath9k/gpio.c | 567 - drivers/net/wireless/ath/ath9k/hif_usb.c | 1389 - drivers/net/wireless/ath/ath9k/hif_usb.h | 116 - drivers/net/wireless/ath/ath9k/htc.h | 609 - .../net/wireless/ath/ath9k/htc_drv_beacon.c | 659 - .../net/wireless/ath/ath9k/htc_drv_debug.c | 951 - drivers/net/wireless/ath/ath9k/htc_drv_gpio.c | 321 - drivers/net/wireless/ath/ath9k/htc_drv_init.c | 1010 - drivers/net/wireless/ath/ath9k/htc_drv_main.c | 1787 - drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 1222 - drivers/net/wireless/ath/ath9k/htc_hst.c | 482 - drivers/net/wireless/ath/ath9k/htc_hst.h | 218 - drivers/net/wireless/ath/ath9k/hw-ops.h | 215 - drivers/net/wireless/ath/ath9k/hw.c | 3226 -- drivers/net/wireless/ath/ath9k/hw.h | 1189 - drivers/net/wireless/ath/ath9k/init.c | 998 - drivers/net/wireless/ath/ath9k/link.c | 570 - drivers/net/wireless/ath/ath9k/mac.c | 931 - drivers/net/wireless/ath/ath9k/mac.h | 746 - drivers/net/wireless/ath/ath9k/main.c | 2368 -- drivers/net/wireless/ath/ath9k/mci.c | 768 - drivers/net/wireless/ath/ath9k/mci.h | 178 - drivers/net/wireless/ath/ath9k/pci.c | 352 - drivers/net/wireless/ath/ath9k/phy.h | 51 - drivers/net/wireless/ath/ath9k/rc.c | 1491 - drivers/net/wireless/ath/ath9k/rc.h | 248 - drivers/net/wireless/ath/ath9k/recv.c | 1381 - drivers/net/wireless/ath/ath9k/reg.h | 2369 -- drivers/net/wireless/ath/ath9k/wmi.c | 349 - drivers/net/wireless/ath/ath9k/wmi.h | 191 - drivers/net/wireless/ath/ath9k/wow.c | 532 - drivers/net/wireless/ath/ath9k/xmit.c | 2450 -- drivers/net/wireless/ath/carl9170/Kconfig | 56 - drivers/net/wireless/ath/carl9170/Makefile | 4 - drivers/net/wireless/ath/carl9170/carl9170.h | 672 - drivers/net/wireless/ath/carl9170/cmd.c | 222 - drivers/net/wireless/ath/carl9170/cmd.h | 174 - drivers/net/wireless/ath/carl9170/debug.c | 897 - drivers/net/wireless/ath/carl9170/debug.h | 134 - drivers/net/wireless/ath/carl9170/eeprom.h | 216 - drivers/net/wireless/ath/carl9170/fw.c | 447 - drivers/net/wireless/ath/carl9170/fwcmd.h | 326 - drivers/net/wireless/ath/carl9170/fwdesc.h | 277 - drivers/net/wireless/ath/carl9170/hw.h | 817 - drivers/net/wireless/ath/carl9170/led.c | 190 - drivers/net/wireless/ath/carl9170/mac.c | 538 - drivers/net/wireless/ath/carl9170/main.c | 2144 -- drivers/net/wireless/ath/carl9170/phy.c | 1763 - drivers/net/wireless/ath/carl9170/phy.h | 564 - drivers/net/wireless/ath/carl9170/rx.c | 1016 - drivers/net/wireless/ath/carl9170/tx.c | 1699 - drivers/net/wireless/ath/carl9170/usb.c | 1174 - drivers/net/wireless/ath/carl9170/version.h | 7 - drivers/net/wireless/ath/carl9170/wlan.h | 435 - drivers/net/wireless/ath/debug.c | 47 - drivers/net/wireless/ath/hw.c | 184 - drivers/net/wireless/ath/key.c | 606 - drivers/net/wireless/ath/main.c | 104 - drivers/net/wireless/ath/reg.h | 61 - drivers/net/wireless/ath/regd.c | 663 - drivers/net/wireless/ath/regd.h | 263 - drivers/net/wireless/ath/regd_common.h | 478 - drivers/net/wireless/ath/wil6210/Kconfig | 29 - drivers/net/wireless/ath/wil6210/Makefile | 12 - drivers/net/wireless/ath/wil6210/cfg80211.c | 572 - .../net/wireless/ath/wil6210/dbg_hexdump.h | 20 - drivers/net/wireless/ath/wil6210/debugfs.c | 603 - drivers/net/wireless/ath/wil6210/interrupt.c | 490 - drivers/net/wireless/ath/wil6210/main.c | 410 - drivers/net/wireless/ath/wil6210/netdev.c | 132 - drivers/net/wireless/ath/wil6210/pcie_bus.c | 223 - drivers/net/wireless/ath/wil6210/txrx.c | 824 - drivers/net/wireless/ath/wil6210/txrx.h | 362 - drivers/net/wireless/ath/wil6210/wil6210.h | 363 - drivers/net/wireless/ath/wil6210/wmi.c | 1020 - drivers/net/wireless/ath/wil6210/wmi.h | 1116 - drivers/net/wireless/b43/Kconfig | 177 - drivers/net/wireless/b43/Makefile | 30 - drivers/net/wireless/b43/b43.h | 1077 - drivers/net/wireless/b43/bus.c | 255 - drivers/net/wireless/b43/bus.h | 70 - drivers/net/wireless/b43/debugfs.c | 826 - drivers/net/wireless/b43/debugfs.h | 111 - drivers/net/wireless/b43/dma.c | 1779 - drivers/net/wireless/b43/dma.h | 303 - drivers/net/wireless/b43/leds.c | 359 - drivers/net/wireless/b43/leds.h | 94 - drivers/net/wireless/b43/lo.c | 1016 - drivers/net/wireless/b43/lo.h | 87 - drivers/net/wireless/b43/main.c | 5649 --- drivers/net/wireless/b43/main.h | 144 - drivers/net/wireless/b43/pcmcia.c | 176 - drivers/net/wireless/b43/pcmcia.h | 20 - drivers/net/wireless/b43/phy_a.c | 595 - drivers/net/wireless/b43/phy_a.h | 130 - drivers/net/wireless/b43/phy_common.c | 543 - drivers/net/wireless/b43/phy_common.h | 460 - drivers/net/wireless/b43/phy_g.c | 3055 -- drivers/net/wireless/b43/phy_g.h | 208 - drivers/net/wireless/b43/phy_ht.c | 618 - drivers/net/wireless/b43/phy_ht.h | 65 - drivers/net/wireless/b43/phy_lcn.c | 901 - drivers/net/wireless/b43/phy_lcn.h | 31 - drivers/net/wireless/b43/phy_lp.c | 2736 -- drivers/net/wireless/b43/phy_lp.h | 912 - drivers/net/wireless/b43/phy_n.c | 5570 --- drivers/net/wireless/b43/phy_n.h | 843 - drivers/net/wireless/b43/pio.c | 834 - drivers/net/wireless/b43/pio.h | 165 - drivers/net/wireless/b43/radio_2055.c | 1335 - drivers/net/wireless/b43/radio_2055.h | 259 - drivers/net/wireless/b43/radio_2056.c | 9116 ----- drivers/net/wireless/b43/radio_2056.h | 1100 - drivers/net/wireless/b43/radio_2057.c | 141 - drivers/net/wireless/b43/radio_2057.h | 430 - drivers/net/wireless/b43/radio_2059.c | 176 - drivers/net/wireless/b43/radio_2059.h | 54 - drivers/net/wireless/b43/rfkill.c | 70 - drivers/net/wireless/b43/rfkill.h | 11 - drivers/net/wireless/b43/sdio.c | 207 - drivers/net/wireless/b43/sdio.h | 45 - drivers/net/wireless/b43/sysfs.c | 155 - drivers/net/wireless/b43/sysfs.h | 9 - drivers/net/wireless/b43/tables.c | 466 - drivers/net/wireless/b43/tables.h | 34 - drivers/net/wireless/b43/tables_lpphy.c | 2456 -- drivers/net/wireless/b43/tables_lpphy.h | 44 - drivers/net/wireless/b43/tables_nphy.c | 3311 -- drivers/net/wireless/b43/tables_nphy.h | 216 - drivers/net/wireless/b43/tables_phy_ht.c | 836 - drivers/net/wireless/b43/tables_phy_ht.h | 26 - drivers/net/wireless/b43/tables_phy_lcn.c | 724 - drivers/net/wireless/b43/tables_phy_lcn.h | 24 - drivers/net/wireless/b43/wa.c | 634 - drivers/net/wireless/b43/wa.h | 7 - drivers/net/wireless/b43/xmit.c | 942 - drivers/net/wireless/b43/xmit.h | 412 - drivers/net/wireless/b43legacy/Kconfig | 104 - drivers/net/wireless/b43legacy/Makefile | 19 - drivers/net/wireless/b43legacy/b43legacy.h | 858 - drivers/net/wireless/b43legacy/debugfs.c | 500 - drivers/net/wireless/b43legacy/debugfs.h | 89 - drivers/net/wireless/b43legacy/dma.c | 1463 - drivers/net/wireless/b43legacy/dma.h | 231 - drivers/net/wireless/b43legacy/ilt.c | 336 - drivers/net/wireless/b43legacy/ilt.h | 34 - drivers/net/wireless/b43legacy/leds.c | 243 - drivers/net/wireless/b43legacy/leds.h | 63 - drivers/net/wireless/b43legacy/main.c | 4063 --- drivers/net/wireless/b43legacy/main.h | 127 - drivers/net/wireless/b43legacy/phy.c | 2258 -- drivers/net/wireless/b43legacy/phy.h | 209 - drivers/net/wireless/b43legacy/pio.c | 695 - drivers/net/wireless/b43legacy/pio.h | 158 - drivers/net/wireless/b43legacy/radio.c | 2162 -- drivers/net/wireless/b43legacy/radio.h | 98 - drivers/net/wireless/b43legacy/rfkill.c | 91 - drivers/net/wireless/b43legacy/rfkill.h | 11 - drivers/net/wireless/b43legacy/sysfs.c | 238 - drivers/net/wireless/b43legacy/sysfs.h | 9 - drivers/net/wireless/b43legacy/xmit.c | 664 - drivers/net/wireless/b43legacy/xmit.h | 261 - drivers/net/wireless/brcm80211/Kconfig | 73 - drivers/net/wireless/brcm80211/Makefile | 23 - .../net/wireless/brcm80211/brcmfmac/Makefile | 41 - .../net/wireless/brcm80211/brcmfmac/bcmsdh.c | 555 - .../brcm80211/brcmfmac/bcmsdh_sdmmc.c | 685 - drivers/net/wireless/brcm80211/brcmfmac/dhd.h | 594 - .../net/wireless/brcm80211/brcmfmac/dhd_bus.h | 152 - .../net/wireless/brcm80211/brcmfmac/dhd_cdc.c | 373 - .../wireless/brcm80211/brcmfmac/dhd_common.c | 375 - .../net/wireless/brcm80211/brcmfmac/dhd_dbg.c | 125 - .../net/wireless/brcm80211/brcmfmac/dhd_dbg.h | 153 - .../wireless/brcm80211/brcmfmac/dhd_linux.c | 1028 - .../wireless/brcm80211/brcmfmac/dhd_proto.h | 42 - .../wireless/brcm80211/brcmfmac/dhd_sdio.c | 4033 --- .../net/wireless/brcm80211/brcmfmac/fweh.c | 446 - .../net/wireless/brcm80211/brcmfmac/fweh.h | 219 - .../net/wireless/brcm80211/brcmfmac/fwil.c | 347 - .../net/wireless/brcm80211/brcmfmac/fwil.h | 39 - .../wireless/brcm80211/brcmfmac/fwil_types.h | 66 - drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 2277 -- drivers/net/wireless/brcm80211/brcmfmac/p2p.h | 183 - .../wireless/brcm80211/brcmfmac/sdio_chip.c | 652 - .../wireless/brcm80211/brcmfmac/sdio_chip.h | 136 - .../wireless/brcm80211/brcmfmac/sdio_host.h | 274 - drivers/net/wireless/brcm80211/brcmfmac/usb.c | 1543 - drivers/net/wireless/brcm80211/brcmfmac/usb.h | 53 - .../net/wireless/brcm80211/brcmfmac/usb_rdl.h | 75 - .../wireless/brcm80211/brcmfmac/wl_cfg80211.c | 5116 --- .../wireless/brcm80211/brcmfmac/wl_cfg80211.h | 501 - .../net/wireless/brcm80211/brcmsmac/Makefile | 49 - .../net/wireless/brcm80211/brcmsmac/aiutils.c | 739 - .../net/wireless/brcm80211/brcmsmac/aiutils.h | 232 - .../net/wireless/brcm80211/brcmsmac/ampdu.c | 1144 - .../net/wireless/brcm80211/brcmsmac/ampdu.h | 53 - .../net/wireless/brcm80211/brcmsmac/antsel.c | 309 - .../net/wireless/brcm80211/brcmsmac/antsel.h | 29 - .../brcm80211/brcmsmac/brcms_trace_events.c | 23 - .../brcm80211/brcmsmac/brcms_trace_events.h | 255 - .../net/wireless/brcm80211/brcmsmac/channel.c | 782 - .../net/wireless/brcm80211/brcmsmac/channel.h | 51 - drivers/net/wireless/brcm80211/brcmsmac/d11.h | 1901 - .../net/wireless/brcm80211/brcmsmac/debug.c | 156 - .../net/wireless/brcm80211/brcmsmac/debug.h | 76 - drivers/net/wireless/brcm80211/brcmsmac/dma.c | 1557 - drivers/net/wireless/brcm80211/brcmsmac/dma.h | 125 - .../wireless/brcm80211/brcmsmac/mac80211_if.c | 1634 - .../wireless/brcm80211/brcmsmac/mac80211_if.h | 109 - .../net/wireless/brcm80211/brcmsmac/main.c | 8020 ----- .../net/wireless/brcm80211/brcmsmac/main.h | 676 - .../wireless/brcm80211/brcmsmac/phy/phy_cmn.c | 2967 -- .../wireless/brcm80211/brcmsmac/phy/phy_hal.h | 299 - .../wireless/brcm80211/brcmsmac/phy/phy_int.h | 1162 - .../wireless/brcm80211/brcmsmac/phy/phy_lcn.c | 5248 --- .../wireless/brcm80211/brcmsmac/phy/phy_lcn.h | 121 - .../wireless/brcm80211/brcmsmac/phy/phy_n.c | 28733 ---------------- .../brcm80211/brcmsmac/phy/phy_qmath.c | 308 - .../brcm80211/brcmsmac/phy/phy_qmath.h | 42 - .../brcm80211/brcmsmac/phy/phy_radio.h | 1533 - .../brcm80211/brcmsmac/phy/phyreg_n.h | 167 - .../brcm80211/brcmsmac/phy/phytbl_lcn.c | 3250 -- .../brcm80211/brcmsmac/phy/phytbl_lcn.h | 54 - .../brcm80211/brcmsmac/phy/phytbl_n.c | 10630 ------ .../brcm80211/brcmsmac/phy/phytbl_n.h | 50 - .../wireless/brcm80211/brcmsmac/phy_shim.c | 216 - .../wireless/brcm80211/brcmsmac/phy_shim.h | 179 - drivers/net/wireless/brcm80211/brcmsmac/pmu.c | 219 - drivers/net/wireless/brcm80211/brcmsmac/pmu.h | 32 - drivers/net/wireless/brcm80211/brcmsmac/pub.h | 335 - .../net/wireless/brcm80211/brcmsmac/rate.c | 514 - .../net/wireless/brcm80211/brcmsmac/rate.h | 249 - drivers/net/wireless/brcm80211/brcmsmac/scb.h | 81 - drivers/net/wireless/brcm80211/brcmsmac/stf.c | 440 - drivers/net/wireless/brcm80211/brcmsmac/stf.h | 42 - .../net/wireless/brcm80211/brcmsmac/types.h | 303 - .../brcm80211/brcmsmac/ucode_loader.c | 109 - .../brcm80211/brcmsmac/ucode_loader.h | 58 - .../net/wireless/brcm80211/brcmutil/Makefile | 28 - .../net/wireless/brcm80211/brcmutil/utils.c | 280 - .../wireless/brcm80211/include/brcm_hw_ids.h | 43 - .../wireless/brcm80211/include/brcmu_utils.h | 196 - .../wireless/brcm80211/include/brcmu_wifi.h | 234 - .../wireless/brcm80211/include/chipcommon.h | 286 - drivers/net/wireless/brcm80211/include/defs.h | 108 - drivers/net/wireless/brcm80211/include/soc.h | 36 - drivers/net/wireless/cw1200/.gitignore | 10 - drivers/net/wireless/cw1200/Kconfig | 46 - drivers/net/wireless/cw1200/Makefile | 25 - drivers/net/wireless/cw1200/bh.c | 656 - drivers/net/wireless/cw1200/bh.h | 28 - drivers/net/wireless/cw1200/cw1200.h | 340 - drivers/net/wireless/cw1200/cw1200_sagrad.c | 145 - drivers/net/wireless/cw1200/cw1200_sdio.c | 415 - drivers/net/wireless/cw1200/cw1200_spi.c | 480 - drivers/net/wireless/cw1200/debug.c | 664 - drivers/net/wireless/cw1200/debug.h | 98 - drivers/net/wireless/cw1200/fwio.c | 525 - drivers/net/wireless/cw1200/fwio.h | 39 - drivers/net/wireless/cw1200/hwio.c | 311 - drivers/net/wireless/cw1200/hwio.h | 247 - drivers/net/wireless/cw1200/itp.c | 730 - drivers/net/wireless/cw1200/itp.h | 144 - drivers/net/wireless/cw1200/main.c | 618 - drivers/net/wireless/cw1200/pm.c | 367 - drivers/net/wireless/cw1200/pm.h | 38 - drivers/net/wireless/cw1200/queue.c | 583 - drivers/net/wireless/cw1200/queue.h | 116 - drivers/net/wireless/cw1200/sbus.h | 37 - drivers/net/wireless/cw1200/scan.c | 461 - drivers/net/wireless/cw1200/scan.h | 56 - drivers/net/wireless/cw1200/sta.c | 2404 -- drivers/net/wireless/cw1200/sta.h | 127 - drivers/net/wireless/cw1200/txrx.c | 1475 - drivers/net/wireless/cw1200/txrx.h | 106 - drivers/net/wireless/cw1200/wsm.c | 1884 - drivers/net/wireless/cw1200/wsm.h | 1879 - drivers/net/wireless/ipw2x00/Kconfig | 197 - drivers/net/wireless/ipw2x00/Makefile | 14 - drivers/net/wireless/ipw2x00/ipw.h | 23 - drivers/net/wireless/ipw2x00/ipw2100.c | 8682 ----- drivers/net/wireless/ipw2x00/ipw2100.h | 1156 - drivers/net/wireless/ipw2x00/ipw2200.c | 12158 ------- drivers/net/wireless/ipw2x00/ipw2200.h | 2002 -- drivers/net/wireless/ipw2x00/libipw.h | 1024 - drivers/net/wireless/ipw2x00/libipw_geo.c | 193 - drivers/net/wireless/ipw2x00/libipw_module.c | 335 - drivers/net/wireless/ipw2x00/libipw_rx.c | 1797 - drivers/net/wireless/ipw2x00/libipw_tx.c | 536 - drivers/net/wireless/ipw2x00/libipw_wx.c | 744 - drivers/net/wireless/iwlegacy/3945-debug.c | 511 - drivers/net/wireless/iwlegacy/3945-mac.c | 3971 --- drivers/net/wireless/iwlegacy/3945-rs.c | 979 - drivers/net/wireless/iwlegacy/3945.c | 2719 -- drivers/net/wireless/iwlegacy/3945.h | 601 - drivers/net/wireless/iwlegacy/4965-calib.c | 934 - drivers/net/wireless/iwlegacy/4965-debug.c | 752 - drivers/net/wireless/iwlegacy/4965-mac.c | 6867 ---- drivers/net/wireless/iwlegacy/4965-rs.c | 2835 -- drivers/net/wireless/iwlegacy/4965.c | 1951 -- drivers/net/wireless/iwlegacy/4965.h | 1284 - drivers/net/wireless/iwlegacy/Kconfig | 100 - drivers/net/wireless/iwlegacy/Makefile | 17 - drivers/net/wireless/iwlegacy/commands.h | 3377 -- drivers/net/wireless/iwlegacy/common.c | 5536 --- drivers/net/wireless/iwlegacy/common.h | 3047 -- drivers/net/wireless/iwlegacy/csr.h | 419 - drivers/net/wireless/iwlegacy/debug.c | 1430 - drivers/net/wireless/iwlegacy/iwl-spectrum.h | 92 - drivers/net/wireless/iwlegacy/prph.h | 522 - drivers/net/wireless/iwlwifi/Kconfig | 147 - drivers/net/wireless/iwlwifi/Makefile | 22 - drivers/net/wireless/iwlwifi/dvm/Makefile | 13 - drivers/net/wireless/iwlwifi/dvm/agn.h | 528 - drivers/net/wireless/iwlwifi/dvm/calib.c | 1114 - drivers/net/wireless/iwlwifi/dvm/calib.h | 74 - drivers/net/wireless/iwlwifi/dvm/commands.h | 4014 --- drivers/net/wireless/iwlwifi/dvm/debugfs.c | 2439 -- drivers/net/wireless/iwlwifi/dvm/dev.h | 917 - drivers/net/wireless/iwlwifi/dvm/devices.c | 597 - drivers/net/wireless/iwlwifi/dvm/led.c | 230 - drivers/net/wireless/iwlwifi/dvm/led.h | 43 - drivers/net/wireless/iwlwifi/dvm/lib.c | 1292 - drivers/net/wireless/iwlwifi/dvm/mac80211.c | 1771 - drivers/net/wireless/iwlwifi/dvm/main.c | 2172 -- drivers/net/wireless/iwlwifi/dvm/power.c | 387 - drivers/net/wireless/iwlwifi/dvm/power.h | 47 - drivers/net/wireless/iwlwifi/dvm/rs.c | 3369 -- drivers/net/wireless/iwlwifi/dvm/rs.h | 433 - drivers/net/wireless/iwlwifi/dvm/rx.c | 1151 - drivers/net/wireless/iwlwifi/dvm/rxon.c | 1576 - drivers/net/wireless/iwlwifi/dvm/scan.c | 1188 - drivers/net/wireless/iwlwifi/dvm/sta.c | 1474 - drivers/net/wireless/iwlwifi/dvm/testmode.c | 471 - drivers/net/wireless/iwlwifi/dvm/tt.c | 691 - drivers/net/wireless/iwlwifi/dvm/tt.h | 128 - drivers/net/wireless/iwlwifi/dvm/tx.c | 1407 - drivers/net/wireless/iwlwifi/dvm/ucode.c | 463 - drivers/net/wireless/iwlwifi/iwl-agn-hw.h | 119 - drivers/net/wireless/iwlwifi/iwl-config.h | 278 - drivers/net/wireless/iwlwifi/iwl-csr.h | 475 - drivers/net/wireless/iwlwifi/iwl-debug.c | 152 - drivers/net/wireless/iwlwifi/iwl-debug.h | 187 - drivers/net/wireless/iwlwifi/iwl-devtrace.c | 50 - drivers/net/wireless/iwlwifi/iwl-devtrace.h | 514 - drivers/net/wireless/iwlwifi/iwl-drv.c | 1272 - drivers/net/wireless/iwlwifi/iwl-drv.h | 126 - .../net/wireless/iwlwifi/iwl-eeprom-parse.c | 931 - .../net/wireless/iwlwifi/iwl-eeprom-parse.h | 138 - .../net/wireless/iwlwifi/iwl-eeprom-read.c | 463 - .../net/wireless/iwlwifi/iwl-eeprom-read.h | 70 - drivers/net/wireless/iwlwifi/iwl-fh.h | 540 - drivers/net/wireless/iwlwifi/iwl-fw-file.h | 156 - drivers/net/wireless/iwlwifi/iwl-fw.h | 191 - drivers/net/wireless/iwlwifi/iwl-io.c | 167 - drivers/net/wireless/iwlwifi/iwl-io.h | 80 - drivers/net/wireless/iwlwifi/iwl-modparams.h | 126 - drivers/net/wireless/iwlwifi/iwl-notif-wait.c | 190 - drivers/net/wireless/iwlwifi/iwl-notif-wait.h | 138 - drivers/net/wireless/iwlwifi/iwl-nvm-parse.c | 346 - drivers/net/wireless/iwlwifi/iwl-nvm-parse.h | 80 - drivers/net/wireless/iwlwifi/iwl-op-mode.h | 231 - drivers/net/wireless/iwlwifi/iwl-phy-db.c | 498 - drivers/net/wireless/iwlwifi/iwl-phy-db.h | 82 - drivers/net/wireless/iwlwifi/iwl-prph.h | 263 - drivers/net/wireless/iwlwifi/iwl-test.c | 852 - drivers/net/wireless/iwlwifi/iwl-test.h | 161 - drivers/net/wireless/iwlwifi/iwl-testmode.h | 309 - drivers/net/wireless/iwlwifi/iwl-trans.h | 817 - drivers/net/wireless/iwlwifi/mvm/Makefile | 10 - drivers/net/wireless/iwlwifi/mvm/binding.c | 197 - drivers/net/wireless/iwlwifi/mvm/d3.c | 1009 - drivers/net/wireless/iwlwifi/mvm/debugfs.c | 378 - drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h | 282 - drivers/net/wireless/iwlwifi/mvm/fw-api-mac.h | 369 - .../net/wireless/iwlwifi/mvm/fw-api-power.h | 140 - drivers/net/wireless/iwlwifi/mvm/fw-api-rs.h | 312 - .../net/wireless/iwlwifi/mvm/fw-api-scan.h | 561 - drivers/net/wireless/iwlwifi/mvm/fw-api-sta.h | 380 - drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h | 580 - drivers/net/wireless/iwlwifi/mvm/fw-api.h | 954 - drivers/net/wireless/iwlwifi/mvm/fw.c | 517 - drivers/net/wireless/iwlwifi/mvm/led.c | 136 - drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 992 - drivers/net/wireless/iwlwifi/mvm/mac80211.c | 1323 - drivers/net/wireless/iwlwifi/mvm/mvm.h | 505 - drivers/net/wireless/iwlwifi/mvm/nvm.c | 311 - drivers/net/wireless/iwlwifi/mvm/ops.c | 690 - drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c | 292 - drivers/net/wireless/iwlwifi/mvm/power.c | 207 - drivers/net/wireless/iwlwifi/mvm/quota.c | 197 - drivers/net/wireless/iwlwifi/mvm/rs.c | 3080 -- drivers/net/wireless/iwlwifi/mvm/rs.h | 393 - drivers/net/wireless/iwlwifi/mvm/rx.c | 365 - drivers/net/wireless/iwlwifi/mvm/scan.c | 442 - drivers/net/wireless/iwlwifi/mvm/sta.c | 1251 - drivers/net/wireless/iwlwifi/mvm/sta.h | 374 - drivers/net/wireless/iwlwifi/mvm/time-event.c | 519 - drivers/net/wireless/iwlwifi/mvm/time-event.h | 214 - drivers/net/wireless/iwlwifi/mvm/tx.c | 912 - drivers/net/wireless/iwlwifi/mvm/utils.c | 472 - drivers/net/wireless/iwlwifi/pcie/1000.c | 141 - drivers/net/wireless/iwlwifi/pcie/2000.c | 243 - drivers/net/wireless/iwlwifi/pcie/5000.c | 180 - drivers/net/wireless/iwlwifi/pcie/6000.c | 403 - drivers/net/wireless/iwlwifi/pcie/7000.c | 111 - drivers/net/wireless/iwlwifi/pcie/cfg.h | 115 - drivers/net/wireless/iwlwifi/pcie/drv.c | 393 - drivers/net/wireless/iwlwifi/pcie/internal.h | 482 - drivers/net/wireless/iwlwifi/pcie/rx.c | 1306 - drivers/net/wireless/iwlwifi/pcie/trans.c | 1611 - drivers/net/wireless/iwlwifi/pcie/tx.c | 1731 - drivers/net/wireless/libertas/Kconfig | 45 - drivers/net/wireless/libertas/Makefile | 21 - drivers/net/wireless/libertas/cfg.c | 2225 -- drivers/net/wireless/libertas/cfg.h | 20 - drivers/net/wireless/libertas/cmd.c | 1724 - drivers/net/wireless/libertas/cmd.h | 140 - drivers/net/wireless/libertas/cmdresp.c | 350 - drivers/net/wireless/libertas/debugfs.c | 986 - drivers/net/wireless/libertas/debugfs.h | 10 - drivers/net/wireless/libertas/decl.h | 82 - drivers/net/wireless/libertas/defs.h | 401 - drivers/net/wireless/libertas/dev.h | 211 - drivers/net/wireless/libertas/ethtool.c | 120 - drivers/net/wireless/libertas/firmware.c | 222 - drivers/net/wireless/libertas/host.h | 978 - drivers/net/wireless/libertas/if_cs.c | 1115 - drivers/net/wireless/libertas/if_sdio.c | 1465 - drivers/net/wireless/libertas/if_sdio.h | 52 - drivers/net/wireless/libertas/if_spi.c | 1330 - drivers/net/wireless/libertas/if_spi.h | 206 - drivers/net/wireless/libertas/if_usb.c | 1027 - drivers/net/wireless/libertas/if_usb.h | 106 - drivers/net/wireless/libertas/main.c | 1247 - drivers/net/wireless/libertas/mesh.c | 1190 - drivers/net/wireless/libertas/mesh.h | 77 - drivers/net/wireless/libertas/radiotap.h | 44 - drivers/net/wireless/libertas/rx.c | 286 - drivers/net/wireless/libertas/tx.c | 207 - drivers/net/wireless/libertas/types.h | 268 - drivers/net/wireless/libertas_tf/Makefile | 6 - drivers/net/wireless/libertas_tf/cmd.c | 809 - drivers/net/wireless/libertas_tf/deb_defs.h | 104 - drivers/net/wireless/libertas_tf/if_usb.c | 934 - drivers/net/wireless/libertas_tf/if_usb.h | 98 - .../net/wireless/libertas_tf/libertas_tf.h | 519 - drivers/net/wireless/libertas_tf/main.c | 787 - drivers/net/wireless/mac80211_hwsim.c | 2515 -- drivers/net/wireless/mac80211_hwsim.h | 133 - drivers/net/wireless/mwifiex/11ac.c | 261 - drivers/net/wireless/mwifiex/11ac.h | 26 - drivers/net/wireless/mwifiex/11n.c | 681 - drivers/net/wireless/mwifiex/11n.h | 168 - drivers/net/wireless/mwifiex/11n_aggr.c | 315 - drivers/net/wireless/mwifiex/11n_aggr.h | 33 - drivers/net/wireless/mwifiex/11n_rxreorder.c | 667 - drivers/net/wireless/mwifiex/11n_rxreorder.h | 82 - drivers/net/wireless/mwifiex/Kconfig | 42 - drivers/net/wireless/mwifiex/Makefile | 52 - drivers/net/wireless/mwifiex/cfg80211.c | 2418 -- drivers/net/wireless/mwifiex/cfg80211.h | 29 - drivers/net/wireless/mwifiex/cfp.c | 503 - drivers/net/wireless/mwifiex/cmdevt.c | 1521 - drivers/net/wireless/mwifiex/debugfs.c | 749 - drivers/net/wireless/mwifiex/decl.h | 147 - drivers/net/wireless/mwifiex/fw.h | 1626 - drivers/net/wireless/mwifiex/ie.c | 443 - drivers/net/wireless/mwifiex/init.c | 814 - drivers/net/wireless/mwifiex/ioctl.h | 369 - drivers/net/wireless/mwifiex/join.c | 1438 - drivers/net/wireless/mwifiex/main.c | 921 - drivers/net/wireless/mwifiex/main.h | 1113 - drivers/net/wireless/mwifiex/pcie.c | 2421 -- drivers/net/wireless/mwifiex/pcie.h | 320 - drivers/net/wireless/mwifiex/scan.c | 2085 -- drivers/net/wireless/mwifiex/sdio.c | 1843 - drivers/net/wireless/mwifiex/sdio.h | 328 - drivers/net/wireless/mwifiex/sta_cmd.c | 1426 - drivers/net/wireless/mwifiex/sta_cmdresp.c | 986 - drivers/net/wireless/mwifiex/sta_event.c | 437 - drivers/net/wireless/mwifiex/sta_ioctl.c | 1391 - drivers/net/wireless/mwifiex/sta_rx.c | 209 - drivers/net/wireless/mwifiex/sta_tx.c | 218 - drivers/net/wireless/mwifiex/txrx.c | 199 - drivers/net/wireless/mwifiex/uap_cmd.c | 665 - drivers/net/wireless/mwifiex/uap_event.c | 297 - drivers/net/wireless/mwifiex/uap_txrx.c | 333 - drivers/net/wireless/mwifiex/usb.c | 1041 - drivers/net/wireless/mwifiex/usb.h | 99 - drivers/net/wireless/mwifiex/util.c | 253 - drivers/net/wireless/mwifiex/util.h | 37 - drivers/net/wireless/mwifiex/wmm.c | 1326 - drivers/net/wireless/mwifiex/wmm.h | 112 - drivers/net/wireless/mwl8k.c | 6164 ---- drivers/net/wireless/orinoco/Kconfig | 141 - drivers/net/wireless/orinoco/Makefile | 17 - drivers/net/wireless/orinoco/airport.c | 267 - drivers/net/wireless/orinoco/cfg.c | 290 - drivers/net/wireless/orinoco/cfg.h | 15 - drivers/net/wireless/orinoco/fw.c | 387 - drivers/net/wireless/orinoco/fw.h | 21 - drivers/net/wireless/orinoco/hermes.c | 778 - drivers/net/wireless/orinoco/hermes.h | 520 - drivers/net/wireless/orinoco/hermes_dld.c | 477 - drivers/net/wireless/orinoco/hermes_dld.h | 52 - drivers/net/wireless/orinoco/hermes_rid.h | 165 - drivers/net/wireless/orinoco/hw.c | 1360 - drivers/net/wireless/orinoco/hw.h | 62 - drivers/net/wireless/orinoco/main.c | 2435 -- drivers/net/wireless/orinoco/main.h | 50 - drivers/net/wireless/orinoco/mic.c | 79 - drivers/net/wireless/orinoco/mic.h | 22 - drivers/net/wireless/orinoco/orinoco.h | 256 - drivers/net/wireless/orinoco/orinoco_cs.c | 486 - drivers/net/wireless/orinoco/orinoco_nortel.c | 322 - drivers/net/wireless/orinoco/orinoco_pci.c | 265 - drivers/net/wireless/orinoco/orinoco_pci.h | 68 - drivers/net/wireless/orinoco/orinoco_plx.c | 370 - drivers/net/wireless/orinoco/orinoco_tmd.c | 248 - drivers/net/wireless/orinoco/orinoco_usb.c | 1770 - drivers/net/wireless/orinoco/scan.c | 248 - drivers/net/wireless/orinoco/scan.h | 21 - drivers/net/wireless/orinoco/spectrum_cs.c | 462 - drivers/net/wireless/orinoco/wext.c | 1427 - drivers/net/wireless/orinoco/wext.h | 13 - drivers/net/wireless/p54/Kconfig | 71 - drivers/net/wireless/p54/Makefile | 7 - drivers/net/wireless/p54/eeprom.c | 983 - drivers/net/wireless/p54/eeprom.h | 245 - drivers/net/wireless/p54/fwio.c | 763 - drivers/net/wireless/p54/led.c | 162 - drivers/net/wireless/p54/lmac.h | 562 - drivers/net/wireless/p54/main.c | 885 - drivers/net/wireless/p54/net2280.h | 452 - drivers/net/wireless/p54/p54.h | 281 - drivers/net/wireless/p54/p54pci.c | 710 - drivers/net/wireless/p54/p54pci.h | 112 - drivers/net/wireless/p54/p54spi.c | 742 - drivers/net/wireless/p54/p54spi.h | 125 - drivers/net/wireless/p54/p54spi_eeprom.h | 679 - drivers/net/wireless/p54/p54usb.c | 1148 - drivers/net/wireless/p54/p54usb.h | 151 - drivers/net/wireless/p54/txrx.c | 941 - drivers/net/wireless/rndis_wlan.c | 3772 -- drivers/net/wireless/rt2x00/Kconfig | 228 - drivers/net/wireless/rt2x00/Makefile | 22 - drivers/net/wireless/rt2x00/rt2400pci.c | 1845 - drivers/net/wireless/rt2x00/rt2400pci.h | 963 - drivers/net/wireless/rt2x00/rt2500pci.c | 2133 -- drivers/net/wireless/rt2x00/rt2500pci.h | 1237 - drivers/net/wireless/rt2x00/rt2500usb.c | 1997 -- drivers/net/wireless/rt2x00/rt2500usb.h | 857 - drivers/net/wireless/rt2x00/rt2800.h | 2692 -- drivers/net/wireless/rt2x00/rt2800lib.c | 5593 --- drivers/net/wireless/rt2x00/rt2800lib.h | 229 - drivers/net/wireless/rt2x00/rt2800pci.c | 1249 - drivers/net/wireless/rt2x00/rt2800pci.h | 141 - drivers/net/wireless/rt2x00/rt2800usb.c | 1322 - drivers/net/wireless/rt2x00/rt2800usb.h | 112 - drivers/net/wireless/rt2x00/rt2x00.h | 1380 - drivers/net/wireless/rt2x00/rt2x00config.c | 287 - drivers/net/wireless/rt2x00/rt2x00crypto.c | 258 - drivers/net/wireless/rt2x00/rt2x00debug.c | 802 - drivers/net/wireless/rt2x00/rt2x00debug.h | 71 - drivers/net/wireless/rt2x00/rt2x00dev.c | 1518 - drivers/net/wireless/rt2x00/rt2x00dump.h | 129 - drivers/net/wireless/rt2x00/rt2x00firmware.c | 132 - drivers/net/wireless/rt2x00/rt2x00leds.c | 246 - drivers/net/wireless/rt2x00/rt2x00leds.h | 46 - drivers/net/wireless/rt2x00/rt2x00lib.h | 470 - drivers/net/wireless/rt2x00/rt2x00link.c | 520 - drivers/net/wireless/rt2x00/rt2x00mac.c | 854 - drivers/net/wireless/rt2x00/rt2x00pci.c | 402 - drivers/net/wireless/rt2x00/rt2x00pci.h | 139 - drivers/net/wireless/rt2x00/rt2x00queue.c | 1355 - drivers/net/wireless/rt2x00/rt2x00queue.h | 695 - drivers/net/wireless/rt2x00/rt2x00reg.h | 279 - drivers/net/wireless/rt2x00/rt2x00soc.c | 162 - drivers/net/wireless/rt2x00/rt2x00soc.h | 42 - drivers/net/wireless/rt2x00/rt2x00usb.c | 882 - drivers/net/wireless/rt2x00/rt2x00usb.h | 442 - drivers/net/wireless/rt2x00/rt61pci.c | 3102 -- drivers/net/wireless/rt2x00/rt61pci.h | 1502 - drivers/net/wireless/rt2x00/rt73usb.c | 2544 -- drivers/net/wireless/rt2x00/rt73usb.h | 1081 - drivers/net/wireless/rtl818x/Kconfig | 88 - drivers/net/wireless/rtl818x/Makefile | 2 - drivers/net/wireless/rtl818x/rtl8180/Makefile | 5 - drivers/net/wireless/rtl818x/rtl8180/dev.c | 1189 - .../net/wireless/rtl818x/rtl8180/grf5101.c | 190 - .../net/wireless/rtl818x/rtl8180/grf5101.h | 28 - .../net/wireless/rtl818x/rtl8180/max2820.c | 169 - .../net/wireless/rtl818x/rtl8180/max2820.h | 28 - .../net/wireless/rtl818x/rtl8180/rtl8180.h | 130 - .../net/wireless/rtl818x/rtl8180/rtl8225.c | 791 - .../net/wireless/rtl818x/rtl8180/rtl8225.h | 23 - drivers/net/wireless/rtl818x/rtl8180/sa2400.c | 228 - drivers/net/wireless/rtl818x/rtl8180/sa2400.h | 36 - drivers/net/wireless/rtl818x/rtl8187/Makefile | 5 - drivers/net/wireless/rtl818x/rtl8187/dev.c | 1681 - drivers/net/wireless/rtl818x/rtl8187/leds.c | 245 - drivers/net/wireless/rtl818x/rtl8187/leds.h | 59 - drivers/net/wireless/rtl818x/rtl8187/rfkill.c | 64 - drivers/net/wireless/rtl818x/rtl8187/rfkill.h | 8 - .../net/wireless/rtl818x/rtl8187/rtl8187.h | 282 - .../net/wireless/rtl818x/rtl8187/rtl8225.c | 961 - .../net/wireless/rtl818x/rtl8187/rtl8225.h | 44 - drivers/net/wireless/rtl818x/rtl818x.h | 244 - drivers/net/wireless/rtlwifi/Kconfig | 71 - drivers/net/wireless/rtlwifi/Makefile | 30 - drivers/net/wireless/rtlwifi/base.c | 1606 - drivers/net/wireless/rtlwifi/base.h | 147 - drivers/net/wireless/rtlwifi/cam.c | 348 - drivers/net/wireless/rtlwifi/cam.h | 56 - drivers/net/wireless/rtlwifi/core.c | 1199 - drivers/net/wireless/rtlwifi/core.h | 45 - drivers/net/wireless/rtlwifi/debug.c | 50 - drivers/net/wireless/rtlwifi/debug.h | 235 - drivers/net/wireless/rtlwifi/efuse.c | 1208 - drivers/net/wireless/rtlwifi/efuse.h | 124 - drivers/net/wireless/rtlwifi/pci.c | 2044 -- drivers/net/wireless/rtlwifi/pci.h | 278 - drivers/net/wireless/rtlwifi/ps.c | 644 - drivers/net/wireless/rtlwifi/ps.h | 51 - drivers/net/wireless/rtlwifi/rc.c | 282 - drivers/net/wireless/rtlwifi/rc.h | 47 - drivers/net/wireless/rtlwifi/regd.c | 430 - drivers/net/wireless/rtlwifi/regd.h | 61 - .../net/wireless/rtlwifi/rtl8192c/Makefile | 9 - .../net/wireless/rtlwifi/rtl8192c/dm_common.c | 1762 - .../net/wireless/rtlwifi/rtl8192c/dm_common.h | 171 - .../net/wireless/rtlwifi/rtl8192c/fw_common.c | 810 - .../net/wireless/rtlwifi/rtl8192c/fw_common.h | 99 - drivers/net/wireless/rtlwifi/rtl8192c/main.c | 40 - .../wireless/rtlwifi/rtl8192c/phy_common.c | 1953 -- .../wireless/rtlwifi/rtl8192c/phy_common.h | 258 - .../net/wireless/rtlwifi/rtl8192ce/Makefile | 13 - drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 253 - drivers/net/wireless/rtlwifi/rtl8192ce/dm.c | 109 - drivers/net/wireless/rtlwifi/rtl8192ce/dm.h | 163 - drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 2340 -- drivers/net/wireless/rtlwifi/rtl8192ce/hw.h | 78 - drivers/net/wireless/rtlwifi/rtl8192ce/led.c | 151 - drivers/net/wireless/rtlwifi/rtl8192ce/led.h | 38 - drivers/net/wireless/rtlwifi/rtl8192ce/phy.c | 622 - drivers/net/wireless/rtlwifi/rtl8192ce/phy.h | 262 - drivers/net/wireless/rtlwifi/rtl8192ce/reg.h | 2091 -- drivers/net/wireless/rtlwifi/rtl8192ce/rf.c | 509 - drivers/net/wireless/rtlwifi/rtl8192ce/rf.h | 44 - drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 393 - drivers/net/wireless/rtlwifi/rtl8192ce/sw.h | 41 - .../net/wireless/rtlwifi/rtl8192ce/table.c | 1224 - .../net/wireless/rtlwifi/rtl8192ce/table.h | 58 - drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 914 - drivers/net/wireless/rtlwifi/rtl8192ce/trx.h | 729 - .../net/wireless/rtlwifi/rtl8192cu/Makefile | 14 - drivers/net/wireless/rtlwifi/rtl8192cu/def.h | 58 - drivers/net/wireless/rtlwifi/rtl8192cu/dm.c | 107 - drivers/net/wireless/rtlwifi/rtl8192cu/dm.h | 32 - drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | 2291 -- drivers/net/wireless/rtlwifi/rtl8192cu/hw.h | 117 - drivers/net/wireless/rtlwifi/rtl8192cu/led.c | 141 - drivers/net/wireless/rtlwifi/rtl8192cu/led.h | 37 - drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | 1111 - drivers/net/wireless/rtlwifi/rtl8192cu/mac.h | 174 - drivers/net/wireless/rtlwifi/rtl8192cu/phy.c | 593 - drivers/net/wireless/rtlwifi/rtl8192cu/phy.h | 50 - drivers/net/wireless/rtlwifi/rtl8192cu/reg.h | 30 - drivers/net/wireless/rtlwifi/rtl8192cu/rf.c | 486 - drivers/net/wireless/rtlwifi/rtl8192cu/rf.h | 51 - drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | 392 - drivers/net/wireless/rtlwifi/rtl8192cu/sw.h | 53 - .../net/wireless/rtlwifi/rtl8192cu/table.c | 1888 - .../net/wireless/rtlwifi/rtl8192cu/table.h | 71 - drivers/net/wireless/rtlwifi/rtl8192cu/trx.c | 688 - drivers/net/wireless/rtlwifi/rtl8192cu/trx.h | 435 - .../net/wireless/rtlwifi/rtl8192de/Makefile | 14 - drivers/net/wireless/rtlwifi/rtl8192de/def.h | 271 - drivers/net/wireless/rtlwifi/rtl8192de/dm.c | 1338 - drivers/net/wireless/rtlwifi/rtl8192de/dm.h | 161 - drivers/net/wireless/rtlwifi/rtl8192de/fw.c | 780 - drivers/net/wireless/rtlwifi/rtl8192de/fw.h | 155 - drivers/net/wireless/rtlwifi/rtl8192de/hw.c | 2323 -- drivers/net/wireless/rtlwifi/rtl8192de/hw.h | 66 - drivers/net/wireless/rtlwifi/rtl8192de/led.c | 159 - drivers/net/wireless/rtlwifi/rtl8192de/led.h | 38 - drivers/net/wireless/rtlwifi/rtl8192de/phy.c | 3695 -- drivers/net/wireless/rtlwifi/rtl8192de/phy.h | 178 - drivers/net/wireless/rtlwifi/rtl8192de/reg.h | 1312 - drivers/net/wireless/rtlwifi/rtl8192de/rf.c | 623 - drivers/net/wireless/rtlwifi/rtl8192de/rf.h | 44 - drivers/net/wireless/rtlwifi/rtl8192de/sw.c | 425 - drivers/net/wireless/rtlwifi/rtl8192de/sw.h | 37 - .../net/wireless/rtlwifi/rtl8192de/table.c | 1690 - .../net/wireless/rtlwifi/rtl8192de/table.h | 57 - drivers/net/wireless/rtlwifi/rtl8192de/trx.c | 872 - drivers/net/wireless/rtlwifi/rtl8192de/trx.h | 747 - .../net/wireless/rtlwifi/rtl8192se/Makefile | 15 - drivers/net/wireless/rtlwifi/rtl8192se/def.h | 561 - drivers/net/wireless/rtlwifi/rtl8192se/dm.c | 727 - drivers/net/wireless/rtlwifi/rtl8192se/dm.h | 120 - drivers/net/wireless/rtlwifi/rtl8192se/fw.c | 656 - drivers/net/wireless/rtlwifi/rtl8192se/fw.h | 376 - drivers/net/wireless/rtlwifi/rtl8192se/hw.c | 2504 -- drivers/net/wireless/rtlwifi/rtl8192se/hw.h | 79 - drivers/net/wireless/rtlwifi/rtl8192se/led.c | 151 - drivers/net/wireless/rtlwifi/rtl8192se/led.h | 37 - drivers/net/wireless/rtlwifi/rtl8192se/phy.c | 1704 - drivers/net/wireless/rtlwifi/rtl8192se/phy.h | 101 - drivers/net/wireless/rtlwifi/rtl8192se/reg.h | 1185 - drivers/net/wireless/rtlwifi/rtl8192se/rf.c | 535 - drivers/net/wireless/rtlwifi/rtl8192se/rf.h | 43 - drivers/net/wireless/rtlwifi/rtl8192se/sw.c | 450 - drivers/net/wireless/rtlwifi/rtl8192se/sw.h | 36 - .../net/wireless/rtlwifi/rtl8192se/table.c | 634 - .../net/wireless/rtlwifi/rtl8192se/table.h | 49 - drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 902 - drivers/net/wireless/rtlwifi/rtl8192se/trx.h | 46 - .../net/wireless/rtlwifi/rtl8723ae/Makefile | 22 - drivers/net/wireless/rtlwifi/rtl8723ae/btc.h | 41 - drivers/net/wireless/rtlwifi/rtl8723ae/def.h | 163 - drivers/net/wireless/rtlwifi/rtl8723ae/dm.c | 920 - drivers/net/wireless/rtlwifi/rtl8723ae/dm.h | 149 - drivers/net/wireless/rtlwifi/rtl8723ae/fw.c | 743 - drivers/net/wireless/rtlwifi/rtl8723ae/fw.h | 101 - .../rtlwifi/rtl8723ae/hal_bt_coexist.c | 542 - .../rtlwifi/rtl8723ae/hal_bt_coexist.h | 160 - .../net/wireless/rtlwifi/rtl8723ae/hal_btc.c | 1784 - .../net/wireless/rtlwifi/rtl8723ae/hal_btc.h | 151 - drivers/net/wireless/rtlwifi/rtl8723ae/hw.c | 2375 -- drivers/net/wireless/rtlwifi/rtl8723ae/hw.h | 73 - drivers/net/wireless/rtlwifi/rtl8723ae/led.c | 151 - drivers/net/wireless/rtlwifi/rtl8723ae/led.h | 39 - drivers/net/wireless/rtlwifi/rtl8723ae/phy.c | 2028 -- drivers/net/wireless/rtlwifi/rtl8723ae/phy.h | 224 - .../net/wireless/rtlwifi/rtl8723ae/pwrseq.c | 109 - .../net/wireless/rtlwifi/rtl8723ae/pwrseq.h | 322 - .../wireless/rtlwifi/rtl8723ae/pwrseqcmd.c | 129 - .../wireless/rtlwifi/rtl8723ae/pwrseqcmd.h | 98 - drivers/net/wireless/rtlwifi/rtl8723ae/reg.h | 2097 -- drivers/net/wireless/rtlwifi/rtl8723ae/rf.c | 505 - drivers/net/wireless/rtlwifi/rtl8723ae/rf.h | 43 - drivers/net/wireless/rtlwifi/rtl8723ae/sw.c | 388 - drivers/net/wireless/rtlwifi/rtl8723ae/sw.h | 37 - .../net/wireless/rtlwifi/rtl8723ae/table.c | 738 - .../net/wireless/rtlwifi/rtl8723ae/table.h | 50 - drivers/net/wireless/rtlwifi/rtl8723ae/trx.c | 677 - drivers/net/wireless/rtlwifi/rtl8723ae/trx.h | 725 - drivers/net/wireless/rtlwifi/stats.c | 268 - drivers/net/wireless/rtlwifi/stats.h | 46 - drivers/net/wireless/rtlwifi/usb.c | 1067 - drivers/net/wireless/rtlwifi/usb.h | 166 - drivers/net/wireless/rtlwifi/wifi.h | 2297 -- drivers/net/wireless/ti/Kconfig | 24 - drivers/net/wireless/ti/Makefile | 7 - .../net/wireless/ti/wilink_platform_data.c | 49 - drivers/net/wireless/ti/wl1251/Kconfig | 33 - drivers/net/wireless/ti/wl1251/Makefile | 10 - drivers/net/wireless/ti/wl1251/acx.c | 1097 - drivers/net/wireless/ti/wl1251/acx.h | 1483 - drivers/net/wireless/ti/wl1251/boot.c | 554 - drivers/net/wireless/ti/wl1251/boot.h | 39 - drivers/net/wireless/ti/wl1251/cmd.c | 487 - drivers/net/wireless/ti/wl1251/cmd.h | 415 - drivers/net/wireless/ti/wl1251/debugfs.c | 539 - drivers/net/wireless/ti/wl1251/debugfs.h | 31 - drivers/net/wireless/ti/wl1251/event.c | 191 - drivers/net/wireless/ti/wl1251/event.h | 120 - drivers/net/wireless/ti/wl1251/init.c | 423 - drivers/net/wireless/ti/wl1251/init.h | 86 - drivers/net/wireless/ti/wl1251/io.c | 194 - drivers/net/wireless/ti/wl1251/io.h | 83 - drivers/net/wireless/ti/wl1251/main.c | 1482 - drivers/net/wireless/ti/wl1251/ps.c | 184 - drivers/net/wireless/ti/wl1251/ps.h | 35 - drivers/net/wireless/ti/wl1251/reg.h | 655 - drivers/net/wireless/ti/wl1251/rx.c | 235 - drivers/net/wireless/ti/wl1251/rx.h | 122 - drivers/net/wireless/ti/wl1251/sdio.c | 374 - drivers/net/wireless/ti/wl1251/spi.c | 361 - drivers/net/wireless/ti/wl1251/spi.h | 59 - drivers/net/wireless/ti/wl1251/tx.c | 560 - drivers/net/wireless/ti/wl1251/tx.h | 231 - drivers/net/wireless/ti/wl1251/wl1251.h | 445 - drivers/net/wireless/ti/wl1251/wl12xx_80211.h | 155 - drivers/net/wireless/ti/wl12xx/Kconfig | 9 - drivers/net/wireless/ti/wl12xx/Makefile | 3 - drivers/net/wireless/ti/wl12xx/acx.c | 53 - drivers/net/wireless/ti/wl12xx/acx.h | 273 - drivers/net/wireless/ti/wl12xx/cmd.c | 323 - drivers/net/wireless/ti/wl12xx/cmd.h | 132 - drivers/net/wireless/ti/wl12xx/conf.h | 50 - drivers/net/wireless/ti/wl12xx/debugfs.c | 243 - drivers/net/wireless/ti/wl12xx/debugfs.h | 28 - drivers/net/wireless/ti/wl12xx/event.c | 116 - drivers/net/wireless/ti/wl12xx/event.h | 111 - drivers/net/wireless/ti/wl12xx/main.c | 1853 - drivers/net/wireless/ti/wl12xx/reg.h | 556 - drivers/net/wireless/ti/wl12xx/scan.c | 501 - drivers/net/wireless/ti/wl12xx/scan.h | 140 - drivers/net/wireless/ti/wl12xx/wl12xx.h | 80 - drivers/net/wireless/ti/wl18xx/Kconfig | 7 - drivers/net/wireless/ti/wl18xx/Makefile | 3 - drivers/net/wireless/ti/wl18xx/acx.c | 196 - drivers/net/wireless/ti/wl18xx/acx.h | 340 - drivers/net/wireless/ti/wl18xx/cmd.c | 80 - drivers/net/wireless/ti/wl18xx/cmd.h | 52 - drivers/net/wireless/ti/wl18xx/conf.h | 121 - drivers/net/wireless/ti/wl18xx/debugfs.c | 403 - drivers/net/wireless/ti/wl18xx/debugfs.h | 28 - drivers/net/wireless/ti/wl18xx/event.c | 111 - drivers/net/wireless/ti/wl18xx/event.h | 77 - drivers/net/wireless/ti/wl18xx/io.c | 75 - drivers/net/wireless/ti/wl18xx/io.h | 28 - drivers/net/wireless/ti/wl18xx/main.c | 1777 - drivers/net/wireless/ti/wl18xx/reg.h | 191 - drivers/net/wireless/ti/wl18xx/scan.c | 326 - drivers/net/wireless/ti/wl18xx/scan.h | 127 - drivers/net/wireless/ti/wl18xx/tx.c | 171 - drivers/net/wireless/ti/wl18xx/tx.h | 46 - drivers/net/wireless/ti/wl18xx/wl18xx.h | 138 - drivers/net/wireless/ti/wlcore/Kconfig | 35 - drivers/net/wireless/ti/wlcore/Makefile | 12 - drivers/net/wireless/ti/wlcore/acx.c | 1819 - drivers/net/wireless/ti/wlcore/acx.h | 1122 - drivers/net/wireless/ti/wlcore/boot.c | 533 - drivers/net/wireless/ti/wlcore/boot.h | 55 - drivers/net/wireless/ti/wlcore/cmd.c | 1993 -- drivers/net/wireless/ti/wlcore/cmd.h | 698 - drivers/net/wireless/ti/wlcore/conf.h | 1384 - drivers/net/wireless/ti/wlcore/debug.h | 113 - drivers/net/wireless/ti/wlcore/debugfs.c | 1331 - drivers/net/wireless/ti/wlcore/debugfs.h | 120 - drivers/net/wireless/ti/wlcore/event.c | 297 - drivers/net/wireless/ti/wlcore/event.h | 87 - drivers/net/wireless/ti/wlcore/hw_ops.h | 245 - drivers/net/wireless/ti/wlcore/ini.h | 232 - drivers/net/wireless/ti/wlcore/init.c | 750 - drivers/net/wireless/ti/wlcore/init.h | 39 - drivers/net/wireless/ti/wlcore/io.c | 200 - drivers/net/wireless/ti/wlcore/io.h | 234 - drivers/net/wireless/ti/wlcore/main.c | 6203 ---- drivers/net/wireless/ti/wlcore/ps.c | 326 - drivers/net/wireless/ti/wlcore/ps.h | 41 - drivers/net/wireless/ti/wlcore/rx.c | 339 - drivers/net/wireless/ti/wlcore/rx.h | 152 - drivers/net/wireless/ti/wlcore/scan.c | 470 - drivers/net/wireless/ti/wlcore/scan.h | 172 - drivers/net/wireless/ti/wlcore/sdio.c | 419 - drivers/net/wireless/ti/wlcore/spi.c | 453 - drivers/net/wireless/ti/wlcore/testmode.c | 386 - drivers/net/wireless/ti/wlcore/testmode.h | 31 - drivers/net/wireless/ti/wlcore/tx.c | 1318 - drivers/net/wireless/ti/wlcore/tx.h | 283 - drivers/net/wireless/ti/wlcore/wl12xx_80211.h | 137 - drivers/net/wireless/ti/wlcore/wlcore.h | 615 - drivers/net/wireless/ti/wlcore/wlcore_i.h | 531 - drivers/net/wireless/zd1211rw/Kconfig | 19 - drivers/net/wireless/zd1211rw/Makefile | 9 - drivers/net/wireless/zd1211rw/zd_chip.c | 1561 - drivers/net/wireless/zd1211rw/zd_chip.h | 984 - drivers/net/wireless/zd1211rw/zd_def.h | 70 - drivers/net/wireless/zd1211rw/zd_mac.c | 1569 - drivers/net/wireless/zd1211rw/zd_mac.h | 328 - drivers/net/wireless/zd1211rw/zd_rf.c | 182 - drivers/net/wireless/zd1211rw/zd_rf.h | 111 - drivers/net/wireless/zd1211rw/zd_rf_al2230.c | 444 - drivers/net/wireless/zd1211rw/zd_rf_al7230b.c | 495 - drivers/net/wireless/zd1211rw/zd_rf_rf2959.c | 282 - drivers/net/wireless/zd1211rw/zd_rf_uw2453.c | 540 - drivers/net/wireless/zd1211rw/zd_usb.c | 2063 -- drivers/net/wireless/zd1211rw/zd_usb.h | 293 - drivers/platform/x86/intel_ips.h | 21 - drivers/ssb/Kconfig | 176 - drivers/ssb/Makefile | 25 - drivers/ssb/b43_pci_bridge.c | 59 - drivers/ssb/driver_chipcommon.c | 697 - drivers/ssb/driver_chipcommon_pmu.c | 677 - drivers/ssb/driver_chipcommon_sflash.c | 140 - drivers/ssb/driver_extif.c | 201 - drivers/ssb/driver_gige.c | 297 - drivers/ssb/driver_gpio.c | 210 - drivers/ssb/driver_mipscore.c | 342 - drivers/ssb/driver_pcicore.c | 726 - drivers/ssb/embedded.c | 259 - drivers/ssb/main.c | 1503 - drivers/ssb/pci.c | 1120 - drivers/ssb/pcihost_wrapper.c | 123 - drivers/ssb/pcmcia.c | 848 - drivers/ssb/scan.c | 454 - drivers/ssb/sdio.c | 606 - drivers/ssb/sprom.c | 200 - drivers/ssb/ssb_private.h | 282 - drivers/video/Makefile | 1 - drivers/video/hdmi.c | 308 - enable-older-kernels/README | 12 - enable-older-kernels/enable-2.6.21.patch | 26 - enable-older-kernels/enable-2.6.22.patch | 26 - enable-older-kernels/enable-2.6.23.patch | 26 - ...iminate-the-ETF-debug-engineering-co.patch | 511 + ...rt-cw1200-Remove-ITP-debug-subsystem.patch | 1043 + include/crypto/aes.h | 21 - include/drm/drmP.h | 1813 - include/drm/drm_buffer.h | 148 - include/drm/drm_cache.h | 38 - include/drm/drm_core.h | 34 - include/drm/drm_crtc.h | 1109 - include/drm/drm_crtc_helper.h | 172 - include/drm/drm_dp_helper.h | 364 - include/drm/drm_edid.h | 263 - include/drm/drm_encoder_slave.h | 182 - include/drm/drm_fb_cma_helper.h | 32 - include/drm/drm_fb_helper.h | 126 - include/drm/drm_fixed.h | 68 - include/drm/drm_gem_cma_helper.h | 48 - include/drm/drm_global.h | 53 - include/drm/drm_hashtab.h | 79 - include/drm/drm_mem_util.h | 65 - include/drm/drm_memory.h | 59 - include/drm/drm_mm.h | 308 - include/drm/drm_os_linux.h | 127 - include/drm/drm_pciids.h | 751 - include/drm/drm_sysfs.h | 12 - include/drm/drm_usb.h | 15 - include/drm/exynos_drm.h | 100 - include/drm/gma_drm.h | 91 - include/drm/i2c/ch7006.h | 86 - include/drm/i2c/sil164.h | 63 - include/drm/i915_drm.h | 37 - include/drm/intel-gtt.h | 32 - include/drm/ttm/ttm_bo_api.h | 742 - include/drm/ttm/ttm_bo_driver.h | 1018 - include/drm/ttm/ttm_execbuf_util.h | 109 - include/drm/ttm/ttm_lock.h | 247 - include/drm/ttm/ttm_memory.h | 158 - include/drm/ttm/ttm_module.h | 40 - include/drm/ttm/ttm_object.h | 275 - include/drm/ttm/ttm_page_alloc.h | 99 - include/drm/ttm/ttm_placement.h | 92 - include/linux/ath9k_platform.h | 39 - include/linux/atomic.h | 46 - include/linux/average.h | 5 - include/linux/bcm47xx_wdt.h | 28 - include/linux/bcma/bcma.h | 360 - include/linux/bcma/bcma_driver_chipcommon.h | 640 - include/linux/bcma/bcma_driver_gmac_cmn.h | 100 - include/linux/bcma/bcma_driver_mips.h | 59 - include/linux/bcma/bcma_driver_pci.h | 227 - include/linux/bcma/bcma_regs.h | 93 - include/linux/bcma/bcma_soc.h | 16 - include/linux/bitops.h | 211 - include/linux/compat-2.6.14.h | 13 - include/linux/compat-2.6.18.h | 13 - include/linux/compat-2.6.19.h | 24 - include/linux/compat-2.6.20.h | 21 - include/linux/compat-2.6.21.h | 18 - include/linux/compat-2.6.22.h | 104 - include/linux/compat-2.6.23.h | 136 - include/linux/compat-2.6.24.h | 247 - include/linux/compat-2.6.25.h | 277 - include/linux/compat-2.6.26.h | 455 - include/linux/compat-2.6.27.h | 312 - include/linux/compat-2.6.28.h | 300 - include/linux/compat-2.6.29.h | 424 - include/linux/compat-2.6.30.h | 53 - include/linux/compat-2.6.31.h | 292 - include/linux/compat-2.6.32.h | 197 - include/linux/compat-2.6.33.h | 208 - include/linux/compat-2.6.34.h | 349 - include/linux/compat-2.6.35.h | 96 - include/linux/compat-2.6.36.h | 214 - include/linux/compat-2.6.37.h | 183 - include/linux/compat-2.6.38.h | 197 - include/linux/compat-2.6.39.h | 180 - include/linux/compat-2.6.h | 76 - include/linux/compat-3.0.h | 159 - include/linux/compat-3.1.h | 114 - include/linux/compat-3.2.h | 94 - include/linux/compat-3.3.h | 357 - include/linux/compat-3.4.h | 147 - include/linux/compat-3.5.h | 302 - include/linux/compat-3.6.h | 100 - include/linux/compat-3.7.h | 209 - include/linux/compat-3.8.h | 123 - include/linux/compat-3.9.h | 140 - include/linux/cordic.h | 48 - include/linux/crc8.h | 101 - include/linux/cw1200_platform.h | 46 - include/linux/eeprom_93cx6.h | 82 - include/linux/export.h | 12 - include/linux/gpio.h | 10 - include/linux/hdmi.h | 231 - include/linux/ieee80211.h | 2181 -- include/linux/kfifo.h | 857 - include/linux/kmemleak.h | 5 - include/linux/math64.h | 10 - include/linux/mdio.h | 179 - include/linux/of.h | 16 - include/linux/olpc-ec.h | 10 - include/linux/pci-aspm.h | 5 - include/linux/pci_ids.h | 2954 -- include/linux/pm_qos.h | 12 - include/linux/pm_qos_params.h | 36 - include/linux/pm_runtime.h | 14 - include/linux/printk.h | 12 - include/linux/rfkill.h | 32 - include/linux/rfkill_backport.h | 304 - include/linux/rndis.h | 390 - include/linux/semaphore.h | 12 - include/linux/spi/libertas_spi.h | 29 - include/linux/ssb/ssb.h | 631 - include/linux/ssb/ssb_driver_chipcommon.h | 671 - include/linux/ssb/ssb_driver_extif.h | 259 - include/linux/ssb/ssb_driver_gige.h | 179 - include/linux/ssb/ssb_driver_mips.h | 55 - include/linux/ssb/ssb_driver_pci.h | 130 - include/linux/ssb/ssb_embedded.h | 18 - include/linux/ssb/ssb_regs.h | 647 - include/linux/tracepoint.h | 41 - include/linux/u64_stats_sync.h | 144 - include/linux/uidgid.h | 205 - include/linux/unaligned/access_ok.h | 67 - include/linux/unaligned/be_byteshift.h | 70 - include/linux/unaligned/be_memmove.h | 36 - include/linux/unaligned/be_struct.h | 36 - include/linux/unaligned/generic.h | 68 - include/linux/unaligned/le_byteshift.h | 70 - include/linux/unaligned/le_memmove.h | 36 - include/linux/unaligned/le_struct.h | 36 - include/linux/unaligned/memmove.h | 45 - include/linux/unaligned/packed_struct.h | 46 - include/linux/usb/rndis_host.h | 210 - include/linux/usb/usbnet.h | 249 - include/linux/vga_switcheroo.h | 12 - include/linux/wireless.h | 1162 - include/linux/wl12xx.h | 87 - include/net/bluetooth/a2mp.h | 150 - include/net/bluetooth/amp.h | 54 - include/net/bluetooth/bluetooth.h | 337 - include/net/bluetooth/hci.h | 1647 - include/net/bluetooth/hci_core.h | 1170 - include/net/bluetooth/hci_mon.h | 51 - include/net/bluetooth/l2cap.h | 815 - include/net/bluetooth/mgmt.h | 487 - include/net/bluetooth/rfcomm.h | 372 - include/net/bluetooth/sco.h | 79 - include/net/bluetooth/smp.h | 146 - include/net/cfg80211-wext.h | 55 - include/net/cfg80211.h | 4088 --- include/net/codel.h | 363 - include/net/flow_keys.h | 21 - include/net/ieee80211_radiotap.h | 318 - include/net/lib80211.h | 124 - include/net/mac80211.h | 4273 --- include/net/net_namespace.h | 10 - include/net/regulatory.h | 131 - include/pcmcia/cistpl.h | 10 - include/trace/define_trace.h | 5 - include/uapi/drm/Kbuild | 16 - include/uapi/drm/drm.h | 831 - include/uapi/drm/drm_fourcc.h | 135 - include/uapi/drm/drm_mode.h | 463 - include/uapi/drm/drm_sarea.h | 86 - include/uapi/drm/exynos_drm.h | 390 - include/uapi/drm/i810_drm.h | 281 - include/uapi/drm/i915_drm.h | 983 - include/uapi/drm/mga_drm.h | 419 - include/uapi/drm/nouveau_drm.h | 138 - include/uapi/drm/omap_drm.h | 123 - include/uapi/drm/r128_drm.h | 326 - include/uapi/drm/radeon_drm.h | 982 - include/uapi/drm/savage_drm.h | 210 - include/uapi/drm/sis_drm.h | 71 - include/uapi/drm/via_drm.h | 281 - include/uapi/drm/vmwgfx_drm.h | 790 - include/uapi/linux/mdio.h | 297 - include/uapi/linux/nl80211.h | 3590 -- include/uapi/linux/rfkill_backport.h | 107 - linux-next-cherry-picks/network/.gitignore | 0 linux-next-pending/network/.gitignore | 0 net/bluetooth/Kconfig | 50 - net/bluetooth/Makefile | 13 - net/bluetooth/a2mp.c | 1005 - net/bluetooth/af_bluetooth.c | 755 - net/bluetooth/amp.c | 466 - net/bluetooth/bnep/Kconfig | 24 - net/bluetooth/bnep/Makefile | 7 - net/bluetooth/bnep/bnep.h | 180 - net/bluetooth/bnep/core.c | 730 - net/bluetooth/bnep/netdev.c | 238 - net/bluetooth/bnep/sock.c | 265 - net/bluetooth/cmtp/Kconfig | 11 - net/bluetooth/cmtp/Makefile | 7 - net/bluetooth/cmtp/capi.c | 665 - net/bluetooth/cmtp/cmtp.h | 129 - net/bluetooth/cmtp/core.c | 500 - net/bluetooth/cmtp/sock.c | 275 - net/bluetooth/hci_conn.c | 1029 - net/bluetooth/hci_core.c | 2998 -- net/bluetooth/hci_event.c | 4284 --- net/bluetooth/hci_sock.c | 1138 - net/bluetooth/hci_sysfs.c | 616 - net/bluetooth/hidp/Kconfig | 12 - net/bluetooth/hidp/Makefile | 7 - net/bluetooth/hidp/core.c | 1344 - net/bluetooth/hidp/hidp.h | 191 - net/bluetooth/hidp/sock.c | 316 - net/bluetooth/l2cap_core.c | 6635 ---- net/bluetooth/l2cap_sock.c | 1332 - net/bluetooth/lib.c | 175 - net/bluetooth/mgmt.c | 3928 --- net/bluetooth/rfcomm/Kconfig | 18 - net/bluetooth/rfcomm/Makefile | 8 - net/bluetooth/rfcomm/core.c | 2230 -- net/bluetooth/rfcomm/sock.c | 1081 - net/bluetooth/rfcomm/tty.c | 1193 - net/bluetooth/sco.c | 1129 - net/bluetooth/smp.c | 1025 - net/mac80211/Kconfig | 293 - net/mac80211/Makefile | 65 - net/mac80211/aes_ccm.c | 150 - net/mac80211/aes_ccm.h | 24 - net/mac80211/aes_cmac.c | 146 - net/mac80211/aes_cmac.h | 19 - net/mac80211/agg-rx.c | 355 - net/mac80211/agg-tx.c | 931 - net/mac80211/cfg.c | 3398 -- net/mac80211/cfg.h | 9 - net/mac80211/chan.c | 505 - net/mac80211/debug.h | 180 - net/mac80211/debugfs.c | 315 - net/mac80211/debugfs.h | 14 - net/mac80211/debugfs_key.c | 365 - net/mac80211/debugfs_key.h | 33 - net/mac80211/debugfs_netdev.c | 708 - net/mac80211/debugfs_netdev.h | 22 - net/mac80211/debugfs_sta.c | 436 - net/mac80211/debugfs_sta.h | 14 - net/mac80211/driver-ops.h | 1107 - net/mac80211/event.c | 27 - net/mac80211/ht.c | 459 - net/mac80211/ibss.c | 1202 - net/mac80211/ieee80211_i.h | 1650 - net/mac80211/iface.c | 1727 - net/mac80211/key.c | 686 - net/mac80211/key.h | 151 - net/mac80211/led.c | 309 - net/mac80211/led.h | 73 - net/mac80211/main.c | 1196 - net/mac80211/mesh.c | 1102 - net/mac80211/mesh.h | 385 - net/mac80211/mesh_hwmp.c | 1241 - net/mac80211/mesh_pathtbl.c | 1110 - net/mac80211/mesh_plink.c | 1094 - net/mac80211/mesh_ps.c | 598 - net/mac80211/mesh_sync.c | 218 - net/mac80211/michael.c | 86 - net/mac80211/michael.h | 24 - net/mac80211/mlme.c | 4355 --- net/mac80211/offchannel.c | 473 - net/mac80211/pm.c | 243 - net/mac80211/rate.c | 533 - net/mac80211/rate.h | 174 - net/mac80211/rc80211_minstrel.c | 609 - net/mac80211/rc80211_minstrel.h | 111 - net/mac80211/rc80211_minstrel_debugfs.c | 144 - net/mac80211/rc80211_minstrel_ht.c | 1014 - net/mac80211/rc80211_minstrel_ht.h | 133 - net/mac80211/rc80211_minstrel_ht_debugfs.c | 146 - net/mac80211/rc80211_pid.h | 278 - net/mac80211/rc80211_pid_algo.c | 477 - net/mac80211/rc80211_pid_debugfs.c | 228 - net/mac80211/rx.c | 3336 -- net/mac80211/scan.c | 1014 - net/mac80211/spectmgmt.c | 82 - net/mac80211/sta_info.c | 1516 - net/mac80211/sta_info.h | 615 - net/mac80211/status.c | 691 - net/mac80211/tkip.c | 314 - net/mac80211/tkip.h | 35 - net/mac80211/trace.c | 95 - net/mac80211/trace.h | 1928 -- net/mac80211/tx.c | 2798 -- net/mac80211/util.c | 2183 -- net/mac80211/vht.c | 195 - net/mac80211/wep.c | 357 - net/mac80211/wep.h | 34 - net/mac80211/wme.c | 205 - net/mac80211/wme.h | 26 - net/mac80211/wpa.c | 700 - net/mac80211/wpa.h | 38 - net/rfkill/Kconfig | 44 - net/rfkill/Makefile | 9 - net/rfkill/core.c | 1300 - net/rfkill/input.c | 348 - net/rfkill/rfkill-gpio.c | 227 - net/rfkill/rfkill-regulator.c | 153 - net/rfkill/rfkill.h | 27 - net/wireless/Kconfig | 168 - net/wireless/Makefile | 21 - net/wireless/ap.c | 110 - net/wireless/chan.c | 510 - net/wireless/core.c | 1154 - net/wireless/core.h | 519 - net/wireless/db.txt | 793 - net/wireless/debugfs.c | 115 - net/wireless/debugfs.h | 11 - net/wireless/ethtool.c | 106 - net/wireless/ethtool.h | 6 - net/wireless/genregdb.awk | 126 - net/wireless/ibss.c | 548 - net/wireless/lib80211.c | 291 - net/wireless/lib80211_crypt_ccmp.c | 480 - net/wireless/lib80211_crypt_tkip.c | 768 - net/wireless/lib80211_crypt_wep.c | 290 - net/wireless/mesh.c | 287 - net/wireless/mlme.c | 1109 - net/wireless/nl80211.c | 10075 ------ net/wireless/nl80211.h | 145 - net/wireless/radiotap.c | 360 - net/wireless/rdev-ops.h | 890 - net/wireless/reg.c | 2412 -- net/wireless/reg.h | 104 - net/wireless/regdb.h | 23 - net/wireless/scan.c | 1482 - net/wireless/sme.c | 1029 - net/wireless/sysfs.c | 152 - net/wireless/sysfs.h | 9 - net/wireless/trace.c | 7 - net/wireless/trace.h | 2422 -- net/wireless/util.c | 1417 - net/wireless/wext-compat.c | 1541 - net/wireless/wext-compat.h | 57 - net/wireless/wext-core.c | 1130 - net/wireless/wext-priv.c | 249 - net/wireless/wext-proc.c | 160 - net/wireless/wext-sme.c | 427 - net/wireless/wext-spy.c | 232 - patches/collateral-evolutions/README | 16 - .../drm/01-dma_buf_ops-addition.patch | 41 - .../drm/02-revert-vm_mmap.patch | 94 - .../drm/03-swiotlb.patch | 83 - .../drm/04-revert-prime-support.patch | 347 - .../drm/05-i915-define-acpi-video-class.patch | 16 - .../drm/06-rename-config-options.patch | 207 - .../drm/07-intel-gtt.patch | 42 - .../drm/08-shmem_truncate_range.patch | 43 - .../09-nouveau-compatify-kconfig-vars.patch | 153 - ...-radeon-revert-acpi-table-size-check.patch | 27 - .../drm/11-videomode-includes.patch | 15 - .../collateral-evolutions/drm/98-pr_fmt.patch | 189 - .../drm/99-change-makefile.patch | 30 - .../network/0001-netdev_ops.patch | 290 - .../network/0002-net-misc.patch | 68 - ...0003-netdev-needed_headroom_tailroom.patch | 36 - .../network/0004-wext-namespace.patch | 58 - .../network/0005-netlink-portid.patch | 306 - .../network/02-ksize.patch | 37 - .../network/03-rfkill.patch | 66 - .../network/04-netns.patch | 149 - .../network/05-usb.patch | 26 - .../network/06-header-changes.patch | 176 - .../network/07-change-default-rate-alg.patch | 34 - .../network/08-rename-config-options.patch | 192 - .../network/09-cfg80211-wext-padding.patch | 62 - .../network/09-threaded-irq.patch | 182 - .../10-add-wext-handlers-to-netdev.patch | 47 - .../network/11-dev-pm-ops.patch | 379 - .../network/12-iw_handler-changes.patch | 14 - .../12-mac80211-disable-tx-status.patch | 24 - .../network/14-device-type.patch | 56 - .../network/15-symbol-export-conflicts.patch | 18 - .../network/16-bluetooth.patch | 575 - .../network/17-netdev-queue.patch | 47 - .../network/18-rename-usb-net-symbols.patch | 53 - .../network/21-capi-proc_fops.patch | 73 - .../network/22-multiqueue.patch | 43 - .../network/24-pcmcia.patch | 1414 - .../network/25-multicast-list_head.patch | 820 - .../network/26-sdio-quirks.patch | 32 - .../network/27-hermes-read-pda-conflict.patch | 56 - .../network/29-sdio_no_suspend.patch | 199 - .../network/30-bridge-port.patch | 45 - .../network/32-remove-ns-type.patch | 28 - .../network/35-fix-makefile-includes.patch | 71 - .../network/36-workqueue.patch | 16 - .../network/37-vsnprintk.patch | 35 - .../network/38-led-max-brightness.patch | 36 - .../network/39-remove_blink_set.patch | 56 - .../network/40-netdev-hw-features.patch | 372 - .../network/42-netlink_seq.patch | 12 - .../network/43-rename_pm_qos_request.patch | 14 - .../44-deactivate-mac80211-tracing.patch | 27 - .../network/45-remove-platform-id-table.patch | 23 - .../network/46-use_other_workqueue.patch | 31 - .../47-no_trans_start_on_netdev_queue.patch | 17 - .../48-use_skb_get_queue_mapping.patch | 38 - .../network/50-libertas-olpc-ec-wakeup.patch | 23 - .../network/52-tty-dev.patch | 32 - .../network/53-pr_fmt.patch | 715 - .../network/54-get_ts_info.patch | 39 - .../network/55-iwlwifi-msg-trace-fix.patch | 70 - .../network/56-mac80211-trace-fix.patch | 79 - .../network/57-iwlwifi-debug-fix.patch | 19 - .../network/61-netdev-addr_assign_type.patch | 31 - .../network/62-usb_driver_lpm.patch | 276 - .../network/63-tty-termios.patch | 49 - .../network/64-b44-32bit-stats.patch | 54 - .../network/65-ignore-dismantle.patch | 23 - .../network/66-uapi-changes.patch | 29 - .../network/67-fix-section-mismatch.patch | 11 - .../network/67-ipv6-dev-list.patch | 22 - .../network/68-do-not-add-Werror.patch | 8 - .../network/69-wowlan-no-socket.patch | 13 - ...0-disable-dump-adjust-on-old-kernels.patch | 21 - .../network/99-change-makefiles.patch | 102 - patches/crap/README | 17 - patches/linux-next-cherry-picks/README | 20 - patches/linux-next-pending/README | 18 - patches/pending-stable/.ignore | 1 - patches/pending-stable/README | 23 - patches/pending-stable/drm/.ignore | 1 - ...-crash-due-to-un-canceled-work-items.patch | 67 - ..._regbusy_read-only-print-register-ac.patch | 43 - patches/unified-drivers/README.md | 17 - .../network/0001-backport-alx.patch | 125 - .../network/0002-enable-alx.patch | 9 - .../0004-alx-deactivate-loopback-test.patch | 25 - .../0005-alx-intx-msi-workaround.patch | 16 - pending-stable/network/.gitignore | 0 scripts/admin-clean.sh | 14 - scripts/admin-refresh.sh | 3 - scripts/admin-update.sh | 999 - scripts/athenable | 46 - scripts/athload | 57 - scripts/b43enable | 59 - scripts/b43load | 65 - scripts/btunload.sh | 14 - scripts/check_config.sh | 35 - scripts/check_depmod | 83 - scripts/compress_modules | 40 - scripts/driver-select | 565 - scripts/gen-compat-autoconf.sh | 210 - scripts/gen-release.sh | 311 - scripts/genlog-3.7 | 116 - scripts/genlog-3.8 | 116 - scripts/genlog-3.9 | 116 - scripts/git-paranoia | 129 - scripts/iwl-enable | 56 - scripts/iwl-load | 58 - scripts/madwifi-unload | 58 - scripts/modlib.sh | 87 - scripts/refresh-compat | 118 - scripts/refresh-compat-local | 34 - scripts/skip-colors | 2 - scripts/unload.sh | 67 - scripts/update-initramfs | 62 - scripts/wlunload.sh | 59 - udev/50-compat_firmware.rules | 4 - udev/compat_firmware.sh | 35 - udev/ubuntu/compat_firmware.sh | 29 - 2403 files changed, 1579 insertions(+), 1393349 deletions(-) delete mode 100644 .compat_base delete mode 100644 .compat_base_tree delete mode 100644 .compat_base_tree_version delete mode 100644 .compat_version delete mode 100644 .gitignore delete mode 100644 COPYING delete mode 100644 MAINTAINERS delete mode 100644 Makefile delete mode 100644 README.md delete mode 100644 code-metrics.txt delete mode 100644 compat/Makefile delete mode 100755 compat/ckmake delete mode 100644 compat/compat-2.6.14.c delete mode 100644 compat/compat-2.6.18.c delete mode 100644 compat/compat-2.6.19.c delete mode 100644 compat/compat-2.6.21.c delete mode 100644 compat/compat-2.6.22.c delete mode 100644 compat/compat-2.6.23.c delete mode 100644 compat/compat-2.6.24.c delete mode 100644 compat/compat-2.6.25.c delete mode 100644 compat/compat-2.6.26.c delete mode 100644 compat/compat-2.6.27.c delete mode 100644 compat/compat-2.6.28.c delete mode 100644 compat/compat-2.6.29.c delete mode 100644 compat/compat-2.6.32.c delete mode 100644 compat/compat-2.6.33.c delete mode 100644 compat/compat-2.6.34.c delete mode 100644 compat/compat-2.6.34.h delete mode 100644 compat/compat-2.6.35.c delete mode 100644 compat/compat-2.6.36.c delete mode 100644 compat/compat-2.6.37.c delete mode 100644 compat/compat-2.6.38.c delete mode 100644 compat/compat-2.6.39.c delete mode 100644 compat/compat-3.0.c delete mode 100644 compat/compat-3.1.c delete mode 100644 compat/compat-3.2.c delete mode 100644 compat/compat-3.3.c delete mode 100644 compat/compat-3.4.c delete mode 100644 compat/compat-3.5.c delete mode 100644 compat/compat-3.7.c delete mode 100644 compat/compat-3.8.c delete mode 100644 compat/compat_atomic.c delete mode 100644 compat/compat_firmware_class.c delete mode 100644 compat/cordic.c delete mode 100644 compat/crc8.c delete mode 100644 compat/flow_dissector.c delete mode 100644 compat/hid-ids.h delete mode 100644 compat/kfifo.c delete mode 100644 compat/kstrtox.c delete mode 100644 compat/main.c delete mode 100644 compat/pm_qos_params.c delete mode 100644 compat/sch_codel.c delete mode 100644 compat/sch_fq_codel_core.c delete mode 100755 compat/scripts/compat_firmware_install delete mode 100755 compat/scripts/gen-compat-autoconf.sh delete mode 100755 compat/scripts/gen-compat-config.sh delete mode 100755 compat/scripts/skip-colors delete mode 100644 compat/user_namespace.c delete mode 100644 config.mk delete mode 100644 drivers/bcma/Kconfig delete mode 100644 drivers/bcma/Makefile delete mode 100644 drivers/bcma/bcma_private.h delete mode 100644 drivers/bcma/core.c delete mode 100644 drivers/bcma/driver_chipcommon.c delete mode 100644 drivers/bcma/driver_chipcommon_nflash.c delete mode 100644 drivers/bcma/driver_chipcommon_pmu.c delete mode 100644 drivers/bcma/driver_chipcommon_sflash.c delete mode 100644 drivers/bcma/driver_gmac_cmn.c delete mode 100644 drivers/bcma/driver_gpio.c delete mode 100644 drivers/bcma/driver_mips.c delete mode 100644 drivers/bcma/driver_pci.c delete mode 100644 drivers/bcma/driver_pci_host.c delete mode 100644 drivers/bcma/host_pci.c delete mode 100644 drivers/bcma/host_soc.c delete mode 100644 drivers/bcma/main.c delete mode 100644 drivers/bcma/scan.c delete mode 100644 drivers/bcma/scan.h delete mode 100644 drivers/bcma/sprom.c delete mode 100644 drivers/bluetooth/Kconfig delete mode 100644 drivers/bluetooth/Makefile delete mode 100644 drivers/bluetooth/ath3k.c delete mode 100644 drivers/bluetooth/bcm203x.c delete mode 100644 drivers/bluetooth/bfusb.c delete mode 100644 drivers/bluetooth/bluecard_cs.c delete mode 100644 drivers/bluetooth/bpa10x.c delete mode 100644 drivers/bluetooth/bt3c_cs.c delete mode 100644 drivers/bluetooth/btmrvl_debugfs.c delete mode 100644 drivers/bluetooth/btmrvl_drv.h delete mode 100644 drivers/bluetooth/btmrvl_main.c delete mode 100644 drivers/bluetooth/btmrvl_sdio.c delete mode 100644 drivers/bluetooth/btmrvl_sdio.h delete mode 100644 drivers/bluetooth/btsdio.c delete mode 100644 drivers/bluetooth/btuart_cs.c delete mode 100644 drivers/bluetooth/btusb.c delete mode 100644 drivers/bluetooth/btwilink.c delete mode 100644 drivers/bluetooth/dtl1_cs.c delete mode 100644 drivers/bluetooth/hci_ath.c delete mode 100644 drivers/bluetooth/hci_bcsp.c delete mode 100644 drivers/bluetooth/hci_h4.c delete mode 100644 drivers/bluetooth/hci_h5.c delete mode 100644 drivers/bluetooth/hci_ldisc.c delete mode 100644 drivers/bluetooth/hci_ll.c delete mode 100644 drivers/bluetooth/hci_uart.h delete mode 100644 drivers/bluetooth/hci_vhci.c delete mode 100644 drivers/gpu/drm/Makefile delete mode 100644 drivers/gpu/drm/ast/Kconfig delete mode 100644 drivers/gpu/drm/ast/Makefile delete mode 100644 drivers/gpu/drm/ast/ast_dram_tables.h delete mode 100644 drivers/gpu/drm/ast/ast_drv.c delete mode 100644 drivers/gpu/drm/ast/ast_drv.h delete mode 100644 drivers/gpu/drm/ast/ast_fb.c delete mode 100644 drivers/gpu/drm/ast/ast_main.c delete mode 100644 drivers/gpu/drm/ast/ast_mode.c delete mode 100644 drivers/gpu/drm/ast/ast_post.c delete mode 100644 drivers/gpu/drm/ast/ast_tables.h delete mode 100644 drivers/gpu/drm/ast/ast_ttm.c delete mode 100644 drivers/gpu/drm/ati_pcigart.c delete mode 100644 drivers/gpu/drm/cirrus/Kconfig delete mode 100644 drivers/gpu/drm/cirrus/Makefile delete mode 100644 drivers/gpu/drm/cirrus/cirrus_drv.c delete mode 100644 drivers/gpu/drm/cirrus/cirrus_drv.h delete mode 100644 drivers/gpu/drm/cirrus/cirrus_fbdev.c delete mode 100644 drivers/gpu/drm/cirrus/cirrus_main.c delete mode 100644 drivers/gpu/drm/cirrus/cirrus_mode.c delete mode 100644 drivers/gpu/drm/cirrus/cirrus_ttm.c delete mode 100644 drivers/gpu/drm/drm_agpsupport.c delete mode 100644 drivers/gpu/drm/drm_auth.c delete mode 100644 drivers/gpu/drm/drm_buffer.c delete mode 100644 drivers/gpu/drm/drm_bufs.c delete mode 100644 drivers/gpu/drm/drm_cache.c delete mode 100644 drivers/gpu/drm/drm_context.c delete mode 100644 drivers/gpu/drm/drm_crtc.c delete mode 100644 drivers/gpu/drm/drm_crtc_helper.c delete mode 100644 drivers/gpu/drm/drm_debugfs.c delete mode 100644 drivers/gpu/drm/drm_dma.c delete mode 100644 drivers/gpu/drm/drm_dp_helper.c delete mode 100644 drivers/gpu/drm/drm_drv.c delete mode 100644 drivers/gpu/drm/drm_edid.c delete mode 100644 drivers/gpu/drm/drm_edid_load.c delete mode 100644 drivers/gpu/drm/drm_encoder_slave.c delete mode 100644 drivers/gpu/drm/drm_fb_cma_helper.c delete mode 100644 drivers/gpu/drm/drm_fb_helper.c delete mode 100644 drivers/gpu/drm/drm_fops.c delete mode 100644 drivers/gpu/drm/drm_gem.c delete mode 100644 drivers/gpu/drm/drm_gem_cma_helper.c delete mode 100644 drivers/gpu/drm/drm_global.c delete mode 100644 drivers/gpu/drm/drm_hashtab.c delete mode 100644 drivers/gpu/drm/drm_info.c delete mode 100644 drivers/gpu/drm/drm_ioc32.c delete mode 100644 drivers/gpu/drm/drm_ioctl.c delete mode 100644 drivers/gpu/drm/drm_irq.c delete mode 100644 drivers/gpu/drm/drm_lock.c delete mode 100644 drivers/gpu/drm/drm_memory.c delete mode 100644 drivers/gpu/drm/drm_mm.c delete mode 100644 drivers/gpu/drm/drm_modes.c delete mode 100644 drivers/gpu/drm/drm_pci.c delete mode 100644 drivers/gpu/drm/drm_platform.c delete mode 100644 drivers/gpu/drm/drm_prime.c delete mode 100644 drivers/gpu/drm/drm_proc.c delete mode 100644 drivers/gpu/drm/drm_scatter.c delete mode 100644 drivers/gpu/drm/drm_stub.c delete mode 100644 drivers/gpu/drm/drm_sysfs.c delete mode 100644 drivers/gpu/drm/drm_trace.h delete mode 100644 drivers/gpu/drm/drm_trace_points.c delete mode 100644 drivers/gpu/drm/drm_usb.c delete mode 100644 drivers/gpu/drm/drm_vm.c delete mode 100644 drivers/gpu/drm/gma500/Kconfig delete mode 100644 drivers/gpu/drm/gma500/Makefile delete mode 100644 drivers/gpu/drm/gma500/accel_2d.c delete mode 100644 drivers/gpu/drm/gma500/backlight.c delete mode 100644 drivers/gpu/drm/gma500/cdv_device.c delete mode 100644 drivers/gpu/drm/gma500/cdv_device.h delete mode 100644 drivers/gpu/drm/gma500/cdv_intel_crt.c delete mode 100644 drivers/gpu/drm/gma500/cdv_intel_display.c delete mode 100644 drivers/gpu/drm/gma500/cdv_intel_dp.c delete mode 100644 drivers/gpu/drm/gma500/cdv_intel_hdmi.c delete mode 100644 drivers/gpu/drm/gma500/cdv_intel_lvds.c delete mode 100644 drivers/gpu/drm/gma500/framebuffer.c delete mode 100644 drivers/gpu/drm/gma500/framebuffer.h delete mode 100644 drivers/gpu/drm/gma500/gem.c delete mode 100644 drivers/gpu/drm/gma500/gtt.c delete mode 100644 drivers/gpu/drm/gma500/gtt.h delete mode 100644 drivers/gpu/drm/gma500/intel_bios.c delete mode 100644 drivers/gpu/drm/gma500/intel_bios.h delete mode 100644 drivers/gpu/drm/gma500/intel_gmbus.c delete mode 100644 drivers/gpu/drm/gma500/intel_i2c.c delete mode 100644 drivers/gpu/drm/gma500/mdfld_device.c delete mode 100644 drivers/gpu/drm/gma500/mdfld_dsi_dpi.c delete mode 100644 drivers/gpu/drm/gma500/mdfld_dsi_dpi.h delete mode 100644 drivers/gpu/drm/gma500/mdfld_dsi_output.c delete mode 100644 drivers/gpu/drm/gma500/mdfld_dsi_output.h delete mode 100644 drivers/gpu/drm/gma500/mdfld_dsi_pkg_sender.c delete mode 100644 drivers/gpu/drm/gma500/mdfld_dsi_pkg_sender.h delete mode 100644 drivers/gpu/drm/gma500/mdfld_intel_display.c delete mode 100644 drivers/gpu/drm/gma500/mdfld_output.c delete mode 100644 drivers/gpu/drm/gma500/mdfld_output.h delete mode 100644 drivers/gpu/drm/gma500/mdfld_tmd_vid.c delete mode 100644 drivers/gpu/drm/gma500/mdfld_tpo_vid.c delete mode 100644 drivers/gpu/drm/gma500/mid_bios.c delete mode 100644 drivers/gpu/drm/gma500/mid_bios.h delete mode 100644 drivers/gpu/drm/gma500/mmu.c delete mode 100644 drivers/gpu/drm/gma500/oaktrail.h delete mode 100644 drivers/gpu/drm/gma500/oaktrail_crtc.c delete mode 100644 drivers/gpu/drm/gma500/oaktrail_device.c delete mode 100644 drivers/gpu/drm/gma500/oaktrail_hdmi.c delete mode 100644 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c delete mode 100644 drivers/gpu/drm/gma500/oaktrail_lvds.c delete mode 100644 drivers/gpu/drm/gma500/opregion.c delete mode 100644 drivers/gpu/drm/gma500/opregion.h delete mode 100644 drivers/gpu/drm/gma500/power.c delete mode 100644 drivers/gpu/drm/gma500/power.h delete mode 100644 drivers/gpu/drm/gma500/psb_device.c delete mode 100644 drivers/gpu/drm/gma500/psb_drv.c delete mode 100644 drivers/gpu/drm/gma500/psb_drv.h delete mode 100644 drivers/gpu/drm/gma500/psb_intel_display.c delete mode 100644 drivers/gpu/drm/gma500/psb_intel_display.h delete mode 100644 drivers/gpu/drm/gma500/psb_intel_drv.h delete mode 100644 drivers/gpu/drm/gma500/psb_intel_lvds.c delete mode 100644 drivers/gpu/drm/gma500/psb_intel_modes.c delete mode 100644 drivers/gpu/drm/gma500/psb_intel_reg.h delete mode 100644 drivers/gpu/drm/gma500/psb_intel_sdvo.c delete mode 100644 drivers/gpu/drm/gma500/psb_intel_sdvo_regs.h delete mode 100644 drivers/gpu/drm/gma500/psb_irq.c delete mode 100644 drivers/gpu/drm/gma500/psb_irq.h delete mode 100644 drivers/gpu/drm/gma500/psb_lid.c delete mode 100644 drivers/gpu/drm/gma500/psb_reg.h delete mode 100644 drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c delete mode 100644 drivers/gpu/drm/gma500/tc35876x-dsi-lvds.h delete mode 100644 drivers/gpu/drm/i2c/Kconfig delete mode 100644 drivers/gpu/drm/i2c/Makefile delete mode 100644 drivers/gpu/drm/i2c/ch7006_drv.c delete mode 100644 drivers/gpu/drm/i2c/ch7006_mode.c delete mode 100644 drivers/gpu/drm/i2c/ch7006_priv.h delete mode 100644 drivers/gpu/drm/i2c/sil164_drv.c delete mode 100644 drivers/gpu/drm/i2c/tda998x_drv.c delete mode 100644 drivers/gpu/drm/i810/Makefile delete mode 100644 drivers/gpu/drm/i810/i810_dma.c delete mode 100644 drivers/gpu/drm/i810/i810_drv.c delete mode 100644 drivers/gpu/drm/i810/i810_drv.h delete mode 100644 drivers/gpu/drm/i915/Makefile delete mode 100644 drivers/gpu/drm/i915/dvo.h delete mode 100644 drivers/gpu/drm/i915/dvo_ch7017.c delete mode 100644 drivers/gpu/drm/i915/dvo_ch7xxx.c delete mode 100644 drivers/gpu/drm/i915/dvo_ivch.c delete mode 100644 drivers/gpu/drm/i915/dvo_ns2501.c delete mode 100644 drivers/gpu/drm/i915/dvo_sil164.c delete mode 100644 drivers/gpu/drm/i915/dvo_tfp410.c delete mode 100644 drivers/gpu/drm/i915/i915_debugfs.c delete mode 100644 drivers/gpu/drm/i915/i915_dma.c delete mode 100644 drivers/gpu/drm/i915/i915_drv.c delete mode 100644 drivers/gpu/drm/i915/i915_drv.h delete mode 100644 drivers/gpu/drm/i915/i915_gem.c delete mode 100644 drivers/gpu/drm/i915/i915_gem_context.c delete mode 100644 drivers/gpu/drm/i915/i915_gem_debug.c delete mode 100644 drivers/gpu/drm/i915/i915_gem_dmabuf.c delete mode 100644 drivers/gpu/drm/i915/i915_gem_evict.c delete mode 100644 drivers/gpu/drm/i915/i915_gem_execbuffer.c delete mode 100644 drivers/gpu/drm/i915/i915_gem_gtt.c delete mode 100644 drivers/gpu/drm/i915/i915_gem_stolen.c delete mode 100644 drivers/gpu/drm/i915/i915_gem_tiling.c delete mode 100644 drivers/gpu/drm/i915/i915_ioc32.c delete mode 100644 drivers/gpu/drm/i915/i915_irq.c delete mode 100644 drivers/gpu/drm/i915/i915_reg.h delete mode 100644 drivers/gpu/drm/i915/i915_suspend.c delete mode 100644 drivers/gpu/drm/i915/i915_sysfs.c delete mode 100644 drivers/gpu/drm/i915/i915_trace.h delete mode 100644 drivers/gpu/drm/i915/i915_trace_points.c delete mode 100644 drivers/gpu/drm/i915/i915_ums.c delete mode 100644 drivers/gpu/drm/i915/intel_acpi.c delete mode 100644 drivers/gpu/drm/i915/intel_bios.c delete mode 100644 drivers/gpu/drm/i915/intel_bios.h delete mode 100644 drivers/gpu/drm/i915/intel_crt.c delete mode 100644 drivers/gpu/drm/i915/intel_ddi.c delete mode 100644 drivers/gpu/drm/i915/intel_display.c delete mode 100644 drivers/gpu/drm/i915/intel_dp.c delete mode 100644 drivers/gpu/drm/i915/intel_drv.h delete mode 100644 drivers/gpu/drm/i915/intel_dvo.c delete mode 100644 drivers/gpu/drm/i915/intel_fb.c delete mode 100644 drivers/gpu/drm/i915/intel_hdmi.c delete mode 100644 drivers/gpu/drm/i915/intel_i2c.c delete mode 100644 drivers/gpu/drm/i915/intel_lvds.c delete mode 100644 drivers/gpu/drm/i915/intel_modes.c delete mode 100644 drivers/gpu/drm/i915/intel_opregion.c delete mode 100644 drivers/gpu/drm/i915/intel_overlay.c delete mode 100644 drivers/gpu/drm/i915/intel_panel.c delete mode 100644 drivers/gpu/drm/i915/intel_pm.c delete mode 100644 drivers/gpu/drm/i915/intel_ringbuffer.c delete mode 100644 drivers/gpu/drm/i915/intel_ringbuffer.h delete mode 100644 drivers/gpu/drm/i915/intel_sdvo.c delete mode 100644 drivers/gpu/drm/i915/intel_sdvo_regs.h delete mode 100644 drivers/gpu/drm/i915/intel_sprite.c delete mode 100644 drivers/gpu/drm/i915/intel_tv.c delete mode 100644 drivers/gpu/drm/mgag200/Kconfig delete mode 100644 drivers/gpu/drm/mgag200/Makefile delete mode 100644 drivers/gpu/drm/mgag200/mgag200_drv.c delete mode 100644 drivers/gpu/drm/mgag200/mgag200_drv.h delete mode 100644 drivers/gpu/drm/mgag200/mgag200_fb.c delete mode 100644 drivers/gpu/drm/mgag200/mgag200_i2c.c delete mode 100644 drivers/gpu/drm/mgag200/mgag200_main.c delete mode 100644 drivers/gpu/drm/mgag200/mgag200_mode.c delete mode 100644 drivers/gpu/drm/mgag200/mgag200_reg.h delete mode 100644 drivers/gpu/drm/mgag200/mgag200_ttm.c delete mode 100644 drivers/gpu/drm/nouveau/Kconfig delete mode 100644 drivers/gpu/drm/nouveau/Makefile delete mode 100644 drivers/gpu/drm/nouveau/core/core/client.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/engctx.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/engine.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/enum.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/event.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/falcon.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/gpuobj.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/handle.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/mm.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/namedb.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/object.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/option.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/parent.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/printk.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/ramht.c delete mode 100644 drivers/gpu/drm/nouveau/core/core/subdev.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/bsp/nv84.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/bsp/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/bsp/nve0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc delete mode 100644 drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/copy/nva3.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/copy/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/copy/nve0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc delete mode 100644 drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/crypt/nv84.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/crypt/nv98.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/dacnv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/dport.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/dport.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/hdanva3.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/hdanvd0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/hdminv84.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/hdminva3.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/hdminvd0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/nv50.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/nv84.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/nv94.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/nva0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/nva3.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/nve0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/piornv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/sornv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/sornv94.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/sornvd0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/disp/vga.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/dmaobj/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/dmaobj/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/dmaobj/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/dmaobj/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/dmaobj/nvd0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/nv04.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/nv10.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/nv17.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/nv40.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/nv50.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/nv84.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/fifo/nve0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/ctx.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/ctxnv40.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/ctxnv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/ctxnve0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/fuc/nvc0.fuc delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/fuc/nve0.fuc delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv10.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv20.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv20.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv25.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv2a.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv30.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv34.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv35.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv40.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv40.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nv50.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nvc0.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/nve0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/graph/regs.h delete mode 100644 drivers/gpu/drm/nouveau/core/engine/mpeg/nv31.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/mpeg/nv40.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/mpeg/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/mpeg/nv84.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/ppp/nv98.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/ppp/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/software/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/software/nv10.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/software/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/software/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/vp/nv84.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/vp/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/engine/vp/nve0.c delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/class.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/client.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/debug.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/device.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/engctx.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/engine.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/enum.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/event.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/falcon.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/gpuobj.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/handle.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/math.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/mm.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/namedb.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/object.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/option.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/parent.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/printk.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/ramht.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/core/subdev.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/bsp.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/copy.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/crypt.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/disp.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/dmaobj.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/fifo.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/graph.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/mpeg.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/ppp.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/software.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/engine/vp.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bar.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/bit.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/bmp.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/conn.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/dcb.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/disp.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/dp.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/extdev.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/gpio.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/i2c.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/init.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/mxm.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/perf.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/pll.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/therm.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bios/xpio.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/bus.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/clock.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/device.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/devinit.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/fb.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/gpio.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/i2c.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/ibus.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/instmem.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/ltcg.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/mc.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/mxm.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/therm.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/timer.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/vga.h delete mode 100644 drivers/gpu/drm/nouveau/core/include/subdev/vm.h delete mode 100644 drivers/gpu/drm/nouveau/core/os.h delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bar/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bar/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bar/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/bit.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/conn.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/dcb.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/disp.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/dp.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/extdev.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/gpio.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/i2c.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/init.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/mxm.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/perf.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/pll.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/therm.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bios/xpio.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bus/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bus/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/bus/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/clock/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/clock/nv40.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/clock/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/clock/nva3.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/clock/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/clock/pll.h delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/clock/pllnv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/clock/pllnva3.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/device/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/device/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/device/nv10.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/device/nv20.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/device/nv30.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/device/nv40.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/device/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/device/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/device/nve0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/devinit/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/devinit/fbmem.h delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/devinit/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/devinit/nv05.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/devinit/nv10.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/devinit/nv1a.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/devinit/nv20.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv10.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv1a.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv20.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv25.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv30.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv35.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv36.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv40.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv41.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv44.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv46.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv47.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv49.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv4e.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/gpio/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/gpio/nv10.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/gpio/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/gpio/nvd0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/gpio/nve0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/gpio/priv.h delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/i2c/anx9805.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/i2c/aux.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/i2c/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/i2c/bit.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/i2c/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/i2c/nv4e.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/i2c/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/i2c/nv50.h delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/i2c/nv94.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/i2c/nvd0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/ibus/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/ibus/nve0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/instmem/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/instmem/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/instmem/nv04.h delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/instmem/nv40.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/instmem/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/ltcg/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/mc/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/mc/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/mc/nv44.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/mxm/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/mxm/mxms.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/mxm/mxms.h delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/mxm/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/fan.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/fannil.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/fanpwm.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/fantog.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/ic.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/nva3.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/nvd0.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/priv.h delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/therm/temp.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/timer/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/timer/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/vm/base.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/vm/nv04.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/vm/nv04.h delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/vm/nv41.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/vm/nv44.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/vm/nv50.c delete mode 100644 drivers/gpu/drm/nouveau/core/subdev/vm/nvc0.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_abi16.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_abi16.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_acpi.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_acpi.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_agp.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_agp.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_backlight.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_bios.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_bios.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_bo.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_bo.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_calc.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_chan.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_chan.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_connector.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_connector.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_crtc.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_debugfs.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_debugfs.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_display.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_display.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_dma.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_dma.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_dp.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_drm.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_drm.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_encoder.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_fbcon.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_fbcon.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_fence.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_fence.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_gem.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_gem.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_hw.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_hw.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_hwsq.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_ioc32.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_ioctl.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_irq.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_irq.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_mem.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_perf.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_pm.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_pm.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_prime.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_reg.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_sgdma.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_ttm.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_ttm.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_vga.c delete mode 100644 drivers/gpu/drm/nouveau/nouveau_vga.h delete mode 100644 drivers/gpu/drm/nouveau/nouveau_volt.c delete mode 100644 drivers/gpu/drm/nouveau/nv04_crtc.c delete mode 100644 drivers/gpu/drm/nouveau/nv04_cursor.c delete mode 100644 drivers/gpu/drm/nouveau/nv04_dac.c delete mode 100644 drivers/gpu/drm/nouveau/nv04_dfp.c delete mode 100644 drivers/gpu/drm/nouveau/nv04_display.c delete mode 100644 drivers/gpu/drm/nouveau/nv04_display.h delete mode 100644 drivers/gpu/drm/nouveau/nv04_fbcon.c delete mode 100644 drivers/gpu/drm/nouveau/nv04_fence.c delete mode 100644 drivers/gpu/drm/nouveau/nv04_pm.c delete mode 100644 drivers/gpu/drm/nouveau/nv04_tv.c delete mode 100644 drivers/gpu/drm/nouveau/nv10_fence.c delete mode 100644 drivers/gpu/drm/nouveau/nv10_fence.h delete mode 100644 drivers/gpu/drm/nouveau/nv17_fence.c delete mode 100644 drivers/gpu/drm/nouveau/nv17_tv.c delete mode 100644 drivers/gpu/drm/nouveau/nv17_tv.h delete mode 100644 drivers/gpu/drm/nouveau/nv17_tv_modes.c delete mode 100644 drivers/gpu/drm/nouveau/nv40_pm.c delete mode 100644 drivers/gpu/drm/nouveau/nv50_display.c delete mode 100644 drivers/gpu/drm/nouveau/nv50_display.h delete mode 100644 drivers/gpu/drm/nouveau/nv50_fbcon.c delete mode 100644 drivers/gpu/drm/nouveau/nv50_fence.c delete mode 100644 drivers/gpu/drm/nouveau/nv50_pm.c delete mode 100644 drivers/gpu/drm/nouveau/nv84_fence.c delete mode 100644 drivers/gpu/drm/nouveau/nva3_pm.c delete mode 100644 drivers/gpu/drm/nouveau/nvc0_fbcon.c delete mode 100644 drivers/gpu/drm/nouveau/nvc0_fence.c delete mode 100644 drivers/gpu/drm/nouveau/nvc0_pm.c delete mode 100644 drivers/gpu/drm/nouveau/nvreg.h delete mode 100644 drivers/gpu/drm/radeon/Kconfig delete mode 100644 drivers/gpu/drm/radeon/Makefile delete mode 100644 drivers/gpu/drm/radeon/ObjectID.h delete mode 100644 drivers/gpu/drm/radeon/atom-bits.h delete mode 100644 drivers/gpu/drm/radeon/atom-names.h delete mode 100644 drivers/gpu/drm/radeon/atom-types.h delete mode 100644 drivers/gpu/drm/radeon/atom.c delete mode 100644 drivers/gpu/drm/radeon/atom.h delete mode 100644 drivers/gpu/drm/radeon/atombios.h delete mode 100644 drivers/gpu/drm/radeon/atombios_crtc.c delete mode 100644 drivers/gpu/drm/radeon/atombios_dp.c delete mode 100644 drivers/gpu/drm/radeon/atombios_encoders.c delete mode 100644 drivers/gpu/drm/radeon/atombios_i2c.c delete mode 100644 drivers/gpu/drm/radeon/avivod.h delete mode 100644 drivers/gpu/drm/radeon/cayman_blit_shaders.c delete mode 100644 drivers/gpu/drm/radeon/cayman_blit_shaders.h delete mode 100644 drivers/gpu/drm/radeon/evergreen.c delete mode 100644 drivers/gpu/drm/radeon/evergreen_blit_kms.c delete mode 100644 drivers/gpu/drm/radeon/evergreen_blit_shaders.c delete mode 100644 drivers/gpu/drm/radeon/evergreen_blit_shaders.h delete mode 100644 drivers/gpu/drm/radeon/evergreen_cs.c delete mode 100644 drivers/gpu/drm/radeon/evergreen_hdmi.c delete mode 100644 drivers/gpu/drm/radeon/evergreen_reg.h delete mode 100644 drivers/gpu/drm/radeon/evergreend.h delete mode 100644 drivers/gpu/drm/radeon/mkregtable.c delete mode 100644 drivers/gpu/drm/radeon/ni.c delete mode 100644 drivers/gpu/drm/radeon/ni_reg.h delete mode 100644 drivers/gpu/drm/radeon/nid.h delete mode 100644 drivers/gpu/drm/radeon/r100.c delete mode 100644 drivers/gpu/drm/radeon/r100_track.h delete mode 100644 drivers/gpu/drm/radeon/r100d.h delete mode 100644 drivers/gpu/drm/radeon/r200.c delete mode 100644 drivers/gpu/drm/radeon/r300.c delete mode 100644 drivers/gpu/drm/radeon/r300_cmdbuf.c delete mode 100644 drivers/gpu/drm/radeon/r300_reg.h delete mode 100644 drivers/gpu/drm/radeon/r300d.h delete mode 100644 drivers/gpu/drm/radeon/r420.c delete mode 100644 drivers/gpu/drm/radeon/r420d.h delete mode 100644 drivers/gpu/drm/radeon/r500_reg.h delete mode 100644 drivers/gpu/drm/radeon/r520.c delete mode 100644 drivers/gpu/drm/radeon/r520d.h delete mode 100644 drivers/gpu/drm/radeon/r600.c delete mode 100644 drivers/gpu/drm/radeon/r600_audio.c delete mode 100644 drivers/gpu/drm/radeon/r600_blit.c delete mode 100644 drivers/gpu/drm/radeon/r600_blit_kms.c delete mode 100644 drivers/gpu/drm/radeon/r600_blit_shaders.c delete mode 100644 drivers/gpu/drm/radeon/r600_blit_shaders.h delete mode 100644 drivers/gpu/drm/radeon/r600_cp.c delete mode 100644 drivers/gpu/drm/radeon/r600_cs.c delete mode 100644 drivers/gpu/drm/radeon/r600_hdmi.c delete mode 100644 drivers/gpu/drm/radeon/r600_reg.h delete mode 100644 drivers/gpu/drm/radeon/r600d.h delete mode 100644 drivers/gpu/drm/radeon/radeon.h delete mode 100644 drivers/gpu/drm/radeon/radeon_acpi.c delete mode 100644 drivers/gpu/drm/radeon/radeon_acpi.h delete mode 100644 drivers/gpu/drm/radeon/radeon_agp.c delete mode 100644 drivers/gpu/drm/radeon/radeon_asic.c delete mode 100644 drivers/gpu/drm/radeon/radeon_asic.h delete mode 100644 drivers/gpu/drm/radeon/radeon_atombios.c delete mode 100644 drivers/gpu/drm/radeon/radeon_atpx_handler.c delete mode 100644 drivers/gpu/drm/radeon/radeon_benchmark.c delete mode 100644 drivers/gpu/drm/radeon/radeon_bios.c delete mode 100644 drivers/gpu/drm/radeon/radeon_blit_common.h delete mode 100644 drivers/gpu/drm/radeon/radeon_clocks.c delete mode 100644 drivers/gpu/drm/radeon/radeon_combios.c delete mode 100644 drivers/gpu/drm/radeon/radeon_connectors.c delete mode 100644 drivers/gpu/drm/radeon/radeon_cp.c delete mode 100644 drivers/gpu/drm/radeon/radeon_cs.c delete mode 100644 drivers/gpu/drm/radeon/radeon_cursor.c delete mode 100644 drivers/gpu/drm/radeon/radeon_device.c delete mode 100644 drivers/gpu/drm/radeon/radeon_display.c delete mode 100644 drivers/gpu/drm/radeon/radeon_drv.c delete mode 100644 drivers/gpu/drm/radeon/radeon_drv.h delete mode 100644 drivers/gpu/drm/radeon/radeon_encoders.c delete mode 100644 drivers/gpu/drm/radeon/radeon_family.h delete mode 100644 drivers/gpu/drm/radeon/radeon_fb.c delete mode 100644 drivers/gpu/drm/radeon/radeon_fence.c delete mode 100644 drivers/gpu/drm/radeon/radeon_gart.c delete mode 100644 drivers/gpu/drm/radeon/radeon_gem.c delete mode 100644 drivers/gpu/drm/radeon/radeon_i2c.c delete mode 100644 drivers/gpu/drm/radeon/radeon_ioc32.c delete mode 100644 drivers/gpu/drm/radeon/radeon_irq.c delete mode 100644 drivers/gpu/drm/radeon/radeon_irq_kms.c delete mode 100644 drivers/gpu/drm/radeon/radeon_kms.c delete mode 100644 drivers/gpu/drm/radeon/radeon_legacy_crtc.c delete mode 100644 drivers/gpu/drm/radeon/radeon_legacy_encoders.c delete mode 100644 drivers/gpu/drm/radeon/radeon_legacy_tv.c delete mode 100644 drivers/gpu/drm/radeon/radeon_mem.c delete mode 100644 drivers/gpu/drm/radeon/radeon_mode.h delete mode 100644 drivers/gpu/drm/radeon/radeon_object.c delete mode 100644 drivers/gpu/drm/radeon/radeon_object.h delete mode 100644 drivers/gpu/drm/radeon/radeon_pm.c delete mode 100644 drivers/gpu/drm/radeon/radeon_prime.c delete mode 100644 drivers/gpu/drm/radeon/radeon_reg.h delete mode 100644 drivers/gpu/drm/radeon/radeon_ring.c delete mode 100644 drivers/gpu/drm/radeon/radeon_sa.c delete mode 100644 drivers/gpu/drm/radeon/radeon_semaphore.c delete mode 100644 drivers/gpu/drm/radeon/radeon_state.c delete mode 100644 drivers/gpu/drm/radeon/radeon_test.c delete mode 100644 drivers/gpu/drm/radeon/radeon_trace.h delete mode 100644 drivers/gpu/drm/radeon/radeon_trace_points.c delete mode 100644 drivers/gpu/drm/radeon/radeon_ttm.c delete mode 100644 drivers/gpu/drm/radeon/reg_srcs/cayman delete mode 100644 drivers/gpu/drm/radeon/reg_srcs/evergreen delete mode 100644 drivers/gpu/drm/radeon/reg_srcs/r100 delete mode 100644 drivers/gpu/drm/radeon/reg_srcs/r200 delete mode 100644 drivers/gpu/drm/radeon/reg_srcs/r300 delete mode 100644 drivers/gpu/drm/radeon/reg_srcs/r420 delete mode 100644 drivers/gpu/drm/radeon/reg_srcs/r600 delete mode 100644 drivers/gpu/drm/radeon/reg_srcs/rn50 delete mode 100644 drivers/gpu/drm/radeon/reg_srcs/rs600 delete mode 100644 drivers/gpu/drm/radeon/reg_srcs/rv515 delete mode 100644 drivers/gpu/drm/radeon/rs100d.h delete mode 100644 drivers/gpu/drm/radeon/rs400.c delete mode 100644 drivers/gpu/drm/radeon/rs400d.h delete mode 100644 drivers/gpu/drm/radeon/rs600.c delete mode 100644 drivers/gpu/drm/radeon/rs600d.h delete mode 100644 drivers/gpu/drm/radeon/rs690.c delete mode 100644 drivers/gpu/drm/radeon/rs690d.h delete mode 100644 drivers/gpu/drm/radeon/rv200d.h delete mode 100644 drivers/gpu/drm/radeon/rv250d.h delete mode 100644 drivers/gpu/drm/radeon/rv350d.h delete mode 100644 drivers/gpu/drm/radeon/rv515.c delete mode 100644 drivers/gpu/drm/radeon/rv515d.h delete mode 100644 drivers/gpu/drm/radeon/rv770.c delete mode 100644 drivers/gpu/drm/radeon/rv770d.h delete mode 100644 drivers/gpu/drm/radeon/si.c delete mode 100644 drivers/gpu/drm/radeon/si_blit_shaders.c delete mode 100644 drivers/gpu/drm/radeon/si_blit_shaders.h delete mode 100644 drivers/gpu/drm/radeon/si_reg.h delete mode 100644 drivers/gpu/drm/radeon/sid.h delete mode 100644 drivers/gpu/drm/ttm/Makefile delete mode 100644 drivers/gpu/drm/ttm/ttm_agp_backend.c delete mode 100644 drivers/gpu/drm/ttm/ttm_bo.c delete mode 100644 drivers/gpu/drm/ttm/ttm_bo_manager.c delete mode 100644 drivers/gpu/drm/ttm/ttm_bo_util.c delete mode 100644 drivers/gpu/drm/ttm/ttm_bo_vm.c delete mode 100644 drivers/gpu/drm/ttm/ttm_execbuf_util.c delete mode 100644 drivers/gpu/drm/ttm/ttm_lock.c delete mode 100644 drivers/gpu/drm/ttm/ttm_memory.c delete mode 100644 drivers/gpu/drm/ttm/ttm_module.c delete mode 100644 drivers/gpu/drm/ttm/ttm_object.c delete mode 100644 drivers/gpu/drm/ttm/ttm_page_alloc.c delete mode 100644 drivers/gpu/drm/ttm/ttm_page_alloc_dma.c delete mode 100644 drivers/gpu/drm/ttm/ttm_tt.c delete mode 100644 drivers/gpu/drm/via/Makefile delete mode 100644 drivers/gpu/drm/via/via_3d_reg.h delete mode 100644 drivers/gpu/drm/via/via_dma.c delete mode 100644 drivers/gpu/drm/via/via_dmablit.c delete mode 100644 drivers/gpu/drm/via/via_dmablit.h delete mode 100644 drivers/gpu/drm/via/via_drv.c delete mode 100644 drivers/gpu/drm/via/via_drv.h delete mode 100644 drivers/gpu/drm/via/via_irq.c delete mode 100644 drivers/gpu/drm/via/via_map.c delete mode 100644 drivers/gpu/drm/via/via_mm.c delete mode 100644 drivers/gpu/drm/via/via_verifier.c delete mode 100644 drivers/gpu/drm/via/via_verifier.h delete mode 100644 drivers/gpu/drm/via/via_video.c delete mode 100644 drivers/gpu/drm/vmwgfx/Kconfig delete mode 100644 drivers/gpu/drm/vmwgfx/Makefile delete mode 100644 drivers/gpu/drm/vmwgfx/svga3d_reg.h delete mode 100644 drivers/gpu/drm/vmwgfx/svga3d_surfacedefs.h delete mode 100644 drivers/gpu/drm/vmwgfx/svga_escape.h delete mode 100644 drivers/gpu/drm/vmwgfx/svga_overlay.h delete mode 100644 drivers/gpu/drm/vmwgfx/svga_reg.h delete mode 100644 drivers/gpu/drm/vmwgfx/svga_types.h delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_context.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_fb.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_fence.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_fence.h delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_irq.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_kms.h delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_marker.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_reg.h delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_resource.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_resource_priv.h delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_surface.c delete mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c delete mode 100644 drivers/misc/eeprom/Makefile delete mode 100644 drivers/misc/eeprom/eeprom_93cx6.c delete mode 100644 drivers/net/Makefile delete mode 100644 drivers/net/ethernet/atheros/Kconfig delete mode 100644 drivers/net/ethernet/atheros/Makefile delete mode 100644 drivers/net/ethernet/atheros/atl1c/Makefile delete mode 100644 drivers/net/ethernet/atheros/atl1c/atl1c.h delete mode 100644 drivers/net/ethernet/atheros/atl1c/atl1c_ethtool.c delete mode 100644 drivers/net/ethernet/atheros/atl1c/atl1c_hw.c delete mode 100644 drivers/net/ethernet/atheros/atl1c/atl1c_hw.h delete mode 100644 drivers/net/ethernet/atheros/atl1c/atl1c_main.c delete mode 100644 drivers/net/ethernet/atheros/atl1e/Makefile delete mode 100644 drivers/net/ethernet/atheros/atl1e/atl1e.h delete mode 100644 drivers/net/ethernet/atheros/atl1e/atl1e_ethtool.c delete mode 100644 drivers/net/ethernet/atheros/atl1e/atl1e_hw.c delete mode 100644 drivers/net/ethernet/atheros/atl1e/atl1e_hw.h delete mode 100644 drivers/net/ethernet/atheros/atl1e/atl1e_main.c delete mode 100644 drivers/net/ethernet/atheros/atl1e/atl1e_param.c delete mode 100644 drivers/net/ethernet/atheros/atlx/Makefile delete mode 100644 drivers/net/ethernet/atheros/atlx/atl1.c delete mode 100644 drivers/net/ethernet/atheros/atlx/atl1.h delete mode 100644 drivers/net/ethernet/atheros/atlx/atl2.c delete mode 100644 drivers/net/ethernet/atheros/atlx/atl2.h delete mode 100644 drivers/net/ethernet/atheros/atlx/atlx.c delete mode 100644 drivers/net/ethernet/atheros/atlx/atlx.h delete mode 100644 drivers/net/ethernet/broadcom/Makefile delete mode 100644 drivers/net/ethernet/broadcom/b44.c delete mode 100644 drivers/net/ethernet/broadcom/b44.h delete mode 100644 drivers/net/mdio.c delete mode 100644 drivers/net/usb/Makefile delete mode 100644 drivers/net/usb/cdc_ether.c delete mode 100644 drivers/net/usb/rndis_host.c delete mode 100644 drivers/net/usb/usbnet.c delete mode 100644 drivers/net/wireless/Makefile delete mode 100644 drivers/net/wireless/adm8211.c delete mode 100644 drivers/net/wireless/adm8211.h delete mode 100644 drivers/net/wireless/at76c50x-usb.c delete mode 100644 drivers/net/wireless/at76c50x-usb.h delete mode 100644 drivers/net/wireless/ath/Kconfig delete mode 100644 drivers/net/wireless/ath/Makefile delete mode 100644 drivers/net/wireless/ath/ar5523/Kconfig delete mode 100644 drivers/net/wireless/ath/ar5523/Makefile delete mode 100644 drivers/net/wireless/ath/ar5523/ar5523.c delete mode 100644 drivers/net/wireless/ath/ar5523/ar5523.h delete mode 100644 drivers/net/wireless/ath/ar5523/ar5523_hw.h delete mode 100644 drivers/net/wireless/ath/ath.h delete mode 100644 drivers/net/wireless/ath/ath5k/Kconfig delete mode 100644 drivers/net/wireless/ath/ath5k/Makefile delete mode 100644 drivers/net/wireless/ath/ath5k/ahb.c delete mode 100644 drivers/net/wireless/ath/ath5k/ani.c delete mode 100644 drivers/net/wireless/ath/ath5k/ani.h delete mode 100644 drivers/net/wireless/ath/ath5k/ath5k.h delete mode 100644 drivers/net/wireless/ath/ath5k/attach.c delete mode 100644 drivers/net/wireless/ath/ath5k/base.c delete mode 100644 drivers/net/wireless/ath/ath5k/base.h delete mode 100644 drivers/net/wireless/ath/ath5k/caps.c delete mode 100644 drivers/net/wireless/ath/ath5k/debug.c delete mode 100644 drivers/net/wireless/ath/ath5k/debug.h delete mode 100644 drivers/net/wireless/ath/ath5k/desc.c delete mode 100644 drivers/net/wireless/ath/ath5k/desc.h delete mode 100644 drivers/net/wireless/ath/ath5k/dma.c delete mode 100644 drivers/net/wireless/ath/ath5k/eeprom.c delete mode 100644 drivers/net/wireless/ath/ath5k/eeprom.h delete mode 100644 drivers/net/wireless/ath/ath5k/gpio.c delete mode 100644 drivers/net/wireless/ath/ath5k/initvals.c delete mode 100644 drivers/net/wireless/ath/ath5k/led.c delete mode 100644 drivers/net/wireless/ath/ath5k/mac80211-ops.c delete mode 100644 drivers/net/wireless/ath/ath5k/pci.c delete mode 100644 drivers/net/wireless/ath/ath5k/pcu.c delete mode 100644 drivers/net/wireless/ath/ath5k/phy.c delete mode 100644 drivers/net/wireless/ath/ath5k/qcu.c delete mode 100644 drivers/net/wireless/ath/ath5k/reg.h delete mode 100644 drivers/net/wireless/ath/ath5k/reset.c delete mode 100644 drivers/net/wireless/ath/ath5k/rfbuffer.h delete mode 100644 drivers/net/wireless/ath/ath5k/rfgain.h delete mode 100644 drivers/net/wireless/ath/ath5k/rfkill.c delete mode 100644 drivers/net/wireless/ath/ath5k/sysfs.c delete mode 100644 drivers/net/wireless/ath/ath5k/trace.h delete mode 100644 drivers/net/wireless/ath/ath6kl/Kconfig delete mode 100644 drivers/net/wireless/ath/ath6kl/Makefile delete mode 100644 drivers/net/wireless/ath/ath6kl/bmi.c delete mode 100644 drivers/net/wireless/ath/ath6kl/bmi.h delete mode 100644 drivers/net/wireless/ath/ath6kl/cfg80211.c delete mode 100644 drivers/net/wireless/ath/ath6kl/cfg80211.h delete mode 100644 drivers/net/wireless/ath/ath6kl/common.h delete mode 100644 drivers/net/wireless/ath/ath6kl/core.c delete mode 100644 drivers/net/wireless/ath/ath6kl/core.h delete mode 100644 drivers/net/wireless/ath/ath6kl/debug.c delete mode 100644 drivers/net/wireless/ath/ath6kl/debug.h delete mode 100644 drivers/net/wireless/ath/ath6kl/hif-ops.h delete mode 100644 drivers/net/wireless/ath/ath6kl/hif.c delete mode 100644 drivers/net/wireless/ath/ath6kl/hif.h delete mode 100644 drivers/net/wireless/ath/ath6kl/htc-ops.h delete mode 100644 drivers/net/wireless/ath/ath6kl/htc.h delete mode 100644 drivers/net/wireless/ath/ath6kl/htc_mbox.c delete mode 100644 drivers/net/wireless/ath/ath6kl/htc_pipe.c delete mode 100644 drivers/net/wireless/ath/ath6kl/init.c delete mode 100644 drivers/net/wireless/ath/ath6kl/main.c delete mode 100644 drivers/net/wireless/ath/ath6kl/recovery.c delete mode 100644 drivers/net/wireless/ath/ath6kl/sdio.c delete mode 100644 drivers/net/wireless/ath/ath6kl/target.h delete mode 100644 drivers/net/wireless/ath/ath6kl/testmode.c delete mode 100644 drivers/net/wireless/ath/ath6kl/testmode.h delete mode 100644 drivers/net/wireless/ath/ath6kl/txrx.c delete mode 100644 drivers/net/wireless/ath/ath6kl/usb.c delete mode 100644 drivers/net/wireless/ath/ath6kl/wmi.c delete mode 100644 drivers/net/wireless/ath/ath6kl/wmi.h delete mode 100644 drivers/net/wireless/ath/ath9k/Kconfig delete mode 100644 drivers/net/wireless/ath/ath9k/Makefile delete mode 100644 drivers/net/wireless/ath/ath9k/ahb.c delete mode 100644 drivers/net/wireless/ath/ath9k/ani.c delete mode 100644 drivers/net/wireless/ath/ath9k/ani.h delete mode 100644 drivers/net/wireless/ath/ath9k/antenna.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar5008_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar5008_phy.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9001_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9002_calib.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9002_hw.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9002_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9002_mac.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9002_phy.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9002_phy.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_calib.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_eeprom.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_hw.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_mac.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_mac.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_mci.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_mci.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_paprd.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_phy.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_phy.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_rtt.c delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_rtt.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9330_1p2_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9340_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9485_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h delete mode 100644 drivers/net/wireless/ath/ath9k/ath9k.h delete mode 100644 drivers/net/wireless/ath/ath9k/beacon.c delete mode 100644 drivers/net/wireless/ath/ath9k/btcoex.c delete mode 100644 drivers/net/wireless/ath/ath9k/btcoex.h delete mode 100644 drivers/net/wireless/ath/ath9k/calib.c delete mode 100644 drivers/net/wireless/ath/ath9k/calib.h delete mode 100644 drivers/net/wireless/ath/ath9k/common.c delete mode 100644 drivers/net/wireless/ath/ath9k/common.h delete mode 100644 drivers/net/wireless/ath/ath9k/debug.c delete mode 100644 drivers/net/wireless/ath/ath9k/debug.h delete mode 100644 drivers/net/wireless/ath/ath9k/dfs.c delete mode 100644 drivers/net/wireless/ath/ath9k/dfs.h delete mode 100644 drivers/net/wireless/ath/ath9k/dfs_debug.c delete mode 100644 drivers/net/wireless/ath/ath9k/dfs_debug.h delete mode 100644 drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c delete mode 100644 drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h delete mode 100644 drivers/net/wireless/ath/ath9k/dfs_pri_detector.c delete mode 100644 drivers/net/wireless/ath/ath9k/dfs_pri_detector.h delete mode 100644 drivers/net/wireless/ath/ath9k/eeprom.c delete mode 100644 drivers/net/wireless/ath/ath9k/eeprom.h delete mode 100644 drivers/net/wireless/ath/ath9k/eeprom_4k.c delete mode 100644 drivers/net/wireless/ath/ath9k/eeprom_9287.c delete mode 100644 drivers/net/wireless/ath/ath9k/eeprom_def.c delete mode 100644 drivers/net/wireless/ath/ath9k/gpio.c delete mode 100644 drivers/net/wireless/ath/ath9k/hif_usb.c delete mode 100644 drivers/net/wireless/ath/ath9k/hif_usb.h delete mode 100644 drivers/net/wireless/ath/ath9k/htc.h delete mode 100644 drivers/net/wireless/ath/ath9k/htc_drv_beacon.c delete mode 100644 drivers/net/wireless/ath/ath9k/htc_drv_debug.c delete mode 100644 drivers/net/wireless/ath/ath9k/htc_drv_gpio.c delete mode 100644 drivers/net/wireless/ath/ath9k/htc_drv_init.c delete mode 100644 drivers/net/wireless/ath/ath9k/htc_drv_main.c delete mode 100644 drivers/net/wireless/ath/ath9k/htc_drv_txrx.c delete mode 100644 drivers/net/wireless/ath/ath9k/htc_hst.c delete mode 100644 drivers/net/wireless/ath/ath9k/htc_hst.h delete mode 100644 drivers/net/wireless/ath/ath9k/hw-ops.h delete mode 100644 drivers/net/wireless/ath/ath9k/hw.c delete mode 100644 drivers/net/wireless/ath/ath9k/hw.h delete mode 100644 drivers/net/wireless/ath/ath9k/init.c delete mode 100644 drivers/net/wireless/ath/ath9k/link.c delete mode 100644 drivers/net/wireless/ath/ath9k/mac.c delete mode 100644 drivers/net/wireless/ath/ath9k/mac.h delete mode 100644 drivers/net/wireless/ath/ath9k/main.c delete mode 100644 drivers/net/wireless/ath/ath9k/mci.c delete mode 100644 drivers/net/wireless/ath/ath9k/mci.h delete mode 100644 drivers/net/wireless/ath/ath9k/pci.c delete mode 100644 drivers/net/wireless/ath/ath9k/phy.h delete mode 100644 drivers/net/wireless/ath/ath9k/rc.c delete mode 100644 drivers/net/wireless/ath/ath9k/rc.h delete mode 100644 drivers/net/wireless/ath/ath9k/recv.c delete mode 100644 drivers/net/wireless/ath/ath9k/reg.h delete mode 100644 drivers/net/wireless/ath/ath9k/wmi.c delete mode 100644 drivers/net/wireless/ath/ath9k/wmi.h delete mode 100644 drivers/net/wireless/ath/ath9k/wow.c delete mode 100644 drivers/net/wireless/ath/ath9k/xmit.c delete mode 100644 drivers/net/wireless/ath/carl9170/Kconfig delete mode 100644 drivers/net/wireless/ath/carl9170/Makefile delete mode 100644 drivers/net/wireless/ath/carl9170/carl9170.h delete mode 100644 drivers/net/wireless/ath/carl9170/cmd.c delete mode 100644 drivers/net/wireless/ath/carl9170/cmd.h delete mode 100644 drivers/net/wireless/ath/carl9170/debug.c delete mode 100644 drivers/net/wireless/ath/carl9170/debug.h delete mode 100644 drivers/net/wireless/ath/carl9170/eeprom.h delete mode 100644 drivers/net/wireless/ath/carl9170/fw.c delete mode 100644 drivers/net/wireless/ath/carl9170/fwcmd.h delete mode 100644 drivers/net/wireless/ath/carl9170/fwdesc.h delete mode 100644 drivers/net/wireless/ath/carl9170/hw.h delete mode 100644 drivers/net/wireless/ath/carl9170/led.c delete mode 100644 drivers/net/wireless/ath/carl9170/mac.c delete mode 100644 drivers/net/wireless/ath/carl9170/main.c delete mode 100644 drivers/net/wireless/ath/carl9170/phy.c delete mode 100644 drivers/net/wireless/ath/carl9170/phy.h delete mode 100644 drivers/net/wireless/ath/carl9170/rx.c delete mode 100644 drivers/net/wireless/ath/carl9170/tx.c delete mode 100644 drivers/net/wireless/ath/carl9170/usb.c delete mode 100644 drivers/net/wireless/ath/carl9170/version.h delete mode 100644 drivers/net/wireless/ath/carl9170/wlan.h delete mode 100644 drivers/net/wireless/ath/debug.c delete mode 100644 drivers/net/wireless/ath/hw.c delete mode 100644 drivers/net/wireless/ath/key.c delete mode 100644 drivers/net/wireless/ath/main.c delete mode 100644 drivers/net/wireless/ath/reg.h delete mode 100644 drivers/net/wireless/ath/regd.c delete mode 100644 drivers/net/wireless/ath/regd.h delete mode 100644 drivers/net/wireless/ath/regd_common.h delete mode 100644 drivers/net/wireless/ath/wil6210/Kconfig delete mode 100644 drivers/net/wireless/ath/wil6210/Makefile delete mode 100644 drivers/net/wireless/ath/wil6210/cfg80211.c delete mode 100644 drivers/net/wireless/ath/wil6210/dbg_hexdump.h delete mode 100644 drivers/net/wireless/ath/wil6210/debugfs.c delete mode 100644 drivers/net/wireless/ath/wil6210/interrupt.c delete mode 100644 drivers/net/wireless/ath/wil6210/main.c delete mode 100644 drivers/net/wireless/ath/wil6210/netdev.c delete mode 100644 drivers/net/wireless/ath/wil6210/pcie_bus.c delete mode 100644 drivers/net/wireless/ath/wil6210/txrx.c delete mode 100644 drivers/net/wireless/ath/wil6210/txrx.h delete mode 100644 drivers/net/wireless/ath/wil6210/wil6210.h delete mode 100644 drivers/net/wireless/ath/wil6210/wmi.c delete mode 100644 drivers/net/wireless/ath/wil6210/wmi.h delete mode 100644 drivers/net/wireless/b43/Kconfig delete mode 100644 drivers/net/wireless/b43/Makefile delete mode 100644 drivers/net/wireless/b43/b43.h delete mode 100644 drivers/net/wireless/b43/bus.c delete mode 100644 drivers/net/wireless/b43/bus.h delete mode 100644 drivers/net/wireless/b43/debugfs.c delete mode 100644 drivers/net/wireless/b43/debugfs.h delete mode 100644 drivers/net/wireless/b43/dma.c delete mode 100644 drivers/net/wireless/b43/dma.h delete mode 100644 drivers/net/wireless/b43/leds.c delete mode 100644 drivers/net/wireless/b43/leds.h delete mode 100644 drivers/net/wireless/b43/lo.c delete mode 100644 drivers/net/wireless/b43/lo.h delete mode 100644 drivers/net/wireless/b43/main.c delete mode 100644 drivers/net/wireless/b43/main.h delete mode 100644 drivers/net/wireless/b43/pcmcia.c delete mode 100644 drivers/net/wireless/b43/pcmcia.h delete mode 100644 drivers/net/wireless/b43/phy_a.c delete mode 100644 drivers/net/wireless/b43/phy_a.h delete mode 100644 drivers/net/wireless/b43/phy_common.c delete mode 100644 drivers/net/wireless/b43/phy_common.h delete mode 100644 drivers/net/wireless/b43/phy_g.c delete mode 100644 drivers/net/wireless/b43/phy_g.h delete mode 100644 drivers/net/wireless/b43/phy_ht.c delete mode 100644 drivers/net/wireless/b43/phy_ht.h delete mode 100644 drivers/net/wireless/b43/phy_lcn.c delete mode 100644 drivers/net/wireless/b43/phy_lcn.h delete mode 100644 drivers/net/wireless/b43/phy_lp.c delete mode 100644 drivers/net/wireless/b43/phy_lp.h delete mode 100644 drivers/net/wireless/b43/phy_n.c delete mode 100644 drivers/net/wireless/b43/phy_n.h delete mode 100644 drivers/net/wireless/b43/pio.c delete mode 100644 drivers/net/wireless/b43/pio.h delete mode 100644 drivers/net/wireless/b43/radio_2055.c delete mode 100644 drivers/net/wireless/b43/radio_2055.h delete mode 100644 drivers/net/wireless/b43/radio_2056.c delete mode 100644 drivers/net/wireless/b43/radio_2056.h delete mode 100644 drivers/net/wireless/b43/radio_2057.c delete mode 100644 drivers/net/wireless/b43/radio_2057.h delete mode 100644 drivers/net/wireless/b43/radio_2059.c delete mode 100644 drivers/net/wireless/b43/radio_2059.h delete mode 100644 drivers/net/wireless/b43/rfkill.c delete mode 100644 drivers/net/wireless/b43/rfkill.h delete mode 100644 drivers/net/wireless/b43/sdio.c delete mode 100644 drivers/net/wireless/b43/sdio.h delete mode 100644 drivers/net/wireless/b43/sysfs.c delete mode 100644 drivers/net/wireless/b43/sysfs.h delete mode 100644 drivers/net/wireless/b43/tables.c delete mode 100644 drivers/net/wireless/b43/tables.h delete mode 100644 drivers/net/wireless/b43/tables_lpphy.c delete mode 100644 drivers/net/wireless/b43/tables_lpphy.h delete mode 100644 drivers/net/wireless/b43/tables_nphy.c delete mode 100644 drivers/net/wireless/b43/tables_nphy.h delete mode 100644 drivers/net/wireless/b43/tables_phy_ht.c delete mode 100644 drivers/net/wireless/b43/tables_phy_ht.h delete mode 100644 drivers/net/wireless/b43/tables_phy_lcn.c delete mode 100644 drivers/net/wireless/b43/tables_phy_lcn.h delete mode 100644 drivers/net/wireless/b43/wa.c delete mode 100644 drivers/net/wireless/b43/wa.h delete mode 100644 drivers/net/wireless/b43/xmit.c delete mode 100644 drivers/net/wireless/b43/xmit.h delete mode 100644 drivers/net/wireless/b43legacy/Kconfig delete mode 100644 drivers/net/wireless/b43legacy/Makefile delete mode 100644 drivers/net/wireless/b43legacy/b43legacy.h delete mode 100644 drivers/net/wireless/b43legacy/debugfs.c delete mode 100644 drivers/net/wireless/b43legacy/debugfs.h delete mode 100644 drivers/net/wireless/b43legacy/dma.c delete mode 100644 drivers/net/wireless/b43legacy/dma.h delete mode 100644 drivers/net/wireless/b43legacy/ilt.c delete mode 100644 drivers/net/wireless/b43legacy/ilt.h delete mode 100644 drivers/net/wireless/b43legacy/leds.c delete mode 100644 drivers/net/wireless/b43legacy/leds.h delete mode 100644 drivers/net/wireless/b43legacy/main.c delete mode 100644 drivers/net/wireless/b43legacy/main.h delete mode 100644 drivers/net/wireless/b43legacy/phy.c delete mode 100644 drivers/net/wireless/b43legacy/phy.h delete mode 100644 drivers/net/wireless/b43legacy/pio.c delete mode 100644 drivers/net/wireless/b43legacy/pio.h delete mode 100644 drivers/net/wireless/b43legacy/radio.c delete mode 100644 drivers/net/wireless/b43legacy/radio.h delete mode 100644 drivers/net/wireless/b43legacy/rfkill.c delete mode 100644 drivers/net/wireless/b43legacy/rfkill.h delete mode 100644 drivers/net/wireless/b43legacy/sysfs.c delete mode 100644 drivers/net/wireless/b43legacy/sysfs.h delete mode 100644 drivers/net/wireless/b43legacy/xmit.c delete mode 100644 drivers/net/wireless/b43legacy/xmit.h delete mode 100644 drivers/net/wireless/brcm80211/Kconfig delete mode 100644 drivers/net/wireless/brcm80211/Makefile delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/Makefile delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_proto.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/fweh.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/fweh.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/fwil.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/fwil.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/p2p.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/p2p.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/sdio_host.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/usb.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/usb.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/usb_rdl.h delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c delete mode 100644 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/Makefile delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/aiutils.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/aiutils.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/ampdu.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/ampdu.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/antsel.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/antsel.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/brcms_trace_events.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/brcms_trace_events.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/channel.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/channel.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/d11.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/debug.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/debug.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/dma.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/dma.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/main.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/main.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_cmn.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_hal.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_int.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_qmath.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_qmath.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_radio.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phyreg_n.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_n.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_n.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy_shim.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy_shim.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/pmu.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/pmu.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/pub.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/rate.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/rate.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/scb.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/stf.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/stf.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/types.h delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/ucode_loader.c delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/ucode_loader.h delete mode 100644 drivers/net/wireless/brcm80211/brcmutil/Makefile delete mode 100644 drivers/net/wireless/brcm80211/brcmutil/utils.c delete mode 100644 drivers/net/wireless/brcm80211/include/brcm_hw_ids.h delete mode 100644 drivers/net/wireless/brcm80211/include/brcmu_utils.h delete mode 100644 drivers/net/wireless/brcm80211/include/brcmu_wifi.h delete mode 100644 drivers/net/wireless/brcm80211/include/chipcommon.h delete mode 100644 drivers/net/wireless/brcm80211/include/defs.h delete mode 100644 drivers/net/wireless/brcm80211/include/soc.h delete mode 100644 drivers/net/wireless/cw1200/.gitignore delete mode 100644 drivers/net/wireless/cw1200/Kconfig delete mode 100644 drivers/net/wireless/cw1200/Makefile delete mode 100644 drivers/net/wireless/cw1200/bh.c delete mode 100644 drivers/net/wireless/cw1200/bh.h delete mode 100644 drivers/net/wireless/cw1200/cw1200.h delete mode 100644 drivers/net/wireless/cw1200/cw1200_sagrad.c delete mode 100644 drivers/net/wireless/cw1200/cw1200_sdio.c delete mode 100644 drivers/net/wireless/cw1200/cw1200_spi.c delete mode 100644 drivers/net/wireless/cw1200/debug.c delete mode 100644 drivers/net/wireless/cw1200/debug.h delete mode 100644 drivers/net/wireless/cw1200/fwio.c delete mode 100644 drivers/net/wireless/cw1200/fwio.h delete mode 100644 drivers/net/wireless/cw1200/hwio.c delete mode 100644 drivers/net/wireless/cw1200/hwio.h delete mode 100644 drivers/net/wireless/cw1200/itp.c delete mode 100644 drivers/net/wireless/cw1200/itp.h delete mode 100644 drivers/net/wireless/cw1200/main.c delete mode 100644 drivers/net/wireless/cw1200/pm.c delete mode 100644 drivers/net/wireless/cw1200/pm.h delete mode 100644 drivers/net/wireless/cw1200/queue.c delete mode 100644 drivers/net/wireless/cw1200/queue.h delete mode 100644 drivers/net/wireless/cw1200/sbus.h delete mode 100644 drivers/net/wireless/cw1200/scan.c delete mode 100644 drivers/net/wireless/cw1200/scan.h delete mode 100644 drivers/net/wireless/cw1200/sta.c delete mode 100644 drivers/net/wireless/cw1200/sta.h delete mode 100644 drivers/net/wireless/cw1200/txrx.c delete mode 100644 drivers/net/wireless/cw1200/txrx.h delete mode 100644 drivers/net/wireless/cw1200/wsm.c delete mode 100644 drivers/net/wireless/cw1200/wsm.h delete mode 100644 drivers/net/wireless/ipw2x00/Kconfig delete mode 100644 drivers/net/wireless/ipw2x00/Makefile delete mode 100644 drivers/net/wireless/ipw2x00/ipw.h delete mode 100644 drivers/net/wireless/ipw2x00/ipw2100.c delete mode 100644 drivers/net/wireless/ipw2x00/ipw2100.h delete mode 100644 drivers/net/wireless/ipw2x00/ipw2200.c delete mode 100644 drivers/net/wireless/ipw2x00/ipw2200.h delete mode 100644 drivers/net/wireless/ipw2x00/libipw.h delete mode 100644 drivers/net/wireless/ipw2x00/libipw_geo.c delete mode 100644 drivers/net/wireless/ipw2x00/libipw_module.c delete mode 100644 drivers/net/wireless/ipw2x00/libipw_rx.c delete mode 100644 drivers/net/wireless/ipw2x00/libipw_tx.c delete mode 100644 drivers/net/wireless/ipw2x00/libipw_wx.c delete mode 100644 drivers/net/wireless/iwlegacy/3945-debug.c delete mode 100644 drivers/net/wireless/iwlegacy/3945-mac.c delete mode 100644 drivers/net/wireless/iwlegacy/3945-rs.c delete mode 100644 drivers/net/wireless/iwlegacy/3945.c delete mode 100644 drivers/net/wireless/iwlegacy/3945.h delete mode 100644 drivers/net/wireless/iwlegacy/4965-calib.c delete mode 100644 drivers/net/wireless/iwlegacy/4965-debug.c delete mode 100644 drivers/net/wireless/iwlegacy/4965-mac.c delete mode 100644 drivers/net/wireless/iwlegacy/4965-rs.c delete mode 100644 drivers/net/wireless/iwlegacy/4965.c delete mode 100644 drivers/net/wireless/iwlegacy/4965.h delete mode 100644 drivers/net/wireless/iwlegacy/Kconfig delete mode 100644 drivers/net/wireless/iwlegacy/Makefile delete mode 100644 drivers/net/wireless/iwlegacy/commands.h delete mode 100644 drivers/net/wireless/iwlegacy/common.c delete mode 100644 drivers/net/wireless/iwlegacy/common.h delete mode 100644 drivers/net/wireless/iwlegacy/csr.h delete mode 100644 drivers/net/wireless/iwlegacy/debug.c delete mode 100644 drivers/net/wireless/iwlegacy/iwl-spectrum.h delete mode 100644 drivers/net/wireless/iwlegacy/prph.h delete mode 100644 drivers/net/wireless/iwlwifi/Kconfig delete mode 100644 drivers/net/wireless/iwlwifi/Makefile delete mode 100644 drivers/net/wireless/iwlwifi/dvm/Makefile delete mode 100644 drivers/net/wireless/iwlwifi/dvm/agn.h delete mode 100644 drivers/net/wireless/iwlwifi/dvm/calib.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/calib.h delete mode 100644 drivers/net/wireless/iwlwifi/dvm/commands.h delete mode 100644 drivers/net/wireless/iwlwifi/dvm/debugfs.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/dev.h delete mode 100644 drivers/net/wireless/iwlwifi/dvm/devices.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/led.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/led.h delete mode 100644 drivers/net/wireless/iwlwifi/dvm/lib.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/mac80211.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/main.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/power.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/power.h delete mode 100644 drivers/net/wireless/iwlwifi/dvm/rs.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/rs.h delete mode 100644 drivers/net/wireless/iwlwifi/dvm/rx.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/rxon.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/scan.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/sta.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/testmode.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/tt.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/tt.h delete mode 100644 drivers/net/wireless/iwlwifi/dvm/tx.c delete mode 100644 drivers/net/wireless/iwlwifi/dvm/ucode.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-hw.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-config.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-csr.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-debug.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-debug.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-devtrace.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-devtrace.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-drv.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-drv.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-eeprom-parse.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-eeprom-read.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-eeprom-read.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-fh.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-fw-file.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-fw.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-io.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-io.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-modparams.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-notif-wait.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-notif-wait.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-nvm-parse.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-nvm-parse.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-op-mode.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-phy-db.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-phy-db.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-prph.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-test.c delete mode 100644 drivers/net/wireless/iwlwifi/iwl-test.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-testmode.h delete mode 100644 drivers/net/wireless/iwlwifi/iwl-trans.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/Makefile delete mode 100644 drivers/net/wireless/iwlwifi/mvm/binding.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/d3.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/debugfs.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/fw-api-mac.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/fw-api-power.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/fw-api-rs.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/fw-api-sta.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/fw-api.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/fw.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/led.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/mac80211.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/mvm.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/nvm.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/ops.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/power.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/quota.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/rs.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/rs.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/rx.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/scan.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/sta.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/sta.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/time-event.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/time-event.h delete mode 100644 drivers/net/wireless/iwlwifi/mvm/tx.c delete mode 100644 drivers/net/wireless/iwlwifi/mvm/utils.c delete mode 100644 drivers/net/wireless/iwlwifi/pcie/1000.c delete mode 100644 drivers/net/wireless/iwlwifi/pcie/2000.c delete mode 100644 drivers/net/wireless/iwlwifi/pcie/5000.c delete mode 100644 drivers/net/wireless/iwlwifi/pcie/6000.c delete mode 100644 drivers/net/wireless/iwlwifi/pcie/7000.c delete mode 100644 drivers/net/wireless/iwlwifi/pcie/cfg.h delete mode 100644 drivers/net/wireless/iwlwifi/pcie/drv.c delete mode 100644 drivers/net/wireless/iwlwifi/pcie/internal.h delete mode 100644 drivers/net/wireless/iwlwifi/pcie/rx.c delete mode 100644 drivers/net/wireless/iwlwifi/pcie/trans.c delete mode 100644 drivers/net/wireless/iwlwifi/pcie/tx.c delete mode 100644 drivers/net/wireless/libertas/Kconfig delete mode 100644 drivers/net/wireless/libertas/Makefile delete mode 100644 drivers/net/wireless/libertas/cfg.c delete mode 100644 drivers/net/wireless/libertas/cfg.h delete mode 100644 drivers/net/wireless/libertas/cmd.c delete mode 100644 drivers/net/wireless/libertas/cmd.h delete mode 100644 drivers/net/wireless/libertas/cmdresp.c delete mode 100644 drivers/net/wireless/libertas/debugfs.c delete mode 100644 drivers/net/wireless/libertas/debugfs.h delete mode 100644 drivers/net/wireless/libertas/decl.h delete mode 100644 drivers/net/wireless/libertas/defs.h delete mode 100644 drivers/net/wireless/libertas/dev.h delete mode 100644 drivers/net/wireless/libertas/ethtool.c delete mode 100644 drivers/net/wireless/libertas/firmware.c delete mode 100644 drivers/net/wireless/libertas/host.h delete mode 100644 drivers/net/wireless/libertas/if_cs.c delete mode 100644 drivers/net/wireless/libertas/if_sdio.c delete mode 100644 drivers/net/wireless/libertas/if_sdio.h delete mode 100644 drivers/net/wireless/libertas/if_spi.c delete mode 100644 drivers/net/wireless/libertas/if_spi.h delete mode 100644 drivers/net/wireless/libertas/if_usb.c delete mode 100644 drivers/net/wireless/libertas/if_usb.h delete mode 100644 drivers/net/wireless/libertas/main.c delete mode 100644 drivers/net/wireless/libertas/mesh.c delete mode 100644 drivers/net/wireless/libertas/mesh.h delete mode 100644 drivers/net/wireless/libertas/radiotap.h delete mode 100644 drivers/net/wireless/libertas/rx.c delete mode 100644 drivers/net/wireless/libertas/tx.c delete mode 100644 drivers/net/wireless/libertas/types.h delete mode 100644 drivers/net/wireless/libertas_tf/Makefile delete mode 100644 drivers/net/wireless/libertas_tf/cmd.c delete mode 100644 drivers/net/wireless/libertas_tf/deb_defs.h delete mode 100644 drivers/net/wireless/libertas_tf/if_usb.c delete mode 100644 drivers/net/wireless/libertas_tf/if_usb.h delete mode 100644 drivers/net/wireless/libertas_tf/libertas_tf.h delete mode 100644 drivers/net/wireless/libertas_tf/main.c delete mode 100644 drivers/net/wireless/mac80211_hwsim.c delete mode 100644 drivers/net/wireless/mac80211_hwsim.h delete mode 100644 drivers/net/wireless/mwifiex/11ac.c delete mode 100644 drivers/net/wireless/mwifiex/11ac.h delete mode 100644 drivers/net/wireless/mwifiex/11n.c delete mode 100644 drivers/net/wireless/mwifiex/11n.h delete mode 100644 drivers/net/wireless/mwifiex/11n_aggr.c delete mode 100644 drivers/net/wireless/mwifiex/11n_aggr.h delete mode 100644 drivers/net/wireless/mwifiex/11n_rxreorder.c delete mode 100644 drivers/net/wireless/mwifiex/11n_rxreorder.h delete mode 100644 drivers/net/wireless/mwifiex/Kconfig delete mode 100644 drivers/net/wireless/mwifiex/Makefile delete mode 100644 drivers/net/wireless/mwifiex/cfg80211.c delete mode 100644 drivers/net/wireless/mwifiex/cfg80211.h delete mode 100644 drivers/net/wireless/mwifiex/cfp.c delete mode 100644 drivers/net/wireless/mwifiex/cmdevt.c delete mode 100644 drivers/net/wireless/mwifiex/debugfs.c delete mode 100644 drivers/net/wireless/mwifiex/decl.h delete mode 100644 drivers/net/wireless/mwifiex/fw.h delete mode 100644 drivers/net/wireless/mwifiex/ie.c delete mode 100644 drivers/net/wireless/mwifiex/init.c delete mode 100644 drivers/net/wireless/mwifiex/ioctl.h delete mode 100644 drivers/net/wireless/mwifiex/join.c delete mode 100644 drivers/net/wireless/mwifiex/main.c delete mode 100644 drivers/net/wireless/mwifiex/main.h delete mode 100644 drivers/net/wireless/mwifiex/pcie.c delete mode 100644 drivers/net/wireless/mwifiex/pcie.h delete mode 100644 drivers/net/wireless/mwifiex/scan.c delete mode 100644 drivers/net/wireless/mwifiex/sdio.c delete mode 100644 drivers/net/wireless/mwifiex/sdio.h delete mode 100644 drivers/net/wireless/mwifiex/sta_cmd.c delete mode 100644 drivers/net/wireless/mwifiex/sta_cmdresp.c delete mode 100644 drivers/net/wireless/mwifiex/sta_event.c delete mode 100644 drivers/net/wireless/mwifiex/sta_ioctl.c delete mode 100644 drivers/net/wireless/mwifiex/sta_rx.c delete mode 100644 drivers/net/wireless/mwifiex/sta_tx.c delete mode 100644 drivers/net/wireless/mwifiex/txrx.c delete mode 100644 drivers/net/wireless/mwifiex/uap_cmd.c delete mode 100644 drivers/net/wireless/mwifiex/uap_event.c delete mode 100644 drivers/net/wireless/mwifiex/uap_txrx.c delete mode 100644 drivers/net/wireless/mwifiex/usb.c delete mode 100644 drivers/net/wireless/mwifiex/usb.h delete mode 100644 drivers/net/wireless/mwifiex/util.c delete mode 100644 drivers/net/wireless/mwifiex/util.h delete mode 100644 drivers/net/wireless/mwifiex/wmm.c delete mode 100644 drivers/net/wireless/mwifiex/wmm.h delete mode 100644 drivers/net/wireless/mwl8k.c delete mode 100644 drivers/net/wireless/orinoco/Kconfig delete mode 100644 drivers/net/wireless/orinoco/Makefile delete mode 100644 drivers/net/wireless/orinoco/airport.c delete mode 100644 drivers/net/wireless/orinoco/cfg.c delete mode 100644 drivers/net/wireless/orinoco/cfg.h delete mode 100644 drivers/net/wireless/orinoco/fw.c delete mode 100644 drivers/net/wireless/orinoco/fw.h delete mode 100644 drivers/net/wireless/orinoco/hermes.c delete mode 100644 drivers/net/wireless/orinoco/hermes.h delete mode 100644 drivers/net/wireless/orinoco/hermes_dld.c delete mode 100644 drivers/net/wireless/orinoco/hermes_dld.h delete mode 100644 drivers/net/wireless/orinoco/hermes_rid.h delete mode 100644 drivers/net/wireless/orinoco/hw.c delete mode 100644 drivers/net/wireless/orinoco/hw.h delete mode 100644 drivers/net/wireless/orinoco/main.c delete mode 100644 drivers/net/wireless/orinoco/main.h delete mode 100644 drivers/net/wireless/orinoco/mic.c delete mode 100644 drivers/net/wireless/orinoco/mic.h delete mode 100644 drivers/net/wireless/orinoco/orinoco.h delete mode 100644 drivers/net/wireless/orinoco/orinoco_cs.c delete mode 100644 drivers/net/wireless/orinoco/orinoco_nortel.c delete mode 100644 drivers/net/wireless/orinoco/orinoco_pci.c delete mode 100644 drivers/net/wireless/orinoco/orinoco_pci.h delete mode 100644 drivers/net/wireless/orinoco/orinoco_plx.c delete mode 100644 drivers/net/wireless/orinoco/orinoco_tmd.c delete mode 100644 drivers/net/wireless/orinoco/orinoco_usb.c delete mode 100644 drivers/net/wireless/orinoco/scan.c delete mode 100644 drivers/net/wireless/orinoco/scan.h delete mode 100644 drivers/net/wireless/orinoco/spectrum_cs.c delete mode 100644 drivers/net/wireless/orinoco/wext.c delete mode 100644 drivers/net/wireless/orinoco/wext.h delete mode 100644 drivers/net/wireless/p54/Kconfig delete mode 100644 drivers/net/wireless/p54/Makefile delete mode 100644 drivers/net/wireless/p54/eeprom.c delete mode 100644 drivers/net/wireless/p54/eeprom.h delete mode 100644 drivers/net/wireless/p54/fwio.c delete mode 100644 drivers/net/wireless/p54/led.c delete mode 100644 drivers/net/wireless/p54/lmac.h delete mode 100644 drivers/net/wireless/p54/main.c delete mode 100644 drivers/net/wireless/p54/net2280.h delete mode 100644 drivers/net/wireless/p54/p54.h delete mode 100644 drivers/net/wireless/p54/p54pci.c delete mode 100644 drivers/net/wireless/p54/p54pci.h delete mode 100644 drivers/net/wireless/p54/p54spi.c delete mode 100644 drivers/net/wireless/p54/p54spi.h delete mode 100644 drivers/net/wireless/p54/p54spi_eeprom.h delete mode 100644 drivers/net/wireless/p54/p54usb.c delete mode 100644 drivers/net/wireless/p54/p54usb.h delete mode 100644 drivers/net/wireless/p54/txrx.c delete mode 100644 drivers/net/wireless/rndis_wlan.c delete mode 100644 drivers/net/wireless/rt2x00/Kconfig delete mode 100644 drivers/net/wireless/rt2x00/Makefile delete mode 100644 drivers/net/wireless/rt2x00/rt2400pci.c delete mode 100644 drivers/net/wireless/rt2x00/rt2400pci.h delete mode 100644 drivers/net/wireless/rt2x00/rt2500pci.c delete mode 100644 drivers/net/wireless/rt2x00/rt2500pci.h delete mode 100644 drivers/net/wireless/rt2x00/rt2500usb.c delete mode 100644 drivers/net/wireless/rt2x00/rt2500usb.h delete mode 100644 drivers/net/wireless/rt2x00/rt2800.h delete mode 100644 drivers/net/wireless/rt2x00/rt2800lib.c delete mode 100644 drivers/net/wireless/rt2x00/rt2800lib.h delete mode 100644 drivers/net/wireless/rt2x00/rt2800pci.c delete mode 100644 drivers/net/wireless/rt2x00/rt2800pci.h delete mode 100644 drivers/net/wireless/rt2x00/rt2800usb.c delete mode 100644 drivers/net/wireless/rt2x00/rt2800usb.h delete mode 100644 drivers/net/wireless/rt2x00/rt2x00.h delete mode 100644 drivers/net/wireless/rt2x00/rt2x00config.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00crypto.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00debug.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00debug.h delete mode 100644 drivers/net/wireless/rt2x00/rt2x00dev.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00dump.h delete mode 100644 drivers/net/wireless/rt2x00/rt2x00firmware.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00leds.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00leds.h delete mode 100644 drivers/net/wireless/rt2x00/rt2x00lib.h delete mode 100644 drivers/net/wireless/rt2x00/rt2x00link.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00mac.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00pci.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00pci.h delete mode 100644 drivers/net/wireless/rt2x00/rt2x00queue.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00queue.h delete mode 100644 drivers/net/wireless/rt2x00/rt2x00reg.h delete mode 100644 drivers/net/wireless/rt2x00/rt2x00soc.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00soc.h delete mode 100644 drivers/net/wireless/rt2x00/rt2x00usb.c delete mode 100644 drivers/net/wireless/rt2x00/rt2x00usb.h delete mode 100644 drivers/net/wireless/rt2x00/rt61pci.c delete mode 100644 drivers/net/wireless/rt2x00/rt61pci.h delete mode 100644 drivers/net/wireless/rt2x00/rt73usb.c delete mode 100644 drivers/net/wireless/rt2x00/rt73usb.h delete mode 100644 drivers/net/wireless/rtl818x/Kconfig delete mode 100644 drivers/net/wireless/rtl818x/Makefile delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/Makefile delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/dev.c delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/grf5101.c delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/grf5101.h delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/max2820.c delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/max2820.h delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/rtl8180.h delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/rtl8225.c delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/rtl8225.h delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/sa2400.c delete mode 100644 drivers/net/wireless/rtl818x/rtl8180/sa2400.h delete mode 100644 drivers/net/wireless/rtl818x/rtl8187/Makefile delete mode 100644 drivers/net/wireless/rtl818x/rtl8187/dev.c delete mode 100644 drivers/net/wireless/rtl818x/rtl8187/leds.c delete mode 100644 drivers/net/wireless/rtl818x/rtl8187/leds.h delete mode 100644 drivers/net/wireless/rtl818x/rtl8187/rfkill.c delete mode 100644 drivers/net/wireless/rtl818x/rtl8187/rfkill.h delete mode 100644 drivers/net/wireless/rtl818x/rtl8187/rtl8187.h delete mode 100644 drivers/net/wireless/rtl818x/rtl8187/rtl8225.c delete mode 100644 drivers/net/wireless/rtl818x/rtl8187/rtl8225.h delete mode 100644 drivers/net/wireless/rtl818x/rtl818x.h delete mode 100644 drivers/net/wireless/rtlwifi/Kconfig delete mode 100644 drivers/net/wireless/rtlwifi/Makefile delete mode 100644 drivers/net/wireless/rtlwifi/base.c delete mode 100644 drivers/net/wireless/rtlwifi/base.h delete mode 100644 drivers/net/wireless/rtlwifi/cam.c delete mode 100644 drivers/net/wireless/rtlwifi/cam.h delete mode 100644 drivers/net/wireless/rtlwifi/core.c delete mode 100644 drivers/net/wireless/rtlwifi/core.h delete mode 100644 drivers/net/wireless/rtlwifi/debug.c delete mode 100644 drivers/net/wireless/rtlwifi/debug.h delete mode 100644 drivers/net/wireless/rtlwifi/efuse.c delete mode 100644 drivers/net/wireless/rtlwifi/efuse.h delete mode 100644 drivers/net/wireless/rtlwifi/pci.c delete mode 100644 drivers/net/wireless/rtlwifi/pci.h delete mode 100644 drivers/net/wireless/rtlwifi/ps.c delete mode 100644 drivers/net/wireless/rtlwifi/ps.h delete mode 100644 drivers/net/wireless/rtlwifi/rc.c delete mode 100644 drivers/net/wireless/rtlwifi/rc.h delete mode 100644 drivers/net/wireless/rtlwifi/regd.c delete mode 100644 drivers/net/wireless/rtlwifi/regd.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192c/Makefile delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192c/fw_common.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192c/main.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192c/phy_common.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/Makefile delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/def.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/dm.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/dm.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/hw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/hw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/led.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/led.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/phy.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/phy.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/reg.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/rf.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/rf.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/sw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/sw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/table.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/table.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/trx.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/trx.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/Makefile delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/def.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/dm.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/dm.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/hw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/hw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/led.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/led.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/mac.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/mac.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/phy.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/phy.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/reg.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/rf.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/rf.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/sw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/sw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/table.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/table.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/trx.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192cu/trx.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/Makefile delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/def.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/dm.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/dm.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/fw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/fw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/hw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/hw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/led.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/led.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/phy.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/phy.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/reg.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/rf.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/rf.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/sw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/sw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/table.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/table.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/trx.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192de/trx.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/Makefile delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/def.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/dm.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/dm.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/fw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/fw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/hw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/hw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/led.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/led.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/phy.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/phy.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/reg.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/rf.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/rf.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/sw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/sw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/table.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/table.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/trx.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8192se/trx.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/Makefile delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/btc.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/def.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/dm.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/dm.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/fw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/fw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/hal_bt_coexist.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/hal_bt_coexist.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/hal_btc.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/hal_btc.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/hw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/hw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/led.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/led.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/phy.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/phy.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/pwrseq.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/pwrseq.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/pwrseqcmd.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/pwrseqcmd.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/reg.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/rf.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/rf.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/sw.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/sw.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/table.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/table.h delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/trx.c delete mode 100644 drivers/net/wireless/rtlwifi/rtl8723ae/trx.h delete mode 100644 drivers/net/wireless/rtlwifi/stats.c delete mode 100644 drivers/net/wireless/rtlwifi/stats.h delete mode 100644 drivers/net/wireless/rtlwifi/usb.c delete mode 100644 drivers/net/wireless/rtlwifi/usb.h delete mode 100644 drivers/net/wireless/rtlwifi/wifi.h delete mode 100644 drivers/net/wireless/ti/Kconfig delete mode 100644 drivers/net/wireless/ti/Makefile delete mode 100644 drivers/net/wireless/ti/wilink_platform_data.c delete mode 100644 drivers/net/wireless/ti/wl1251/Kconfig delete mode 100644 drivers/net/wireless/ti/wl1251/Makefile delete mode 100644 drivers/net/wireless/ti/wl1251/acx.c delete mode 100644 drivers/net/wireless/ti/wl1251/acx.h delete mode 100644 drivers/net/wireless/ti/wl1251/boot.c delete mode 100644 drivers/net/wireless/ti/wl1251/boot.h delete mode 100644 drivers/net/wireless/ti/wl1251/cmd.c delete mode 100644 drivers/net/wireless/ti/wl1251/cmd.h delete mode 100644 drivers/net/wireless/ti/wl1251/debugfs.c delete mode 100644 drivers/net/wireless/ti/wl1251/debugfs.h delete mode 100644 drivers/net/wireless/ti/wl1251/event.c delete mode 100644 drivers/net/wireless/ti/wl1251/event.h delete mode 100644 drivers/net/wireless/ti/wl1251/init.c delete mode 100644 drivers/net/wireless/ti/wl1251/init.h delete mode 100644 drivers/net/wireless/ti/wl1251/io.c delete mode 100644 drivers/net/wireless/ti/wl1251/io.h delete mode 100644 drivers/net/wireless/ti/wl1251/main.c delete mode 100644 drivers/net/wireless/ti/wl1251/ps.c delete mode 100644 drivers/net/wireless/ti/wl1251/ps.h delete mode 100644 drivers/net/wireless/ti/wl1251/reg.h delete mode 100644 drivers/net/wireless/ti/wl1251/rx.c delete mode 100644 drivers/net/wireless/ti/wl1251/rx.h delete mode 100644 drivers/net/wireless/ti/wl1251/sdio.c delete mode 100644 drivers/net/wireless/ti/wl1251/spi.c delete mode 100644 drivers/net/wireless/ti/wl1251/spi.h delete mode 100644 drivers/net/wireless/ti/wl1251/tx.c delete mode 100644 drivers/net/wireless/ti/wl1251/tx.h delete mode 100644 drivers/net/wireless/ti/wl1251/wl1251.h delete mode 100644 drivers/net/wireless/ti/wl1251/wl12xx_80211.h delete mode 100644 drivers/net/wireless/ti/wl12xx/Kconfig delete mode 100644 drivers/net/wireless/ti/wl12xx/Makefile delete mode 100644 drivers/net/wireless/ti/wl12xx/acx.c delete mode 100644 drivers/net/wireless/ti/wl12xx/acx.h delete mode 100644 drivers/net/wireless/ti/wl12xx/cmd.c delete mode 100644 drivers/net/wireless/ti/wl12xx/cmd.h delete mode 100644 drivers/net/wireless/ti/wl12xx/conf.h delete mode 100644 drivers/net/wireless/ti/wl12xx/debugfs.c delete mode 100644 drivers/net/wireless/ti/wl12xx/debugfs.h delete mode 100644 drivers/net/wireless/ti/wl12xx/event.c delete mode 100644 drivers/net/wireless/ti/wl12xx/event.h delete mode 100644 drivers/net/wireless/ti/wl12xx/main.c delete mode 100644 drivers/net/wireless/ti/wl12xx/reg.h delete mode 100644 drivers/net/wireless/ti/wl12xx/scan.c delete mode 100644 drivers/net/wireless/ti/wl12xx/scan.h delete mode 100644 drivers/net/wireless/ti/wl12xx/wl12xx.h delete mode 100644 drivers/net/wireless/ti/wl18xx/Kconfig delete mode 100644 drivers/net/wireless/ti/wl18xx/Makefile delete mode 100644 drivers/net/wireless/ti/wl18xx/acx.c delete mode 100644 drivers/net/wireless/ti/wl18xx/acx.h delete mode 100644 drivers/net/wireless/ti/wl18xx/cmd.c delete mode 100644 drivers/net/wireless/ti/wl18xx/cmd.h delete mode 100644 drivers/net/wireless/ti/wl18xx/conf.h delete mode 100644 drivers/net/wireless/ti/wl18xx/debugfs.c delete mode 100644 drivers/net/wireless/ti/wl18xx/debugfs.h delete mode 100644 drivers/net/wireless/ti/wl18xx/event.c delete mode 100644 drivers/net/wireless/ti/wl18xx/event.h delete mode 100644 drivers/net/wireless/ti/wl18xx/io.c delete mode 100644 drivers/net/wireless/ti/wl18xx/io.h delete mode 100644 drivers/net/wireless/ti/wl18xx/main.c delete mode 100644 drivers/net/wireless/ti/wl18xx/reg.h delete mode 100644 drivers/net/wireless/ti/wl18xx/scan.c delete mode 100644 drivers/net/wireless/ti/wl18xx/scan.h delete mode 100644 drivers/net/wireless/ti/wl18xx/tx.c delete mode 100644 drivers/net/wireless/ti/wl18xx/tx.h delete mode 100644 drivers/net/wireless/ti/wl18xx/wl18xx.h delete mode 100644 drivers/net/wireless/ti/wlcore/Kconfig delete mode 100644 drivers/net/wireless/ti/wlcore/Makefile delete mode 100644 drivers/net/wireless/ti/wlcore/acx.c delete mode 100644 drivers/net/wireless/ti/wlcore/acx.h delete mode 100644 drivers/net/wireless/ti/wlcore/boot.c delete mode 100644 drivers/net/wireless/ti/wlcore/boot.h delete mode 100644 drivers/net/wireless/ti/wlcore/cmd.c delete mode 100644 drivers/net/wireless/ti/wlcore/cmd.h delete mode 100644 drivers/net/wireless/ti/wlcore/conf.h delete mode 100644 drivers/net/wireless/ti/wlcore/debug.h delete mode 100644 drivers/net/wireless/ti/wlcore/debugfs.c delete mode 100644 drivers/net/wireless/ti/wlcore/debugfs.h delete mode 100644 drivers/net/wireless/ti/wlcore/event.c delete mode 100644 drivers/net/wireless/ti/wlcore/event.h delete mode 100644 drivers/net/wireless/ti/wlcore/hw_ops.h delete mode 100644 drivers/net/wireless/ti/wlcore/ini.h delete mode 100644 drivers/net/wireless/ti/wlcore/init.c delete mode 100644 drivers/net/wireless/ti/wlcore/init.h delete mode 100644 drivers/net/wireless/ti/wlcore/io.c delete mode 100644 drivers/net/wireless/ti/wlcore/io.h delete mode 100644 drivers/net/wireless/ti/wlcore/main.c delete mode 100644 drivers/net/wireless/ti/wlcore/ps.c delete mode 100644 drivers/net/wireless/ti/wlcore/ps.h delete mode 100644 drivers/net/wireless/ti/wlcore/rx.c delete mode 100644 drivers/net/wireless/ti/wlcore/rx.h delete mode 100644 drivers/net/wireless/ti/wlcore/scan.c delete mode 100644 drivers/net/wireless/ti/wlcore/scan.h delete mode 100644 drivers/net/wireless/ti/wlcore/sdio.c delete mode 100644 drivers/net/wireless/ti/wlcore/spi.c delete mode 100644 drivers/net/wireless/ti/wlcore/testmode.c delete mode 100644 drivers/net/wireless/ti/wlcore/testmode.h delete mode 100644 drivers/net/wireless/ti/wlcore/tx.c delete mode 100644 drivers/net/wireless/ti/wlcore/tx.h delete mode 100644 drivers/net/wireless/ti/wlcore/wl12xx_80211.h delete mode 100644 drivers/net/wireless/ti/wlcore/wlcore.h delete mode 100644 drivers/net/wireless/ti/wlcore/wlcore_i.h delete mode 100644 drivers/net/wireless/zd1211rw/Kconfig delete mode 100644 drivers/net/wireless/zd1211rw/Makefile delete mode 100644 drivers/net/wireless/zd1211rw/zd_chip.c delete mode 100644 drivers/net/wireless/zd1211rw/zd_chip.h delete mode 100644 drivers/net/wireless/zd1211rw/zd_def.h delete mode 100644 drivers/net/wireless/zd1211rw/zd_mac.c delete mode 100644 drivers/net/wireless/zd1211rw/zd_mac.h delete mode 100644 drivers/net/wireless/zd1211rw/zd_rf.c delete mode 100644 drivers/net/wireless/zd1211rw/zd_rf.h delete mode 100644 drivers/net/wireless/zd1211rw/zd_rf_al2230.c delete mode 100644 drivers/net/wireless/zd1211rw/zd_rf_al7230b.c delete mode 100644 drivers/net/wireless/zd1211rw/zd_rf_rf2959.c delete mode 100644 drivers/net/wireless/zd1211rw/zd_rf_uw2453.c delete mode 100644 drivers/net/wireless/zd1211rw/zd_usb.c delete mode 100644 drivers/net/wireless/zd1211rw/zd_usb.h delete mode 100644 drivers/platform/x86/intel_ips.h delete mode 100644 drivers/ssb/Kconfig delete mode 100644 drivers/ssb/Makefile delete mode 100644 drivers/ssb/b43_pci_bridge.c delete mode 100644 drivers/ssb/driver_chipcommon.c delete mode 100644 drivers/ssb/driver_chipcommon_pmu.c delete mode 100644 drivers/ssb/driver_chipcommon_sflash.c delete mode 100644 drivers/ssb/driver_extif.c delete mode 100644 drivers/ssb/driver_gige.c delete mode 100644 drivers/ssb/driver_gpio.c delete mode 100644 drivers/ssb/driver_mipscore.c delete mode 100644 drivers/ssb/driver_pcicore.c delete mode 100644 drivers/ssb/embedded.c delete mode 100644 drivers/ssb/main.c delete mode 100644 drivers/ssb/pci.c delete mode 100644 drivers/ssb/pcihost_wrapper.c delete mode 100644 drivers/ssb/pcmcia.c delete mode 100644 drivers/ssb/scan.c delete mode 100644 drivers/ssb/sdio.c delete mode 100644 drivers/ssb/sprom.c delete mode 100644 drivers/ssb/ssb_private.h delete mode 100644 drivers/video/Makefile delete mode 100644 drivers/video/hdmi.c delete mode 100644 enable-older-kernels/README delete mode 100644 enable-older-kernels/enable-2.6.21.patch delete mode 100644 enable-older-kernels/enable-2.6.22.patch delete mode 100644 enable-older-kernels/enable-2.6.23.patch create mode 100644 etf_itp_patches/0001-Revert-cw1200-Eliminate-the-ETF-debug-engineering-co.patch create mode 100644 etf_itp_patches/0002-Revert-cw1200-Remove-ITP-debug-subsystem.patch delete mode 100644 include/crypto/aes.h delete mode 100644 include/drm/drmP.h delete mode 100644 include/drm/drm_buffer.h delete mode 100644 include/drm/drm_cache.h delete mode 100644 include/drm/drm_core.h delete mode 100644 include/drm/drm_crtc.h delete mode 100644 include/drm/drm_crtc_helper.h delete mode 100644 include/drm/drm_dp_helper.h delete mode 100644 include/drm/drm_edid.h delete mode 100644 include/drm/drm_encoder_slave.h delete mode 100644 include/drm/drm_fb_cma_helper.h delete mode 100644 include/drm/drm_fb_helper.h delete mode 100644 include/drm/drm_fixed.h delete mode 100644 include/drm/drm_gem_cma_helper.h delete mode 100644 include/drm/drm_global.h delete mode 100644 include/drm/drm_hashtab.h delete mode 100644 include/drm/drm_mem_util.h delete mode 100644 include/drm/drm_memory.h delete mode 100644 include/drm/drm_mm.h delete mode 100644 include/drm/drm_os_linux.h delete mode 100644 include/drm/drm_pciids.h delete mode 100644 include/drm/drm_sysfs.h delete mode 100644 include/drm/drm_usb.h delete mode 100644 include/drm/exynos_drm.h delete mode 100644 include/drm/gma_drm.h delete mode 100644 include/drm/i2c/ch7006.h delete mode 100644 include/drm/i2c/sil164.h delete mode 100644 include/drm/i915_drm.h delete mode 100644 include/drm/intel-gtt.h delete mode 100644 include/drm/ttm/ttm_bo_api.h delete mode 100644 include/drm/ttm/ttm_bo_driver.h delete mode 100644 include/drm/ttm/ttm_execbuf_util.h delete mode 100644 include/drm/ttm/ttm_lock.h delete mode 100644 include/drm/ttm/ttm_memory.h delete mode 100644 include/drm/ttm/ttm_module.h delete mode 100644 include/drm/ttm/ttm_object.h delete mode 100644 include/drm/ttm/ttm_page_alloc.h delete mode 100644 include/drm/ttm/ttm_placement.h delete mode 100644 include/linux/ath9k_platform.h delete mode 100644 include/linux/atomic.h delete mode 100644 include/linux/average.h delete mode 100644 include/linux/bcm47xx_wdt.h delete mode 100644 include/linux/bcma/bcma.h delete mode 100644 include/linux/bcma/bcma_driver_chipcommon.h delete mode 100644 include/linux/bcma/bcma_driver_gmac_cmn.h delete mode 100644 include/linux/bcma/bcma_driver_mips.h delete mode 100644 include/linux/bcma/bcma_driver_pci.h delete mode 100644 include/linux/bcma/bcma_regs.h delete mode 100644 include/linux/bcma/bcma_soc.h delete mode 100644 include/linux/bitops.h delete mode 100644 include/linux/compat-2.6.14.h delete mode 100644 include/linux/compat-2.6.18.h delete mode 100644 include/linux/compat-2.6.19.h delete mode 100644 include/linux/compat-2.6.20.h delete mode 100644 include/linux/compat-2.6.21.h delete mode 100644 include/linux/compat-2.6.22.h delete mode 100644 include/linux/compat-2.6.23.h delete mode 100644 include/linux/compat-2.6.24.h delete mode 100644 include/linux/compat-2.6.25.h delete mode 100644 include/linux/compat-2.6.26.h delete mode 100644 include/linux/compat-2.6.27.h delete mode 100644 include/linux/compat-2.6.28.h delete mode 100644 include/linux/compat-2.6.29.h delete mode 100644 include/linux/compat-2.6.30.h delete mode 100644 include/linux/compat-2.6.31.h delete mode 100644 include/linux/compat-2.6.32.h delete mode 100644 include/linux/compat-2.6.33.h delete mode 100644 include/linux/compat-2.6.34.h delete mode 100644 include/linux/compat-2.6.35.h delete mode 100644 include/linux/compat-2.6.36.h delete mode 100644 include/linux/compat-2.6.37.h delete mode 100644 include/linux/compat-2.6.38.h delete mode 100644 include/linux/compat-2.6.39.h delete mode 100644 include/linux/compat-2.6.h delete mode 100644 include/linux/compat-3.0.h delete mode 100644 include/linux/compat-3.1.h delete mode 100644 include/linux/compat-3.2.h delete mode 100644 include/linux/compat-3.3.h delete mode 100644 include/linux/compat-3.4.h delete mode 100644 include/linux/compat-3.5.h delete mode 100644 include/linux/compat-3.6.h delete mode 100644 include/linux/compat-3.7.h delete mode 100644 include/linux/compat-3.8.h delete mode 100644 include/linux/compat-3.9.h delete mode 100644 include/linux/cordic.h delete mode 100644 include/linux/crc8.h delete mode 100644 include/linux/cw1200_platform.h delete mode 100644 include/linux/eeprom_93cx6.h delete mode 100644 include/linux/export.h delete mode 100644 include/linux/gpio.h delete mode 100644 include/linux/hdmi.h delete mode 100644 include/linux/ieee80211.h delete mode 100644 include/linux/kfifo.h delete mode 100644 include/linux/kmemleak.h delete mode 100644 include/linux/math64.h delete mode 100644 include/linux/mdio.h delete mode 100644 include/linux/of.h delete mode 100644 include/linux/olpc-ec.h delete mode 100644 include/linux/pci-aspm.h delete mode 100644 include/linux/pci_ids.h delete mode 100644 include/linux/pm_qos.h delete mode 100644 include/linux/pm_qos_params.h delete mode 100644 include/linux/pm_runtime.h delete mode 100644 include/linux/printk.h delete mode 100644 include/linux/rfkill.h delete mode 100644 include/linux/rfkill_backport.h delete mode 100644 include/linux/rndis.h delete mode 100644 include/linux/semaphore.h delete mode 100644 include/linux/spi/libertas_spi.h delete mode 100644 include/linux/ssb/ssb.h delete mode 100644 include/linux/ssb/ssb_driver_chipcommon.h delete mode 100644 include/linux/ssb/ssb_driver_extif.h delete mode 100644 include/linux/ssb/ssb_driver_gige.h delete mode 100644 include/linux/ssb/ssb_driver_mips.h delete mode 100644 include/linux/ssb/ssb_driver_pci.h delete mode 100644 include/linux/ssb/ssb_embedded.h delete mode 100644 include/linux/ssb/ssb_regs.h delete mode 100644 include/linux/tracepoint.h delete mode 100644 include/linux/u64_stats_sync.h delete mode 100644 include/linux/uidgid.h delete mode 100644 include/linux/unaligned/access_ok.h delete mode 100644 include/linux/unaligned/be_byteshift.h delete mode 100644 include/linux/unaligned/be_memmove.h delete mode 100644 include/linux/unaligned/be_struct.h delete mode 100644 include/linux/unaligned/generic.h delete mode 100644 include/linux/unaligned/le_byteshift.h delete mode 100644 include/linux/unaligned/le_memmove.h delete mode 100644 include/linux/unaligned/le_struct.h delete mode 100644 include/linux/unaligned/memmove.h delete mode 100644 include/linux/unaligned/packed_struct.h delete mode 100644 include/linux/usb/rndis_host.h delete mode 100644 include/linux/usb/usbnet.h delete mode 100644 include/linux/vga_switcheroo.h delete mode 100644 include/linux/wireless.h delete mode 100644 include/linux/wl12xx.h delete mode 100644 include/net/bluetooth/a2mp.h delete mode 100644 include/net/bluetooth/amp.h delete mode 100644 include/net/bluetooth/bluetooth.h delete mode 100644 include/net/bluetooth/hci.h delete mode 100644 include/net/bluetooth/hci_core.h delete mode 100644 include/net/bluetooth/hci_mon.h delete mode 100644 include/net/bluetooth/l2cap.h delete mode 100644 include/net/bluetooth/mgmt.h delete mode 100644 include/net/bluetooth/rfcomm.h delete mode 100644 include/net/bluetooth/sco.h delete mode 100644 include/net/bluetooth/smp.h delete mode 100644 include/net/cfg80211-wext.h delete mode 100644 include/net/cfg80211.h delete mode 100644 include/net/codel.h delete mode 100644 include/net/flow_keys.h delete mode 100644 include/net/ieee80211_radiotap.h delete mode 100644 include/net/lib80211.h delete mode 100644 include/net/mac80211.h delete mode 100644 include/net/net_namespace.h delete mode 100644 include/net/regulatory.h delete mode 100644 include/pcmcia/cistpl.h delete mode 100644 include/trace/define_trace.h delete mode 100644 include/uapi/drm/Kbuild delete mode 100644 include/uapi/drm/drm.h delete mode 100644 include/uapi/drm/drm_fourcc.h delete mode 100644 include/uapi/drm/drm_mode.h delete mode 100644 include/uapi/drm/drm_sarea.h delete mode 100644 include/uapi/drm/exynos_drm.h delete mode 100644 include/uapi/drm/i810_drm.h delete mode 100644 include/uapi/drm/i915_drm.h delete mode 100644 include/uapi/drm/mga_drm.h delete mode 100644 include/uapi/drm/nouveau_drm.h delete mode 100644 include/uapi/drm/omap_drm.h delete mode 100644 include/uapi/drm/r128_drm.h delete mode 100644 include/uapi/drm/radeon_drm.h delete mode 100644 include/uapi/drm/savage_drm.h delete mode 100644 include/uapi/drm/sis_drm.h delete mode 100644 include/uapi/drm/via_drm.h delete mode 100644 include/uapi/drm/vmwgfx_drm.h delete mode 100644 include/uapi/linux/mdio.h delete mode 100644 include/uapi/linux/nl80211.h delete mode 100644 include/uapi/linux/rfkill_backport.h delete mode 100644 linux-next-cherry-picks/network/.gitignore delete mode 100644 linux-next-pending/network/.gitignore delete mode 100644 net/bluetooth/Kconfig delete mode 100644 net/bluetooth/Makefile delete mode 100644 net/bluetooth/a2mp.c delete mode 100644 net/bluetooth/af_bluetooth.c delete mode 100644 net/bluetooth/amp.c delete mode 100644 net/bluetooth/bnep/Kconfig delete mode 100644 net/bluetooth/bnep/Makefile delete mode 100644 net/bluetooth/bnep/bnep.h delete mode 100644 net/bluetooth/bnep/core.c delete mode 100644 net/bluetooth/bnep/netdev.c delete mode 100644 net/bluetooth/bnep/sock.c delete mode 100644 net/bluetooth/cmtp/Kconfig delete mode 100644 net/bluetooth/cmtp/Makefile delete mode 100644 net/bluetooth/cmtp/capi.c delete mode 100644 net/bluetooth/cmtp/cmtp.h delete mode 100644 net/bluetooth/cmtp/core.c delete mode 100644 net/bluetooth/cmtp/sock.c delete mode 100644 net/bluetooth/hci_conn.c delete mode 100644 net/bluetooth/hci_core.c delete mode 100644 net/bluetooth/hci_event.c delete mode 100644 net/bluetooth/hci_sock.c delete mode 100644 net/bluetooth/hci_sysfs.c delete mode 100644 net/bluetooth/hidp/Kconfig delete mode 100644 net/bluetooth/hidp/Makefile delete mode 100644 net/bluetooth/hidp/core.c delete mode 100644 net/bluetooth/hidp/hidp.h delete mode 100644 net/bluetooth/hidp/sock.c delete mode 100644 net/bluetooth/l2cap_core.c delete mode 100644 net/bluetooth/l2cap_sock.c delete mode 100644 net/bluetooth/lib.c delete mode 100644 net/bluetooth/mgmt.c delete mode 100644 net/bluetooth/rfcomm/Kconfig delete mode 100644 net/bluetooth/rfcomm/Makefile delete mode 100644 net/bluetooth/rfcomm/core.c delete mode 100644 net/bluetooth/rfcomm/sock.c delete mode 100644 net/bluetooth/rfcomm/tty.c delete mode 100644 net/bluetooth/sco.c delete mode 100644 net/bluetooth/smp.c delete mode 100644 net/mac80211/Kconfig delete mode 100644 net/mac80211/Makefile delete mode 100644 net/mac80211/aes_ccm.c delete mode 100644 net/mac80211/aes_ccm.h delete mode 100644 net/mac80211/aes_cmac.c delete mode 100644 net/mac80211/aes_cmac.h delete mode 100644 net/mac80211/agg-rx.c delete mode 100644 net/mac80211/agg-tx.c delete mode 100644 net/mac80211/cfg.c delete mode 100644 net/mac80211/cfg.h delete mode 100644 net/mac80211/chan.c delete mode 100644 net/mac80211/debug.h delete mode 100644 net/mac80211/debugfs.c delete mode 100644 net/mac80211/debugfs.h delete mode 100644 net/mac80211/debugfs_key.c delete mode 100644 net/mac80211/debugfs_key.h delete mode 100644 net/mac80211/debugfs_netdev.c delete mode 100644 net/mac80211/debugfs_netdev.h delete mode 100644 net/mac80211/debugfs_sta.c delete mode 100644 net/mac80211/debugfs_sta.h delete mode 100644 net/mac80211/driver-ops.h delete mode 100644 net/mac80211/event.c delete mode 100644 net/mac80211/ht.c delete mode 100644 net/mac80211/ibss.c delete mode 100644 net/mac80211/ieee80211_i.h delete mode 100644 net/mac80211/iface.c delete mode 100644 net/mac80211/key.c delete mode 100644 net/mac80211/key.h delete mode 100644 net/mac80211/led.c delete mode 100644 net/mac80211/led.h delete mode 100644 net/mac80211/main.c delete mode 100644 net/mac80211/mesh.c delete mode 100644 net/mac80211/mesh.h delete mode 100644 net/mac80211/mesh_hwmp.c delete mode 100644 net/mac80211/mesh_pathtbl.c delete mode 100644 net/mac80211/mesh_plink.c delete mode 100644 net/mac80211/mesh_ps.c delete mode 100644 net/mac80211/mesh_sync.c delete mode 100644 net/mac80211/michael.c delete mode 100644 net/mac80211/michael.h delete mode 100644 net/mac80211/mlme.c delete mode 100644 net/mac80211/offchannel.c delete mode 100644 net/mac80211/pm.c delete mode 100644 net/mac80211/rate.c delete mode 100644 net/mac80211/rate.h delete mode 100644 net/mac80211/rc80211_minstrel.c delete mode 100644 net/mac80211/rc80211_minstrel.h delete mode 100644 net/mac80211/rc80211_minstrel_debugfs.c delete mode 100644 net/mac80211/rc80211_minstrel_ht.c delete mode 100644 net/mac80211/rc80211_minstrel_ht.h delete mode 100644 net/mac80211/rc80211_minstrel_ht_debugfs.c delete mode 100644 net/mac80211/rc80211_pid.h delete mode 100644 net/mac80211/rc80211_pid_algo.c delete mode 100644 net/mac80211/rc80211_pid_debugfs.c delete mode 100644 net/mac80211/rx.c delete mode 100644 net/mac80211/scan.c delete mode 100644 net/mac80211/spectmgmt.c delete mode 100644 net/mac80211/sta_info.c delete mode 100644 net/mac80211/sta_info.h delete mode 100644 net/mac80211/status.c delete mode 100644 net/mac80211/tkip.c delete mode 100644 net/mac80211/tkip.h delete mode 100644 net/mac80211/trace.c delete mode 100644 net/mac80211/trace.h delete mode 100644 net/mac80211/tx.c delete mode 100644 net/mac80211/util.c delete mode 100644 net/mac80211/vht.c delete mode 100644 net/mac80211/wep.c delete mode 100644 net/mac80211/wep.h delete mode 100644 net/mac80211/wme.c delete mode 100644 net/mac80211/wme.h delete mode 100644 net/mac80211/wpa.c delete mode 100644 net/mac80211/wpa.h delete mode 100644 net/rfkill/Kconfig delete mode 100644 net/rfkill/Makefile delete mode 100644 net/rfkill/core.c delete mode 100644 net/rfkill/input.c delete mode 100644 net/rfkill/rfkill-gpio.c delete mode 100644 net/rfkill/rfkill-regulator.c delete mode 100644 net/rfkill/rfkill.h delete mode 100644 net/wireless/Kconfig delete mode 100644 net/wireless/Makefile delete mode 100644 net/wireless/ap.c delete mode 100644 net/wireless/chan.c delete mode 100644 net/wireless/core.c delete mode 100644 net/wireless/core.h delete mode 100644 net/wireless/db.txt delete mode 100644 net/wireless/debugfs.c delete mode 100644 net/wireless/debugfs.h delete mode 100644 net/wireless/ethtool.c delete mode 100644 net/wireless/ethtool.h delete mode 100644 net/wireless/genregdb.awk delete mode 100644 net/wireless/ibss.c delete mode 100644 net/wireless/lib80211.c delete mode 100644 net/wireless/lib80211_crypt_ccmp.c delete mode 100644 net/wireless/lib80211_crypt_tkip.c delete mode 100644 net/wireless/lib80211_crypt_wep.c delete mode 100644 net/wireless/mesh.c delete mode 100644 net/wireless/mlme.c delete mode 100644 net/wireless/nl80211.c delete mode 100644 net/wireless/nl80211.h delete mode 100644 net/wireless/radiotap.c delete mode 100644 net/wireless/rdev-ops.h delete mode 100644 net/wireless/reg.c delete mode 100644 net/wireless/reg.h delete mode 100644 net/wireless/regdb.h delete mode 100644 net/wireless/scan.c delete mode 100644 net/wireless/sme.c delete mode 100644 net/wireless/sysfs.c delete mode 100644 net/wireless/sysfs.h delete mode 100644 net/wireless/trace.c delete mode 100644 net/wireless/trace.h delete mode 100644 net/wireless/util.c delete mode 100644 net/wireless/wext-compat.c delete mode 100644 net/wireless/wext-compat.h delete mode 100644 net/wireless/wext-core.c delete mode 100644 net/wireless/wext-priv.c delete mode 100644 net/wireless/wext-proc.c delete mode 100644 net/wireless/wext-sme.c delete mode 100644 net/wireless/wext-spy.c delete mode 100644 patches/collateral-evolutions/README delete mode 100644 patches/collateral-evolutions/drm/01-dma_buf_ops-addition.patch delete mode 100644 patches/collateral-evolutions/drm/02-revert-vm_mmap.patch delete mode 100644 patches/collateral-evolutions/drm/03-swiotlb.patch delete mode 100644 patches/collateral-evolutions/drm/04-revert-prime-support.patch delete mode 100644 patches/collateral-evolutions/drm/05-i915-define-acpi-video-class.patch delete mode 100644 patches/collateral-evolutions/drm/06-rename-config-options.patch delete mode 100644 patches/collateral-evolutions/drm/07-intel-gtt.patch delete mode 100644 patches/collateral-evolutions/drm/08-shmem_truncate_range.patch delete mode 100644 patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars.patch delete mode 100644 patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check.patch delete mode 100644 patches/collateral-evolutions/drm/11-videomode-includes.patch delete mode 100644 patches/collateral-evolutions/drm/98-pr_fmt.patch delete mode 100644 patches/collateral-evolutions/drm/99-change-makefile.patch delete mode 100644 patches/collateral-evolutions/network/0001-netdev_ops.patch delete mode 100644 patches/collateral-evolutions/network/0002-net-misc.patch delete mode 100644 patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom.patch delete mode 100644 patches/collateral-evolutions/network/0004-wext-namespace.patch delete mode 100644 patches/collateral-evolutions/network/0005-netlink-portid.patch delete mode 100644 patches/collateral-evolutions/network/02-ksize.patch delete mode 100644 patches/collateral-evolutions/network/03-rfkill.patch delete mode 100644 patches/collateral-evolutions/network/04-netns.patch delete mode 100644 patches/collateral-evolutions/network/05-usb.patch delete mode 100644 patches/collateral-evolutions/network/06-header-changes.patch delete mode 100644 patches/collateral-evolutions/network/07-change-default-rate-alg.patch delete mode 100644 patches/collateral-evolutions/network/08-rename-config-options.patch delete mode 100644 patches/collateral-evolutions/network/09-cfg80211-wext-padding.patch delete mode 100644 patches/collateral-evolutions/network/09-threaded-irq.patch delete mode 100644 patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev.patch delete mode 100644 patches/collateral-evolutions/network/11-dev-pm-ops.patch delete mode 100644 patches/collateral-evolutions/network/12-iw_handler-changes.patch delete mode 100644 patches/collateral-evolutions/network/12-mac80211-disable-tx-status.patch delete mode 100644 patches/collateral-evolutions/network/14-device-type.patch delete mode 100644 patches/collateral-evolutions/network/15-symbol-export-conflicts.patch delete mode 100644 patches/collateral-evolutions/network/16-bluetooth.patch delete mode 100644 patches/collateral-evolutions/network/17-netdev-queue.patch delete mode 100644 patches/collateral-evolutions/network/18-rename-usb-net-symbols.patch delete mode 100644 patches/collateral-evolutions/network/21-capi-proc_fops.patch delete mode 100644 patches/collateral-evolutions/network/22-multiqueue.patch delete mode 100644 patches/collateral-evolutions/network/24-pcmcia.patch delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head.patch delete mode 100644 patches/collateral-evolutions/network/26-sdio-quirks.patch delete mode 100644 patches/collateral-evolutions/network/27-hermes-read-pda-conflict.patch delete mode 100644 patches/collateral-evolutions/network/29-sdio_no_suspend.patch delete mode 100644 patches/collateral-evolutions/network/30-bridge-port.patch delete mode 100644 patches/collateral-evolutions/network/32-remove-ns-type.patch delete mode 100644 patches/collateral-evolutions/network/35-fix-makefile-includes.patch delete mode 100644 patches/collateral-evolutions/network/36-workqueue.patch delete mode 100644 patches/collateral-evolutions/network/37-vsnprintk.patch delete mode 100644 patches/collateral-evolutions/network/38-led-max-brightness.patch delete mode 100644 patches/collateral-evolutions/network/39-remove_blink_set.patch delete mode 100644 patches/collateral-evolutions/network/40-netdev-hw-features.patch delete mode 100644 patches/collateral-evolutions/network/42-netlink_seq.patch delete mode 100644 patches/collateral-evolutions/network/43-rename_pm_qos_request.patch delete mode 100644 patches/collateral-evolutions/network/44-deactivate-mac80211-tracing.patch delete mode 100644 patches/collateral-evolutions/network/45-remove-platform-id-table.patch delete mode 100644 patches/collateral-evolutions/network/46-use_other_workqueue.patch delete mode 100644 patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue.patch delete mode 100644 patches/collateral-evolutions/network/48-use_skb_get_queue_mapping.patch delete mode 100644 patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup.patch delete mode 100644 patches/collateral-evolutions/network/52-tty-dev.patch delete mode 100644 patches/collateral-evolutions/network/53-pr_fmt.patch delete mode 100644 patches/collateral-evolutions/network/54-get_ts_info.patch delete mode 100644 patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix.patch delete mode 100644 patches/collateral-evolutions/network/56-mac80211-trace-fix.patch delete mode 100644 patches/collateral-evolutions/network/57-iwlwifi-debug-fix.patch delete mode 100644 patches/collateral-evolutions/network/61-netdev-addr_assign_type.patch delete mode 100644 patches/collateral-evolutions/network/62-usb_driver_lpm.patch delete mode 100644 patches/collateral-evolutions/network/63-tty-termios.patch delete mode 100644 patches/collateral-evolutions/network/64-b44-32bit-stats.patch delete mode 100644 patches/collateral-evolutions/network/65-ignore-dismantle.patch delete mode 100644 patches/collateral-evolutions/network/66-uapi-changes.patch delete mode 100644 patches/collateral-evolutions/network/67-fix-section-mismatch.patch delete mode 100644 patches/collateral-evolutions/network/67-ipv6-dev-list.patch delete mode 100644 patches/collateral-evolutions/network/68-do-not-add-Werror.patch delete mode 100644 patches/collateral-evolutions/network/69-wowlan-no-socket.patch delete mode 100644 patches/collateral-evolutions/network/70-disable-dump-adjust-on-old-kernels.patch delete mode 100644 patches/collateral-evolutions/network/99-change-makefiles.patch delete mode 100644 patches/crap/README delete mode 100644 patches/linux-next-cherry-picks/README delete mode 100644 patches/linux-next-pending/README delete mode 100644 patches/pending-stable/.ignore delete mode 100644 patches/pending-stable/README delete mode 100644 patches/pending-stable/drm/.ignore delete mode 100644 patches/pending-stable/network/0001-mac80211-Fix-crash-due-to-un-canceled-work-items.patch delete mode 100644 patches/pending-stable/network/0002-rt2x00-rt2x00pci_regbusy_read-only-print-register-ac.patch delete mode 100644 patches/unified-drivers/README.md delete mode 100644 patches/unified-drivers/network/0001-backport-alx.patch delete mode 100644 patches/unified-drivers/network/0002-enable-alx.patch delete mode 100644 patches/unified-drivers/network/0004-alx-deactivate-loopback-test.patch delete mode 100644 patches/unified-drivers/network/0005-alx-intx-msi-workaround.patch delete mode 100644 pending-stable/network/.gitignore delete mode 100755 scripts/admin-clean.sh delete mode 100755 scripts/admin-refresh.sh delete mode 100755 scripts/admin-update.sh delete mode 100755 scripts/athenable delete mode 100755 scripts/athload delete mode 100755 scripts/b43enable delete mode 100755 scripts/b43load delete mode 100755 scripts/btunload.sh delete mode 100755 scripts/check_config.sh delete mode 100755 scripts/check_depmod delete mode 100755 scripts/compress_modules delete mode 100755 scripts/driver-select delete mode 100755 scripts/gen-compat-autoconf.sh delete mode 100755 scripts/gen-release.sh delete mode 100755 scripts/genlog-3.7 delete mode 100644 scripts/genlog-3.8 delete mode 100644 scripts/genlog-3.9 delete mode 100755 scripts/git-paranoia delete mode 100755 scripts/iwl-enable delete mode 100755 scripts/iwl-load delete mode 100755 scripts/madwifi-unload delete mode 100755 scripts/modlib.sh delete mode 100755 scripts/refresh-compat delete mode 100755 scripts/refresh-compat-local delete mode 100755 scripts/skip-colors delete mode 100755 scripts/unload.sh delete mode 100755 scripts/update-initramfs delete mode 100755 scripts/wlunload.sh delete mode 100644 udev/50-compat_firmware.rules delete mode 100755 udev/compat_firmware.sh delete mode 100755 udev/ubuntu/compat_firmware.sh diff --git a/.compat_base b/.compat_base deleted file mode 100644 index 87ec860..0000000 --- a/.compat_base +++ /dev/null @@ -1 +0,0 @@ -compat-v3.9-rc4-1 diff --git a/.compat_base_tree b/.compat_base_tree deleted file mode 100644 index ab2d925..0000000 --- a/.compat_base_tree +++ /dev/null @@ -1 +0,0 @@ -linux-stable.git diff --git a/.compat_base_tree_version b/.compat_base_tree_version deleted file mode 100644 index c727210..0000000 --- a/.compat_base_tree_version +++ /dev/null @@ -1 +0,0 @@ -v3.9-rc4 diff --git a/.compat_version b/.compat_version deleted file mode 100644 index 50080bd..0000000 --- a/.compat_version +++ /dev/null @@ -1 +0,0 @@ -compat-drivers-v3.9-rc4-2 diff --git a/.gitignore b/.gitignore deleted file mode 100644 index bddf37f..0000000 --- a/.gitignore +++ /dev/null @@ -1,30 +0,0 @@ -*.cmd -*.mod.c -*.ko - -compat_autoconf.h -regdb.c - -#drivers -#include -#net -#compat -#udev -*~ -git-describe -compat-release -Module.symvers -module.order -.pc -#code-metrics.txt -#.compat_base -#.compat_base_tree -#.compat_base_tree_version -#.compat_version -.compat_autoconf_compat-* -.config -.config.mk_md5sum.txt -.tmp_versions/ -#MAINTAINERS -modules -modules.order diff --git a/COPYING b/COPYING deleted file mode 100644 index ca442d3..0000000 --- a/COPYING +++ /dev/null @@ -1,356 +0,0 @@ - - NOTE! This copyright does *not* cover user programs that use kernel - services by normal system calls - this is merely considered normal use - of the kernel, and does *not* fall under the heading of "derived work". - Also note that the GPL below is copyrighted by the Free Software - Foundation, but the instance of code that it refers to (the Linux - kernel) is copyrighted by me and others who actually wrote it. - - Also note that the only valid version of the GPL as far as the kernel - is concerned is _this_ particular version of the license (ie v2, not - v2.2 or v3.x or whatever), unless explicitly otherwise stated. - - Linus Torvalds - ----------------------------------------- - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/MAINTAINERS b/MAINTAINERS deleted file mode 100644 index 505a1b0..0000000 --- a/MAINTAINERS +++ /dev/null @@ -1,9042 +0,0 @@ - - - List of maintainers and how to submit kernel changes - -Please try to follow the guidelines below. This will make things -easier on the maintainers. Not all of these guidelines matter for every -trivial patch so apply some common sense. - -1. Always _test_ your changes, however small, on at least 4 or - 5 people, preferably many more. - -2. Try to release a few ALPHA test versions to the net. Announce - them onto the kernel channel and await results. This is especially - important for device drivers, because often that's the only way - you will find things like the fact version 3 firmware needs - a magic fix you didn't know about, or some clown changed the - chips on a board and not its name. (Don't laugh! Look at the - SMC etherpower for that.) - -3. Make sure your changes compile correctly in multiple - configurations. In particular check that changes work both as a - module and built into the kernel. - -4. When you are happy with a change make it generally available for - testing and await feedback. - -5. Make a patch available to the relevant maintainer in the list. Use - 'diff -u' to make the patch easy to merge. Be prepared to get your - changes sent back with seemingly silly requests about formatting - and variable names. These aren't as silly as they seem. One - job the maintainers (and especially Linus) do is to keep things - looking the same. Sometimes this means that the clever hack in - your driver to get around a problem actually needs to become a - generalized kernel feature ready for next time. - - PLEASE check your patch with the automated style checker - (scripts/checkpatch.pl) to catch trival style violations. - See Documentation/CodingStyle for guidance here. - - PLEASE CC: the maintainers and mailing lists that are generated - by scripts/get_maintainer.pl. The results returned by the - script will be best if you have git installed and are making - your changes in a branch derived from Linus' latest git tree. - See Documentation/SubmittingPatches for details. - - PLEASE try to include any credit lines you want added with the - patch. It avoids people being missed off by mistake and makes - it easier to know who wants adding and who doesn't. - - PLEASE document known bugs. If it doesn't work for everything - or does something very odd once a month document it. - - PLEASE remember that submissions must be made under the terms - of the OSDL certificate of contribution and should include a - Signed-off-by: line. The current version of this "Developer's - Certificate of Origin" (DCO) is listed in the file - Documentation/SubmittingPatches. - -6. Make sure you have the right to send any changes you make. If you - do changes at work you may find your employer owns the patch - not you. - -7. When sending security related changes or reports to a maintainer - please Cc: security@kernel.org, especially if the maintainer - does not respond. - -8. Happy hacking. - -Descriptions of section entries: - - P: Person (obsolete) - M: Mail patches to: FullName - L: Mailing list that is relevant to this area - W: Web-page with status/info - Q: Patchwork web based patch tracking system site - T: SCM tree type and location. Type is one of: git, hg, quilt, stgit, topgit. - S: Status, one of the following: - Supported: Someone is actually paid to look after this. - Maintained: Someone actually looks after it. - Odd Fixes: It has a maintainer but they don't have time to do - much other than throw the odd patch in. See below.. - Orphan: No current maintainer [but maybe you could take the - role as you write your new code]. - Obsolete: Old code. Something tagged obsolete generally means - it has been replaced by a better system and you - should be using that. - F: Files and directories with wildcard patterns. - A trailing slash includes all files and subdirectory files. - F: drivers/net/ all files in and below drivers/net - F: drivers/net/* all files in drivers/net, but not below - F: */net/* all files in "any top level directory"/net - One pattern per line. Multiple F: lines acceptable. - X: Files and directories that are NOT maintained, same rules as F: - Files exclusions are tested before file matches. - Can be useful for excluding a specific subdirectory, for instance: - F: net/ - X: net/ipv6/ - matches all files in and below net excluding net/ipv6/ - K: Keyword perl extended regex pattern to match content in a - patch or file, or an affected filename. For instance: - K: of_get_profile - matches patch or file content, or filenames, that contain - "of_get_profile" - K: \b(printk|pr_(info|err))\b - matches patch or file content, or filenames, that contain one or - more of the words printk, pr_info or pr_err - One regex pattern per line. Multiple K: lines acceptable. - -Note: For the hard of thinking, this list is meant to remain in alphabetical -order. If you could add yourselves to it in alphabetical order that would be -so much easier [Ed] - -Maintainers List (try to look for most precise areas first) - - ----------------------------------- - -3C59X NETWORK DRIVER -M: Steffen Klassert -L: netdev@vger.kernel.org -S: Maintained -F: Documentation/networking/vortex.txt -F: drivers/net/ethernet/3com/3c59x.c - -3CR990 NETWORK DRIVER -M: David Dillow -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/3com/typhoon* - -3WARE SAS/SATA-RAID SCSI DRIVERS (3W-XXXX, 3W-9XXX, 3W-SAS) -M: Adam Radford -L: linux-scsi@vger.kernel.org -W: http://www.lsi.com -S: Supported -F: drivers/scsi/3w-* - -53C700 AND 53C700-66 SCSI DRIVER -M: "James E.J. Bottomley" -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/53c700* - -6PACK NETWORK DRIVER FOR AX.25 -M: Andreas Koensgen -L: linux-hams@vger.kernel.org -S: Maintained -F: drivers/net/hamradio/6pack.c - -8169 10/100/1000 GIGABIT ETHERNET DRIVER -M: Realtek linux nic maintainers -M: Francois Romieu -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/realtek/r8169.c - -8250/16?50 (AND CLONE UARTS) SERIAL DRIVER -M: Greg Kroah-Hartman -L: linux-serial@vger.kernel.org -W: http://serial.sourceforge.net -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git -F: drivers/tty/serial/8250* -F: include/linux/serial_8250.h - -8390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.] -L: netdev@vger.kernel.org -S: Orphan / Obsolete -F: drivers/net/ethernet/8390/ - -9P FILE SYSTEM -M: Eric Van Hensbergen -M: Ron Minnich -M: Latchesar Ionkov -L: v9fs-developer@lists.sourceforge.net -W: http://swik.net/v9fs -Q: http://patchwork.kernel.org/project/v9fs-devel/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs.git -S: Maintained -F: Documentation/filesystems/9p.txt -F: fs/9p/ - -A8293 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/dvb-frontends/a8293* - -AACRAID SCSI RAID DRIVER -M: Adaptec OEM Raid Solutions -L: linux-scsi@vger.kernel.org -W: http://www.adaptec.com/ -S: Supported -F: Documentation/scsi/aacraid.txt -F: drivers/scsi/aacraid/ - -ABIT UGURU 1,2 HARDWARE MONITOR DRIVER -M: Hans de Goede -L: lm-sensors@lm-sensors.org -S: Maintained -F: drivers/hwmon/abituguru.c - -ABIT UGURU 3 HARDWARE MONITOR DRIVER -M: Alistair John Strachan -L: lm-sensors@lm-sensors.org -S: Maintained -F: drivers/hwmon/abituguru3.c - -ACENIC DRIVER -M: Jes Sorensen -L: linux-acenic@sunsite.dk -S: Maintained -F: drivers/net/ethernet/alteon/acenic* - -ACER ASPIRE ONE TEMPERATURE AND FAN DRIVER -M: Peter Feuerer -L: platform-driver-x86@vger.kernel.org -W: http://piie.net/?section=acerhdf -S: Maintained -F: drivers/platform/x86/acerhdf.c - -ACER WMI LAPTOP EXTRAS -M: "Lee, Chun-Yi" -L: platform-driver-x86@vger.kernel.org -S: Maintained -F: drivers/platform/x86/acer-wmi.c - -ACPI -M: Len Brown -M: Rafael J. Wysocki -L: linux-acpi@vger.kernel.org -W: http://www.lesswatts.org/projects/acpi/ -Q: http://patchwork.kernel.org/project/linux-acpi/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux -S: Supported -F: drivers/acpi/ -F: drivers/pnp/pnpacpi/ -F: include/linux/acpi.h -F: include/acpi/ - -ACPI FAN DRIVER -M: Zhang Rui -L: linux-acpi@vger.kernel.org -W: http://www.lesswatts.org/projects/acpi/ -S: Supported -F: drivers/acpi/fan.c - -ACPI THERMAL DRIVER -M: Zhang Rui -L: linux-acpi@vger.kernel.org -W: http://www.lesswatts.org/projects/acpi/ -S: Supported -F: drivers/acpi/*thermal* - -ACPI VIDEO DRIVER -M: Zhang Rui -L: linux-acpi@vger.kernel.org -W: http://www.lesswatts.org/projects/acpi/ -S: Supported -F: drivers/acpi/video.c - -ACPI WMI DRIVER -L: platform-driver-x86@vger.kernel.org -S: Orphan -F: drivers/platform/x86/wmi.c - -AD1889 ALSA SOUND DRIVER -M: Thibaut Varene -W: http://wiki.parisc-linux.org/AD1889 -L: linux-parisc@vger.kernel.org -S: Maintained -F: sound/pci/ad1889.* - -AD525X ANALOG DEVICES DIGITAL POTENTIOMETERS DRIVER -M: Michael Hennerich -L: device-drivers-devel@blackfin.uclinux.org -W: http://wiki.analog.com/AD5254 -S: Supported -F: drivers/misc/ad525x_dpot.c - -AD5398 CURRENT REGULATOR DRIVER (AD5398/AD5821) -M: Michael Hennerich -L: device-drivers-devel@blackfin.uclinux.org -W: http://wiki.analog.com/AD5398 -S: Supported -F: drivers/regulator/ad5398.c - -AD714X CAPACITANCE TOUCH SENSOR DRIVER (AD7142/3/7/8/7A) -M: Michael Hennerich -L: device-drivers-devel@blackfin.uclinux.org -W: http://wiki.analog.com/AD7142 -S: Supported -F: drivers/input/misc/ad714x.c - -AD7877 TOUCHSCREEN DRIVER -M: Michael Hennerich -L: device-drivers-devel@blackfin.uclinux.org -W: http://wiki.analog.com/AD7877 -S: Supported -F: drivers/input/touchscreen/ad7877.c - -AD7879 TOUCHSCREEN DRIVER (AD7879/AD7889) -M: Michael Hennerich -L: device-drivers-devel@blackfin.uclinux.org -W: http://wiki.analog.com/AD7879 -S: Supported -F: drivers/input/touchscreen/ad7879.c - -ADDRESS SPACE LAYOUT RANDOMIZATION (ASLR) -M: Jiri Kosina -S: Maintained - -ADM1025 HARDWARE MONITOR DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/adm1025 -F: drivers/hwmon/adm1025.c - -ADM1029 HARDWARE MONITOR DRIVER -M: Corentin Labbe -L: lm-sensors@lm-sensors.org -S: Maintained -F: drivers/hwmon/adm1029.c - -ADM8211 WIRELESS DRIVER -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/ -S: Orphan -F: drivers/net/wireless/adm8211.* - -ADP1653 FLASH CONTROLLER DRIVER -M: Sakari Ailus -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/i2c/adp1653.c -F: include/media/adp1653.h - -ADP5520 BACKLIGHT DRIVER WITH IO EXPANDER (ADP5520/ADP5501) -M: Michael Hennerich -L: device-drivers-devel@blackfin.uclinux.org -W: http://wiki.analog.com/ADP5520 -S: Supported -F: drivers/mfd/adp5520.c -F: drivers/video/backlight/adp5520_bl.c -F: drivers/leds/leds-adp5520.c -F: drivers/gpio/gpio-adp5520.c -F: drivers/input/keyboard/adp5520-keys.c - -ADP5588 QWERTY KEYPAD AND IO EXPANDER DRIVER (ADP5588/ADP5587) -M: Michael Hennerich -L: device-drivers-devel@blackfin.uclinux.org -W: http://wiki.analog.com/ADP5588 -S: Supported -F: drivers/input/keyboard/adp5588-keys.c -F: drivers/gpio/gpio-adp5588.c - -ADP8860 BACKLIGHT DRIVER (ADP8860/ADP8861/ADP8863) -M: Michael Hennerich -L: device-drivers-devel@blackfin.uclinux.org -W: http://wiki.analog.com/ADP8860 -S: Supported -F: drivers/video/backlight/adp8860_bl.c - -ADS1015 HARDWARE MONITOR DRIVER -M: Dirk Eibach -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/ads1015 -F: drivers/hwmon/ads1015.c -F: include/linux/i2c/ads1015.h - -ADT746X FAN DRIVER -M: Colin Leroy -S: Maintained -F: drivers/macintosh/therm_adt746x.c - -ADT7475 HARDWARE MONITOR DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/adt7475 -F: drivers/hwmon/adt7475.c - -ADXL34X THREE-AXIS DIGITAL ACCELEROMETER DRIVER (ADXL345/ADXL346) -M: Michael Hennerich -L: device-drivers-devel@blackfin.uclinux.org -W: http://wiki.analog.com/ADXL345 -S: Supported -F: drivers/input/misc/adxl34x.c - -ADVANSYS SCSI DRIVER -M: Matthew Wilcox -L: linux-scsi@vger.kernel.org -S: Maintained -F: Documentation/scsi/advansys.txt -F: drivers/scsi/advansys.c - -AEDSP16 DRIVER -M: Riccardo Facchetti -S: Maintained -F: sound/oss/aedsp16.c - -AF9013 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/dvb-frontends/af9013* - -AF9033 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/dvb-frontends/af9033* - -AFFS FILE SYSTEM -L: linux-fsdevel@vger.kernel.org -S: Orphan -F: Documentation/filesystems/affs.txt -F: fs/affs/ - -AFS FILESYSTEM & AF_RXRPC SOCKET DOMAIN -M: David Howells -L: linux-afs@lists.infradead.org -S: Supported -F: fs/afs/ -F: include/net/af_rxrpc.h -F: net/rxrpc/af_rxrpc.c - -AGPGART DRIVER -M: David Airlie -T: git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git -S: Maintained -F: drivers/char/agp/ -F: include/linux/agp* -F: include/uapi/linux/agp* - -AHA152X SCSI DRIVER -M: "Juergen E. Fischer" -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/aha152x* -F: drivers/scsi/pcmcia/aha152x* - -AIC7XXX / AIC79XX SCSI DRIVER -M: Hannes Reinecke -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/aic7xxx/ -F: drivers/scsi/aic7xxx_old/ - -AIMSLAB FM RADIO RECEIVER DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/radio/radio-aimslab* - -AIO -M: Benjamin LaHaise -L: linux-aio@kvack.org -S: Supported -F: fs/aio.c -F: include/linux/*aio*.h - -ALCATEL SPEEDTOUCH USB DRIVER -M: Duncan Sands -L: linux-usb@vger.kernel.org -W: http://www.linux-usb.org/SpeedTouch/ -S: Maintained -F: drivers/usb/atm/speedtch.c -F: drivers/usb/atm/usbatm.c - -ALCHEMY AU1XX0 MMC DRIVER -M: Manuel Lauss -S: Maintained -F: drivers/mmc/host/au1xmmc.c - -ALI1563 I2C DRIVER -M: Rudolf Marek -L: linux-i2c@vger.kernel.org -S: Maintained -F: Documentation/i2c/busses/i2c-ali1563 -F: drivers/i2c/busses/i2c-ali1563.c - -ALPHA PORT -M: Richard Henderson -M: Ivan Kokshaysky -M: Matt Turner -S: Odd Fixes -L: linux-alpha@vger.kernel.org -F: arch/alpha/ - -ALTERA UART/JTAG UART SERIAL DRIVERS -M: Tobias Klauser -L: linux-serial@vger.kernel.org -L: nios2-dev@sopc.et.ntust.edu.tw (moderated for non-subscribers) -S: Maintained -F: drivers/tty/serial/altera_uart.c -F: drivers/tty/serial/altera_jtaguart.c -F: include/linux/altera_uart.h -F: include/linux/altera_jtaguart.h - -AMD FAM15H PROCESSOR POWER MONITORING DRIVER -M: Andreas Herrmann -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/fam15h_power -F: drivers/hwmon/fam15h_power.c - -AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER -M: Thomas Dahlmann -L: linux-geode@lists.infradead.org (moderated for non-subscribers) -S: Supported -F: drivers/usb/gadget/amd5536udc.* - -AMD GEODE PROCESSOR/CHIPSET SUPPORT -P: Andres Salomon -L: linux-geode@lists.infradead.org (moderated for non-subscribers) -W: http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html -S: Supported -F: drivers/char/hw_random/geode-rng.c -F: drivers/crypto/geode* -F: drivers/video/geode/ -F: arch/x86/include/asm/geode.h - -AMD IOMMU (AMD-VI) -M: Joerg Roedel -L: iommu@lists.linux-foundation.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git -S: Maintained -F: drivers/iommu/amd_iommu*.[ch] -F: include/linux/amd-iommu.h - -AMD MICROCODE UPDATE SUPPORT -M: Andreas Herrmann -L: amd64-microcode@amd64.org -S: Maintained -F: arch/x86/kernel/microcode_amd.c - -AMS (Apple Motion Sensor) DRIVER -M: Michael Hanselmann -S: Supported -F: drivers/macintosh/ams/ - -AMSO1100 RNIC DRIVER -M: Tom Tucker -M: Steve Wise -L: linux-rdma@vger.kernel.org -S: Maintained -F: drivers/infiniband/hw/amso1100/ - -ANALOG DEVICES INC AD9389B DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/i2c/ad9389b* - -ANALOG DEVICES INC ADV7604 DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/i2c/adv7604* - -ANALOG DEVICES INC ASOC CODEC DRIVERS -M: Lars-Peter Clausen -L: device-drivers-devel@blackfin.uclinux.org -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -W: http://wiki.analog.com/ -S: Supported -F: sound/soc/codecs/adau* -F: sound/soc/codecs/adav* -F: sound/soc/codecs/ad1* -F: sound/soc/codecs/ssm* -F: sound/soc/codecs/sigmadsp.* - -ANALOG DEVICES INC ASOC DRIVERS -L: uclinux-dist-devel@blackfin.uclinux.org -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -W: http://blackfin.uclinux.org/ -S: Supported -F: sound/soc/blackfin/* - -AOA (Apple Onboard Audio) ALSA DRIVER -M: Johannes Berg -L: linuxppc-dev@lists.ozlabs.org -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -S: Maintained -F: sound/aoa/ - -APM DRIVER -M: Jiri Kosina -S: Odd fixes -F: arch/x86/kernel/apm_32.c -F: include/linux/apm_bios.h -F: include/uapi/linux/apm_bios.h -F: drivers/char/apm-emulation.c - -APPLE BCM5974 MULTITOUCH DRIVER -M: Henrik Rydberg -L: linux-input@vger.kernel.org -S: Maintained -F: drivers/input/mouse/bcm5974.c - -APPLE SMC DRIVER -M: Henrik Rydberg -L: lm-sensors@lm-sensors.org -S: Maintained -F: drivers/hwmon/applesmc.c - -APPLETALK NETWORK LAYER -M: Arnaldo Carvalho de Melo -S: Maintained -F: drivers/net/appletalk/ -F: net/appletalk/ - -ARASAN COMPACT FLASH PATA CONTROLLER -M: Viresh Kumar -L: linux-ide@vger.kernel.org -S: Maintained -F: include/linux/pata_arasan_cf_data.h -F: drivers/ata/pata_arasan_cf.c - -ARC FRAMEBUFFER DRIVER -M: Jaya Kumar -S: Maintained -F: drivers/video/arcfb.c -F: drivers/video/fb_defio.c - -ARM MFM AND FLOPPY DRIVERS -M: Ian Molton -S: Maintained -F: arch/arm/lib/floppydma.S -F: arch/arm/include/asm/floppy.h - -ARM PMU PROFILING AND DEBUGGING -M: Will Deacon -S: Maintained -F: arch/arm/kernel/perf_event* -F: arch/arm/oprofile/common.c -F: arch/arm/include/asm/pmu.h -F: arch/arm/kernel/hw_breakpoint.c -F: arch/arm/include/asm/hw_breakpoint.h - -ARM PORT -M: Russell King -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.arm.linux.org.uk/ -S: Maintained -F: arch/arm/ - -ARM SUB-ARCHITECTURES -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-*/ -F: arch/arm/plat-*/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git - -ARM PRIMECELL AACI PL041 DRIVER -M: Russell King -S: Maintained -F: sound/arm/aaci.* - -ARM PRIMECELL CLCD PL110 DRIVER -M: Russell King -S: Maintained -F: drivers/video/amba-clcd.* - -ARM PRIMECELL KMI PL050 DRIVER -M: Russell King -S: Maintained -F: drivers/input/serio/ambakmi.* -F: include/linux/amba/kmi.h - -ARM PRIMECELL MMCI PL180/1 DRIVER -M: Russell King -S: Maintained -F: drivers/mmc/host/mmci.* -F: include/linux/amba/mmci.h - -ARM PRIMECELL UART PL010 AND PL011 DRIVERS -M: Russell King -S: Maintained -F: drivers/tty/serial/amba-pl01*.c -F: include/linux/amba/serial.h - -ARM PRIMECELL BUS SUPPORT -M: Russell King -S: Maintained -F: drivers/amba/ -F: include/linux/amba/bus.h - -ARM/ADS SPHERE MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/AFEB9260 MACHINE SUPPORT -M: Sergey Lapin -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/AJECO 1ARM MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/Allwinner A1X SoC support -M: Maxime Ripard -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-sunxi/ - -ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES -M: Andrew Victor -M: Nicolas Ferre -M: Jean-Christophe Plagniol-Villard -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://maxim.org.za/at91_26.html -W: http://www.linux4sam.org -S: Supported -F: arch/arm/mach-at91/ - -ARM/CALXEDA HIGHBANK ARCHITECTURE -M: Rob Herring -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-highbank/ - -ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT -M: Anton Vorontsov -S: Maintained -F: arch/arm/mach-cns3xxx/ -T: git git://git.infradead.org/users/cbou/linux-cns3xxx.git - -ARM/CIRRUS LOGIC CLPS711X ARM ARCHITECTURE -M: Alexander Shiyan -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Odd Fixes -F: arch/arm/mach-clps711x/ - -ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE -M: Hartley Sweeten -M: Ryan Mallon -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-ep93xx/ -F: arch/arm/mach-ep93xx/include/mach/ - -ARM/CIRRUS LOGIC EDB9315A MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/CLKDEV SUPPORT -M: Russell King -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/include/asm/clkdev.h -F: drivers/clk/clkdev.c - -ARM/COMPULAB CM-X270/EM-X270 and CM-X300 MACHINE SUPPORT -M: Mike Rapoport -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/CONTEC MICRO9 MACHINE SUPPORT -M: Hubert Feurstein -S: Maintained -F: arch/arm/mach-ep93xx/micro9.c - -ARM/CORGI MACHINE SUPPORT -M: Richard Purdie -S: Maintained - -ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE -M: Hans Ulli Kroll -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://git.berlios.de/gemini-board -S: Maintained -F: arch/arm/mach-gemini/ - -ARM/CSR SIRFPRIMA2 MACHINE SUPPORT -M: Barry Song -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-prima2/ -F: drivers/dma/sirf-dma.c -F: drivers/i2c/busses/i2c-sirf.c -F: drivers/pinctrl/pinctrl-sirf.c -F: drivers/spi/spi-sirf.c - -ARM/EBSA110 MACHINE SUPPORT -M: Russell King -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.arm.linux.org.uk/ -S: Maintained -F: arch/arm/mach-ebsa110/ -F: drivers/net/ethernet/amd/am79c961a.* - -ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6) -M: Daniel Ribeiro -M: Stefan Schmidt -M: Harald Welte -L: openezx-devel@lists.openezx.org (moderated for non-subscribers) -W: http://www.openezx.org/ -S: Maintained -T: topgit git://git.openezx.org/openezx.git -F: arch/arm/mach-pxa/ezx.c - -ARM/FARADAY FA526 PORT -M: Hans Ulli Kroll -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -T: git git://git.berlios.de/gemini-board -F: arch/arm/mm/*-fa* - -ARM/FOOTBRIDGE ARCHITECTURE -M: Russell King -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.arm.linux.org.uk/ -S: Maintained -F: arch/arm/include/asm/hardware/dec21285.h -F: arch/arm/mach-footbridge/ - -ARM/FREESCALE IMX / MXC ARM ARCHITECTURE -M: Sascha Hauer -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -T: git git://git.pengutronix.de/git/imx/linux-2.6.git -F: arch/arm/mach-imx/ -F: arch/arm/configs/imx*_defconfig - -ARM/FREESCALE IMX6 -M: Shawn Guo -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -T: git git://git.linaro.org/people/shawnguo/linux-2.6.git -F: arch/arm/mach-imx/*imx6* - -ARM/FREESCALE MXS ARM ARCHITECTURE -M: Shawn Guo -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -T: git git://git.linaro.org/people/shawnguo/linux-2.6.git -F: arch/arm/mach-mxs/ - -ARM/GLOMATION GESBC9312SX MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/GUMSTIX MACHINE SUPPORT -M: Steve Sakoman -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/H4700 (HP IPAQ HX4700) MACHINE SUPPORT -M: Philipp Zabel -M: Paul Parsons -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-pxa/hx4700.c -F: arch/arm/mach-pxa/include/mach/hx4700.h -F: sound/soc/pxa/hx4700.c - -ARM/HP JORNADA 7XX MACHINE SUPPORT -M: Kristoffer Ericson -W: www.jlime.com -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kristoffer/linux-hpc.git -F: arch/arm/mach-sa1100/jornada720.c -F: arch/arm/mach-sa1100/include/mach/jornada720.h - -ARM/IGEP MACHINE SUPPORT -M: Enric Balletbo i Serra -M: Javier Martinez Canillas -L: linux-omap@vger.kernel.org -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-omap2/board-igep0020.c - -ARM/INCOME PXA270 SUPPORT -M: Marek Vasut -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-pxa/colibri-pxa270-income.c - -ARM/INTEL IOP32X ARM ARCHITECTURE -M: Lennert Buytenhek -M: Dan Williams -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/INTEL IOP33X ARM ARCHITECTURE -M: Dan Williams -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/INTEL IOP13XX ARM ARCHITECTURE -M: Lennert Buytenhek -M: Dan Williams -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/INTEL IQ81342EX MACHINE SUPPORT -M: Lennert Buytenhek -M: Dan Williams -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/INTEL IXDP2850 MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/INTEL IXP4XX ARM ARCHITECTURE -M: Imre Kaloz -M: Krzysztof Halasa -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-ixp4xx/ - -ARM/INTEL RESEARCH IMOTE/STARGATE 2 MACHINE SUPPORT -M: Jonathan Cameron -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-pxa/stargate2.c -F: drivers/pcmcia/pxa2xx_stargate2.c - -ARM/INTEL XSC3 (MANZANO) ARM CORE -M: Lennert Buytenhek -M: Dan Williams -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/IP FABRICS DOUBLE ESPRESSO MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/LOGICPD PXA270 MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/MAGICIAN MACHINE SUPPORT -M: Philipp Zabel -S: Maintained - -ARM/Marvell Armada 370 and Armada XP SOC support -M: Jason Cooper -M: Andrew Lunn -M: Gregory Clement -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-mvebu/ - -ARM/Marvell Dove/Kirkwood/MV78xx0/Orion SOC support -M: Jason Cooper -M: Andrew Lunn -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-dove/ -F: arch/arm/mach-kirkwood/ -F: arch/arm/mach-mv78xx0/ -F: arch/arm/mach-orion5x/ -F: arch/arm/plat-orion/ - -ARM/Orion SoC/Technologic Systems TS-78xx platform support -M: Alexander Clouter -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.digriz.org.uk/ts78xx/kernel -S: Maintained -F: arch/arm/mach-orion5x/ts78xx-* - -ARM/MICREL KS8695 ARCHITECTURE -M: Greg Ungerer -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -F: arch/arm/mach-ks8695 -S: Odd Fixes - -ARM/MIOA701 MACHINE SUPPORT -M: Robert Jarzmik -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -F: arch/arm/mach-pxa/mioa701.c -S: Maintained - -ARM/NEC MOBILEPRO 900/c MACHINE SUPPORT -M: Michael Petchkovsky -S: Maintained - -ARM/NOMADIK ARCHITECTURE -M: Alessandro Rubini -M: Linus Walleij -M: STEricsson -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-nomadik/ -F: arch/arm/plat-nomadik/ -F: drivers/i2c/busses/i2c-nomadik.c -T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik.git - -ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT -M: Nelson Castillo -L: openmoko-kernel@lists.openmoko.org (subscribers-only) -W: http://wiki.openmoko.org/wiki/Neo_FreeRunner -S: Supported - -ARM/QUALCOMM MSM MACHINE SUPPORT -M: David Brown -M: Daniel Walker -M: Bryan Huntsman -L: linux-arm-msm@vger.kernel.org -F: arch/arm/mach-msm/ -F: drivers/video/msm/ -F: drivers/mmc/host/msm_sdcc.c -F: drivers/mmc/host/msm_sdcc.h -F: drivers/tty/serial/msm_serial.h -F: drivers/tty/serial/msm_serial.c -F: drivers/*/pm8???-* -F: include/linux/mfd/pm8xxx/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davidb/linux-msm.git -S: Maintained - -ARM/TOSA MACHINE SUPPORT -M: Dmitry Eremin-Solenikov -M: Dirk Opfer -S: Maintained - -ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT -M: Marek Vasut -L: linux-arm-kernel@lists.infradead.org -W: http://hackndev.com -S: Maintained -F: arch/arm/mach-pxa/include/mach/palmtx.h -F: arch/arm/mach-pxa/palmtx.c -F: arch/arm/mach-pxa/include/mach/palmt5.h -F: arch/arm/mach-pxa/palmt5.c -F: arch/arm/mach-pxa/include/mach/palmld.h -F: arch/arm/mach-pxa/palmld.c -F: arch/arm/mach-pxa/include/mach/palmte2.h -F: arch/arm/mach-pxa/palmte2.c -F: arch/arm/mach-pxa/include/mach/palmtc.h -F: arch/arm/mach-pxa/palmtc.c - -ARM/PALM TREO SUPPORT -M: Tomas Cech -L: linux-arm-kernel@lists.infradead.org -W: http://hackndev.com -S: Maintained -F: arch/arm/mach-pxa/include/mach/palmtreo.h -F: arch/arm/mach-pxa/palmtreo.c - -ARM/PALMZ72 SUPPORT -M: Sergey Lapin -L: linux-arm-kernel@lists.infradead.org -W: http://hackndev.com -S: Maintained -F: arch/arm/mach-pxa/include/mach/palmz72.h -F: arch/arm/mach-pxa/palmz72.c - -ARM/PLEB SUPPORT -M: Peter Chubb -W: http://www.disy.cse.unsw.edu.au/Hardware/PLEB -S: Maintained - -ARM/PT DIGITAL BOARD PORT -M: Stefan Eletzhofer -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.arm.linux.org.uk/ -S: Maintained - -ARM/RADISYS ENP2611 MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/RISCPC ARCHITECTURE -M: Russell King -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.arm.linux.org.uk/ -S: Maintained -F: arch/arm/include/asm/hardware/entry-macro-iomd.S -F: arch/arm/include/asm/hardware/ioc.h -F: arch/arm/include/asm/hardware/iomd.h -F: arch/arm/include/asm/hardware/memc.h -F: arch/arm/mach-rpc/ -F: drivers/net/ethernet/8390/etherh.c -F: drivers/net/ethernet/i825xx/ether1* -F: drivers/net/ethernet/seeq/ether3* -F: drivers/scsi/arm/ - -ARM/SHARK MACHINE SUPPORT -M: Alexander Schulz -W: http://www.shark-linux.de/shark.html -S: Maintained - -ARM/SAMSUNG ARM ARCHITECTURES -M: Ben Dooks -M: Kukjin Kim -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) -W: http://www.fluff.org/ben/linux/ -S: Maintained -F: arch/arm/plat-samsung/ -F: arch/arm/plat-s3c24xx/ -F: arch/arm/mach-s3c24*/ -F: arch/arm/mach-s3c64xx/ -F: drivers/*/*s3c2410* -F: drivers/*/*/*s3c2410* -F: drivers/spi/spi-s3c* -F: sound/soc/samsung/* - -ARM/S5P EXYNOS ARM ARCHITECTURES -M: Kukjin Kim -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-s5p*/ -F: arch/arm/mach-exynos*/ - -ARM/SAMSUNG MOBILE MACHINE SUPPORT -M: Kyungmin Park -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-s5pv210/mach-aquila.c -F: arch/arm/mach-s5pv210/mach-goni.c -F: arch/arm/mach-exynos/mach-universal_c210.c -F: arch/arm/mach-exynos/mach-nuri.c - -ARM/SAMSUNG S5P SERIES 2D GRAPHICS ACCELERATION (G2D) SUPPORT -M: Kyungmin Park -M: Kamil Debski -L: linux-arm-kernel@lists.infradead.org -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/platform/s5p-g2d/ - -ARM/SAMSUNG S5P SERIES FIMC SUPPORT -M: Kyungmin Park -M: Sylwester Nawrocki -L: linux-arm-kernel@lists.infradead.org -L: linux-media@vger.kernel.org -S: Maintained -F: arch/arm/plat-samsung/include/plat/*fimc* -F: drivers/media/platform/s5p-fimc/ - -ARM/SAMSUNG S5P SERIES Multi Format Codec (MFC) SUPPORT -M: Kyungmin Park -M: Kamil Debski -M: Jeongtae Park -L: linux-arm-kernel@lists.infradead.org -L: linux-media@vger.kernel.org -S: Maintained -F: arch/arm/plat-samsung/s5p-dev-mfc.c -F: drivers/media/platform/s5p-mfc/ - -ARM/SAMSUNG S5P SERIES TV SUBSYSTEM SUPPORT -M: Kyungmin Park -M: Tomasz Stanislawski -L: linux-arm-kernel@lists.infradead.org -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/platform/s5p-tv/ - -ARM/SHMOBILE ARM ARCHITECTURE -M: Simon Horman -M: Magnus Damm -L: linux-sh@vger.kernel.org -W: http://oss.renesas.com -Q: http://patchwork.kernel.org/project/linux-sh/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next -S: Supported -F: arch/arm/mach-shmobile/ -F: drivers/sh/ - -ARM/SOCFPGA ARCHITECTURE -M: Dinh Nguyen -S: Maintained -F: arch/arm/mach-socfpga/ - -ARM/SOCFPGA CLOCK FRAMEWORK SUPPORT -M: Dinh Nguyen -S: Maintained -F: drivers/clk/socfpga/ - -ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/TETON BGA MACHINE SUPPORT -M: "Mark F. Brown" -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/THECUS N2100 MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - -ARM/NUVOTON W90X900 ARM ARCHITECTURE -M: Wan ZongShun -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.mcuos.com -S: Maintained -F: arch/arm/mach-w90x900/ -F: drivers/input/keyboard/w90p910_keypad.c -F: drivers/input/touchscreen/w90p910_ts.c -F: drivers/watchdog/nuc900_wdt.c -F: drivers/net/ethernet/nuvoton/w90p910_ether.c -F: drivers/mtd/nand/nuc900_nand.c -F: drivers/rtc/rtc-nuc900.c -F: drivers/spi/spi-nuc900.c -F: drivers/usb/host/ehci-w90x900.c -F: drivers/video/nuc900fb.c - -ARM/U300 MACHINE SUPPORT -M: Linus Walleij -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Supported -F: arch/arm/mach-u300/ -F: drivers/i2c/busses/i2c-stu300.c -F: drivers/rtc/rtc-coh901331.c -F: drivers/watchdog/coh901327_wdt.c -F: drivers/dma/coh901318* -F: drivers/mfd/ab3100* -F: drivers/rtc/rtc-ab3100.c -F: drivers/rtc/rtc-coh901331.c -T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git - -ARM/Ux500 ARM ARCHITECTURE -M: Srinidhi Kasagar -M: Linus Walleij -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-ux500/ -F: drivers/clocksource/clksrc-dbx500-prcmu.c -F: drivers/dma/ste_dma40* -F: drivers/hwspinlock/u8500_hsem.c -F: drivers/mfd/abx500* -F: drivers/mfd/ab8500* -F: drivers/mfd/dbx500* -F: drivers/mfd/db8500* -F: drivers/pinctrl/pinctrl-nomadik* -F: drivers/rtc/rtc-ab8500.c -F: drivers/rtc/rtc-pl031.c -T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git - -ARM/VFP SUPPORT -M: Russell King -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.arm.linux.org.uk/ -S: Maintained -F: arch/arm/vfp/ - -ARM/VOIPAC PXA270 SUPPORT -M: Marek Vasut -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-pxa/vpac270.c -F: arch/arm/mach-pxa/include/mach/vpac270.h - -ARM/VT8500 ARM ARCHITECTURE -M: Tony Prisk -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-vt8500/ -F: drivers/clocksource/vt8500_timer.c -F: drivers/gpio/gpio-vt8500.c -F: drivers/mmc/host/wmt-sdmmc.c -F: drivers/pwm/pwm-vt8500.c -F: drivers/rtc/rtc-vt8500.c -F: drivers/tty/serial/vt8500_serial.c -F: drivers/usb/host/ehci-vt8500.c -F: drivers/usb/host/uhci-platform.c -F: drivers/video/vt8500lcdfb.* -F: drivers/video/wm8505fb* -F: drivers/video/wmt_ge_rops.* - -ARM/ZIPIT Z2 SUPPORT -M: Marek Vasut -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/mach-pxa/z2.c -F: arch/arm/mach-pxa/include/mach/z2.h - -ARM/ZYNQ ARCHITECTURE -M: Michal Simek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://wiki.xilinx.com -T: git git://git.xilinx.com/linux-xlnx.git -S: Supported -F: arch/arm/mach-zynq/ - -ARM64 PORT (AARCH64 ARCHITECTURE) -M: Catalin Marinas -M: Will Deacon -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: arch/arm64/ -F: Documentation/arm64/ - -AS3645A LED FLASH CONTROLLER DRIVER -M: Laurent Pinchart -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/i2c/as3645a.c -F: include/media/as3645a.h - -ASC7621 HARDWARE MONITOR DRIVER -M: George Joseph -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/asc7621 -F: drivers/hwmon/asc7621.c - -ASUS NOTEBOOKS AND EEEPC ACPI/WMI EXTRAS DRIVERS -M: Corentin Chary -L: acpi4asus-user@lists.sourceforge.net -L: platform-driver-x86@vger.kernel.org -W: http://acpi4asus.sf.net -S: Maintained -F: drivers/platform/x86/asus*.c -F: drivers/platform/x86/eeepc*.c - -ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API -M: Dan Williams -W: http://sourceforge.net/projects/xscaleiop -S: Maintained -F: Documentation/crypto/async-tx-api.txt -F: crypto/async_tx/ -F: drivers/dma/ -F: include/linux/dmaengine.h -F: include/linux/async_tx.h - -AT24 EEPROM DRIVER -M: Wolfram Sang -L: linux-i2c@vger.kernel.org -S: Maintained -F: drivers/misc/eeprom/at24.c -F: include/linux/i2c/at24.h - -ATA OVER ETHERNET (AOE) DRIVER -M: "Ed L. Cashin" -W: http://support.coraid.com/support/linux -S: Supported -F: Documentation/aoe/ -F: drivers/block/aoe/ - -ATHEROS ATH GENERIC UTILITIES -M: "Luis R. Rodriguez" -L: linux-wireless@vger.kernel.org -S: Supported -F: drivers/net/wireless/ath/* - -ATHEROS ATH5K WIRELESS DRIVER -M: Jiri Slaby -M: Nick Kossifidis -M: "Luis R. Rodriguez" -L: linux-wireless@vger.kernel.org -L: ath5k-devel@lists.ath5k.org -W: http://wireless.kernel.org/en/users/Drivers/ath5k -S: Maintained -F: drivers/net/wireless/ath/ath5k/ - -ATHEROS ATH6KL WIRELESS DRIVER -M: Kalle Valo -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/users/Drivers/ath6kl -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath6kl.git -S: Supported -F: drivers/net/wireless/ath/ath6kl/ - -ATHEROS ATH9K WIRELESS DRIVER -M: "Luis R. Rodriguez" -M: Jouni Malinen -M: Vasanthakumar Thiagarajan -M: Senthil Balasubramanian -L: linux-wireless@vger.kernel.org -L: ath9k-devel@lists.ath9k.org -W: http://wireless.kernel.org/en/users/Drivers/ath9k -S: Supported -F: drivers/net/wireless/ath/ath9k/ - -WILOCITY WIL6210 WIRELESS DRIVER -M: Vladimir Kondratiev -L: linux-wireless@vger.kernel.org -L: wil6210@qca.qualcomm.com -S: Supported -W: http://wireless.kernel.org/en/users/Drivers/wil6210 -F: drivers/net/wireless/ath/wil6210/ - -CARL9170 LINUX COMMUNITY WIRELESS DRIVER -M: Christian Lamparter -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/users/Drivers/carl9170 -S: Maintained -F: drivers/net/wireless/ath/carl9170/ - -ATK0110 HWMON DRIVER -M: Luca Tettamanti -L: lm-sensors@lm-sensors.org -S: Maintained -F: drivers/hwmon/asus_atk0110.c - -ATI_REMOTE2 DRIVER -M: Ville Syrjala -S: Maintained -F: drivers/input/misc/ati_remote2.c - -ATLX ETHERNET DRIVERS -M: Jay Cliburn -M: Chris Snook -L: netdev@vger.kernel.org -W: http://sourceforge.net/projects/atl1 -W: http://atl1.sourceforge.net -S: Maintained -F: drivers/net/ethernet/atheros/ - -ATM -M: Chas Williams -L: linux-atm-general@lists.sourceforge.net (moderated for non-subscribers) -L: netdev@vger.kernel.org -W: http://linux-atm.sourceforge.net -S: Maintained -F: drivers/atm/ -F: include/linux/atm* -F: include/uapi/linux/atm* - -ATMEL AT91 / AT32 MCI DRIVER -M: Ludovic Desroches -S: Maintained -F: drivers/mmc/host/atmel-mci.c -F: drivers/mmc/host/atmel-mci-regs.h - -ATMEL AT91 / AT32 SERIAL DRIVER -M: Nicolas Ferre -S: Supported -F: drivers/tty/serial/atmel_serial.c - -ATMEL DMA DRIVER -M: Nicolas Ferre -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Supported -F: drivers/dma/at_hdmac.c -F: drivers/dma/at_hdmac_regs.h -F: include/linux/platform_data/dma-atmel.h - -ATMEL I2C DRIVER -M: Ludovic Desroches -L: linux-i2c@vger.kernel.org -S: Supported -F: drivers/i2c/busses/i2c-at91.c - -ATMEL ISI DRIVER -M: Josh Wu -L: linux-media@vger.kernel.org -S: Supported -F: drivers/media/platform/soc_camera/atmel-isi.c -F: include/media/atmel-isi.h - -ATMEL LCDFB DRIVER -M: Nicolas Ferre -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/atmel_lcdfb.c -F: include/video/atmel_lcdc.h - -ATMEL MACB ETHERNET DRIVER -M: Nicolas Ferre -S: Supported -F: drivers/net/ethernet/cadence/ - -ATMEL SPI DRIVER -M: Nicolas Ferre -S: Supported -F: drivers/spi/spi-atmel.* - -ATMEL Timer Counter (TC) AND CLOCKSOURCE DRIVERS -M: Nicolas Ferre -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Supported -F: drivers/misc/atmel_tclib.c -F: drivers/clocksource/tcb_clksrc.c - -ATMEL TSADCC DRIVER -M: Josh Wu -L: linux-input@vger.kernel.org -S: Supported -F: drivers/input/touchscreen/atmel_tsadcc.c - -ATMEL USBA UDC DRIVER -M: Nicolas Ferre -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Supported -F: drivers/usb/gadget/atmel_usba_udc.* - -ATMEL WIRELESS DRIVER -M: Simon Kelley -L: linux-wireless@vger.kernel.org -W: http://www.thekelleys.org.uk/atmel -W: http://atmelwlandriver.sourceforge.net/ -S: Maintained -F: drivers/net/wireless/atmel* - -AUDIT SUBSYSTEM -M: Al Viro -M: Eric Paris -L: linux-audit@redhat.com (subscribers-only) -W: http://people.redhat.com/sgrubb/audit/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current.git -S: Maintained -F: include/linux/audit.h -F: include/uapi/linux/audit.h -F: kernel/audit* - -AUXILIARY DISPLAY DRIVERS -M: Miguel Ojeda Sandonis -W: http://miguelojeda.es/auxdisplay.htm -W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm -S: Maintained -F: drivers/auxdisplay/ -F: include/linux/cfag12864b.h - -AVR32 ARCHITECTURE -M: Haavard Skinnemoen -M: Hans-Christian Egtvedt -W: http://www.atmel.com/products/AVR32/ -W: http://mirror.egtvedt.no/avr32linux.org/ -W: http://avrfreaks.net/ -S: Maintained -F: arch/avr32/ - -AVR32/AT32AP MACHINE SUPPORT -M: Haavard Skinnemoen -M: Hans-Christian Egtvedt -S: Maintained -F: arch/avr32/mach-at32ap/ - -AX.25 NETWORK LAYER -M: Ralf Baechle -L: linux-hams@vger.kernel.org -W: http://www.linux-ax25.org/ -S: Maintained -F: include/uapi/linux/ax25.h -F: include/net/ax25.h -F: net/ax25/ - -AZ6007 DVB DRIVER -M: Mauro Carvalho Chehab -L: linux-media@vger.kernel.org -W: http://linuxtv.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/az6007.c - -AZTECH FM RADIO RECEIVER DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/radio/radio-aztech* - -B43 WIRELESS DRIVER -M: Stefano Brivio -L: linux-wireless@vger.kernel.org -L: b43-dev@lists.infradead.org -W: http://wireless.kernel.org/en/users/Drivers/b43 -S: Maintained -F: drivers/net/wireless/b43/ - -B43LEGACY WIRELESS DRIVER -M: Larry Finger -M: Stefano Brivio -L: linux-wireless@vger.kernel.org -L: b43-dev@lists.infradead.org -W: http://wireless.kernel.org/en/users/Drivers/b43 -S: Maintained -F: drivers/net/wireless/b43legacy/ - -BACKLIGHT CLASS/SUBSYSTEM -M: Richard Purdie -S: Maintained -F: drivers/video/backlight/ -F: include/linux/backlight.h - -BATMAN ADVANCED -M: Marek Lindner -M: Simon Wunderlich -M: Antonio Quartulli -L: b.a.t.m.a.n@lists.open-mesh.org -W: http://www.open-mesh.org/ -S: Maintained -F: net/batman-adv/ - -BAYCOM/HDLCDRV DRIVERS FOR AX.25 -M: Thomas Sailer -L: linux-hams@vger.kernel.org -W: http://www.baycom.org/~tom/ham/ham.html -S: Maintained -F: drivers/net/hamradio/baycom* - -BEFS FILE SYSTEM -S: Orphan -F: Documentation/filesystems/befs.txt -F: fs/befs/ - -BFS FILE SYSTEM -M: "Tigran A. Aivazian" -S: Maintained -F: Documentation/filesystems/bfs.txt -F: fs/bfs/ -F: include/uapi/linux/bfs_fs.h - -BLACKFIN ARCHITECTURE -M: Mike Frysinger -L: uclinux-dist-devel@blackfin.uclinux.org -W: http://blackfin.uclinux.org -S: Supported -F: arch/blackfin/ - -BLACKFIN EMAC DRIVER -L: uclinux-dist-devel@blackfin.uclinux.org -W: http://blackfin.uclinux.org -S: Supported -F: drivers/net/ethernet/adi/ - -BLACKFIN RTC DRIVER -M: Mike Frysinger -L: uclinux-dist-devel@blackfin.uclinux.org -W: http://blackfin.uclinux.org -S: Supported -F: drivers/rtc/rtc-bfin.c - -BLACKFIN SDH DRIVER -M: Sonic Zhang -L: uclinux-dist-devel@blackfin.uclinux.org -W: http://blackfin.uclinux.org -S: Supported -F: drivers/mmc/host/bfin_sdh.c - -BLACKFIN SERIAL DRIVER -M: Sonic Zhang -L: uclinux-dist-devel@blackfin.uclinux.org -W: http://blackfin.uclinux.org -S: Supported -F: drivers/tty/serial/bfin_uart.c - -BLACKFIN WATCHDOG DRIVER -M: Mike Frysinger -L: uclinux-dist-devel@blackfin.uclinux.org -W: http://blackfin.uclinux.org -S: Supported -F: drivers/watchdog/bfin_wdt.c - -BLACKFIN I2C TWI DRIVER -M: Sonic Zhang -L: uclinux-dist-devel@blackfin.uclinux.org -W: http://blackfin.uclinux.org/ -S: Supported -F: drivers/i2c/busses/i2c-bfin-twi.c - -BLACKFIN MEDIA DRIVER -M: Scott Jiang -L: uclinux-dist-devel@blackfin.uclinux.org -W: http://blackfin.uclinux.org/ -S: Supported -F: drivers/media/platform/blackfin/ -F: drivers/media/i2c/adv7183* -F: drivers/media/i2c/vs6624* - -BLINKM RGB LED DRIVER -M: Jan-Simon Moeller -S: Maintained -F: drivers/leds/leds-blinkm.c - -BLOCK LAYER -M: Jens Axboe -T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git -S: Maintained -F: block/ - -BLOCK2MTD DRIVER -M: Joern Engel -L: linux-mtd@lists.infradead.org -S: Maintained -F: drivers/mtd/devices/block2mtd.c - -BLUETOOTH DRIVERS -M: Marcel Holtmann -M: Gustavo Padovan -M: Johan Hedberg -L: linux-bluetooth@vger.kernel.org -W: http://www.bluez.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git -S: Maintained -F: drivers/bluetooth/ - -BLUETOOTH SUBSYSTEM -M: Marcel Holtmann -M: Gustavo Padovan -M: Johan Hedberg -L: linux-bluetooth@vger.kernel.org -W: http://www.bluez.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git -S: Maintained -F: net/bluetooth/ -F: include/net/bluetooth/ - -BONDING DRIVER -M: Jay Vosburgh -M: Andy Gospodarek -L: netdev@vger.kernel.org -W: http://sourceforge.net/projects/bonding/ -S: Supported -F: drivers/net/bonding/ -F: include/uapi/linux/if_bonding.h - -BROADCOM B44 10/100 ETHERNET DRIVER -M: Gary Zambrano -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/broadcom/b44.* - -BROADCOM BNX2 GIGABIT ETHERNET DRIVER -M: Michael Chan -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/broadcom/bnx2.* -F: drivers/net/ethernet/broadcom/bnx2_* - -BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER -M: Eilon Greenstein -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/broadcom/bnx2x/ - -BROADCOM BCM2835 ARM ARCHICTURE -M: Stephen Warren -L: linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-rpi.git -S: Maintained -F: arch/arm/mach-bcm2835/ -F: arch/arm/boot/dts/bcm2835* -F: arch/arm/configs/bcm2835_defconfig -F: drivers/*/*bcm2835* - -BROADCOM TG3 GIGABIT ETHERNET DRIVER -M: Matt Carlson -M: Michael Chan -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/broadcom/tg3.* - -BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER -M: Brett Rudley -M: Arend van Spriel -M: Franky (Zhenhui) Lin -M: Hante Meuleman -L: linux-wireless@vger.kernel.org -L: brcm80211-dev-list@broadcom.com -S: Supported -F: drivers/net/wireless/brcm80211/ - -BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER -M: Bhanu Prakash Gollapudi -L: linux-scsi@vger.kernel.org -S: Supported -F: drivers/scsi/bnx2fc/ - -BROADCOM SPECIFIC AMBA DRIVER (BCMA) -M: RafaÅ‚ MiÅ‚ecki -L: linux-wireless@vger.kernel.org -S: Maintained -F: drivers/bcma/ -F: include/linux/bcma/ - -BROCADE BFA FC SCSI DRIVER -M: Anil Gurumurthy -M: Vijaya Mohan Guvva -L: linux-scsi@vger.kernel.org -S: Supported -F: drivers/scsi/bfa/ - -BROCADE BNA 10 GIGABIT ETHERNET DRIVER -M: Rasesh Mody -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/brocade/bna/ - -BSG (block layer generic sg v4 driver) -M: FUJITA Tomonori -L: linux-scsi@vger.kernel.org -S: Supported -F: block/bsg.c -F: include/linux/bsg.h -F: include/uapi/linux/bsg.h - -BT87X AUDIO DRIVER -M: Clemens Ladisch -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.alsa-project.org/alsa-kernel.git -S: Maintained -F: Documentation/sound/alsa/Bt87x.txt -F: sound/pci/bt87x.c - -BT8XXGPIO DRIVER -M: Michael Buesch -W: http://bu3sch.de/btgpio.php -S: Maintained -F: drivers/gpio/gpio-bt8xx.c - -BTRFS FILE SYSTEM -M: Chris Mason -L: linux-btrfs@vger.kernel.org -W: http://btrfs.wiki.kernel.org/ -Q: http://patchwork.kernel.org/project/linux-btrfs/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.git -S: Maintained -F: Documentation/filesystems/btrfs.txt -F: fs/btrfs/ - -BTTV VIDEO4LINUX DRIVER -M: Mauro Carvalho Chehab -L: linux-media@vger.kernel.org -W: http://linuxtv.org -T: git git://linuxtv.org/media_tree.git -S: Odd fixes -F: Documentation/video4linux/bttv/ -F: drivers/media/pci/bt8xx/bttv* - -C-MEDIA CMI8788 DRIVER -M: Clemens Ladisch -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.alsa-project.org/alsa-kernel.git -S: Maintained -F: sound/pci/oxygen/ - -C6X ARCHITECTURE -M: Mark Salter -M: Aurelien Jacquiot -L: linux-c6x-dev@linux-c6x.org -W: http://www.linux-c6x.org/wiki/index.php/Main_Page -S: Maintained -F: arch/c6x/ - -CACHEFILES: FS-CACHE BACKEND FOR CACHING ON MOUNTED FILESYSTEMS -M: David Howells -L: linux-cachefs@redhat.com -S: Supported -F: Documentation/filesystems/caching/cachefiles.txt -F: fs/cachefiles/ - -CADET FM/AM RADIO RECEIVER DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/radio/radio-cadet* - -CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER -M: Jonathan Corbet -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: Documentation/video4linux/cafe_ccic -F: drivers/media/platform/marvell-ccic/ - -CAIF NETWORK LAYER -M: Sjur Braendeland -L: netdev@vger.kernel.org -S: Supported -F: Documentation/networking/caif/ -F: drivers/net/caif/ -F: include/uapi/linux/caif/ -F: include/net/caif/ -F: net/caif/ - -CALGARY x86-64 IOMMU -M: Muli Ben-Yehuda -M: "Jon D. Mason" -L: discuss@x86-64.org -S: Maintained -F: arch/x86/kernel/pci-calgary_64.c -F: arch/x86/kernel/tce_64.c -F: arch/x86/include/asm/calgary.h -F: arch/x86/include/asm/tce.h - -CAN NETWORK LAYER -M: Oliver Hartkopp -L: linux-can@vger.kernel.org -W: http://gitorious.org/linux-can -T: git git://gitorious.org/linux-can/linux-can-next.git -S: Maintained -F: net/can/ -F: include/linux/can/core.h -F: include/uapi/linux/can.h -F: include/uapi/linux/can/bcm.h -F: include/uapi/linux/can/raw.h -F: include/uapi/linux/can/gw.h - -CAN NETWORK DRIVERS -M: Wolfgang Grandegger -M: Marc Kleine-Budde -L: linux-can@vger.kernel.org -W: http://gitorious.org/linux-can -T: git git://gitorious.org/linux-can/linux-can-next.git -S: Maintained -F: drivers/net/can/ -F: include/linux/can/dev.h -F: include/linux/can/platform/ -F: include/uapi/linux/can/error.h -F: include/uapi/linux/can/netlink.h - -CAPABILITIES -M: Serge Hallyn -L: linux-security-module@vger.kernel.org -S: Supported -F: include/linux/capability.h -F: include/uapi/linux/capability.h -F: security/capability.c -F: security/commoncap.c -F: kernel/capability.c - -CELL BROADBAND ENGINE ARCHITECTURE -M: Arnd Bergmann -L: linuxppc-dev@lists.ozlabs.org -L: cbe-oss-dev@lists.ozlabs.org -W: http://www.ibm.com/developerworks/power/cell/ -S: Supported -F: arch/powerpc/include/asm/cell*.h -F: arch/powerpc/include/asm/spu*.h -F: arch/powerpc/include/uapi/asm/spu*.h -F: arch/powerpc/oprofile/*cell* -F: arch/powerpc/platforms/cell/ - -CEPH DISTRIBUTED FILE SYSTEM CLIENT -M: Sage Weil -L: ceph-devel@vger.kernel.org -W: http://ceph.com/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git -S: Supported -F: Documentation/filesystems/ceph.txt -F: fs/ceph -F: net/ceph -F: include/linux/ceph -F: include/linux/crush - -CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM: -L: linux-usb@vger.kernel.org -S: Orphan -F: Documentation/usb/WUSB-Design-overview.txt -F: Documentation/usb/wusb-cbaf -F: drivers/usb/host/hwa-hc.c -F: drivers/usb/host/whci/ -F: drivers/usb/wusbcore/ -F: include/linux/usb/wusb* - -CFAG12864B LCD DRIVER -M: Miguel Ojeda Sandonis -W: http://miguelojeda.es/auxdisplay.htm -W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm -S: Maintained -F: drivers/auxdisplay/cfag12864b.c -F: include/linux/cfag12864b.h - -CFAG12864BFB LCD FRAMEBUFFER DRIVER -M: Miguel Ojeda Sandonis -W: http://miguelojeda.es/auxdisplay.htm -W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm -S: Maintained -F: drivers/auxdisplay/cfag12864bfb.c -F: include/linux/cfag12864b.h - -CFG80211 and NL80211 -M: Johannes Berg -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git -S: Maintained -F: include/uapi/linux/nl80211.h -F: include/net/cfg80211.h -F: net/wireless/* -X: net/wireless/wext* - -CHAR and MISC DRIVERS -M: Arnd Bergmann -M: Greg Kroah-Hartman -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git -S: Supported -F: drivers/char/* -F: drivers/misc/* - -CHECKPATCH -M: Andy Whitcroft -M: Joe Perches -S: Maintained -F: scripts/checkpatch.pl - -CHINESE DOCUMENTATION -M: Harry Wei -L: xiyoulinuxkernelgroup@googlegroups.com (subscribers-only) -L: linux-kernel@zh-kernel.org (moderated for non-subscribers) -S: Maintained -F: Documentation/zh_CN/ - -CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER -M: Alexander Shishkin -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/chipidea/ - -CISCO VIC ETHERNET NIC DRIVER -M: Christian Benvenuti -M: Roopa Prabhu -M: Neel Patel -M: Nishank Trivedi -S: Supported -F: drivers/net/ethernet/cisco/enic/ - -CIRRUS LOGIC EP93XX ETHERNET DRIVER -M: Hartley Sweeten -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/cirrus/ep93xx_eth.c - -CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER -M: Lennert Buytenhek -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/host/ohci-ep93xx.c - -CIRRUS LOGIC CS4270 SOUND DRIVER -M: Timur Tabi -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -S: Odd Fixes -F: sound/soc/codecs/cs4270* - -CLEANCACHE API -M: Konrad Rzeszutek Wilk -L: linux-kernel@vger.kernel.org -S: Maintained -F: mm/cleancache.c -F: include/linux/cleancache.h - -CLK API -M: Russell King -S: Maintained -F: include/linux/clk.h - -CISCO FCOE HBA DRIVER -M: Hiral Patel -M: Suma Ramars -M: Brian Uchino -L: linux-scsi@vger.kernel.org -S: Supported -F: drivers/scsi/fnic/ - -CMPC ACPI DRIVER -M: Thadeu Lima de Souza Cascardo -M: Daniel Oliveira Nascimento -L: platform-driver-x86@vger.kernel.org -S: Supported -F: drivers/platform/x86/classmate-laptop.c - -COCCINELLE/Semantic Patches (SmPL) -M: Julia Lawall -M: Gilles Muller -M: Nicolas Palix -L: cocci@systeme.lip6.fr (moderated for non-subscribers) -W: http://coccinelle.lip6.fr/ -S: Supported -F: scripts/coccinelle/ -F: scripts/coccicheck - -CODA FILE SYSTEM -M: Jan Harkes -M: coda@cs.cmu.edu -L: codalist@coda.cs.cmu.edu -W: http://www.coda.cs.cmu.edu/ -S: Maintained -F: Documentation/filesystems/coda.txt -F: fs/coda/ -F: include/linux/coda*.h -F: include/uapi/linux/coda*.h - -COMMON CLK FRAMEWORK -M: Mike Turquette -L: linux-arm-kernel@lists.infradead.org (same as CLK API & CLKDEV) -T: git git://git.linaro.org/people/mturquette/linux.git -S: Maintained -F: drivers/clk/clk.c -F: drivers/clk/clk-* -F: include/linux/clk-pr* - -COMMON INTERNET FILE SYSTEM (CIFS) -M: Steve French -L: linux-cifs@vger.kernel.org -L: samba-technical@lists.samba.org (moderated for non-subscribers) -W: http://linux-cifs.samba.org/ -Q: http://patchwork.ozlabs.org/project/linux-cifs-client/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git -S: Supported -F: Documentation/filesystems/cifs.txt -F: fs/cifs/ - -COMPACTPCI HOTPLUG CORE -M: Scott Murray -L: linux-pci@vger.kernel.org -S: Maintained -F: drivers/pci/hotplug/cpci_hotplug* - -COMPACTPCI HOTPLUG ZIATECH ZT5550 DRIVER -M: Scott Murray -L: linux-pci@vger.kernel.org -S: Maintained -F: drivers/pci/hotplug/cpcihp_zt5550.* - -COMPACTPCI HOTPLUG GENERIC DRIVER -M: Scott Murray -L: linux-pci@vger.kernel.org -S: Maintained -F: drivers/pci/hotplug/cpcihp_generic.c - -COMPAL LAPTOP SUPPORT -M: Cezary Jackiewicz -L: platform-driver-x86@vger.kernel.org -S: Maintained -F: drivers/platform/x86/compal-laptop.c - -CONEXANT ACCESSRUNNER USB DRIVER -M: Simon Arlott -L: accessrunner-general@lists.sourceforge.net -W: http://accessrunner.sourceforge.net/ -S: Maintained -F: drivers/usb/atm/cxacru.c - -CONFIGFS -M: Joel Becker -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/configfs.git -S: Supported -F: fs/configfs/ -F: include/linux/configfs.h - -CONNECTOR -M: Evgeniy Polyakov -L: netdev@vger.kernel.org -S: Maintained -F: drivers/connector/ - -CONTROL GROUPS (CGROUPS) -M: Tejun Heo -M: Li Zefan -L: containers@lists.linux-foundation.org -L: cgroups@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git -S: Maintained -F: include/linux/cgroup* -F: kernel/cgroup* -F: mm/*cgroup* - -CORETEMP HARDWARE MONITORING DRIVER -M: Fenghua Yu -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/coretemp -F: drivers/hwmon/coretemp.c - -COSA/SRP SYNC SERIAL DRIVER -M: Jan "Yenya" Kasprzak -W: http://www.fi.muni.cz/~kas/cosa/ -S: Maintained -F: drivers/net/wan/cosa* - -CPMAC ETHERNET DRIVER -M: Florian Fainelli -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/ti/cpmac.c - -CPU FREQUENCY DRIVERS -M: Rafael J. Wysocki -L: cpufreq@vger.kernel.org -L: linux-pm@vger.kernel.org -S: Maintained -F: drivers/cpufreq/ -F: include/linux/cpufreq.h - -CPUID/MSR DRIVER -M: "H. Peter Anvin" -S: Maintained -F: arch/x86/kernel/cpuid.c -F: arch/x86/kernel/msr.c - -CPU POWER MONITORING SUBSYSTEM -M: Dominik Brodowski -M: Thomas Renninger -S: Maintained -F: tools/power/cpupower - -CPUSETS -M: Li Zefan -W: http://www.bullopensource.org/cpuset/ -W: http://oss.sgi.com/projects/cpusets/ -S: Maintained -F: Documentation/cgroups/cpusets.txt -F: include/linux/cpuset.h -F: kernel/cpuset.c - -CRAMFS FILESYSTEM -W: http://sourceforge.net/projects/cramfs/ -S: Orphan -F: Documentation/filesystems/cramfs.txt -F: fs/cramfs/ - -CRIS PORT -M: Mikael Starvik -M: Jesper Nilsson -L: linux-cris-kernel@axis.com -W: http://developer.axis.com -S: Maintained -F: arch/cris/ -F: drivers/tty/serial/crisv10.* - -CRYPTO API -M: Herbert Xu -M: "David S. Miller" -L: linux-crypto@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git -S: Maintained -F: Documentation/crypto/ -F: arch/*/crypto/ -F: crypto/ -F: drivers/crypto/ -F: include/crypto/ - -CRYPTOGRAPHIC RANDOM NUMBER GENERATOR -M: Neil Horman -L: linux-crypto@vger.kernel.org -S: Maintained -F: crypto/ansi_cprng.c -F: crypto/rng.c - -CS5535 Audio ALSA driver -M: Jaya Kumar -S: Maintained -F: sound/pci/cs5535audio/ - -CW1200 WLAN driver -M: Solomon Peachy -S: Maintained -F: drivers/net/wireless/cw1200/ - -CX18 VIDEO4LINUX DRIVER -M: Andy Walls -L: ivtv-devel@ivtvdriver.org (moderated for non-subscribers) -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -W: http://www.ivtvdriver.org/index.php/Cx18 -S: Maintained -F: Documentation/video4linux/cx18.txt -F: drivers/media/pci/cx18/ -F: include/uapi/linux/ivtv* - -CX2341X MPEG ENCODER HELPER MODULE -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/i2c/cx2341x* -F: include/media/cx2341x* - -CX88 VIDEO4LINUX DRIVER -M: Mauro Carvalho Chehab -L: linux-media@vger.kernel.org -W: http://linuxtv.org -T: git git://linuxtv.org/media_tree.git -S: Odd fixes -F: Documentation/video4linux/cx88/ -F: drivers/media/pci/cx88/ - -CXD2820R MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/dvb-frontends/cxd2820r* - -CXGB3 ETHERNET DRIVER (CXGB3) -M: Divy Le Ray -L: netdev@vger.kernel.org -W: http://www.chelsio.com -S: Supported -F: drivers/net/ethernet/chelsio/cxgb3/ - -CXGB3 IWARP RNIC DRIVER (IW_CXGB3) -M: Steve Wise -L: linux-rdma@vger.kernel.org -W: http://www.openfabrics.org -S: Supported -F: drivers/infiniband/hw/cxgb3/ - -CXGB4 ETHERNET DRIVER (CXGB4) -M: Dimitris Michailidis -L: netdev@vger.kernel.org -W: http://www.chelsio.com -S: Supported -F: drivers/net/ethernet/chelsio/cxgb4/ - -CXGB4 IWARP RNIC DRIVER (IW_CXGB4) -M: Steve Wise -L: linux-rdma@vger.kernel.org -W: http://www.openfabrics.org -S: Supported -F: drivers/infiniband/hw/cxgb4/ - -CXGB4VF ETHERNET DRIVER (CXGB4VF) -M: Casey Leedom -L: netdev@vger.kernel.org -W: http://www.chelsio.com -S: Supported -F: drivers/net/ethernet/chelsio/cxgb4vf/ - -STMMAC ETHERNET DRIVER -M: Giuseppe Cavallaro -L: netdev@vger.kernel.org -W: http://www.stlinux.com -S: Supported -F: drivers/net/ethernet/stmicro/stmmac/ - -CYBERPRO FB DRIVER -M: Russell King -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.arm.linux.org.uk/ -S: Maintained -F: drivers/video/cyber2000fb.* - -CYCLADES ASYNC MUX DRIVER -W: http://www.cyclades.com/ -S: Orphan -F: drivers/tty/cyclades.c -F: include/linux/cyclades.h -F: include/uapi/linux/cyclades.h - -CYCLADES PC300 DRIVER -W: http://www.cyclades.com/ -S: Orphan -F: drivers/net/wan/pc300* - -CYTTSP TOUCHSCREEN DRIVER -M: Javier Martinez Canillas -L: linux-input@vger.kernel.org -S: Maintained -F: drivers/input/touchscreen/cyttsp* -F: include/linux/input/cyttsp.h - -DAMA SLAVE for AX.25 -M: Joerg Reuter -W: http://yaina.de/jreuter/ -W: http://www.qsl.net/dl1bke/ -L: linux-hams@vger.kernel.org -S: Maintained -F: net/ax25/af_ax25.c -F: net/ax25/ax25_dev.c -F: net/ax25/ax25_ds_* -F: net/ax25/ax25_in.c -F: net/ax25/ax25_out.c -F: net/ax25/ax25_timer.c -F: net/ax25/sysctl_net_ax25.c - -DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER -L: netdev@vger.kernel.org -S: Orphan -F: Documentation/networking/dmfe.txt -F: drivers/net/ethernet/dec/tulip/dmfe.c - -DC390/AM53C974 SCSI driver -M: Kurt Garloff -W: http://www.garloff.de/kurt/linux/dc390/ -M: Guennadi Liakhovetski -S: Maintained -F: drivers/scsi/tmscsim.* - -DC395x SCSI driver -M: Oliver Neukum -M: Ali Akcaagac -M: Jamie Lenehan -W: http://twibble.org/dist/dc395x/ -L: dc395x@twibble.org -L: http://lists.twibble.org/mailman/listinfo/dc395x/ -S: Maintained -F: Documentation/scsi/dc395x.txt -F: drivers/scsi/dc395x.* - -DCCP PROTOCOL -M: Gerrit Renker -L: dccp@vger.kernel.org -W: http://www.linuxfoundation.org/collaborate/workgroups/networking/dccp -S: Maintained -F: include/linux/dccp.h -F: include/uapi/linux/dccp.h -F: include/linux/tfrc.h -F: net/dccp/ - -DECnet NETWORK LAYER -W: http://linux-decnet.sourceforge.net -L: linux-decnet-user@lists.sourceforge.net -S: Orphan -F: Documentation/networking/decnet.txt -F: net/decnet/ - -DEFXX FDDI NETWORK DRIVER -M: "Maciej W. Rozycki" -S: Maintained -F: drivers/net/fddi/defxx.* - -DELL LAPTOP DRIVER -M: Matthew Garrett -L: platform-driver-x86@vger.kernel.org -S: Maintained -F: drivers/platform/x86/dell-laptop.c - -DELL LAPTOP SMM DRIVER -M: Massimo Dal Zotto -W: http://www.debian.org/~dz/i8k/ -S: Maintained -F: drivers/char/i8k.c -F: include/uapi/linux/i8k.h - -DELL SYSTEMS MANAGEMENT BASE DRIVER (dcdbas) -M: Doug Warzecha -S: Maintained -F: Documentation/dcdbas.txt -F: drivers/firmware/dcdbas.* - -DELL WMI EXTRAS DRIVER -M: Matthew Garrett -S: Maintained -F: drivers/platform/x86/dell-wmi.c - -DESIGNWARE USB3 DRD IP DRIVER -M: Felipe Balbi -L: linux-usb@vger.kernel.org -L: linux-omap@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git -S: Maintained -F: drivers/usb/dwc3/ - -DEVICE FREQUENCY (DEVFREQ) -M: MyungJoo Ham -M: Kyungmin Park -L: linux-kernel@vger.kernel.org -S: Maintained -F: drivers/devfreq/ - -DEVICE NUMBER REGISTRY -M: Torben Mathiasen -W: http://lanana.org/docs/device-list/index.html -S: Maintained - -DEVICE-MAPPER (LVM) -M: Alasdair Kergon -M: dm-devel@redhat.com -L: dm-devel@redhat.com -W: http://sources.redhat.com/dm -Q: http://patchwork.kernel.org/project/dm-devel/list/ -T: quilt http://people.redhat.com/agk/patches/linux/editing/ -S: Maintained -F: Documentation/device-mapper/ -F: drivers/md/dm* -F: drivers/md/persistent-data/ -F: include/linux/device-mapper.h -F: include/linux/dm-*.h - -DIOLAN U2C-12 I2C DRIVER -M: Guenter Roeck -L: linux-i2c@vger.kernel.org -S: Maintained -F: drivers/i2c/busses/i2c-diolan-u2c.c - -DIRECTORY NOTIFICATION (DNOTIFY) -M: Eric Paris -S: Maintained -F: Documentation/filesystems/dnotify.txt -F: fs/notify/dnotify/ -F: include/linux/dnotify.h - -DISK GEOMETRY AND PARTITION HANDLING -M: Andries Brouwer -W: http://www.win.tue.nl/~aeb/linux/Large-Disk.html -W: http://www.win.tue.nl/~aeb/linux/zip/zip-1.html -W: http://www.win.tue.nl/~aeb/partitions/partition_types-1.html -S: Maintained - -DISKQUOTA -M: Jan Kara -S: Maintained -F: Documentation/filesystems/quota.txt -F: fs/quota/ -F: include/linux/quota*.h -F: include/uapi/linux/quota*.h - -DISPLAYLINK USB 2.0 FRAMEBUFFER DRIVER (UDLFB) -M: Bernie Thompson -L: linux-fbdev@vger.kernel.org -S: Maintained -W: http://plugable.com/category/projects/udlfb/ -F: drivers/video/udlfb.c -F: include/video/udlfb.h -F: Documentation/fb/udlfb.txt - -DISTRIBUTED LOCK MANAGER (DLM) -M: Christine Caulfield -M: David Teigland -L: cluster-devel@redhat.com -W: http://sources.redhat.com/cluster/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm.git -S: Supported -F: fs/dlm/ - -DMA BUFFER SHARING FRAMEWORK -M: Sumit Semwal -S: Maintained -L: linux-media@vger.kernel.org -L: dri-devel@lists.freedesktop.org -L: linaro-mm-sig@lists.linaro.org -F: drivers/base/dma-buf* -F: include/linux/dma-buf* -F: Documentation/dma-buf-sharing.txt -T: git git://git.linaro.org/people/sumitsemwal/linux-dma-buf.git - -DMA GENERIC OFFLOAD ENGINE SUBSYSTEM -M: Vinod Koul -M: Dan Williams -S: Supported -F: drivers/dma/ -F: include/linux/dma* -T: git git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx.git -T: git git://git.infradead.org/users/vkoul/slave-dma.git (slave-dma) - -DME1737 HARDWARE MONITOR DRIVER -M: Juerg Haefliger -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/dme1737 -F: drivers/hwmon/dme1737.c - -DOCKING STATION DRIVER -M: Shaohua Li -L: linux-acpi@vger.kernel.org -S: Supported -F: drivers/acpi/dock.c - -DOCUMENTATION -M: Rob Landley -L: linux-doc@vger.kernel.org -T: TBD -S: Maintained -F: Documentation/ - -DOUBLETALK DRIVER -M: "James R. Van Zandt" -L: blinux-list@redhat.com -S: Maintained -F: drivers/char/dtlk.c -F: include/linux/dtlk.h - -DPT_I2O SCSI RAID DRIVER -M: Adaptec OEM Raid Solutions -L: linux-scsi@vger.kernel.org -W: http://www.adaptec.com/ -S: Maintained -F: drivers/scsi/dpt* -F: drivers/scsi/dpt/ - -DRBD DRIVER -P: Philipp Reisner -P: Lars Ellenberg -M: drbd-dev@lists.linbit.com -L: drbd-user@lists.linbit.com -W: http://www.drbd.org -T: git git://git.drbd.org/linux-2.6-drbd.git drbd -T: git git://git.drbd.org/drbd-8.3.git -S: Supported -F: drivers/block/drbd/ -F: lib/lru_cache.c -F: Documentation/blockdev/drbd/ - -DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS -M: Greg Kroah-Hartman -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git -S: Supported -F: Documentation/kobject.txt -F: drivers/base/ -F: fs/sysfs/ -F: fs/debugfs/ -F: include/linux/kobj* -F: include/linux/debugfs.h -F: lib/kobj* - -DRM DRIVERS -M: David Airlie -L: dri-devel@lists.freedesktop.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git -S: Maintained -F: drivers/gpu/drm/ -F: include/drm/ -F: include/uapi/drm/ - -INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets) -M: Daniel Vetter -L: intel-gfx@lists.freedesktop.org -L: dri-devel@lists.freedesktop.org -T: git git://people.freedesktop.org/~danvet/drm-intel -S: Supported -F: drivers/gpu/drm/i915 -F: include/drm/i915* -F: include/uapi/drm/i915* - -DRM DRIVERS FOR EXYNOS -M: Inki Dae -M: Joonyoung Shim -M: Seung-Woo Kim -M: Kyungmin Park -L: dri-devel@lists.freedesktop.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git -S: Supported -F: drivers/gpu/drm/exynos -F: include/drm/exynos* -F: include/uapi/drm/exynos* - -DRM DRIVERS FOR NVIDIA TEGRA -M: Thierry Reding -L: dri-devel@lists.freedesktop.org -L: linux-tegra@vger.kernel.org -T: git git://gitorious.org/thierryreding/linux.git -S: Maintained -F: drivers/gpu/drm/tegra/ -F: Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt - -DSBR100 USB FM RADIO DRIVER -M: Alexey Klimov -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/radio/dsbr100.c - -DSCC4 DRIVER -M: Francois Romieu -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/wan/dscc4.c - -DVB_USB_AF9015 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/af9015* - -DVB_USB_AF9035 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/af9035* - -DVB_USB_ANYSEE MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/anysee* - -DVB_USB_AU6610 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/au6610* - -DVB_USB_CE6230 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/ce6230* - -DVB_USB_CXUSB MEDIA DRIVER -M: Michael Krufky -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://github.com/mkrufky -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb/cxusb* - -DVB_USB_CYPRESS_FIRMWARE MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/cypress_firmware* - -DVB_USB_EC168 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/ec168* - -DVB_USB_MXL111SF MEDIA DRIVER -M: Michael Krufky -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://github.com/mkrufky -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/mkrufky/mxl111sf.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/mxl111sf* - -DVB_USB_RTL28XXU MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/rtl28xxu* - -DVB_USB_V2 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/usb/dvb-usb-v2/dvb_usb* -F: drivers/media/usb/dvb-usb-v2/usb_urb.c - -DYNAMIC DEBUG -M: Jason Baron -S: Maintained -F: lib/dynamic_debug.c -F: include/linux/dynamic_debug.h - -DZ DECSTATION DZ11 SERIAL DRIVER -M: "Maciej W. Rozycki" -S: Maintained -F: drivers/tty/serial/dz.* - -E4000 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/tuners/e4000* - -EATA-DMA SCSI DRIVER -M: Michael Neuffer -L: linux-eata@i-connect.net -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/eata* - -EATA ISA/EISA/PCI SCSI DRIVER -M: Dario Ballabio -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/eata.c - -EATA-PIO SCSI DRIVER -M: Michael Neuffer -L: linux-eata@i-connect.net -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/eata_pio.* - -EBTABLES -M: Bart De Schuymer -L: netfilter-devel@vger.kernel.org -W: http://ebtables.sourceforge.net/ -S: Maintained -F: include/linux/netfilter_bridge/ebt_*.h -F: include/uapi/linux/netfilter_bridge/ebt_*.h -F: net/bridge/netfilter/ebt*.c - -EC100 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/dvb-frontends/ec100* - -ECRYPT FILE SYSTEM -M: Tyler Hicks -M: Dustin Kirkland -L: ecryptfs@vger.kernel.org -W: https://launchpad.net/ecryptfs -S: Supported -F: Documentation/filesystems/ecryptfs.txt -F: fs/ecryptfs/ - -EDAC-CORE -M: Doug Thompson -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Supported -F: Documentation/edac.txt -F: drivers/edac/ -F: include/linux/edac.h - -EDAC-AMD64 -M: Doug Thompson -M: Borislav Petkov -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/amd64_edac* - -EDAC-CAVIUM -M: Ralf Baechle -M: David Daney -L: linux-edac@vger.kernel.org -L: linux-mips@linux-mips.org -W: bluesmoke.sourceforge.net -S: Supported -F: drivers/edac/octeon_edac* - -EDAC-E752X -M: Mark Gross -M: Doug Thompson -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/e752x_edac.c - -EDAC-E7XXX -M: Doug Thompson -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/e7xxx_edac.c - -EDAC-GHES -M: Mauro Carvalho Chehab -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/ghes-edac.c - -EDAC-I82443BXGX -M: Tim Small -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/i82443bxgx_edac.c - -EDAC-I3000 -M: Jason Uhlenkott -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/i3000_edac.c - -EDAC-I5000 -M: Doug Thompson -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/i5000_edac.c - -EDAC-I5400 -M: Mauro Carvalho Chehab -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/i5400_edac.c - -EDAC-I7300 -M: Mauro Carvalho Chehab -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/i7300_edac.c - -EDAC-I7CORE -M: Mauro Carvalho Chehab -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/i7core_edac.c - -EDAC-I82975X -M: Ranganathan Desikan -M: "Arvind R." -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/i82975x_edac.c - -EDAC-PASEMI -M: Egor Martovetsky -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/pasemi_edac.c - -EDAC-R82600 -M: Tim Small -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/r82600_edac.c - -EDAC-SBRIDGE -M: Mauro Carvalho Chehab -L: linux-edac@vger.kernel.org -W: bluesmoke.sourceforge.net -S: Maintained -F: drivers/edac/sb_edac.c - -EDIROL UA-101/UA-1000 DRIVER -M: Clemens Ladisch -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.alsa-project.org/alsa-kernel.git -S: Maintained -F: sound/usb/misc/ua101.c - -EXTENSIBLE FIRMWARE INTERFACE (EFI) -M: Matt Fleming -L: linux-efi@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi.git -S: Maintained -F: Documentation/x86/efi-stub.txt -F: arch/ia64/kernel/efi.c -F: arch/x86/boot/compressed/eboot.[ch] -F: arch/x86/include/asm/efi.h -F: arch/x86/platform/efi/* -F: drivers/firmware/efivars.c -F: include/linux/efi*.h - -EFIFB FRAMEBUFFER DRIVER -L: linux-fbdev@vger.kernel.org -M: Peter Jones -S: Maintained -F: drivers/video/efifb.c - -EFS FILESYSTEM -W: http://aeschi.ch.eu.org/efs/ -S: Orphan -F: fs/efs/ - -EHCA (IBM GX bus InfiniBand adapter) DRIVER -M: Hoang-Nam Nguyen -M: Christoph Raisch -L: linux-rdma@vger.kernel.org -S: Supported -F: drivers/infiniband/hw/ehca/ - -EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER -M: Thadeu Lima de Souza Cascardo -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/ibm/ehea/ - -EM28XX VIDEO4LINUX DRIVER -M: Mauro Carvalho Chehab -L: linux-media@vger.kernel.org -W: http://linuxtv.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/em28xx/ - -EMBEDDED LINUX -M: Paul Gortmaker -M: Matt Mackall -M: David Woodhouse -L: linux-embedded@vger.kernel.org -S: Maintained - -EMULEX LPFC FC SCSI DRIVER -M: James Smart -L: linux-scsi@vger.kernel.org -W: http://sourceforge.net/projects/lpfcxxxx -S: Supported -F: drivers/scsi/lpfc/ - -ENE CB710 FLASH CARD READER DRIVER -M: MichaÅ‚ MirosÅ‚aw -S: Maintained -F: drivers/misc/cb710/ -F: drivers/mmc/host/cb710-mmc.* -F: include/linux/cb710.h - -ENE KB2426 (ENE0100/ENE020XX) INFRARED RECEIVER -M: Maxim Levitsky -S: Maintained -F: drivers/media/rc/ene_ir.* - -EPSON S1D13XXX FRAMEBUFFER DRIVER -M: Kristoffer Ericson -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kristoffer/linux-hpc.git -F: drivers/video/s1d13xxxfb.c -F: include/video/s1d13xxxfb.h - -ETHERNET BRIDGE -M: Stephen Hemminger -L: bridge@lists.linux-foundation.org -L: netdev@vger.kernel.org -W: http://www.linuxfoundation.org/en/Net:Bridge -S: Maintained -F: include/linux/netfilter_bridge/ -F: net/bridge/ - -EXT2 FILE SYSTEM -M: Jan Kara -L: linux-ext4@vger.kernel.org -S: Maintained -F: Documentation/filesystems/ext2.txt -F: fs/ext2/ -F: include/linux/ext2* - -EXT3 FILE SYSTEM -M: Jan Kara -M: Andrew Morton -M: Andreas Dilger -L: linux-ext4@vger.kernel.org -S: Maintained -F: Documentation/filesystems/ext3.txt -F: fs/ext3/ - -EXT4 FILE SYSTEM -M: "Theodore Ts'o" -M: Andreas Dilger -L: linux-ext4@vger.kernel.org -W: http://ext4.wiki.kernel.org -Q: http://patchwork.ozlabs.org/project/linux-ext4/list/ -S: Maintained -F: Documentation/filesystems/ext4.txt -F: fs/ext4/ - -Extended Verification Module (EVM) -M: Mimi Zohar -S: Supported -F: security/integrity/evm/ - -EXTERNAL CONNECTOR SUBSYSTEM (EXTCON) -M: MyungJoo Ham -M: Chanwoo Choi -L: linux-kernel@vger.kernel.org -S: Maintained -F: drivers/extcon/ -F: Documentation/extcon/ - -EXYNOS DP DRIVER -M: Jingoo Han -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/exynos/exynos_dp* -F: include/video/exynos_dp* - -EXYNOS MIPI DISPLAY DRIVERS -M: Inki Dae -M: Donghwa Lee -M: Kyungmin Park -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/exynos/exynos_mipi* -F: include/video/exynos_mipi* - -F71805F HARDWARE MONITORING DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/f71805f -F: drivers/hwmon/f71805f.c - -FC0011 TUNER DRIVER -M: Michael Buesch -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/tuners/fc0011.h -F: drivers/media/tuners/fc0011.c - -FC2580 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/tuners/fc2580* - -FANOTIFY -M: Eric Paris -S: Maintained -F: fs/notify/fanotify/ -F: include/linux/fanotify.h -F: include/uapi/linux/fanotify.h - -FARSYNC SYNCHRONOUS DRIVER -M: Kevin Curtis -W: http://www.farsite.co.uk/ -S: Supported -F: drivers/net/wan/farsync.* - -FAULT INJECTION SUPPORT -M: Akinobu Mita -S: Supported -F: Documentation/fault-injection/ -F: lib/fault-inject.c - -FCOE SUBSYSTEM (libfc, libfcoe, fcoe) -M: Robert Love -L: devel@open-fcoe.org -W: www.Open-FCoE.org -S: Supported -F: drivers/scsi/libfc/ -F: drivers/scsi/fcoe/ -F: include/scsi/fc/ -F: include/scsi/libfc.h -F: include/scsi/libfcoe.h -F: include/uapi/scsi/fc/ - -FILE LOCKING (flock() and fcntl()/lockf()) -M: Matthew Wilcox -L: linux-fsdevel@vger.kernel.org -S: Maintained -F: include/linux/fcntl.h -F: include/linux/fs.h -F: include/uapi/linux/fcntl.h -F: include/uapi/linux/fs.h -F: fs/fcntl.c -F: fs/locks.c - -FILESYSTEMS (VFS and infrastructure) -M: Alexander Viro -L: linux-fsdevel@vger.kernel.org -S: Maintained -F: fs/* - -FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER -M: Riku Voipio -L: lm-sensors@lm-sensors.org -S: Maintained -F: drivers/hwmon/f75375s.c -F: include/linux/f75375s.h - -FIREWIRE AUDIO DRIVERS -M: Clemens Ladisch -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.alsa-project.org/alsa-kernel.git -S: Maintained -F: sound/firewire/ - -FIREWIRE MEDIA DRIVERS (firedtv) -M: Stefan Richter -L: linux-media@vger.kernel.org -L: linux1394-devel@lists.sourceforge.net -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git -S: Maintained -F: drivers/media/firewire/ - -FIREWIRE SBP-2 TARGET -M: Chris Boot -L: linux-scsi@vger.kernel.org -L: target-devel@vger.kernel.org -L: linux1394-devel@lists.sourceforge.net -T: git git://git.kernel.org/pub/scm/linux/kernel/git/nab/lio-core-2.6.git master -S: Maintained -F: drivers/target/sbp/ - -FIREWIRE SUBSYSTEM -M: Stefan Richter -L: linux1394-devel@lists.sourceforge.net -W: http://ieee1394.wiki.kernel.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394.git -S: Maintained -F: drivers/firewire/ -F: include/linux/firewire.h -F: include/uapi/linux/firewire*.h -F: tools/firewire/ - -FIRMWARE LOADER (request_firmware) -M: Ming Lei -L: linux-kernel@vger.kernel.org -S: Maintained -F: Documentation/firmware_class/ -F: drivers/base/firmware*.c -F: include/linux/firmware.h - -FLOPPY DRIVER -M: Jiri Kosina -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/floppy.git -S: Odd fixes -F: drivers/block/floppy.c - -FPU EMULATOR -M: Bill Metzenthen -W: http://floatingpoint.sourceforge.net/emulator/index.html -S: Maintained -F: arch/x86/math-emu/ - -FRAME RELAY DLCI/FRAD (Sangoma drivers too) -L: netdev@vger.kernel.org -S: Orphan -F: drivers/net/wan/dlci.c -F: drivers/net/wan/sdla.c - -FRAMEBUFFER LAYER -M: Florian Tobias Schandinat -L: linux-fbdev@vger.kernel.org -W: http://linux-fbdev.sourceforge.net/ -Q: http://patchwork.kernel.org/project/linux-fbdev/list/ -T: git git://github.com/schandinat/linux-2.6.git fbdev-next -S: Maintained -F: Documentation/fb/ -F: Documentation/devicetree/bindings/fb/ -F: drivers/video/ -F: include/video/ -F: include/linux/fb.h -F: include/uapi/video/ -F: include/uapi/linux/fb.h - -FREESCALE DIU FRAMEBUFFER DRIVER -M: Timur Tabi -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/fsl-diu-fb.* - -FREESCALE DMA DRIVER -M: Li Yang -M: Zhang Wei -L: linuxppc-dev@lists.ozlabs.org -S: Maintained -F: drivers/dma/fsldma.* - -FREESCALE I2C CPM DRIVER -M: Jochen Friedrich -L: linuxppc-dev@lists.ozlabs.org -L: linux-i2c@vger.kernel.org -S: Maintained -F: drivers/i2c/busses/i2c-cpm.c - -FREESCALE IMX / MXC FRAMEBUFFER DRIVER -M: Sascha Hauer -L: linux-fbdev@vger.kernel.org -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: include/linux/platform_data/video-imxfb.h -F: drivers/video/imxfb.c - -FREESCALE SOC FS_ENET DRIVER -M: Pantelis Antoniou -M: Vitaly Bordug -L: linuxppc-dev@lists.ozlabs.org -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/freescale/fs_enet/ -F: include/linux/fs_enet_pd.h - -FREESCALE QUICC ENGINE LIBRARY -L: linuxppc-dev@lists.ozlabs.org -S: Orphan -F: arch/powerpc/sysdev/qe_lib/ -F: arch/powerpc/include/asm/*qe.h - -FREESCALE USB PERIPHERAL DRIVERS -M: Li Yang -L: linux-usb@vger.kernel.org -L: linuxppc-dev@lists.ozlabs.org -S: Maintained -F: drivers/usb/gadget/fsl* - -FREESCALE QUICC ENGINE UCC ETHERNET DRIVER -M: Li Yang -L: netdev@vger.kernel.org -L: linuxppc-dev@lists.ozlabs.org -S: Maintained -F: drivers/net/ethernet/freescale/ucc_geth* - -FREESCALE QUICC ENGINE UCC UART DRIVER -M: Timur Tabi -L: linuxppc-dev@lists.ozlabs.org -S: Maintained -F: drivers/tty/serial/ucc_uart.c - -FREESCALE SOC SOUND DRIVERS -M: Timur Tabi -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -L: linuxppc-dev@lists.ozlabs.org -S: Maintained -F: sound/soc/fsl/fsl* -F: sound/soc/fsl/mpc8610_hpcd.c - -FREEVXFS FILESYSTEM -M: Christoph Hellwig -W: ftp://ftp.openlinux.org/pub/people/hch/vxfs -S: Maintained -F: fs/freevxfs/ - -FREEZER -M: Pavel Machek -M: "Rafael J. Wysocki" -L: linux-pm@vger.kernel.org -S: Supported -F: Documentation/power/freezing-of-tasks.txt -F: include/linux/freezer.h -F: kernel/freezer.c - -FRONTSWAP API -M: Konrad Rzeszutek Wilk -L: linux-kernel@vger.kernel.org -S: Maintained -F: mm/frontswap.c -F: include/linux/frontswap.h - -FS-CACHE: LOCAL CACHING FOR NETWORK FILESYSTEMS -M: David Howells -L: linux-cachefs@redhat.com -S: Supported -F: Documentation/filesystems/caching/ -F: fs/fscache/ -F: include/linux/fscache*.h - -F2FS FILE SYSTEM -M: Jaegeuk Kim -L: linux-f2fs-devel@lists.sourceforge.net -W: http://en.wikipedia.org/wiki/F2FS -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git -S: Maintained -F: Documentation/filesystems/f2fs.txt -F: fs/f2fs/ -F: include/linux/f2fs_fs.h - -FUJITSU FR-V (FRV) PORT -M: David Howells -S: Maintained -F: arch/frv/ - -FUJITSU LAPTOP EXTRAS -M: Jonathan Woithe -L: platform-driver-x86@vger.kernel.org -S: Maintained -F: drivers/platform/x86/fujitsu-laptop.c - -FUJITSU M-5MO LS CAMERA ISP DRIVER -M: Kyungmin Park -M: Heungjun Kim -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/i2c/m5mols/ -F: include/media/m5mols.h - -FUJITSU TABLET EXTRAS -M: Robert Gerlach -L: platform-driver-x86@vger.kernel.org -S: Maintained -F: drivers/platform/x86/fujitsu-tablet.c - -FUSE: FILESYSTEM IN USERSPACE -M: Miklos Szeredi -L: fuse-devel@lists.sourceforge.net -W: http://fuse.sourceforge.net/ -S: Maintained -F: fs/fuse/ -F: include/uapi/linux/fuse.h - -FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit) -M: Rik Faith -L: linux-scsi@vger.kernel.org -S: Odd Fixes (e.g., new signatures) -F: drivers/scsi/fdomain.* - -GDT SCSI DISK ARRAY CONTROLLER DRIVER -M: Achim Leubner -L: linux-scsi@vger.kernel.org -W: http://www.icp-vortex.com/ -S: Supported -F: drivers/scsi/gdt* - -GEMTEK FM RADIO RECEIVER DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/radio/radio-gemtek* - -GENERIC GPIO I2C DRIVER -M: Haavard Skinnemoen -S: Supported -F: drivers/i2c/busses/i2c-gpio.c -F: include/linux/i2c-gpio.h - -GENERIC GPIO I2C MULTIPLEXER DRIVER -M: Peter Korsgaard -L: linux-i2c@vger.kernel.org -S: Supported -F: drivers/i2c/muxes/i2c-mux-gpio.c -F: include/linux/i2c-mux-gpio.h -F: Documentation/i2c/muxes/i2c-mux-gpio - -GENERIC HDLC (WAN) DRIVERS -M: Krzysztof Halasa -W: http://www.kernel.org/pub/linux/utils/net/hdlc/ -S: Maintained -F: drivers/net/wan/c101.c -F: drivers/net/wan/hd6457* -F: drivers/net/wan/hdlc* -F: drivers/net/wan/n2.c -F: drivers/net/wan/pc300too.c -F: drivers/net/wan/pci200syn.c -F: drivers/net/wan/wanxl* - -GENERIC INCLUDE/ASM HEADER FILES -M: Arnd Bergmann -L: linux-arch@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git -S: Maintained -F: include/asm-generic -F: include/uapi/asm-generic - -GENERIC UIO DRIVER FOR PCI DEVICES -M: "Michael S. Tsirkin" -L: kvm@vger.kernel.org -S: Supported -F: drivers/uio/uio_pci_generic.c - -GFS2 FILE SYSTEM -M: Steven Whitehouse -L: cluster-devel@redhat.com -W: http://sources.redhat.com/cluster/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw.git -S: Supported -F: Documentation/filesystems/gfs2*.txt -F: fs/gfs2/ -F: include/uapi/linux/gfs2_ondisk.h - -GIGASET ISDN DRIVERS -M: Hansjoerg Lipp -M: Tilman Schmidt -L: gigaset307x-common@lists.sourceforge.net -W: http://gigaset307x.sourceforge.net/ -S: Maintained -F: Documentation/isdn/README.gigaset -F: drivers/isdn/gigaset/ -F: include/uapi/linux/gigaset_dev.h - -GPIO SUBSYSTEM -M: Grant Likely -M: Linus Walleij -S: Maintained -T: git git://git.secretlab.ca/git/linux-2.6.git -F: Documentation/gpio.txt -F: drivers/gpio/ -F: include/linux/gpio* -F: include/asm-generic/gpio.h - -GRE DEMULTIPLEXER DRIVER -M: Dmitry Kozlov -L: netdev@vger.kernel.org -S: Maintained -F: net/ipv4/gre.c -F: include/net/gre.h - -GRETH 10/100/1G Ethernet MAC device driver -M: Kristoffer Glembo -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/aeroflex/ - -GSPCA FINEPIX SUBDRIVER -M: Frank Zago -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/gspca/finepix.c - -GSPCA GL860 SUBDRIVER -M: Olivier Lorin -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/gspca/gl860/ - -GSPCA M5602 SUBDRIVER -M: Erik Andren -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/gspca/m5602/ - -GSPCA PAC207 SONIXB SUBDRIVER -M: Hans de Goede -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/gspca/pac207.c - -GSPCA SN9C20X SUBDRIVER -M: Brian Johnson -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/gspca/sn9c20x.c - -GSPCA T613 SUBDRIVER -M: Leandro Costantino -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/gspca/t613.c - -GSPCA USB WEBCAM DRIVER -M: Hans de Goede -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/gspca/ - -STK1160 USB VIDEO CAPTURE DRIVER -M: Ezequiel Garcia -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/stk1160/ - -HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER -M: Frank Seidel -L: platform-driver-x86@vger.kernel.org -W: http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/ -S: Maintained -F: drivers/platform/x86/hdaps.c - -HWPOISON MEMORY FAILURE HANDLING -M: Andi Kleen -L: linux-mm@kvack.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6.git hwpoison -S: Maintained -F: mm/memory-failure.c -F: mm/hwpoison-inject.c - -HYPERVISOR VIRTUAL CONSOLE DRIVER -L: linuxppc-dev@lists.ozlabs.org -S: Odd Fixes -F: drivers/tty/hvc/ - -HARDWARE MONITORING -M: Jean Delvare -M: Guenter Roeck -L: lm-sensors@lm-sensors.org -W: http://www.lm-sensors.org/ -T: quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-hwmon/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git -S: Maintained -F: Documentation/hwmon/ -F: drivers/hwmon/ -F: include/linux/hwmon*.h - -HARDWARE RANDOM NUMBER GENERATOR CORE -M: Matt Mackall -M: Herbert Xu -S: Odd fixes -F: Documentation/hw_random.txt -F: drivers/char/hw_random/ -F: include/linux/hw_random.h - -HARDWARE SPINLOCK CORE -M: Ohad Ben-Cohen -S: Maintained -F: Documentation/hwspinlock.txt -F: drivers/hwspinlock/hwspinlock_* -F: include/linux/hwspinlock.h - -HARMONY SOUND DRIVER -L: linux-parisc@vger.kernel.org -S: Maintained -F: sound/parisc/harmony.* - -HD29L2 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/dvb-frontends/hd29l2* - -HEWLETT-PACKARD SMART2 RAID DRIVER -M: Chirag Kantharia -L: iss_storagedev@hp.com -S: Maintained -F: Documentation/blockdev/cpqarray.txt -F: drivers/block/cpqarray.* - -HEWLETT-PACKARD SMART ARRAY RAID DRIVER (hpsa) -M: "Stephen M. Cameron" -L: iss_storagedev@hp.com -S: Supported -F: Documentation/scsi/hpsa.txt -F: drivers/scsi/hpsa*.[ch] -F: include/linux/cciss*.h -F: include/uapi/linux/cciss*.h - -HEWLETT-PACKARD SMART CISS RAID DRIVER (cciss) -M: Mike Miller -L: iss_storagedev@hp.com -S: Supported -F: Documentation/blockdev/cciss.txt -F: drivers/block/cciss* -F: include/linux/cciss_ioctl.h -F: include/uapi/linux/cciss_ioctl.h - -HFS FILESYSTEM -L: linux-fsdevel@vger.kernel.org -S: Orphan -F: Documentation/filesystems/hfs.txt -F: fs/hfs/ - -HGA FRAMEBUFFER DRIVER -M: Ferenc Bakonyi -L: linux-nvidia@lists.surfsouth.com -W: http://drama.obuda.kando.hu/~fero/cgi-bin/hgafb.shtml -S: Maintained -F: drivers/video/hgafb.c - -HIBERNATION (aka Software Suspend, aka swsusp) -M: Pavel Machek -M: "Rafael J. Wysocki" -L: linux-pm@vger.kernel.org -S: Supported -F: arch/x86/power/ -F: drivers/base/power/ -F: kernel/power/ -F: include/linux/suspend.h -F: include/linux/freezer.h -F: include/linux/pm.h -F: arch/*/include/asm/suspend*.h - -HID CORE LAYER -M: Jiri Kosina -L: linux-input@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git -S: Maintained -F: drivers/hid/ -F: include/linux/hid* -F: include/uapi/linux/hid* - -HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS -M: Thomas Gleixner -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core -S: Maintained -F: Documentation/timers/ -F: kernel/hrtimer.c -F: kernel/time/clockevents.c -F: kernel/time/tick*.* -F: kernel/time/timer_*.c -F: include/linux/clockchips.h -F: include/linux/hrtimer.h - -HIGH-SPEED SCC DRIVER FOR AX.25 -L: linux-hams@vger.kernel.org -S: Orphan -F: drivers/net/hamradio/dmascc.c -F: drivers/net/hamradio/scc.c - -HIGHPOINT ROCKETRAID 3xxx RAID DRIVER -M: HighPoint Linux Team -W: http://www.highpoint-tech.com -S: Supported -F: Documentation/scsi/hptiop.txt -F: drivers/scsi/hptiop.c - -HIPPI -M: Jes Sorensen -L: linux-hippi@sunsite.dk -S: Maintained -F: include/linux/hippidevice.h -F: include/uapi/linux/if_hippi.h -F: net/802/hippi.c -F: drivers/net/hippi/ - -HOST AP DRIVER -M: Jouni Malinen -L: hostap@shmoo.com (subscribers-only) -L: linux-wireless@vger.kernel.org -W: http://hostap.epitest.fi/ -S: Maintained -F: drivers/net/wireless/hostap/ - -HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER -L: platform-driver-x86@vger.kernel.org -S: Orphan -F: drivers/platform/x86/tc1100-wmi.c - -HP100: Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series -M: Jaroslav Kysela -S: Maintained -F: drivers/net/ethernet/hp/hp100.* - -HPET: High Precision Event Timers driver -M: Clemens Ladisch -S: Maintained -F: Documentation/timers/hpet.txt -F: drivers/char/hpet.c -F: include/linux/hpet.h -F: include/uapi/linux/hpet.h - -HPET: x86 -M: "Venkatesh Pallipadi (Venki)" -S: Maintained -F: arch/x86/kernel/hpet.c -F: arch/x86/include/asm/hpet.h - -HPFS FILESYSTEM -M: Mikulas Patocka -W: http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi -S: Maintained -F: fs/hpfs/ - -HSO 3G MODEM DRIVER -M: Jan Dumon -W: http://www.pharscape.org -S: Maintained -F: drivers/net/usb/hso.c - -HTCPEN TOUCHSCREEN DRIVER -M: Pau Oliva Fora -L: linux-input@vger.kernel.org -S: Maintained -F: drivers/input/touchscreen/htcpen.c - -HUGETLB FILESYSTEM -M: Nadia Yvette Chambers -S: Maintained -F: fs/hugetlbfs/ - -Hyper-V CORE AND DRIVERS -M: K. Y. Srinivasan -M: Haiyang Zhang -L: devel@linuxdriverproject.org -S: Maintained -F: drivers/hv/ -F: drivers/hid/hid-hyperv.c -F: drivers/net/hyperv/ - -I2C OVER PARALLEL PORT -M: Jean Delvare -L: linux-i2c@vger.kernel.org -S: Maintained -F: Documentation/i2c/busses/i2c-parport -F: Documentation/i2c/busses/i2c-parport-light -F: drivers/i2c/busses/i2c-parport.c -F: drivers/i2c/busses/i2c-parport-light.c - -I2C/SMBUS CONTROLLER DRIVERS FOR PC -M: Jean Delvare -L: linux-i2c@vger.kernel.org -S: Maintained -F: Documentation/i2c/busses/i2c-ali1535 -F: Documentation/i2c/busses/i2c-ali1563 -F: Documentation/i2c/busses/i2c-ali15x3 -F: Documentation/i2c/busses/i2c-amd756 -F: Documentation/i2c/busses/i2c-amd8111 -F: Documentation/i2c/busses/i2c-i801 -F: Documentation/i2c/busses/i2c-nforce2 -F: Documentation/i2c/busses/i2c-piix4 -F: Documentation/i2c/busses/i2c-sis5595 -F: Documentation/i2c/busses/i2c-sis630 -F: Documentation/i2c/busses/i2c-sis96x -F: Documentation/i2c/busses/i2c-via -F: Documentation/i2c/busses/i2c-viapro -F: drivers/i2c/busses/i2c-ali1535.c -F: drivers/i2c/busses/i2c-ali1563.c -F: drivers/i2c/busses/i2c-ali15x3.c -F: drivers/i2c/busses/i2c-amd756.c -F: drivers/i2c/busses/i2c-amd756-s4882.c -F: drivers/i2c/busses/i2c-amd8111.c -F: drivers/i2c/busses/i2c-i801.c -F: drivers/i2c/busses/i2c-isch.c -F: drivers/i2c/busses/i2c-nforce2.c -F: drivers/i2c/busses/i2c-nforce2-s4985.c -F: drivers/i2c/busses/i2c-piix4.c -F: drivers/i2c/busses/i2c-sis5595.c -F: drivers/i2c/busses/i2c-sis630.c -F: drivers/i2c/busses/i2c-sis96x.c -F: drivers/i2c/busses/i2c-via.c -F: drivers/i2c/busses/i2c-viapro.c - -I2C/SMBUS ISMT DRIVER -M: Seth Heasley -M: Neil Horman -L: linux-i2c@vger.kernel.org -F: drivers/i2c/busses/i2c-ismt.c -F: Documentation/i2c/busses/i2c-ismt - -I2C/SMBUS STUB DRIVER -M: Jean Delvare -L: linux-i2c@vger.kernel.org -S: Maintained -F: drivers/i2c/i2c-stub.c - -I2C SUBSYSTEM -M: Wolfram Sang -M: "Ben Dooks (embedded platforms)" -L: linux-i2c@vger.kernel.org -W: http://i2c.wiki.kernel.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git -S: Maintained -F: Documentation/i2c/ -F: drivers/i2c/ -F: include/linux/i2c.h -F: include/linux/i2c-*.h -F: include/uapi/linux/i2c.h -F: include/uapi/linux/i2c-*.h - -I2C-TAOS-EVM DRIVER -M: Jean Delvare -L: linux-i2c@vger.kernel.org -S: Maintained -F: Documentation/i2c/busses/i2c-taos-evm -F: drivers/i2c/busses/i2c-taos-evm.c - -I2C-TINY-USB DRIVER -M: Till Harbaum -L: linux-i2c@vger.kernel.org -W: http://www.harbaum.org/till/i2c_tiny_usb -S: Maintained -F: drivers/i2c/busses/i2c-tiny-usb.c - -i386 BOOT CODE -M: "H. Peter Anvin" -S: Maintained -F: arch/x86/boot/ - -i386 SETUP CODE / CPU ERRATA WORKAROUNDS -M: "H. Peter Anvin" -T: git git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup.git -S: Maintained - -IA64 (Itanium) PLATFORM -M: Tony Luck -M: Fenghua Yu -L: linux-ia64@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux.git -S: Maintained -F: arch/ia64/ - -IBM Power in-Nest Crypto Acceleration -M: Kent Yoder -L: linux-crypto@vger.kernel.org -S: Supported -F: drivers/crypto/nx/ - -IBM Power 842 compression accelerator -M: Robert Jennings -S: Supported -F: drivers/crypto/nx/nx-842.c -F: include/linux/nx842.h - -IBM Power Linux RAID adapter -M: Brian King -S: Supported -F: drivers/scsi/ipr.* - -IBM Power Virtual Ethernet Device Driver -M: Santiago Leon -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/ibm/ibmveth.* - -IBM Power Virtual SCSI/FC Device Drivers -M: Robert Jennings -L: linux-scsi@vger.kernel.org -S: Supported -F: drivers/scsi/ibmvscsi/ -X: drivers/scsi/ibmvscsi/ibmvstgt.c - -IBM ServeRAID RAID DRIVER -P: Jack Hammer -M: Dave Jeffery -W: http://www.developer.ibm.com/welcome/netfinity/serveraid.html -S: Supported -F: drivers/scsi/ips.* - -ICH LPC AND GPIO DRIVER -M: Peter Tyser -S: Maintained -F: drivers/mfd/lpc_ich.c -F: drivers/gpio/gpio-ich.c - -IDE SUBSYSTEM -M: "David S. Miller" -L: linux-ide@vger.kernel.org -Q: http://patchwork.ozlabs.org/project/linux-ide/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide.git -S: Maintained -F: Documentation/ide/ -F: drivers/ide/ -F: include/linux/ide.h - -IDEAPAD LAPTOP EXTRAS DRIVER -M: Ike Panhc -L: platform-driver-x86@vger.kernel.org -W: http://launchpad.net/ideapad-laptop -S: Maintained -F: drivers/platform/x86/ideapad-laptop.c - -IDE/ATAPI DRIVERS -M: Borislav Petkov -L: linux-ide@vger.kernel.org -S: Maintained -F: Documentation/cdrom/ide-cd -F: drivers/ide/ide-cd* - -IDLE-I7300 -M: Andy Henroid -L: linux-pm@vger.kernel.org -S: Supported -F: drivers/idle/i7300_idle.c - -IEEE 802.15.4 SUBSYSTEM -M: Alexander Smirnov -M: Dmitry Eremin-Solenikov -L: linux-zigbee-devel@lists.sourceforge.net (moderated for non-subscribers) -W: http://apps.sourceforge.net/trac/linux-zigbee -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan.git -S: Maintained -F: net/ieee802154/ -F: net/mac802154/ -F: drivers/net/ieee802154/ - -IGUANAWORKS USB IR TRANSCEIVER -M: Sean Young -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/rc/iguanair.c - -IIO SUBSYSTEM AND DRIVERS -M: Jonathan Cameron -L: linux-iio@vger.kernel.org -S: Maintained -F: drivers/iio/ -F: drivers/staging/iio/ - -IKANOS/ADI EAGLE ADSL USB DRIVER -M: Matthieu Castet -M: Stanislaw Gruszka -S: Maintained -F: drivers/usb/atm/ueagle-atm.c - -INA209 HARDWARE MONITOR DRIVER -M: Guenter Roeck -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/ina209 -F: Documentation/devicetree/bindings/i2c/ina209.txt -F: drivers/hwmon/ina209.c - -INA2XX HARDWARE MONITOR DRIVER -M: Guenter Roeck -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/ina2xx -F: drivers/hwmon/ina2xx.c -F: include/linux/platform_data/ina2xx.h - -INDUSTRY PACK SUBSYSTEM (IPACK) -M: Samuel Iglesias Gonsalvez -M: Jens Taprogge -M: Greg Kroah-Hartman -L: industrypack-devel@lists.sourceforge.net -W: http://industrypack.sourceforge.net -S: Maintained -F: drivers/ipack/ - -INTEGRITY MEASUREMENT ARCHITECTURE (IMA) -M: Mimi Zohar -S: Supported -F: security/integrity/ima/ - -IMS TWINTURBO FRAMEBUFFER DRIVER -L: linux-fbdev@vger.kernel.org -S: Orphan -F: drivers/video/imsttfb.c - -INFINIBAND SUBSYSTEM -M: Roland Dreier -M: Sean Hefty -M: Hal Rosenstock -L: linux-rdma@vger.kernel.org -W: http://www.openfabrics.org/ -Q: http://patchwork.kernel.org/project/linux-rdma/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git -S: Supported -F: Documentation/infiniband/ -F: drivers/infiniband/ -F: include/uapi/linux/if_infiniband.h - -INOTIFY -M: John McCutchan -M: Robert Love -M: Eric Paris -S: Maintained -F: Documentation/filesystems/inotify.txt -F: fs/notify/inotify/ -F: include/linux/inotify.h -F: include/uapi/linux/inotify.h - -INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS -M: Dmitry Torokhov -M: Dmitry Torokhov -L: linux-input@vger.kernel.org -Q: http://patchwork.kernel.org/project/linux-input/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git -S: Maintained -F: drivers/input/ -F: include/linux/input.h -F: include/uapi/linux/input.h -F: include/linux/input/ - -INPUT MULTITOUCH (MT) PROTOCOL -M: Henrik Rydberg -L: linux-input@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/rydberg/input-mt.git -S: Maintained -F: Documentation/input/multi-touch-protocol.txt -F: drivers/input/input-mt.c -K: \b(ABS|SYN)_MT_ - -INTEL C600 SERIES SAS CONTROLLER DRIVER -M: Intel SCU Linux support -M: Lukasz Dorau -M: Maciej Patelczyk -M: Dave Jiang -L: linux-scsi@vger.kernel.org -T: git git://git.code.sf.net/p/intel-sas/isci -S: Supported -F: drivers/scsi/isci/ - -INTEL IDLE DRIVER -M: Len Brown -L: linux-pm@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux.git -S: Supported -F: drivers/idle/intel_idle.c - -INTEL FRAMEBUFFER DRIVER (excluding 810 and 815) -M: Maik Broemme -L: linux-fbdev@vger.kernel.org -S: Maintained -F: Documentation/fb/intelfb.txt -F: drivers/video/intelfb/ - -INTEL 810/815 FRAMEBUFFER DRIVER -M: Antonino Daplas -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/i810/ - -INTEL MENLOW THERMAL DRIVER -M: Sujith Thomas -L: platform-driver-x86@vger.kernel.org -W: http://www.lesswatts.org/projects/acpi/ -S: Supported -F: drivers/platform/x86/intel_menlow.c - -INTEL IA32 MICROCODE UPDATE SUPPORT -M: Tigran Aivazian -S: Maintained -F: arch/x86/kernel/microcode_core.c -F: arch/x86/kernel/microcode_intel.c - -INTEL I/OAT DMA DRIVER -M: Dan Williams -S: Maintained -F: drivers/dma/ioat* - -INTEL IOMMU (VT-d) -M: David Woodhouse -L: iommu@lists.linux-foundation.org -T: git git://git.infradead.org/iommu-2.6.git -S: Supported -F: drivers/iommu/intel-iommu.c -F: include/linux/intel-iommu.h - -INTEL IOP-ADMA DMA DRIVER -M: Dan Williams -S: Odd fixes -F: drivers/dma/iop-adma.c - -INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT -M: Krzysztof Halasa -S: Maintained -F: arch/arm/mach-ixp4xx/include/mach/qmgr.h -F: arch/arm/mach-ixp4xx/include/mach/npe.h -F: arch/arm/mach-ixp4xx/ixp4xx_qmgr.c -F: arch/arm/mach-ixp4xx/ixp4xx_npe.c -F: drivers/net/ethernet/xscale/ixp4xx_eth.c -F: drivers/net/wan/ixp4xx_hss.c - -INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT -M: Deepak Saxena -S: Maintained -F: drivers/char/hw_random/ixp4xx-rng.c - -INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf) -M: Jeff Kirsher -M: Jesse Brandeburg -M: Bruce Allan -M: Carolyn Wyborny -M: Don Skidmore -M: Greg Rose -M: Peter P Waskiewicz Jr -M: Alex Duyck -M: John Ronciak -M: Tushar Dave -L: e1000-devel@lists.sourceforge.net -W: http://www.intel.com/support/feedback.htm -W: http://e1000.sourceforge.net/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next.git -S: Supported -F: Documentation/networking/e100.txt -F: Documentation/networking/e1000.txt -F: Documentation/networking/e1000e.txt -F: Documentation/networking/igb.txt -F: Documentation/networking/igbvf.txt -F: Documentation/networking/ixgb.txt -F: Documentation/networking/ixgbe.txt -F: Documentation/networking/ixgbevf.txt -F: drivers/net/ethernet/intel/ - -INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT -M: Stanislav Yakovlev -L: linux-wireless@vger.kernel.org -S: Maintained -F: Documentation/networking/README.ipw2100 -F: Documentation/networking/README.ipw2200 -F: drivers/net/wireless/ipw2x00/ - -INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT) -M: Richard L Maliszewski -M: Gang Wei -M: Shane Wang -L: tboot-devel@lists.sourceforge.net -W: http://tboot.sourceforge.net -T: hg http://tboot.hg.sourceforge.net:8000/hgroot/tboot/tboot -S: Supported -F: Documentation/intel_txt.txt -F: include/linux/tboot.h -F: arch/x86/kernel/tboot.c - -INTEL WIRELESS WIMAX CONNECTION 2400 -M: Inaky Perez-Gonzalez -M: linux-wimax@intel.com -L: wimax@linuxwimax.org -S: Supported -W: http://linuxwimax.org -F: Documentation/wimax/README.i2400m -F: drivers/net/wimax/i2400m/ -F: include/uapi/linux/wimax/i2400m.h - -INTEL WIRELESS 3945ABG/BG, 4965AGN (iwlegacy) -M: Stanislaw Gruszka -L: linux-wireless@vger.kernel.org -S: Supported -F: drivers/net/wireless/iwlegacy/ - -INTEL WIRELESS WIFI LINK (iwlwifi) -M: Johannes Berg -M: Wey-Yi Guy -M: Intel Linux Wireless -L: linux-wireless@vger.kernel.org -W: http://intellinuxwireless.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi.git -S: Supported -F: drivers/net/wireless/iwlwifi/ - -INTEL MANAGEMENT ENGINE (mei) -M: Tomas Winkler -L: linux-kernel@vger.kernel.org -S: Supported -F: include/uapi/linux/mei.h -F: drivers/misc/mei/* -F: Documentation/misc-devices/mei/* - -IOC3 ETHERNET DRIVER -M: Ralf Baechle -L: linux-mips@linux-mips.org -S: Maintained -F: drivers/net/ethernet/sgi/ioc3-eth.c - -IOC3 SERIAL DRIVER -M: Pat Gefre -L: linux-serial@vger.kernel.org -S: Maintained -F: drivers/tty/serial/ioc3_serial.c - -IP MASQUERADING -M: Juanjo Ciarlante -S: Maintained -F: net/ipv4/netfilter/ipt_MASQUERADE.c - -IP1000A 10/100/1000 GIGABIT ETHERNET DRIVER -M: Francois Romieu -M: Sorbica Shieh -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/icplus/ipg.* - -IPATH DRIVER -M: Mike Marciniszyn -L: linux-rdma@vger.kernel.org -S: Maintained -F: drivers/infiniband/hw/ipath/ - -IPMI SUBSYSTEM -M: Corey Minyard -L: openipmi-developer@lists.sourceforge.net (moderated for non-subscribers) -W: http://openipmi.sourceforge.net/ -S: Supported -F: Documentation/IPMI.txt -F: drivers/char/ipmi/ -F: include/linux/ipmi* -F: include/uapi/linux/ipmi* - -IPS SCSI RAID DRIVER -M: Adaptec OEM Raid Solutions -L: linux-scsi@vger.kernel.org -W: http://www.adaptec.com/ -S: Maintained -F: drivers/scsi/ips* - -IPVS -M: Wensong Zhang -M: Simon Horman -M: Julian Anastasov -L: netdev@vger.kernel.org -L: lvs-devel@vger.kernel.org -S: Maintained -F: Documentation/networking/ipvs-sysctl.txt -F: include/net/ip_vs.h -F: include/uapi/linux/ip_vs.h -F: net/netfilter/ipvs/ - -IPWIRELESS DRIVER -M: Jiri Kosina -M: David Sterba -S: Odd Fixes -F: drivers/tty/ipwireless/ - -IPX NETWORK LAYER -M: Arnaldo Carvalho de Melo -L: netdev@vger.kernel.org -S: Maintained -F: include/net/ipx.h -F: include/uapi/linux/ipx.h -F: net/ipx/ - -IRDA SUBSYSTEM -M: Samuel Ortiz -L: irda-users@lists.sourceforge.net (subscribers-only) -L: netdev@vger.kernel.org -W: http://irda.sourceforge.net/ -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/irda-2.6.git -F: Documentation/networking/irda.txt -F: drivers/net/irda/ -F: include/net/irda/ -F: net/irda/ - -IRQ SUBSYSTEM -M: Thomas Gleixner -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core -F: kernel/irq/ -F: drivers/irqchip/ - -IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY) -M: Benjamin Herrenschmidt -M: Grant Likely -T: git git://git.secretlab.ca/git/linux-2.6.git irqdomain/next -S: Maintained -F: Documentation/IRQ-domain.txt -F: include/linux/irqdomain.h -F: kernel/irq/irqdomain.c - -ISAPNP -M: Jaroslav Kysela -S: Maintained -F: Documentation/isapnp.txt -F: drivers/pnp/isapnp/ -F: include/linux/isapnp.h - -ISA RADIO MODULE -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/radio/radio-isa* - -iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER -M: Peter Jones -M: Konrad Rzeszutek Wilk -S: Maintained -F: drivers/firmware/iscsi_ibft* - -ISCSI -M: Mike Christie -L: open-iscsi@googlegroups.com -W: www.open-iscsi.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mnc/linux-2.6-iscsi.git -S: Maintained -F: drivers/scsi/*iscsi* -F: include/scsi/*iscsi* - -ISDN SUBSYSTEM -M: Karsten Keil -L: isdn4linux@listserv.isdn4linux.de (subscribers-only) -L: netdev@vger.kernel.org -W: http://www.isdn4linux.de -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/isdn-2.6.git -S: Maintained -F: Documentation/isdn/ -F: drivers/isdn/ -F: include/linux/isdn.h -F: include/linux/isdn/ -F: include/uapi/linux/isdn.h -F: include/uapi/linux/isdn/ - -ISDN SUBSYSTEM (Eicon active card driver) -M: Armin Schindler -L: isdn4linux@listserv.isdn4linux.de (subscribers-only) -W: http://www.melware.de -S: Maintained -F: drivers/isdn/hardware/eicon/ - -IT87 HARDWARE MONITORING DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/it87 -F: drivers/hwmon/it87.c - -IT913X MEDIA DRIVER -M: Malcolm Priestley -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -S: Maintained -F: drivers/media/usb/dvb-usb-v2/it913x* - -IT913X FE MEDIA DRIVER -M: Malcolm Priestley -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -S: Maintained -F: drivers/media/dvb-frontends/it913x-fe* - -IVTV VIDEO4LINUX DRIVER -M: Andy Walls -L: ivtv-devel@ivtvdriver.org (moderated for non-subscribers) -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://www.ivtvdriver.org -S: Maintained -F: Documentation/video4linux/*.ivtv -F: drivers/media/pci/ivtv/ -F: include/uapi/linux/ivtv* - -IX2505V MEDIA DRIVER -M: Malcolm Priestley -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -S: Maintained -F: drivers/media/dvb-frontends/ix2505v* - -JC42.4 TEMPERATURE SENSOR DRIVER -M: Guenter Roeck -L: lm-sensors@lm-sensors.org -S: Maintained -F: drivers/hwmon/jc42.c -F: Documentation/hwmon/jc42 - -JFS FILESYSTEM -M: Dave Kleikamp -L: jfs-discussion@lists.sourceforge.net -W: http://jfs.sourceforge.net/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git -S: Maintained -F: Documentation/filesystems/jfs.txt -F: fs/jfs/ - -JME NETWORK DRIVER -M: Guo-Fu Tseng -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/jme.* - -JOURNALLING FLASH FILE SYSTEM V2 (JFFS2) -M: David Woodhouse -L: linux-mtd@lists.infradead.org -W: http://www.linux-mtd.infradead.org/doc/jffs2.html -S: Maintained -F: fs/jffs2/ -F: include/uapi/linux/jffs2.h - -JOURNALLING LAYER FOR BLOCK DEVICES (JBD) -M: Andrew Morton -M: Jan Kara -L: linux-ext4@vger.kernel.org -S: Maintained -F: fs/jbd/ -F: include/linux/jbd.h - -JOURNALLING LAYER FOR BLOCK DEVICES (JBD2) -M: "Theodore Ts'o" -L: linux-ext4@vger.kernel.org -S: Maintained -F: fs/jbd2/ -F: include/linux/jbd2.h - -JSM Neo PCI based serial card -M: Lucas Tavares -L: linux-serial@vger.kernel.org -S: Maintained -F: drivers/tty/serial/jsm/ - -K10TEMP HARDWARE MONITORING DRIVER -M: Clemens Ladisch -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/k10temp -F: drivers/hwmon/k10temp.c - -K8TEMP HARDWARE MONITORING DRIVER -M: Rudolf Marek -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/k8temp -F: drivers/hwmon/k8temp.c - -KCONFIG -M: Michal Marek -L: linux-kbuild@vger.kernel.org -S: Odd Fixes -F: Documentation/kbuild/kconfig-language.txt -F: scripts/kconfig/ - -KDUMP -M: Vivek Goyal -M: Haren Myneni -L: kexec@lists.infradead.org -W: http://lse.sourceforge.net/kdump/ -S: Maintained -F: Documentation/kdump/ - -KEENE FM RADIO TRANSMITTER DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/radio/radio-keene* - -KERNEL AUTOMOUNTER v4 (AUTOFS4) -M: Ian Kent -L: autofs@vger.kernel.org -S: Maintained -F: fs/autofs4/ - -KERNEL BUILD + files below scripts/ (unless maintained elsewhere) -M: Michal Marek -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git rc-fixes -L: linux-kbuild@vger.kernel.org -S: Maintained -F: Documentation/kbuild/ -F: Makefile -F: scripts/Makefile.* -F: scripts/basic/ -F: scripts/mk* -F: scripts/package/ - -KERNEL JANITORS -L: kernel-janitors@vger.kernel.org -W: http://kernelnewbies.org/KernelJanitors -S: Odd Fixes - -KERNEL NFSD, SUNRPC, AND LOCKD SERVERS -M: "J. Bruce Fields" -L: linux-nfs@vger.kernel.org -W: http://nfs.sourceforge.net/ -S: Supported -F: fs/nfsd/ -F: include/linux/nfsd/ -F: include/uapi/linux/nfsd/ -F: fs/lockd/ -F: fs/nfs_common/ -F: net/sunrpc/ -F: include/linux/lockd/ -F: include/linux/sunrpc/ -F: include/uapi/linux/sunrpc/ - -KERNEL VIRTUAL MACHINE (KVM) -M: Marcelo Tosatti -M: Gleb Natapov -L: kvm@vger.kernel.org -W: http://kvm.qumranet.com -S: Supported -F: Documentation/*/kvm.txt -F: arch/*/kvm/ -F: arch/*/include/asm/kvm* -F: include/linux/kvm* -F: include/uapi/linux/kvm* -F: virt/kvm/ - -KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V -M: Joerg Roedel -L: kvm@vger.kernel.org -W: http://kvm.qumranet.com -S: Maintained -F: arch/x86/include/asm/svm.h -F: arch/x86/kvm/svm.c - -KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC -M: Alexander Graf -L: kvm-ppc@vger.kernel.org -W: http://kvm.qumranet.com -T: git git://github.com/agraf/linux-2.6.git -S: Supported -F: arch/powerpc/include/asm/kvm* -F: arch/powerpc/kvm/ - -KERNEL VIRTUAL MACHINE For Itanium (KVM/IA64) -M: Xiantao Zhang -L: kvm-ia64@vger.kernel.org -W: http://kvm.qumranet.com -S: Supported -F: Documentation/ia64/kvm.txt -F: arch/ia64/include/asm/kvm* -F: arch/ia64/kvm/ - -KERNEL VIRTUAL MACHINE for s390 (KVM/s390) -M: Christian Borntraeger -M: Cornelia Huck -M: linux390@de.ibm.com -L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ -S: Supported -F: Documentation/s390/kvm.txt -F: arch/s390/include/asm/kvm* -F: arch/s390/kvm/ -F: drivers/s390/kvm/ - -KERNEL VIRTUAL MACHINE (KVM) FOR ARM -M: Christoffer Dall -L: kvmarm@lists.cs.columbia.edu -W: http://systems.cs.columbia.edu/projects/kvm-arm -S: Maintained -F: arch/arm/include/uapi/asm/kvm* -F: arch/arm/include/asm/kvm* -F: arch/arm/kvm/ - -KEXEC -M: Eric Biederman -W: http://kernel.org/pub/linux/utils/kernel/kexec/ -L: kexec@lists.infradead.org -S: Maintained -F: include/linux/kexec.h -F: include/uapi/linux/kexec.h -F: kernel/kexec.c - -KEYS/KEYRINGS: -M: David Howells -L: keyrings@linux-nfs.org -S: Maintained -F: Documentation/security/keys.txt -F: include/linux/key.h -F: include/linux/key-type.h -F: include/keys/ -F: security/keys/ - -KEYS-TRUSTED -M: David Safford -M: Mimi Zohar -L: linux-security-module@vger.kernel.org -L: keyrings@linux-nfs.org -S: Supported -F: Documentation/security/keys-trusted-encrypted.txt -F: include/keys/trusted-type.h -F: security/keys/trusted.c -F: security/keys/trusted.h - -KEYS-ENCRYPTED -M: Mimi Zohar -M: David Safford -L: linux-security-module@vger.kernel.org -L: keyrings@linux-nfs.org -S: Supported -F: Documentation/security/keys-trusted-encrypted.txt -F: include/keys/encrypted-type.h -F: security/keys/encrypted-keys/ - -KGDB / KDB /debug_core -M: Jason Wessel -W: http://kgdb.wiki.kernel.org/ -L: kgdb-bugreport@lists.sourceforge.net -S: Maintained -F: Documentation/DocBook/kgdb.tmpl -F: drivers/misc/kgdbts.c -F: drivers/tty/serial/kgdboc.c -F: include/linux/kdb.h -F: include/linux/kgdb.h -F: kernel/debug/ - -KMEMCHECK -M: Vegard Nossum -M: Pekka Enberg -S: Maintained -F: Documentation/kmemcheck.txt -F: arch/x86/include/asm/kmemcheck.h -F: arch/x86/mm/kmemcheck/ -F: include/linux/kmemcheck.h -F: mm/kmemcheck.c - -KMEMLEAK -M: Catalin Marinas -S: Maintained -F: Documentation/kmemleak.txt -F: include/linux/kmemleak.h -F: mm/kmemleak.c -F: mm/kmemleak-test.c - -KPROBES -M: Ananth N Mavinakayanahalli -M: Anil S Keshavamurthy -M: "David S. Miller" -M: Masami Hiramatsu -S: Maintained -F: Documentation/kprobes.txt -F: include/linux/kprobes.h -F: kernel/kprobes.c - -KS0108 LCD CONTROLLER DRIVER -M: Miguel Ojeda Sandonis -W: http://miguelojeda.es/auxdisplay.htm -W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm -S: Maintained -F: Documentation/auxdisplay/ks0108 -F: drivers/auxdisplay/ks0108.c -F: include/linux/ks0108.h - -LAPB module -L: linux-x25@vger.kernel.org -S: Orphan -F: Documentation/networking/lapb-module.txt -F: include/*/lapb.h -F: net/lapb/ - -LASI 53c700 driver for PARISC -M: "James E.J. Bottomley" -L: linux-scsi@vger.kernel.org -S: Maintained -F: Documentation/scsi/53c700.txt -F: drivers/scsi/53c700* - -LED SUBSYSTEM -M: Bryan Wu -M: Richard Purdie -L: linux-leds@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds.git -S: Maintained -F: drivers/leds/ -F: include/linux/leds.h - -LEGACY EEPROM DRIVER -M: Jean Delvare -S: Maintained -F: Documentation/misc-devices/eeprom -F: drivers/misc/eeprom/eeprom.c - -LEGO USB Tower driver -M: Juergen Stuber -L: legousb-devel@lists.sourceforge.net -W: http://legousb.sourceforge.net/ -S: Maintained -F: drivers/usb/misc/legousbtower.c - -LG2160 MEDIA DRIVER -M: Michael Krufky -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://github.com/mkrufky -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/mkrufky/tuners.git -S: Maintained -F: drivers/media/dvb-frontends/lg2160.* - -LGDT3305 MEDIA DRIVER -M: Michael Krufky -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://github.com/mkrufky -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/mkrufky/tuners.git -S: Maintained -F: drivers/media/dvb-frontends/lgdt3305.* - -LGUEST -M: Rusty Russell -L: lguest@lists.ozlabs.org -W: http://lguest.ozlabs.org/ -S: Odd Fixes -F: arch/x86/include/asm/lguest*.h -F: arch/x86/lguest/ -F: drivers/lguest/ -F: include/linux/lguest*.h -F: tools/lguest/ - -LINUX FOR IBM pSERIES (RS/6000) -M: Paul Mackerras -W: http://www.ibm.com/linux/ltc/projects/ppc -S: Supported -F: arch/powerpc/boot/rs6000.h - -LINUX FOR POWERPC (32-BIT AND 64-BIT) -M: Benjamin Herrenschmidt -M: Paul Mackerras -W: http://www.penguinppc.org/ -L: linuxppc-dev@lists.ozlabs.org -Q: http://patchwork.ozlabs.org/project/linuxppc-dev/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git -S: Supported -F: Documentation/powerpc/ -F: arch/powerpc/ - -LINUX FOR POWER MACINTOSH -M: Benjamin Herrenschmidt -W: http://www.penguinppc.org/ -L: linuxppc-dev@lists.ozlabs.org -S: Maintained -F: arch/powerpc/platforms/powermac/ -F: drivers/macintosh/ - -LINUX FOR POWERPC EMBEDDED MPC5XXX -M: Anatolij Gustschin -L: linuxppc-dev@lists.ozlabs.org -T: git git://git.denx.de/linux-2.6-agust.git -S: Maintained -F: arch/powerpc/platforms/512x/ -F: arch/powerpc/platforms/52xx/ - -LINUX FOR POWERPC EMBEDDED PPC4XX -M: Josh Boyer -M: Matt Porter -W: http://www.penguinppc.org/ -L: linuxppc-dev@lists.ozlabs.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx.git -S: Maintained -F: arch/powerpc/platforms/40x/ -F: arch/powerpc/platforms/44x/ - -LINUX FOR POWERPC EMBEDDED XILINX VIRTEX -M: Grant Likely -W: http://wiki.secretlab.ca/index.php/Linux_on_Xilinx_Virtex -L: linuxppc-dev@lists.ozlabs.org -T: git git://git.secretlab.ca/git/linux-2.6.git -S: Maintained -F: arch/powerpc/*/*virtex* -F: arch/powerpc/*/*/*virtex* - -LINUX FOR POWERPC EMBEDDED PPC8XX -M: Vitaly Bordug -M: Marcelo Tosatti -W: http://www.penguinppc.org/ -L: linuxppc-dev@lists.ozlabs.org -S: Maintained -F: arch/powerpc/platforms/8xx/ - -LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX -M: Kumar Gala -W: http://www.penguinppc.org/ -L: linuxppc-dev@lists.ozlabs.org -S: Maintained -F: arch/powerpc/platforms/83xx/ -F: arch/powerpc/platforms/85xx/ - -LINUX FOR POWERPC PA SEMI PWRFICIENT -M: Olof Johansson -L: linuxppc-dev@lists.ozlabs.org -S: Maintained -F: arch/powerpc/platforms/pasemi/ -F: drivers/*/*pasemi* -F: drivers/*/*/*pasemi* - -LINUX SECURITY MODULE (LSM) FRAMEWORK -M: Chris Wright -L: linux-security-module@vger.kernel.org -S: Supported - -LIS3LV02D ACCELEROMETER DRIVER -M: Eric Piel -S: Maintained -F: Documentation/misc-devices/lis3lv02d -F: drivers/misc/lis3lv02d/ -F: drivers/platform/x86/hp_accel.c - -LLC (802.2) -M: Arnaldo Carvalho de Melo -S: Maintained -F: include/linux/llc.h -F: include/uapi/linux/llc.h -F: include/net/llc* -F: net/llc/ - -LM73 HARDWARE MONITOR DRIVER -M: Guillaume Ligneul -L: lm-sensors@lm-sensors.org -S: Maintained -F: drivers/hwmon/lm73.c - -LM78 HARDWARE MONITOR DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/lm78 -F: drivers/hwmon/lm78.c - -LM83 HARDWARE MONITOR DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/lm83 -F: drivers/hwmon/lm83.c - -LM90 HARDWARE MONITOR DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/lm90 -F: drivers/hwmon/lm90.c - -LME2510 MEDIA DRIVER -M: Malcolm Priestley -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -S: Maintained -F: drivers/media/usb/dvb-usb-v2/lmedm04* - -LOCKDEP AND LOCKSTAT -M: Peter Zijlstra -M: Ingo Molnar -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/locking -S: Maintained -F: Documentation/lockdep*.txt -F: Documentation/lockstat.txt -F: include/linux/lockdep.h -F: kernel/lockdep* - -LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP/Vista Dynamic Disks) -M: "Richard Russon (FlatCap)" -L: linux-ntfs-dev@lists.sourceforge.net -W: http://www.linux-ntfs.org/content/view/19/37/ -S: Maintained -F: Documentation/ldm.txt -F: block/partitions/ldm.* - -LogFS -M: Joern Engel -M: Prasad Joshi -L: logfs@logfs.org -W: logfs.org -S: Maintained -F: fs/logfs/ - -LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI) -M: Nagalakshmi Nandigama -M: Sreekanth Reddy -M: support@lsi.com -L: DL-MPTFusionLinux@lsi.com -L: linux-scsi@vger.kernel.org -W: http://www.lsilogic.com/support -S: Supported -F: drivers/message/fusion/ -F: drivers/scsi/mpt2sas/ -F: drivers/scsi/mpt3sas/ - -LSILOGIC/SYMBIOS/NCR 53C8XX and 53C1010 PCI-SCSI drivers -M: Matthew Wilcox -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/sym53c8xx_2/ - -LTC4261 HARDWARE MONITOR DRIVER -M: Guenter Roeck -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/ltc4261 -F: drivers/hwmon/ltc4261.c - -LTP (Linux Test Project) -M: Shubham Goyal -M: Mike Frysinger -M: Cyril Hrubis -M: Caspar Zhang -M: Wanlong Gao -L: ltp-list@lists.sourceforge.net (subscribers-only) -W: http://ltp.sourceforge.net/ -T: git git://github.com/linux-test-project/ltp.git -T: git git://ltp.git.sourceforge.net/gitroot/ltp/ltp-dev -S: Maintained - -M32R ARCHITECTURE -M: Hirokazu Takata -L: linux-m32r@ml.linux-m32r.org (moderated for non-subscribers) -L: linux-m32r-ja@ml.linux-m32r.org (in Japanese) -W: http://www.linux-m32r.org/ -S: Maintained -F: arch/m32r/ - -M68K ARCHITECTURE -M: Geert Uytterhoeven -L: linux-m68k@lists.linux-m68k.org -W: http://www.linux-m68k.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git -S: Maintained -F: arch/m68k/ -F: drivers/zorro/ - -M68K ON APPLE MACINTOSH -M: Joshua Thompson -W: http://www.mac.linux-m68k.org/ -L: linux-m68k@lists.linux-m68k.org -S: Maintained -F: arch/m68k/mac/ - -M68K ON HP9000/300 -M: Philip Blundell -W: http://www.tazenda.demon.co.uk/phil/linux-hp -S: Maintained -F: arch/m68k/hp300/ - -M88RS2000 MEDIA DRIVER -M: Malcolm Priestley -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -S: Maintained -F: drivers/media/dvb-frontends/m88rs2000* - -MA901 MASTERKIT USB FM RADIO DRIVER -M: Alexey Klimov -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/radio/radio-ma901.c - -MAC80211 -M: Johannes Berg -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git -S: Maintained -F: Documentation/networking/mac80211-injection.txt -F: include/net/mac80211.h -F: net/mac80211/ - -MAC80211 PID RATE CONTROL -M: Stefano Brivio -M: Mattias Nissler -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/developers/Documentation/mac80211/RateControl/PID -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git -S: Maintained -F: net/mac80211/rc80211_pid* - -MACVLAN DRIVER -M: Patrick McHardy -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/macvlan.c -F: include/linux/if_macvlan.h - -MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7 -M: Michael Kerrisk -W: http://www.kernel.org/doc/man-pages -L: linux-man@vger.kernel.org -S: Maintained - -MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2) -M: Mirko Lindner -M: Stephen Hemminger -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/marvell/sk* - -MARVELL LIBERTAS WIRELESS DRIVER -M: Dan Williams -L: libertas-dev@lists.infradead.org -S: Maintained -F: drivers/net/wireless/libertas/ - -MARVELL MV643XX ETHERNET DRIVER -M: Lennert Buytenhek -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/marvell/mv643xx_eth.* -F: include/linux/mv643xx.h - -MARVELL MVNETA ETHERNET DRIVER -M: Thomas Petazzoni -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/marvell/mvneta.* - -MARVELL MWIFIEX WIRELESS DRIVER -M: Bing Zhao -L: linux-wireless@vger.kernel.org -S: Maintained -F: drivers/net/wireless/mwifiex/ - -MARVELL MWL8K WIRELESS DRIVER -M: Lennert Buytenhek -L: linux-wireless@vger.kernel.org -S: Odd Fixes -F: drivers/net/wireless/mwl8k.c - -MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER -M: Nicolas Pitre -S: Odd Fixes -F: drivers/mmc/host/mvsdio.* - -MATROX FRAMEBUFFER DRIVER -L: linux-fbdev@vger.kernel.org -S: Orphan -F: drivers/video/matrox/matroxfb_* -F: include/uapi/linux/matroxfb.h - -MAX16065 HARDWARE MONITOR DRIVER -M: Guenter Roeck -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/max16065 -F: drivers/hwmon/max16065.c - -MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER -M: "Hans J. Koch" -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/max6650 -F: drivers/hwmon/max6650.c - -MAX6697 HARDWARE MONITOR DRIVER -M: Guenter Roeck -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/max6697 -F: Documentation/devicetree/bindings/i2c/max6697.txt -F: drivers/hwmon/max6697.c -F: include/linux/platform_data/max6697.h - -MAXIRADIO FM RADIO RECEIVER DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/radio/radio-maxiradio* - -MEDIA INPUT INFRASTRUCTURE (V4L/DVB) -M: Mauro Carvalho Chehab -P: LinuxTV.org Project -L: linux-media@vger.kernel.org -W: http://linuxtv.org -Q: http://patchwork.kernel.org/project/linux-media/list/ -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: Documentation/dvb/ -F: Documentation/video4linux/ -F: Documentation/DocBook/media/ -F: drivers/media/ -F: drivers/staging/media/ -F: include/media/ -F: include/uapi/linux/dvb/ -F: include/uapi/linux/videodev2.h -F: include/uapi/linux/media.h -F: include/uapi/linux/v4l2-* -F: include/uapi/linux/meye.h -F: include/uapi/linux/ivtv* -F: include/uapi/linux/uvcvideo.h - -MEDIAVISION PRO MOVIE STUDIO DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Odd Fixes -F: drivers/media/parport/pms* - -MEGARAID SCSI DRIVERS -M: Neela Syam Kolli -L: linux-scsi@vger.kernel.org -W: http://megaraid.lsilogic.com -S: Maintained -F: Documentation/scsi/megaraid.txt -F: drivers/scsi/megaraid.* -F: drivers/scsi/megaraid/ - -MELLANOX ETHERNET DRIVER (mlx4_en) -M: Amir Vadai -L: netdev@vger.kernel.org -S: Supported -W: http://www.mellanox.com -Q: http://patchwork.ozlabs.org/project/netdev/list/ -F: drivers/net/ethernet/mellanox/mlx4/en_* - -MEMORY MANAGEMENT -L: linux-mm@kvack.org -W: http://www.linux-mm.org -S: Maintained -F: include/linux/mm.h -F: include/linux/gfp.h -F: include/linux/mmzone.h -F: include/linux/memory_hotplug.h -F: include/linux/vmalloc.h -F: mm/ - -MEMORY RESOURCE CONTROLLER -M: Johannes Weiner -M: Michal Hocko -M: Balbir Singh -M: KAMEZAWA Hiroyuki -L: cgroups@vger.kernel.org -L: linux-mm@kvack.org -S: Maintained -F: mm/memcontrol.c -F: mm/page_cgroup.c - -MEMORY TECHNOLOGY DEVICES (MTD) -M: David Woodhouse -L: linux-mtd@lists.infradead.org -W: http://www.linux-mtd.infradead.org/ -Q: http://patchwork.ozlabs.org/project/linux-mtd/list/ -T: git git://git.infradead.org/mtd-2.6.git -S: Maintained -F: drivers/mtd/ -F: include/linux/mtd/ -F: include/uapi/mtd/ - -METAG ARCHITECTURE -M: James Hogan -S: Supported -F: arch/metag/ -F: Documentation/metag/ -F: Documentation/devicetree/bindings/metag/ -F: drivers/clocksource/metag_generic.c -F: drivers/irqchip/irq-metag.c -F: drivers/irqchip/irq-metag-ext.c -F: drivers/tty/metag_da.c -F: fs/imgdafs/ - -MICROBLAZE ARCHITECTURE -M: Michal Simek -L: microblaze-uclinux@itee.uq.edu.au (moderated for non-subscribers) -W: http://www.monstr.eu/fdt/ -T: git git://git.monstr.eu/linux-2.6-microblaze.git -S: Supported -F: arch/microblaze/ - -MICROTEK X6 SCANNER -M: Oliver Neukum -S: Maintained -F: drivers/usb/image/microtek.* - -MIPS -M: Ralf Baechle -L: linux-mips@linux-mips.org -W: http://www.linux-mips.org/ -T: git git://git.linux-mips.org/pub/scm/ralf/linux.git -Q: http://patchwork.linux-mips.org/project/linux-mips/list/ -S: Supported -F: Documentation/mips/ -F: arch/mips/ - -MIROSOUND PCM20 FM RADIO RECEIVER DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Odd Fixes -F: drivers/media/radio/radio-miropcm20* - -MODULE SUPPORT -M: Rusty Russell -S: Maintained -F: include/linux/module.h -F: kernel/module.c - -MOTION EYE VAIO PICTUREBOOK CAMERA DRIVER -W: http://popies.net/meye/ -S: Orphan -F: Documentation/video4linux/meye.txt -F: drivers/media/pci/meye/ -F: include/uapi/linux/meye.h - -MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD -M: Jiri Slaby -S: Maintained -F: Documentation/serial/moxa-smartio -F: drivers/tty/mxser.* - -MR800 AVERMEDIA USB FM RADIO DRIVER -M: Alexey Klimov -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/radio/radio-mr800.c - -MSI LAPTOP SUPPORT -M: "Lee, Chun-Yi" -L: platform-driver-x86@vger.kernel.org -S: Maintained -F: drivers/platform/x86/msi-laptop.c - -MSI WMI SUPPORT -M: Anisse Astier -L: platform-driver-x86@vger.kernel.org -S: Supported -F: drivers/platform/x86/msi-wmi.c - -MT9M032 SENSOR DRIVER -M: Laurent Pinchart -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/i2c/mt9m032.c -F: include/media/mt9m032.h - -MT9P031 SENSOR DRIVER -M: Laurent Pinchart -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/i2c/mt9p031.c -F: include/media/mt9p031.h - -MT9T001 SENSOR DRIVER -M: Laurent Pinchart -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/i2c/mt9t001.c -F: include/media/mt9t001.h - -MT9V032 SENSOR DRIVER -M: Laurent Pinchart -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/i2c/mt9v032.c -F: include/media/mt9v032.h - -MULTIFUNCTION DEVICES (MFD) -M: Samuel Ortiz -T: git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6.git -S: Supported -F: drivers/mfd/ - -MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM -M: Chris Ball -L: linux-mmc@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git -S: Maintained -F: drivers/mmc/ -F: include/linux/mmc/ -F: include/uapi/linux/mmc/ - -MULTIMEDIA CARD (MMC) ETC. OVER SPI -S: Orphan -F: drivers/mmc/host/mmc_spi.c -F: include/linux/spi/mmc_spi.h - -MULTISOUND SOUND DRIVER -M: Andrew Veliath -S: Maintained -F: Documentation/sound/oss/MultiSound -F: sound/oss/msnd* - -MULTITECH MULTIPORT CARD (ISICOM) -S: Orphan -F: drivers/tty/isicom.c -F: include/linux/isicom.h - -MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER -M: Felipe Balbi -L: linux-usb@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git -S: Maintained -F: drivers/usb/musb/ - -MXL5007T MEDIA DRIVER -M: Michael Krufky -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://github.com/mkrufky -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/mkrufky/tuners.git -S: Maintained -F: drivers/media/tuners/mxl5007t.* - -MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE) -M: Andrew Gallatin -L: netdev@vger.kernel.org -W: http://www.myri.com/scs/download-Myri10GE.html -S: Supported -F: drivers/net/ethernet/myricom/myri10ge/ - -NATSEMI ETHERNET DRIVER (DP8381x) -S: Orphan -F: drivers/net/ethernet/natsemi/natsemi.c - -NATIVE INSTRUMENTS USB SOUND INTERFACE DRIVER -M: Daniel Mack -S: Maintained -L: alsa-devel@alsa-project.org -W: http://www.native-instruments.com -F: sound/usb/caiaq/ - -NCP FILESYSTEM -M: Petr Vandrovec -S: Odd Fixes -F: fs/ncpfs/ - -NCR DUAL 700 SCSI DRIVER (MICROCHANNEL) -M: "James E.J. Bottomley" -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/NCR_D700.* - -NETEFFECT IWARP RNIC DRIVER (IW_NES) -M: Faisal Latif -L: linux-rdma@vger.kernel.org -W: http://www.intel.com/Products/Server/Adapters/Server-Cluster/Server-Cluster-overview.htm -S: Supported -F: drivers/infiniband/hw/nes/ - -NETEM NETWORK EMULATOR -M: Stephen Hemminger -L: netem@lists.linux-foundation.org -S: Maintained -F: net/sched/sch_netem.c - -NETERION 10GbE DRIVERS (s2io/vxge) -M: Jon Mason -L: netdev@vger.kernel.org -S: Supported -F: Documentation/networking/s2io.txt -F: Documentation/networking/vxge.txt -F: drivers/net/ethernet/neterion/ - -NETFILTER/IPTABLES/IPCHAINS -P: Harald Welte -P: Jozsef Kadlecsik -M: Pablo Neira Ayuso -M: Patrick McHardy -L: netfilter-devel@vger.kernel.org -L: netfilter@vger.kernel.org -L: coreteam@netfilter.org -W: http://www.netfilter.org/ -W: http://www.iptables.org/ -T: git git://1984.lsi.us.es/nf -T: git git://1984.lsi.us.es/nf-next -S: Supported -F: include/linux/netfilter* -F: include/linux/netfilter/ -F: include/net/netfilter/ -F: include/uapi/linux/netfilter* -F: include/uapi/linux/netfilter/ -F: net/*/netfilter.c -F: net/*/netfilter/ -F: net/netfilter/ - -NETLABEL -M: Paul Moore -W: http://netlabel.sf.net -L: netdev@vger.kernel.org -S: Maintained -F: Documentation/netlabel/ -F: include/net/netlabel.h -F: net/netlabel/ - -NETROM NETWORK LAYER -M: Ralf Baechle -L: linux-hams@vger.kernel.org -W: http://www.linux-ax25.org/ -S: Maintained -F: include/net/netrom.h -F: include/uapi/linux/netrom.h -F: net/netrom/ - -NETWORK BLOCK DEVICE (NBD) -M: Paul Clements -S: Maintained -L: nbd-general@lists.sourceforge.net -F: Documentation/blockdev/nbd.txt -F: drivers/block/nbd.c -F: include/linux/nbd.h -F: include/uapi/linux/nbd.h - -NETWORK DROP MONITOR -M: Neil Horman -L: netdev@vger.kernel.org -S: Maintained -W: https://fedorahosted.org/dropwatch/ -F: net/core/drop_monitor.c - -NETWORKING [GENERAL] -M: "David S. Miller" -L: netdev@vger.kernel.org -W: http://www.linuxfoundation.org/en/Net -Q: http://patchwork.ozlabs.org/project/netdev/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git -S: Maintained -F: net/ -F: include/net/ -F: include/linux/in.h -F: include/linux/net.h -F: include/linux/netdevice.h -F: include/uapi/linux/in.h -F: include/uapi/linux/net.h -F: include/uapi/linux/netdevice.h - -NETWORKING [IPv4/IPv6] -M: "David S. Miller" -M: Alexey Kuznetsov -M: James Morris -M: Hideaki YOSHIFUJI -M: Patrick McHardy -L: netdev@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git -S: Maintained -F: net/ipv4/ -F: net/ipv6/ -F: include/net/ip* -F: arch/x86/net/* - -NETWORKING [IPSEC] -M: Steffen Klassert -M: Herbert Xu -M: "David S. Miller" -L: netdev@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git -S: Maintained -F: net/xfrm/ -F: net/key/ -F: net/ipv4/xfrm* -F: net/ipv6/xfrm* -F: include/uapi/linux/xfrm.h -F: include/net/xfrm.h - -NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK) -M: Paul Moore -L: netdev@vger.kernel.org -S: Maintained - -NETWORKING [WIRELESS] -M: "John W. Linville" -L: linux-wireless@vger.kernel.org -Q: http://patchwork.kernel.org/project/linux-wireless/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git -S: Maintained -F: net/mac80211/ -F: net/rfkill/ -F: net/wireless/ -F: include/net/ieee80211* -F: include/linux/wireless.h -F: include/uapi/linux/wireless.h -F: include/net/iw_handler.h -F: drivers/net/wireless/ - -NETWORKING DRIVERS -L: netdev@vger.kernel.org -W: http://www.linuxfoundation.org/en/Net -Q: http://patchwork.ozlabs.org/project/netdev/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git -S: Odd Fixes -F: drivers/net/ -F: include/linux/if_* -F: include/linux/netdevice.h -F: include/linux/arcdevice.h -F: include/linux/etherdevice.h -F: include/linux/fcdevice.h -F: include/linux/fddidevice.h -F: include/linux/hippidevice.h -F: include/linux/inetdevice.h -F: include/uapi/linux/if_* -F: include/uapi/linux/netdevice.h - -NETXEN (1/10) GbE SUPPORT -M: Sony Chacko -M: Rajesh Borundia -L: netdev@vger.kernel.org -W: http://www.qlogic.com -S: Supported -F: drivers/net/ethernet/qlogic/netxen/ - -NFC SUBSYSTEM -M: Lauro Ramos Venancio -M: Aloisio Almeida Jr -M: Samuel Ortiz -L: linux-wireless@vger.kernel.org -L: linux-nfc@lists.01.org (moderated for non-subscribers) -S: Maintained -F: net/nfc/ -F: include/net/nfc/ -F: include/uapi/linux/nfc.h -F: drivers/nfc/ -F: include/linux/platform_data/pn544.h - -NFS, SUNRPC, AND LOCKD CLIENTS -M: Trond Myklebust -L: linux-nfs@vger.kernel.org -W: http://client.linux-nfs.org -T: git git://git.linux-nfs.org/pub/linux/nfs-2.6.git -S: Maintained -F: fs/lockd/ -F: fs/nfs/ -F: fs/nfs_common/ -F: net/sunrpc/ -F: include/linux/lockd/ -F: include/linux/nfs* -F: include/linux/sunrpc/ -F: include/uapi/linux/nfs* -F: include/uapi/linux/sunrpc/ - -NILFS2 FILESYSTEM -M: KONISHI Ryusuke -L: linux-nilfs@vger.kernel.org -W: http://www.nilfs.org/en/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2.git -S: Supported -F: Documentation/filesystems/nilfs2.txt -F: fs/nilfs2/ -F: include/linux/nilfs2_fs.h - -NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER -M: YOKOTA Hiroshi -W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/ -S: Maintained -F: Documentation/scsi/NinjaSCSI.txt -F: drivers/scsi/pcmcia/nsp_* - -NINJA SCSI-32Bi/UDE PCI/CARDBUS SCSI HOST ADAPTER DRIVER -M: GOTO Masanori -M: YOKOTA Hiroshi -W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/ -S: Maintained -F: Documentation/scsi/NinjaSCSI.txt -F: drivers/scsi/nsp32* - -NTB DRIVER -M: Jon Mason -S: Supported -F: drivers/ntb/ -F: drivers/net/ntb_netdev.c -F: include/linux/ntb.h - -NTFS FILESYSTEM -M: Anton Altaparmakov -L: linux-ntfs-dev@lists.sourceforge.net -W: http://www.tuxera.com/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/aia21/ntfs.git -S: Supported -F: Documentation/filesystems/ntfs.txt -F: fs/ntfs/ - -NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER -M: Antonino Daplas -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/riva/ -F: drivers/video/nvidia/ - -NVM EXPRESS DRIVER -M: Matthew Wilcox -L: linux-nvme@lists.infradead.org -T: git git://git.infradead.org/users/willy/linux-nvme.git -S: Supported -F: drivers/block/nvme.c -F: include/linux/nvme.h - -OMAP SUPPORT -M: Tony Lindgren -L: linux-omap@vger.kernel.org -W: http://www.muru.com/linux/omap/ -W: http://linux.omap.com/ -Q: http://patchwork.kernel.org/project/linux-omap/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git -S: Maintained -F: arch/arm/*omap*/ -F: drivers/i2c/busses/i2c-omap.c -F: include/linux/i2c-omap.h - -OMAP DEVICE TREE SUPPORT -M: Benoît Cousson -M: Tony Lindgren -L: linux-omap@vger.kernel.org -L: devicetree-discuss@lists.ozlabs.org (moderated for non-subscribers) -S: Maintained -F: arch/arm/boot/dts/*omap* -F: arch/arm/boot/dts/*am3* - -OMAP CLOCK FRAMEWORK SUPPORT -M: Paul Walmsley -L: linux-omap@vger.kernel.org -S: Maintained -F: arch/arm/*omap*/*clock* - -OMAP POWER MANAGEMENT SUPPORT -M: Kevin Hilman -L: linux-omap@vger.kernel.org -S: Maintained -F: arch/arm/*omap*/*pm* -F: drivers/cpufreq/omap-cpufreq.c - -OMAP POWERDOMAIN/CLOCKDOMAIN SOC ADAPTATION LAYER SUPPORT -M: Rajendra Nayak -M: Paul Walmsley -L: linux-omap@vger.kernel.org -S: Maintained -F: arch/arm/mach-omap2/powerdomain2xxx_3xxx.c -F: arch/arm/mach-omap2/powerdomain44xx.c -F: arch/arm/mach-omap2/clockdomain2xxx_3xxx.c -F: arch/arm/mach-omap2/clockdomain44xx.c - -OMAP AUDIO SUPPORT -M: Peter Ujfalusi -M: Jarkko Nikula -L: alsa-devel@alsa-project.org (subscribers-only) -L: linux-omap@vger.kernel.org -S: Maintained -F: sound/soc/omap/ - -OMAP FRAMEBUFFER SUPPORT -M: Tomi Valkeinen -L: linux-fbdev@vger.kernel.org -L: linux-omap@vger.kernel.org -S: Maintained -F: drivers/video/omap/ - -OMAP DISPLAY SUBSYSTEM and FRAMEBUFFER SUPPORT (DSS2) -M: Tomi Valkeinen -L: linux-omap@vger.kernel.org -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/omap2/ -F: Documentation/arm/OMAP/DSS - -OMAP HARDWARE SPINLOCK SUPPORT -M: Ohad Ben-Cohen -L: linux-omap@vger.kernel.org -S: Maintained -F: drivers/hwspinlock/omap_hwspinlock.c -F: arch/arm/mach-omap2/hwspinlock.c - -OMAP MMC SUPPORT -M: Jarkko Lavinen -L: linux-omap@vger.kernel.org -S: Maintained -F: drivers/mmc/host/omap.c - -OMAP HS MMC SUPPORT -M: Balaji T K -L: linux-mmc@vger.kernel.org -L: linux-omap@vger.kernel.org -S: Maintained -F: drivers/mmc/host/omap_hsmmc.c - -OMAP RANDOM NUMBER GENERATOR SUPPORT -M: Deepak Saxena -S: Maintained -F: drivers/char/hw_random/omap-rng.c - -OMAP HWMOD SUPPORT -M: Benoît Cousson -M: Paul Walmsley -L: linux-omap@vger.kernel.org -S: Maintained -F: arch/arm/mach-omap2/omap_hwmod.* - -OMAP HWMOD DATA FOR OMAP4-BASED DEVICES -M: Benoît Cousson -L: linux-omap@vger.kernel.org -S: Maintained -F: arch/arm/mach-omap2/omap_hwmod_44xx_data.c - -OMAP IMAGE SIGNAL PROCESSOR (ISP) -M: Laurent Pinchart -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/platform/omap3isp/ - -OMAP USB SUPPORT -M: Felipe Balbi -L: linux-usb@vger.kernel.org -L: linux-omap@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git -S: Maintained -F: drivers/usb/*/*omap* -F: arch/arm/*omap*/usb* - -OMAP GPIO DRIVER -M: Santosh Shilimkar -M: Kevin Hilman -L: linux-omap@vger.kernel.org -S: Maintained -F: drivers/gpio/gpio-omap.c - -OMFS FILESYSTEM -M: Bob Copeland -L: linux-karma-devel@lists.sourceforge.net -S: Maintained -F: Documentation/filesystems/omfs.txt -F: fs/omfs/ - -OMNIKEY CARDMAN 4000 DRIVER -M: Harald Welte -S: Maintained -F: drivers/char/pcmcia/cm4000_cs.c -F: include/linux/cm4000_cs.h -F: include/uapi/linux/cm4000_cs.h - -OMNIKEY CARDMAN 4040 DRIVER -M: Harald Welte -S: Maintained -F: drivers/char/pcmcia/cm4040_cs.* - -OMNIVISION OV7670 SENSOR DRIVER -M: Jonathan Corbet -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/i2c/ov7670.c - -ONENAND FLASH DRIVER -M: Kyungmin Park -L: linux-mtd@lists.infradead.org -S: Maintained -F: drivers/mtd/onenand/ -F: include/linux/mtd/onenand*.h - -ONSTREAM SCSI TAPE DRIVER -M: Willem Riede -L: osst-users@lists.sourceforge.net -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/osst* -F: drivers/scsi/st* - -OPENCORES I2C BUS DRIVER -M: Peter Korsgaard -L: linux-i2c@vger.kernel.org -S: Maintained -F: Documentation/i2c/busses/i2c-ocores -F: drivers/i2c/busses/i2c-ocores.c - -OPEN FIRMWARE AND FLATTENED DEVICE TREE -M: Grant Likely -M: Rob Herring -L: devicetree-discuss@lists.ozlabs.org (moderated for non-subscribers) -W: http://fdt.secretlab.ca -T: git git://git.secretlab.ca/git/linux-2.6.git -S: Maintained -F: Documentation/devicetree -F: drivers/of -F: include/linux/of*.h -F: scripts/dtc -K: of_get_property -K: of_match_table - -OPENRISC ARCHITECTURE -M: Jonas Bonn -W: http://openrisc.net -L: linux@lists.openrisc.net (moderated for non-subscribers) -S: Maintained -T: git git://openrisc.net/~jonas/linux -F: arch/openrisc - -OPENVSWITCH -M: Jesse Gross -L: dev@openvswitch.org -W: http://openvswitch.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jesse/openvswitch.git -S: Maintained -F: net/openvswitch/ - -OPL4 DRIVER -M: Clemens Ladisch -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.alsa-project.org/alsa-kernel.git -S: Maintained -F: sound/drivers/opl4/ - -OPROFILE -M: Robert Richter -L: oprofile-list@lists.sf.net -S: Maintained -F: arch/*/include/asm/oprofile*.h -F: arch/*/oprofile/ -F: drivers/oprofile/ -F: include/linux/oprofile.h - -ORACLE CLUSTER FILESYSTEM 2 (OCFS2) -M: Mark Fasheh -M: Joel Becker -L: ocfs2-devel@oss.oracle.com (moderated for non-subscribers) -W: http://oss.oracle.com/projects/ocfs2/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2.git -S: Supported -F: Documentation/filesystems/ocfs2.txt -F: Documentation/filesystems/dlmfs.txt -F: fs/ocfs2/ - -ORINOCO DRIVER -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/users/Drivers/orinoco -W: http://www.nongnu.org/orinoco/ -S: Orphan -F: drivers/net/wireless/orinoco/ - -OSD LIBRARY and FILESYSTEM -M: Boaz Harrosh -M: Benny Halevy -L: osd-dev@open-osd.org -W: http://open-osd.org -T: git git://git.open-osd.org/open-osd.git -S: Maintained -F: drivers/scsi/osd/ -F: include/scsi/osd_* -F: fs/exofs/ - -P54 WIRELESS DRIVER -M: Christian Lamparter -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/users/Drivers/p54 -S: Maintained -F: drivers/net/wireless/p54/ - -PA SEMI ETHERNET DRIVER -M: Olof Johansson -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/pasemi/* - -PA SEMI SMBUS DRIVER -M: Olof Johansson -L: linux-i2c@vger.kernel.org -S: Maintained -F: drivers/i2c/busses/i2c-pasemi.c - -PADATA PARALLEL EXECUTION MECHANISM -M: Steffen Klassert -L: linux-crypto@vger.kernel.org -S: Maintained -F: kernel/padata.c -F: include/linux/padata.h -F: Documentation/padata.txt - -PANASONIC LAPTOP ACPI EXTRAS DRIVER -M: Harald Welte -L: platform-driver-x86@vger.kernel.org -S: Maintained -F: drivers/platform/x86/panasonic-laptop.c - -PANASONIC MN10300/AM33/AM34 PORT -M: David Howells -M: Koichi Yasutake -L: linux-am33-list@redhat.com (moderated for non-subscribers) -W: ftp://ftp.redhat.com/pub/redhat/gnupro/AM33/ -S: Maintained -F: Documentation/mn10300/ -F: arch/mn10300/ - -PARALLEL PORT SUPPORT -L: linux-parport@lists.infradead.org (subscribers-only) -S: Orphan -F: drivers/parport/ -F: include/linux/parport*.h -F: drivers/char/ppdev.c -F: include/uapi/linux/ppdev.h - -PARAVIRT_OPS INTERFACE -M: Jeremy Fitzhardinge -M: Chris Wright -M: Alok Kataria -M: Rusty Russell -L: virtualization@lists.linux-foundation.org -S: Supported -F: Documentation/ia64/paravirt_ops.txt -F: arch/*/kernel/paravirt* -F: arch/*/include/asm/paravirt.h - -PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES -M: Tim Waugh -L: linux-parport@lists.infradead.org (subscribers-only) -W: http://www.torque.net/linux-pp.html -S: Maintained -F: Documentation/blockdev/paride.txt -F: drivers/block/paride/ - -PARISC ARCHITECTURE -M: "James E.J. Bottomley" -M: Helge Deller -L: linux-parisc@vger.kernel.org -W: http://www.parisc-linux.org/ -Q: http://patchwork.kernel.org/project/linux-parisc/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6.git -S: Maintained -F: arch/parisc/ -F: drivers/parisc/ - -PC87360 HARDWARE MONITORING DRIVER -M: Jim Cromie -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/pc87360 -F: drivers/hwmon/pc87360.c - -PC8736x GPIO DRIVER -M: Jim Cromie -S: Maintained -F: drivers/char/pc8736x_gpio.c - -PC87427 HARDWARE MONITORING DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/pc87427 -F: drivers/hwmon/pc87427.c - -PCA9532 LED DRIVER -M: Riku Voipio -S: Maintained -F: drivers/leds/leds-pca9532.c -F: include/linux/leds-pca9532.h - -PCA9541 I2C BUS MASTER SELECTOR DRIVER -M: Guenter Roeck -L: linux-i2c@vger.kernel.org -S: Maintained -F: drivers/i2c/muxes/i2c-mux-pca9541.c - -PCDP - PRIMARY CONSOLE AND DEBUG PORT -M: Khalid Aziz -S: Maintained -F: drivers/firmware/pcdp.* - -PCI ERROR RECOVERY -M: Linas Vepstas -L: linux-pci@vger.kernel.org -S: Supported -F: Documentation/PCI/pci-error-recovery.txt -F: Documentation/powerpc/eeh-pci-error-recovery.txt - -PCI SUBSYSTEM -M: Bjorn Helgaas -L: linux-pci@vger.kernel.org -Q: http://patchwork.ozlabs.org/project/linux-pci/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git -S: Supported -F: Documentation/PCI/ -F: drivers/pci/ -F: include/linux/pci* - -PCMCIA SUBSYSTEM -P: Linux PCMCIA Team -L: linux-pcmcia@lists.infradead.org -W: http://lists.infradead.org/mailman/listinfo/linux-pcmcia -T: git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git -S: Maintained -F: Documentation/pcmcia/ -F: drivers/pcmcia/ -F: include/pcmcia/ - -PCNET32 NETWORK DRIVER -M: Don Fry -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/amd/pcnet32.c - -PCRYPT PARALLEL CRYPTO ENGINE -M: Steffen Klassert -L: linux-crypto@vger.kernel.org -S: Maintained -F: crypto/pcrypt.c -F: include/crypto/pcrypt.h - -PER-CPU MEMORY ALLOCATOR -M: Tejun Heo -M: Christoph Lameter -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git -S: Maintained -F: include/linux/percpu*.h -F: mm/percpu*.c -F: arch/*/include/asm/percpu.h - -PER-TASK DELAY ACCOUNTING -M: Balbir Singh -S: Maintained -F: include/linux/delayacct.h -F: kernel/delayacct.c - -PERFORMANCE EVENTS SUBSYSTEM -M: Peter Zijlstra -M: Paul Mackerras -M: Ingo Molnar -M: Arnaldo Carvalho de Melo -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core -S: Supported -F: kernel/events/* -F: include/linux/perf_event.h -F: include/uapi/linux/perf_event.h -F: arch/*/kernel/perf_event*.c -F: arch/*/kernel/*/perf_event*.c -F: arch/*/kernel/*/*/perf_event*.c -F: arch/*/include/asm/perf_event.h -F: arch/*/kernel/perf_callchain.c -F: tools/perf/ - -PERSONALITY HANDLING -M: Christoph Hellwig -L: linux-abi-devel@lists.sourceforge.net -S: Maintained -F: include/linux/personality.h -F: include/uapi/linux/personality.h - -PHONET PROTOCOL -M: Remi Denis-Courmont -S: Supported -F: Documentation/networking/phonet.txt -F: include/linux/phonet.h -F: include/net/phonet/ -F: include/uapi/linux/phonet.h -F: net/phonet/ - -PHRAM MTD DRIVER -M: Joern Engel -L: linux-mtd@lists.infradead.org -S: Maintained -F: drivers/mtd/devices/phram.c - -PICOLCD HID DRIVER -M: Bruno Prémont -L: linux-input@vger.kernel.org -S: Maintained -F: drivers/hid/hid-picolcd* - -PICOXCELL SUPPORT -M: Jamie Iles -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://github.com/jamieiles/linux-2.6-ji.git -S: Supported -F: arch/arm/mach-picoxcell -F: drivers/*/picoxcell* -F: drivers/*/*/picoxcell* - -PIN CONTROL SUBSYSTEM -M: Linus Walleij -S: Maintained -F: drivers/pinctrl/ -F: include/linux/pinctrl/ - -PIN CONTROLLER - ATMEL AT91 -M: Jean-Christophe Plagniol-Villard -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained -F: drivers/pinctrl/pinctrl-at91.c - -PIN CONTROLLER - ST SPEAR -M: Viresh Kumar -L: spear-devel@list.st.com -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.st.com/spear -S: Maintained -F: drivers/pinctrl/spear/ - -PKTCDVD DRIVER -M: Jiri Kosina -S: Maintained -F: drivers/block/pktcdvd.c -F: include/linux/pktcdvd.h -F: include/uapi/linux/pktcdvd.h - -PKUNITY SOC DRIVERS -M: Guan Xuetao -W: http://mprc.pku.edu.cn/~guanxuetao/linux -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/epip/linux-2.6-unicore32.git -F: drivers/input/serio/i8042-unicore32io.h -F: drivers/i2c/busses/i2c-puv3.c -F: drivers/video/fb-puv3.c -F: drivers/rtc/rtc-puv3.c - -PMBUS HARDWARE MONITORING DRIVERS -M: Guenter Roeck -L: lm-sensors@lm-sensors.org -W: http://www.lm-sensors.org/ -W: http://www.roeck-us.net/linux/drivers/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git -S: Maintained -F: Documentation/hwmon/pmbus -F: drivers/hwmon/pmbus/ -F: include/linux/i2c/pmbus.h - -PMC SIERRA MaxRAID DRIVER -M: Anil Ravindranath -L: linux-scsi@vger.kernel.org -W: http://www.pmc-sierra.com/ -S: Supported -F: drivers/scsi/pmcraid.* - -PMC SIERRA PM8001 DRIVER -M: jack_wang@usish.com -M: lindar_liu@usish.com -L: linux-scsi@vger.kernel.org -S: Supported -F: drivers/scsi/pm8001/ - -POSIX CLOCKS and TIMERS -M: Thomas Gleixner -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core -S: Supported -F: fs/timerfd.c -F: include/linux/timer* -F: kernel/*timer* - -POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS -M: Anton Vorontsov -M: David Woodhouse -T: git git://git.infradead.org/battery-2.6.git -S: Maintained -F: include/linux/power_supply.h -F: drivers/power/ - -PNP SUPPORT -M: Adam Belay -M: Bjorn Helgaas -S: Maintained -F: drivers/pnp/ - -PNXxxxx I2C DRIVER -M: Vitaly Wool -L: linux-i2c@vger.kernel.org -S: Maintained -F: drivers/i2c/busses/i2c-pnx.c - -PPP PROTOCOL DRIVERS AND COMPRESSORS -M: Paul Mackerras -L: linux-ppp@vger.kernel.org -S: Maintained -F: drivers/net/ppp/ppp_* - -PPP OVER ATM (RFC 2364) -M: Mitchell Blank Jr -S: Maintained -F: net/atm/pppoatm.c -F: include/uapi/linux/atmppp.h - -PPP OVER ETHERNET -M: Michal Ostrowski -S: Maintained -F: drivers/net/ppp/pppoe.c -F: drivers/net/ppp/pppox.c - -PPP OVER L2TP -M: James Chapman -S: Maintained -F: net/l2tp/l2tp_ppp.c -F: include/linux/if_pppol2tp.h -F: include/uapi/linux/if_pppol2tp.h - -PPS SUPPORT -M: Rodolfo Giometti -W: http://wiki.enneenne.com/index.php/LinuxPPS_support -L: linuxpps@ml.enneenne.com (subscribers-only) -S: Maintained -F: Documentation/pps/ -F: drivers/pps/ -F: include/linux/pps*.h - -PPTP DRIVER -M: Dmitry Kozlov -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ppp/pptp.c -W: http://sourceforge.net/projects/accel-pptp - -PREEMPTIBLE KERNEL -M: Robert Love -L: kpreempt-tech@lists.sourceforge.net -W: ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel -S: Supported -F: Documentation/preempt-locking.txt -F: include/linux/preempt.h - -PRISM54 WIRELESS DRIVER -M: "Luis R. Rodriguez" -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/users/Drivers/p54 -S: Obsolete -F: drivers/net/wireless/prism54/ - -PROMISE SATA TX2/TX4 CONTROLLER LIBATA DRIVER -M: Mikael Pettersson -L: linux-ide@vger.kernel.org -S: Maintained -F: drivers/ata/sata_promise.* - -PS3 NETWORK SUPPORT -M: Geoff Levand -L: netdev@vger.kernel.org -L: cbe-oss-dev@lists.ozlabs.org -S: Maintained -F: drivers/net/ethernet/toshiba/ps3_gelic_net.* - -PS3 PLATFORM SUPPORT -M: Geoff Levand -L: linuxppc-dev@lists.ozlabs.org -L: cbe-oss-dev@lists.ozlabs.org -S: Maintained -F: arch/powerpc/boot/ps3* -F: arch/powerpc/include/asm/lv1call.h -F: arch/powerpc/include/asm/ps3*.h -F: arch/powerpc/platforms/ps3/ -F: drivers/*/ps3* -F: drivers/ps3/ -F: drivers/rtc/rtc-ps3.c -F: drivers/usb/host/*ps3.c -F: sound/ppc/snd_ps3* - -PS3VRAM DRIVER -M: Jim Paris -L: cbe-oss-dev@lists.ozlabs.org -S: Maintained -F: drivers/block/ps3vram.c - -PSTORE FILESYSTEM -M: Anton Vorontsov -M: Colin Cross -M: Kees Cook -M: Tony Luck -S: Maintained -T: git git://git.infradead.org/users/cbou/linux-pstore.git -F: fs/pstore/ -F: include/linux/pstore* -F: drivers/firmware/efivars.c -F: drivers/acpi/apei/erst.c - -PTP HARDWARE CLOCK SUPPORT -M: Richard Cochran -S: Maintained -W: http://linuxptp.sourceforge.net/ -F: Documentation/ABI/testing/sysfs-ptp -F: Documentation/ptp/* -F: drivers/net/ethernet/freescale/gianfar_ptp.c -F: drivers/net/phy/dp83640* -F: drivers/ptp/* -F: include/linux/ptp_cl* - -PTRACE SUPPORT -M: Roland McGrath -M: Oleg Nesterov -S: Maintained -F: include/asm-generic/syscall.h -F: include/linux/ptrace.h -F: include/linux/regset.h -F: include/linux/tracehook.h -F: include/uapi/linux/ptrace.h -F: kernel/ptrace.c - -PVRUSB2 VIDEO4LINUX DRIVER -M: Mike Isely -L: pvrusb2@isely.net (subscribers-only) -L: linux-media@vger.kernel.org -W: http://www.isely.net/pvrusb2/ -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: Documentation/video4linux/README.pvrusb2 -F: drivers/media/usb/pvrusb2/ - -PWC WEBCAM DRIVER -M: Hans de Goede -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/usb/pwc/* - -PWM SUBSYSTEM -M: Thierry Reding -L: linux-kernel@vger.kernel.org -S: Maintained -W: http://gitorious.org/linux-pwm -T: git git://gitorious.org/linux-pwm/linux-pwm.git -F: Documentation/pwm.txt -F: Documentation/devicetree/bindings/pwm/ -F: include/linux/pwm.h -F: drivers/pwm/ -F: drivers/video/backlight/pwm_bl.c -F: include/linux/pwm_backlight.h - -PXA2xx/PXA3xx SUPPORT -M: Eric Miao -M: Russell King -M: Haojian Zhuang -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://github.com/hzhuang1/linux.git -T: git git://git.linaro.org/people/ycmiao/pxa-linux.git -S: Maintained -F: arch/arm/mach-pxa/ -F: drivers/pcmcia/pxa2xx* -F: drivers/spi/spi-pxa2xx* -F: drivers/usb/gadget/pxa2* -F: include/sound/pxa2xx-lib.h -F: sound/arm/pxa* -F: sound/soc/pxa - -MMP SUPPORT -M: Eric Miao -M: Haojian Zhuang -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://github.com/hzhuang1/linux.git -T: git git://git.linaro.org/people/ycmiao/pxa-linux.git -S: Maintained -F: arch/arm/mach-mmp/ - -PXA MMCI DRIVER -S: Orphan - -PXA RTC DRIVER -M: Robert Jarzmik -L: rtc-linux@googlegroups.com -S: Maintained - -QIB DRIVER -M: Mike Marciniszyn -L: linux-rdma@vger.kernel.org -S: Supported -F: drivers/infiniband/hw/qib/ - -QLOGIC QLA1280 SCSI DRIVER -M: Michael Reed -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/qla1280.[ch] - -QLOGIC QLA2XXX FC-SCSI DRIVER -M: Andrew Vasquez -M: linux-driver@qlogic.com -L: linux-scsi@vger.kernel.org -S: Supported -F: Documentation/scsi/LICENSE.qla2xxx -F: drivers/scsi/qla2xxx/ - -QLOGIC QLA4XXX iSCSI DRIVER -M: Ravi Anand -M: Vikas Chaudhary -M: iscsi-driver@qlogic.com -L: linux-scsi@vger.kernel.org -S: Supported -F: drivers/scsi/qla4xxx/ - -QLOGIC QLA3XXX NETWORK DRIVER -M: Jitendra Kalsaria -M: Ron Mercer -M: linux-driver@qlogic.com -L: netdev@vger.kernel.org -S: Supported -F: Documentation/networking/LICENSE.qla3xxx -F: drivers/net/ethernet/qlogic/qla3xxx.* - -QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER -M: Rajesh Borundia -M: Shahed Shaikh -M: Jitendra Kalsaria -M: Sony Chacko -M: linux-driver@qlogic.com -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/qlogic/qlcnic/ - -QLOGIC QLGE 10Gb ETHERNET DRIVER -M: Jitendra Kalsaria -M: Ron Mercer -M: linux-driver@qlogic.com -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/qlogic/qlge/ - -QNX4 FILESYSTEM -M: Anders Larsen -W: http://www.alarsen.net/linux/qnx4fs/ -S: Maintained -F: fs/qnx4/ -F: include/uapi/linux/qnx4_fs.h -F: include/uapi/linux/qnxtypes.h - -QT1010 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/tuners/qt1010* - -QUALCOMM HEXAGON ARCHITECTURE -M: Richard Kuo -L: linux-hexagon@vger.kernel.org -S: Supported -F: arch/hexagon/ - -QUICKCAM PARALLEL PORT WEBCAMS -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Odd Fixes -F: drivers/media/parport/*-qcam* - -RADOS BLOCK DEVICE (RBD) -M: Yehuda Sadeh -M: Sage Weil -M: Alex Elder -M: ceph-devel@vger.kernel.org -W: http://ceph.com/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git -S: Supported -F: drivers/block/rbd.c -F: drivers/block/rbd_types.h - -RADEON FRAMEBUFFER DISPLAY DRIVER -M: Benjamin Herrenschmidt -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/aty/radeon* -F: include/uapi/linux/radeonfb.h - -RADIOSHARK RADIO DRIVER -M: Hans de Goede -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/radio/radio-shark.c - -RADIOSHARK2 RADIO DRIVER -M: Hans de Goede -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/radio/radio-shark2.c -F: drivers/media/radio/radio-tea5777.c - -RAGE128 FRAMEBUFFER DISPLAY DRIVER -M: Paul Mackerras -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/aty/aty128fb.c - -RALINK RT2X00 WIRELESS LAN DRIVER -P: rt2x00 project -M: Ivo van Doorn -M: Gertjan van Wingerde -M: Helmut Schaa -L: linux-wireless@vger.kernel.org -L: users@rt2x00.serialmonkey.com (moderated for non-subscribers) -W: http://rt2x00.serialmonkey.com/ -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ivd/rt2x00.git -F: drivers/net/wireless/rt2x00/ - -RAMDISK RAM BLOCK DEVICE DRIVER -M: Nick Piggin -S: Maintained -F: Documentation/blockdev/ramdisk.txt -F: drivers/block/brd.c - -RAMSAM DRIVER (IBM RamSan 70/80 PCI SSD Flash Card) -M: Joshua Morris -M: Philip Kelleher -S: Maintained -F: drivers/block/rsxx/ - -RANDOM NUMBER DRIVER -M: Theodore Ts'o" -S: Maintained -F: drivers/char/random.c - -RAPIDIO SUBSYSTEM -M: Matt Porter -M: Alexandre Bounine -S: Maintained -F: drivers/rapidio/ - -RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER -L: linux-wireless@vger.kernel.org -S: Orphan -F: drivers/net/wireless/ray* - -RCUTORTURE MODULE -M: Josh Triplett -M: "Paul E. McKenney" -S: Supported -T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git -F: Documentation/RCU/torture.txt -F: kernel/rcutorture.c - -RDC R-321X SoC -M: Florian Fainelli -S: Maintained - -RDC R6040 FAST ETHERNET DRIVER -M: Florian Fainelli -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/rdc/r6040.c - -RDS - RELIABLE DATAGRAM SOCKETS -M: Venkat Venkatsubra -L: rds-devel@oss.oracle.com (moderated for non-subscribers) -S: Supported -F: net/rds/ - -READ-COPY UPDATE (RCU) -M: Dipankar Sarma -M: "Paul E. McKenney" -W: http://www.rdrop.com/users/paulmck/RCU/ -S: Supported -T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git -F: Documentation/RCU/ -X: Documentation/RCU/torture.txt -F: include/linux/rcu* -F: kernel/rcu* -X: kernel/rcutorture.c - -REAL TIME CLOCK (RTC) SUBSYSTEM -M: Alessandro Zummo -L: rtc-linux@googlegroups.com -Q: http://patchwork.ozlabs.org/project/rtc-linux/list/ -S: Maintained -F: Documentation/rtc.txt -F: drivers/rtc/ -F: include/linux/rtc.h -F: include/uapi/linux/rtc.h - -REISERFS FILE SYSTEM -L: reiserfs-devel@vger.kernel.org -S: Supported -F: fs/reiserfs/ - -REGISTER MAP ABSTRACTION -M: Mark Brown -T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git -S: Supported -F: drivers/base/regmap/ -F: include/linux/regmap.h - -REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM -M: Ohad Ben-Cohen -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc.git -S: Maintained -F: drivers/remoteproc/ -F: Documentation/remoteproc.txt -F: include/linux/remoteproc.h - -RFKILL -M: Johannes Berg -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git -S: Maintained -F: Documentation/rfkill.txt -F: net/rfkill/ - -RICOH SMARTMEDIA/XD DRIVER -M: Maxim Levitsky -S: Maintained -F: drivers/mtd/nand/r852.c -F: drivers/mtd/nand/r852.h - -RICOH R5C592 MEMORYSTICK DRIVER -M: Maxim Levitsky -S: Maintained -F: drivers/memstick/host/r592.* - -ROCKETPORT DRIVER -P: Comtrol Corp. -W: http://www.comtrol.com -S: Maintained -F: Documentation/serial/rocket.txt -F: drivers/tty/rocket* - -ROSE NETWORK LAYER -M: Ralf Baechle -L: linux-hams@vger.kernel.org -W: http://www.linux-ax25.org/ -S: Maintained -F: include/net/rose.h -F: include/uapi/linux/rose.h -F: net/rose/ - -RTL2830 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/dvb-frontends/rtl2830* - -RTL8180 WIRELESS DRIVER -M: "John W. Linville" -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git -S: Maintained -F: drivers/net/wireless/rtl818x/rtl8180/ - -RTL8187 WIRELESS DRIVER -M: Herton Ronaldo Krzesinski -M: Hin-Tak Leung -M: Larry Finger -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git -S: Maintained -F: drivers/net/wireless/rtl818x/rtl8187/ - -RTL8192CE WIRELESS DRIVER -M: Larry Finger -M: Chaoming Li -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git -S: Maintained -F: drivers/net/wireless/rtlwifi/ -F: drivers/net/wireless/rtlwifi/rtl8192ce/ - -S3 SAVAGE FRAMEBUFFER DRIVER -M: Antonino Daplas -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/savage/ - -S390 -M: Martin Schwidefsky -M: Heiko Carstens -M: linux390@de.ibm.com -L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ -S: Supported -F: arch/s390/ -F: drivers/s390/ -F: block/partitions/ibm.c -F: Documentation/s390/ -F: Documentation/DocBook/s390* - -S390 NETWORK DRIVERS -M: Ursula Braun -M: Frank Blaschka -M: linux390@de.ibm.com -L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ -S: Supported -F: drivers/s390/net/ - -S390 ZCRYPT DRIVER -M: Ingo Tuchscherer -M: linux390@de.ibm.com -L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ -S: Supported -F: drivers/s390/crypto/ - -S390 ZFCP DRIVER -M: Steffen Maier -M: linux390@de.ibm.com -L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ -S: Supported -F: drivers/s390/scsi/zfcp_* - -S390 IUCV NETWORK LAYER -M: Ursula Braun -M: linux390@de.ibm.com -L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ -S: Supported -F: drivers/s390/net/*iucv* -F: include/net/iucv/ -F: net/iucv/ - -S3C24XX SD/MMC Driver -M: Ben Dooks -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Supported -F: drivers/mmc/host/s3cmci.* - -SAA6588 RDS RECEIVER DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Odd Fixes -F: drivers/media/i2c/saa6588* - -SAA7134 VIDEO4LINUX DRIVER -M: Mauro Carvalho Chehab -L: linux-media@vger.kernel.org -W: http://linuxtv.org -T: git git://linuxtv.org/media_tree.git -S: Odd fixes -F: Documentation/video4linux/saa7134/ -F: drivers/media/pci/saa7134/ - -SAA7146 VIDEO4LINUX-2 DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/common/saa7146/ -F: drivers/media/pci/saa7146/ -F: include/media/saa7146* - -SAMSUNG LAPTOP DRIVER -M: Corentin Chary -L: platform-driver-x86@vger.kernel.org -S: Maintained -F: drivers/platform/x86/samsung-laptop.c - -SAMSUNG AUDIO (ASoC) DRIVERS -M: Sangbeom Kim -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -S: Supported -F: sound/soc/samsung - -SAMSUNG FRAMEBUFFER DRIVER -M: Jingoo Han -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/s3c-fb.c - -SAMSUNG MULTIFUNCTION DEVICE DRIVERS -M: Sangbeom Kim -L: linux-kernel@vger.kernel.org -S: Supported -F: drivers/mfd/sec*.c -F: drivers/regulator/s2m*.c -F: drivers/regulator/s5m*.c -F: drivers/rtc/rtc-sec.c -F: include/linux/mfd/samsung/ - -SAMSUNG S3C24XX/S3C64XX SOC SERIES CAMIF DRIVER -M: Sylwester Nawrocki -L: linux-media@vger.kernel.org -L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) -S: Maintained -F: drivers/media/platform/s3c-camif/ -F: include/media/s3c_camif.h - -SAMSUNG S5C73M3 CAMERA DRIVER -M: Kyungmin Park -M: Andrzej Hajda -L: linux-media@vger.kernel.org -S: Supported -F: drivers/media/i2c/s5c73m3/* - -SERIAL DRIVERS -M: Greg Kroah-Hartman -L: linux-serial@vger.kernel.org -S: Maintained -F: drivers/tty/serial - -SYNOPSYS DESIGNWARE DMAC DRIVER -M: Viresh Kumar -S: Maintained -F: include/linux/dw_dmac.h -F: drivers/dma/dw_dmac_regs.h -F: drivers/dma/dw_dmac.c - -SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER -M: Seungwon Jeon -M: Jaehoon Chung -L: linux-mmc@vger.kernel.org -S: Maintained -F: include/linux/mmc/dw_mmc.h -F: drivers/mmc/host/dw_mmc* - -TIMEKEEPING, NTP -M: John Stultz -M: Thomas Gleixner -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core -S: Supported -F: include/linux/clocksource.h -F: include/linux/time.h -F: include/linux/timex.h -F: include/uapi/linux/time.h -F: include/uapi/linux/timex.h -F: kernel/time/clocksource.c -F: kernel/time/time*.c -F: kernel/time/ntp.c -F: drivers/clocksource - -TLG2300 VIDEO4LINUX-2 DRIVER -M: Huang Shijie -M: Kang Yong -M: Zhang Xiaobing -S: Supported -F: drivers/media/usb/tlg2300 - -SC1200 WDT DRIVER -M: Zwane Mwaikambo -S: Maintained -F: drivers/watchdog/sc1200wdt.c - -SCHEDULER -M: Ingo Molnar -M: Peter Zijlstra -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core -S: Maintained -F: kernel/sched/ -F: include/linux/sched.h -F: include/uapi/linux/sched.h - -SCORE ARCHITECTURE -M: Chen Liqin -M: Lennox Wu -W: http://www.sunplusct.com -S: Supported -F: arch/score/ - -SCSI CDROM DRIVER -M: Jens Axboe -L: linux-scsi@vger.kernel.org -W: http://www.kernel.dk -S: Maintained -F: drivers/scsi/sr* - -SCSI RDMA PROTOCOL (SRP) INITIATOR -M: David Dillow -L: linux-rdma@vger.kernel.org -S: Supported -W: http://www.openfabrics.org -Q: http://patchwork.kernel.org/project/linux-rdma/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/dad/srp-initiator.git -F: drivers/infiniband/ulp/srp/ -F: include/scsi/srp.h - -SCSI SG DRIVER -M: Doug Gilbert -L: linux-scsi@vger.kernel.org -W: http://www.torque.net/sg -S: Maintained -F: drivers/scsi/sg.c -F: include/scsi/sg.h - -SCSI SUBSYSTEM -M: "James E.J. Bottomley" -L: linux-scsi@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git -S: Maintained -F: drivers/scsi/ -F: include/scsi/ - -SCSI TAPE DRIVER -M: Kai Mäkisara -L: linux-scsi@vger.kernel.org -S: Maintained -F: Documentation/scsi/st.txt -F: drivers/scsi/st* - -SCTP PROTOCOL -M: Vlad Yasevich -M: Sridhar Samudrala -M: Neil Horman -L: linux-sctp@vger.kernel.org -W: http://lksctp.sourceforge.net -S: Maintained -F: Documentation/networking/sctp.txt -F: include/linux/sctp.h -F: include/net/sctp/ -F: net/sctp/ - -SCx200 CPU SUPPORT -M: Jim Cromie -S: Odd Fixes -F: Documentation/i2c/busses/scx200_acb -F: arch/x86/platform/scx200/ -F: drivers/watchdog/scx200_wdt.c -F: drivers/i2c/busses/scx200* -F: drivers/mtd/maps/scx200_docflash.c -F: include/linux/scx200.h - -SCx200 GPIO DRIVER -M: Jim Cromie -S: Maintained -F: drivers/char/scx200_gpio.c -F: include/linux/scx200_gpio.h - -SCx200 HRT CLOCKSOURCE DRIVER -M: Jim Cromie -S: Maintained -F: drivers/clocksource/scx200_hrt.c - -SDRICOH_CS MMC/SD HOST CONTROLLER INTERFACE DRIVER -M: Sascha Sommer -L: sdricohcs-devel@lists.sourceforge.net (subscribers-only) -S: Maintained -F: drivers/mmc/host/sdricoh_cs.c - -SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER -M: Chris Ball -L: linux-mmc@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git -S: Maintained -F: drivers/mmc/host/sdhci.* -F: drivers/mmc/host/sdhci-pltfm.[ch] - -SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF) -M: Anton Vorontsov -L: linuxppc-dev@lists.ozlabs.org -L: linux-mmc@vger.kernel.org -S: Maintained -F: drivers/mmc/host/sdhci-pltfm.[ch] - -SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) SAMSUNG DRIVER -M: Ben Dooks -L: linux-mmc@vger.kernel.org -S: Maintained -F: drivers/mmc/host/sdhci-s3c.c - -SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER -M: Viresh Kumar -L: spear-devel@list.st.com -L: linux-mmc@vger.kernel.org -S: Maintained -F: drivers/mmc/host/sdhci-spear.c - -SECURITY SUBSYSTEM -M: James Morris -L: linux-security-module@vger.kernel.org (suggested Cc:) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git -W: http://kernsec.org/ -S: Supported -F: security/ - -SECURITY CONTACT -M: Security Officers -S: Supported - -SELINUX SECURITY MODULE -M: Stephen Smalley -M: James Morris -M: Eric Paris -L: selinux@tycho.nsa.gov (subscribers-only, general discussion) -W: http://selinuxproject.org -T: git git://git.infradead.org/users/eparis/selinux.git -S: Supported -F: include/linux/selinux* -F: security/selinux/ -F: scripts/selinux/ - -APPARMOR SECURITY MODULE -M: John Johansen -L: apparmor@lists.ubuntu.com (subscribers-only, general discussion) -W: apparmor.wiki.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev.git -S: Supported -F: security/apparmor/ - -SENSABLE PHANTOM -M: Jiri Slaby -S: Maintained -F: drivers/misc/phantom.c -F: include/uapi/linux/phantom.h - -SERIAL ATA (SATA) SUBSYSTEM -M: Jeff Garzik -L: linux-ide@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev.git -S: Supported -F: drivers/ata/ -F: include/linux/ata.h -F: include/linux/libata.h - -SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER -M: Jayamohan Kallickal -L: linux-scsi@vger.kernel.org -W: http://www.emulex.com -S: Supported -F: drivers/scsi/be2iscsi/ - -SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER -M: Sathya Perla -M: Subbu Seetharaman -M: Ajit Khaparde -L: netdev@vger.kernel.org -W: http://www.emulex.com -S: Supported -F: drivers/net/ethernet/emulex/benet/ - -SFC NETWORK DRIVER -M: Solarflare linux maintainers -M: Ben Hutchings -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/sfc/ - -SGI GRU DRIVER -M: Dimitri Sivanich -M: Robin Holt -S: Maintained -F: drivers/misc/sgi-gru/ - -SGI SN-IA64 (Altix) SERIAL CONSOLE DRIVER -M: Pat Gefre -L: linux-ia64@vger.kernel.org -S: Supported -F: Documentation/ia64/serial.txt -F: drivers/tty/serial/ioc?_serial.c -F: include/linux/ioc?.h - -SGI VISUAL WORKSTATION 320 AND 540 -M: Andrey Panin -L: linux-visws-devel@lists.sf.net -W: http://linux-visws.sf.net -S: Maintained for 2.6. -F: Documentation/sgi-visws.txt - -SGI XP/XPC/XPNET DRIVER -M: Robin Holt -S: Maintained -F: drivers/misc/sgi-xp/ - -SI470X FM RADIO RECEIVER I2C DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Odd Fixes -F: drivers/media/radio/si470x/radio-si470x-i2c.c - -SI470X FM RADIO RECEIVER USB DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/radio/si470x/radio-si470x-common.c -F: drivers/media/radio/si470x/radio-si470x.h -F: drivers/media/radio/si470x/radio-si470x-usb.c - -SH_VEU V4L2 MEM2MEM DRIVER -M: Guennadi Liakhovetski -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/platform/sh_veu.c -F: include/media/sh_veu.h - -SH_VOU V4L2 OUTPUT DRIVER -M: Guennadi Liakhovetski -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/platform/sh_vou.c -F: include/media/sh_vou.h - -SIMPLE FIRMWARE INTERFACE (SFI) -M: Len Brown -L: sfi-devel@simplefirmware.org -W: http://simplefirmware.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-sfi-2.6.git -S: Supported -F: arch/x86/platform/sfi/ -F: drivers/sfi/ -F: include/linux/sfi*.h - -SIMTEC EB110ATX (Chalice CATS) -P: Ben Dooks -P: Vincent Sanders -M: Simtec Linux Team -W: http://www.simtec.co.uk/products/EB110ATX/ -S: Supported - -SIMTEC EB2410ITX (BAST) -P: Ben Dooks -P: Vincent Sanders -M: Simtec Linux Team -W: http://www.simtec.co.uk/products/EB2410ITX/ -S: Supported -F: arch/arm/mach-s3c2410/mach-bast.c -F: arch/arm/mach-s3c2410/bast-ide.c -F: arch/arm/mach-s3c2410/bast-irq.c - -TI DAVINCI MACHINE SUPPORT -M: Sekhar Nori -M: Kevin Hilman -L: davinci-linux-open-source@linux.davincidsp.com (moderated for non-subscribers) -T: git git://gitorious.org/linux-davinci/linux-davinci.git -Q: http://patchwork.kernel.org/project/linux-davinci/list/ -S: Supported -F: arch/arm/mach-davinci -F: drivers/i2c/busses/i2c-davinci.c - -TI DAVINCI SERIES MEDIA DRIVER -M: Manjunath Hadli -M: Prabhakar Lad -L: linux-media@vger.kernel.org -L: davinci-linux-open-source@linux.davincidsp.com (moderated for non-subscribers) -W: http://linuxtv.org/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git -S: Supported -F: drivers/media/platform/davinci/ -F: include/media/davinci/ - -SIS 190 ETHERNET DRIVER -M: Francois Romieu -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/sis/sis190.c - -SIS 900/7016 FAST ETHERNET DRIVER -M: Daniele Venzano -W: http://www.brownhat.org/sis900.html -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/sis/sis900.* - -SIS FRAMEBUFFER DRIVER -M: Thomas Winischhofer -W: http://www.winischhofer.net/linuxsisvga.shtml -S: Maintained -F: Documentation/fb/sisfb.txt -F: drivers/video/sis/ -F: include/video/sisfb.h - -SIS USB2VGA DRIVER -M: Thomas Winischhofer -W: http://www.winischhofer.at/linuxsisusbvga.shtml -S: Maintained -F: drivers/usb/misc/sisusbvga/ - -SLAB ALLOCATOR -M: Christoph Lameter -M: Pekka Enberg -M: Matt Mackall -L: linux-mm@kvack.org -S: Maintained -F: include/linux/sl?b*.h -F: mm/sl?b.c - -SLEEPABLE READ-COPY UPDATE (SRCU) -M: Lai Jiangshan -M: "Paul E. McKenney" -W: http://www.rdrop.com/users/paulmck/RCU/ -S: Supported -T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git -F: include/linux/srcu* -F: kernel/srcu* - -SMACK SECURITY MODULE -M: Casey Schaufler -L: linux-security-module@vger.kernel.org -W: http://schaufler-ca.com -T: git git://git.gitorious.org/smack-next/kernel.git -S: Maintained -F: Documentation/security/Smack.txt -F: security/smack/ - -SMC91x ETHERNET DRIVER -M: Nicolas Pitre -S: Odd Fixes -F: drivers/net/ethernet/smsc/smc91x.* - -SMIA AND SMIA++ IMAGE SENSOR DRIVER -M: Sakari Ailus -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/i2c/smiapp -F: include/media/smiapp.h -F: drivers/media/i2c/smiapp-pll.c -F: drivers/media/i2c/smiapp-pll.h - -SMM665 HARDWARE MONITOR DRIVER -M: Guenter Roeck -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/smm665 -F: drivers/hwmon/smm665.c - -SMSC EMC2103 HARDWARE MONITOR DRIVER -M: Steve Glendinning -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/emc2103 -F: drivers/hwmon/emc2103.c - -SMSC SCH5627 HARDWARE MONITOR DRIVER -M: Hans de Goede -L: lm-sensors@lm-sensors.org -S: Supported -F: Documentation/hwmon/sch5627 -F: drivers/hwmon/sch5627.c - -SMSC47B397 HARDWARE MONITOR DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/smsc47b397 -F: drivers/hwmon/smsc47b397.c - -SMSC911x ETHERNET DRIVER -M: Steve Glendinning -L: netdev@vger.kernel.org -S: Maintained -F: include/linux/smsc911x.h -F: drivers/net/ethernet/smsc/smsc911x.* - -SMSC9420 PCI ETHERNET DRIVER -M: Steve Glendinning -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/smsc/smsc9420.* - -SMSC UFX6000 and UFX7000 USB to VGA DRIVER -M: Steve Glendinning -L: linux-fbdev@vger.kernel.org -S: Maintained -F: drivers/video/smscufx.c - -SOC-CAMERA V4L2 SUBSYSTEM -M: Guennadi Liakhovetski -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: include/media/soc* -F: drivers/media/i2c/soc_camera/ -F: drivers/media/platform/soc_camera/ - -SOEKRIS NET48XX LED SUPPORT -M: Chris Boot -S: Maintained -F: drivers/leds/leds-net48xx.c - -SOFTWARE RAID (Multiple Disks) SUPPORT -M: Neil Brown -L: linux-raid@vger.kernel.org -S: Supported -F: drivers/md/ -F: include/linux/raid/ -F: include/uapi/linux/raid/ - -SONIC NETWORK DRIVER -M: Thomas Bogendoerfer -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/natsemi/sonic.* - -SONICS SILICON BACKPLANE DRIVER (SSB) -M: Michael Buesch -L: netdev@vger.kernel.org -S: Maintained -F: drivers/ssb/ -F: include/linux/ssb/ - -SONY VAIO CONTROL DEVICE DRIVER -M: Mattia Dongili -L: platform-driver-x86@vger.kernel.org -W: http://www.linux.it/~malattia/wiki/index.php/Sony_drivers -S: Maintained -F: Documentation/laptops/sony-laptop.txt -F: drivers/char/sonypi.c -F: drivers/platform/x86/sony-laptop.c -F: include/linux/sony-laptop.h - -SONY MEMORYSTICK CARD SUPPORT -M: Alex Dubov -W: http://tifmxx.berlios.de/ -S: Maintained -F: drivers/memstick/host/tifm_ms.c - -SOUND -M: Jaroslav Kysela -M: Takashi Iwai -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -W: http://www.alsa-project.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -T: git git://git.alsa-project.org/alsa-kernel.git -S: Maintained -F: Documentation/sound/ -F: include/sound/ -F: include/uapi/sound/ -F: sound/ - -SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC) -M: Liam Girdwood -M: Mark Brown -T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -W: http://alsa-project.org/main/index.php/ASoC -S: Supported -F: sound/soc/ -F: include/sound/soc* - -SPARC + UltraSPARC (sparc/sparc64) -M: "David S. Miller" -L: sparclinux@vger.kernel.org -Q: http://patchwork.ozlabs.org/project/sparclinux/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next.git -S: Maintained -F: arch/sparc/ -F: drivers/sbus/ - -SPARC SERIAL DRIVERS -M: "David S. Miller" -L: sparclinux@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc.git -T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next.git -S: Maintained -F: include/linux/sunserialcore.h -F: drivers/tty/serial/suncore.c -F: drivers/tty/serial/sunhv.c -F: drivers/tty/serial/sunsab.c -F: drivers/tty/serial/sunsab.h -F: drivers/tty/serial/sunsu.c -F: drivers/tty/serial/sunzilog.c -F: drivers/tty/serial/sunzilog.h - -SPARSE CHECKER -M: "Christopher Li" -L: linux-sparse@vger.kernel.org -W: https://sparse.wiki.kernel.org/ -T: git git://git.kernel.org/pub/scm/devel/sparse/sparse.git -T: git git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git -S: Maintained -F: include/linux/compiler.h - -SPEAR PLATFORM SUPPORT -M: Viresh Kumar -M: Shiraz Hashim -L: spear-devel@list.st.com -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.st.com/spear -S: Maintained -F: arch/arm/plat-spear/ - -SPEAR13XX MACHINE SUPPORT -M: Viresh Kumar -M: Shiraz Hashim -L: spear-devel@list.st.com -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.st.com/spear -S: Maintained -F: arch/arm/mach-spear13xx/ - -SPEAR3XX MACHINE SUPPORT -M: Viresh Kumar -M: Shiraz Hashim -L: spear-devel@list.st.com -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.st.com/spear -S: Maintained -F: arch/arm/mach-spear3xx/ - -SPEAR6XX MACHINE SUPPORT -M: Rajeev Kumar -M: Shiraz Hashim -M: Viresh Kumar -L: spear-devel@list.st.com -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.st.com/spear -S: Maintained -F: arch/arm/mach-spear6xx/ - -SPEAR CLOCK FRAMEWORK SUPPORT -M: Viresh Kumar -L: spear-devel@list.st.com -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.st.com/spear -S: Maintained -F: drivers/clk/spear/ - -SPI SUBSYSTEM -M: Grant Likely -M: Mark Brown -L: spi-devel-general@lists.sourceforge.net -Q: http://patchwork.kernel.org/project/spi-devel-general/list/ -T: git git://git.secretlab.ca/git/linux-2.6.git -S: Maintained -F: Documentation/spi/ -F: drivers/spi/ -F: include/linux/spi/ -F: include/uapi/linux/spi/ - -SPIDERNET NETWORK DRIVER for CELL -M: Ishizaki Kou -M: Jens Osterkamp -L: netdev@vger.kernel.org -S: Supported -F: Documentation/networking/spider_net.txt -F: drivers/net/ethernet/toshiba/spider_net* - -SPU FILE SYSTEM -M: Jeremy Kerr -L: linuxppc-dev@lists.ozlabs.org -L: cbe-oss-dev@lists.ozlabs.org -W: http://www.ibm.com/developerworks/power/cell/ -S: Supported -F: Documentation/filesystems/spufs.txt -F: arch/powerpc/platforms/cell/spufs/ - -SQUASHFS FILE SYSTEM -M: Phillip Lougher -L: squashfs-devel@lists.sourceforge.net (subscribers-only) -W: http://squashfs.org.uk -S: Maintained -F: Documentation/filesystems/squashfs.txt -F: fs/squashfs/ - -SRM (Alpha) environment access -M: Jan-Benedict Glaw -S: Maintained -F: arch/alpha/kernel/srm_env.c - -STABLE BRANCH -M: Greg Kroah-Hartman -L: stable@vger.kernel.org -S: Supported - -STAGING SUBSYSTEM -M: Greg Kroah-Hartman -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git -L: devel@driverdev.osuosl.org -S: Supported -F: drivers/staging/ - -STAGING - AGERE HERMES II and II.5 WIRELESS DRIVERS -M: Henk de Groot -S: Odd Fixes -F: drivers/staging/wlags49_h2/ -F: drivers/staging/wlags49_h25/ - -STAGING - ASUS OLED -M: Jakub Schmidtke -S: Odd Fixes -F: drivers/staging/asus_oled/ - -STAGING - COMEDI -M: Ian Abbott -M: Mori Hess -S: Odd Fixes -F: drivers/staging/comedi/ - -STAGING - CRYSTAL HD VIDEO DECODER -M: Naren Sankar -M: Jarod Wilson -M: Scott Davilla -M: Manu Abraham -S: Odd Fixes -F: drivers/staging/crystalhd/ - -STAGING - ECHO CANCELLER -M: Steve Underwood -M: David Rowe -S: Odd Fixes -F: drivers/staging/echo/ - -STAGING - ET131X NETWORK DRIVER -M: Mark Einon -S: Odd Fixes -F: drivers/staging/et131x/ - -STAGING - FLARION FT1000 DRIVERS -M: Marek Belisko -S: Odd Fixes -F: drivers/staging/ft1000/ - -STAGING - FRONTIER TRANZPORT AND ALPHATRACK -M: David Täht -S: Odd Fixes -F: drivers/staging/frontier/ - -STAGING - INDUSTRIAL IO -M: Jonathan Cameron -L: linux-iio@vger.kernel.org -S: Odd Fixes -F: drivers/staging/iio/ - -STAGING - LIRC (LINUX INFRARED REMOTE CONTROL) DRIVERS -M: Jarod Wilson -W: http://www.lirc.org/ -S: Odd Fixes -F: drivers/staging/media/lirc/ - -STAGING - NVIDIA COMPLIANT EMBEDDED CONTROLLER INTERFACE (nvec) -M: Julian Andres Klode -M: Marc Dietrich -L: ac100@lists.launchpad.net (moderated for non-subscribers) -L: linux-tegra@vger.kernel.org -S: Maintained -F: drivers/staging/nvec/ - -STAGING - OLPC SECONDARY DISPLAY CONTROLLER (DCON) -M: Andres Salomon -M: Chris Ball -M: Jon Nettleton -W: http://wiki.laptop.org/go/DCON -S: Odd Fixes -F: drivers/staging/olpc_dcon/ - -STAGING - OZMO DEVICES USB OVER WIFI DRIVER -M: Rupesh Gujare -S: Maintained -F: drivers/staging/ozwpan/ - -STAGING - PARALLEL LCD/KEYPAD PANEL DRIVER -M: Willy Tarreau -S: Odd Fixes -F: drivers/staging/panel/ - -STAGING - REALTEK RTL8712U DRIVERS -M: Larry Finger -M: Florian Schilhabel . -S: Odd Fixes -F: drivers/staging/rtl8712/ - -STAGING - SILICON MOTION SM7XX FRAME BUFFER DRIVER -M: Teddy Wang -S: Odd Fixes -F: drivers/staging/sm7xxfb/ - -STAGING - SOFTLOGIC 6x10 MPEG CODEC -M: Ben Collins -S: Odd Fixes -F: drivers/staging/media/solo6x10/ - -STAGING - SPEAKUP CONSOLE SPEECH DRIVER -M: William Hubbs -M: Chris Brannon -M: Kirk Reiser -M: Samuel Thibault -L: speakup@braille.uwo.ca -W: http://www.linux-speakup.org/ -S: Odd Fixes -F: drivers/staging/speakup/ - -STAGING - TI DSP BRIDGE DRIVERS -M: Omar Ramirez Luna -S: Odd Fixes -F: drivers/staging/tidspbridge/ - -STAGING - USB ENE SM/MS CARD READER DRIVER -M: Al Cho -S: Odd Fixes -F: drivers/staging/keucr/ - -STAGING - VIA VT665X DRIVERS -M: Forest Bond -S: Odd Fixes -F: drivers/staging/vt665?/ - -STAGING - WINBOND IS89C35 WLAN USB DRIVER -M: Pavel Machek -S: Odd Fixes -F: drivers/staging/winbond/ - -STAGING - XGI Z7,Z9,Z11 PCI DISPLAY DRIVER -M: Arnaud Patard -S: Odd Fixes -F: drivers/staging/xgifb/ - -STARFIRE/DURALAN NETWORK DRIVER -M: Ion Badulescu -S: Odd Fixes -F: drivers/net/ethernet/adaptec/starfire* - -SUN3/3X -M: Sam Creasey -W: http://sammy.net/sun3/ -S: Maintained -F: arch/m68k/kernel/*sun3* -F: arch/m68k/sun3*/ -F: arch/m68k/include/asm/sun3* -F: drivers/net/ethernet/i825xx/sun3* - -SUPERH -M: Paul Mundt -L: linux-sh@vger.kernel.org -W: http://www.linux-sh.org -Q: http://patchwork.kernel.org/project/linux-sh/list/ -T: git git://github.com/pmundt/linux-sh.git sh-latest -S: Supported -F: Documentation/sh/ -F: arch/sh/ -F: drivers/sh/ - -SUSPEND TO RAM -M: Len Brown -M: Pavel Machek -M: "Rafael J. Wysocki" -L: linux-pm@vger.kernel.org -S: Supported -F: Documentation/power/ -F: arch/x86/kernel/acpi/ -F: drivers/base/power/ -F: kernel/power/ -F: include/linux/suspend.h -F: include/linux/freezer.h -F: include/linux/pm.h - -SVGA HANDLING -M: Martin Mares -L: linux-video@atrey.karlin.mff.cuni.cz -S: Maintained -F: Documentation/svga.txt -F: arch/x86/boot/video* - -SWIOTLB SUBSYSTEM -M: Konrad Rzeszutek Wilk -L: linux-kernel@vger.kernel.org -S: Supported -F: lib/swiotlb.c -F: arch/*/kernel/pci-swiotlb.c -F: include/linux/swiotlb.h - -SYNOPSYS ARC ARCHITECTURE -M: Vineet Gupta -L: linux-snps-arc@vger.kernel.org -S: Supported -F: arch/arc/ - -SYSV FILESYSTEM -M: Christoph Hellwig -S: Maintained -F: Documentation/filesystems/sysv-fs.txt -F: fs/sysv/ -F: include/linux/sysv_fs.h - -TARGET SUBSYSTEM -M: Nicholas A. Bellinger -L: linux-scsi@vger.kernel.org -L: target-devel@vger.kernel.org -L: http://groups.google.com/group/linux-iscsi-target-dev -W: http://www.linux-iscsi.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/nab/lio-core.git master -S: Supported -F: drivers/target/ -F: include/target/ -F: Documentation/target/ - -TASKSTATS STATISTICS INTERFACE -M: Balbir Singh -S: Maintained -F: Documentation/accounting/taskstats* -F: include/linux/taskstats* -F: kernel/taskstats.c - -TC CLASSIFIER -M: Jamal Hadi Salim -L: netdev@vger.kernel.org -S: Maintained -F: include/net/pkt_cls.h -F: include/uapi/linux/pkt_cls.h -F: net/sched/ - -TCP LOW PRIORITY MODULE -M: "Wong Hoi Sing, Edison" -M: "Hung Hing Lun, Mike" -W: http://tcp-lp-mod.sourceforge.net/ -S: Maintained -F: net/ipv4/tcp_lp.c - -TDA10071 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/dvb-frontends/tda10071* - -TDA18212 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/tuners/tda18212* - -TDA18218 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/tuners/tda18218* - -TDA18271 MEDIA DRIVER -M: Michael Krufky -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://github.com/mkrufky -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/mkrufky/tuners.git -S: Maintained -F: drivers/media/tuners/tda18271* - -TDA827x MEDIA DRIVER -M: Michael Krufky -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://github.com/mkrufky -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/mkrufky/tuners.git -S: Maintained -F: drivers/media/tuners/tda8290.* - -TDA8290 MEDIA DRIVER -M: Michael Krufky -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://github.com/mkrufky -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/mkrufky/tuners.git -S: Maintained -F: drivers/media/tuners/tda8290.* - -TDA9840 MEDIA DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/i2c/tda9840* - -TEA5761 TUNER DRIVER -M: Mauro Carvalho Chehab -L: linux-media@vger.kernel.org -W: http://linuxtv.org -T: git git://linuxtv.org/media_tree.git -S: Odd fixes -F: drivers/media/tuners/tea5761.* - -TEA5767 TUNER DRIVER -M: Mauro Carvalho Chehab -L: linux-media@vger.kernel.org -W: http://linuxtv.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/tuners/tea5767.* - -TEA6415C MEDIA DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/i2c/tea6415c* - -TEA6420 MEDIA DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/i2c/tea6420* - -TEAM DRIVER -M: Jiri Pirko -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/team/ -F: include/linux/if_team.h -F: include/uapi/linux/if_team.h - -TECHNOLOGIC SYSTEMS TS-5500 PLATFORM SUPPORT -M: Savoir-faire Linux Inc. -S: Maintained -F: arch/x86/platform/ts5500/ - -TECHNOTREND USB IR RECEIVER -M: Sean Young -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/rc/ttusbir.c - -TEGRA SUPPORT -M: Stephen Warren -L: linux-tegra@vger.kernel.org -Q: http://patchwork.ozlabs.org/project/linux-tegra/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra.git -S: Supported -K: (?i)[^a-z]tegra - -TEHUTI ETHERNET DRIVER -M: Andy Gospodarek -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/tehuti/* - -Telecom Clock Driver for MCPL0010 -M: Mark Gross -S: Supported -F: drivers/char/tlclk.c - -TENSILICA XTENSA PORT (xtensa) -M: Chris Zankel -M: Max Filippov -L: linux-xtensa@linux-xtensa.org -S: Maintained -F: arch/xtensa/ - -THERMAL -M: Zhang Rui -L: linux-pm@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux.git -S: Supported -F: drivers/thermal/ -F: include/linux/thermal.h - -THINGM BLINK(1) USB RGB LED DRIVER -M: Vivien Didelot -S: Maintained -F: drivers/hid/hid-thingm.c - -THINKPAD ACPI EXTRAS DRIVER -M: Henrique de Moraes Holschuh -L: ibm-acpi-devel@lists.sourceforge.net -L: platform-driver-x86@vger.kernel.org -W: http://ibm-acpi.sourceforge.net -W: http://thinkwiki.org/wiki/Ibm-acpi -T: git git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git -S: Maintained -F: drivers/platform/x86/thinkpad_acpi.c - -TI FLASH MEDIA INTERFACE DRIVER -M: Alex Dubov -S: Maintained -F: drivers/misc/tifm* -F: drivers/mmc/host/tifm_sd.c -F: include/linux/tifm.h - -TI LM49xxx FAMILY ASoC CODEC DRIVERS -M: M R Swami Reddy -M: Vishwas A Deshpande -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -S: Maintained -F: sound/soc/codecs/lm49453* -F: sound/soc/codecs/isabelle* - -TI LP855x BACKLIGHT DRIVER -M: Milo Kim -S: Maintained -F: Documentation/backlight/lp855x-driver.txt -F: drivers/video/backlight/lp855x_bl.c -F: include/linux/platform_data/lp855x.h - -TI LP8727 CHARGER DRIVER -M: Milo Kim -S: Maintained -F: drivers/power/lp8727_charger.c -F: include/linux/platform_data/lp8727.h - -TI LP8788 MFD DRIVER -M: Milo Kim -S: Maintained -F: drivers/iio/adc/lp8788_adc.c -F: drivers/leds/leds-lp8788.c -F: drivers/mfd/lp8788*.c -F: drivers/power/lp8788-charger.c -F: drivers/regulator/lp8788-*.c -F: include/linux/mfd/lp8788*.h - -TI TWL4030 SERIES SOC CODEC DRIVER -M: Peter Ujfalusi -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -S: Maintained -F: sound/soc/codecs/twl4030* - -TI WILINK WIRELESS DRIVERS -M: Luciano Coelho -L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/users/Drivers/wl12xx -W: http://wireless.kernel.org/en/users/Drivers/wl1251 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git -S: Maintained -F: drivers/net/wireless/ti/ -F: include/linux/wl12xx.h - -TIPC NETWORK LAYER -M: Jon Maloy -M: Allan Stephens -L: netdev@vger.kernel.org (core kernel code) -L: tipc-discussion@lists.sourceforge.net (user apps, general discussion) -W: http://tipc.sourceforge.net/ -S: Maintained -F: include/uapi/linux/tipc*.h -F: net/tipc/ - -TILE ARCHITECTURE -M: Chris Metcalf -W: http://www.tilera.com/scm/ -S: Supported -F: arch/tile/ -F: drivers/tty/hvc/hvc_tile.c -F: drivers/net/ethernet/tile/ -F: drivers/edac/tile_edac.c - -TLAN NETWORK DRIVER -M: Samuel Chessman -L: tlan-devel@lists.sourceforge.net (subscribers-only) -W: http://sourceforge.net/projects/tlan/ -S: Maintained -F: Documentation/networking/tlan.txt -F: drivers/net/ethernet/ti/tlan.* - -TOMOYO SECURITY MODULE -M: Kentaro Takeda -M: Tetsuo Handa -L: tomoyo-dev-en@lists.sourceforge.jp (subscribers-only, for developers in English) -L: tomoyo-users-en@lists.sourceforge.jp (subscribers-only, for users in English) -L: tomoyo-dev@lists.sourceforge.jp (subscribers-only, for developers in Japanese) -L: tomoyo-users@lists.sourceforge.jp (subscribers-only, for users in Japanese) -W: http://tomoyo.sourceforge.jp/ -T: quilt http://svn.sourceforge.jp/svnroot/tomoyo/trunk/2.5.x/tomoyo-lsm/patches/ -S: Maintained -F: security/tomoyo/ - -TOPSTAR LAPTOP EXTRAS DRIVER -M: Herton Ronaldo Krzesinski -L: platform-driver-x86@vger.kernel.org -S: Maintained -F: drivers/platform/x86/topstar-laptop.c - -TOSHIBA ACPI EXTRAS DRIVER -L: platform-driver-x86@vger.kernel.org -S: Orphan -F: drivers/platform/x86/toshiba_acpi.c - -TOSHIBA SMM DRIVER -M: Jonathan Buzzard -L: tlinux-users@tce.toshiba-dme.co.jp -W: http://www.buzzard.org.uk/toshiba/ -S: Maintained -F: drivers/char/toshiba.c -F: include/linux/toshiba.h -F: include/uapi/linux/toshiba.h - -TMIO MMC DRIVER -M: Guennadi Liakhovetski -M: Ian Molton -L: linux-mmc@vger.kernel.org -S: Maintained -F: drivers/mmc/host/tmio_mmc* -F: drivers/mmc/host/sh_mobile_sdhi.c -F: include/linux/mmc/tmio.h -F: include/linux/mmc/sh_mobile_sdhi.h - -TMPFS (SHMEM FILESYSTEM) -M: Hugh Dickins -L: linux-mm@kvack.org -S: Maintained -F: include/linux/shmem_fs.h -F: mm/shmem.c - -TM6000 VIDEO4LINUX DRIVER -M: Mauro Carvalho Chehab -L: linux-media@vger.kernel.org -W: http://linuxtv.org -T: git git://linuxtv.org/media_tree.git -S: Odd fixes -F: drivers/media/usb/tm6000/ - -TPM DEVICE DRIVER -M: Kent Yoder -M: Rajiv Andrade -W: http://tpmdd.sourceforge.net -M: Marcel Selhorst -M: Sirrix AG -W: http://www.sirrix.com -L: tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers) -S: Maintained -F: drivers/char/tpm/ - -TRACING -M: Steven Rostedt -M: Frederic Weisbecker -M: Ingo Molnar -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core -S: Maintained -F: Documentation/trace/ftrace.txt -F: arch/*/*/*/ftrace.h -F: arch/*/kernel/ftrace.c -F: include/*/ftrace.h -F: include/linux/trace*.h -F: include/trace/ -F: kernel/trace/ - -TRIVIAL PATCHES -M: Jiri Kosina -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git -S: Maintained -K: ^Subject:.*(?i)trivial - -TTY LAYER -M: Greg Kroah-Hartman -M: Jiri Slaby -S: Supported -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git -F: drivers/tty/ -F: drivers/tty/serial/serial_core.c -F: include/linux/serial_core.h -F: include/linux/serial.h -F: include/linux/tty.h -F: include/uapi/linux/serial_core.h -F: include/uapi/linux/serial.h -F: include/uapi/linux/tty.h - -TUA9001 MEDIA DRIVER -M: Antti Palosaari -L: linux-media@vger.kernel.org -W: http://linuxtv.org/ -W: http://palosaari.fi/linux/ -Q: http://patchwork.linuxtv.org/project/linux-media/list/ -T: git git://linuxtv.org/anttip/media_tree.git -S: Maintained -F: drivers/media/tuners/tua9001* - -TULIP NETWORK DRIVERS -M: Grant Grundler -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/dec/tulip/ - -TUN/TAP driver -M: Maxim Krasnyansky -W: http://vtun.sourceforge.net/tun -S: Maintained -F: Documentation/networking/tuntap.txt -F: arch/um/os-Linux/drivers/ - -TURBOCHANNEL SUBSYSTEM -M: "Maciej W. Rozycki" -S: Maintained -F: drivers/tc/ -F: include/linux/tc.h - -U14-34F SCSI DRIVER -M: Dario Ballabio -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/u14-34f.c - -UBI FILE SYSTEM (UBIFS) -M: Artem Bityutskiy -M: Adrian Hunter -L: linux-mtd@lists.infradead.org -T: git git://git.infradead.org/ubifs-2.6.git -W: http://www.linux-mtd.infradead.org/doc/ubifs.html -S: Maintained -F: Documentation/filesystems/ubifs.txt -F: fs/ubifs/ - -UCLINUX (AND M68KNOMMU) -M: Greg Ungerer -W: http://www.uclinux.org/ -L: uclinux-dev@uclinux.org (subscribers-only) -S: Maintained -F: arch/m68k/*/*_no.* -F: arch/m68k/include/asm/*_no.* - -UCLINUX FOR RENESAS H8/300 (H8300) -M: Yoshinori Sato -W: http://uclinux-h8.sourceforge.jp/ -S: Supported -F: arch/h8300/ -F: drivers/ide/ide-h8300.c -F: drivers/net/ethernet/8390/ne-h8300.c - -UDF FILESYSTEM -M: Jan Kara -S: Maintained -F: Documentation/filesystems/udf.txt -F: fs/udf/ - -UFS FILESYSTEM -M: Evgeniy Dushistov -S: Maintained -F: Documentation/filesystems/ufs.txt -F: fs/ufs/ - -UHID USERSPACE HID IO DRIVER: -M: David Herrmann -L: linux-input@vger.kernel.org -S: Maintained -F: drivers/hid/uhid.c -F: include/uapi/linux/uhid.h - -ULTRA-WIDEBAND (UWB) SUBSYSTEM: -L: linux-usb@vger.kernel.org -S: Orphan -F: drivers/uwb/ -F: include/linux/uwb.h -F: include/linux/uwb/ - -UNICORE32 ARCHITECTURE: -M: Guan Xuetao -W: http://mprc.pku.edu.cn/~guanxuetao/linux -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/epip/linux-2.6-unicore32.git -F: arch/unicore32/ - -UNIFDEF -M: Tony Finch -W: http://dotat.at/prog/unifdef -S: Maintained -F: scripts/unifdef.c - -UNIFORM CDROM DRIVER -M: Jens Axboe -W: http://www.kernel.dk -S: Maintained -F: Documentation/cdrom/ -F: drivers/cdrom/cdrom.c -F: include/linux/cdrom.h -F: include/uapi/linux/cdrom.h - -UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER -M: Vinayak Holikatti -M: Santosh Y -L: linux-scsi@vger.kernel.org -S: Supported -F: Documentation/scsi/ufs.txt -F: drivers/scsi/ufs/ - -UNSORTED BLOCK IMAGES (UBI) -M: Artem Bityutskiy -W: http://www.linux-mtd.infradead.org/ -L: linux-mtd@lists.infradead.org -T: git git://git.infradead.org/ubi-2.6.git -S: Maintained -F: drivers/mtd/ubi/ -F: include/linux/mtd/ubi.h -F: include/uapi/mtd/ubi-user.h - -UNSORTED BLOCK IMAGES (UBI) Fastmap -M: Richard Weinberger -L: linux-mtd@lists.infradead.org -S: Maintained -F: drivers/mtd/ubi/fastmap.c - -USB ACM DRIVER -M: Oliver Neukum -L: linux-usb@vger.kernel.org -S: Maintained -F: Documentation/usb/acm.txt -F: drivers/usb/class/cdc-acm.* - -USB AR5523 WIRELESS DRIVER -M: Pontus Fuchs -L: linux-wireless@vger.kernel.org -S: Maintained -F: drivers/net/wireless/ath/ar5523/ - -USB ATTACHED SCSI -M: Matthew Wilcox -M: Sarah Sharp -M: Gerd Hoffmann -L: linux-usb@vger.kernel.org -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/usb/storage/uas.c - -USB CDC ETHERNET DRIVER -M: Oliver Neukum -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/net/usb/cdc_*.c -F: include/uapi/linux/usb/cdc.h - -USB CYPRESS C67X00 DRIVER -M: Peter Korsgaard -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/c67x00/ - -USB DAVICOM DM9601 DRIVER -M: Peter Korsgaard -L: netdev@vger.kernel.org -W: http://www.linux-usb.org/usbnet -S: Maintained -F: drivers/net/usb/dm9601.c - -USB DIAMOND RIO500 DRIVER -M: Cesar Miquel -L: rio500-users@lists.sourceforge.net -W: http://rio500.sourceforge.net -S: Maintained -F: drivers/usb/misc/rio500* - -USB EHCI DRIVER -M: Alan Stern -L: linux-usb@vger.kernel.org -S: Maintained -F: Documentation/usb/ehci.txt -F: drivers/usb/host/ehci* - -USB GADGET/PERIPHERAL SUBSYSTEM -M: Felipe Balbi -L: linux-usb@vger.kernel.org -W: http://www.linux-usb.org/gadget -T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git -S: Maintained -F: drivers/usb/gadget/ -F: include/linux/usb/gadget* - -USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...) -M: Jiri Kosina -L: linux-usb@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git -S: Maintained -F: Documentation/hid/hiddev.txt -F: drivers/hid/usbhid/ - -USB/IP DRIVERS -M: Matt Mooney -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/staging/usbip/ - -USB ISP116X DRIVER -M: Olav Kongas -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/host/isp116x* -F: include/linux/usb/isp116x.h - -USB KAWASAKI LSI DRIVER -M: Oliver Neukum -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/serial/kl5kusb105.* - -USB MASS STORAGE DRIVER -M: Matthew Dharm -L: linux-usb@vger.kernel.org -L: usb-storage@lists.one-eyed-alien.net -S: Maintained -W: http://www.one-eyed-alien.net/~mdharm/linux-usb/ -F: drivers/usb/storage/ - -USB MIDI DRIVER -M: Clemens Ladisch -L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.alsa-project.org/alsa-kernel.git -S: Maintained -F: sound/usb/midi.* - -USB OHCI DRIVER -M: Alan Stern -L: linux-usb@vger.kernel.org -S: Maintained -F: Documentation/usb/ohci.txt -F: drivers/usb/host/ohci* - -USB OPTION-CARD DRIVER -M: Matthias Urlichs -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/serial/option.c - -USB PEGASUS DRIVER -M: Petko Manolov -L: linux-usb@vger.kernel.org -L: netdev@vger.kernel.org -W: http://pegasus2.sourceforge.net/ -S: Maintained -F: drivers/net/usb/pegasus.* - -USB PHY LAYER -M: Felipe Balbi -L: linux-usb@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git -S: Maintained -F: drivers/usb/phy/ -F: drivers/usb/otg/ - -USB PRINTER DRIVER (usblp) -M: Pete Zaitcev -L: linux-usb@vger.kernel.org -S: Supported -F: drivers/usb/class/usblp.c - -USB RTL8150 DRIVER -M: Petko Manolov -L: linux-usb@vger.kernel.org -L: netdev@vger.kernel.org -W: http://pegasus2.sourceforge.net/ -S: Maintained -F: drivers/net/usb/rtl8150.c - -USB SERIAL BELKIN F5U103 DRIVER -M: William Greathouse -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/serial/belkin_sa.* - -USB SERIAL CYPRESS M8 DRIVER -M: Lonnie Mendez -L: linux-usb@vger.kernel.org -S: Maintained -W: http://geocities.com/i0xox0i -W: http://firstlight.net/cvs -F: drivers/usb/serial/cypress_m8.* - -USB SERIAL CYBERJACK DRIVER -M: Matthias Bruestle and Harald Welte -W: http://www.reiner-sct.de/support/treiber_cyberjack.php -S: Maintained -F: drivers/usb/serial/cyberjack.c - -USB SERIAL DIGI ACCELEPORT DRIVER -M: Peter Berger -M: Al Borchers -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/serial/digi_acceleport.c - -USB SERIAL DRIVER -M: Greg Kroah-Hartman -L: linux-usb@vger.kernel.org -S: Supported -F: Documentation/usb/usb-serial.txt -F: drivers/usb/serial/generic.c -F: drivers/usb/serial/usb-serial.c -F: include/linux/usb/serial.h - -USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER -M: Gary Brubaker -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/serial/empeg.c - -USB SERIAL KEYSPAN DRIVER -M: Greg Kroah-Hartman -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/serial/*keyspan* - -USB SERIAL WHITEHEAT DRIVER -M: Support Department -L: linux-usb@vger.kernel.org -W: http://www.connecttech.com -S: Supported -F: drivers/usb/serial/whiteheat* - -USB SMSC75XX ETHERNET DRIVER -M: Steve Glendinning -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/usb/smsc75xx.* - -USB SMSC95XX ETHERNET DRIVER -M: Steve Glendinning -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/usb/smsc95xx.* - -USB SN9C1xx DRIVER -M: Luca Risolia -L: linux-usb@vger.kernel.org -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://www.linux-projects.org -S: Maintained -F: Documentation/video4linux/sn9c102.txt -F: drivers/media/usb/sn9c102/ - -USB SUBSYSTEM -M: Greg Kroah-Hartman -L: linux-usb@vger.kernel.org -W: http://www.linux-usb.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git -S: Supported -F: Documentation/usb/ -F: drivers/net/usb/ -F: drivers/usb/ -F: include/linux/usb.h -F: include/linux/usb/ - -USB UHCI DRIVER -M: Alan Stern -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/host/uhci* - -USB "USBNET" DRIVER FRAMEWORK -M: Oliver Neukum -L: netdev@vger.kernel.org -W: http://www.linux-usb.org/usbnet -S: Maintained -F: drivers/net/usb/usbnet.c -F: include/linux/usb/usbnet.h - -USB VIDEO CLASS -M: Laurent Pinchart -L: linux-uvc-devel@lists.sourceforge.net (subscribers-only) -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://www.ideasonboard.org/uvc/ -S: Maintained -F: drivers/media/usb/uvc/ -F: include/uapi/linux/uvcvideo.h - -USB VISION DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Odd Fixes -F: drivers/media/usb/usbvision/ - -USB WEBCAM GADGET -M: Laurent Pinchart -L: linux-usb@vger.kernel.org -S: Maintained -F: drivers/usb/gadget/*uvc*.c -F: drivers/usb/gadget/webcam.c - -USB WIRELESS RNDIS DRIVER (rndis_wlan) -M: Jussi Kivilinna -L: linux-wireless@vger.kernel.org -S: Maintained -F: drivers/net/wireless/rndis_wlan.c - -USB XHCI DRIVER -M: Sarah Sharp -L: linux-usb@vger.kernel.org -S: Supported -F: drivers/usb/host/xhci* -F: drivers/usb/host/pci-quirks* - -USB ZD1201 DRIVER -L: linux-wireless@vger.kernel.org -W: http://linux-lc100020.sourceforge.net -S: Orphan -F: drivers/net/wireless/zd1201.* - -USB ZR364XX DRIVER -M: Antoine Jacquet -L: linux-usb@vger.kernel.org -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://royale.zerezo.com/zr364xx/ -S: Maintained -F: Documentation/video4linux/zr364xx.txt -F: drivers/media/usb/zr364xx/ - -USER-MODE LINUX (UML) -M: Jeff Dike -M: Richard Weinberger -L: user-mode-linux-devel@lists.sourceforge.net -L: user-mode-linux-user@lists.sourceforge.net -W: http://user-mode-linux.sourceforge.net -S: Maintained -F: Documentation/virtual/uml/ -F: arch/um/ -F: arch/x86/um/ -F: fs/hostfs/ -F: fs/hppfs/ - -USERSPACE I/O (UIO) -M: "Hans J. Koch" -M: Greg Kroah-Hartman -S: Maintained -F: Documentation/DocBook/uio-howto.tmpl -F: drivers/uio/ -F: include/linux/uio*.h - -UTIL-LINUX PACKAGE -M: Karel Zak -L: util-linux@vger.kernel.org -W: http://en.wikipedia.org/wiki/Util-linux -T: git git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git -S: Maintained - -UVESAFB DRIVER -M: Michal Januszewski -L: linux-fbdev@vger.kernel.org -W: http://dev.gentoo.org/~spock/projects/uvesafb/ -S: Maintained -F: Documentation/fb/uvesafb.txt -F: drivers/video/uvesafb.* - -VFAT/FAT/MSDOS FILESYSTEM -M: OGAWA Hirofumi -S: Maintained -F: Documentation/filesystems/vfat.txt -F: fs/fat/ - -VFIO DRIVER -M: Alex Williamson -L: kvm@vger.kernel.org -S: Maintained -F: Documentation/vfio.txt -F: drivers/vfio/ -F: include/linux/vfio.h -F: include/uapi/linux/vfio.h - -VIDEOBUF2 FRAMEWORK -M: Pawel Osciak -M: Marek Szyprowski -M: Kyungmin Park -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/v4l2-core/videobuf2-* -F: include/media/videobuf2-* - -VIRTIO CONSOLE DRIVER -M: Amit Shah -L: virtualization@lists.linux-foundation.org -S: Maintained -F: drivers/char/virtio_console.c -F: include/linux/virtio_console.h -F: include/uapi/linux/virtio_console.h - -VIRTIO CORE, NET AND BLOCK DRIVERS -M: Rusty Russell -M: "Michael S. Tsirkin" -L: virtualization@lists.linux-foundation.org -S: Maintained -F: drivers/virtio/ -F: drivers/net/virtio_net.c -F: drivers/block/virtio_blk.c -F: include/linux/virtio_*.h - -VIRTIO HOST (VHOST) -M: "Michael S. Tsirkin" -L: kvm@vger.kernel.org -L: virtualization@lists.linux-foundation.org -L: netdev@vger.kernel.org -S: Maintained -F: drivers/vhost/ -F: include/uapi/linux/vhost.h - -VIA RHINE NETWORK DRIVER -M: Roger Luethi -S: Maintained -F: drivers/net/ethernet/via/via-rhine.c - -VIA SD/MMC CARD CONTROLLER DRIVER -M: Bruce Chang -M: Harald Welte -S: Maintained -F: drivers/mmc/host/via-sdmmc.c - -VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER -M: Florian Tobias Schandinat -L: linux-fbdev@vger.kernel.org -S: Maintained -F: include/linux/via-core.h -F: include/linux/via-gpio.h -F: include/linux/via_i2c.h -F: drivers/video/via/ - -VIA VELOCITY NETWORK DRIVER -M: Francois Romieu -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/via/via-velocity.* - -VIVI VIRTUAL VIDEO DRIVER -M: Hans Verkuil -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org -S: Maintained -F: drivers/media/platform/vivi* - -VLAN (802.1Q) -M: Patrick McHardy -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/macvlan.c -F: include/linux/if_*vlan.h -F: net/8021q/ - -VLYNQ BUS -M: Florian Fainelli -L: openwrt-devel@lists.openwrt.org (subscribers-only) -S: Maintained -F: drivers/vlynq/vlynq.c -F: include/linux/vlynq.h - -VME SUBSYSTEM -M: Martyn Welch -M: Manohar Vanga -M: Greg Kroah-Hartman -L: devel@driverdev.osuosl.org -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git -F: Documentation/vme_api.txt -F: drivers/staging/vme/ -F: drivers/vme/ -F: include/linux/vme* - -VMWARE VMXNET3 ETHERNET DRIVER -M: Shreyas Bhatewara -M: "VMware, Inc." -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/vmxnet3/ - -VMware PVSCSI driver -M: Arvind Kumar -M: VMware PV-Drivers -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/vmw_pvscsi.c -F: drivers/scsi/vmw_pvscsi.h - -VOLTAGE AND CURRENT REGULATOR FRAMEWORK -M: Liam Girdwood -M: Mark Brown -W: http://opensource.wolfsonmicro.com/node/15 -W: http://www.slimlogic.co.uk/?p=48 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lrg/regulator.git -S: Supported -F: drivers/regulator/ -F: include/linux/regulator/ - -VT1211 HARDWARE MONITOR DRIVER -M: Juerg Haefliger -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/vt1211 -F: drivers/hwmon/vt1211.c - -VT8231 HARDWARE MONITOR DRIVER -M: Roger Lucas -L: lm-sensors@lm-sensors.org -S: Maintained -F: drivers/hwmon/vt8231.c - -VUB300 USB to SDIO/SD/MMC bridge chip -M: Tony Olech -L: linux-mmc@vger.kernel.org -L: linux-usb@vger.kernel.org -S: Supported -F: drivers/mmc/host/vub300.c - -W1 DALLAS'S 1-WIRE BUS -M: Evgeniy Polyakov -S: Maintained -F: Documentation/w1/ -F: drivers/w1/ - -W83791D HARDWARE MONITORING DRIVER -M: Marc Hulsman -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/w83791d -F: drivers/hwmon/w83791d.c - -W83793 HARDWARE MONITORING DRIVER -M: Rudolf Marek -L: lm-sensors@lm-sensors.org -S: Maintained -F: Documentation/hwmon/w83793 -F: drivers/hwmon/w83793.c - -W83795 HARDWARE MONITORING DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org -S: Maintained -F: drivers/hwmon/w83795.c - -W83L51xD SD/MMC CARD INTERFACE DRIVER -M: Pierre Ossman -S: Maintained -F: drivers/mmc/host/wbsd.* - -WATCHDOG DEVICE DRIVERS -M: Wim Van Sebroeck -L: linux-watchdog@vger.kernel.org -W: http://www.linux-watchdog.org/ -T: git git://www.linux-watchdog.org/linux-watchdog.git -S: Maintained -F: Documentation/watchdog/ -F: drivers/watchdog/ -F: include/linux/watchdog.h -F: include/uapi/linux/watchdog.h - -WD7000 SCSI DRIVER -M: Miroslav Zagorac -L: linux-scsi@vger.kernel.org -S: Maintained -F: drivers/scsi/wd7000.c - -WIIMOTE HID DRIVER -M: David Herrmann -L: linux-input@vger.kernel.org -S: Maintained -F: drivers/hid/hid-wiimote* - -WINBOND CIR DRIVER -M: David Härdeman -S: Maintained -F: drivers/media/rc/winbond-cir.c - -WIMAX STACK -M: Inaky Perez-Gonzalez -M: linux-wimax@intel.com -L: wimax@linuxwimax.org -S: Supported -W: http://linuxwimax.org -F: Documentation/wimax/README.wimax -F: include/linux/wimax/debug.h -F: include/net/wimax.h -F: include/uapi/linux/wimax.h -F: net/wimax/ - -WISTRON LAPTOP BUTTON DRIVER -M: Miloslav Trmac -S: Maintained -F: drivers/input/misc/wistron_btns.c - -WL3501 WIRELESS PCMCIA CARD DRIVER -M: Arnaldo Carvalho de Melo -L: linux-wireless@vger.kernel.org -W: http://oops.ghostprotocols.net:81/blog -S: Maintained -F: drivers/net/wireless/wl3501* - -WM97XX TOUCHSCREEN DRIVERS -M: Mark Brown -M: Liam Girdwood -L: linux-input@vger.kernel.org -T: git git://opensource.wolfsonmicro.com/linux-2.6-touch -W: http://opensource.wolfsonmicro.com/node/7 -S: Supported -F: drivers/input/touchscreen/*wm97* -F: include/linux/wm97xx.h - -WOLFSON MICROELECTRONICS DRIVERS -M: Mark Brown -L: patches@opensource.wolfsonmicro.com -T: git git://opensource.wolfsonmicro.com/linux-2.6-asoc -T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus -W: http://opensource.wolfsonmicro.com/content/linux-drivers-wolfson-devices -S: Supported -F: Documentation/hwmon/wm83?? -F: arch/arm/mach-s3c64xx/mach-crag6410* -F: drivers/clk/clk-wm83*.c -F: drivers/extcon/extcon-arizona.c -F: drivers/leds/leds-wm83*.c -F: drivers/gpio/gpio-*wm*.c -F: drivers/gpio/gpio-arizona.c -F: drivers/hwmon/wm83??-hwmon.c -F: drivers/input/misc/wm831x-on.c -F: drivers/input/touchscreen/wm831x-ts.c -F: drivers/input/touchscreen/wm97*.c -F: drivers/mfd/arizona* -F: drivers/mfd/wm*.c -F: drivers/power/wm83*.c -F: drivers/rtc/rtc-wm83*.c -F: drivers/regulator/wm8*.c -F: drivers/video/backlight/wm83*_bl.c -F: drivers/watchdog/wm83*_wdt.c -F: include/linux/mfd/arizona/ -F: include/linux/mfd/wm831x/ -F: include/linux/mfd/wm8350/ -F: include/linux/mfd/wm8400* -F: include/linux/wm97xx.h -F: include/sound/wm????.h -F: sound/soc/codecs/arizona.? -F: sound/soc/codecs/wm* - -WORKQUEUE -M: Tejun Heo -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git -S: Maintained -F: include/linux/workqueue.h -F: kernel/workqueue.c -F: Documentation/workqueue.txt - -X.25 NETWORK LAYER -M: Andrew Hendry -L: linux-x25@vger.kernel.org -S: Odd Fixes -F: Documentation/networking/x25* -F: include/net/x25* -F: net/x25/ - -X86 ARCHITECTURE (32-BIT AND 64-BIT) -M: Thomas Gleixner -M: Ingo Molnar -M: "H. Peter Anvin" -M: x86@kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core -S: Maintained -F: Documentation/x86/ -F: arch/x86/ - -X86 PLATFORM DRIVERS -M: Matthew Garrett -L: platform-driver-x86@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86.git -S: Maintained -F: drivers/platform/x86 - -X86 MCE INFRASTRUCTURE -M: Tony Luck -M: Borislav Petkov -L: linux-edac@vger.kernel.org -S: Maintained -F: arch/x86/kernel/cpu/mcheck/* - -XC2028/3028 TUNER DRIVER -M: Mauro Carvalho Chehab -L: linux-media@vger.kernel.org -W: http://linuxtv.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/tuners/tuner-xc2028.* - -XEN HYPERVISOR INTERFACE -M: Konrad Rzeszutek Wilk -M: Jeremy Fitzhardinge -L: xen-devel@lists.xensource.com (moderated for non-subscribers) -L: virtualization@lists.linux-foundation.org -S: Supported -F: arch/x86/xen/ -F: drivers/*/xen-*front.c -F: drivers/xen/ -F: arch/x86/include/asm/xen/ -F: include/xen/ -F: include/uapi/xen/ - -XEN HYPERVISOR ARM -M: Stefano Stabellini -L: xen-devel@lists.xensource.com (moderated for non-subscribers) -S: Supported -F: arch/arm/xen/ -F: arch/arm/include/asm/xen/ - -XEN NETWORK BACKEND DRIVER -M: Ian Campbell -L: xen-devel@lists.xensource.com (moderated for non-subscribers) -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/xen-netback/* - -XEN PCI SUBSYSTEM -M: Konrad Rzeszutek Wilk -L: xen-devel@lists.xensource.com (moderated for non-subscribers) -S: Supported -F: arch/x86/pci/*xen* -F: drivers/pci/*xen* - -XEN SWIOTLB SUBSYSTEM -M: Konrad Rzeszutek Wilk -L: xen-devel@lists.xensource.com (moderated for non-subscribers) -S: Supported -F: arch/x86/xen/*swiotlb* -F: drivers/xen/*swiotlb* - -XFS FILESYSTEM -P: Silicon Graphics Inc -M: Ben Myers -M: Alex Elder -M: xfs@oss.sgi.com -L: xfs@oss.sgi.com -W: http://oss.sgi.com/projects/xfs -T: git git://oss.sgi.com/xfs/xfs.git -S: Supported -F: Documentation/filesystems/xfs.txt -F: fs/xfs/ - -XILINX AXI ETHERNET DRIVER -M: Anirudha Sarangi -M: John Linn -S: Maintained -F: drivers/net/ethernet/xilinx/xilinx_axienet* - -XILINX SYSTEMACE DRIVER -M: Grant Likely -W: http://www.secretlab.ca/ -S: Maintained -F: drivers/block/xsysace.c - -XILINX UARTLITE SERIAL DRIVER -M: Peter Korsgaard -L: linux-serial@vger.kernel.org -S: Maintained -F: drivers/tty/serial/uartlite.c - -YAM DRIVER FOR AX.25 -M: Jean-Paul Roubelat -L: linux-hams@vger.kernel.org -S: Maintained -F: drivers/net/hamradio/yam* -F: include/linux/yam.h - -YEALINK PHONE DRIVER -M: Henk Vergonet -L: usbb2k-api-dev@nongnu.org -S: Maintained -F: Documentation/input/yealink.txt -F: drivers/input/misc/yealink.* - -Z8530 DRIVER FOR AX.25 -M: Joerg Reuter -W: http://yaina.de/jreuter/ -W: http://www.qsl.net/dl1bke/ -L: linux-hams@vger.kernel.org -S: Maintained -F: Documentation/networking/z8530drv.txt -F: drivers/net/hamradio/*scc.c -F: drivers/net/hamradio/z8530.h - -ZD1211RW WIRELESS DRIVER -M: Daniel Drake -M: Ulrich Kunitz -W: http://zd1211.ath.cx/wiki/DriverRewrite -L: linux-wireless@vger.kernel.org -L: zd1211-devs@lists.sourceforge.net (subscribers-only) -S: Maintained -F: drivers/net/wireless/zd1211rw/ - -ZR36067 VIDEO FOR LINUX DRIVER -L: mjpeg-users@lists.sourceforge.net -L: linux-media@vger.kernel.org -W: http://mjpeg.sourceforge.net/driver-zoran/ -T: Mercurial http://linuxtv.org/hg/v4l-dvb -S: Odd Fixes -F: drivers/media/pci/zoran/ - -ZS DECSTATION Z85C30 SERIAL DRIVER -M: "Maciej W. Rozycki" -S: Maintained -F: drivers/tty/serial/zs.* - -THE REST -M: Linus Torvalds -L: linux-kernel@vger.kernel.org -Q: http://patchwork.kernel.org/project/LKML/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git -S: Buried alive in reporters -F: * -F: */ diff --git a/Makefile b/Makefile deleted file mode 100644 index 89bc991..0000000 --- a/Makefile +++ /dev/null @@ -1,264 +0,0 @@ -# - -# Copyright (c) 2007-2012 Luis R. Rodriguez -# -# Permission to use, copy, modify, and/or distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -export KMODDIR?= updates -KMODDIR_ARG:= "INSTALL_MOD_DIR=$(KMODDIR)" -ifneq ($(origin KLIB), undefined) -KMODPATH_ARG:= "INSTALL_MOD_PATH=$(KLIB)" -else -export KLIB:= /lib/modules/$(shell uname -r) -endif -export KLIB_BUILD ?= $(KLIB)/build -export MAKE - -DESTDIR?= - -ifneq ($(KERNELRELEASE),) - --include $(COMPAT_CONFIG) -include $(COMPAT_CONFIG_CW) - -NOSTDINC_FLAGS := \ - -I$(M)/include/ \ - -I$(M)/include/uapi \ - -I$(M)/include/drm \ - -include $(M)/include/linux/compat-2.6.h \ - $(CFLAGS) - -obj-y := compat/ - -obj-$(CONFIG_COMPAT_RFKILL) += net/rfkill/ -obj-$(CONFIG_COMPAT_VIDEO_MODULES) += drivers/gpu/drm/ -obj-$(CONFIG_COMPAT_VIDEO_MODULES) += drivers/video/ - -ifeq ($(BT),) -obj-$(CONFIG_COMPAT_WIRELESS) += net/wireless/ net/mac80211/ -obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += drivers/net/wireless/ - -obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/ - -obj-$(CONFIG_COMPAT_NETWORK_MODULES) += drivers/net/ethernet/atheros/ -obj-$(CONFIG_COMPAT_NETWORK_MODULES) += drivers/net/ethernet/broadcom/ - -obj-$(CONFIG_COMPAT_VAR_MODULES) += drivers/ssb/ -obj-$(CONFIG_COMPAT_VAR_MODULES) += drivers/bcma/ -obj-$(CONFIG_COMPAT_VAR_MODULES) += drivers/misc/eeprom/ - -ifeq ($(CONFIG_STAGING_EXCLUDE_BUILD),) -endif - -endif - -obj-$(CONFIG_COMPAT_BLUETOOTH) += net/bluetooth/ -obj-$(CONFIG_COMPAT_BLUETOOTH_MODULES) += drivers/bluetooth/ - -else - -export PWD := $(shell pwd) - -# The build will fail if there is any space in PWD. -ifneq (,$(findstring $() ,$(PWD))) -$(error "The path to this compat-drivers directory has spaces in it." \ - "Please put it somewhere where there is no space") -endif - -export CFLAGS += \ - -DCOMPAT_BASE="\"$(shell cat $(PWD)/.compat_base)\"" \ - -DCOMPAT_BASE_TREE="\"$(shell cat $(PWD)/.compat_base_tree)\"" \ - -DCOMPAT_BASE_TREE_VERSION="\"$(shell cat $(PWD)/.compat_base_tree_version)\"" \ - -DCOMPAT_PROJECT="\"Compat-drivers\"" \ - -DCOMPAT_VERSION="\"$(shell cat $(PWD)/.compat_version)\"" - -# These exported as they are used by the scripts -# to check config and compat autoconf -export COMPAT_CONFIG_CW=$(PWD)/config.mk -export COMPAT_CONFIG=$(PWD)/.config -export CONFIG_CHECK=$(PWD)/.config.mk_md5sum.txt -export COMPAT_AUTOCONF=include/linux/compat_autoconf.h -export CREL=$(shell cat $(PWD)/.compat_version) -export CREL_PRE:=.compat_autoconf_ -export CREL_CHECK:=$(PWD)/$(CREL_PRE)$(CREL) - -all: modules - -$(COMPAT_CONFIG): ; - -modules: $(CREL_CHECK) - +@./scripts/check_config.sh - $(MAKE) -C $(KLIB_BUILD) M=$(PWD) modules - @touch $@ - -bt: $(CREL_CHECK) - +@./scripts/check_config.sh - $(MAKE) -C $(KLIB_BUILD) M=$(PWD) BT=TRUE modules - @touch $@ - -# We use a CREL_CHECK variable which will depend on the environment used to -# build. If the environment requirements change it forces a reconfiguration -# check. This means we force a new reconfiguration check if a the user gets a -# new updates of compat-drivers or when the user updates the $(COMPAT_CONFIG) -# file. -# XXX: add kernel target to the CREL_CHECK mix, this would ensure we also -# reconfigure and build again fresh if we detect a new target kernel is -# being used. -$(CREL_CHECK): - @# Force to regenerate compat autoconf - +@./compat/scripts/gen-compat-config.sh > $(COMPAT_CONFIG) - @rm -f $(CONFIG_CHECK) - +@./scripts/check_config.sh - @md5sum $(COMPAT_CONFIG_CW) > $(CONFIG_CHECK) - @touch $@ - -btinstall: btuninstall bt-install-modules - -bt-install-modules: bt - $(MAKE) -C $(KLIB_BUILD) M=$(PWD) $(KMODDIR_ARG) $(KMODPATH_ARG) BT=TRUE \ - modules_install - @/sbin/depmod -ae - @echo - @echo Now run: - @echo - @echo sudo make btunload: - @echo - @echo And then load the needed bluetooth modules. If unsure reboot. - @echo - -btuninstall: - @# New location, matches upstream - @rm -rf $(KLIB)/$(KMODDIR)/net/bluetooth/ - @rm -rf $(KLIB)/$(KMODDIR)/drivers/bluetooth/ - @# Lets only remove the stuff we are sure we are providing - @# on the misc directory. - @/sbin/depmod -ae - @echo - -btclean: - $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) BT=TRUE clean - @rm -f $(CREL_PRE)* - -install: uninstall install-modules install-scripts - -install-modules: modules - $(MAKE) -C $(KLIB_BUILD) M=$(PWD) $(KMODDIR_ARG) $(KMODPATH_ARG) \ - modules_install - @./scripts/update-initramfs - -install-scripts: - @# All the scripts we can use - @mkdir -p $(DESTDIR)/usr/lib/compat-drivers/ - @install scripts/modlib.sh $(DESTDIR)/usr/lib/compat-drivers/ - @install scripts/git-paranoia $(DESTDIR)/usr/sbin/ - @install scripts/madwifi-unload $(DESTDIR)/usr/sbin/ - @# This is to allow switching between drivers without blacklisting - @install scripts/athenable $(DESTDIR)/usr/sbin/ - @install scripts/b43enable $(DESTDIR)/usr/sbin/ - @install scripts/iwl-enable $(DESTDIR)/usr/sbin/ - @install scripts/athload $(DESTDIR)/usr/sbin/ - @install scripts/b43load $(DESTDIR)/usr/sbin/ - @install scripts/iwl-load $(DESTDIR)/usr/sbin/ - @if [ $(shell modinfo ath_pci > /dev/null 2>&1 && echo 1) ]; then \ - echo -n "Note: madwifi detected, we're going to disable it. " ;\ - echo "If you would like to enable it later you can run:" ;\ - echo " sudo athenable madwifi" ;\ - echo ;\ - echo Running athenable ath5k...;\ - $(DESTDIR)/usr/sbin/athenable ath5k ;\ - fi - @if [ $(shell modinfo iwl4965 > /dev/null 2>&1 && echo 1) ]; then \ - echo ;\ - echo -n "Note: iwl4965 detected, we're going to disable it. " ;\ - echo "If you would like to enable it later you can run:" ;\ - echo " sudo iwl-load iwl4965" ;\ - echo ;\ - echo Running iwl-enable iwlagn...;\ - $(DESTDIR)/usr/sbin/iwl-enable iwlagn ;\ - fi - @if [ $(shell modinfo iwlagn > /dev/null 2>&1 && echo 1) ] \ - && [ $(shell modinfo iwlwifi > /dev/null 2>&1 && echo 1) ]; then \ - echo ;\ - echo -n "Note: iwlagn detected, we're going to disable it. " ;\ - echo "If you would like to enable it later you can run:" ;\ - echo " sudo iwl-load iwlagn" ;\ - echo ;\ - echo Running iwl-enable iwlwifi...;\ - $(DESTDIR)/usr/sbin/iwl-enable iwlwifi ;\ - fi - @# If on distributions like Mandriva which like to - @# compress their modules this will find out and do - @# it for you. Reason is some old version of modutils - @# won't know mac80211.ko should be used instead of - @# mac80211.ko.gz - @./scripts/compress_modules - @# Mandrake doesn't have a depmod.d/ conf file to prefer - @# the updates/ dir which is what we use so we add one for it - @# (or any other distribution that doens't have this). - @./scripts/check_depmod - @# Udev stuff needed for the new compat_firmware_class. - @./compat/scripts/compat_firmware_install - @/sbin/depmod -a - @echo - @echo Now run: - @echo - @echo sudo make unload to unload all: wireless, bluetooth and ethernet modules - @echo sudo make wlunload to unload wireless modules - @echo sudo make btunload to unload bluetooth modules - @echo - @echo Run sudo modprobe 'driver-name' to load your desired driver. - @echo If unsure reboot. - @echo - -uninstall: - @# New location, matches upstream - @rm -rf $(KLIB)/$(KMODDIR)/compat/ - @rm -rf $(KLIB)/$(KMODDIR)/net/mac80211/ - @rm -rf $(KLIB)/$(KMODDIR)/net/rfkill/ - @rm -rf $(KLIB)/$(KMODDIR)/net/wireless/ - @rm -rf $(KLIB)/$(KMODDIR)/drivers/ssb/ - @rm -rf $(KLIB)/$(KMODDIR)/drivers/net/usb/ - @rm -rf $(KLIB)/$(KMODDIR)/drivers/net/wireless/ - @rm -rf $(KLIB)/$(KMODDIR)/drivers/staging/ - @rm -rf $(KLIB)/$(KMODDIR)/drivers/net/atl* - @find $(KLIB)/$(KMODDIR)/drivers/net/ -name "alx*.ko" -o -name "atl*.ko" 2>/dev/null |xargs rm -f - @# Lets only remove the stuff we are sure we are providing - @# on the misc directory. - @rm -f $(KLIB)/$(KMODDIR)/drivers/misc/eeprom/eeprom_93cx6.ko* - @rm -f $(KLIB)/$(KMODDIR)/drivers/misc/eeprom_93cx6.ko* - @rm -f $(KLIB)/$(KMODDIR)/drivers/net/b44.ko* - @/sbin/depmod -a - @./scripts/update-initramfs - @echo - -clean: - @if [ -d net -a -d $(KLIB_BUILD) ]; then \ - $(MAKE) -C $(KLIB_BUILD) M=$(PWD) clean ;\ - fi - @rm -f $(CREL_PRE)* -unload: - @./scripts/unload.sh - -btunload: - @./scripts/btunload.sh - -wlunload: - @./scripts/wlunload.sh - - -.PHONY: all clean install uninstall unload btunload wlunload modules bt Makefile - -endif - -clean-files += Module.symvers Module.markers modules modules.order -clean-files += $(CREL_CHECK) $(CONFIG_CHECK) $(COMPAT_CONFIG) diff --git a/README-CW1200 b/README-CW1200 index 0c7275f..62d7ba9 100644 --- a/README-CW1200 +++ b/README-CW1200 @@ -1,21 +1,34 @@ The cw1200 driver has been accepted into the upstream linux kernel; it -will be present in the 3.11-rc and newer releases. Consequently it will -be part of the 3.11-rc and newer compat-drivers/backports releases. +is present in the 3.11-rc and newer releases. It is also present in the +3.12 and newer backports releases. Please see: - https://backports.wiki.kernel.org/index.php/Releases + https://backports.wiki.kernel.org -Once that occurs, this git repository will become largely irrelevant, -though there will be at least three out-of-tree patches: - - * Support kernels older than 2.6.36 (will be merged into backports) - * ETF mode operation - * ITP mode operation +In general, I recommend using the latest version of backports. Down the line, these changes are anticipated: * Devicetree bindings for the cw1200 driver (SPI and SDIO) * Support for the cw1x50/cw1x60 (depends on hardware availability) + * Bugfixes as necessary -Also, I don't have permission to redistribute the device firmware, nor -do I have any contacts that still work for ST-E. You will need to -contact your module vendor for appropriate firmware. +There currently two out-of-tree patches, bundled here: + + * ETF mode operation + * ITP mode operation + +These patches are provided as-is with no support, as they are only +really of use if you have access to ST-E's ETF tools and intend to take +a device through regulatory approval. Contact your module vendor for +further details. + +Similarly, I do not have permission to redistribute the device firmware. +You will need to contact your module vendor for appropriate firmware files. + +-- -- -- + +Questions, comments, bug reports, and flames go to: + +Solomon Peachy +pizza AT shaftnet DOT org +October, 2013 diff --git a/README.md b/README.md deleted file mode 100644 index b647eb2..0000000 --- a/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Linux compat drivers compatibility package - -This package provides backport support for drivers from newer kernels -down to older kernels. It currently backports 3 subsystems: - - * Ethernet - * Wireless - * Bluetooth - * GPU - -This package provides the latest Linux kernel subsystem enhancements -for kernels 2.6.24 and above. It is technically possible to support -kernels < 2.6.24 but more work is required for that. - -# Documentation - -This package is documented online and has more-up-to date information -online than on this README file. You should read the wiki page -and not rely on this README! - -https://backports.wiki.kernel.org - -# License - -This work is a subset of the Linux kernel as such we keep the kernel's -Copyright practice. Some files have their own copyright and in those -cases the license is mentioned in the file. All additional work made -to building this package is licensed under the GPLv2. diff --git a/code-metrics.txt b/code-metrics.txt deleted file mode 100644 index b5c63c9..0000000 --- a/code-metrics.txt +++ /dev/null @@ -1,28 +0,0 @@ - -compat-drivers code metrics - - 1320314 - Total upstream lines of code being pulled - - network - ---------------------------------------- - 3110 - backport code changes - 2605 - backport code additions - 505 - backport code deletions - 15026 - backport from compat module - 18136 - total backport code - 1.3736 - % of code consists of backport work - - drm - ---------------------------------------- - 437 - backport code changes - 293 - backport code additions - 144 - backport code deletions - 15026 - backport from compat module - 15463 - total backport code - 1.1712 - % of code consists of backport work - -Base tree: linux-stable.git -Base tree version: v3.9-rc4 -compat.git: compat-v3.9-rc4-1 -compat-drivers release: compat-drivers-v3.9-rc4-2 -Code metrics archive: http://bit.ly/H6BTF7 diff --git a/compat/Makefile b/compat/Makefile deleted file mode 100644 index 3b9bfde..0000000 --- a/compat/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -ccflags-y += -I$(src) -obj-m += compat.o -#compat-objs := - -obj-$(CONFIG_COMPAT_FIRMWARE_CLASS) += compat_firmware_class.o -obj-$(CONFIG_COMPAT_NET_SCH_CODEL) += sch_codel.o - -sch_fq_codel-y = sch_fq_codel_core.o flow_dissector.o - -obj-$(CONFIG_COMPAT_NET_SCH_FQ_CODEL) += sch_fq_codel.o - -compat-y += main.o - -# Compat kernel compatibility code -compat-$(CONFIG_COMPAT_KERNEL_2_6_14) += compat-2.6.14.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_18) += compat-2.6.18.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_19) += compat-2.6.19.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_21) += compat-2.6.21.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_22) += compat-2.6.22.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_23) += compat-2.6.23.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_24) += compat-2.6.24.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_25) += \ - compat-2.6.25.o \ - pm_qos_params.o - -compat-$(CONFIG_COMPAT_KERNEL_2_6_26) += compat-2.6.26.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_27) += compat-2.6.27.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_28) += compat-2.6.28.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_29) += compat-2.6.29.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_32) += compat-2.6.32.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_33) += compat-2.6.33.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_34) += compat-2.6.34.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_35) += compat-2.6.35.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_36) += compat-2.6.36.o - -compat-$(CONFIG_COMPAT_KFIFO) += kfifo.o - -compat-$(CONFIG_COMPAT_KERNEL_2_6_37) += compat-2.6.37.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_38) += compat-2.6.38.o -compat-$(CONFIG_COMPAT_KERNEL_2_6_39) += \ - compat-2.6.39.o \ - kstrtox.o -compat-$(CONFIG_COMPAT_KERNEL_3_0) += compat-3.0.o -compat-$(CONFIG_COMPAT_KERNEL_3_1) += compat-3.1.o -compat-$(CONFIG_COMPAT_KERNEL_3_2) += compat-3.2.o -compat-$(CONFIG_COMPAT_KERNEL_3_3) += \ - compat-3.3.o -compat-$(CONFIG_COMPAT_KERNEL_3_4) += compat-3.4.o -compat-$(CONFIG_COMPAT_KERNEL_3_5) += \ - compat-3.5.o \ - user_namespace.o -compat-$(CONFIG_COMPAT_KERNEL_3_7) += compat-3.7.o -compat-$(CONFIG_COMPAT_KERNEL_3_8) += compat-3.8.o - -compat-$(CONFIG_COMPAT_CORDIC) += cordic.o -compat-$(CONFIG_COMPAT_CRC8) += crc8.o - -ifndef CONFIG_64BIT -ifndef CONFIG_GENERIC_ATOMIC64 - compat-y += compat_atomic.o -endif -endif diff --git a/compat/ckmake b/compat/ckmake deleted file mode 100755 index cd9741a..0000000 --- a/compat/ckmake +++ /dev/null @@ -1,393 +0,0 @@ -#!/usr/bin/env python - -# ncurses Linux kernel cross kernel compilation utility - -# Copyright (C) 2012 Luis R. Rodriguez -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. - -import locale -import curses -import time -import os -import re -import random -import tempfile -import subprocess -import sys -import signal - -from Queue import * -from threading import Thread, Lock -from shutil import copytree, ignore_patterns, rmtree, copyfileobj -from time import sleep - -releases_processed = [] -releases_baking = [] -processed_lock = Lock() -baking_lock = Lock() -my_cwd = os.getcwd() -ckmake_return = 0 - -tmp_path = my_cwd + "/.tmp.ckmake" -ckmake_log = my_cwd + "/ckmake.log" -ckmake_report = my_cwd + "/ckmake-report.log" - -home = os.getenv("HOME") -ksrc = home + "/" + "compat-ksrc" -modules = ksrc + "/lib/modules" - -def clean(): - if os.path.exists(tmp_path): - rmtree(tmp_path) - -def get_processed_rel(i): - "Because... list.pop(i) didn't work to keep order..." - processed_lock.acquire() - for rel in releases_processed: - if (rel['idx'] == i): - processed_lock.release() - return rel - processed_lock.release() - - baking_lock.acquire() - for rel in releases_baking: - if (rel['idx'] == i): - releases_baking.remove(rel) - baking_lock.release() - return rel - baking_lock.release() - -def get_status_name(status): - if (status == 0): - return 'OK' - elif (status == 130): - return 'TERM' - elif (status == 1234): - return 'INIT' - elif (status == -2): - return 'TERM' - else: - return 'FAIL' - -def get_stat_pos(status): - if (status == 0): - return 34 - elif (status == 130): - return 33 - elif (status == 1234): - return 33 - elif (status == -2): - return 33 - else: - return 33 - -def get_status_color(status): - if (status == 0): - return curses.color_pair(1) - elif (status == 130): - return curses.color_pair(2) - elif (status == 1234): - return curses.color_pair(2) - elif (status == -2): - return curses.color_pair(2) - else: - return curses.color_pair(3) - -def print_report(): - os.system("clear") - sys.stdout.write("\n\n\n") - sys.stdout.write("== ckmake-report.log ==\n\n") - report = open(ckmake_report, 'r+') - copyfileobj(report, sys.stdout) - report.close() - -def process_logs(): - os.system('clear') - log = open(ckmake_log, 'w+') - report = open(ckmake_report, 'w+') - for i in range(0, len(releases_processed)): - rel = get_processed_rel(i) - rel_log = open(rel['log'], 'r+') - log.write(rel_log.read()) - status = get_status_name(rel['status']) - rel_report = "%-4s%-20s[ %s ]\n" % \ - ( rel['idx']+1, rel['version'], status) - report.write(rel_report) - if (rel['status'] != 0 and - rel['status'] != 2): - ckmake_return = -1 - report.close() - log.close() - print_report() - -def process_kernel(num, kset): - while True: - rel = kset.queue.get() - work_dir = tmp_path + '/' + rel['version'] - copytree(my_cwd, \ - work_dir, \ - ignore=ignore_patterns('\.git*', '.tmp*', ".git")) - build = '%s/build/' % rel['full_path'] - jobs = ' -j%d ' % kset.build_jobs - make_args = 'KLIB=%(build)s KLIB_BUILD=%(build)s' % \ - { "build": build } - log_file = work_dir + '/' + 'ckmake.n.log' - rel['log'] = log_file - # XXX: figure out how to properly address logging - # without this nasty ass hack. - log = ' > %(log)s 2>&1' % { "log": log_file } - nice = 'ionice -c 3 nice -n 20 ' - cmd = nice + 'make ' + jobs + make_args + log - - my_env = os.environ.copy() - my_env["KCFLAGS"] = "-Wno-unused-but-set-variable" - - kset.baking(rel) - - p = subprocess.Popen([cmd], - env = my_env, - cwd = work_dir, - stdout=None, - stderr=None, - shell=True) - p.wait() - - kset.update_status(rel, p.returncode) - kset.queue.task_done() - kset.completed(rel) - -def cpu_info_build_jobs(): - if not os.path.exists('/proc/cpuinfo'): - return 1 - f = open('/proc/cpuinfo', 'r') - max_cpus = 1 - for line in f: - m = re.match(r"(?Pprocessor\s*:)\s*" \ - "(?P\d+)", - line) - if not m: - continue - proc_specs = m.groupdict() - if (proc_specs['NUM'] > max_cpus): - max_cpus = proc_specs['NUM'] - return int(max_cpus) + 1 - -def kill_curses(): - curses.endwin() - sys.stdout = os.fdopen(0, 'w', 0) - -def sig_handler(signal, frame): - kill_curses() - process_logs() - clean() - sys.exit(-2) - -def get_rel_spec(rel): - if ("rc" in rel): - m = re.match(r"v*(?P\d+)\.+" \ - "(?P\d+)[.]+" \ - "(?P\d+)[-]+" \ - "\d+rc(?P\d+)\-*", - rel) - else: - m = re.match(r"v*(?P\d+)\.+" \ - "(?P\d+)[.]+" \ - "(?P\d+)[-]+" \ - "(?P\d+)\-*", - rel) - if (not m): - return m - rel_specs = m.groupdict() - return rel_specs - -def krel_same_base(new_rel, rel): - if (int(new_rel['ver']) != int(rel['ver'])): - return False - if (int(new_rel['pat']) != int(rel['pat'])): - return False - if (int(new_rel['ver']) == 3): - return True - if (int(new_rel['ver']) != 2): - return False - if (int(new_rel['sub']) == int(rel['sub'])): - return True - return False - -def krel_base_update(new_rel, rel): - if (not krel_same_base(new_rel, rel)): - return False - if (int(new_rel['sub']) > int(rel['sub'])): - return True - if (int(new_rel['sub']) < int(rel['sub'])): - return False - - # Too lazy to deal with 2.x kernels, - if (not new_rel['is_rc']): - return False - - if (int(new_rel['ext']) <= int(rel['ext'])): - return False - return True - -def krel_base_smaller(new_rel, rel): - if (not krel_same_base(new_rel, rel)): - return False - if (int(new_rel['sub']) > int(rel['sub'])): - return False - if (int(new_rel['sub']) < int(rel['sub'])): - return True - return False - -class kernel_set(): - def __init__(self, stdscr): - self.queue = Queue() - self.releases = [] - self.stdscr = stdscr - self.lock = Lock() - signal.signal(signal.SIGINT, sig_handler) - self.build_jobs = cpu_info_build_jobs() - if (curses.has_colors()): - curses.init_pair(1, - curses.COLOR_GREEN, - curses.COLOR_BLACK) - curses.init_pair(2, - curses.COLOR_CYAN, - curses.COLOR_BLACK) - curses.init_pair(3, - curses.COLOR_RED, - curses.COLOR_BLACK) - curses.init_pair(4, - curses.COLOR_BLUE, - curses.COLOR_BLACK) - def baking(self, rel): - baking_lock.acquire() - releases_baking.append(rel) - baking_lock.release() - def completed(self, rel): - processed_lock.acquire() - releases_processed.insert(rel['idx'], rel) - processed_lock.release() - def set_locale(self): - locale.setlocale(locale.LC_ALL, '') - code = locale.getpreferredencoding() - def refresh(self): - self.lock.acquire() - self.stdscr.refresh() - self.lock.release() - def evaluate_new_rel(self, new_rel): - for rel in self.releases: - if (krel_base_update(new_rel, rel)): - new_rel['idx'] = rel['idx'] - self.releases.remove(rel) - break - if (krel_base_smaller(new_rel, rel)): - return - self.releases.insert(new_rel['idx'], new_rel) - def parse_releases(self): - for dirname, dirnames, filenames in os.walk(modules): - dirnames.sort() - for subdirname in dirnames: - specifics = get_rel_spec(subdirname) - if (not specifics): - continue - rc = False - - ver = specifics['VERSION'] + '.' + \ - specifics['PATCHLEVEL'] - - if ("rc" in subdirname): - rc = True - ver = ver + '-rc' + specifics['EXTRAVERSION'] - else: - ver = ver + '.' + specifics['SUBLEVEL'] - - rel = dict(idx=len(self.releases), - name=subdirname, - full_path=dirname + '/' + - subdirname, - version=ver, - is_rc = rc, - ver=specifics['VERSION'], - pat=specifics['PATCHLEVEL'], - sub=specifics['SUBLEVEL'], - ext=specifics['EXTRAVERSION'], - processed=False, - log='', - status=1234) - self.evaluate_new_rel(rel) - self.refresh() - def setup_screen(self): - for i in range(0, len(self.releases)): - rel = self.releases[i] - self.lock.acquire() - self.stdscr.addstr(rel['idx'], 0, - "%-4d" % (rel['idx']+1)) - if (curses.has_colors()): - self.stdscr.addstr(rel['idx'], 5, - "%-20s" % (rel['version']), - curses.color_pair(4)) - else: - self.stdscr.addstr(rel['idx'], 0, - "%-20s" % (rel['version'])) - self.stdscr.addstr(rel['idx'], 30, "[ ]") - self.stdscr.refresh() - self.lock.release() - def create_threads(self): - for rel in self.releases: - th = Thread(target=process_kernel, args=(0, self)) - th.setDaemon(True) - th.start() - def kick_threads(self): - for rel in self.releases: - self.queue.put(rel) - sleep(1) - def wait_threads(self): - self.queue.join() - def update_status(self, rel, status): - self.lock.acquire() - stat_name = get_status_name(status) - stat_pos = get_stat_pos(status) - if (curses.has_colors()): - stat_color = get_status_color(status) - self.stdscr.addstr(rel['idx'], stat_pos, stat_name, - get_status_color(status)) - else: - self.stdscr.addstr(rel['idx'], stat_pos, stat_name) - rel['processed'] = True - rel['status'] = status - self.stdscr.refresh() - self.lock.release() - -def main(stdscr): - kset = kernel_set(stdscr) - - kset.set_locale() - kset.parse_releases() - kset.setup_screen() - kset.create_threads() - kset.kick_threads() - kset.wait_threads() - kset.refresh() - -if __name__ == "__main__": - if not os.path.exists(modules): - print "%s does not exist" % (modules) - sys.exit(1) - if not os.path.exists(my_cwd + '/Makefile'): - print "%s does not exist" % (my_cwd + '/Makefile') - sys.exit(1) - if os.path.exists(ckmake_log): - os.remove(ckmake_log) - if os.path.exists(ckmake_report): - os.remove(ckmake_report) - if os.path.exists(tmp_path): - rmtree(tmp_path) - os.makedirs(tmp_path) - curses.wrapper(main) - kill_curses() - process_logs() - clean() - sys.exit(ckmake_return) diff --git a/compat/compat-2.6.14.c b/compat/compat-2.6.14.c deleted file mode 100644 index 3de847d..0000000 --- a/compat/compat-2.6.14.c +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2007 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.14. - */ - -#include - -/* 2.6.14 compat code goes here */ - diff --git a/compat/compat-2.6.18.c b/compat/compat-2.6.18.c deleted file mode 100644 index c7961ee..0000000 --- a/compat/compat-2.6.18.c +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2007 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.18. - */ - -#include - -/* 2.6.18 compat code goes here */ - diff --git a/compat/compat-2.6.19.c b/compat/compat-2.6.19.c deleted file mode 100644 index 60c3404..0000000 --- a/compat/compat-2.6.19.c +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2007 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.19. - */ - -#include - -/* 2.6.19 compat code goes here */ - diff --git a/compat/compat-2.6.21.c b/compat/compat-2.6.21.c deleted file mode 100644 index 7cf8861..0000000 --- a/compat/compat-2.6.21.c +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2007 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.21. - */ - -#include - -/* 2.6.21 compat code goes here */ - diff --git a/compat/compat-2.6.22.c b/compat/compat-2.6.22.c deleted file mode 100644 index d4df7b7..0000000 --- a/compat/compat-2.6.22.c +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2007 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.22. - */ - -#include - -/* 2.6.22 compat code goes here */ - diff --git a/compat/compat-2.6.23.c b/compat/compat-2.6.23.c deleted file mode 100644 index bc49e98..0000000 --- a/compat/compat-2.6.23.c +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright 2007 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.23. - */ - -#include - -/* On net/core/dev.c as of 2.6.24 */ -int __dev_addr_delete(struct dev_addr_list **list, int *count, - void *addr, int alen, int glbl) -{ - struct dev_addr_list *da; - - for (; (da = *list) != NULL; list = &da->next) { - if (memcmp(da->da_addr, addr, da->da_addrlen) == 0 && - alen == da->da_addrlen) { - if (glbl) { - int old_glbl = da->da_gusers; - da->da_gusers = 0; - if (old_glbl == 0) - break; - } - if (--da->da_users) - return 0; - - *list = da->next; - kfree(da); - (*count)--; - return 0; - } - } - return -ENOENT; -} -EXPORT_SYMBOL_GPL(__dev_addr_delete); - -/* On net/core/dev.c as of 2.6.24. This is not yet used by mac80211 but - * might as well add it */ -int __dev_addr_add(struct dev_addr_list **list, int *count, - void *addr, int alen, int glbl) -{ - struct dev_addr_list *da; - - for (da = *list; da != NULL; da = da->next) { - if (memcmp(da->da_addr, addr, da->da_addrlen) == 0 && - da->da_addrlen == alen) { - if (glbl) { - int old_glbl = da->da_gusers; - da->da_gusers = 1; - if (old_glbl) - return 0; - } - da->da_users++; - return 0; - } - } - - da = kmalloc(sizeof(*da), GFP_ATOMIC); - if (da == NULL) - return -ENOMEM; - memcpy(da->da_addr, addr, alen); - da->da_addrlen = alen; - da->da_users = 1; - da->da_gusers = glbl ? 1 : 0; - da->next = *list; - *list = da; - (*count)++; - return 0; -} -EXPORT_SYMBOL_GPL(__dev_addr_add); - - -/* Part of net/core/dev_mcast.c as of 2.6.23. This is a slightly different version. - * Since da->da_synced is not part of 2.6.22 we need to take longer route when - * syncing */ - -/** - * dev_mc_sync - Synchronize device's multicast list to another device - * @to: destination device - * @from: source device - * - * Add newly added addresses to the destination device and release - * addresses that have no users left. The source device must be - * locked by netif_tx_lock_bh. - * - * This function is intended to be called from the dev->set_multicast_list - * function of layered software devices. - */ -int dev_mc_sync(struct net_device *to, struct net_device *from) -{ - struct dev_addr_list *da, *next, *da_to; - int err = 0; - - netif_tx_lock_bh(to); - da = from->mc_list; - while (da != NULL) { - int synced = 0; - next = da->next; - da_to = to->mc_list; - /* 2.6.22 does not have da->da_synced so lets take the long route */ - while (da_to != NULL) { - if (memcmp(da_to->da_addr, da->da_addr, da_to->da_addrlen) == 0 && - da->da_addrlen == da_to->da_addrlen) - synced = 1; - break; - } - if (!synced) { - err = __dev_addr_add(&to->mc_list, &to->mc_count, - da->da_addr, da->da_addrlen, 0); - if (err < 0) - break; - da->da_users++; - } else if (da->da_users == 1) { - __dev_addr_delete(&to->mc_list, &to->mc_count, - da->da_addr, da->da_addrlen, 0); - __dev_addr_delete(&from->mc_list, &from->mc_count, - da->da_addr, da->da_addrlen, 0); - } - da = next; - } - if (!err) - __dev_set_rx_mode(to); - netif_tx_unlock_bh(to); - - return err; -} -EXPORT_SYMBOL_GPL(dev_mc_sync); - - -/* Part of net/core/dev_mcast.c as of 2.6.23. This is a slighty different version. - * Since da->da_synced is not part of 2.6.22 we need to take longer route when - * unsyncing */ - -/** - * dev_mc_unsync - Remove synchronized addresses from the destination - * device - * @to: destination device - * @from: source device - * - * Remove all addresses that were added to the destination device by - * dev_mc_sync(). This function is intended to be called from the - * dev->stop function of layered software devices. - */ -void dev_mc_unsync(struct net_device *to, struct net_device *from) -{ - struct dev_addr_list *da, *next, *da_to; - - netif_tx_lock_bh(from); - netif_tx_lock_bh(to); - - da = from->mc_list; - while (da != NULL) { - bool synced = false; - next = da->next; - da_to = to->mc_list; - /* 2.6.22 does not have da->da_synced so lets take the long route */ - while (da_to != NULL) { - if (memcmp(da_to->da_addr, da->da_addr, da_to->da_addrlen) == 0 && - da->da_addrlen == da_to->da_addrlen) - synced = true; - break; - } - if (!synced) { - da = next; - continue; - } - __dev_addr_delete(&to->mc_list, &to->mc_count, - da->da_addr, da->da_addrlen, 0); - __dev_addr_delete(&from->mc_list, &from->mc_count, - da->da_addr, da->da_addrlen, 0); - da = next; - } - __dev_set_rx_mode(to); - - netif_tx_unlock_bh(to); - netif_tx_unlock_bh(from); -} -EXPORT_SYMBOL_GPL(dev_mc_unsync); - -/* Added as of 2.6.23 on net/core/dev.c. Slightly modifed, no dev->set_rx_mode on - * 2.6.22 so ignore that. */ - -/* - * Upload unicast and multicast address lists to device and - * configure RX filtering. When the device doesn't support unicast - * filtering it is put in promiscous mode while unicast addresses - * are present. - */ -void __dev_set_rx_mode(struct net_device *dev) -{ - /* dev_open will call this function so the list will stay sane. */ - if (!(dev->flags&IFF_UP)) - return; - - if (!netif_device_present(dev)) - return; - -/* This needs to be ported to 2.6.22 framework */ -#if 0 - /* Unicast addresses changes may only happen under the rtnl, - * therefore calling __dev_set_promiscuity here is safe. - */ - if (dev->uc_count > 0 && !dev->uc_promisc) { - __dev_set_promiscuity(dev, 1); - dev->uc_promisc = 1; - } else if (dev->uc_count == 0 && dev->uc_promisc) { - __dev_set_promiscuity(dev, -1); - dev->uc_promisc = 0; - } -#endif - - if (dev->set_multicast_list) - dev->set_multicast_list(dev); -} - -/** - * pci_try_set_mwi - enables memory-write-invalidate PCI transaction - * @dev: the PCI device for which MWI is enabled - * - * Enables the Memory-Write-Invalidate transaction in %PCI_COMMAND. - * Callers are not required to check the return value. - * - * RETURNS: An appropriate -ERRNO error value on error, or zero for success. - */ -int pci_try_set_mwi(struct pci_dev *dev) -{ - int rc = 0; -#ifdef HAVE_PCI_SET_MWI - rc = pci_set_mwi(dev); -#endif - return rc; -} -EXPORT_SYMBOL_GPL(pci_try_set_mwi); -#endif - diff --git a/compat/compat-2.6.24.c b/compat/compat-2.6.24.c deleted file mode 100644 index 977db0c..0000000 --- a/compat/compat-2.6.24.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright 2007 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.24. - */ - -#include -#include - -/* - * We simply won't use it though, just declare it for our wrappers and - * for usage with tons of code that makes mention to it. - */ -struct net init_net; -EXPORT_SYMBOL_GPL(init_net); - -/* 2.6.22 and 2.6.23 have eth_header_cache_update defined as extern in include/linux/etherdevice.h - * and actually defined in net/ethernet/eth.c but 2.6.24 exports it. Lets export it here */ - -/** - * eth_header_cache_update - update cache entry - * @hh: destination cache entry - * @dev: network device - * @haddr: new hardware address - * - * Called by Address Resolution module to notify changes in address. - */ -void eth_header_cache_update(struct hh_cache *hh, - struct net_device *dev, - unsigned char *haddr) -{ - memcpy(((u8 *) hh->hh_data) + HH_DATA_OFF(sizeof(struct ethhdr)), - haddr, ETH_ALEN); -} -EXPORT_SYMBOL_GPL(eth_header_cache_update); - -/* 2.6.22 and 2.6.23 have eth_header_cache defined as extern in include/linux/etherdevice.h - * and actually defined in net/ethernet/eth.c but 2.6.24 exports it. Lets export it here */ - -/** - * eth_header_cache - fill cache entry from neighbour - * @neigh: source neighbour - * @hh: destination cache entry - * Create an Ethernet header template from the neighbour. - */ -int eth_header_cache(struct neighbour *neigh, struct hh_cache *hh) -{ - __be16 type = hh->hh_type; - struct ethhdr *eth; - const struct net_device *dev = neigh->dev; - - eth = (struct ethhdr *) - (((u8 *) hh->hh_data) + (HH_DATA_OFF(sizeof(*eth)))); - - if (type == htons(ETH_P_802_3)) - return -1; - - eth->h_proto = type; - memcpy(eth->h_source, dev->dev_addr, ETH_ALEN); - memcpy(eth->h_dest, neigh->ha, ETH_ALEN); - hh->hh_len = ETH_HLEN; - return 0; -} -EXPORT_SYMBOL_GPL(eth_header_cache); - -/* 2.6.22 and 2.6.23 have eth_header() defined as extern in include/linux/etherdevice.h - * and actually defined in net/ethernet/eth.c but 2.6.24 exports it. Lets export it here */ - -/** - * eth_header - create the Ethernet header - * @skb: buffer to alter - * @dev: source device - * @type: Ethernet type field - * @daddr: destination address (NULL leave destination address) - * @saddr: source address (NULL use device source address) - * @len: packet length (<= skb->len) - * - * - * Set the protocol type. For a packet of type ETH_P_802_3 we put the length - * in here instead. It is up to the 802.2 layer to carry protocol information. - */ -int eth_header(struct sk_buff *skb, struct net_device *dev, unsigned short type, - void *daddr, void *saddr, unsigned len) -{ - struct ethhdr *eth = (struct ethhdr *)skb_push(skb, ETH_HLEN); - - if (type != ETH_P_802_3) - eth->h_proto = htons(type); - else - eth->h_proto = htons(len); - - /* - * Set the source hardware address. - */ - - if (!saddr) - saddr = dev->dev_addr; - memcpy(eth->h_source, saddr, dev->addr_len); - - if (daddr) { - memcpy(eth->h_dest, daddr, dev->addr_len); - return ETH_HLEN; - } - - /* - * Anyway, the loopback-device should never use this function... - */ - - if (dev->flags & (IFF_LOOPBACK | IFF_NOARP)) { - memset(eth->h_dest, 0, dev->addr_len); - return ETH_HLEN; - } - - return -ETH_HLEN; -} - -EXPORT_SYMBOL_GPL(eth_header); - -/* 2.6.22 and 2.6.23 have eth_rebuild_header defined as extern in include/linux/etherdevice.h - * and actually defined in net/ethernet/eth.c but 2.6.24 exports it. Lets export it here */ - -/** - * eth_rebuild_header- rebuild the Ethernet MAC header. - * @skb: socket buffer to update - * - * This is called after an ARP or IPV6 ndisc it's resolution on this - * sk_buff. We now let protocol (ARP) fill in the other fields. - * - * This routine CANNOT use cached dst->neigh! - * Really, it is used only when dst->neigh is wrong. - */ -int eth_rebuild_header(struct sk_buff *skb) -{ - struct ethhdr *eth = (struct ethhdr *)skb->data; - struct net_device *dev = skb->dev; - - switch (eth->h_proto) { -#ifdef CONFIG_INET - case __constant_htons(ETH_P_IP): - return arp_find(eth->h_dest, skb); -#endif - default: - printk(KERN_DEBUG - "%s: unable to resolve type %X addresses.\n", - dev->name, (int)eth->h_proto); - - memcpy(eth->h_source, dev->dev_addr, ETH_ALEN); - break; - } - - return 0; -} -EXPORT_SYMBOL_GPL(eth_rebuild_header); - diff --git a/compat/compat-2.6.25.c b/compat/compat-2.6.25.c deleted file mode 100644 index 1550024..0000000 --- a/compat/compat-2.6.25.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2007-2012 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.25. - */ - -#include -#include - -/* - * To backport b718989d correctly pcibios_enable_device() - * is required but we don't have access to it on modules - * as its an architecture specific routine that is not - * exported and as such only core kernel code has access - * to it. We implement a sloppy work around for backporting - * this. - */ -int pci_enable_device_mem(struct pci_dev *dev) -{ - int bars = pci_select_bars(dev, IORESOURCE_MEM); - - return pci_enable_device_bars(dev, bars); -} -EXPORT_SYMBOL_GPL(pci_enable_device_mem); - -/** - * The following things are out of ./lib/vsprintf.c - * The new iwlwifi driver is using them. - */ - -/** - * strict_strtoul - convert a string to an unsigned long strictly - * @cp: The string to be converted - * @base: The number base to use - * @res: The converted result value - * - * strict_strtoul converts a string to an unsigned long only if the - * string is really an unsigned long string, any string containing - * any invalid char at the tail will be rejected and -EINVAL is returned, - * only a newline char at the tail is acceptible because people generally - * change a module parameter in the following way: - * - * echo 1024 > /sys/module/e1000/parameters/copybreak - * - * echo will append a newline to the tail. - * - * It returns 0 if conversion is successful and *res is set to the converted - * value, otherwise it returns -EINVAL and *res is set to 0. - * - * simple_strtoul just ignores the successive invalid characters and - * return the converted value of prefix part of the string. - */ -int strict_strtoul(const char *cp, unsigned int base, unsigned long *res); - -/** - * strict_strtol - convert a string to a long strictly - * @cp: The string to be converted - * @base: The number base to use - * @res: The converted result value - * - * strict_strtol is similiar to strict_strtoul, but it allows the first - * character of a string is '-'. - * - * It returns 0 if conversion is successful and *res is set to the converted - * value, otherwise it returns -EINVAL and *res is set to 0. - */ -int strict_strtol(const char *cp, unsigned int base, long *res); - -#define define_strict_strtoux(type, valtype) \ -int strict_strtou##type(const char *cp, unsigned int base, valtype *res)\ -{ \ - char *tail; \ - valtype val; \ - size_t len; \ - \ - *res = 0; \ - len = strlen(cp); \ - if (len == 0) \ - return -EINVAL; \ - \ - val = simple_strtou##type(cp, &tail, base); \ - if ((*tail == '\0') || \ - ((len == (size_t)(tail - cp) + 1) && (*tail == '\n'))) {\ - *res = val; \ - return 0; \ - } \ - \ - return -EINVAL; \ -} \ - -#define define_strict_strtox(type, valtype) \ -int strict_strto##type(const char *cp, unsigned int base, valtype *res) \ -{ \ - int ret; \ - if (*cp == '-') { \ - ret = strict_strtou##type(cp+1, base, res); \ - if (!ret) \ - *res = -(*res); \ - } else \ - ret = strict_strtou##type(cp, base, res); \ - \ - return ret; \ -} \ - -define_strict_strtoux(l, unsigned long) -define_strict_strtox(l, long) - -EXPORT_SYMBOL_GPL(strict_strtoul); -EXPORT_SYMBOL_GPL(strict_strtol); - diff --git a/compat/compat-2.6.26.c b/compat/compat-2.6.26.c deleted file mode 100644 index f471506..0000000 --- a/compat/compat-2.6.26.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2007-2010 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.26. - * - * Copyright holders from ported work: - * - * Copyright (c) 2002-2003 Patrick Mochel - * Copyright (c) 2006-2007 Greg Kroah-Hartman - * Copyright (c) 2006-2007 Novell Inc. - */ - -#include - -/* 2.6.24 does not have the struct kobject with a name */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) - -/** - * kobject_set_name_vargs - Set the name of an kobject - * @kobj: struct kobject to set the name of - * @fmt: format string used to build the name - * @vargs: vargs to format the string. - */ -static -int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, - va_list vargs) -{ - const char *old_name = kobj->name; - char *s; - - if (kobj->name && !fmt) - return 0; - - kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs); - if (!kobj->name) - return -ENOMEM; - - /* ewww... some of these buggers have '/' in the name ... */ - while ((s = strchr(kobj->name, '/'))) - s[0] = '!'; - - kfree(old_name); - return 0; -} -#else -static -int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, - va_list vargs) -{ - struct device *dev; - unsigned int len; - va_list aq; - - dev = container_of(kobj, struct device, kobj); - - va_copy(aq, vargs); - len = vsnprintf(NULL, 0, fmt, aq); - va_end(aq); - - len = len < BUS_ID_SIZE ? (len + 1) : BUS_ID_SIZE; - - vsnprintf(dev->bus_id, len, fmt, vargs); - return 0; -} -#endif - -/** - * dev_set_name - set a device name - * @dev: device - * @fmt: format string for the device's name - */ -int dev_set_name(struct device *dev, const char *fmt, ...) -{ - va_list vargs; - int err; - - va_start(vargs, fmt); - err = kobject_set_name_vargs(&dev->kobj, fmt, vargs); - va_end(vargs); - return err; -} -EXPORT_SYMBOL_GPL(dev_set_name); - diff --git a/compat/compat-2.6.27.c b/compat/compat-2.6.27.c deleted file mode 100644 index 084bdf6..0000000 --- a/compat/compat-2.6.27.c +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright 2007 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.27 - */ - -#include -#include -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) -#include -#include -#include -#include -#endif - -/* rfkill notification chain */ -#define RFKILL_STATE_CHANGED 0x0001 /* state of a normal rfkill - switch has changed */ - -/* - * e5899e1b7d73e67de758a32174a859cc2586c0b9 made pci_pme_capable() external, - * it was defined internally, some drivers want access to this information. - * - * Unfortunately the old kernels do not have ->pm_cap or ->pme_support so - * we have to call the PCI routines directly. - */ - -/** - * pci_pme_capable - check the capability of PCI device to generate PME# - * @dev: PCI device to handle. - * @state: PCI state from which device will issue PME#. - * - * This is the backport code for older kernels for compat-drivers, we read stuff - * from the initialization stuff from pci_pm_init(). - */ -bool pci_pme_capable(struct pci_dev *dev, pci_power_t state) -{ - int pm; - u16 pmc = 0; - u16 pme_support; /* as from the pci dev */ - /* find PCI PM capability in list */ - pm = pci_find_capability(dev, PCI_CAP_ID_PM); - if (!pm) - return false; - - if ((pmc & PCI_PM_CAP_VER_MASK) > 3) { - dev_err(&dev->dev, "unsupported PM cap regs version (%u)\n", - pmc & PCI_PM_CAP_VER_MASK); - return false; - } - - pmc &= PCI_PM_CAP_PME_MASK; - - if (!pmc) - return false; - - pme_support = pmc >> PCI_PM_CAP_PME_SHIFT; - - /* Check device's ability to generate PME# */ - - return !!(pme_support & (1 << state)); -} -EXPORT_SYMBOL_GPL(pci_pme_capable); - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) -/** - * mmc_align_data_size - pads a transfer size to a more optimal value - * @card: the MMC card associated with the data transfer - * @sz: original transfer size - * - * Pads the original data size with a number of extra bytes in - * order to avoid controller bugs and/or performance hits - * (e.g. some controllers revert to PIO for certain sizes). - * - * Returns the improved size, which might be unmodified. - * - * Note that this function is only relevant when issuing a - * single scatter gather entry. - */ -unsigned int mmc_align_data_size(struct mmc_card *card, unsigned int sz) -{ - /* - * FIXME: We don't have a system for the controller to tell - * the core about its problems yet, so for now we just 32-bit - * align the size. - */ - sz = ((sz + 3) / 4) * 4; - - return sz; -} -EXPORT_SYMBOL_GPL(mmc_align_data_size); - -/* - * Calculate the maximum byte mode transfer size - */ -static inline unsigned int sdio_max_byte_size(struct sdio_func *func) -{ - unsigned int mval = (unsigned int) min(func->card->host->max_seg_size, - func->card->host->max_blk_size); - mval = min(mval, func->max_blksize); - return min(mval, 512u); /* maximum size for byte mode */ -} - -/** - * sdio_align_size - pads a transfer size to a more optimal value - * @func: SDIO function - * @sz: original transfer size - * - * Pads the original data size with a number of extra bytes in - * order to avoid controller bugs and/or performance hits - * (e.g. some controllers revert to PIO for certain sizes). - * - * If possible, it will also adjust the size so that it can be - * handled in just a single request. - * - * Returns the improved size, which might be unmodified. - */ -unsigned int sdio_align_size(struct sdio_func *func, unsigned int sz) -{ - unsigned int orig_sz; - unsigned int blk_sz, byte_sz; - unsigned chunk_sz; - - orig_sz = sz; - - /* - * Do a first check with the controller, in case it - * wants to increase the size up to a point where it - * might need more than one block. - */ - sz = mmc_align_data_size(func->card, sz); - - /* - * If we can still do this with just a byte transfer, then - * we're done. - */ - if (sz <= sdio_max_byte_size(func)) - return sz; - - if (func->card->cccr.multi_block) { - /* - * Check if the transfer is already block aligned - */ - if ((sz % func->cur_blksize) == 0) - return sz; - - /* - * Realign it so that it can be done with one request, - * and recheck if the controller still likes it. - */ - blk_sz = ((sz + func->cur_blksize - 1) / - func->cur_blksize) * func->cur_blksize; - blk_sz = mmc_align_data_size(func->card, blk_sz); - - /* - * This value is only good if it is still just - * one request. - */ - if ((blk_sz % func->cur_blksize) == 0) - return blk_sz; - - /* - * We failed to do one request, but at least try to - * pad the remainder properly. - */ - byte_sz = mmc_align_data_size(func->card, - sz % func->cur_blksize); - if (byte_sz <= sdio_max_byte_size(func)) { - blk_sz = sz / func->cur_blksize; - return blk_sz * func->cur_blksize + byte_sz; - } - } else { - /* - * We need multiple requests, so first check that the - * controller can handle the chunk size; - */ - chunk_sz = mmc_align_data_size(func->card, - sdio_max_byte_size(func)); - if (chunk_sz == sdio_max_byte_size(func)) { - /* - * Fix up the size of the remainder (if any) - */ - byte_sz = orig_sz % chunk_sz; - if (byte_sz) { - byte_sz = mmc_align_data_size(func->card, - byte_sz); - } - - return (orig_sz / chunk_sz) * chunk_sz + byte_sz; - } - } - - /* - * The controller is simply incapable of transferring the size - * we want in decent manner, so just return the original size. - */ - return orig_sz; -} -EXPORT_SYMBOL_GPL(sdio_align_size); -#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) */ - -#ifdef CONFIG_DEBUG_FS -/* - * Backport of debugfs_remove_recursive() without using the internals globals - * which are used by the kernel's version with: - * simple_release_fs(&debugfs_mount, &debugfs_mount_count); - */ -void debugfs_remove_recursive(struct dentry *dentry) -{ - struct dentry *last = NULL; - - /* Sanity checks */ - if (!dentry || !dentry->d_parent || !dentry->d_parent->d_inode) - return; - - while (dentry != last) { - struct dentry *child = dentry; - - /* Find a child without children */ - while (!list_empty(&child->d_subdirs)) - child = list_entry(child->d_subdirs.next, - struct dentry, - d_u.d_child); - - /* Bail out if we already tried to remove that entry */ - if (child == last) - return; - - last = child; - debugfs_remove(child); - } -} -EXPORT_SYMBOL_GPL(debugfs_remove_recursive); -#endif /* CONFIG_DEBUG_FS */ - diff --git a/compat/compat-2.6.28.c b/compat/compat-2.6.28.c deleted file mode 100644 index 0ae8f46..0000000 --- a/compat/compat-2.6.28.c +++ /dev/null @@ -1,463 +0,0 @@ -/* - * Copyright 2007 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.28. - */ - -#include -#include -#include -#include - -/* 2.6.28 compat code goes here */ - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)) -#if defined(CONFIG_USB) || defined(CONFIG_USB_MODULE) -/* - * Compat-wireless notes for USB backport stuff: - * - * urb->reject exists on 2.6.27, the poison/unpoison helpers - * did not though. The anchor poison does not exist so we cannot use them. - * - * USB anchor poising seems to exist to prevent future driver sumbissions - * of usb_anchor_urb() to an anchor marked as poisoned. For older kernels - * we cannot use that, so new usb_anchor_urb()s will be anchored. The down - * side to this should be submission of URBs will continue being anchored - * on an anchor instead of having them being rejected immediately when the - * driver realized we needed to stop. For ar9170 we poison URBs upon the - * ar9170 mac80211 stop callback(), don't think this should be so bad. - * It mean there is period of time in older kernels for which we continue - * to anchor new URBs to a known stopped anchor. We have two anchors - * (TX, and RX) - */ - -#if 0 -/** - * usb_poison_urb - reliably kill a transfer and prevent further use of an URB - * @urb: pointer to URB describing a previously submitted request, - * may be NULL - * - * This routine cancels an in-progress request. It is guaranteed that - * upon return all completion handlers will have finished and the URB - * will be totally idle and cannot be reused. These features make - * this an ideal way to stop I/O in a disconnect() callback. - * If the request has not already finished or been unlinked - * the completion handler will see urb->status == -ENOENT. - * - * After and while the routine runs, attempts to resubmit the URB will fail - * with error -EPERM. Thus even if the URB's completion handler always - * tries to resubmit, it will not succeed and the URB will become idle. - * - * This routine may not be used in an interrupt context (such as a bottom - * half or a completion handler), or when holding a spinlock, or in other - * situations where the caller can't schedule(). - * - * This routine should not be called by a driver after its disconnect - * method has returned. - */ -void usb_poison_urb(struct urb *urb) -{ - might_sleep(); - if (!(urb && urb->dev && urb->ep)) - return; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) - spin_lock_irq(&usb_reject_lock); -#endif - ++urb->reject; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) - spin_unlock_irq(&usb_reject_lock); -#endif - /* - * XXX: usb_hcd_unlink_urb() needs backporting... this is defined - * on usb hcd.c but urb.c gets access to it. That is, older kernels - * have usb_hcd_unlink_urb() but its not exported, nor can we - * re-implement it exactly. This essentially dequeues the urb from - * hw, we need to figure out a way to backport this. - */ - //usb_hcd_unlink_urb(urb, -ENOENT); - - wait_event(usb_kill_urb_queue, atomic_read(&urb->use_count) == 0); -} -EXPORT_SYMBOL_GPL(usb_poison_urb); -#endif -#endif /* CONFIG_USB */ - -#if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE) - -#include -struct pcmcia_cfg_mem { - tuple_t tuple; - cisparse_t parse; - u8 buf[256]; - cistpl_cftable_entry_t dflt; -}; -/** - * pcmcia_loop_config() - loop over configuration options - * @p_dev: the struct pcmcia_device which we need to loop for. - * @conf_check: function to call for each configuration option. - * It gets passed the struct pcmcia_device, the CIS data - * describing the configuration option, and private data - * being passed to pcmcia_loop_config() - * @priv_data: private data to be passed to the conf_check function. - * - * pcmcia_loop_config() loops over all configuration options, and calls - * the driver-specific conf_check() for each one, checking whether - * it is a valid one. Returns 0 on success or errorcode otherwise. - */ -int pcmcia_loop_config(struct pcmcia_device *p_dev, - int (*conf_check) (struct pcmcia_device *p_dev, - cistpl_cftable_entry_t *cfg, - cistpl_cftable_entry_t *dflt, - unsigned int vcc, - void *priv_data), - void *priv_data) -{ - struct pcmcia_cfg_mem *cfg_mem; - - tuple_t *tuple; - int ret; - unsigned int vcc; - - cfg_mem = kzalloc(sizeof(struct pcmcia_cfg_mem), GFP_KERNEL); - if (cfg_mem == NULL) - return -ENOMEM; - - /* get the current Vcc setting */ - vcc = p_dev->socket->socket.Vcc; - - tuple = &cfg_mem->tuple; - tuple->TupleData = cfg_mem->buf; - tuple->TupleDataMax = 255; - tuple->TupleOffset = 0; - tuple->DesiredTuple = CISTPL_CFTABLE_ENTRY; - tuple->Attributes = 0; - - ret = pcmcia_get_first_tuple(p_dev, tuple); - while (!ret) { - cistpl_cftable_entry_t *cfg = &cfg_mem->parse.cftable_entry; - - if (pcmcia_get_tuple_data(p_dev, tuple)) - goto next_entry; - - if (pcmcia_parse_tuple(tuple, &cfg_mem->parse)) - goto next_entry; - - /* default values */ - p_dev->conf.ConfigIndex = cfg->index; - if (cfg->flags & CISTPL_CFTABLE_DEFAULT) - cfg_mem->dflt = *cfg; - - ret = conf_check(p_dev, cfg, &cfg_mem->dflt, vcc, priv_data); - if (!ret) - break; - -next_entry: - ret = pcmcia_get_next_tuple(p_dev, tuple); - } - - return ret; -} -EXPORT_SYMBOL_GPL(pcmcia_loop_config); - -#endif /* CONFIG_PCMCIA */ - -#if defined(CONFIG_USB) || defined(CONFIG_USB_MODULE) - -void usb_unpoison_urb(struct urb *urb) -{ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) - unsigned long flags; -#endif - - if (!urb) - return; - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) - spin_lock_irqsave(&usb_reject_lock, flags); -#endif - --urb->reject; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) - spin_unlock_irqrestore(&usb_reject_lock, flags); -#endif -} -EXPORT_SYMBOL_GPL(usb_unpoison_urb); - - -#if 0 -/** - * usb_poison_anchored_urbs - cease all traffic from an anchor - * @anchor: anchor the requests are bound to - * - * this allows all outstanding URBs to be poisoned starting - * from the back of the queue. Newly added URBs will also be - * poisoned - * - * This routine should not be called by a driver after its disconnect - * method has returned. - */ -void usb_poison_anchored_urbs(struct usb_anchor *anchor) -{ - struct urb *victim; - - spin_lock_irq(&anchor->lock); - // anchor->poisoned = 1; /* XXX: Cannot backport */ - while (!list_empty(&anchor->urb_list)) { - victim = list_entry(anchor->urb_list.prev, struct urb, - anchor_list); - /* we must make sure the URB isn't freed before we kill it*/ - usb_get_urb(victim); - spin_unlock_irq(&anchor->lock); - /* this will unanchor the URB */ - usb_poison_urb(victim); - usb_put_urb(victim); - spin_lock_irq(&anchor->lock); - } - spin_unlock_irq(&anchor->lock); -} -EXPORT_SYMBOL_GPL(usb_poison_anchored_urbs); -#endif - -/** - * usb_anchor_empty - is an anchor empty - * @anchor: the anchor you want to query - * - * returns 1 if the anchor has no urbs associated with it - */ -int usb_anchor_empty(struct usb_anchor *anchor) -{ - return list_empty(&anchor->urb_list); -} - -EXPORT_SYMBOL_GPL(usb_anchor_empty); -#endif /* CONFIG_USB */ -#endif - -void __iomem *pci_ioremap_bar(struct pci_dev *pdev, int bar) -{ - /* - * Make sure the BAR is actually a memory resource, not an IO resource - */ - if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM)) { - WARN_ON(1); - return NULL; - } - return ioremap_nocache(pci_resource_start(pdev, bar), - pci_resource_len(pdev, bar)); -} -EXPORT_SYMBOL_GPL(pci_ioremap_bar); - -static unsigned long round_jiffies_common(unsigned long j, int cpu, - bool force_up) -{ - int rem; - unsigned long original = j; - - /* - * We don't want all cpus firing their timers at once hitting the - * same lock or cachelines, so we skew each extra cpu with an extra - * 3 jiffies. This 3 jiffies came originally from the mm/ code which - * already did this. - * The skew is done by adding 3*cpunr, then round, then subtract this - * extra offset again. - */ - j += cpu * 3; - - rem = j % HZ; - - /* - * If the target jiffie is just after a whole second (which can happen - * due to delays of the timer irq, long irq off times etc etc) then - * we should round down to the whole second, not up. Use 1/4th second - * as cutoff for this rounding as an extreme upper bound for this. - * But never round down if @force_up is set. - */ - if (rem < HZ/4 && !force_up) /* round down */ - j = j - rem; - else /* round up */ - j = j - rem + HZ; - - /* now that we have rounded, subtract the extra skew again */ - j -= cpu * 3; - - if (j <= jiffies) /* rounding ate our timeout entirely; */ - return original; - return j; -} - -/** - * round_jiffies_up - function to round jiffies up to a full second - * @j: the time in (absolute) jiffies that should be rounded - * - * This is the same as round_jiffies() except that it will never - * round down. This is useful for timeouts for which the exact time - * of firing does not matter too much, as long as they don't fire too - * early. - */ -unsigned long round_jiffies_up(unsigned long j) -{ - return round_jiffies_common(j, raw_smp_processor_id(), true); -} -EXPORT_SYMBOL_GPL(round_jiffies_up); - -void v2_6_28_skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off, - int size) -{ - skb_fill_page_desc(skb, i, page, off, size); - skb->len += size; - skb->data_len += size; - skb->truesize += size; -} -EXPORT_SYMBOL_GPL(v2_6_28_skb_add_rx_frag); - -void tty_write_unlock(struct tty_struct *tty) -{ - mutex_unlock(&tty->atomic_write_lock); - wake_up_interruptible_poll(&tty->write_wait, POLLOUT); -} - -int tty_write_lock(struct tty_struct *tty, int ndelay) -{ - if (!mutex_trylock(&tty->atomic_write_lock)) { - if (ndelay) - return -EAGAIN; - if (mutex_lock_interruptible(&tty->atomic_write_lock)) - return -ERESTARTSYS; - } - return 0; -} - -/** - * send_prio_char - send priority character - * - * Send a high priority character to the tty even if stopped - * - * Locking: none for xchar method, write ordering for write method. - */ - -static int send_prio_char(struct tty_struct *tty, char ch) -{ - int was_stopped = tty->stopped; - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) - if (tty->ops->send_xchar) { - tty->ops->send_xchar(tty, ch); -#else - if (tty->driver->send_xchar) { - tty->driver->send_xchar(tty, ch); -#endif - return 0; - } - - if (tty_write_lock(tty, 0) < 0) - return -ERESTARTSYS; - - if (was_stopped) - start_tty(tty); -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) - tty->ops->write(tty, &ch, 1); -#else - tty->driver->write(tty, &ch, 1); -#endif - if (was_stopped) - stop_tty(tty); - tty_write_unlock(tty); - return 0; -} - -int n_tty_ioctl_helper(struct tty_struct *tty, struct file *file, - unsigned int cmd, unsigned long arg) -{ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) - unsigned long flags; -#endif - int retval; - - switch (cmd) { - case TCXONC: - retval = tty_check_change(tty); - if (retval) - return retval; - switch (arg) { - case TCOOFF: - if (!tty->flow_stopped) { - tty->flow_stopped = 1; - stop_tty(tty); - } - break; - case TCOON: - if (tty->flow_stopped) { - tty->flow_stopped = 0; - start_tty(tty); - } - break; - case TCIOFF: - if (STOP_CHAR(tty) != __DISABLED_CHAR) - return send_prio_char(tty, STOP_CHAR(tty)); - break; - case TCION: - if (START_CHAR(tty) != __DISABLED_CHAR) - return send_prio_char(tty, START_CHAR(tty)); - break; - default: - return -EINVAL; - } - return 0; - case TCFLSH: - return tty_perform_flush(tty, arg); - case TIOCPKT: - { - int pktmode; - - if (tty->driver->type != TTY_DRIVER_TYPE_PTY || - tty->driver->subtype != PTY_TYPE_MASTER) - return -ENOTTY; - if (get_user(pktmode, (int __user *) arg)) - return -EFAULT; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) - spin_lock_irqsave(&tty->ctrl_lock, flags); -#endif - if (pktmode) { - if (!tty->packet) { - tty->packet = 1; - tty->link->ctrl_status = 0; - } - } else - tty->packet = 0; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) - spin_unlock_irqrestore(&tty->ctrl_lock, flags); -#endif - return 0; - } - default: - /* Try the mode commands */ - return tty_mode_ioctl(tty, file, cmd, arg); - } -} -EXPORT_SYMBOL_GPL(n_tty_ioctl_helper); - -/** - * pci_wake_from_d3 - enable/disable device to wake up from D3_hot or D3_cold - * @dev: PCI device to prepare - * @enable: True to enable wake-up event generation; false to disable - * - * Many drivers want the device to wake up the system from D3_hot or D3_cold - * and this function allows them to set that up cleanly - pci_enable_wake() - * should not be called twice in a row to enable wake-up due to PCI PM vs ACPI - * ordering constraints. - * - * This function only returns error code if the device is not capable of - * generating PME# from both D3_hot and D3_cold, and the platform is unable to - * enable wake-up power for it. - */ -int pci_wake_from_d3(struct pci_dev *dev, bool enable) -{ - return pci_pme_capable(dev, PCI_D3cold) ? - pci_enable_wake(dev, PCI_D3cold, enable) : - pci_enable_wake(dev, PCI_D3hot, enable); -} -EXPORT_SYMBOL_GPL(pci_wake_from_d3); - diff --git a/compat/compat-2.6.29.c b/compat/compat-2.6.29.c deleted file mode 100644 index 1beb718..0000000 --- a/compat/compat-2.6.29.c +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2007-2010 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.29. - */ - -#include -#include -#include - -/* - * If you don't see your net_device_ops implemented on - * netdev_attach_ops() then you are shit out of luck and - * you must do the nasty ifdef magic, unless you figure - * out a way to squeze your hacks into this routine :) - */ -void netdev_attach_ops(struct net_device *dev, - const struct net_device_ops *ops) -{ - dev->open = ops->ndo_open; - dev->init = ops->ndo_init; - dev->stop = ops->ndo_stop; - dev->hard_start_xmit = ops->ndo_start_xmit; - dev->change_rx_flags = ops->ndo_change_rx_flags; - dev->set_multicast_list = ops->ndo_set_multicast_list; - dev->validate_addr = ops->ndo_validate_addr; - dev->do_ioctl = ops->ndo_do_ioctl; - dev->set_config = ops->ndo_set_config; - dev->change_mtu = ops->ndo_change_mtu; - dev->set_mac_address = ops->ndo_set_mac_address; - dev->tx_timeout = ops->ndo_tx_timeout; - if (ops->ndo_get_stats) - dev->get_stats = ops->ndo_get_stats; - dev->vlan_rx_register = ops->ndo_vlan_rx_register; - dev->vlan_rx_add_vid = ops->ndo_vlan_rx_add_vid; - dev->vlan_rx_kill_vid = ops->ndo_vlan_rx_kill_vid; -#ifdef CONFIG_NET_POLL_CONTROLLER - dev->poll_controller = ops->ndo_poll_controller; -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) - dev->select_queue = ops->ndo_select_queue; -#endif -} -EXPORT_SYMBOL_GPL(netdev_attach_ops); - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)) -#if defined(CONFIG_USB) || defined(CONFIG_USB_MODULE) -/** - * usb_unpoison_anchored_urbs - let an anchor be used successfully again - * @anchor: anchor the requests are bound to - * - * Reverses the effect of usb_poison_anchored_urbs - * the anchor can be used normally after it returns - */ -void usb_unpoison_anchored_urbs(struct usb_anchor *anchor) -{ - unsigned long flags; - struct urb *lazarus; - - spin_lock_irqsave(&anchor->lock, flags); - list_for_each_entry(lazarus, &anchor->urb_list, anchor_list) { - usb_unpoison_urb(lazarus); - } - //anchor->poisoned = 0; /* XXX: cannot backport */ - spin_unlock_irqrestore(&anchor->lock, flags); -} -EXPORT_SYMBOL_GPL(usb_unpoison_anchored_urbs); -#endif /* CONFIG_USB */ -#endif - -/** - * eth_mac_addr - set new Ethernet hardware address - * @dev: network device - * @p: socket address - * Change hardware address of device. - * - * This doesn't change hardware matching, so needs to be overridden - * for most real devices. - */ -int eth_mac_addr(struct net_device *dev, void *p) -{ - struct sockaddr *addr = p; - - if (netif_running(dev)) - return -EBUSY; - if (!is_valid_ether_addr(addr->sa_data)) - return -EADDRNOTAVAIL; - memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN); - return 0; -} -EXPORT_SYMBOL_GPL(eth_mac_addr); - -/** - * eth_change_mtu - set new MTU size - * @dev: network device - * @new_mtu: new Maximum Transfer Unit - * - * Allow changing MTU size. Needs to be overridden for devices - * supporting jumbo frames. - */ -int eth_change_mtu(struct net_device *dev, int new_mtu) -{ - if (new_mtu < 68 || new_mtu > ETH_DATA_LEN) - return -EINVAL; - dev->mtu = new_mtu; - return 0; -} -EXPORT_SYMBOL_GPL(eth_change_mtu); - -int eth_validate_addr(struct net_device *dev) -{ - if (!is_valid_ether_addr(dev->dev_addr)) - return -EADDRNOTAVAIL; - - return 0; -} -EXPORT_SYMBOL_GPL(eth_validate_addr); -/* Source: net/ethernet/eth.c */ - -#define NETREG_DUMMY 5 -/** - * init_dummy_netdev - init a dummy network device for NAPI - * @dev: device to init - * - * This takes a network device structure and initialize the minimum - * amount of fields so it can be used to schedule NAPI polls without - * registering a full blown interface. This is to be used by drivers - * that need to tie several hardware interfaces to a single NAPI - * poll scheduler due to HW limitations. - */ -int init_dummy_netdev(struct net_device *dev) -{ - /* Clear everything. Note we don't initialize spinlocks - * are they aren't supposed to be taken by any of the - * NAPI code and this dummy netdev is supposed to be - * only ever used for NAPI polls - */ - memset(dev, 0, sizeof(struct net_device)); - - /* make sure we BUG if trying to hit standard - * register/unregister code path - */ - dev->reg_state = NETREG_DUMMY; - - /* initialize the ref count */ - atomic_set(&dev->refcnt, 1); - -#ifdef CONFIG_NETPOLL - /* NAPI wants this */ - INIT_LIST_HEAD(&dev->napi_list); -#endif - - /* a dummy interface is started by default */ - set_bit(__LINK_STATE_PRESENT, &dev->state); - set_bit(__LINK_STATE_START, &dev->state); - - return 0; -} -EXPORT_SYMBOL_GPL(init_dummy_netdev); -/* Source: net/core/dev.c */ - diff --git a/compat/compat-2.6.32.c b/compat/compat-2.6.32.c deleted file mode 100644 index b5a66a8..0000000 --- a/compat/compat-2.6.32.c +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Copyright 2007 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.32. - */ - -#include -#include - -int __dev_addr_add(struct dev_addr_list **list, int *count, - void *addr, int alen, int glbl) -{ - struct dev_addr_list *da; - - for (da = *list; da != NULL; da = da->next) { - if (memcmp(da->da_addr, addr, da->da_addrlen) == 0 && - da->da_addrlen == alen) { - if (glbl) { - int old_glbl = da->da_gusers; - da->da_gusers = 1; - if (old_glbl) - return 0; - } - da->da_users++; - return 0; - } - } - - da = kzalloc(sizeof(*da), GFP_ATOMIC); - if (da == NULL) - return -ENOMEM; - memcpy(da->da_addr, addr, alen); - da->da_addrlen = alen; - da->da_users = 1; - da->da_gusers = glbl ? 1 : 0; - da->next = *list; - *list = da; - (*count)++; - return 0; -} - -int __dev_addr_delete(struct dev_addr_list **list, int *count, - void *addr, int alen, int glbl) -{ - struct dev_addr_list *da; - - for (; (da = *list) != NULL; list = &da->next) { - if (memcmp(da->da_addr, addr, da->da_addrlen) == 0 && - alen == da->da_addrlen) { - if (glbl) { - int old_glbl = da->da_gusers; - da->da_gusers = 0; - if (old_glbl == 0) - break; - } - if (--da->da_users) - return 0; - - *list = da->next; - kfree(da); - (*count)--; - return 0; - } - } - return -ENOENT; -} - -int __dev_addr_sync(struct dev_addr_list **to, int *to_count, - struct dev_addr_list **from, int *from_count) -{ - struct dev_addr_list *da, *next; - int err = 0; - - da = *from; - while (da != NULL) { - next = da->next; - if (!da->da_synced) { - err = __dev_addr_add(to, to_count, - da->da_addr, da->da_addrlen, 0); - if (err < 0) - break; - da->da_synced = 1; - da->da_users++; - } else if (da->da_users == 1) { - __dev_addr_delete(to, to_count, - da->da_addr, da->da_addrlen, 0); - __dev_addr_delete(from, from_count, - da->da_addr, da->da_addrlen, 0); - } - da = next; - } - return err; -} -EXPORT_SYMBOL_GPL(__dev_addr_sync); - -void __dev_addr_unsync(struct dev_addr_list **to, int *to_count, - struct dev_addr_list **from, int *from_count) -{ - struct dev_addr_list *da, *next; - - da = *from; - while (da != NULL) { - next = da->next; - if (da->da_synced) { - __dev_addr_delete(to, to_count, - da->da_addr, da->da_addrlen, 0); - da->da_synced = 0; - __dev_addr_delete(from, from_count, - da->da_addr, da->da_addrlen, 0); - } - da = next; - } -} -EXPORT_SYMBOL_GPL(__dev_addr_unsync); - -/* - * Nonzero if YEAR is a leap year (every 4 years, - * except every 100th isn't, and every 400th is). - */ -static int __isleap(long year) -{ - return (year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0); -} - -/* do a mathdiv for long type */ -static long math_div(long a, long b) -{ - return a / b - (a % b < 0); -} - -/* How many leap years between y1 and y2, y1 must less or equal to y2 */ -static long leaps_between(long y1, long y2) -{ - long leaps1 = math_div(y1 - 1, 4) - math_div(y1 - 1, 100) - + math_div(y1 - 1, 400); - long leaps2 = math_div(y2 - 1, 4) - math_div(y2 - 1, 100) - + math_div(y2 - 1, 400); - return leaps2 - leaps1; -} - -/* How many days come before each month (0-12). */ -static const unsigned short __mon_yday[2][13] = { - /* Normal years. */ - {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}, - /* Leap years. */ - {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366} -}; - -#define SECS_PER_HOUR (60 * 60) -#define SECS_PER_DAY (SECS_PER_HOUR * 24) - -/** - * time_to_tm - converts the calendar time to local broken-down time - * - * @totalsecs the number of seconds elapsed since 00:00:00 on January 1, 1970, - * Coordinated Universal Time (UTC). - * @offset offset seconds adding to totalsecs. - * @result pointer to struct tm variable to receive broken-down time - */ -void time_to_tm(time_t totalsecs, int offset, struct tm *result) -{ - long days, rem, y; - const unsigned short *ip; - - days = totalsecs / SECS_PER_DAY; - rem = totalsecs % SECS_PER_DAY; - rem += offset; - while (rem < 0) { - rem += SECS_PER_DAY; - --days; - } - while (rem >= SECS_PER_DAY) { - rem -= SECS_PER_DAY; - ++days; - } - - result->tm_hour = rem / SECS_PER_HOUR; - rem %= SECS_PER_HOUR; - result->tm_min = rem / 60; - result->tm_sec = rem % 60; - - /* January 1, 1970 was a Thursday. */ - result->tm_wday = (4 + days) % 7; - if (result->tm_wday < 0) - result->tm_wday += 7; - - y = 1970; - - while (days < 0 || days >= (__isleap(y) ? 366 : 365)) { - /* Guess a corrected year, assuming 365 days per year. */ - long yg = y + math_div(days, 365); - - /* Adjust DAYS and Y to match the guessed year. */ - days -= (yg - y) * 365 + leaps_between(y, yg); - y = yg; - } - - result->tm_year = y - 1900; - - result->tm_yday = days; - - ip = __mon_yday[__isleap(y)]; - for (y = 11; days < ip[y]; y--) - continue; - days -= ip[y]; - - result->tm_mon = y; - result->tm_mday = days + 1; -} -EXPORT_SYMBOL_GPL(time_to_tm); -/* source: kernel/time/timeconv.c*/ - diff --git a/compat/compat-2.6.33.c b/compat/compat-2.6.33.c deleted file mode 100644 index f584b85..0000000 --- a/compat/compat-2.6.33.c +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright 2009 Hauke Mehrtens - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.33. - */ - -#include -#include -#include -#include -#include - -#ifdef CONFIG_USB_SUSPEND -/** - * usb_autopm_get_interface_no_resume - increment a USB interface's PM-usage counter - * @intf: the usb_interface whose counter should be incremented - * - * This routine increments @intf's usage counter but does not carry out an - * autoresume. - * - * This routine can run in atomic context. - */ -void usb_autopm_get_interface_no_resume(struct usb_interface *intf) -{ - struct usb_device *udev = interface_to_usbdev(intf); - - usb_mark_last_busy(udev); -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32)) - atomic_inc(&intf->pm_usage_cnt); -#else - intf->pm_usage_cnt++; -#endif - pm_runtime_get_noresume(&intf->dev); -} -EXPORT_SYMBOL_GPL(usb_autopm_get_interface_no_resume); - -/** - * usb_autopm_put_interface_no_suspend - decrement a USB interface's PM-usage counter - * @intf: the usb_interface whose counter should be decremented - * - * This routine decrements @intf's usage counter but does not carry out an - * autosuspend. - * - * This routine can run in atomic context. - */ -void usb_autopm_put_interface_no_suspend(struct usb_interface *intf) -{ - struct usb_device *udev = interface_to_usbdev(intf); - - usb_mark_last_busy(udev); -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32)) - atomic_dec(&intf->pm_usage_cnt); -#else - intf->pm_usage_cnt--; -#endif - pm_runtime_put_noidle(&intf->dev); -} -EXPORT_SYMBOL_GPL(usb_autopm_put_interface_no_suspend); -#endif /* CONFIG_USB_SUSPEND */ - -#if defined(CONFIG_PCCARD) || defined(CONFIG_PCCARD_MODULE) - -/** - * pccard_loop_tuple() - loop over tuples in the CIS - * @s: the struct pcmcia_socket where the card is inserted - * @function: the device function we loop for - * @code: which CIS code shall we look for? - * @parse: buffer where the tuple shall be parsed (or NULL, if no parse) - * @priv_data: private data to be passed to the loop_tuple function. - * @loop_tuple: function to call for each CIS entry of type @function. IT - * gets passed the raw tuple, the paresed tuple (if @parse is - * set) and @priv_data. - * - * pccard_loop_tuple() loops over all CIS entries of type @function, and - * calls the @loop_tuple function for each entry. If the call to @loop_tuple - * returns 0, the loop exits. Returns 0 on success or errorcode otherwise. - */ -int pccard_loop_tuple(struct pcmcia_socket *s, unsigned int function, - cisdata_t code, cisparse_t *parse, void *priv_data, - int (*loop_tuple) (tuple_t *tuple, - cisparse_t *parse, - void *priv_data)) -{ - tuple_t tuple; - cisdata_t *buf; - int ret; - - buf = kzalloc(256, GFP_KERNEL); - if (buf == NULL) { - dev_printk(KERN_WARNING, &s->dev, "no memory to read tuple\n"); - return -ENOMEM; - } - - tuple.TupleData = buf; - tuple.TupleDataMax = 255; - tuple.TupleOffset = 0; - tuple.DesiredTuple = code; - tuple.Attributes = 0; - - ret = pccard_get_first_tuple(s, function, &tuple); - while (!ret) { - if (pccard_get_tuple_data(s, &tuple)) - goto next_entry; - - if (parse) - if (pcmcia_parse_tuple(&tuple, parse)) - goto next_entry; - - ret = loop_tuple(&tuple, parse, priv_data); - if (!ret) - break; - -next_entry: - ret = pccard_get_next_tuple(s, function, &tuple); - } - - kfree(buf); - return ret; -} -EXPORT_SYMBOL_GPL(pccard_loop_tuple); -/* Source: drivers/pcmcia/cistpl.c */ - -#if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE) - -struct pcmcia_loop_mem { - struct pcmcia_device *p_dev; - void *priv_data; - int (*loop_tuple) (struct pcmcia_device *p_dev, - tuple_t *tuple, - void *priv_data); -}; - -/** - * pcmcia_do_loop_tuple() - internal helper for pcmcia_loop_config() - * - * pcmcia_do_loop_tuple() is the internal callback for the call from - * pcmcia_loop_tuple() to pccard_loop_tuple(). Data is transferred - * by a struct pcmcia_cfg_mem. - */ -static int pcmcia_do_loop_tuple(tuple_t *tuple, cisparse_t *parse, void *priv) -{ - struct pcmcia_loop_mem *loop = priv; - - return loop->loop_tuple(loop->p_dev, tuple, loop->priv_data); -}; - -/** - * pcmcia_loop_tuple() - loop over tuples in the CIS - * @p_dev: the struct pcmcia_device which we need to loop for. - * @code: which CIS code shall we look for? - * @priv_data: private data to be passed to the loop_tuple function. - * @loop_tuple: function to call for each CIS entry of type @function. IT - * gets passed the raw tuple and @priv_data. - * - * pcmcia_loop_tuple() loops over all CIS entries of type @function, and - * calls the @loop_tuple function for each entry. If the call to @loop_tuple - * returns 0, the loop exits. Returns 0 on success or errorcode otherwise. - */ -int pcmcia_loop_tuple(struct pcmcia_device *p_dev, cisdata_t code, - int (*loop_tuple) (struct pcmcia_device *p_dev, - tuple_t *tuple, - void *priv_data), - void *priv_data) -{ - struct pcmcia_loop_mem loop = { - .p_dev = p_dev, - .loop_tuple = loop_tuple, - .priv_data = priv_data}; - - return pccard_loop_tuple(p_dev->socket, p_dev->func, code, NULL, - &loop, pcmcia_do_loop_tuple); -} -EXPORT_SYMBOL_GPL(pcmcia_loop_tuple); -/* Source: drivers/pcmcia/pcmcia_resource.c */ - -#endif /* CONFIG_PCMCIA */ - -#endif /* CONFIG_PCCARD */ - -/** - * platform_device_register_data - * @parent: parent device for the device we're adding - * @name: base name of the device we're adding - * @id: instance id - * @data: platform specific data for this platform device - * @size: size of platform specific data - * - * This function creates a simple platform device that requires minimal - * resource and memory management. Canned release function freeing memory - * allocated for the device allows drivers using such devices to be - * unloaded without waiting for the last reference to the device to be - * dropped. - */ -struct platform_device *platform_device_register_data( - struct device *parent, - const char *name, int id, - const void *data, size_t size) -{ - struct platform_device *pdev; - int retval; - - pdev = platform_device_alloc(name, id); - if (!pdev) { - retval = -ENOMEM; - goto error; - } - - pdev->dev.parent = parent; - - if (size) { - retval = platform_device_add_data(pdev, data, size); - if (retval) - goto error; - } - - retval = platform_device_add(pdev); - if (retval) - goto error; - - return pdev; - -error: - platform_device_put(pdev); - return ERR_PTR(retval); -} -EXPORT_SYMBOL_GPL(platform_device_register_data); diff --git a/compat/compat-2.6.34.c b/compat/compat-2.6.34.c deleted file mode 100644 index 80a6107..0000000 --- a/compat/compat-2.6.34.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2012 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.34. - */ - -#include - -#include "compat-2.6.34.h" - -static mmc_pm_flag_t compat_mmc_pm_flags; - -void init_compat_mmc_pm_flags(void) -{ - compat_mmc_pm_flags = 0; -} - -mmc_pm_flag_t sdio_get_host_pm_caps(struct sdio_func *func) -{ - return compat_mmc_pm_flags; -} - -int sdio_set_host_pm_flags(struct sdio_func *func, mmc_pm_flag_t flags) -{ - return -EINVAL; -} - -/** - * seq_hlist_start - start an iteration of a hlist - * @head: the head of the hlist - * @pos: the start position of the sequence - * - * Called at seq_file->op->start(). - */ -struct hlist_node *seq_hlist_start(struct hlist_head *head, loff_t pos) -{ - struct hlist_node *node; - - hlist_for_each(node, head) - if (pos-- == 0) - return node; - return NULL; -} - -/** - * seq_hlist_start_head - start an iteration of a hlist - * @head: the head of the hlist - * @pos: the start position of the sequence - * - * Called at seq_file->op->start(). Call this function if you want to - * print a header at the top of the output. - */ -struct hlist_node *seq_hlist_start_head(struct hlist_head *head, loff_t pos) -{ - if (!pos) - return SEQ_START_TOKEN; - - return seq_hlist_start(head, pos - 1); -} -EXPORT_SYMBOL(seq_hlist_start_head); - -/** - * seq_hlist_next - move to the next position of the hlist - * @v: the current iterator - * @head: the head of the hlist - * @ppos: the current position - * - * Called at seq_file->op->next(). - */ -struct hlist_node *seq_hlist_next(void *v, struct hlist_head *head, - loff_t *ppos) -{ - struct hlist_node *node = v; - - ++*ppos; - if (v == SEQ_START_TOKEN) - return head->first; - else - return node->next; -} -EXPORT_SYMBOL(seq_hlist_next); diff --git a/compat/compat-2.6.34.h b/compat/compat-2.6.34.h deleted file mode 100644 index 173fe52..0000000 --- a/compat/compat-2.6.34.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef LINUX_26_34_COMPAT_PRIVATE_H -#define LINUX_26_34_COMPAT_PRIVATE_H - -#include - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34)) - -#include - -void init_compat_mmc_pm_flags(void); - -#else /* Kernels >= 2.6.34 */ - -static inline void init_compat_mmc_pm_flags(void) -{ -} - -#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34)) */ - -#endif /* LINUX_26_34_COMPAT_PRIVATE_H */ diff --git a/compat/compat-2.6.35.c b/compat/compat-2.6.35.c deleted file mode 100644 index 422487c..0000000 --- a/compat/compat-2.6.35.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2010 Kshitij Kulshreshtha - * Copyright 2012 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.35. - */ - -#include -#include - -#ifdef CONFIG_RPS -int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq) -{ - int rc; - - /* we can't update the sysfs object for older kernels */ - if (dev->reg_state == NETREG_REGISTERED) - return -EINVAL; - dev->num_rx_queues = rxq; - return 0; -} -#endif - -/* - * Routine to help set real_num_tx_queues. To avoid skbs mapped to queues - * greater then real_num_tx_queues stale skbs on the qdisc must be flushed. - */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) -int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq) -{ - unsigned int real_num = dev->real_num_tx_queues; - - if (unlikely(txq > dev->num_tx_queues)) - return -EINVAL; - else if (txq > real_num) - dev->real_num_tx_queues = txq; - else if (txq < real_num) { - dev->real_num_tx_queues = txq; - qdisc_reset_all_tx_gt(dev, txq); - } - return 0; -} -#else -int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq) -{ - dev->egress_subqueue_count = txq; - /* XXX: consider qdisc reset for older kernels */ - return 0; -} -#endif -EXPORT_SYMBOL_GPL(netif_set_real_num_tx_queues); - -/** - * hex_to_bin - convert a hex digit to its real value - * @ch: ascii character represents hex digit - * - * hex_to_bin() converts one hex digit to its actual value or -1 in case of bad - * input. - */ -int compat_hex_to_bin(char ch) -{ - if ((ch >= '0') && (ch <= '9')) - return ch - '0'; - ch = tolower(ch); - if ((ch >= 'a') && (ch <= 'f')) - return ch - 'a' + 10; - return -1; -} -EXPORT_SYMBOL_GPL(compat_hex_to_bin); - -/** - * noop_llseek - No Operation Performed llseek implementation - * @file: file structure to seek on - * @offset: file offset to seek to - * @origin: type of seek - * - * This is an implementation of ->llseek useable for the rare special case when - * userspace expects the seek to succeed but the (device) file is actually not - * able to perform the seek. In this case you use noop_llseek() instead of - * falling back to the default implementation of ->llseek. - */ -loff_t noop_llseek(struct file *file, loff_t offset, int origin) -{ - return file->f_pos; -} -EXPORT_SYMBOL_GPL(noop_llseek); - -/** - * simple_write_to_buffer - copy data from user space to the buffer - * @to: the buffer to write to - * @available: the size of the buffer - * @ppos: the current position in the buffer - * @from: the user space buffer to read from - * @count: the maximum number of bytes to read - * - * The simple_write_to_buffer() function reads up to @count bytes from the user - * space address starting at @from into the buffer @to at offset @ppos. - * - * On success, the number of bytes written is returned and the offset @ppos is - * advanced by this number, or negative value is returned on error. - **/ -ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos, - const void __user *from, size_t count) -{ - loff_t pos = *ppos; - size_t res; - - if (pos < 0) - return -EINVAL; - if (pos >= available || !count) - return 0; - if (count > available - pos) - count = available - pos; - res = copy_from_user(to + pos, from, count); - if (res == count) - return -EFAULT; - count -= res; - *ppos = pos + count; - return count; -} -EXPORT_SYMBOL(simple_write_to_buffer); diff --git a/compat/compat-2.6.36.c b/compat/compat-2.6.36.c deleted file mode 100644 index 72ada4a..0000000 --- a/compat/compat-2.6.36.c +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2010 Hauke Mehrtens - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.36. - */ - -#include -#include - -#ifdef CONFIG_COMPAT_USB_URB_THREAD_FIX -/* Callers must hold anchor->lock */ -static void __usb_unanchor_urb(struct urb *urb, struct usb_anchor *anchor) -{ - urb->anchor = NULL; - list_del(&urb->anchor_list); - usb_put_urb(urb); - if (list_empty(&anchor->urb_list)) - wake_up(&anchor->wait); -} - -/** - * usb_unlink_anchored_urbs - asynchronously cancel transfer requests en masse - * @anchor: anchor the requests are bound to - * - * this allows all outstanding URBs to be unlinked starting - * from the back of the queue. This function is asynchronous. - * The unlinking is just tiggered. It may happen after this - * function has returned. - * - * This routine should not be called by a driver after its disconnect - * method has returned. - */ -void compat_usb_unlink_anchored_urbs(struct usb_anchor *anchor) -{ - struct urb *victim; - - while ((victim = usb_get_from_anchor(anchor)) != NULL) { - usb_unlink_urb(victim); - usb_put_urb(victim); - } -} -EXPORT_SYMBOL_GPL(compat_usb_unlink_anchored_urbs); - -/** - * usb_get_from_anchor - get an anchor's oldest urb - * @anchor: the anchor whose urb you want - * - * this will take the oldest urb from an anchor, - * unanchor and return it - */ -struct urb *compat_usb_get_from_anchor(struct usb_anchor *anchor) -{ - struct urb *victim; - unsigned long flags; - - spin_lock_irqsave(&anchor->lock, flags); - if (!list_empty(&anchor->urb_list)) { - victim = list_entry(anchor->urb_list.next, struct urb, - anchor_list); - usb_get_urb(victim); - __usb_unanchor_urb(victim, anchor); - } else { - victim = NULL; - } - spin_unlock_irqrestore(&anchor->lock, flags); - - return victim; -} -EXPORT_SYMBOL_GPL(compat_usb_get_from_anchor); - -/** - * usb_scuttle_anchored_urbs - unanchor all an anchor's urbs - * @anchor: the anchor whose urbs you want to unanchor - * - * use this to get rid of all an anchor's urbs - */ -void compat_usb_scuttle_anchored_urbs(struct usb_anchor *anchor) -{ - struct urb *victim; - unsigned long flags; - - spin_lock_irqsave(&anchor->lock, flags); - while (!list_empty(&anchor->urb_list)) { - victim = list_entry(anchor->urb_list.prev, struct urb, - anchor_list); - __usb_unanchor_urb(victim, anchor); - } - spin_unlock_irqrestore(&anchor->lock, flags); -} -EXPORT_SYMBOL_GPL(compat_usb_scuttle_anchored_urbs); - -#endif /* CONFIG_COMPAT_USB_URB_THREAD_FIX */ - -struct workqueue_struct *system_wq __read_mostly; -struct workqueue_struct *system_long_wq __read_mostly; -struct workqueue_struct *system_nrt_wq __read_mostly; -EXPORT_SYMBOL_GPL(system_wq); -EXPORT_SYMBOL_GPL(system_long_wq); -EXPORT_SYMBOL_GPL(system_nrt_wq); - -int compat_schedule_work(struct work_struct *work) -{ - return queue_work(system_wq, work); -} -EXPORT_SYMBOL_GPL(compat_schedule_work); - -int compat_schedule_work_on(int cpu, struct work_struct *work) -{ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) - return queue_work_on(cpu, system_wq, work); -#else - return queue_work(system_wq, work); -#endif -} -EXPORT_SYMBOL_GPL(compat_schedule_work_on); - -int compat_schedule_delayed_work(struct delayed_work *dwork, - unsigned long delay) -{ - return queue_delayed_work(system_wq, dwork, delay); -} -EXPORT_SYMBOL_GPL(compat_schedule_delayed_work); - -int compat_schedule_delayed_work_on(int cpu, - struct delayed_work *dwork, - unsigned long delay) -{ - return queue_delayed_work_on(cpu, system_wq, dwork, delay); -} -EXPORT_SYMBOL_GPL(compat_schedule_delayed_work_on); - -#undef flush_scheduled_work -void compat_flush_scheduled_work(void) -{ - /* - * It is debatable which one we should prioritize first, lets - * go with the old kernel's one first for now (keventd_wq) and - * if think its reasonable later we can flip this around. - */ - flush_workqueue(system_wq); - flush_scheduled_work(); -} -EXPORT_SYMBOL_GPL(compat_flush_scheduled_work); - -/** - * work_busy - test whether a work is currently pending or running - * @work: the work to be tested - * - * Test whether @work is currently pending or running. There is no - * synchronization around this function and the test result is - * unreliable and only useful as advisory hints or for debugging. - * Especially for reentrant wqs, the pending state might hide the - * running state. - * - * RETURNS: - * OR'd bitmask of WORK_BUSY_* bits. - */ -unsigned int work_busy(struct work_struct *work) -{ - unsigned int ret = 0; - - if (work_pending(work)) - ret |= WORK_BUSY_PENDING; - - return ret; -} -EXPORT_SYMBOL_GPL(work_busy); - -void compat_system_workqueue_create() -{ - system_wq = alloc_workqueue("events", 0, 0); - system_long_wq = alloc_workqueue("events_long", 0, 0); - system_nrt_wq = create_singlethread_workqueue("events_nrt"); - BUG_ON(!system_wq || !system_long_wq || !system_nrt_wq); -} - -void compat_system_workqueue_destroy() -{ - destroy_workqueue(system_wq); - destroy_workqueue(system_long_wq); - destroy_workqueue(system_nrt_wq); -} diff --git a/compat/compat-2.6.37.c b/compat/compat-2.6.37.c deleted file mode 100644 index 24b267a..0000000 --- a/compat/compat-2.6.37.c +++ /dev/null @@ -1,358 +0,0 @@ -/* - * Copyright 2010 Hauke Mehrtens - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.37. - */ - -#include -#include -#include -#include -#include - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35) -static const void *net_current_ns(void) -{ - return current->nsproxy->net_ns; -} - -static const void *net_initial_ns(void) -{ - return &init_net; -} - -static const void *net_netlink_ns(struct sock *sk) -{ - return sock_net(sk); -} - -struct kobj_ns_type_operations net_ns_type_operations = { - .type = KOBJ_NS_TYPE_NET, - .current_ns = net_current_ns, - .netlink_ns = net_netlink_ns, - .initial_ns = net_initial_ns, -}; -EXPORT_SYMBOL_GPL(net_ns_type_operations); - -#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)*/ - -#undef genl_info -#undef genl_unregister_family - -static LIST_HEAD(compat_nl_fam); - -static struct genl_ops *genl_get_cmd(u8 cmd, struct genl_family *family) -{ - struct genl_ops *ops; - - list_for_each_entry(ops, &family->family.ops_list, ops.ops_list) - if (ops->cmd == cmd) - return ops; - - return NULL; -} - - -static int nl_doit_wrapper(struct sk_buff *skb, struct genl_info *info) -{ - struct compat_genl_info compat_info; - struct genl_family *family; - struct genl_ops *ops; - int err; - - list_for_each_entry(family, &compat_nl_fam, list) { - if (family->id == info->nlhdr->nlmsg_type) - goto found; - } - return -ENOENT; - -found: - ops = genl_get_cmd(info->genlhdr->cmd, family); - if (!ops) - return -ENOENT; - - memset(&compat_info.user_ptr, 0, sizeof(compat_info.user_ptr)); - compat_info.info = info; -#define __copy(_field) compat_info._field = info->_field - __copy(snd_seq); - __copy(snd_pid); - __copy(genlhdr); - __copy(attrs); -#undef __copy - if (family->pre_doit) { - err = family->pre_doit(ops, skb, &compat_info); - if (err) - return err; - } - - err = ops->doit(skb, &compat_info); - - if (family->post_doit) - family->post_doit(ops, skb, &compat_info); - - return err; -} - -int compat_genl_register_family_with_ops(struct genl_family *family, - struct genl_ops *ops, size_t n_ops) -{ - int i, ret; - -#define __copy(_field) family->family._field = family->_field - __copy(id); - __copy(hdrsize); - __copy(version); - __copy(maxattr); - strncpy(family->family.name, family->name, sizeof(family->family.name)); -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32)) - __copy(netnsok); -#endif -#undef __copy - - ret = genl_register_family(&family->family); - if (ret < 0) - return ret; - - family->attrbuf = family->family.attrbuf; - family->id = family->family.id; - - for (i = 0; i < n_ops; i++) { -#define __copy(_field) ops[i].ops._field = ops[i]._field - __copy(cmd); - __copy(flags); - __copy(policy); - __copy(dumpit); - __copy(done); -#undef __copy - if (ops[i].doit) - ops[i].ops.doit = nl_doit_wrapper; - ret = genl_register_ops(&family->family, &ops[i].ops); - if (ret < 0) - goto error_ops; - } - list_add(&family->list, &compat_nl_fam); - - return ret; - -error_ops: - compat_genl_unregister_family(family); - return ret; -} -EXPORT_SYMBOL_GPL(compat_genl_register_family_with_ops); - -int compat_genl_unregister_family(struct genl_family *family) -{ - int err; - err = genl_unregister_family(&family->family); - list_del(&family->list); - return err; -} -EXPORT_SYMBOL_GPL(compat_genl_unregister_family); - -#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE) - -#undef led_brightness_set -#undef led_classdev_unregister - -static DEFINE_SPINLOCK(led_lock); -static LIST_HEAD(led_timers); - -struct led_timer { - struct list_head list; - struct led_classdev *cdev; - struct timer_list blink_timer; - unsigned long blink_delay_on; - unsigned long blink_delay_off; - int blink_brightness; -}; - -static void led_brightness_set(struct led_classdev *led_cdev, - enum led_brightness brightness) -{ - led_cdev->brightness = brightness; - led_cdev->brightness_set(led_cdev, brightness); -} - -static struct led_timer *led_get_timer(struct led_classdev *led_cdev) -{ - struct led_timer *p; - unsigned long flags; - - spin_lock_irqsave(&led_lock, flags); - list_for_each_entry(p, &led_timers, list) { - if (p->cdev == led_cdev) - goto found; - } - p = NULL; -found: - spin_unlock_irqrestore(&led_lock, flags); - return p; -} - -static void led_stop_software_blink(struct led_timer *led) -{ - del_timer_sync(&led->blink_timer); - led->blink_delay_on = 0; - led->blink_delay_off = 0; -} - -static void led_timer_function(unsigned long data) -{ - struct led_timer *led = (struct led_timer *)data; - unsigned long brightness; - unsigned long delay; - - if (!led->blink_delay_on || !led->blink_delay_off) { - led->cdev->brightness_set(led->cdev, LED_OFF); - return; - } - - brightness = led->cdev->brightness; - if (!brightness) { - /* Time to switch the LED on. */ - brightness = led->blink_brightness; - delay = led->blink_delay_on; - } else { - /* Store the current brightness value to be able - * to restore it when the delay_off period is over. - */ - led->blink_brightness = brightness; - brightness = LED_OFF; - delay = led->blink_delay_off; - } - - led_brightness_set(led->cdev, brightness); - mod_timer(&led->blink_timer, jiffies + msecs_to_jiffies(delay)); -} - -static struct led_timer *led_new_timer(struct led_classdev *led_cdev) -{ - struct led_timer *led; - unsigned long flags; - - led = kzalloc(sizeof(struct led_timer), GFP_ATOMIC); - if (!led) - return NULL; - - led->cdev = led_cdev; - init_timer(&led->blink_timer); - led->blink_timer.function = led_timer_function; - led->blink_timer.data = (unsigned long) led; - - spin_lock_irqsave(&led_lock, flags); - list_add(&led->list, &led_timers); - spin_unlock_irqrestore(&led_lock, flags); - - return led; -} - -void led_blink_set(struct led_classdev *led_cdev, - unsigned long *delay_on, - unsigned long *delay_off) -{ - struct led_timer *led; - int current_brightness; - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) - if (led_cdev->blink_set && - !led_cdev->blink_set(led_cdev, delay_on, delay_off)) - return; -#endif - - led = led_get_timer(led_cdev); - if (!led) { - led = led_new_timer(led_cdev); - if (!led) - return; - } - - /* blink with 1 Hz as default if nothing specified */ - if (!*delay_on && !*delay_off) - *delay_on = *delay_off = 500; - - if (led->blink_delay_on == *delay_on && - led->blink_delay_off == *delay_off) - return; - - current_brightness = led_cdev->brightness; - if (current_brightness) - led->blink_brightness = current_brightness; - if (!led->blink_brightness) -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) - led->blink_brightness = led_cdev->max_brightness; -#else - led->blink_brightness = LED_FULL; -#endif - - led_stop_software_blink(led); - led->blink_delay_on = *delay_on; - led->blink_delay_off = *delay_off; - - /* never on - don't blink */ - if (!*delay_on) - return; - - /* never off - just set to brightness */ - if (!*delay_off) { - led_brightness_set(led_cdev, led->blink_brightness); - return; - } - - mod_timer(&led->blink_timer, jiffies + 1); -} -EXPORT_SYMBOL_GPL(led_blink_set); - -void compat_led_brightness_set(struct led_classdev *led_cdev, - enum led_brightness brightness) -{ - struct led_timer *led = led_get_timer(led_cdev); - - if (led) - led_stop_software_blink(led); - - return led_cdev->brightness_set(led_cdev, brightness); -} -EXPORT_SYMBOL_GPL(compat_led_brightness_set); - -void compat_led_classdev_unregister(struct led_classdev *led_cdev) -{ - struct led_timer *led = led_get_timer(led_cdev); - unsigned long flags; - - if (led) { - del_timer_sync(&led->blink_timer); - spin_lock_irqsave(&led_lock, flags); - list_del(&led->list); - spin_unlock_irqrestore(&led_lock, flags); - kfree(led); - } - - led_classdev_unregister(led_cdev); -} -EXPORT_SYMBOL_GPL(compat_led_classdev_unregister); - -/** - * vzalloc - allocate virtually contiguous memory with zero fill - * @size: allocation size - * Allocate enough pages to cover @size from the page level - * allocator and map them into contiguous kernel virtual space. - * The memory allocated is set to zero. - * - * For tight control over page level allocator and protection flags - * use __vmalloc() instead. - */ -void *compat_vzalloc(unsigned long size) -{ - void *buf; - buf = vmalloc(size); - if (buf) - memset(buf, 0, size); - return buf; -} -EXPORT_SYMBOL_GPL(compat_vzalloc); - -#endif diff --git a/compat/compat-2.6.38.c b/compat/compat-2.6.38.c deleted file mode 100644 index b546194..0000000 --- a/compat/compat-2.6.38.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2010 Hauke Mehrtens - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.38. - */ - -#include -#include -#include - -/** - * ewma_init() - Initialize EWMA parameters - * @avg: Average structure - * @factor: Factor to use for the scaled up internal value. The maximum value - * of averages can be ULONG_MAX/(factor*weight). - * @weight: Exponential weight, or decay rate. This defines how fast the - * influence of older values decreases. Has to be bigger than 1. - * - * Initialize the EWMA parameters for a given struct ewma @avg. - */ -void compat_ewma_init(struct ewma *avg, unsigned long factor, unsigned long weight) -{ - WARN_ON(weight <= 1 || factor == 0); - avg->internal = 0; - avg->weight = weight; - avg->factor = factor; -} -EXPORT_SYMBOL_GPL(compat_ewma_init); - -/** - * ewma_add() - Exponentially weighted moving average (EWMA) - * @avg: Average structure - * @val: Current value - * - * Add a sample to the average. - */ -struct ewma *compat_ewma_add(struct ewma *avg, unsigned long val) -{ - avg->internal = avg->internal ? - (((avg->internal * (avg->weight - 1)) + - (val * avg->factor)) / avg->weight) : - (val * avg->factor); - return avg; -} -EXPORT_SYMBOL_GPL(compat_ewma_add); - diff --git a/compat/compat-2.6.39.c b/compat/compat-2.6.39.c deleted file mode 100644 index 5bb9322..0000000 --- a/compat/compat-2.6.39.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2011 Hauke Mehrtens - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 2.6.39. - */ - -#include -#include -#include - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) -/* - * Termios Helper Methods - */ -static void unset_locked_termios(struct ktermios *termios, - struct ktermios *old, - struct ktermios *locked) -{ - int i; - -#define NOSET_MASK(x, y, z) (x = ((x) & ~(z)) | ((y) & (z))) - - if (!locked) { - printk(KERN_WARNING "Warning?!? termios_locked is NULL.\n"); - return; - } - - NOSET_MASK(termios->c_iflag, old->c_iflag, locked->c_iflag); - NOSET_MASK(termios->c_oflag, old->c_oflag, locked->c_oflag); - NOSET_MASK(termios->c_cflag, old->c_cflag, locked->c_cflag); - NOSET_MASK(termios->c_lflag, old->c_lflag, locked->c_lflag); - termios->c_line = locked->c_line ? old->c_line : termios->c_line; - for (i = 0; i < NCCS; i++) - termios->c_cc[i] = locked->c_cc[i] ? - old->c_cc[i] : termios->c_cc[i]; - /* FIXME: What should we do for i/ospeed */ -} - -/** - * tty_set_termios - update termios values - * @tty: tty to update - * @new_termios: desired new value - * - * Perform updates to the termios values set on this terminal. There - * is a bit of layering violation here with n_tty in terms of the - * internal knowledge of this function. - * - * Locking: termios_mutex - */ -int tty_set_termios(struct tty_struct *tty, struct ktermios *new_termios) -{ - struct ktermios old_termios; - struct tty_ldisc *ld; - unsigned long flags; - - /* - * Perform the actual termios internal changes under lock. - */ - - - /* FIXME: we need to decide on some locking/ordering semantics - for the set_termios notification eventually */ - mutex_lock(&tty->termios_mutex); - old_termios = *tty->termios; - *tty->termios = *new_termios; - unset_locked_termios(tty->termios, &old_termios, tty->termios_locked); - - /* See if packet mode change of state. */ - if (tty->link && tty->link->packet) { - int extproc = (old_termios.c_lflag & EXTPROC) | - (tty->termios->c_lflag & EXTPROC); - int old_flow = ((old_termios.c_iflag & IXON) && - (old_termios.c_cc[VSTOP] == '\023') && - (old_termios.c_cc[VSTART] == '\021')); - int new_flow = (I_IXON(tty) && - STOP_CHAR(tty) == '\023' && - START_CHAR(tty) == '\021'); - if ((old_flow != new_flow) || extproc) { - spin_lock_irqsave(&tty->ctrl_lock, flags); - if (old_flow != new_flow) { - tty->ctrl_status &= ~(TIOCPKT_DOSTOP | TIOCPKT_NOSTOP); - if (new_flow) - tty->ctrl_status |= TIOCPKT_DOSTOP; - else - tty->ctrl_status |= TIOCPKT_NOSTOP; - } - if (extproc) - tty->ctrl_status |= TIOCPKT_IOCTL; - spin_unlock_irqrestore(&tty->ctrl_lock, flags); - wake_up_interruptible(&tty->link->read_wait); - } - } - - if (tty->ops->set_termios) - (*tty->ops->set_termios)(tty, &old_termios); - else - tty_termios_copy_hw(tty->termios, &old_termios); - - ld = tty_ldisc_ref(tty); - if (ld != NULL) { - if (ld->ops->set_termios) - (ld->ops->set_termios)(tty, &old_termios); - tty_ldisc_deref(ld); - } - mutex_unlock(&tty->termios_mutex); - return 0; -} -EXPORT_SYMBOL_GPL(tty_set_termios); -#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) */ - diff --git a/compat/compat-3.0.c b/compat/compat-3.0.c deleted file mode 100644 index e841373..0000000 --- a/compat/compat-3.0.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2011 Hauke Mehrtens - * Copyright 2011 Alexey Dobriyan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 3.0. - */ - -#include -#include - -/* This pulls-in a lot of non-exported symbol backports - * on kernels older than 2.6.32. There's no harm for not - * making this available on kernels < 2.6.32. */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32)) -#include - -/* This backports: - * - * commit d9d90e5eb70e09903dadff42099b6c948f814050 - * Author: Hugh Dickins - * Date: Mon Jun 27 16:18:04 2011 -0700 - * - * tmpfs: add shmem_read_mapping_page_gfp - */ - -struct page *shmem_read_mapping_page_gfp(struct address_space *mapping, - pgoff_t index, gfp_t gfp) -{ - return read_cache_page_gfp(mapping, index, gfp); -} -EXPORT_SYMBOL_GPL(shmem_read_mapping_page_gfp); -#endif - -int mac_pton(const char *s, u8 *mac) -{ - int i; - - /* XX:XX:XX:XX:XX:XX */ - if (strlen(s) < 3 * ETH_ALEN - 1) - return 0; - - /* Don't dirty result unless string is valid MAC. */ - for (i = 0; i < ETH_ALEN; i++) { - if (!strchr("0123456789abcdefABCDEF", s[i * 3])) - return 0; - if (!strchr("0123456789abcdefABCDEF", s[i * 3 + 1])) - return 0; - if (i != ETH_ALEN - 1 && s[i * 3 + 2] != ':') - return 0; - } - for (i = 0; i < ETH_ALEN; i++) { - mac[i] = (hex_to_bin(s[i * 3]) << 4) | hex_to_bin(s[i * 3 + 1]); - } - return 1; -} -EXPORT_SYMBOL_GPL(mac_pton); - -#define kstrto_from_user(f, g, type) \ -int f(const char __user *s, size_t count, unsigned int base, type *res) \ -{ \ - /* sign, base 2 representation, newline, terminator */ \ - char buf[1 + sizeof(type) * 8 + 1 + 1]; \ - \ - count = min(count, sizeof(buf) - 1); \ - if (copy_from_user(buf, s, count)) \ - return -EFAULT; \ - buf[count] = '\0'; \ - return g(buf, base, res); \ -} \ -EXPORT_SYMBOL_GPL(f) - -kstrto_from_user(kstrtoull_from_user, kstrtoull, unsigned long long); -kstrto_from_user(kstrtoll_from_user, kstrtoll, long long); -kstrto_from_user(kstrtoul_from_user, kstrtoul, unsigned long); -kstrto_from_user(kstrtol_from_user, kstrtol, long); -kstrto_from_user(kstrtouint_from_user, kstrtouint, unsigned int); -kstrto_from_user(kstrtoint_from_user, kstrtoint, int); -kstrto_from_user(kstrtou16_from_user, kstrtou16, u16); -kstrto_from_user(kstrtos16_from_user, kstrtos16, s16); -kstrto_from_user(kstrtou8_from_user, kstrtou8, u8); -kstrto_from_user(kstrtos8_from_user, kstrtos8, s8); diff --git a/compat/compat-3.1.c b/compat/compat-3.1.c deleted file mode 100644 index 354a8a3..0000000 --- a/compat/compat-3.1.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2012 Hauke Mehrtens - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 3.1. - */ - -#include -#include - -/* This backports: - * commit 3d73710880afa3d61cf57b5d4eb192e812eb7e4f - * Author: Jesse Barnes - * Date: Tue Jun 28 10:59:12 2011 -0700 - * - * cpufreq: expose a cpufreq_quick_get_max routine - */ -#ifdef CONFIG_CPU_FREQ -unsigned int compat_cpufreq_quick_get_max(unsigned int cpu) -{ - struct cpufreq_policy *policy = cpufreq_cpu_get(cpu); - unsigned int ret_freq = 0; - - if (policy) { - ret_freq = policy->max; - cpufreq_cpu_put(policy); - } - - return ret_freq; -} -EXPORT_SYMBOL(compat_cpufreq_quick_get_max); -#endif - -static DEFINE_SPINLOCK(compat_simple_ida_lock); - -/** - * ida_simple_get - get a new id. - * @ida: the (initialized) ida. - * @start: the minimum id (inclusive, < 0x8000000) - * @end: the maximum id (exclusive, < 0x8000000 or 0) - * @gfp_mask: memory allocation flags - * - * Allocates an id in the range start <= id < end, or returns -ENOSPC. - * On memory allocation failure, returns -ENOMEM. - * - * Use ida_simple_remove() to get rid of an id. - */ -int compat_ida_simple_get(struct ida *ida, unsigned int start, unsigned int end, - gfp_t gfp_mask) -{ - int ret, id; - unsigned int max; - unsigned long flags; - - BUG_ON((int)start < 0); - BUG_ON((int)end < 0); - - if (end == 0) - max = 0x80000000; - else { - BUG_ON(end < start); - max = end - 1; - } - -again: - if (!ida_pre_get(ida, gfp_mask)) - return -ENOMEM; - - spin_lock_irqsave(&compat_simple_ida_lock, flags); - ret = ida_get_new_above(ida, start, &id); - if (!ret) { - if (id > max) { - ida_remove(ida, id); - ret = -ENOSPC; - } else { - ret = id; - } - } - spin_unlock_irqrestore(&compat_simple_ida_lock, flags); - - if (unlikely(ret == -EAGAIN)) - goto again; - - return ret; -} -EXPORT_SYMBOL(compat_ida_simple_get); - -/** - * ida_simple_remove - remove an allocated id. - * @ida: the (initialized) ida. - * @id: the id returned by ida_simple_get. - */ -void compat_ida_simple_remove(struct ida *ida, unsigned int id) -{ - unsigned long flags; - - BUG_ON((int)id < 0); - spin_lock_irqsave(&compat_simple_ida_lock, flags); - ida_remove(ida, id); - spin_unlock_irqrestore(&compat_simple_ida_lock, flags); -} -EXPORT_SYMBOL(compat_ida_simple_remove); -/* source lib/idr.c */ - diff --git a/compat/compat-3.2.c b/compat/compat-3.2.c deleted file mode 100644 index 55ae6af..0000000 --- a/compat/compat-3.2.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2012 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 3.2. - */ - -#include -#include - -int __netdev_printk(const char *level, const struct net_device *dev, - struct va_format *vaf) -{ - int r; - - if (dev && dev->dev.parent) -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,35)) - r = dev_printk(level, dev->dev.parent, "%s: %pV", - netdev_name(dev), vaf); -#else - /* XXX: this could likely be done better but I'm lazy */ - r = printk("%s%s: %pV", level, netdev_name(dev), vaf); -#endif - else if (dev) - r = printk("%s%s: %pV", level, netdev_name(dev), vaf); - else - r = printk("%s(NULL net_device): %pV", level, vaf); - - return r; -} -EXPORT_SYMBOL_GPL(__netdev_printk); diff --git a/compat/compat-3.3.c b/compat/compat-3.3.c deleted file mode 100644 index 8489344..0000000 --- a/compat/compat-3.3.c +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright 2012 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 3.3. - */ - -#include -#include -#include -#include -#include -#include - -static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old) -{ - new->tstamp = old->tstamp; - new->dev = old->dev; - new->transport_header = old->transport_header; - new->network_header = old->network_header; - new->mac_header = old->mac_header; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) - skb_dst_copy(new, old); - new->rxhash = old->rxhash; -#else - skb_dst_set(new, dst_clone(skb_dst(old))); -#endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) - new->ooo_okay = old->ooo_okay; -#endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) - new->l4_rxhash = old->l4_rxhash; -#endif -#ifdef CONFIG_XFRM - new->sp = secpath_get(old->sp); -#endif - memcpy(new->cb, old->cb, sizeof(old->cb)); - new->csum = old->csum; - new->local_df = old->local_df; - new->pkt_type = old->pkt_type; - new->ip_summed = old->ip_summed; - skb_copy_queue_mapping(new, old); - new->priority = old->priority; -#if IS_ENABLED(CONFIG_IP_VS) - new->ipvs_property = old->ipvs_property; -#endif - new->protocol = old->protocol; - new->mark = old->mark; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33)) - new->skb_iif = old->skb_iif; -#endif - __nf_copy(new, old); -#if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE) - new->nf_trace = old->nf_trace; -#endif -#ifdef CONFIG_NET_SCHED - new->tc_index = old->tc_index; -#ifdef CONFIG_NET_CLS_ACT - new->tc_verd = old->tc_verd; -#endif -#endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) - new->vlan_tci = old->vlan_tci; -#endif - - skb_copy_secmark(new, old); -} - -static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old) -{ -#ifndef NET_SKBUFF_DATA_USES_OFFSET - /* - * Shift between the two data areas in bytes - */ - unsigned long offset = new->data - old->data; -#endif - - __copy_skb_header(new, old); - -#ifndef NET_SKBUFF_DATA_USES_OFFSET - /* {transport,network,mac}_header are relative to skb->head */ - new->transport_header += offset; - new->network_header += offset; - if (skb_mac_header_was_set(new)) - new->mac_header += offset; -#endif - skb_shinfo(new)->gso_size = skb_shinfo(old)->gso_size; - skb_shinfo(new)->gso_segs = skb_shinfo(old)->gso_segs; - skb_shinfo(new)->gso_type = skb_shinfo(old)->gso_type; -} - -static void skb_clone_fraglist(struct sk_buff *skb) -{ - struct sk_buff *list; - - skb_walk_frags(skb, list) - skb_get(list); -} - - -/** - * __pskb_copy - create copy of an sk_buff with private head. - * @skb: buffer to copy - * @headroom: headroom of new skb - * @gfp_mask: allocation priority - * - * Make a copy of both an &sk_buff and part of its data, located - * in header. Fragmented data remain shared. This is used when - * the caller wishes to modify only header of &sk_buff and needs - * private copy of the header to alter. Returns %NULL on failure - * or the pointer to the buffer on success. - * The returned buffer has a reference count of 1. - */ - -struct sk_buff *__pskb_copy(struct sk_buff *skb, int headroom, gfp_t gfp_mask) -{ - unsigned int size = skb_headlen(skb) + headroom; - struct sk_buff *n = alloc_skb(size, gfp_mask); - - if (!n) - goto out; - - /* Set the data pointer */ - skb_reserve(n, headroom); - /* Set the tail pointer and length */ - skb_put(n, skb_headlen(skb)); - /* Copy the bytes */ - skb_copy_from_linear_data(skb, n->data, n->len); - - n->truesize += skb->data_len; - n->data_len = skb->data_len; - n->len = skb->len; - - if (skb_shinfo(skb)->nr_frags) { - int i; - -/* - * SKBTX_DEV_ZEROCOPY was added on 3.1 as well but requires ubuf - * stuff added to the skb which we do not have - */ -#if 0 - if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) { - if (skb_copy_ubufs(skb, gfp_mask)) { - kfree_skb(n); - n = NULL; - goto out; - } - } -#endif - for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { - skb_shinfo(n)->frags[i] = skb_shinfo(skb)->frags[i]; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) - skb_frag_ref(skb, i); -#else - get_page(skb_shinfo(skb)->frags[i].page); -#endif - } - skb_shinfo(n)->nr_frags = i; - } - - if (skb_has_frag_list(skb)) { - skb_shinfo(n)->frag_list = skb_shinfo(skb)->frag_list; - skb_clone_fraglist(n); - } - - copy_skb_header(n, skb); -out: - return n; -} -EXPORT_SYMBOL_GPL(__pskb_copy); diff --git a/compat/compat-3.4.c b/compat/compat-3.4.c deleted file mode 100644 index a771260..0000000 --- a/compat/compat-3.4.c +++ /dev/null @@ -1,491 +0,0 @@ -/* - * Copyright 2012 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 3.4. - */ - -#include -#include -#include - -/* __wake_up_common was declared as part of the wait.h until - * 2.6.31 in which they made it private to the scheduler. Prefix it with - * compat to avoid double declaration issues. - */ -static void compat_wake_up_common(wait_queue_head_t *q, unsigned int mode, - int nr_exclusive, int wake_flags, void *key) -{ - wait_queue_t *curr, *next; - - list_for_each_entry_safe(curr, next, &q->task_list, task_list) { - unsigned flags = curr->flags; - - if (curr->func(curr, mode, wake_flags, key) && - (flags & WQ_FLAG_EXCLUSIVE) && !--nr_exclusive) - break; - } -} - -/* The last 'nr' parameter was added to the __wake_up_locked() function - * in 3.4 kernel. Define a new one prefixed with compat_ for the new API. - */ -void compat_wake_up_locked(wait_queue_head_t *q, unsigned int mode, int nr) -{ - compat_wake_up_common(q, mode, nr, 0, NULL); -} -EXPORT_SYMBOL_GPL(compat_wake_up_locked); - - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) -#include -#include -#include - -#define setsda(adap, val) adap->setsda(adap->data, val) -#define setscl(adap, val) adap->setscl(adap->data, val) -#define getsda(adap) adap->getsda(adap->data) -#define getscl(adap) adap->getscl(adap->data) - -#define bit_dbg(level, dev, format, args...) \ - do {} while (0) - -static inline void sdalo(struct i2c_algo_bit_data *adap) -{ - setsda(adap, 0); - udelay((adap->udelay + 1) / 2); -} - -static inline void sdahi(struct i2c_algo_bit_data *adap) -{ - setsda(adap, 1); - udelay((adap->udelay + 1) / 2); -} - -static inline void scllo(struct i2c_algo_bit_data *adap) -{ - setscl(adap, 0); - udelay(adap->udelay / 2); -} - -static int sclhi(struct i2c_algo_bit_data *adap) -{ - unsigned long start; - - setscl(adap, 1); - - /* Not all adapters have scl sense line... */ - if (!adap->getscl) - goto done; - - start = jiffies; - while (!getscl(adap)) { - /* This hw knows how to read the clock line, so we wait - * until it actually gets high. This is safer as some - * chips may hold it low ("clock stretching") while they - * are processing data internally. - */ - if (time_after(jiffies, start + adap->timeout)) { - /* Test one last time, as we may have been preempted - * between last check and timeout test. - */ - if (getscl(adap)) - break; - return -ETIMEDOUT; - } - cpu_relax(); - } -#ifdef DEBUG - if (jiffies != start && i2c_debug >= 3) - pr_debug("i2c-algo-bit: needed %ld jiffies for SCL to go " - "high\n", jiffies - start); -#endif - -done: - udelay(adap->udelay); - return 0; -} - -static void i2c_start(struct i2c_algo_bit_data *adap) -{ - /* assert: scl, sda are high */ - setsda(adap, 0); - udelay(adap->udelay); - scllo(adap); -} - -static void i2c_repstart(struct i2c_algo_bit_data *adap) -{ - /* assert: scl is low */ - sdahi(adap); - sclhi(adap); - setsda(adap, 0); - udelay(adap->udelay); - scllo(adap); -} - - -static void i2c_stop(struct i2c_algo_bit_data *adap) -{ - /* assert: scl is low */ - sdalo(adap); - sclhi(adap); - setsda(adap, 1); - udelay(adap->udelay); -} - -static int i2c_outb(struct i2c_adapter *i2c_adap, unsigned char c) -{ - int i; - int sb; - int ack; - struct i2c_algo_bit_data *adap = i2c_adap->algo_data; - - /* assert: scl is low */ - for (i = 7; i >= 0; i--) { - sb = (c >> i) & 1; - setsda(adap, sb); - udelay((adap->udelay + 1) / 2); - if (sclhi(adap) < 0) { /* timed out */ - bit_dbg(1, &i2c_adap->dev, "i2c_outb: 0x%02x, " - "timeout at bit #%d\n", (int)c, i); - return -ETIMEDOUT; - } - /* FIXME do arbitration here: - * if (sb && !getsda(adap)) -> ouch! Get out of here. - * - * Report a unique code, so higher level code can retry - * the whole (combined) message and *NOT* issue STOP. - */ - scllo(adap); - } - sdahi(adap); - if (sclhi(adap) < 0) { /* timeout */ - bit_dbg(1, &i2c_adap->dev, "i2c_outb: 0x%02x, " - "timeout at ack\n", (int)c); - return -ETIMEDOUT; - } - - /* read ack: SDA should be pulled down by slave, or it may - * NAK (usually to report problems with the data we wrote). - */ - ack = !getsda(adap); /* ack: sda is pulled low -> success */ - bit_dbg(2, &i2c_adap->dev, "i2c_outb: 0x%02x %s\n", (int)c, - ack ? "A" : "NA"); - - scllo(adap); - return ack; - /* assert: scl is low (sda undef) */ -} - -static int i2c_inb(struct i2c_adapter *i2c_adap) -{ - /* read byte via i2c port, without start/stop sequence */ - /* acknowledge is sent in i2c_read. */ - int i; - unsigned char indata = 0; - struct i2c_algo_bit_data *adap = i2c_adap->algo_data; - - /* assert: scl is low */ - sdahi(adap); - for (i = 0; i < 8; i++) { - if (sclhi(adap) < 0) { /* timeout */ - bit_dbg(1, &i2c_adap->dev, "i2c_inb: timeout at bit " - "#%d\n", 7 - i); - return -ETIMEDOUT; - } - indata *= 2; - if (getsda(adap)) - indata |= 0x01; - setscl(adap, 0); - udelay(i == 7 ? adap->udelay / 2 : adap->udelay); - } - /* assert: scl is low */ - return indata; -} - -static int try_address(struct i2c_adapter *i2c_adap, - unsigned char addr, int retries) -{ - struct i2c_algo_bit_data *adap = i2c_adap->algo_data; - int i, ret = 0; - - for (i = 0; i <= retries; i++) { - ret = i2c_outb(i2c_adap, addr); - if (ret == 1 || i == retries) - break; - bit_dbg(3, &i2c_adap->dev, "emitting stop condition\n"); - i2c_stop(adap); - udelay(adap->udelay); - yield(); - bit_dbg(3, &i2c_adap->dev, "emitting start condition\n"); - i2c_start(adap); - } - if (i && ret) - bit_dbg(1, &i2c_adap->dev, "Used %d tries to %s client at " - "0x%02x: %s\n", i + 1, - addr & 1 ? "read from" : "write to", addr >> 1, - ret == 1 ? "success" : "failed, timeout?"); - return ret; -} - -static int bit_doAddress(struct i2c_adapter *i2c_adap, struct i2c_msg *msg) -{ - unsigned short flags = msg->flags; - unsigned short nak_ok = msg->flags & I2C_M_IGNORE_NAK; - struct i2c_algo_bit_data *adap = i2c_adap->algo_data; - - unsigned char addr; - int ret, retries; - - retries = nak_ok ? 0 : i2c_adap->retries; - - if (flags & I2C_M_TEN) { - /* a ten bit address */ - addr = 0xf0 | ((msg->addr >> 7) & 0x06); - bit_dbg(2, &i2c_adap->dev, "addr0: %d\n", addr); - /* try extended address code...*/ - ret = try_address(i2c_adap, addr, retries); - if ((ret != 1) && !nak_ok) { - dev_err(&i2c_adap->dev, - "died at extended address code\n"); - return -ENXIO; - } - /* the remaining 8 bit address */ - ret = i2c_outb(i2c_adap, msg->addr & 0xff); - if ((ret != 1) && !nak_ok) { - /* the chip did not ack / xmission error occurred */ - dev_err(&i2c_adap->dev, "died at 2nd address code\n"); - return -ENXIO; - } - if (flags & I2C_M_RD) { - bit_dbg(3, &i2c_adap->dev, "emitting repeated " - "start condition\n"); - i2c_repstart(adap); - /* okay, now switch into reading mode */ - addr |= 0x01; - ret = try_address(i2c_adap, addr, retries); - if ((ret != 1) && !nak_ok) { - dev_err(&i2c_adap->dev, - "died at repeated address code\n"); - return -EIO; - } - } - } else { /* normal 7bit address */ - addr = msg->addr << 1; - if (flags & I2C_M_RD) - addr |= 1; - if (flags & I2C_M_REV_DIR_ADDR) - addr ^= 1; - ret = try_address(i2c_adap, addr, retries); - if ((ret != 1) && !nak_ok) - return -ENXIO; - } - - return 0; -} - -static int sendbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msg) -{ - const unsigned char *temp = msg->buf; - int count = msg->len; - unsigned short nak_ok = msg->flags & I2C_M_IGNORE_NAK; - int retval; - int wrcount = 0; - - while (count > 0) { - retval = i2c_outb(i2c_adap, *temp); - - /* OK/ACK; or ignored NAK */ - if ((retval > 0) || (nak_ok && (retval == 0))) { - count--; - temp++; - wrcount++; - - /* A slave NAKing the master means the slave didn't like - * something about the data it saw. For example, maybe - * the SMBus PEC was wrong. - */ - } else if (retval == 0) { - dev_err(&i2c_adap->dev, "sendbytes: NAK bailout.\n"); - return -EIO; - - /* Timeout; or (someday) lost arbitration - * - * FIXME Lost ARB implies retrying the transaction from - * the first message, after the "winning" master issues - * its STOP. As a rule, upper layer code has no reason - * to know or care about this ... it is *NOT* an error. - */ - } else { - dev_err(&i2c_adap->dev, "sendbytes: error %d\n", - retval); - return retval; - } - } - return wrcount; -} - -static int acknak(struct i2c_adapter *i2c_adap, int is_ack) -{ - struct i2c_algo_bit_data *adap = i2c_adap->algo_data; - - /* assert: sda is high */ - if (is_ack) /* send ack */ - setsda(adap, 0); - udelay((adap->udelay + 1) / 2); - if (sclhi(adap) < 0) { /* timeout */ - dev_err(&i2c_adap->dev, "readbytes: ack/nak timeout\n"); - return -ETIMEDOUT; - } - scllo(adap); - return 0; -} - -static int readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msg) -{ - int inval; - int rdcount = 0; /* counts bytes read */ - unsigned char *temp = msg->buf; - int count = msg->len; - const unsigned flags = msg->flags; - - while (count > 0) { - inval = i2c_inb(i2c_adap); - if (inval >= 0) { - *temp = inval; - rdcount++; - } else { /* read timed out */ - break; - } - - temp++; - count--; - - /* Some SMBus transactions require that we receive the - transaction length as the first read byte. */ - if (rdcount == 1 && (flags & I2C_M_RECV_LEN)) { - if (inval <= 0 || inval > I2C_SMBUS_BLOCK_MAX) { - if (!(flags & I2C_M_NO_RD_ACK)) - acknak(i2c_adap, 0); - dev_err(&i2c_adap->dev, "readbytes: invalid " - "block length (%d)\n", inval); - return -EPROTO; - } - /* The original count value accounts for the extra - bytes, that is, either 1 for a regular transaction, - or 2 for a PEC transaction. */ - count += inval; - msg->len += inval; - } - - bit_dbg(2, &i2c_adap->dev, "readbytes: 0x%02x %s\n", - inval, - (flags & I2C_M_NO_RD_ACK) - ? "(no ack/nak)" - : (count ? "A" : "NA")); - - if (!(flags & I2C_M_NO_RD_ACK)) { - inval = acknak(i2c_adap, count); - if (inval < 0) - return inval; - } - } - return rdcount; -} - - -static u32 bit_func(struct i2c_adapter *adap) -{ - return I2C_FUNC_I2C | I2C_FUNC_NOSTART | I2C_FUNC_SMBUS_EMUL | - I2C_FUNC_SMBUS_READ_BLOCK_DATA | - I2C_FUNC_SMBUS_BLOCK_PROC_CALL | - I2C_FUNC_10BIT_ADDR | I2C_FUNC_PROTOCOL_MANGLING; -} - -static int bit_xfer(struct i2c_adapter *i2c_adap, - struct i2c_msg msgs[], int num) -{ - struct i2c_msg *pmsg; - struct i2c_algo_bit_data *adap = i2c_adap->algo_data; - int i, ret; - unsigned short nak_ok; - - if (adap->pre_xfer) { - ret = adap->pre_xfer(i2c_adap); - if (ret < 0) - return ret; - } - - bit_dbg(3, &i2c_adap->dev, "emitting start condition\n"); - i2c_start(adap); - for (i = 0; i < num; i++) { - pmsg = &msgs[i]; - nak_ok = pmsg->flags & I2C_M_IGNORE_NAK; - if (!(pmsg->flags & I2C_M_NOSTART)) { - if (i) { - bit_dbg(3, &i2c_adap->dev, "emitting " - "repeated start condition\n"); - i2c_repstart(adap); - } - ret = bit_doAddress(i2c_adap, pmsg); - if ((ret != 0) && !nak_ok) { - bit_dbg(1, &i2c_adap->dev, "NAK from " - "device addr 0x%02x msg #%d\n", - msgs[i].addr, i); - goto bailout; - } - } - if (pmsg->flags & I2C_M_RD) { - /* read bytes into buffer*/ - ret = readbytes(i2c_adap, pmsg); - if (ret >= 1) - bit_dbg(2, &i2c_adap->dev, "read %d byte%s\n", - ret, ret == 1 ? "" : "s"); - if (ret < pmsg->len) { - if (ret >= 0) - ret = -EIO; - goto bailout; - } - } else { - /* write bytes from buffer */ - ret = sendbytes(i2c_adap, pmsg); - if (ret >= 1) - bit_dbg(2, &i2c_adap->dev, "wrote %d byte%s\n", - ret, ret == 1 ? "" : "s"); - if (ret < pmsg->len) { - if (ret >= 0) - ret = -EIO; - goto bailout; - } - } - } - ret = i; - -bailout: - bit_dbg(3, &i2c_adap->dev, "emitting stop condition\n"); - i2c_stop(adap); - - if (adap->post_xfer) - adap->post_xfer(i2c_adap); - return ret; -} - - -const struct i2c_algorithm i2c_bit_algo = { - .master_xfer = bit_xfer, - .functionality = bit_func, -}; -EXPORT_SYMBOL(i2c_bit_algo); -#endif - -int simple_open(struct inode *inode, struct file *file) -{ - if (inode->i_private) - file->private_data = inode->i_private; - return 0; -} -EXPORT_SYMBOL_GPL(simple_open); diff --git a/compat/compat-3.5.c b/compat/compat-3.5.c deleted file mode 100644 index 9c7b0b4..0000000 --- a/compat/compat-3.5.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2012-2013 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 3.5. - */ - -#include -#include -#include - -/* - * Commit 7a4e7408c5cadb240e068a662251754a562355e3 - * exported overflowuid and overflowgid for all - * kernel configurations, prior to that we only - * had it exported when CONFIG_UID16 was enabled. - * We are technically redefining it here but - * nothing seems to be changing it, except - * kernel/ code does epose it via sysctl and - * proc... if required later we can add that here. - */ -#ifndef CONFIG_UID16 -int overflowuid = DEFAULT_OVERFLOWUID; -int overflowgid = DEFAULT_OVERFLOWGID; - -EXPORT_SYMBOL(overflowuid); -EXPORT_SYMBOL(overflowgid); -#endif - -/* - * We can't access the timekeeper static variable - * on older kernels so we're shit out of luck and - * have to rely on time that might jump. Upgrade - * if you want timestamps that don't jump, this - * important for DRM vblank and page flip event - * timestamps. - */ -ktime_t ktime_get_monotonic_offset(void) -{ - return ktime_get(); -} -EXPORT_SYMBOL_GPL(ktime_get_monotonic_offset); diff --git a/compat/compat-3.7.c b/compat/compat-3.7.c deleted file mode 100644 index f591f16..0000000 --- a/compat/compat-3.7.c +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Copyright 2012 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels 3.7. - */ - -#include -#include - -bool mod_delayed_work(struct workqueue_struct *wq, struct delayed_work *dwork, - unsigned long delay) -{ - cancel_delayed_work(dwork); - queue_delayed_work(wq, dwork, delay); - return false; -} -EXPORT_SYMBOL_GPL(mod_delayed_work); - -/* - * Kernels >= 3.7 get their PCI-E Capabilities Register cached - * via the pci_dev->pcie_flags_reg so for older kernels we have - * no other option but to read this every single time we need - * it accessed. If we really cared to improve the efficiency - * of this we could try to find an unused u16 varible on the - * pci_dev but if we found it we likely would remove it from - * the kernel anyway right? Bite me. - */ -static inline u16 pcie_flags_reg(struct pci_dev *dev) -{ - int pos; - u16 reg16; - - pos = pci_find_capability(dev, PCI_CAP_ID_EXP); - if (!pos) - return 0; - - pci_read_config_word(dev, pos + PCI_EXP_FLAGS, ®16); - - return reg16; -} - -static inline int pci_pcie_type(struct pci_dev *dev) -{ - return (pcie_flags_reg(dev) & PCI_EXP_FLAGS_TYPE) >> 4; -} - -static inline int pcie_cap_version(struct pci_dev *dev) -{ - return pcie_flags_reg(dev) & PCI_EXP_FLAGS_VERS; -} - -static inline bool pcie_cap_has_devctl(const struct pci_dev *dev) -{ - return true; -} - -static inline bool pcie_cap_has_lnkctl(struct pci_dev *dev) -{ - int type = pci_pcie_type(dev); - - return pcie_cap_version(dev) > 1 || - type == PCI_EXP_TYPE_ROOT_PORT || - type == PCI_EXP_TYPE_ENDPOINT || - type == PCI_EXP_TYPE_LEG_END; -} - -static inline bool pcie_cap_has_sltctl(struct pci_dev *dev) -{ - int type = pci_pcie_type(dev); - - return pcie_cap_version(dev) > 1 || - type == PCI_EXP_TYPE_ROOT_PORT || - (type == PCI_EXP_TYPE_DOWNSTREAM && - pcie_flags_reg(dev) & PCI_EXP_FLAGS_SLOT); -} - -static inline bool pcie_cap_has_rtctl(struct pci_dev *dev) -{ - int type = pci_pcie_type(dev); - - return pcie_cap_version(dev) > 1 || - type == PCI_EXP_TYPE_ROOT_PORT || - type == PCI_EXP_TYPE_RC_EC; -} - -static bool pcie_capability_reg_implemented(struct pci_dev *dev, int pos) -{ - if (!pci_is_pcie(dev)) - return false; - - switch (pos) { - case PCI_EXP_FLAGS_TYPE: - return true; - case PCI_EXP_DEVCAP: - case PCI_EXP_DEVCTL: - case PCI_EXP_DEVSTA: - return pcie_cap_has_devctl(dev); - case PCI_EXP_LNKCAP: - case PCI_EXP_LNKCTL: - case PCI_EXP_LNKSTA: - return pcie_cap_has_lnkctl(dev); - case PCI_EXP_SLTCAP: - case PCI_EXP_SLTCTL: - case PCI_EXP_SLTSTA: - return pcie_cap_has_sltctl(dev); - case PCI_EXP_RTCTL: - case PCI_EXP_RTCAP: - case PCI_EXP_RTSTA: - return pcie_cap_has_rtctl(dev); - case PCI_EXP_DEVCAP2: - case PCI_EXP_DEVCTL2: - case PCI_EXP_LNKCAP2: - case PCI_EXP_LNKCTL2: - case PCI_EXP_LNKSTA2: - return pcie_cap_version(dev) > 1; - default: - return false; - } -} - -/* - * Note that these accessor functions are only for the "PCI Express - * Capability" (see PCIe spec r3.0, sec 7.8). They do not apply to the - * other "PCI Express Extended Capabilities" (AER, VC, ACS, MFVC, etc.) - */ -int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val) -{ - int ret; - - *val = 0; - if (pos & 1) - return -EINVAL; - - if (pcie_capability_reg_implemented(dev, pos)) { - ret = pci_read_config_word(dev, pci_pcie_cap(dev) + pos, val); - /* - * Reset *val to 0 if pci_read_config_word() fails, it may - * have been written as 0xFFFF if hardware error happens - * during pci_read_config_word(). - */ - if (ret) - *val = 0; - return ret; - } - - /* - * For Functions that do not implement the Slot Capabilities, - * Slot Status, and Slot Control registers, these spaces must - * be hardwired to 0b, with the exception of the Presence Detect - * State bit in the Slot Status register of Downstream Ports, - * which must be hardwired to 1b. (PCIe Base Spec 3.0, sec 7.8) - */ - if (pci_is_pcie(dev) && pos == PCI_EXP_SLTSTA && - pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM) { - *val = PCI_EXP_SLTSTA_PDS; - } - - return 0; -} -EXPORT_SYMBOL(pcie_capability_read_word); - -int pcie_capability_read_dword(struct pci_dev *dev, int pos, u32 *val) -{ - int ret; - - *val = 0; - if (pos & 3) - return -EINVAL; - - if (pcie_capability_reg_implemented(dev, pos)) { - ret = pci_read_config_dword(dev, pci_pcie_cap(dev) + pos, val); - /* - * Reset *val to 0 if pci_read_config_dword() fails, it may - * have been written as 0xFFFFFFFF if hardware error happens - * during pci_read_config_dword(). - */ - if (ret) - *val = 0; - return ret; - } - - if (pci_is_pcie(dev) && pos == PCI_EXP_SLTCTL && - pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM) { - *val = PCI_EXP_SLTSTA_PDS; - } - - return 0; -} -EXPORT_SYMBOL(pcie_capability_read_dword); - -int pcie_capability_write_word(struct pci_dev *dev, int pos, u16 val) -{ - if (pos & 1) - return -EINVAL; - - if (!pcie_capability_reg_implemented(dev, pos)) - return 0; - - return pci_write_config_word(dev, pci_pcie_cap(dev) + pos, val); -} -EXPORT_SYMBOL(pcie_capability_write_word); - -int pcie_capability_write_dword(struct pci_dev *dev, int pos, u32 val) -{ - if (pos & 3) - return -EINVAL; - - if (!pcie_capability_reg_implemented(dev, pos)) - return 0; - - return pci_write_config_dword(dev, pci_pcie_cap(dev) + pos, val); -} -EXPORT_SYMBOL(pcie_capability_write_dword); - -int pcie_capability_clear_and_set_word(struct pci_dev *dev, int pos, - u16 clear, u16 set) -{ - int ret; - u16 val; - - ret = pcie_capability_read_word(dev, pos, &val); - if (!ret) { - val &= ~clear; - val |= set; - ret = pcie_capability_write_word(dev, pos, val); - } - - return ret; -} -EXPORT_SYMBOL(pcie_capability_clear_and_set_word); - -int pcie_capability_clear_and_set_dword(struct pci_dev *dev, int pos, - u32 clear, u32 set) -{ - int ret; - u32 val; - - ret = pcie_capability_read_dword(dev, pos, &val); - if (!ret) { - val &= ~clear; - val |= set; - ret = pcie_capability_write_dword(dev, pos, val); - } - - return ret; -} -EXPORT_SYMBOL(pcie_capability_clear_and_set_dword); diff --git a/compat/compat-3.8.c b/compat/compat-3.8.c deleted file mode 100644 index 8134323..0000000 --- a/compat/compat-3.8.c +++ /dev/null @@ -1,365 +0,0 @@ -/* - * Copyright (c) 1999 Andreas Gal - * Copyright (c) 2000-2005 Vojtech Pavlik - * Copyright (c) 2005 Michael Haboustak for Concept2, Inc - * Copyright (c) 2006-2012 Jiri Kosina - * Copyright (c) 2012 Luis R. Rodriguez - * - * Compatibility file for Linux wireless for kernels 3.8. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include -#include -#include -#include "hid-ids.h" -#include - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,8)) -void netdev_set_default_ethtool_ops(struct net_device *dev, - const struct ethtool_ops *ops) -{ - if (!dev->ethtool_ops) - dev->ethtool_ops = ops; -} -EXPORT_SYMBOL_GPL(netdev_set_default_ethtool_ops); -#endif - -/* a list of devices that shouldn't be handled by HID core at all */ -static const struct hid_device_id hid_ignore_list[] = { - { HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ADS_TECH, USB_DEVICE_ID_ADS_TECH_RADIO_SI470X) }, - { HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01) }, - { HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_10) }, - { HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_20) }, - { HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_21) }, - { HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_22) }, - { HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_23) }, - { HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24) }, - { HID_USB_DEVICE(USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM)}, - { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM2)}, - { HID_USB_DEVICE(USB_VENDOR_ID_AVERMEDIA, USB_DEVICE_ID_AVER_FM_MR800) }, - { HID_USB_DEVICE(USB_VENDOR_ID_AXENTIA, USB_DEVICE_ID_AXENTIA_FM_RADIO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD) }, - { HID_USB_DEVICE(USB_VENDOR_ID_CIDC, 0x0103) }, - { HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI470X) }, - { HID_USB_DEVICE(USB_VENDOR_ID_CMEDIA, USB_DEVICE_ID_CM109) }, - { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_HIDCOM) }, - { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_ULTRAMOUSE) }, - { HID_USB_DEVICE(USB_VENDOR_ID_DEALEXTREAME, USB_DEVICE_ID_DEALEXTREAME_RADIO_SI4701) }, - { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE) }, - { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) }, - { HID_USB_DEVICE(USB_VENDOR_ID_DREAM_CHEEKY, 0x0004) }, - { HID_USB_DEVICE(USB_VENDOR_ID_DREAM_CHEEKY, 0x000a) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC5UH) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC4UM) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0004) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_4_PHIDGETSERVO_30) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_1_PHIDGETSERVO_30) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_0_4_IF_KIT) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_16_16_IF_KIT) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_8_8_8_IF_KIT) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_7_IF_KIT) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_8_IF_KIT) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_PHIDGET_MOTORCONTROL) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_SUPER_Q2) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_GOGOPEN) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_PENPOWER) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GRETAGMACBETH, USB_DEVICE_ID_GRETAGMACBETH_HUEY) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_RADIOSHARK) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_90) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_100) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_101) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_103) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_104) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_105) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_106) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_107) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_108) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_200) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_201) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_202) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_203) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_204) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_205) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_206) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_207) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_300) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_301) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_302) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_303) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_304) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_305) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_306) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_307) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_308) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_309) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_400) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_401) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_402) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_403) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_404) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_405) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_500) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_501) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_502) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_503) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_504) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1000) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1001) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1002) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1003) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1005) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006) }, - { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1007) }, - { HID_USB_DEVICE(USB_VENDOR_ID_IMATION, USB_DEVICE_ID_DISC_STAKKA) }, - { HID_USB_DEVICE(USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_KWORLD, USB_DEVICE_ID_KWORLD_RADIO_FM700) }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_GPEN_560) }, - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_KYE, 0x0058) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY2) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY2) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOBILECASSY) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOBILECASSY2) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYVOLTAGE) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYCURRENT) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTIME) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYPH) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIC) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIB) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY2) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_VIDEOCOM) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOTOR) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_COM3LAB) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_TELEPORT) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_NETWORKANALYSER) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERCONTROL) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETEST) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOSTANALYSER) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOSTANALYSER2) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_ABSESP) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_AUTODATABUS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MCT) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HYBRID) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HEATCONTROL) }, - { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_BEATPAD) }, - { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT1) }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT2) }, - { HID_USB_DEVICE(USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR, USB_DEVICE_ID_N_S_HARMONY) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 20) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 30) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 100) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 108) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 118) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 200) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 300) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 400) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 500) }, - { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0001) }, - { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0002) }, - { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0003) }, - { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0004) }, - { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE) }, - { HID_USB_DEVICE(USB_VENDOR_ID_POWERCOM, USB_DEVICE_ID_POWERCOM_UPS) }, -#if defined(CONFIG_MOUSE_SYNAPTICS_USB) || defined(CONFIG_MOUSE_SYNAPTICS_USB_MODULE) - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP) }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_INT_TP) }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_CPAD) }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_STICK) }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_WP) }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_COMP_TP) }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_WTP) }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DPAD) }, -#endif - { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP) }, - { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP) }, - { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_CYCLOPS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LCSPEC) }, - { HID_USB_DEVICE(USB_VENDOR_ID_WACOM, HID_ANY_ID) }, - { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_4_PHIDGETSERVO_20) }, - { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20) }, - { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_8_8_4_IF_KIT) }, - { HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) }, - { } -}; - -/** - * hid_mouse_ignore_list - mouse devices which should not be handled by the hid layer - * - * There are composite devices for which we want to ignore only a certain - * interface. This is a list of devices for which only the mouse interface will - * be ignored. This allows a dedicated driver to take care of the interface. - */ -static const struct hid_device_id hid_mouse_ignore_list[] = { - /* appletouch driver */ - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, - { } -}; - -static bool hid_match_one_id(struct hid_device *hdev, - const struct hid_device_id *id) -{ - return (id->bus == HID_BUS_ANY || id->bus == hdev->bus) && -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) - (id->group == HID_GROUP_ANY || id->group == hdev->group) && -#endif - (id->vendor == HID_ANY_ID || id->vendor == hdev->vendor) && - (id->product == HID_ANY_ID || id->product == hdev->product); -} - -const struct hid_device_id *hid_match_id(struct hid_device *hdev, - const struct hid_device_id *id) -{ - for (; id->bus; id++) - if (hid_match_one_id(hdev, id)) - return id; - - return NULL; -} - -bool hid_ignore(struct hid_device *hdev) -{ - if (hdev->quirks & HID_QUIRK_NO_IGNORE) - return false; - if (hdev->quirks & HID_QUIRK_IGNORE) - return true; - - switch (hdev->vendor) { - case USB_VENDOR_ID_CODEMERCS: - /* ignore all Code Mercenaries IOWarrior devices */ - if (hdev->product >= USB_DEVICE_ID_CODEMERCS_IOW_FIRST && - hdev->product <= USB_DEVICE_ID_CODEMERCS_IOW_LAST) - return true; - break; - case USB_VENDOR_ID_LOGITECH: - if (hdev->product >= USB_DEVICE_ID_LOGITECH_HARMONY_FIRST && - hdev->product <= USB_DEVICE_ID_LOGITECH_HARMONY_LAST) - return true; - /* - * The Keene FM transmitter USB device has the same USB ID as - * the Logitech AudioHub Speaker, but it should ignore the hid. - * Check if the name is that of the Keene device. - * For reference: the name of the AudioHub is - * "HOLTEK AudioHub Speaker". - */ - if (hdev->product == USB_DEVICE_ID_LOGITECH_AUDIOHUB && - !strcmp(hdev->name, "HOLTEK B-LINK USB Audio ")) - return true; - break; - case USB_VENDOR_ID_SOUNDGRAPH: - if (hdev->product >= USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST && - hdev->product <= USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST) - return true; - break; - case USB_VENDOR_ID_HANWANG: - if (hdev->product >= USB_DEVICE_ID_HANWANG_TABLET_FIRST && - hdev->product <= USB_DEVICE_ID_HANWANG_TABLET_LAST) - return true; - break; - case USB_VENDOR_ID_JESS: -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) - if (hdev->product == USB_DEVICE_ID_JESS_YUREX && - hdev->type == HID_TYPE_USBNONE) - return true; -#else - if (hdev->product == USB_DEVICE_ID_JESS_YUREX) - return true; -#endif - break; - case USB_VENDOR_ID_DWAV: - /* These are handled by usbtouchscreen. hdev->type is probably - * HID_TYPE_USBNONE, but we say !HID_TYPE_USBMOUSE to match - * usbtouchscreen. */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) - if ((hdev->product == USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER || - hdev->product == USB_DEVICE_ID_DWAV_TOUCHCONTROLLER) && - hdev->type != HID_TYPE_USBMOUSE) - return true; -#else - if (hdev->product == USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER || - hdev->product == USB_DEVICE_ID_DWAV_TOUCHCONTROLLER) - return true; -#endif - break; - } - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) - if (hdev->type == HID_TYPE_USBMOUSE && - hid_match_id(hdev, hid_mouse_ignore_list)) - return true; -#endif - - return !!hid_match_id(hdev, hid_ignore_list); -} -EXPORT_SYMBOL_GPL(hid_ignore); diff --git a/compat/compat_atomic.c b/compat/compat_atomic.c deleted file mode 100644 index b8565aa..0000000 --- a/compat/compat_atomic.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include - -#if !((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)) && (defined(CONFIG_UML) || defined(CONFIG_X86))) && !((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33)) && defined(CONFIG_ARM) && !defined(CONFIG_GENERIC_ATOMIC64)) - -static DEFINE_SPINLOCK(lock); - -long long atomic64_read(const atomic64_t *v) -{ - unsigned long flags; - long long val; - - spin_lock_irqsave(&lock, flags); - val = v->counter; - spin_unlock_irqrestore(&lock, flags); - return val; -} -EXPORT_SYMBOL_GPL(atomic64_read); - -long long atomic64_add_return(long long a, atomic64_t *v) -{ - unsigned long flags; - long long val; - - spin_lock_irqsave(&lock, flags); - val = v->counter += a; - spin_unlock_irqrestore(&lock, flags); - return val; -} -EXPORT_SYMBOL_GPL(atomic64_add_return); - -#endif - diff --git a/compat/compat_firmware_class.c b/compat/compat_firmware_class.c deleted file mode 100644 index 69b442b..0000000 --- a/compat/compat_firmware_class.c +++ /dev/null @@ -1,759 +0,0 @@ -/* - * firmware_class.c - Multi purpose firmware loading support - * - * Copyright (c) 2003 Manuel Estrada Sainz - * - * Please see Documentation/firmware_class/ for more information. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define compat_firmware_to_dev(obj) container_of(obj, struct device, kobj) - -MODULE_AUTHOR("Manuel Estrada Sainz"); -MODULE_DESCRIPTION("Multi purpose firmware loading support"); -MODULE_LICENSE("GPL"); - -/* Builtin firmware support */ - -//#ifdef CONFIG_FW_LOADER -#if 0 - -extern struct builtin_fw __start_builtin_fw[]; -extern struct builtin_fw __end_builtin_fw[]; - -static bool fw_get_builtin_firmware(struct firmware *fw, const char *name) -{ - struct builtin_fw *b_fw; - - for (b_fw = __start_builtin_fw; b_fw != __end_builtin_fw; b_fw++) { - if (strcmp(name, b_fw->name) == 0) { - fw->size = b_fw->size; - fw->data = b_fw->data; - return true; - } - } - - return false; -} - -static bool fw_is_builtin_firmware(const struct firmware *fw) -{ - struct builtin_fw *b_fw; - - for (b_fw = __start_builtin_fw; b_fw != __end_builtin_fw; b_fw++) - if (fw->data == b_fw->data) - return true; - - return false; -} - -#else /* Module case - no builtin firmware support */ - -static inline bool fw_get_builtin_firmware(struct firmware *fw, const char *name) -{ - return false; -} - -static inline bool fw_is_builtin_firmware(const struct firmware *fw) -{ - return false; -} -#endif - -enum { - FW_STATUS_LOADING, - FW_STATUS_DONE, - FW_STATUS_ABORT, -}; - -static int loading_timeout = 60; /* In seconds */ - -/* fw_lock could be moved to 'struct firmware_priv' but since it is just - * guarding for corner cases a global lock should be OK */ -static DEFINE_MUTEX(fw_lock); - -struct firmware_priv { - struct completion completion; - struct firmware *fw; - unsigned long status; - struct page **pages; - int nr_pages; - int page_array_size; - struct timer_list timeout; - struct device dev; - bool nowait; - char fw_id[]; -}; - -static struct firmware_priv *to_firmware_priv(struct device *dev) -{ - return container_of(dev, struct firmware_priv, dev); -} - -static void fw_load_abort(struct firmware_priv *fw_priv) -{ - set_bit(FW_STATUS_ABORT, &fw_priv->status); - wmb(); - complete(&fw_priv->completion); -} - -static ssize_t firmware_timeout_show(struct class *class, - char *buf) -{ - return sprintf(buf, "%d\n", loading_timeout); -} - -/** - * firmware_timeout_store - set number of seconds to wait for firmware - * @class: device class pointer - * @buf: buffer to scan for timeout value - * @count: number of bytes in @buf - * - * Sets the number of seconds to wait for the firmware. Once - * this expires an error will be returned to the driver and no - * firmware will be provided. - * - * Note: zero means 'wait forever'. - **/ -static ssize_t firmware_timeout_store(struct class *class, - const char *buf, size_t count) -{ - loading_timeout = simple_strtol(buf, NULL, 10); - if (loading_timeout < 0) - loading_timeout = 0; - - return count; -} - -static struct class_attribute firmware_class_attrs[] = { - __ATTR(timeout, S_IWUSR | S_IRUGO, - firmware_timeout_show, firmware_timeout_store), - __ATTR_NULL -}; - -static void fw_dev_release(struct device *dev) -{ - struct firmware_priv *fw_priv = to_firmware_priv(dev); - int i; - - for (i = 0; i < fw_priv->nr_pages; i++) - __free_page(fw_priv->pages[i]); - kfree(fw_priv->pages); - kfree(fw_priv); - - module_put(THIS_MODULE); -} - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) -static int firmware_uevent(struct device *dev, struct kobj_uevent_env *env) -{ - struct firmware_priv *fw_priv = to_firmware_priv(dev); - - if (add_uevent_var(env, "FIRMWARE=%s", fw_priv->fw_id)) - return -ENOMEM; - if (add_uevent_var(env, "TIMEOUT=%i", loading_timeout)) - return -ENOMEM; - if (add_uevent_var(env, "ASYNC=%d", fw_priv->nowait)) - return -ENOMEM; - - return 0; -} -#else -static int firmware_uevent(struct device *dev, char **envp, - int num_envp, char *buf, int size) -{ - struct firmware_priv *fw_priv = to_firmware_priv(dev); - int error, len = 0, i = 0; - - error = add_uevent_var(envp, num_envp, &i, - buf, size, &len, - "FIRMWARE=%s", fw_priv->fw_id); - if (error) - goto exit; - - error = add_uevent_var(envp, num_envp, &i, - buf, size, &len, - "TIMEOUT=%i", loading_timeout); - if (error) - goto exit; - error = add_uevent_var(envp, num_envp, &i, - buf, size, &len, - "ASYNC=%i", fw_priv->nowait); - if (error) - goto exit; - - return 0; -exit: - envp[i] = NULL; - return error; -} -#endif - -static struct class firmware_class = { - .name = "compat_firmware", - .class_attrs = firmware_class_attrs, - .dev_uevent = firmware_uevent, - .dev_release = fw_dev_release, -}; - -static ssize_t firmware_loading_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct firmware_priv *fw_priv = to_firmware_priv(dev); - int loading = test_bit(FW_STATUS_LOADING, &fw_priv->status); - - return sprintf(buf, "%d\n", loading); -} - -static void firmware_free_data(const struct firmware *fw) -{ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) - int i; - vunmap(fw->data); - if (fw->pages) { - for (i = 0; i < PFN_UP(fw->size); i++) - __free_page(fw->pages[i]); - kfree(fw->pages); - } -#else - vunmap(fw->data); -#endif -} - -/* Some architectures don't have PAGE_KERNEL_RO */ -#ifndef PAGE_KERNEL_RO -#define PAGE_KERNEL_RO PAGE_KERNEL -#endif -/** - * firmware_loading_store - set value in the 'loading' control file - * @dev: device pointer - * @buf: buffer to scan for loading control value - * @count: number of bytes in @buf - * - * The relevant values are: - * - * 1: Start a load, discarding any previous partial load. - * 0: Conclude the load and hand the data to the driver code. - * -1: Conclude the load with an error and discard any written data. - **/ -static ssize_t firmware_loading_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - struct firmware_priv *fw_priv = to_firmware_priv(dev); - int loading = simple_strtol(buf, NULL, 10); - int i; - - switch (loading) { - case 1: - mutex_lock(&fw_lock); - if (!fw_priv->fw) { - mutex_unlock(&fw_lock); - break; - } - firmware_free_data(fw_priv->fw); - memset(fw_priv->fw, 0, sizeof(struct firmware)); - /* If the pages are not owned by 'struct firmware' */ - for (i = 0; i < fw_priv->nr_pages; i++) - __free_page(fw_priv->pages[i]); - kfree(fw_priv->pages); - fw_priv->pages = NULL; - fw_priv->page_array_size = 0; - fw_priv->nr_pages = 0; - set_bit(FW_STATUS_LOADING, &fw_priv->status); - mutex_unlock(&fw_lock); - break; - case 0: - if (test_bit(FW_STATUS_LOADING, &fw_priv->status)) { - vunmap(fw_priv->fw->data); - fw_priv->fw->data = vmap(fw_priv->pages, - fw_priv->nr_pages, - 0, PAGE_KERNEL_RO); - if (!fw_priv->fw->data) { - dev_err(dev, "%s: vmap() failed\n", __func__); - goto err; - } - /* Pages are now owned by 'struct firmware' */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) - fw_priv->fw->pages = fw_priv->pages; - fw_priv->pages = NULL; -#endif - - fw_priv->page_array_size = 0; - fw_priv->nr_pages = 0; - complete(&fw_priv->completion); - clear_bit(FW_STATUS_LOADING, &fw_priv->status); - break; - } - /* fallthrough */ - default: - dev_err(dev, "%s: unexpected value (%d)\n", __func__, loading); - /* fallthrough */ - case -1: - err: - fw_load_abort(fw_priv); - break; - } - - return count; -} - -static DEVICE_ATTR(loading, 0644, firmware_loading_show, firmware_loading_store); - -#if defined(CONFIG_COMPAT_FIRMWARE_DATA_RW_NEEDS_FILP) -static ssize_t firmware_data_read(struct file *filp, struct kobject *kobj, - struct bin_attribute *bin_attr, - char *buffer, loff_t offset, size_t count) -#else -static ssize_t firmware_data_read(struct kobject *kobj, - struct bin_attribute *bin_attr, - char *buffer, loff_t offset, size_t count) -#endif -{ - struct device *dev = compat_firmware_to_dev(kobj); - struct firmware_priv *fw_priv = to_firmware_priv(dev); - struct firmware *fw; - ssize_t ret_count; - - mutex_lock(&fw_lock); - fw = fw_priv->fw; - if (!fw || test_bit(FW_STATUS_DONE, &fw_priv->status)) { - ret_count = -ENODEV; - goto out; - } - if (offset > fw->size) { - ret_count = 0; - goto out; - } - if (count > fw->size - offset) - count = fw->size - offset; - - ret_count = count; - - while (count) { - void *page_data; - int page_nr = offset >> PAGE_SHIFT; - int page_ofs = offset & (PAGE_SIZE-1); - int page_cnt = min_t(size_t, PAGE_SIZE - page_ofs, count); - - page_data = kmap(fw_priv->pages[page_nr]); - - memcpy(buffer, page_data + page_ofs, page_cnt); - - kunmap(fw_priv->pages[page_nr]); - buffer += page_cnt; - offset += page_cnt; - count -= page_cnt; - } -out: - mutex_unlock(&fw_lock); - return ret_count; -} - -static int fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size) -{ - int pages_needed = ALIGN(min_size, PAGE_SIZE) >> PAGE_SHIFT; - - /* If the array of pages is too small, grow it... */ - if (fw_priv->page_array_size < pages_needed) { - int new_array_size = max(pages_needed, - fw_priv->page_array_size * 2); - struct page **new_pages; - - new_pages = kmalloc(new_array_size * sizeof(void *), - GFP_KERNEL); - if (!new_pages) { - fw_load_abort(fw_priv); - return -ENOMEM; - } - memcpy(new_pages, fw_priv->pages, - fw_priv->page_array_size * sizeof(void *)); - memset(&new_pages[fw_priv->page_array_size], 0, sizeof(void *) * - (new_array_size - fw_priv->page_array_size)); - kfree(fw_priv->pages); - fw_priv->pages = new_pages; - fw_priv->page_array_size = new_array_size; - } - - while (fw_priv->nr_pages < pages_needed) { - fw_priv->pages[fw_priv->nr_pages] = - alloc_page(GFP_KERNEL | __GFP_HIGHMEM); - - if (!fw_priv->pages[fw_priv->nr_pages]) { - fw_load_abort(fw_priv); - return -ENOMEM; - } - fw_priv->nr_pages++; - } - return 0; -} - -/** - * firmware_data_write - write method for firmware - * @kobj: kobject for the device - * @bin_attr: bin_attr structure - * @buffer: buffer being written - * @offset: buffer offset for write in total data store area - * @count: buffer size - * - * Data written to the 'data' attribute will be later handed to - * the driver as a firmware image. - **/ -#if defined(CONFIG_COMPAT_FIRMWARE_DATA_RW_NEEDS_FILP) -static ssize_t firmware_data_write(struct file *filp, struct kobject *kobj, - struct bin_attribute *bin_attr, - char *buffer, loff_t offset, size_t count) -#else -static ssize_t firmware_data_write(struct kobject *kobj, - struct bin_attribute *bin_attr, - char *buffer, loff_t offset, size_t count) -#endif -{ - struct device *dev = compat_firmware_to_dev(kobj); - struct firmware_priv *fw_priv = to_firmware_priv(dev); - struct firmware *fw; - ssize_t retval; - - if (!capable(CAP_SYS_RAWIO)) - return -EPERM; - - mutex_lock(&fw_lock); - fw = fw_priv->fw; - if (!fw || test_bit(FW_STATUS_DONE, &fw_priv->status)) { - retval = -ENODEV; - goto out; - } - retval = fw_realloc_buffer(fw_priv, offset + count); - if (retval) - goto out; - - retval = count; - - while (count) { - void *page_data; - int page_nr = offset >> PAGE_SHIFT; - int page_ofs = offset & (PAGE_SIZE - 1); - int page_cnt = min_t(size_t, PAGE_SIZE - page_ofs, count); - - page_data = kmap(fw_priv->pages[page_nr]); - - memcpy(page_data + page_ofs, buffer, page_cnt); - - kunmap(fw_priv->pages[page_nr]); - buffer += page_cnt; - offset += page_cnt; - count -= page_cnt; - } - - fw->size = max_t(size_t, offset, fw->size); -out: - mutex_unlock(&fw_lock); - return retval; -} - -static struct bin_attribute firmware_attr_data = { - .attr = { .name = "data", .mode = 0644 }, - .size = 0, - .read = firmware_data_read, - .write = firmware_data_write, -}; - -static void firmware_class_timeout(u_long data) -{ - struct firmware_priv *fw_priv = (struct firmware_priv *) data; - - fw_load_abort(fw_priv); -} - -static struct firmware_priv * -fw_create_instance(struct firmware *firmware, const char *fw_name, - struct device *device, bool uevent, bool nowait) -{ - struct firmware_priv *fw_priv; - struct device *f_dev; - int error; - - fw_priv = kzalloc(sizeof(*fw_priv) + strlen(fw_name) + 1 , GFP_KERNEL); - if (!fw_priv) { - dev_err(device, "%s: kmalloc failed\n", __func__); - error = -ENOMEM; - goto err_out; - } - - fw_priv->fw = firmware; - fw_priv->nowait = nowait; - strcpy(fw_priv->fw_id, fw_name); - init_completion(&fw_priv->completion); - setup_timer(&fw_priv->timeout, - firmware_class_timeout, (u_long) fw_priv); - - f_dev = &fw_priv->dev; - - device_initialize(f_dev); - dev_set_name(f_dev, "%s", dev_name(device)); - f_dev->parent = device; - f_dev->class = &firmware_class; - - dev_set_uevent_suppress(f_dev, true); - - /* Need to pin this module until class device is destroyed */ - __module_get(THIS_MODULE); - - error = device_add(f_dev); - if (error) { - dev_err(device, "%s: device_register failed\n", __func__); - goto err_put_dev; - } - - error = device_create_bin_file(f_dev, &firmware_attr_data); - if (error) { - dev_err(device, "%s: sysfs_create_bin_file failed\n", __func__); - goto err_del_dev; - } - - error = device_create_file(f_dev, &dev_attr_loading); - if (error) { - dev_err(device, "%s: device_create_file failed\n", __func__); - goto err_del_bin_attr; - } - - if (uevent) - dev_set_uevent_suppress(f_dev, false); - - return fw_priv; - -err_del_bin_attr: - device_remove_bin_file(f_dev, &firmware_attr_data); -err_del_dev: - device_del(f_dev); -err_put_dev: - put_device(f_dev); -err_out: - return ERR_PTR(error); -} - -static void fw_destroy_instance(struct firmware_priv *fw_priv) -{ - struct device *f_dev = &fw_priv->dev; - - device_remove_file(f_dev, &dev_attr_loading); - device_remove_bin_file(f_dev, &firmware_attr_data); - device_unregister(f_dev); -} - -static int _request_firmware(const struct firmware **firmware_p, - const char *name, struct device *device, - bool uevent, bool nowait) -{ - struct firmware_priv *fw_priv; - struct firmware *firmware; - int retval = 0; - - if (!firmware_p) - return -EINVAL; - - *firmware_p = firmware = kzalloc(sizeof(*firmware), GFP_KERNEL); - if (!firmware) { - dev_err(device, "%s: kmalloc(struct firmware) failed\n", - __func__); - retval = -ENOMEM; - goto out; - } - - if (fw_get_builtin_firmware(firmware, name)) { - dev_dbg(device, "firmware: using built-in firmware %s\n", name); - return 0; - } - - if (uevent) - dev_dbg(device, "firmware: requesting %s\n", name); - - fw_priv = fw_create_instance(firmware, name, device, uevent, nowait); - if (IS_ERR(fw_priv)) { - retval = PTR_ERR(fw_priv); - goto out; - } - - if (uevent) { - if (loading_timeout > 0) - mod_timer(&fw_priv->timeout, - round_jiffies_up(jiffies + - loading_timeout * HZ)); - - kobject_uevent(&fw_priv->dev.kobj, KOBJ_ADD); - } - - wait_for_completion(&fw_priv->completion); - - set_bit(FW_STATUS_DONE, &fw_priv->status); - del_timer_sync(&fw_priv->timeout); - - mutex_lock(&fw_lock); - if (!fw_priv->fw->size || test_bit(FW_STATUS_ABORT, &fw_priv->status)) - retval = -ENOENT; - fw_priv->fw = NULL; - mutex_unlock(&fw_lock); - - fw_destroy_instance(fw_priv); - -out: - if (retval) { - release_firmware(firmware); - *firmware_p = NULL; - } - - return retval; -} - -/** - * request_firmware: - send firmware request and wait for it - * @firmware_p: pointer to firmware image - * @name: name of firmware file - * @device: device for which firmware is being loaded - * - * @firmware_p will be used to return a firmware image by the name - * of @name for device @device. - * - * Should be called from user context where sleeping is allowed. - * - * @name will be used as $FIRMWARE in the uevent environment and - * should be distinctive enough not to be confused with any other - * firmware image for this or any other device. - **/ -int -compat_request_firmware(const struct firmware **firmware_p, const char *name, - struct device *device) -{ - int uevent = 1; - return _request_firmware(firmware_p, name, device, uevent, false); -} - -/** - * release_firmware: - release the resource associated with a firmware image - * @fw: firmware resource to release - **/ -void compat_release_firmware(const struct firmware *fw) -{ - if (fw) { - if (!fw_is_builtin_firmware(fw)) - firmware_free_data(fw); - kfree(fw); - } -} - -/* Async support */ -struct firmware_work { - struct work_struct work; - struct module *module; - const char *name; - struct device *device; - void *context; - void (*cont)(const struct firmware *fw, void *context); - int uevent; -}; - -static int request_firmware_work_func(void *arg) -{ - struct firmware_work *fw_work = arg; - const struct firmware *fw; - int ret; - - if (!arg) { - WARN_ON(1); - return 0; - } - - ret = _request_firmware(&fw, fw_work->name, fw_work->device, - fw_work->uevent, true); - fw_work->cont(fw, fw_work->context); - - module_put(fw_work->module); - kfree(fw_work); - - return ret; -} - -/** - * request_firmware_nowait - asynchronous version of request_firmware - * @module: module requesting the firmware - * @uevent: sends uevent to copy the firmware image if this flag - * is non-zero else the firmware copy must be done manually. - * @name: name of firmware file - * @device: device for which firmware is being loaded - * @gfp: allocation flags - * @context: will be passed over to @cont, and - * @fw may be %NULL if firmware request fails. - * @cont: function will be called asynchronously when the firmware - * request is over. - * - * Asynchronous variant of request_firmware() for user contexts where - * it is not possible to sleep for long time. It can't be called - * in atomic contexts. - **/ -int -compat_request_firmware_nowait( - struct module *module, int uevent, - const char *name, struct device *device, gfp_t gfp, void *context, - void (*cont)(const struct firmware *fw, void *context)) -{ - struct task_struct *task; - struct firmware_work *fw_work; - - fw_work = kzalloc(sizeof (struct firmware_work), gfp); - if (!fw_work) - return -ENOMEM; - - fw_work->module = module; - fw_work->name = name; - fw_work->device = device; - fw_work->context = context; - fw_work->cont = cont; - fw_work->uevent = uevent; - - if (!try_module_get(module)) { - kfree(fw_work); - return -EFAULT; - } - - task = kthread_run(request_firmware_work_func, fw_work, - "firmware/%s", name); - if (IS_ERR(task)) { - fw_work->cont(NULL, fw_work->context); - module_put(fw_work->module); - kfree(fw_work); - return PTR_ERR(task); - } - - return 0; -} - -static int __init firmware_class_init(void) -{ - return class_register(&firmware_class); -} - -static void __exit firmware_class_exit(void) -{ - class_unregister(&firmware_class); -} - -fs_initcall(firmware_class_init); -module_exit(firmware_class_exit); - -EXPORT_SYMBOL_GPL(release_firmware); -EXPORT_SYMBOL_GPL(request_firmware); -EXPORT_SYMBOL_GPL(request_firmware_nowait); diff --git a/compat/cordic.c b/compat/cordic.c deleted file mode 100644 index a6340b6..0000000 --- a/compat/cordic.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2011 Broadcom Corporation - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -#include -#include - -#define CORDIC_ANGLE_GEN 39797 -#define CORDIC_PRECISION_SHIFT 16 -#define CORDIC_NUM_ITER (CORDIC_PRECISION_SHIFT + 2) - -#define FIXED(X) ((s32)((X) << CORDIC_PRECISION_SHIFT)) -#define FLOAT(X) (((X) >= 0) \ - ? ((((X) >> (CORDIC_PRECISION_SHIFT - 1)) + 1) >> 1) \ - : -((((-(X)) >> (CORDIC_PRECISION_SHIFT - 1)) + 1) >> 1)) - -static const s32 arctan_table[] = { - 2949120, - 1740967, - 919879, - 466945, - 234379, - 117304, - 58666, - 29335, - 14668, - 7334, - 3667, - 1833, - 917, - 458, - 229, - 115, - 57, - 29 -}; - -/* - * cordic_calc_iq() - calculates the i/q coordinate for given angle - * - * theta: angle in degrees for which i/q coordinate is to be calculated - * coord: function output parameter holding the i/q coordinate - */ -struct cordic_iq cordic_calc_iq(s32 theta) -{ - struct cordic_iq coord; - s32 angle, valtmp; - unsigned iter; - int signx = 1; - int signtheta; - - coord.i = CORDIC_ANGLE_GEN; - coord.q = 0; - angle = 0; - - theta = FIXED(theta); - signtheta = (theta < 0) ? -1 : 1; - theta = ((theta + FIXED(180) * signtheta) % FIXED(360)) - - FIXED(180) * signtheta; - - if (FLOAT(theta) > 90) { - theta -= FIXED(180); - signx = -1; - } else if (FLOAT(theta) < -90) { - theta += FIXED(180); - signx = -1; - } - - for (iter = 0; iter < CORDIC_NUM_ITER; iter++) { - if (theta > angle) { - valtmp = coord.i - (coord.q >> iter); - coord.q += (coord.i >> iter); - angle += arctan_table[iter]; - } else { - valtmp = coord.i + (coord.q >> iter); - coord.q -= (coord.i >> iter); - angle -= arctan_table[iter]; - } - coord.i = valtmp; - } - - coord.i *= signx; - coord.q *= signx; - return coord; -} -EXPORT_SYMBOL_GPL(cordic_calc_iq); - -MODULE_DESCRIPTION("Cordic functions"); -MODULE_AUTHOR("Broadcom Corporation"); -MODULE_LICENSE("Dual BSD/GPL"); diff --git a/compat/crc8.c b/compat/crc8.c deleted file mode 100644 index 5878171..0000000 --- a/compat/crc8.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2011 Broadcom Corporation - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#undef pr_fmt -#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt - -#include -#include -#include - -/* - * crc8_populate_msb - fill crc table for given polynomial in reverse bit order. - * - * table: table to be filled. - * polynomial: polynomial for which table is to be filled. - */ -void crc8_populate_msb(u8 table[CRC8_TABLE_SIZE], u8 polynomial) -{ - int i, j; - const u8 msbit = 0x80; - u8 t = msbit; - - table[0] = 0; - - for (i = 1; i < CRC8_TABLE_SIZE; i *= 2) { - t = (t << 1) ^ (t & msbit ? polynomial : 0); - for (j = 0; j < i; j++) - table[i+j] = table[j] ^ t; - } -} -EXPORT_SYMBOL_GPL(crc8_populate_msb); - -/* - * crc8_populate_lsb - fill crc table for given polynomial in regular bit order. - * - * table: table to be filled. - * polynomial: polynomial for which table is to be filled. - */ -void crc8_populate_lsb(u8 table[CRC8_TABLE_SIZE], u8 polynomial) -{ - int i, j; - u8 t = 1; - - table[0] = 0; - - for (i = (CRC8_TABLE_SIZE >> 1); i; i >>= 1) { - t = (t >> 1) ^ (t & 1 ? polynomial : 0); - for (j = 0; j < CRC8_TABLE_SIZE; j += 2*i) - table[i+j] = table[j] ^ t; - } -} -EXPORT_SYMBOL_GPL(crc8_populate_lsb); - -/* - * crc8 - calculate a crc8 over the given input data. - * - * table: crc table used for calculation. - * pdata: pointer to data buffer. - * nbytes: number of bytes in data buffer. - * crc: previous returned crc8 value. - */ -u8 crc8(const u8 table[CRC8_TABLE_SIZE], u8 *pdata, size_t nbytes, u8 crc) -{ - /* loop over the buffer data */ - while (nbytes-- > 0) - crc = table[(crc ^ *pdata++) & 0xff]; - - return crc; -} -EXPORT_SYMBOL_GPL(crc8); - -MODULE_DESCRIPTION("CRC8 (by Williams, Ross N.) function"); -MODULE_AUTHOR("Broadcom Corporation"); -MODULE_LICENSE("Dual BSD/GPL"); diff --git a/compat/flow_dissector.c b/compat/flow_dissector.c deleted file mode 100644 index 7dd7ec1..0000000 --- a/compat/flow_dissector.c +++ /dev/null @@ -1,143 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* copy saddr & daddr, possibly using 64bit load/store - * Equivalent to : flow->src = iph->saddr; - * flow->dst = iph->daddr; - */ -static void iph_to_flow_copy_addrs(struct flow_keys *flow, const struct iphdr *iph) -{ - BUILD_BUG_ON(offsetof(typeof(*flow), dst) != - offsetof(typeof(*flow), src) + sizeof(flow->src)); - memcpy(&flow->src, &iph->saddr, sizeof(flow->src) + sizeof(flow->dst)); -} - -bool skb_flow_dissect(const struct sk_buff *skb, struct flow_keys *flow) -{ - int poff, nhoff = skb_network_offset(skb); - u8 ip_proto; - __be16 proto = skb->protocol; - - memset(flow, 0, sizeof(*flow)); - -again: - switch (proto) { - case __constant_htons(ETH_P_IP): { - const struct iphdr *iph; - struct iphdr _iph; -ip: - iph = skb_header_pointer(skb, nhoff, sizeof(_iph), &_iph); - if (!iph) - return false; - - if (ip_is_fragment(iph)) - ip_proto = 0; - else - ip_proto = iph->protocol; - iph_to_flow_copy_addrs(flow, iph); - nhoff += iph->ihl * 4; - break; - } - case __constant_htons(ETH_P_IPV6): { - const struct ipv6hdr *iph; - struct ipv6hdr _iph; -ipv6: - iph = skb_header_pointer(skb, nhoff, sizeof(_iph), &_iph); - if (!iph) - return false; - - ip_proto = iph->nexthdr; - flow->src = iph->saddr.s6_addr32[3]; - flow->dst = iph->daddr.s6_addr32[3]; - nhoff += sizeof(struct ipv6hdr); - break; - } - case __constant_htons(ETH_P_8021Q): { - const struct vlan_hdr *vlan; - struct vlan_hdr _vlan; - - vlan = skb_header_pointer(skb, nhoff, sizeof(_vlan), &_vlan); - if (!vlan) - return false; - - proto = vlan->h_vlan_encapsulated_proto; - nhoff += sizeof(*vlan); - goto again; - } - case __constant_htons(ETH_P_PPP_SES): { - struct { - struct pppoe_hdr hdr; - __be16 proto; - } *hdr, _hdr; - hdr = skb_header_pointer(skb, nhoff, sizeof(_hdr), &_hdr); - if (!hdr) - return false; - proto = hdr->proto; - nhoff += PPPOE_SES_HLEN; - switch (proto) { - case __constant_htons(PPP_IP): - goto ip; - case __constant_htons(PPP_IPV6): - goto ipv6; - default: - return false; - } - } - default: - return false; - } - - switch (ip_proto) { - case IPPROTO_GRE: { - struct gre_hdr { - __be16 flags; - __be16 proto; - } *hdr, _hdr; - - hdr = skb_header_pointer(skb, nhoff, sizeof(_hdr), &_hdr); - if (!hdr) - return false; - /* - * Only look inside GRE if version zero and no - * routing - */ - if (!(hdr->flags & (GRE_VERSION|GRE_ROUTING))) { - proto = hdr->proto; - nhoff += 4; - if (hdr->flags & GRE_CSUM) - nhoff += 4; - if (hdr->flags & GRE_KEY) - nhoff += 4; - if (hdr->flags & GRE_SEQ) - nhoff += 4; - goto again; - } - break; - } - case IPPROTO_IPIP: - goto again; - default: - break; - } - - flow->ip_proto = ip_proto; - poff = proto_ports_offset(ip_proto); - if (poff >= 0) { - __be32 *ports, _ports; - - nhoff += poff; - ports = skb_header_pointer(skb, nhoff, sizeof(_ports), &_ports); - if (ports) - flow->ports = *ports; - } - - return true; -} diff --git a/compat/hid-ids.h b/compat/hid-ids.h deleted file mode 100644 index c147dc0..0000000 --- a/compat/hid-ids.h +++ /dev/null @@ -1,866 +0,0 @@ -/* - * USB HID quirks support for Linux - * - * Copyright (c) 1999 Andreas Gal - * Copyright (c) 2000-2005 Vojtech Pavlik - * Copyright (c) 2005 Michael Haboustak for Concept2, Inc - * Copyright (c) 2006-2007 Jiri Kosina - */ - -/* - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - */ - -#ifndef HID_IDS_H_FILE -#define HID_IDS_H_FILE - -#define USB_VENDOR_ID_3M 0x0596 -#define USB_DEVICE_ID_3M1968 0x0500 -#define USB_DEVICE_ID_3M2256 0x0502 -#define USB_DEVICE_ID_3M3266 0x0506 - -#define USB_VENDOR_ID_A4TECH 0x09da -#define USB_DEVICE_ID_A4TECH_WCP32PU 0x0006 -#define USB_DEVICE_ID_A4TECH_X5_005D 0x000a -#define USB_DEVICE_ID_A4TECH_RP_649 0x001a - -#define USB_VENDOR_ID_AASHIMA 0x06d6 -#define USB_DEVICE_ID_AASHIMA_GAMEPAD 0x0025 -#define USB_DEVICE_ID_AASHIMA_PREDATOR 0x0026 - -#define USB_VENDOR_ID_ACECAD 0x0460 -#define USB_DEVICE_ID_ACECAD_FLAIR 0x0004 -#define USB_DEVICE_ID_ACECAD_302 0x0008 - -#define USB_VENDOR_ID_ACRUX 0x1a34 - -#define USB_VENDOR_ID_ACTIONSTAR 0x2101 -#define USB_DEVICE_ID_ACTIONSTAR_1011 0x1011 - -#define USB_VENDOR_ID_ADS_TECH 0x06e1 -#define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X 0xa155 - -#define USB_VENDOR_ID_AFATECH 0x15a4 -#define USB_DEVICE_ID_AFATECH_AF9016 0x9016 - -#define USB_VENDOR_ID_AIPTEK 0x08ca -#define USB_DEVICE_ID_AIPTEK_01 0x0001 -#define USB_DEVICE_ID_AIPTEK_10 0x0010 -#define USB_DEVICE_ID_AIPTEK_20 0x0020 -#define USB_DEVICE_ID_AIPTEK_21 0x0021 -#define USB_DEVICE_ID_AIPTEK_22 0x0022 -#define USB_DEVICE_ID_AIPTEK_23 0x0023 -#define USB_DEVICE_ID_AIPTEK_24 0x0024 - -#define USB_VENDOR_ID_AIRCABLE 0x16CA -#define USB_DEVICE_ID_AIRCABLE1 0x1502 - -#define USB_VENDOR_ID_AIREN 0x1a2c -#define USB_DEVICE_ID_AIREN_SLIMPLUS 0x0002 - -#define USB_VENDOR_ID_ALCOR 0x058f -#define USB_DEVICE_ID_ALCOR_USBRS232 0x9720 - -#define USB_VENDOR_ID_ALPS 0x0433 -#define USB_DEVICE_ID_IBM_GAMEPAD 0x1101 - -#define USB_VENDOR_ID_APPLE 0x05ac -#define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304 -#define USB_DEVICE_ID_APPLE_MAGICMOUSE 0x030d -#define USB_DEVICE_ID_APPLE_MAGICTRACKPAD 0x030e -#define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e -#define USB_DEVICE_ID_APPLE_FOUNTAIN_ISO 0x020f -#define USB_DEVICE_ID_APPLE_GEYSER_ANSI 0x0214 -#define USB_DEVICE_ID_APPLE_GEYSER_ISO 0x0215 -#define USB_DEVICE_ID_APPLE_GEYSER_JIS 0x0216 -#define USB_DEVICE_ID_APPLE_GEYSER3_ANSI 0x0217 -#define USB_DEVICE_ID_APPLE_GEYSER3_ISO 0x0218 -#define USB_DEVICE_ID_APPLE_GEYSER3_JIS 0x0219 -#define USB_DEVICE_ID_APPLE_GEYSER4_ANSI 0x021a -#define USB_DEVICE_ID_APPLE_GEYSER4_ISO 0x021b -#define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c -#define USB_DEVICE_ID_APPLE_ALU_MINI_ANSI 0x021d -#define USB_DEVICE_ID_APPLE_ALU_MINI_ISO 0x021e -#define USB_DEVICE_ID_APPLE_ALU_MINI_JIS 0x021f -#define USB_DEVICE_ID_APPLE_ALU_ANSI 0x0220 -#define USB_DEVICE_ID_APPLE_ALU_ISO 0x0221 -#define USB_DEVICE_ID_APPLE_ALU_JIS 0x0222 -#define USB_DEVICE_ID_APPLE_WELLSPRING_ANSI 0x0223 -#define USB_DEVICE_ID_APPLE_WELLSPRING_ISO 0x0224 -#define USB_DEVICE_ID_APPLE_WELLSPRING_JIS 0x0225 -#define USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI 0x0229 -#define USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO 0x022a -#define USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS 0x022b -#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI 0x022c -#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO 0x022d -#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS 0x022e -#define USB_DEVICE_ID_APPLE_WELLSPRING2_ANSI 0x0230 -#define USB_DEVICE_ID_APPLE_WELLSPRING2_ISO 0x0231 -#define USB_DEVICE_ID_APPLE_WELLSPRING2_JIS 0x0232 -#define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236 -#define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237 -#define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS 0x0238 -#define USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI 0x023f -#define USB_DEVICE_ID_APPLE_WELLSPRING4_ISO 0x0240 -#define USB_DEVICE_ID_APPLE_WELLSPRING4_JIS 0x0241 -#define USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI 0x0242 -#define USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO 0x0243 -#define USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS 0x0244 -#define USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI 0x0245 -#define USB_DEVICE_ID_APPLE_WELLSPRING5_ISO 0x0246 -#define USB_DEVICE_ID_APPLE_WELLSPRING5_JIS 0x0247 -#define USB_DEVICE_ID_APPLE_ALU_REVB_ANSI 0x024f -#define USB_DEVICE_ID_APPLE_ALU_REVB_ISO 0x0250 -#define USB_DEVICE_ID_APPLE_ALU_REVB_JIS 0x0251 -#define USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI 0x0252 -#define USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO 0x0253 -#define USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS 0x0254 -#define USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI 0x0259 -#define USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO 0x025a -#define USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS 0x025b -#define USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI 0x0249 -#define USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO 0x024a -#define USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS 0x024b -#define USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI 0x024c -#define USB_DEVICE_ID_APPLE_WELLSPRING6_ISO 0x024d -#define USB_DEVICE_ID_APPLE_WELLSPRING6_JIS 0x024e -#define USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI 0x0262 -#define USB_DEVICE_ID_APPLE_WELLSPRING7_ISO 0x0263 -#define USB_DEVICE_ID_APPLE_WELLSPRING7_JIS 0x0264 -#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI 0x0239 -#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO 0x023a -#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b -#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI 0x0255 -#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO 0x0256 -#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a -#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b -#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241 -#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242 - -#define USB_VENDOR_ID_ASUS 0x0486 -#define USB_DEVICE_ID_ASUS_T91MT 0x0185 -#define USB_DEVICE_ID_ASUSTEK_MULTITOUCH_YFO 0x0186 - -#define USB_VENDOR_ID_ASUSTEK 0x0b05 -#define USB_DEVICE_ID_ASUSTEK_LCM 0x1726 -#define USB_DEVICE_ID_ASUSTEK_LCM2 0x175b - -#define USB_VENDOR_ID_ATEN 0x0557 -#define USB_DEVICE_ID_ATEN_UC100KM 0x2004 -#define USB_DEVICE_ID_ATEN_CS124U 0x2202 -#define USB_DEVICE_ID_ATEN_2PORTKVM 0x2204 -#define USB_DEVICE_ID_ATEN_4PORTKVM 0x2205 -#define USB_DEVICE_ID_ATEN_4PORTKVMC 0x2208 - -#define USB_VENDOR_ID_ATMEL 0x03eb -#define USB_DEVICE_ID_ATMEL_MULTITOUCH 0x211c -#define USB_DEVICE_ID_ATMEL_MXT_DIGITIZER 0x2118 - -#define USB_VENDOR_ID_AUREAL 0x0755 -#define USB_DEVICE_ID_AUREAL_W01RN 0x2626 - -#define USB_VENDOR_ID_AVERMEDIA 0x07ca -#define USB_DEVICE_ID_AVER_FM_MR800 0xb800 - -#define USB_VENDOR_ID_AXENTIA 0x12cf -#define USB_DEVICE_ID_AXENTIA_FM_RADIO 0x7111 - -#define USB_VENDOR_ID_BAANTO 0x2453 -#define USB_DEVICE_ID_BAANTO_MT_190W2 0x0100 - -#define USB_VENDOR_ID_BELKIN 0x050d -#define USB_DEVICE_ID_FLIP_KVM 0x3201 - -#define USB_VENDOR_ID_BERKSHIRE 0x0c98 -#define USB_DEVICE_ID_BERKSHIRE_PCWD 0x1140 - -#define USB_VENDOR_ID_BTC 0x046e -#define USB_DEVICE_ID_BTC_EMPREX_REMOTE 0x5578 -#define USB_DEVICE_ID_BTC_EMPREX_REMOTE_2 0x5577 - -#define USB_VENDOR_ID_CANDO 0x2087 -#define USB_DEVICE_ID_CANDO_PIXCIR_MULTI_TOUCH 0x0703 -#define USB_DEVICE_ID_CANDO_MULTI_TOUCH 0x0a01 -#define USB_DEVICE_ID_CANDO_MULTI_TOUCH_10_1 0x0a02 -#define USB_DEVICE_ID_CANDO_MULTI_TOUCH_11_6 0x0b03 -#define USB_DEVICE_ID_CANDO_MULTI_TOUCH_15_6 0x0f01 - -#define USB_VENDOR_ID_CH 0x068e -#define USB_DEVICE_ID_CH_PRO_THROTTLE 0x00f1 -#define USB_DEVICE_ID_CH_PRO_PEDALS 0x00f2 -#define USB_DEVICE_ID_CH_FIGHTERSTICK 0x00f3 -#define USB_DEVICE_ID_CH_COMBATSTICK 0x00f4 -#define USB_DEVICE_ID_CH_FLIGHT_SIM_ECLIPSE_YOKE 0x0051 -#define USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE 0x00ff -#define USB_DEVICE_ID_CH_3AXIS_5BUTTON_STICK 0x00d3 -#define USB_DEVICE_ID_CH_AXIS_295 0x001c - -#define USB_VENDOR_ID_CHERRY 0x046a -#define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023 -#define USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR 0x0027 - -#define USB_VENDOR_ID_CHIC 0x05fe -#define USB_DEVICE_ID_CHIC_GAMEPAD 0x0014 - -#define USB_VENDOR_ID_CHICONY 0x04f2 -#define USB_DEVICE_ID_CHICONY_TACTICAL_PAD 0x0418 -#define USB_DEVICE_ID_CHICONY_MULTI_TOUCH 0xb19d -#define USB_DEVICE_ID_CHICONY_WIRELESS 0x0618 -#define USB_DEVICE_ID_CHICONY_WIRELESS2 0x1123 -#define USB_DEVICE_ID_CHICONY_AK1D 0x1125 - -#define USB_VENDOR_ID_CHUNGHWAT 0x2247 -#define USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH 0x0001 - -#define USB_VENDOR_ID_CIDC 0x1677 - -#define USB_VENDOR_ID_CMEDIA 0x0d8c -#define USB_DEVICE_ID_CM109 0x000e - -#define USB_VENDOR_ID_CODEMERCS 0x07c0 -#define USB_DEVICE_ID_CODEMERCS_IOW_FIRST 0x1500 -#define USB_DEVICE_ID_CODEMERCS_IOW_LAST 0x15ff - -#define USB_VENDOR_ID_CREATIVELABS 0x041e -#define USB_DEVICE_ID_PRODIKEYS_PCMIDI 0x2801 - -#define USB_VENDOR_ID_CVTOUCH 0x1ff7 -#define USB_DEVICE_ID_CVTOUCH_SCREEN 0x0013 - -#define USB_VENDOR_ID_CYGNAL 0x10c4 -#define USB_DEVICE_ID_CYGNAL_RADIO_SI470X 0x818a - -#define USB_VENDOR_ID_CYPRESS 0x04b4 -#define USB_DEVICE_ID_CYPRESS_MOUSE 0x0001 -#define USB_DEVICE_ID_CYPRESS_HIDCOM 0x5500 -#define USB_DEVICE_ID_CYPRESS_ULTRAMOUSE 0x7417 -#define USB_DEVICE_ID_CYPRESS_BARCODE_1 0xde61 -#define USB_DEVICE_ID_CYPRESS_BARCODE_2 0xde64 -#define USB_DEVICE_ID_CYPRESS_BARCODE_3 0xbca1 -#define USB_DEVICE_ID_CYPRESS_BARCODE_4 0xed81 -#define USB_DEVICE_ID_CYPRESS_TRUETOUCH 0xc001 - -#define USB_VENDOR_ID_DEALEXTREAME 0x10c5 -#define USB_DEVICE_ID_DEALEXTREAME_RADIO_SI4701 0x819a - -#define USB_VENDOR_ID_DELORME 0x1163 -#define USB_DEVICE_ID_DELORME_EARTHMATE 0x0100 -#define USB_DEVICE_ID_DELORME_EM_LT20 0x0200 - -#define USB_VENDOR_ID_DMI 0x0c0b -#define USB_DEVICE_ID_DMI_ENC 0x5fab - -#define USB_VENDOR_ID_DRAGONRISE 0x0079 - -#define USB_VENDOR_ID_DWAV 0x0eef -#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER 0x0001 -#define USB_DEVICE_ID_DWAV_TOUCHCONTROLLER 0x0002 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D 0x480d -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E 0x480e -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7207 0x7207 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C 0x720c -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7224 0x7224 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_722A 0x722A -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_725E 0x725e -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7262 0x7262 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B 0x726b -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72AA 0x72aa -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1 0x72a1 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72FA 0x72fa -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302 0x7302 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7349 0x7349 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_73F7 0x73f7 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001 0xa001 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7224 0x7224 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72D0 0x72d0 -#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72C4 0x72c4 - -#define USB_VENDOR_ID_ELECOM 0x056e -#define USB_DEVICE_ID_ELECOM_BM084 0x0061 - -#define USB_VENDOR_ID_DREAM_CHEEKY 0x1d34 - -#define USB_VENDOR_ID_ELO 0x04E7 -#define USB_DEVICE_ID_ELO_TS2515 0x0022 -#define USB_DEVICE_ID_ELO_TS2700 0x0020 - -#define USB_VENDOR_ID_EMS 0x2006 -#define USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II 0x0118 - -#define USB_VENDOR_ID_FLATFROG 0x25b5 -#define USB_DEVICE_ID_MULTITOUCH_3200 0x0002 - -#define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f -#define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 - -#define USB_VENDOR_ID_ETT 0x0664 -#define USB_DEVICE_ID_TC5UH 0x0309 -#define USB_DEVICE_ID_TC4UM 0x0306 - -#define USB_VENDOR_ID_ETURBOTOUCH 0x22b9 -#define USB_DEVICE_ID_ETURBOTOUCH 0x0006 - -#define USB_VENDOR_ID_EZKEY 0x0518 -#define USB_DEVICE_ID_BTC_8193 0x0002 - -#define USB_VENDOR_ID_FREESCALE 0x15A2 -#define USB_DEVICE_ID_FREESCALE_MX28 0x004F - -#define USB_VENDOR_ID_FRUCTEL 0x25B6 -#define USB_DEVICE_ID_GAMETEL_MT_MODE 0x0002 - -#define USB_VENDOR_ID_GAMERON 0x0810 -#define USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR 0x0001 -#define USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR 0x0002 - -#define USB_VENDOR_ID_GENERAL_TOUCH 0x0dfc -#define USB_DEVICE_ID_GENERAL_TOUCH_WIN7_TWOFINGERS 0x0003 -#define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PWT_TENFINGERS 0x0100 - -#define USB_VENDOR_ID_GLAB 0x06c2 -#define USB_DEVICE_ID_4_PHIDGETSERVO_30 0x0038 -#define USB_DEVICE_ID_1_PHIDGETSERVO_30 0x0039 -#define USB_DEVICE_ID_0_0_4_IF_KIT 0x0040 -#define USB_DEVICE_ID_0_16_16_IF_KIT 0x0044 -#define USB_DEVICE_ID_8_8_8_IF_KIT 0x0045 -#define USB_DEVICE_ID_0_8_7_IF_KIT 0x0051 -#define USB_DEVICE_ID_0_8_8_IF_KIT 0x0053 -#define USB_DEVICE_ID_PHIDGET_MOTORCONTROL 0x0058 - -#define USB_VENDOR_ID_GOODTOUCH 0x1aad -#define USB_DEVICE_ID_GOODTOUCH_000f 0x000f - -#define USB_VENDOR_ID_GOTOP 0x08f2 -#define USB_DEVICE_ID_SUPER_Q2 0x007f -#define USB_DEVICE_ID_GOGOPEN 0x00ce -#define USB_DEVICE_ID_PENPOWER 0x00f4 - -#define USB_VENDOR_ID_GREENASIA 0x0e8f -#define USB_DEVICE_ID_GREENASIA_DUAL_USB_JOYPAD 0x3013 - -#define USB_VENDOR_ID_GRETAGMACBETH 0x0971 -#define USB_DEVICE_ID_GRETAGMACBETH_HUEY 0x2005 - -#define USB_VENDOR_ID_GRIFFIN 0x077d -#define USB_DEVICE_ID_POWERMATE 0x0410 -#define USB_DEVICE_ID_SOUNDKNOB 0x04AA -#define USB_DEVICE_ID_RADIOSHARK 0x627a - -#define USB_VENDOR_ID_GTCO 0x078c -#define USB_DEVICE_ID_GTCO_90 0x0090 -#define USB_DEVICE_ID_GTCO_100 0x0100 -#define USB_DEVICE_ID_GTCO_101 0x0101 -#define USB_DEVICE_ID_GTCO_103 0x0103 -#define USB_DEVICE_ID_GTCO_104 0x0104 -#define USB_DEVICE_ID_GTCO_105 0x0105 -#define USB_DEVICE_ID_GTCO_106 0x0106 -#define USB_DEVICE_ID_GTCO_107 0x0107 -#define USB_DEVICE_ID_GTCO_108 0x0108 -#define USB_DEVICE_ID_GTCO_200 0x0200 -#define USB_DEVICE_ID_GTCO_201 0x0201 -#define USB_DEVICE_ID_GTCO_202 0x0202 -#define USB_DEVICE_ID_GTCO_203 0x0203 -#define USB_DEVICE_ID_GTCO_204 0x0204 -#define USB_DEVICE_ID_GTCO_205 0x0205 -#define USB_DEVICE_ID_GTCO_206 0x0206 -#define USB_DEVICE_ID_GTCO_207 0x0207 -#define USB_DEVICE_ID_GTCO_300 0x0300 -#define USB_DEVICE_ID_GTCO_301 0x0301 -#define USB_DEVICE_ID_GTCO_302 0x0302 -#define USB_DEVICE_ID_GTCO_303 0x0303 -#define USB_DEVICE_ID_GTCO_304 0x0304 -#define USB_DEVICE_ID_GTCO_305 0x0305 -#define USB_DEVICE_ID_GTCO_306 0x0306 -#define USB_DEVICE_ID_GTCO_307 0x0307 -#define USB_DEVICE_ID_GTCO_308 0x0308 -#define USB_DEVICE_ID_GTCO_309 0x0309 -#define USB_DEVICE_ID_GTCO_400 0x0400 -#define USB_DEVICE_ID_GTCO_401 0x0401 -#define USB_DEVICE_ID_GTCO_402 0x0402 -#define USB_DEVICE_ID_GTCO_403 0x0403 -#define USB_DEVICE_ID_GTCO_404 0x0404 -#define USB_DEVICE_ID_GTCO_405 0x0405 -#define USB_DEVICE_ID_GTCO_500 0x0500 -#define USB_DEVICE_ID_GTCO_501 0x0501 -#define USB_DEVICE_ID_GTCO_502 0x0502 -#define USB_DEVICE_ID_GTCO_503 0x0503 -#define USB_DEVICE_ID_GTCO_504 0x0504 -#define USB_DEVICE_ID_GTCO_1000 0x1000 -#define USB_DEVICE_ID_GTCO_1001 0x1001 -#define USB_DEVICE_ID_GTCO_1002 0x1002 -#define USB_DEVICE_ID_GTCO_1003 0x1003 -#define USB_DEVICE_ID_GTCO_1004 0x1004 -#define USB_DEVICE_ID_GTCO_1005 0x1005 -#define USB_DEVICE_ID_GTCO_1006 0x1006 -#define USB_DEVICE_ID_GTCO_1007 0x1007 - -#define USB_VENDOR_ID_GYRATION 0x0c16 -#define USB_DEVICE_ID_GYRATION_REMOTE 0x0002 -#define USB_DEVICE_ID_GYRATION_REMOTE_2 0x0003 -#define USB_DEVICE_ID_GYRATION_REMOTE_3 0x0008 - -#define USB_VENDOR_ID_HANWANG 0x0b57 -#define USB_DEVICE_ID_HANWANG_TABLET_FIRST 0x5000 -#define USB_DEVICE_ID_HANWANG_TABLET_LAST 0x8fff - -#define USB_VENDOR_ID_HANVON 0x20b3 -#define USB_DEVICE_ID_HANVON_MULTITOUCH 0x0a18 - -#define USB_VENDOR_ID_HANVON_ALT 0x22ed -#define USB_DEVICE_ID_HANVON_ALT_MULTITOUCH 0x1010 - -#define USB_VENDOR_ID_HAPP 0x078b -#define USB_DEVICE_ID_UGCI_DRIVING 0x0010 -#define USB_DEVICE_ID_UGCI_FLYING 0x0020 -#define USB_DEVICE_ID_UGCI_FIGHTING 0x0030 - -#define USB_VENDOR_ID_IDEACOM 0x1cb6 -#define USB_DEVICE_ID_IDEACOM_IDC6650 0x6650 -#define USB_DEVICE_ID_IDEACOM_IDC6651 0x6651 - -#define USB_VENDOR_ID_ILITEK 0x222a -#define USB_DEVICE_ID_ILITEK_MULTITOUCH 0x0001 - -#define USB_VENDOR_ID_ION 0x15e4 -#define USB_DEVICE_ID_ICADE 0x0132 - -#define USB_VENDOR_ID_HOLTEK 0x1241 -#define USB_DEVICE_ID_HOLTEK_ON_LINE_GRIP 0x5015 - -#define USB_VENDOR_ID_HOLTEK_ALT 0x04d9 -#define USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD 0xa055 - -#define USB_VENDOR_ID_IMATION 0x0718 -#define USB_DEVICE_ID_DISC_STAKKA 0xd000 - -#define USB_VENDOR_ID_INTEL_8086 0x8086 -#define USB_VENDOR_ID_INTEL_8087 0x8087 -#define USB_DEVICE_ID_SENSOR_HUB_1020 0x1020 -#define USB_DEVICE_ID_SENSOR_HUB_09FA 0x09FA - -#define USB_VENDOR_ID_IRTOUCHSYSTEMS 0x6615 -#define USB_DEVICE_ID_IRTOUCH_INFRARED_USB 0x0070 - -#define USB_VENDOR_ID_JESS 0x0c45 -#define USB_DEVICE_ID_JESS_YUREX 0x1010 - -#define USB_VENDOR_ID_KBGEAR 0x084e -#define USB_DEVICE_ID_KBGEAR_JAMSTUDIO 0x1001 - -#define USB_VENDOR_ID_KENSINGTON 0x047d -#define USB_DEVICE_ID_KS_SLIMBLADE 0x2041 - -#define USB_VENDOR_ID_KWORLD 0x1b80 -#define USB_DEVICE_ID_KWORLD_RADIO_FM700 0xd700 - -#define USB_VENDOR_ID_KEYTOUCH 0x0926 -#define USB_DEVICE_ID_KEYTOUCH_IEC 0x3333 - -#define USB_VENDOR_ID_KYE 0x0458 -#define USB_DEVICE_ID_KYE_ERGO_525V 0x0087 -#define USB_DEVICE_ID_KYE_GPEN_560 0x5003 -#define USB_DEVICE_ID_KYE_EASYPEN_I405X 0x5010 -#define USB_DEVICE_ID_KYE_MOUSEPEN_I608X 0x5011 -#define USB_DEVICE_ID_KYE_EASYPEN_M610X 0x5013 - -#define USB_VENDOR_ID_LABTEC 0x1020 -#define USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD 0x0006 - -#define USB_VENDOR_ID_LCPOWER 0x1241 -#define USB_DEVICE_ID_LCPOWER_LC1000 0xf767 - -#define USB_VENDOR_ID_LD 0x0f11 -#define USB_DEVICE_ID_LD_CASSY 0x1000 -#define USB_DEVICE_ID_LD_CASSY2 0x1001 -#define USB_DEVICE_ID_LD_POCKETCASSY 0x1010 -#define USB_DEVICE_ID_LD_POCKETCASSY2 0x1011 -#define USB_DEVICE_ID_LD_MOBILECASSY 0x1020 -#define USB_DEVICE_ID_LD_MOBILECASSY2 0x1021 -#define USB_DEVICE_ID_LD_MICROCASSYVOLTAGE 0x1031 -#define USB_DEVICE_ID_LD_MICROCASSYCURRENT 0x1032 -#define USB_DEVICE_ID_LD_MICROCASSYTIME 0x1033 -#define USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE 0x1035 -#define USB_DEVICE_ID_LD_MICROCASSYPH 0x1038 -#define USB_DEVICE_ID_LD_JWM 0x1080 -#define USB_DEVICE_ID_LD_DMMP 0x1081 -#define USB_DEVICE_ID_LD_UMIP 0x1090 -#define USB_DEVICE_ID_LD_UMIC 0x10A0 -#define USB_DEVICE_ID_LD_UMIB 0x10B0 -#define USB_DEVICE_ID_LD_XRAY 0x1100 -#define USB_DEVICE_ID_LD_XRAY2 0x1101 -#define USB_DEVICE_ID_LD_XRAYCT 0x1110 -#define USB_DEVICE_ID_LD_VIDEOCOM 0x1200 -#define USB_DEVICE_ID_LD_MOTOR 0x1210 -#define USB_DEVICE_ID_LD_COM3LAB 0x2000 -#define USB_DEVICE_ID_LD_TELEPORT 0x2010 -#define USB_DEVICE_ID_LD_NETWORKANALYSER 0x2020 -#define USB_DEVICE_ID_LD_POWERCONTROL 0x2030 -#define USB_DEVICE_ID_LD_MACHINETEST 0x2040 -#define USB_DEVICE_ID_LD_MOSTANALYSER 0x2050 -#define USB_DEVICE_ID_LD_MOSTANALYSER2 0x2051 -#define USB_DEVICE_ID_LD_ABSESP 0x2060 -#define USB_DEVICE_ID_LD_AUTODATABUS 0x2070 -#define USB_DEVICE_ID_LD_MCT 0x2080 -#define USB_DEVICE_ID_LD_HYBRID 0x2090 -#define USB_DEVICE_ID_LD_HEATCONTROL 0x20A0 - -#define USB_VENDOR_ID_LENOVO 0x17ef -#define USB_DEVICE_ID_LENOVO_TPKBD 0x6009 - -#define USB_VENDOR_ID_LG 0x1fd2 -#define USB_DEVICE_ID_LG_MULTITOUCH 0x0064 - -#define USB_VENDOR_ID_LOGITECH 0x046d -#define USB_DEVICE_ID_LOGITECH_AUDIOHUB 0x0a0e -#define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101 -#define USB_DEVICE_ID_LOGITECH_HARMONY_FIRST 0xc110 -#define USB_DEVICE_ID_LOGITECH_HARMONY_LAST 0xc14f -#define USB_DEVICE_ID_LOGITECH_HARMONY_PS3 0x0306 -#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD_CORD 0xc20a -#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD 0xc211 -#define USB_DEVICE_ID_LOGITECH_EXTREME_3D 0xc215 -#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD2 0xc218 -#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2 0xc219 -#define USB_DEVICE_ID_LOGITECH_WINGMAN_F3D 0xc283 -#define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286 -#define USB_DEVICE_ID_LOGITECH_FLIGHT_SYSTEM_G940 0xc287 -#define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294 -#define USB_DEVICE_ID_LOGITECH_WINGMAN_FFG 0xc293 -#define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL 0xc295 -#define USB_DEVICE_ID_LOGITECH_DFP_WHEEL 0xc298 -#define USB_DEVICE_ID_LOGITECH_G25_WHEEL 0xc299 -#define USB_DEVICE_ID_LOGITECH_DFGT_WHEEL 0xc29a -#define USB_DEVICE_ID_LOGITECH_G27_WHEEL 0xc29b -#define USB_DEVICE_ID_LOGITECH_WII_WHEEL 0xc29c -#define USB_DEVICE_ID_LOGITECH_ELITE_KBD 0xc30a -#define USB_DEVICE_ID_S510_RECEIVER 0xc50c -#define USB_DEVICE_ID_S510_RECEIVER_2 0xc517 -#define USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500 0xc512 -#define USB_DEVICE_ID_MX3000_RECEIVER 0xc513 -#define USB_DEVICE_ID_LOGITECH_UNIFYING_RECEIVER 0xc52b -#define USB_DEVICE_ID_LOGITECH_UNIFYING_RECEIVER_2 0xc532 -#define USB_DEVICE_ID_SPACETRAVELLER 0xc623 -#define USB_DEVICE_ID_SPACENAVIGATOR 0xc626 -#define USB_DEVICE_ID_DINOVO_DESKTOP 0xc704 -#define USB_DEVICE_ID_DINOVO_EDGE 0xc714 -#define USB_DEVICE_ID_DINOVO_MINI 0xc71f -#define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2 0xca03 - -#define USB_VENDOR_ID_LUMIO 0x202e -#define USB_DEVICE_ID_CRYSTALTOUCH 0x0006 -#define USB_DEVICE_ID_CRYSTALTOUCH_DUAL 0x0007 - -#define USB_VENDOR_ID_MADCATZ 0x0738 -#define USB_DEVICE_ID_MADCATZ_BEATPAD 0x4540 - -#define USB_VENDOR_ID_MCC 0x09db -#define USB_DEVICE_ID_MCC_PMD1024LS 0x0076 -#define USB_DEVICE_ID_MCC_PMD1208LS 0x007a - -#define USB_VENDOR_ID_MGE 0x0463 -#define USB_DEVICE_ID_MGE_UPS 0xffff -#define USB_DEVICE_ID_MGE_UPS1 0x0001 - -#define USB_VENDOR_ID_MICROCHIP 0x04d8 -#define USB_DEVICE_ID_PICKIT1 0x0032 -#define USB_DEVICE_ID_PICKIT2 0x0033 -#define USB_DEVICE_ID_PICOLCD 0xc002 -#define USB_DEVICE_ID_PICOLCD_BOOTLOADER 0xf002 - -#define USB_VENDOR_ID_MICROSOFT 0x045e -#define USB_DEVICE_ID_SIDEWINDER_GV 0x003b -#define USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0 0x009d -#define USB_DEVICE_ID_MS_NE4K 0x00db -#define USB_DEVICE_ID_MS_LK6K 0x00f9 -#define USB_DEVICE_ID_MS_PRESENTER_8K_BT 0x0701 -#define USB_DEVICE_ID_MS_PRESENTER_8K_USB 0x0713 -#define USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K 0x0730 -#define USB_DEVICE_ID_MS_COMFORT_MOUSE_4500 0x076c - -#define USB_VENDOR_ID_MOJO 0x8282 -#define USB_DEVICE_ID_RETRO_ADAPTER 0x3201 - -#define USB_VENDOR_ID_MONTEREY 0x0566 -#define USB_DEVICE_ID_GENIUS_KB29E 0x3004 - -#define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400 -#define USB_DEVICE_ID_N_S_HARMONY 0xc359 - -#define USB_VENDOR_ID_NATSU 0x08b7 -#define USB_DEVICE_ID_NATSU_GAMEPAD 0x0001 - -#define USB_VENDOR_ID_NCR 0x0404 -#define USB_DEVICE_ID_NCR_FIRST 0x0300 -#define USB_DEVICE_ID_NCR_LAST 0x03ff - -#define USB_VENDOR_ID_NEC 0x073e -#define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301 - -#define USB_VENDOR_ID_NEXTWINDOW 0x1926 -#define USB_DEVICE_ID_NEXTWINDOW_TOUCHSCREEN 0x0003 - -#define USB_VENDOR_ID_NINTENDO 0x057e -#define USB_DEVICE_ID_NINTENDO_WIIMOTE 0x0306 - -#define USB_VENDOR_ID_NOVATEK 0x0603 -#define USB_DEVICE_ID_NOVATEK_PCT 0x0600 - -#define USB_VENDOR_ID_NTRIG 0x1b96 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN 0x0001 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1 0x0003 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_2 0x0004 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_3 0x0005 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_4 0x0006 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_5 0x0007 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_6 0x0008 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_7 0x0009 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_8 0x000A -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_9 0x000B -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_10 0x000C -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_11 0x000D -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_12 0x000E -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_13 0x000F -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_14 0x0010 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_15 0x0011 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_16 0x0012 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_17 0x0013 -#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18 0x0014 - -#define USB_VENDOR_ID_ONTRAK 0x0a07 -#define USB_DEVICE_ID_ONTRAK_ADU100 0x0064 - -#define USB_VENDOR_ID_ORTEK 0x05a4 -#define USB_DEVICE_ID_ORTEK_PKB1700 0x1700 -#define USB_DEVICE_ID_ORTEK_WKB2000 0x2000 - -#define USB_VENDOR_ID_PANASONIC 0x04da -#define USB_DEVICE_ID_PANABOARD_UBT780 0x1044 -#define USB_DEVICE_ID_PANABOARD_UBT880 0x104d - -#define USB_VENDOR_ID_PANJIT 0x134c - -#define USB_VENDOR_ID_PANTHERLORD 0x0810 -#define USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK 0x0001 - -#define USB_VENDOR_ID_PENMOUNT 0x14e1 -#define USB_DEVICE_ID_PENMOUNT_PCI 0x3500 - -#define USB_VENDOR_ID_PETALYNX 0x18b1 -#define USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE 0x0037 - -#define USB_VENDOR_ID_PHILIPS 0x0471 -#define USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE 0x0617 - -#define USB_VENDOR_ID_PI_ENGINEERING 0x05f3 -#define USB_DEVICE_ID_PI_ENGINEERING_VEC_USB_FOOTPEDAL 0xff - -#define USB_VENDOR_ID_PIXART 0x093a -#define USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN 0x8001 -#define USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN1 0x8002 -#define USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2 0x8003 - -#define USB_VENDOR_ID_PLAYDOTCOM 0x0b43 -#define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003 - -#define USB_VENDOR_ID_POWERCOM 0x0d9f -#define USB_DEVICE_ID_POWERCOM_UPS 0x0002 - -#define USB_VENDOR_ID_PRODIGE 0x05af -#define USB_DEVICE_ID_PRODIGE_CORDLESS 0x3062 - -#define USB_VENDOR_ID_QUANTA 0x0408 -#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH 0x3000 -#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001 0x3001 -#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008 0x3008 - -#define USB_VENDOR_ID_ROCCAT 0x1e7d -#define USB_DEVICE_ID_ROCCAT_ARVO 0x30d4 -#define USB_DEVICE_ID_ROCCAT_ISKU 0x319c -#define USB_DEVICE_ID_ROCCAT_KONE 0x2ced -#define USB_DEVICE_ID_ROCCAT_KONEPLUS 0x2d51 -#define USB_DEVICE_ID_ROCCAT_KONEXTD 0x2e22 -#define USB_DEVICE_ID_ROCCAT_KOVAPLUS 0x2d50 -#define USB_DEVICE_ID_ROCCAT_LUA 0x2c2e -#define USB_DEVICE_ID_ROCCAT_PYRA_WIRED 0x2c24 -#define USB_DEVICE_ID_ROCCAT_PYRA_WIRELESS 0x2cf6 -#define USB_DEVICE_ID_ROCCAT_SAVU 0x2d5a - -#define USB_VENDOR_ID_SAITEK 0x06a3 -#define USB_DEVICE_ID_SAITEK_RUMBLEPAD 0xff17 -#define USB_DEVICE_ID_SAITEK_PS1000 0x0621 - -#define USB_VENDOR_ID_SAMSUNG 0x0419 -#define USB_DEVICE_ID_SAMSUNG_IR_REMOTE 0x0001 -#define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE 0x0600 - -#define USB_VENDOR_ID_SENNHEISER 0x1395 -#define USB_DEVICE_ID_SENNHEISER_BTD500USB 0x002c - -#define USB_VENDOR_ID_SIGMA_MICRO 0x1c4f -#define USB_DEVICE_ID_SIGMA_MICRO_KEYBOARD 0x0002 - -#define USB_VENDOR_ID_SIGMATEL 0x066F -#define USB_DEVICE_ID_SIGMATEL_STMP3780 0x3780 - -#define USB_VENDOR_ID_SKYCABLE 0x1223 -#define USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER 0x3F07 - -#define USB_VENDOR_ID_SONY 0x054c -#define USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE 0x024b -#define USB_DEVICE_ID_SONY_PS3_BDREMOTE 0x0306 -#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268 -#define USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER 0x042f - -#define USB_VENDOR_ID_SOUNDGRAPH 0x15c2 -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST 0x0034 -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST 0x0046 - -#define USB_VENDOR_ID_STANTUM 0x1f87 -#define USB_DEVICE_ID_MTP 0x0002 - -#define USB_VENDOR_ID_STANTUM_STM 0x0483 -#define USB_DEVICE_ID_MTP_STM 0x3261 -#define USB_DEVICE_ID_SENSOR_HUB_7014 0x7014 - -#define USB_VENDOR_ID_STANTUM_SITRONIX 0x1403 -#define USB_DEVICE_ID_MTP_SITRONIX 0x5001 - -#define USB_VENDOR_ID_SUN 0x0430 -#define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab - -#define USB_VENDOR_ID_SUNPLUS 0x04fc -#define USB_DEVICE_ID_SUNPLUS_WDESKTOP 0x05d8 - -#define USB_VENDOR_ID_SYMBOL 0x05e0 -#define USB_DEVICE_ID_SYMBOL_SCANNER_1 0x0800 -#define USB_DEVICE_ID_SYMBOL_SCANNER_2 0x1300 - -#define USB_VENDOR_ID_SYNAPTICS 0x06cb -#define USB_DEVICE_ID_SYNAPTICS_TP 0x0001 -#define USB_DEVICE_ID_SYNAPTICS_INT_TP 0x0002 -#define USB_DEVICE_ID_SYNAPTICS_CPAD 0x0003 -#define USB_DEVICE_ID_SYNAPTICS_TS 0x0006 -#define USB_DEVICE_ID_SYNAPTICS_STICK 0x0007 -#define USB_DEVICE_ID_SYNAPTICS_WP 0x0008 -#define USB_DEVICE_ID_SYNAPTICS_COMP_TP 0x0009 -#define USB_DEVICE_ID_SYNAPTICS_WTP 0x0010 -#define USB_DEVICE_ID_SYNAPTICS_DPAD 0x0013 - -#define USB_VENDOR_ID_THRUSTMASTER 0x044f - -#define USB_VENDOR_ID_TIVO 0x150a -#define USB_DEVICE_ID_TIVO_SLIDE_BT 0x1200 -#define USB_DEVICE_ID_TIVO_SLIDE 0x1201 - -#define USB_VENDOR_ID_TOPSEED 0x0766 -#define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204 - -#define USB_VENDOR_ID_TOPSEED2 0x1784 -#define USB_DEVICE_ID_TOPSEED2_RF_COMBO 0x0004 -#define USB_DEVICE_ID_TOPSEED2_PERIPAD_701 0x0016 - -#define USB_VENDOR_ID_TOPMAX 0x0663 -#define USB_DEVICE_ID_TOPMAX_COBRAPAD 0x0103 - -#define USB_VENDOR_ID_TOUCH_INTL 0x1e5e -#define USB_DEVICE_ID_TOUCH_INTL_MULTI_TOUCH 0x0313 - -#define USB_VENDOR_ID_TOUCHPACK 0x1bfd -#define USB_DEVICE_ID_TOUCHPACK_RTS 0x1688 - -#define USB_VENDOR_ID_TPV 0x25aa -#define USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN 0x8883 - -#define USB_VENDOR_ID_TURBOX 0x062a -#define USB_DEVICE_ID_TURBOX_KEYBOARD 0x0201 -#define USB_DEVICE_ID_TURBOX_TOUCHSCREEN_MOSART 0x7100 - -#define USB_VENDOR_ID_TWINHAN 0x6253 -#define USB_DEVICE_ID_TWINHAN_IR_REMOTE 0x0100 - -#define USB_VENDOR_ID_UCLOGIC 0x5543 -#define USB_DEVICE_ID_UCLOGIC_TABLET_PF1209 0x0042 -#define USB_DEVICE_ID_UCLOGIC_TABLET_KNA5 0x6001 -#define USB_DEVICE_ID_UCLOGIC_TABLET_TWA60 0x0064 -#define USB_DEVICE_ID_UCLOGIC_TABLET_WP4030U 0x0003 -#define USB_DEVICE_ID_UCLOGIC_TABLET_WP5540U 0x0004 -#define USB_DEVICE_ID_UCLOGIC_TABLET_WP8060U 0x0005 -#define USB_DEVICE_ID_UCLOGIC_TABLET_WP1062 0x0064 -#define USB_DEVICE_ID_UCLOGIC_WIRELESS_TABLET_TWHL850 0x0522 -#define USB_DEVICE_ID_UCLOGIC_TABLET_TWHA60 0x0781 - -#define USB_VENDOR_ID_UNITEC 0x227d -#define USB_DEVICE_ID_UNITEC_USB_TOUCH_0709 0x0709 -#define USB_DEVICE_ID_UNITEC_USB_TOUCH_0A19 0x0a19 - -#define USB_VENDOR_ID_VERNIER 0x08f7 -#define USB_DEVICE_ID_VERNIER_LABPRO 0x0001 -#define USB_DEVICE_ID_VERNIER_GOTEMP 0x0002 -#define USB_DEVICE_ID_VERNIER_SKIP 0x0003 -#define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004 -#define USB_DEVICE_ID_VERNIER_LCSPEC 0x0006 - -#define USB_VENDOR_ID_WACOM 0x056a -#define USB_DEVICE_ID_WACOM_GRAPHIRE_BLUETOOTH 0x81 -#define USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH 0x00BD - -#define USB_VENDOR_ID_WALTOP 0x172f -#define USB_DEVICE_ID_WALTOP_SLIM_TABLET_5_8_INCH 0x0032 -#define USB_DEVICE_ID_WALTOP_SLIM_TABLET_12_1_INCH 0x0034 -#define USB_DEVICE_ID_WALTOP_Q_PAD 0x0037 -#define USB_DEVICE_ID_WALTOP_PID_0038 0x0038 -#define USB_DEVICE_ID_WALTOP_MEDIA_TABLET_10_6_INCH 0x0501 -#define USB_DEVICE_ID_WALTOP_MEDIA_TABLET_14_1_INCH 0x0500 -#define USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET 0x0502 - -#define USB_VENDOR_ID_WISEGROUP 0x0925 -#define USB_DEVICE_ID_SMARTJOY_PLUS 0x0005 -#define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101 -#define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104 -#define USB_DEVICE_ID_8_8_4_IF_KIT 0x8201 -#define USB_DEVICE_ID_SUPER_JOY_BOX_3 0x8888 -#define USB_DEVICE_ID_QUAD_USB_JOYPAD 0x8800 -#define USB_DEVICE_ID_DUAL_USB_JOYPAD 0x8866 - -#define USB_VENDOR_ID_WISEGROUP_LTD 0x6666 -#define USB_VENDOR_ID_WISEGROUP_LTD2 0x6677 -#define USB_DEVICE_ID_SMARTJOY_DUAL_PLUS 0x8802 -#define USB_DEVICE_ID_SUPER_JOY_BOX_3_PRO 0x8801 -#define USB_DEVICE_ID_SUPER_DUAL_BOX_PRO 0x8802 -#define USB_DEVICE_ID_SUPER_JOY_BOX_5_PRO 0x8804 - -#define USB_VENDOR_ID_X_TENSIONS 0x1ae7 -#define USB_DEVICE_ID_SPEEDLINK_VAD_CEZANNE 0x9001 - -#define USB_VENDOR_ID_XAT 0x2505 -#define USB_DEVICE_ID_XAT_CSR 0x0220 - -#define USB_VENDOR_ID_XIROKU 0x1477 -#define USB_DEVICE_ID_XIROKU_SPX 0x1006 -#define USB_DEVICE_ID_XIROKU_MPX 0x1007 -#define USB_DEVICE_ID_XIROKU_CSR 0x100e -#define USB_DEVICE_ID_XIROKU_SPX1 0x1021 -#define USB_DEVICE_ID_XIROKU_CSR1 0x1022 -#define USB_DEVICE_ID_XIROKU_MPX1 0x1023 -#define USB_DEVICE_ID_XIROKU_SPX2 0x1024 -#define USB_DEVICE_ID_XIROKU_CSR2 0x1025 -#define USB_DEVICE_ID_XIROKU_MPX2 0x1026 - -#define USB_VENDOR_ID_YEALINK 0x6993 -#define USB_DEVICE_ID_YEALINK_P1K_P4K_B2K 0xb001 - -#define USB_VENDOR_ID_ZEROPLUS 0x0c12 - -#define USB_VENDOR_ID_ZYDACRON 0x13EC -#define USB_DEVICE_ID_ZYDACRON_REMOTE_CONTROL 0x0006 - -#define USB_VENDOR_ID_ZYTRONIC 0x14c8 -#define USB_DEVICE_ID_ZYTRONIC_ZXY100 0x0005 - -#define USB_VENDOR_ID_PRIMAX 0x0461 -#define USB_DEVICE_ID_PRIMAX_KEYBOARD 0x4e05 - -#endif diff --git a/compat/kfifo.c b/compat/kfifo.c deleted file mode 100644 index 96e1bdf..0000000 --- a/compat/kfifo.c +++ /dev/null @@ -1,608 +0,0 @@ -/* - * A generic kernel FIFO implementation - * - * Copyright (C) 2009/2010 Stefani Seibold - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include -#include -#include -#include -#include -#include -#include - -/* - * internal helper to calculate the unused elements in a fifo - */ -static inline unsigned int kfifo_unused(struct __kfifo *fifo) -{ - return (fifo->mask + 1) - (fifo->in - fifo->out); -} - -int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, - size_t esize, gfp_t gfp_mask) -{ - /* - * round down to the next power of 2, since our 'let the indices - * wrap' technique works only in this case. - */ - if (!is_power_of_2(size)) - size = rounddown_pow_of_two(size); - - fifo->in = 0; - fifo->out = 0; - fifo->esize = esize; - - if (size < 2) { - fifo->data = NULL; - fifo->mask = 0; - return -EINVAL; - } - - fifo->data = kmalloc(size * esize, gfp_mask); - - if (!fifo->data) { - fifo->mask = 0; - return -ENOMEM; - } - fifo->mask = size - 1; - - return 0; -} -EXPORT_SYMBOL_GPL(__kfifo_alloc); - -void __kfifo_free(struct __kfifo *fifo) -{ - kfree(fifo->data); - fifo->in = 0; - fifo->out = 0; - fifo->esize = 0; - fifo->data = NULL; - fifo->mask = 0; -} -EXPORT_SYMBOL_GPL(__kfifo_free); - -int __kfifo_init(struct __kfifo *fifo, void *buffer, - unsigned int size, size_t esize) -{ - size /= esize; - - if (!is_power_of_2(size)) - size = rounddown_pow_of_two(size); - - fifo->in = 0; - fifo->out = 0; - fifo->esize = esize; - fifo->data = buffer; - - if (size < 2) { - fifo->mask = 0; - return -EINVAL; - } - fifo->mask = size - 1; - - return 0; -} -EXPORT_SYMBOL_GPL(__kfifo_init); - -static void kfifo_copy_in(struct __kfifo *fifo, const void *src, - unsigned int len, unsigned int off) -{ - unsigned int size = fifo->mask + 1; - unsigned int esize = fifo->esize; - unsigned int l; - - off &= fifo->mask; - if (esize != 1) { - off *= esize; - size *= esize; - len *= esize; - } - l = min(len, size - off); - - memcpy(fifo->data + off, src, l); - memcpy(fifo->data, src + l, len - l); - /* - * make sure that the data in the fifo is up to date before - * incrementing the fifo->in index counter - */ - smp_wmb(); -} - -unsigned int __kfifo_in(struct __kfifo *fifo, - const void *buf, unsigned int len) -{ - unsigned int l; - - l = kfifo_unused(fifo); - if (len > l) - len = l; - - kfifo_copy_in(fifo, buf, len, fifo->in); - fifo->in += len; - return len; -} -EXPORT_SYMBOL_GPL(__kfifo_in); - -static void kfifo_copy_out(struct __kfifo *fifo, void *dst, - unsigned int len, unsigned int off) -{ - unsigned int size = fifo->mask + 1; - unsigned int esize = fifo->esize; - unsigned int l; - - off &= fifo->mask; - if (esize != 1) { - off *= esize; - size *= esize; - len *= esize; - } - l = min(len, size - off); - - memcpy(dst, fifo->data + off, l); - memcpy(dst + l, fifo->data, len - l); - /* - * make sure that the data is copied before - * incrementing the fifo->out index counter - */ - smp_wmb(); -} - -unsigned int __kfifo_out_peek(struct __kfifo *fifo, - void *buf, unsigned int len) -{ - unsigned int l; - - l = fifo->in - fifo->out; - if (len > l) - len = l; - - kfifo_copy_out(fifo, buf, len, fifo->out); - return len; -} -EXPORT_SYMBOL_GPL(__kfifo_out_peek); - -unsigned int __kfifo_out(struct __kfifo *fifo, - void *buf, unsigned int len) -{ - len = __kfifo_out_peek(fifo, buf, len); - fifo->out += len; - return len; -} -EXPORT_SYMBOL_GPL(__kfifo_out); - -static unsigned long kfifo_copy_from_user(struct __kfifo *fifo, - const void __user *from, unsigned int len, unsigned int off, - unsigned int *copied) -{ - unsigned int size = fifo->mask + 1; - unsigned int esize = fifo->esize; - unsigned int l; - unsigned long ret; - - off &= fifo->mask; - if (esize != 1) { - off *= esize; - size *= esize; - len *= esize; - } - l = min(len, size - off); - - ret = copy_from_user(fifo->data + off, from, l); - if (unlikely(ret)) - ret = DIV_ROUND_UP(ret + len - l, esize); - else { - ret = copy_from_user(fifo->data, from + l, len - l); - if (unlikely(ret)) - ret = DIV_ROUND_UP(ret, esize); - } - /* - * make sure that the data in the fifo is up to date before - * incrementing the fifo->in index counter - */ - smp_wmb(); - *copied = len - ret; - /* return the number of elements which are not copied */ - return ret; -} - -int __kfifo_from_user(struct __kfifo *fifo, const void __user *from, - unsigned long len, unsigned int *copied) -{ - unsigned int l; - unsigned long ret; - unsigned int esize = fifo->esize; - int err; - - if (esize != 1) - len /= esize; - - l = kfifo_unused(fifo); - if (len > l) - len = l; - - ret = kfifo_copy_from_user(fifo, from, len, fifo->in, copied); - if (unlikely(ret)) { - len -= ret; - err = -EFAULT; - } else - err = 0; - fifo->in += len; - return err; -} -EXPORT_SYMBOL_GPL(__kfifo_from_user); - -static unsigned long kfifo_copy_to_user(struct __kfifo *fifo, void __user *to, - unsigned int len, unsigned int off, unsigned int *copied) -{ - unsigned int l; - unsigned long ret; - unsigned int size = fifo->mask + 1; - unsigned int esize = fifo->esize; - - off &= fifo->mask; - if (esize != 1) { - off *= esize; - size *= esize; - len *= esize; - } - l = min(len, size - off); - - ret = copy_to_user(to, fifo->data + off, l); - if (unlikely(ret)) - ret = DIV_ROUND_UP(ret + len - l, esize); - else { - ret = copy_to_user(to + l, fifo->data, len - l); - if (unlikely(ret)) - ret = DIV_ROUND_UP(ret, esize); - } - /* - * make sure that the data is copied before - * incrementing the fifo->out index counter - */ - smp_wmb(); - *copied = len - ret; - /* return the number of elements which are not copied */ - return ret; -} - -int __kfifo_to_user(struct __kfifo *fifo, void __user *to, - unsigned long len, unsigned int *copied) -{ - unsigned int l; - unsigned long ret; - unsigned int esize = fifo->esize; - int err; - - if (esize != 1) - len /= esize; - - l = fifo->in - fifo->out; - if (len > l) - len = l; - ret = kfifo_copy_to_user(fifo, to, len, fifo->out, copied); - if (unlikely(ret)) { - len -= ret; - err = -EFAULT; - } else - err = 0; - fifo->out += len; - return err; -} -EXPORT_SYMBOL_GPL(__kfifo_to_user); - -static int setup_sgl_buf(struct scatterlist *sgl, void *buf, - int nents, unsigned int len) -{ - int n; - unsigned int l; - unsigned int off; - struct page *page; - - if (!nents) - return 0; - - if (!len) - return 0; - - n = 0; - page = virt_to_page(buf); - off = offset_in_page(buf); - l = 0; - - while (len >= l + PAGE_SIZE - off) { - struct page *npage; - - l += PAGE_SIZE; - buf += PAGE_SIZE; - npage = virt_to_page(buf); - if (page_to_phys(page) != page_to_phys(npage) - l) { - sg_set_page(sgl, page, l - off, off); - sgl = sg_next(sgl); - if (++n == nents || sgl == NULL) - return n; - page = npage; - len -= l - off; - l = off = 0; - } - } - sg_set_page(sgl, page, len, off); - return n + 1; -} - -static unsigned int setup_sgl(struct __kfifo *fifo, struct scatterlist *sgl, - int nents, unsigned int len, unsigned int off) -{ - unsigned int size = fifo->mask + 1; - unsigned int esize = fifo->esize; - unsigned int l; - unsigned int n; - - off &= fifo->mask; - if (esize != 1) { - off *= esize; - size *= esize; - len *= esize; - } - l = min(len, size - off); - - n = setup_sgl_buf(sgl, fifo->data + off, nents, l); - n += setup_sgl_buf(sgl + n, fifo->data, nents - n, len - l); - - return n; -} - -unsigned int __kfifo_dma_in_prepare(struct __kfifo *fifo, - struct scatterlist *sgl, int nents, unsigned int len) -{ - unsigned int l; - - l = kfifo_unused(fifo); - if (len > l) - len = l; - - return setup_sgl(fifo, sgl, nents, len, fifo->in); -} -EXPORT_SYMBOL_GPL(__kfifo_dma_in_prepare); - -unsigned int __kfifo_dma_out_prepare(struct __kfifo *fifo, - struct scatterlist *sgl, int nents, unsigned int len) -{ - unsigned int l; - - l = fifo->in - fifo->out; - if (len > l) - len = l; - - return setup_sgl(fifo, sgl, nents, len, fifo->out); -} -EXPORT_SYMBOL_GPL(__kfifo_dma_out_prepare); - -unsigned int __kfifo_max_r(unsigned int len, size_t recsize) -{ - unsigned int max = (1 << (recsize << 3)) - 1; - - if (len > max) - return max; - return len; -} - -#define __KFIFO_PEEK(data, out, mask) \ - ((data)[(out) & (mask)]) -/* - * __kfifo_peek_n internal helper function for determinate the length of - * the next record in the fifo - */ -static unsigned int __kfifo_peek_n(struct __kfifo *fifo, size_t recsize) -{ - unsigned int l; - unsigned int mask = fifo->mask; - unsigned char *data = fifo->data; - - l = __KFIFO_PEEK(data, fifo->out, mask); - - if (--recsize) - l |= __KFIFO_PEEK(data, fifo->out + 1, mask) << 8; - - return l; -} - -#define __KFIFO_POKE(data, in, mask, val) \ - ( \ - (data)[(in) & (mask)] = (unsigned char)(val) \ - ) - -/* - * __kfifo_poke_n internal helper function for storeing the length of - * the record into the fifo - */ -static void __kfifo_poke_n(struct __kfifo *fifo, unsigned int n, size_t recsize) -{ - unsigned int mask = fifo->mask; - unsigned char *data = fifo->data; - - __KFIFO_POKE(data, fifo->in, mask, n); - - if (recsize > 1) - __KFIFO_POKE(data, fifo->in + 1, mask, n >> 8); -} - -unsigned int __kfifo_len_r(struct __kfifo *fifo, size_t recsize) -{ - return __kfifo_peek_n(fifo, recsize); -} -EXPORT_SYMBOL_GPL(__kfifo_len_r); - -unsigned int __kfifo_in_r(struct __kfifo *fifo, const void *buf, - unsigned int len, size_t recsize) -{ - if (len + recsize > kfifo_unused(fifo)) - return 0; - - __kfifo_poke_n(fifo, len, recsize); - - kfifo_copy_in(fifo, buf, len, fifo->in + recsize); - fifo->in += len + recsize; - return len; -} -EXPORT_SYMBOL_GPL(__kfifo_in_r); - -static unsigned int kfifo_out_copy_r(struct __kfifo *fifo, - void *buf, unsigned int len, size_t recsize, unsigned int *n) -{ - *n = __kfifo_peek_n(fifo, recsize); - - if (len > *n) - len = *n; - - kfifo_copy_out(fifo, buf, len, fifo->out + recsize); - return len; -} - -unsigned int __kfifo_out_peek_r(struct __kfifo *fifo, void *buf, - unsigned int len, size_t recsize) -{ - unsigned int n; - - if (fifo->in == fifo->out) - return 0; - - return kfifo_out_copy_r(fifo, buf, len, recsize, &n); -} -EXPORT_SYMBOL_GPL(__kfifo_out_peek_r); - -unsigned int __kfifo_out_r(struct __kfifo *fifo, void *buf, - unsigned int len, size_t recsize) -{ - unsigned int n; - - if (fifo->in == fifo->out) - return 0; - - len = kfifo_out_copy_r(fifo, buf, len, recsize, &n); - fifo->out += n + recsize; - return len; -} -EXPORT_SYMBOL_GPL(__kfifo_out_r); - -void __kfifo_skip_r(struct __kfifo *fifo, size_t recsize) -{ - unsigned int n; - - n = __kfifo_peek_n(fifo, recsize); - fifo->out += n + recsize; -} -EXPORT_SYMBOL_GPL(__kfifo_skip_r); - -int __kfifo_from_user_r(struct __kfifo *fifo, const void __user *from, - unsigned long len, unsigned int *copied, size_t recsize) -{ - unsigned long ret; - - len = __kfifo_max_r(len, recsize); - - if (len + recsize > kfifo_unused(fifo)) { - *copied = 0; - return 0; - } - - __kfifo_poke_n(fifo, len, recsize); - - ret = kfifo_copy_from_user(fifo, from, len, fifo->in + recsize, copied); - if (unlikely(ret)) { - *copied = 0; - return -EFAULT; - } - fifo->in += len + recsize; - return 0; -} -EXPORT_SYMBOL_GPL(__kfifo_from_user_r); - -int __kfifo_to_user_r(struct __kfifo *fifo, void __user *to, - unsigned long len, unsigned int *copied, size_t recsize) -{ - unsigned long ret; - unsigned int n; - - if (fifo->in == fifo->out) { - *copied = 0; - return 0; - } - - n = __kfifo_peek_n(fifo, recsize); - if (len > n) - len = n; - - ret = kfifo_copy_to_user(fifo, to, len, fifo->out + recsize, copied); - if (unlikely(ret)) { - *copied = 0; - return -EFAULT; - } - fifo->out += n + recsize; - return 0; -} -EXPORT_SYMBOL_GPL(__kfifo_to_user_r); - -unsigned int __kfifo_dma_in_prepare_r(struct __kfifo *fifo, - struct scatterlist *sgl, int nents, unsigned int len, size_t recsize) -{ - if (!nents) - BUG(); - - len = __kfifo_max_r(len, recsize); - - if (len + recsize > kfifo_unused(fifo)) - return 0; - - return setup_sgl(fifo, sgl, nents, len, fifo->in + recsize); -} -EXPORT_SYMBOL_GPL(__kfifo_dma_in_prepare_r); - -void __kfifo_dma_in_finish_r(struct __kfifo *fifo, - unsigned int len, size_t recsize) -{ - len = __kfifo_max_r(len, recsize); - __kfifo_poke_n(fifo, len, recsize); - fifo->in += len + recsize; -} -EXPORT_SYMBOL_GPL(__kfifo_dma_in_finish_r); - -unsigned int __kfifo_dma_out_prepare_r(struct __kfifo *fifo, - struct scatterlist *sgl, int nents, unsigned int len, size_t recsize) -{ - if (!nents) - BUG(); - - len = __kfifo_max_r(len, recsize); - - if (len + recsize > fifo->in - fifo->out) - return 0; - - return setup_sgl(fifo, sgl, nents, len, fifo->out + recsize); -} -EXPORT_SYMBOL_GPL(__kfifo_dma_out_prepare_r); - -void __kfifo_dma_out_finish_r(struct __kfifo *fifo, size_t recsize) -{ - unsigned int len; - - len = __kfifo_peek_n(fifo, recsize); - fifo->out += len + recsize; -} -EXPORT_SYMBOL_GPL(__kfifo_dma_out_finish_r); diff --git a/compat/kstrtox.c b/compat/kstrtox.c deleted file mode 100644 index 266ffbc..0000000 --- a/compat/kstrtox.c +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Convert integer string representation to an integer. - * If an integer doesn't fit into specified type, -E is returned. - * - * Integer starts with optional sign. - * kstrtou*() functions do not accept sign "-". - * - * Radix 0 means autodetection: leading "0x" implies radix 16, - * leading "0" implies radix 8, otherwise radix is 10. - * Autodetection hints work after optional sign, but not before. - * - * If -E is returned, result is not touched. - */ -#include -/* - * kstrto* was included in kernel 2.6.38.4 and causes conflicts with the - * version included in compat-drivers. We use strict_strtol to check if - * kstrto* is already available. - */ -#ifndef strict_strtol - -#include -#include -#include -#include -#include -#include - -static inline char _tolower(const char c) -{ - return c | 0x20; -} - -static int _kstrtoull(const char *s, unsigned int base, unsigned long long *res) -{ - unsigned long long acc; - int ok; - - if (base == 0) { - if (s[0] == '0') { - if (_tolower(s[1]) == 'x' && isxdigit(s[2])) - base = 16; - else - base = 8; - } else - base = 10; - } - if (base == 16 && s[0] == '0' && _tolower(s[1]) == 'x') - s += 2; - - acc = 0; - ok = 0; - while (*s) { - unsigned int val; - - if ('0' <= *s && *s <= '9') - val = *s - '0'; - else if ('a' <= _tolower(*s) && _tolower(*s) <= 'f') - val = _tolower(*s) - 'a' + 10; - else if (*s == '\n') { - if (*(s + 1) == '\0') - break; - else - return -EINVAL; - } else - return -EINVAL; - - if (val >= base) - return -EINVAL; - if (acc > div_u64(ULLONG_MAX - val, base)) - return -ERANGE; - acc = acc * base + val; - ok = 1; - - s++; - } - if (!ok) - return -EINVAL; - *res = acc; - return 0; -} - -int kstrtoull(const char *s, unsigned int base, unsigned long long *res) -{ - if (s[0] == '+') - s++; - return _kstrtoull(s, base, res); -} -EXPORT_SYMBOL_GPL(kstrtoull); - -int kstrtoll(const char *s, unsigned int base, long long *res) -{ - unsigned long long tmp; - int rv; - - if (s[0] == '-') { - rv = _kstrtoull(s + 1, base, &tmp); - if (rv < 0) - return rv; - if ((long long)(-tmp) >= 0) - return -ERANGE; - *res = -tmp; - } else { - rv = kstrtoull(s, base, &tmp); - if (rv < 0) - return rv; - if ((long long)tmp < 0) - return -ERANGE; - *res = tmp; - } - return 0; -} -EXPORT_SYMBOL_GPL(kstrtoll); - -/* Internal, do not use. */ -int _kstrtoul(const char *s, unsigned int base, unsigned long *res) -{ - unsigned long long tmp; - int rv; - - rv = kstrtoull(s, base, &tmp); - if (rv < 0) - return rv; - if (tmp != (unsigned long long)(unsigned long)tmp) - return -ERANGE; - *res = tmp; - return 0; -} -EXPORT_SYMBOL_GPL(_kstrtoul); - -/* Internal, do not use. */ -int _kstrtol(const char *s, unsigned int base, long *res) -{ - long long tmp; - int rv; - - rv = kstrtoll(s, base, &tmp); - if (rv < 0) - return rv; - if (tmp != (long long)(long)tmp) - return -ERANGE; - *res = tmp; - return 0; -} -EXPORT_SYMBOL_GPL(_kstrtol); - -int kstrtouint(const char *s, unsigned int base, unsigned int *res) -{ - unsigned long long tmp; - int rv; - - rv = kstrtoull(s, base, &tmp); - if (rv < 0) - return rv; - if (tmp != (unsigned long long)(unsigned int)tmp) - return -ERANGE; - *res = tmp; - return 0; -} -EXPORT_SYMBOL_GPL(kstrtouint); - -int kstrtoint(const char *s, unsigned int base, int *res) -{ - long long tmp; - int rv; - - rv = kstrtoll(s, base, &tmp); - if (rv < 0) - return rv; - if (tmp != (long long)(int)tmp) - return -ERANGE; - *res = tmp; - return 0; -} -EXPORT_SYMBOL_GPL(kstrtoint); - -int kstrtou16(const char *s, unsigned int base, u16 *res) -{ - unsigned long long tmp; - int rv; - - rv = kstrtoull(s, base, &tmp); - if (rv < 0) - return rv; - if (tmp != (unsigned long long)(u16)tmp) - return -ERANGE; - *res = tmp; - return 0; -} -EXPORT_SYMBOL_GPL(kstrtou16); - -int kstrtos16(const char *s, unsigned int base, s16 *res) -{ - long long tmp; - int rv; - - rv = kstrtoll(s, base, &tmp); - if (rv < 0) - return rv; - if (tmp != (long long)(s16)tmp) - return -ERANGE; - *res = tmp; - return 0; -} -EXPORT_SYMBOL_GPL(kstrtos16); - -int kstrtou8(const char *s, unsigned int base, u8 *res) -{ - unsigned long long tmp; - int rv; - - rv = kstrtoull(s, base, &tmp); - if (rv < 0) - return rv; - if (tmp != (unsigned long long)(u8)tmp) - return -ERANGE; - *res = tmp; - return 0; -} -EXPORT_SYMBOL_GPL(kstrtou8); - -int kstrtos8(const char *s, unsigned int base, s8 *res) -{ - long long tmp; - int rv; - - rv = kstrtoll(s, base, &tmp); - if (rv < 0) - return rv; - if (tmp != (long long)(s8)tmp) - return -ERANGE; - *res = tmp; - return 0; -} -EXPORT_SYMBOL_GPL(kstrtos8); -#endif /* #ifndef strict_strtol */ diff --git a/compat/main.c b/compat/main.c deleted file mode 100644 index 972c142..0000000 --- a/compat/main.c +++ /dev/null @@ -1,78 +0,0 @@ -#include - -MODULE_AUTHOR("Luis R. Rodriguez"); -MODULE_DESCRIPTION("Kernel compatibility module"); -MODULE_LICENSE("GPL"); - -#ifndef COMPAT_BASE -#error "You need a COMPAT_BASE" -#endif - -#ifndef COMPAT_BASE_TREE -#error "You need a COMPAT_BASE_TREE" -#endif - -#ifndef COMPAT_BASE_TREE_VERSION -#error "You need a COMPAT_BASE_TREE_VERSION" -#endif - -#ifndef COMPAT_VERSION -#error "You need a COMPAT_VERSION" -#endif - -static char *compat_base = COMPAT_BASE; -static char *compat_base_tree = COMPAT_BASE_TREE; -static char *compat_base_tree_version = COMPAT_BASE_TREE_VERSION; -static char *compat_version = COMPAT_VERSION; - -module_param(compat_base, charp, 0400); -MODULE_PARM_DESC(compat_base_tree, - "The upstream verion of compat.git used"); - -module_param(compat_base_tree, charp, 0400); -MODULE_PARM_DESC(compat_base_tree, - "The upstream tree used as base for this backport"); - -module_param(compat_base_tree_version, charp, 0400); -MODULE_PARM_DESC(compat_base_tree_version, - "The git-describe of the upstream base tree"); - -module_param(compat_version, charp, 0400); -MODULE_PARM_DESC(compat_version, - "Version of the kernel compat backport work"); - -void compat_dependency_symbol(void) -{ -} -EXPORT_SYMBOL_GPL(compat_dependency_symbol); - - -static int __init compat_init(void) -{ - compat_pm_qos_power_init(); - compat_system_workqueue_create(); - init_compat_mmc_pm_flags(); - - printk(KERN_INFO - COMPAT_PROJECT " backport release: " - COMPAT_VERSION - "\n"); - printk(KERN_INFO "Backport based on " - COMPAT_BASE_TREE " " COMPAT_BASE_TREE_VERSION - "\n"); - printk(KERN_INFO "compat.git: " - COMPAT_BASE_TREE "\n"); - - return 0; -} -module_init(compat_init); - -static void __exit compat_exit(void) -{ - compat_pm_qos_power_deinit(); - compat_system_workqueue_destroy(); - - return; -} -module_exit(compat_exit); - diff --git a/compat/pm_qos_params.c b/compat/pm_qos_params.c deleted file mode 100644 index 833d98c..0000000 --- a/compat/pm_qos_params.c +++ /dev/null @@ -1,477 +0,0 @@ -#include - -/* This is the backport of pm-qos params for kernels <= 2.6.25 */ -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)) - -/* - * This module exposes the interface to kernel space for specifying - * QoS dependencies. It provides infrastructure for registration of: - * - * Dependents on a QoS value : register requirements - * Watchers of QoS value : get notified when target QoS value changes - * - * This QoS design is best effort based. Dependents register their QoS needs. - * Watchers register to keep track of the current QoS needs of the system. - * - * There are 3 basic classes of QoS parameter: latency, timeout, throughput - * each have defined units: - * latency: usec - * timeout: usec <-- currently not used. - * throughput: kbs (kilo byte / sec) - * - * There are lists of pm_qos_objects each one wrapping requirements, notifiers - * - * User mode requirements on a QOS parameter register themselves to the - * subsystem by opening the device node /dev/... and writing there request to - * the node. As long as the process holds a file handle open to the node the - * client continues to be accounted for. Upon file release the usermode - * requirement is removed and a new qos target is computed. This way when the - * requirement that the application has is cleaned up when closes the file - * pointer or exits the pm_qos_object will get an opportunity to clean up. - * - * Mark Gross - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -/* - * locking rule: all changes to requirements or notifiers lists - * or pm_qos_object list and pm_qos_objects need to happen with pm_qos_lock - * held, taken with _irqsave. One lock to rule them all - */ -struct requirement_list { - struct list_head list; - union { - s32 value; - s32 usec; - s32 kbps; - }; - char *name; -}; - -static s32 max_compare(s32 v1, s32 v2); -static s32 min_compare(s32 v1, s32 v2); - -struct pm_qos_object { - struct requirement_list requirements; - struct blocking_notifier_head *notifiers; - struct miscdevice pm_qos_power_miscdev; - char *name; - s32 default_value; - atomic_t target_value; - s32 (*comparitor)(s32, s32); -}; - -static struct pm_qos_object null_pm_qos; -static BLOCKING_NOTIFIER_HEAD(cpu_dma_lat_notifier); -static struct pm_qos_object cpu_dma_pm_qos = { - .requirements = {LIST_HEAD_INIT(cpu_dma_pm_qos.requirements.list)}, - .notifiers = &cpu_dma_lat_notifier, - .name = "cpu_dma_latency", - .default_value = 2000 * USEC_PER_SEC, - .target_value = ATOMIC_INIT(2000 * USEC_PER_SEC), - .comparitor = min_compare -}; - -static BLOCKING_NOTIFIER_HEAD(network_lat_notifier); -static struct pm_qos_object network_lat_pm_qos = { - .requirements = {LIST_HEAD_INIT(network_lat_pm_qos.requirements.list)}, - .notifiers = &network_lat_notifier, - .name = "network_latency", - .default_value = 2000 * USEC_PER_SEC, - .target_value = ATOMIC_INIT(2000 * USEC_PER_SEC), - .comparitor = min_compare -}; - - -static BLOCKING_NOTIFIER_HEAD(network_throughput_notifier); -static struct pm_qos_object network_throughput_pm_qos = { - .requirements = - {LIST_HEAD_INIT(network_throughput_pm_qos.requirements.list)}, - .notifiers = &network_throughput_notifier, - .name = "network_throughput", - .default_value = 0, - .target_value = ATOMIC_INIT(0), - .comparitor = max_compare -}; - -static BLOCKING_NOTIFIER_HEAD(system_bus_freq_notifier); -static struct pm_qos_object system_bus_freq_pm_qos = { - .requirements = - {LIST_HEAD_INIT(system_bus_freq_pm_qos.requirements.list)}, - .notifiers = &system_bus_freq_notifier, - .name = "system_bus_freq", - .default_value = 0, - .target_value = ATOMIC_INIT(0), - .comparitor = max_compare -}; - - -static struct pm_qos_object *pm_qos_array[PM_QOS_NUM_CLASSES] = { - [PM_QOS_RESERVED] = &null_pm_qos, - [PM_QOS_CPU_DMA_LATENCY] = &cpu_dma_pm_qos, - [PM_QOS_NETWORK_LATENCY] = &network_lat_pm_qos, - [PM_QOS_NETWORK_THROUGHPUT] = &network_throughput_pm_qos, - [PM_QOS_SYSTEM_BUS_FREQ] = &system_bus_freq_pm_qos, -}; - -static DEFINE_SPINLOCK(pm_qos_lock); - -static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf, - size_t count, loff_t *f_pos); -static int pm_qos_power_open(struct inode *inode, struct file *filp); -static int pm_qos_power_release(struct inode *inode, struct file *filp); - -static const struct file_operations pm_qos_power_fops = { - .write = pm_qos_power_write, - .open = pm_qos_power_open, - .release = pm_qos_power_release, -}; - -/* static helper functions */ -static s32 max_compare(s32 v1, s32 v2) -{ - return max(v1, v2); -} - -static s32 min_compare(s32 v1, s32 v2) -{ - return min(v1, v2); -} - - -static void update_target(int target) -{ - s32 extreme_value; - struct requirement_list *node; - unsigned long flags; - int call_notifier = 0; - - spin_lock_irqsave(&pm_qos_lock, flags); - extreme_value = pm_qos_array[target]->default_value; - list_for_each_entry(node, - &pm_qos_array[target]->requirements.list, list) { - extreme_value = pm_qos_array[target]->comparitor( - extreme_value, node->value); - } - if (atomic_read(&pm_qos_array[target]->target_value) != extreme_value) { - call_notifier = 1; - atomic_set(&pm_qos_array[target]->target_value, extreme_value); - pr_debug(KERN_ERR "new target for qos %d is %d\n", target, - atomic_read(&pm_qos_array[target]->target_value)); - } - spin_unlock_irqrestore(&pm_qos_lock, flags); - - if (call_notifier) - blocking_notifier_call_chain(pm_qos_array[target]->notifiers, - (unsigned long) extreme_value, NULL); -} - -static int register_pm_qos_misc(struct pm_qos_object *qos) -{ - qos->pm_qos_power_miscdev.minor = MISC_DYNAMIC_MINOR; - qos->pm_qos_power_miscdev.name = qos->name; - qos->pm_qos_power_miscdev.fops = &pm_qos_power_fops; - - return misc_register(&qos->pm_qos_power_miscdev); -} - -static int find_pm_qos_object_by_minor(int minor) -{ - int pm_qos_class; - - for (pm_qos_class = 0; - pm_qos_class < PM_QOS_NUM_CLASSES; pm_qos_class++) { - if (minor == - pm_qos_array[pm_qos_class]->pm_qos_power_miscdev.minor) - return pm_qos_class; - } - return -1; -} - -/** - * pm_qos_requirement - returns current system wide qos expectation - * @pm_qos_class: identification of which qos value is requested - * - * This function returns the current target value in an atomic manner. - */ -int pm_qos_requirement(int pm_qos_class) -{ - return atomic_read(&pm_qos_array[pm_qos_class]->target_value); -} -EXPORT_SYMBOL_GPL(pm_qos_requirement); - -/** - * pm_qos_add_requirement - inserts new qos request into the list - * @pm_qos_class: identifies which list of qos request to us - * @name: identifies the request - * @value: defines the qos request - * - * This function inserts a new entry in the pm_qos_class list of requested qos - * performance characteristics. It recomputes the aggregate QoS expectations - * for the pm_qos_class of parameters. - */ -int pm_qos_add_requirement(int pm_qos_class, char *name, s32 value) -{ - struct requirement_list *dep; - unsigned long flags; - - dep = kzalloc(sizeof(struct requirement_list), GFP_KERNEL); - if (dep) { - if (value == PM_QOS_DEFAULT_VALUE) - dep->value = pm_qos_array[pm_qos_class]->default_value; - else - dep->value = value; - dep->name = kstrdup(name, GFP_KERNEL); - if (!dep->name) - goto cleanup; - - spin_lock_irqsave(&pm_qos_lock, flags); - list_add(&dep->list, - &pm_qos_array[pm_qos_class]->requirements.list); - spin_unlock_irqrestore(&pm_qos_lock, flags); - update_target(pm_qos_class); - - return 0; - } - -cleanup: - kfree(dep); - return -ENOMEM; -} -EXPORT_SYMBOL_GPL(pm_qos_add_requirement); - -/** - * pm_qos_update_requirement - modifies an existing qos request - * @pm_qos_class: identifies which list of qos request to us - * @name: identifies the request - * @value: defines the qos request - * - * Updates an existing qos requirement for the pm_qos_class of parameters along - * with updating the target pm_qos_class value. - * - * If the named request isn't in the list then no change is made. - */ -int pm_qos_update_requirement(int pm_qos_class, char *name, s32 new_value) -{ - unsigned long flags; - struct requirement_list *node; - int pending_update = 0; - - spin_lock_irqsave(&pm_qos_lock, flags); - list_for_each_entry(node, - &pm_qos_array[pm_qos_class]->requirements.list, list) { - if (strcmp(node->name, name) == 0) { - if (new_value == PM_QOS_DEFAULT_VALUE) - node->value = - pm_qos_array[pm_qos_class]->default_value; - else - node->value = new_value; - pending_update = 1; - break; - } - } - spin_unlock_irqrestore(&pm_qos_lock, flags); - if (pending_update) - update_target(pm_qos_class); - - return 0; -} -EXPORT_SYMBOL_GPL(pm_qos_update_requirement); - -/** - * pm_qos_remove_requirement - modifies an existing qos request - * @pm_qos_class: identifies which list of qos request to us - * @name: identifies the request - * - * Will remove named qos request from pm_qos_class list of parameters and - * recompute the current target value for the pm_qos_class. - */ -void pm_qos_remove_requirement(int pm_qos_class, char *name) -{ - unsigned long flags; - struct requirement_list *node; - int pending_update = 0; - - spin_lock_irqsave(&pm_qos_lock, flags); - list_for_each_entry(node, - &pm_qos_array[pm_qos_class]->requirements.list, list) { - if (strcmp(node->name, name) == 0) { - kfree(node->name); - list_del(&node->list); - kfree(node); - pending_update = 1; - break; - } - } - spin_unlock_irqrestore(&pm_qos_lock, flags); - if (pending_update) - update_target(pm_qos_class); -} -EXPORT_SYMBOL_GPL(pm_qos_remove_requirement); - -/** - * pm_qos_add_notifier - sets notification entry for changes to target value - * @pm_qos_class: identifies which qos target changes should be notified. - * @notifier: notifier block managed by caller. - * - * will register the notifier into a notification chain that gets called - * upon changes to the pm_qos_class target value. - */ -int pm_qos_add_notifier(int pm_qos_class, struct notifier_block *notifier) -{ - int retval; - - retval = blocking_notifier_chain_register( - pm_qos_array[pm_qos_class]->notifiers, notifier); - - return retval; -} -EXPORT_SYMBOL_GPL(pm_qos_add_notifier); - -/** - * pm_qos_remove_notifier - deletes notification entry from chain. - * @pm_qos_class: identifies which qos target changes are notified. - * @notifier: notifier block to be removed. - * - * will remove the notifier from the notification chain that gets called - * upon changes to the pm_qos_class target value. - */ -int pm_qos_remove_notifier(int pm_qos_class, struct notifier_block *notifier) -{ - int retval; - - retval = blocking_notifier_chain_unregister( - pm_qos_array[pm_qos_class]->notifiers, notifier); - - return retval; -} -EXPORT_SYMBOL_GPL(pm_qos_remove_notifier); - -#define PID_NAME_LEN 32 - -static int pm_qos_power_open(struct inode *inode, struct file *filp) -{ - int ret; - long pm_qos_class; - char name[PID_NAME_LEN]; - - pm_qos_class = find_pm_qos_object_by_minor(iminor(inode)); - if (pm_qos_class >= 0) { - filp->private_data = (void *)pm_qos_class; - snprintf(name, PID_NAME_LEN, "process_%d", current->pid); - ret = pm_qos_add_requirement(pm_qos_class, name, - PM_QOS_DEFAULT_VALUE); - if (ret >= 0) - return 0; - } - return -EPERM; -} - -static int pm_qos_power_release(struct inode *inode, struct file *filp) -{ - int pm_qos_class; - char name[PID_NAME_LEN]; - - pm_qos_class = (long)filp->private_data; - snprintf(name, PID_NAME_LEN, "process_%d", current->pid); - pm_qos_remove_requirement(pm_qos_class, name); - - return 0; -} - -static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf, - size_t count, loff_t *f_pos) -{ - s32 value; - int pm_qos_class; - char name[PID_NAME_LEN]; - - pm_qos_class = (long)filp->private_data; - if (count != sizeof(s32)) - return -EINVAL; - if (copy_from_user(&value, buf, sizeof(s32))) - return -EFAULT; - snprintf(name, PID_NAME_LEN, "process_%d", current->pid); - pm_qos_update_requirement(pm_qos_class, name, value); - - return sizeof(s32); -} - - -/* - * This initializes pm-qos for older kernels. - */ -int compat_pm_qos_power_init(void) -{ - int ret = 0; - - ret = register_pm_qos_misc(&cpu_dma_pm_qos); - if (ret < 0) { - printk(KERN_ERR "pm_qos_param: cpu_dma_latency setup failed\n"); - return ret; - } - ret = register_pm_qos_misc(&network_lat_pm_qos); - if (ret < 0) { - printk(KERN_ERR "pm_qos_param: network_latency setup failed\n"); - return ret; - } - ret = register_pm_qos_misc(&network_throughput_pm_qos); - if (ret < 0) { - printk(KERN_ERR - "pm_qos_param: network_throughput setup failed\n"); - return ret; - } - ret = register_pm_qos_misc(&system_bus_freq_pm_qos); - if (ret < 0) - printk(KERN_ERR - "pm_qos_param: system_bus_freq setup failed\n"); - - return ret; -} - -int compat_pm_qos_power_deinit(void) -{ - int ret = 0; - - ret = misc_deregister(&cpu_dma_pm_qos.pm_qos_power_miscdev); - if (ret < 0) { - printk(KERN_ERR "pm_qos_param: cpu_dma_latency deinit failed\n"); - return ret; - } - - ret = misc_deregister(&network_lat_pm_qos.pm_qos_power_miscdev); - if (ret < 0) { - printk(KERN_ERR "pm_qos_param: network_latency deinit failed\n"); - return ret; - } - - ret = misc_deregister(&network_throughput_pm_qos.pm_qos_power_miscdev); - if (ret < 0) { - printk(KERN_ERR - "pm_qos_param: network_throughput deinit failed\n"); - return ret; - } - - ret = misc_deregister(&system_bus_freq_pm_qos.pm_qos_power_miscdev); - if (ret < 0) { - printk(KERN_ERR - "pm_qos_param: system_bus_freq deinit failed\n"); - return ret; - } - - return ret; -} -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) */ diff --git a/compat/sch_codel.c b/compat/sch_codel.c deleted file mode 100644 index 5ad66fb..0000000 --- a/compat/sch_codel.c +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Codel - The Controlled-Delay Active Queue Management algorithm - * - * Copyright (C) 2011-2012 Kathleen Nichols - * Copyright (C) 2011-2012 Van Jacobson - * - * Implemented on linux by : - * Copyright (C) 2012 Michael D. Taht - * Copyright (C) 2012 Eric Dumazet - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions, and the following disclaimer, - * without modification. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The names of the authors may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, provided that this notice is retained in full, this - * software may be distributed under the terms of the GNU General - * Public License ("GPL") version 2, in which case the provisions of the - * GPL apply INSTEAD OF those given above. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define DEFAULT_CODEL_LIMIT 1000 - -struct codel_sched_data { - struct codel_params params; - struct codel_vars vars; - struct codel_stats stats; - u32 drop_overlimit; -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - u32 limit; -#endif -}; - -/* This is the specific function called from codel_dequeue() - * to dequeue a packet from queue. Note: backlog is handled in - * codel, we dont need to reduce it here. - */ -static struct sk_buff *dequeue(struct codel_vars *vars, struct Qdisc *sch) -{ - struct sk_buff *skb = __skb_dequeue(&sch->q); - - prefetch(&skb->end); /* we'll need skb_shinfo() */ - return skb; -} - -static struct sk_buff *codel_qdisc_dequeue(struct Qdisc *sch) -{ - struct codel_sched_data *q = qdisc_priv(sch); - struct sk_buff *skb; - - skb = codel_dequeue(sch, &q->params, &q->vars, &q->stats, dequeue); - - /* We cant call qdisc_tree_decrease_qlen() if our qlen is 0, - * or HTB crashes. Defer it for next round. - */ - if (q->stats.drop_count && sch->q.qlen) { - qdisc_tree_decrease_qlen(sch, q->stats.drop_count); - q->stats.drop_count = 0; - } - if (skb) - qdisc_bstats_update(sch, skb); - return skb; -} - -static int codel_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch) -{ - struct codel_sched_data *q; - - q = qdisc_priv(sch); - -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - if (likely(qdisc_qlen(sch) < q->limit)) { -#else - if (likely(qdisc_qlen(sch) < sch->limit)) { -#endif - codel_set_enqueue_time(skb); - return qdisc_enqueue_tail(skb, sch); - } - q->drop_overlimit++; - return qdisc_drop(skb, sch); -} - -static const struct nla_policy codel_policy[TCA_CODEL_MAX + 1] = { - [TCA_CODEL_TARGET] = { .type = NLA_U32 }, - [TCA_CODEL_LIMIT] = { .type = NLA_U32 }, - [TCA_CODEL_INTERVAL] = { .type = NLA_U32 }, - [TCA_CODEL_ECN] = { .type = NLA_U32 }, -}; - -static int codel_change(struct Qdisc *sch, struct nlattr *opt) -{ - struct codel_sched_data *q = qdisc_priv(sch); - struct nlattr *tb[TCA_CODEL_MAX + 1]; - unsigned int qlen; - int err; - - if (!opt) - return -EINVAL; - - err = nla_parse_nested(tb, TCA_CODEL_MAX, opt, codel_policy); - if (err < 0) - return err; - - sch_tree_lock(sch); - - if (tb[TCA_CODEL_TARGET]) { - u32 target = nla_get_u32(tb[TCA_CODEL_TARGET]); - - q->params.target = ((u64)target * NSEC_PER_USEC) >> CODEL_SHIFT; - } - - if (tb[TCA_CODEL_INTERVAL]) { - u32 interval = nla_get_u32(tb[TCA_CODEL_INTERVAL]); - - q->params.interval = ((u64)interval * NSEC_PER_USEC) >> CODEL_SHIFT; - } - - if (tb[TCA_CODEL_LIMIT]) -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - q->limit = nla_get_u32(tb[TCA_CODEL_LIMIT]); -#else - sch->limit = nla_get_u32(tb[TCA_CODEL_LIMIT]); -#endif - - if (tb[TCA_CODEL_ECN]) - q->params.ecn = !!nla_get_u32(tb[TCA_CODEL_ECN]); - - qlen = sch->q.qlen; -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - while (sch->q.qlen > q->limit) { -#else - while (sch->q.qlen > sch->limit) { -#endif - struct sk_buff *skb = __skb_dequeue(&sch->q); - - sch->qstats.backlog -= qdisc_pkt_len(skb); - qdisc_drop(skb, sch); - } - qdisc_tree_decrease_qlen(sch, qlen - sch->q.qlen); - - sch_tree_unlock(sch); - return 0; -} - -static int codel_init(struct Qdisc *sch, struct nlattr *opt) -{ - struct codel_sched_data *q = qdisc_priv(sch); - -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - q->limit = DEFAULT_CODEL_LIMIT; -#else - sch->limit = DEFAULT_CODEL_LIMIT; -#endif - - codel_params_init(&q->params); - codel_vars_init(&q->vars); - codel_stats_init(&q->stats); - - if (opt) { - int err = codel_change(sch, opt); - - if (err) - return err; - } - -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - if (q->limit >= 1) -#else - if (sch->limit >= 1) -#endif - sch->flags |= TCQ_F_CAN_BYPASS; - else - sch->flags &= ~TCQ_F_CAN_BYPASS; - - return 0; -} - -static int codel_dump(struct Qdisc *sch, struct sk_buff *skb) -{ - struct codel_sched_data *q = qdisc_priv(sch); - struct nlattr *opts; - - opts = nla_nest_start(skb, TCA_OPTIONS); - if (opts == NULL) - goto nla_put_failure; - - if (nla_put_u32(skb, TCA_CODEL_TARGET, - codel_time_to_us(q->params.target)) || - nla_put_u32(skb, TCA_CODEL_LIMIT, -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - q->limit) || -#else - sch->limit) || -#endif - nla_put_u32(skb, TCA_CODEL_INTERVAL, - codel_time_to_us(q->params.interval)) || - nla_put_u32(skb, TCA_CODEL_ECN, - q->params.ecn)) - goto nla_put_failure; - - return nla_nest_end(skb, opts); - -nla_put_failure: - nla_nest_cancel(skb, opts); - return -1; -} - -static int codel_dump_stats(struct Qdisc *sch, struct gnet_dump *d) -{ - const struct codel_sched_data *q = qdisc_priv(sch); - struct tc_codel_xstats st = { - .maxpacket = q->stats.maxpacket, - .count = q->vars.count, - .lastcount = q->vars.lastcount, - .drop_overlimit = q->drop_overlimit, - .ldelay = codel_time_to_us(q->vars.ldelay), - .dropping = q->vars.dropping, - .ecn_mark = q->stats.ecn_mark, - }; - - if (q->vars.dropping) { - codel_tdiff_t delta = q->vars.drop_next - codel_get_time(); - - if (delta >= 0) - st.drop_next = codel_time_to_us(delta); - else - st.drop_next = -codel_time_to_us(-delta); - } - - return gnet_stats_copy_app(d, &st, sizeof(st)); -} - -static void codel_reset(struct Qdisc *sch) -{ - struct codel_sched_data *q = qdisc_priv(sch); - - qdisc_reset_queue(sch); - codel_vars_init(&q->vars); -} - -static struct Qdisc_ops codel_qdisc_ops __read_mostly = { - .id = "codel", - .priv_size = sizeof(struct codel_sched_data), - - .enqueue = codel_qdisc_enqueue, - .dequeue = codel_qdisc_dequeue, -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)) - .peek = qdisc_peek_dequeued, -#endif - .init = codel_init, - .reset = codel_reset, - .change = codel_change, - .dump = codel_dump, - .dump_stats = codel_dump_stats, - .owner = THIS_MODULE, -}; - -static int __init codel_module_init(void) -{ - return register_qdisc(&codel_qdisc_ops); -} - -static void __exit codel_module_exit(void) -{ - unregister_qdisc(&codel_qdisc_ops); -} - -module_init(codel_module_init) -module_exit(codel_module_exit) - -MODULE_DESCRIPTION("Controlled Delay queue discipline"); -MODULE_AUTHOR("Dave Taht"); -MODULE_AUTHOR("Eric Dumazet"); -MODULE_LICENSE("Dual BSD/GPL"); diff --git a/compat/sch_fq_codel_core.c b/compat/sch_fq_codel_core.c deleted file mode 100644 index f03df2a..0000000 --- a/compat/sch_fq_codel_core.c +++ /dev/null @@ -1,659 +0,0 @@ -/* - * Fair Queue CoDel discipline - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version - * 2 of the License, or (at your option) any later version. - * - * Copyright (C) 2012 Eric Dumazet - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* Fair Queue CoDel. - * - * Principles : - * Packets are classified (internal classifier or external) on flows. - * This is a Stochastic model (as we use a hash, several flows - * might be hashed on same slot) - * Each flow has a CoDel managed queue. - * Flows are linked onto two (Round Robin) lists, - * so that new flows have priority on old ones. - * - * For a given flow, packets are not reordered (CoDel uses a FIFO) - * head drops only. - * ECN capability is on by default. - * Low memory footprint (64 bytes per flow) - */ - -struct fq_codel_flow { - struct sk_buff *head; - struct sk_buff *tail; - struct list_head flowchain; - int deficit; - u32 dropped; /* number of drops (or ECN marks) on this flow */ - struct codel_vars cvars; -}; /* please try to keep this structure <= 64 bytes */ - -struct fq_codel_sched_data { - struct tcf_proto *filter_list; /* optional external classifier */ - struct fq_codel_flow *flows; /* Flows table [flows_cnt] */ - u32 *backlogs; /* backlog table [flows_cnt] */ - u32 flows_cnt; /* number of flows */ - u32 perturbation; /* hash perturbation */ - u32 quantum; /* psched_mtu(qdisc_dev(sch)); */ - struct codel_params cparams; - struct codel_stats cstats; - u32 drop_overlimit; - u32 new_flow_count; - - struct list_head new_flows; /* list of new flows */ - struct list_head old_flows; /* list of old flows */ -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - u32 limit; -#endif -}; - -static unsigned int fq_codel_hash(const struct fq_codel_sched_data *q, - const struct sk_buff *skb) -{ - struct flow_keys keys; - unsigned int hash; - - skb_flow_dissect(skb, &keys); - hash = jhash_3words((__force u32)keys.dst, - (__force u32)keys.src ^ keys.ip_proto, - (__force u32)keys.ports, q->perturbation); - return ((u64)hash * q->flows_cnt) >> 32; -} - -static unsigned int fq_codel_classify(struct sk_buff *skb, struct Qdisc *sch, - int *qerr) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - struct tcf_result res; - int result; - - if (TC_H_MAJ(skb->priority) == sch->handle && - TC_H_MIN(skb->priority) > 0 && - TC_H_MIN(skb->priority) <= q->flows_cnt) - return TC_H_MIN(skb->priority); - - if (!q->filter_list) - return fq_codel_hash(q, skb) + 1; - - *qerr = NET_XMIT_SUCCESS | __NET_XMIT_BYPASS; - result = tc_classify(skb, q->filter_list, &res); - if (result >= 0) { -#ifdef CONFIG_NET_CLS_ACT - switch (result) { - case TC_ACT_STOLEN: - case TC_ACT_QUEUED: - *qerr = NET_XMIT_SUCCESS | __NET_XMIT_STOLEN; - case TC_ACT_SHOT: - return 0; - } -#endif - if (TC_H_MIN(res.classid) <= q->flows_cnt) - return TC_H_MIN(res.classid); - } - return 0; -} - -/* helper functions : might be changed when/if skb use a standard list_head */ - -/* remove one skb from head of slot queue */ -static inline struct sk_buff *dequeue_head(struct fq_codel_flow *flow) -{ - struct sk_buff *skb = flow->head; - - flow->head = skb->next; - skb->next = NULL; - return skb; -} - -/* add skb to flow queue (tail add) */ -static inline void flow_queue_add(struct fq_codel_flow *flow, - struct sk_buff *skb) -{ - if (flow->head == NULL) - flow->head = skb; - else - flow->tail->next = skb; - flow->tail = skb; - skb->next = NULL; -} - -static unsigned int fq_codel_drop(struct Qdisc *sch) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - struct sk_buff *skb; - unsigned int maxbacklog = 0, idx = 0, i, len; - struct fq_codel_flow *flow; - - /* Queue is full! Find the fat flow and drop packet from it. - * This might sound expensive, but with 1024 flows, we scan - * 4KB of memory, and we dont need to handle a complex tree - * in fast path (packet queue/enqueue) with many cache misses. - */ - for (i = 0; i < q->flows_cnt; i++) { - if (q->backlogs[i] > maxbacklog) { - maxbacklog = q->backlogs[i]; - idx = i; - } - } - flow = &q->flows[idx]; - skb = dequeue_head(flow); - len = qdisc_pkt_len(skb); - q->backlogs[idx] -= len; - kfree_skb(skb); - sch->q.qlen--; - sch->qstats.drops++; - sch->qstats.backlog -= len; - flow->dropped++; - return idx; -} - -static int fq_codel_enqueue(struct sk_buff *skb, struct Qdisc *sch) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - unsigned int idx; - struct fq_codel_flow *flow; - int uninitialized_var(ret); - - idx = fq_codel_classify(skb, sch, &ret); - if (idx == 0) { - if (ret & __NET_XMIT_BYPASS) - sch->qstats.drops++; - kfree_skb(skb); - return ret; - } - idx--; - - codel_set_enqueue_time(skb); - flow = &q->flows[idx]; - flow_queue_add(flow, skb); - q->backlogs[idx] += qdisc_pkt_len(skb); - sch->qstats.backlog += qdisc_pkt_len(skb); - - if (list_empty(&flow->flowchain)) { - list_add_tail(&flow->flowchain, &q->new_flows); - codel_vars_init(&flow->cvars); - q->new_flow_count++; - flow->deficit = q->quantum; - flow->dropped = 0; - } -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - if (++sch->q.qlen < q->limit) -#else - if (++sch->q.qlen < sch->limit) -#endif - return NET_XMIT_SUCCESS; - - q->drop_overlimit++; - /* Return Congestion Notification only if we dropped a packet - * from this flow. - */ - if (fq_codel_drop(sch) == idx) - return NET_XMIT_CN; - - /* As we dropped a packet, better let upper stack know this */ - qdisc_tree_decrease_qlen(sch, 1); - return NET_XMIT_SUCCESS; -} - -/* This is the specific function called from codel_dequeue() - * to dequeue a packet from queue. Note: backlog is handled in - * codel, we dont need to reduce it here. - */ -static struct sk_buff *dequeue(struct codel_vars *vars, struct Qdisc *sch) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - struct fq_codel_flow *flow; - struct sk_buff *skb = NULL; - - flow = container_of(vars, struct fq_codel_flow, cvars); - if (flow->head) { - skb = dequeue_head(flow); - q->backlogs[flow - q->flows] -= qdisc_pkt_len(skb); - sch->q.qlen--; - } - return skb; -} - -static struct sk_buff *fq_codel_dequeue(struct Qdisc *sch) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - struct sk_buff *skb; - struct fq_codel_flow *flow; - struct list_head *head; - u32 prev_drop_count, prev_ecn_mark; - -begin: - head = &q->new_flows; - if (list_empty(head)) { - head = &q->old_flows; - if (list_empty(head)) - return NULL; - } - flow = list_first_entry(head, struct fq_codel_flow, flowchain); - - if (flow->deficit <= 0) { - flow->deficit += q->quantum; - list_move_tail(&flow->flowchain, &q->old_flows); - goto begin; - } - - prev_drop_count = q->cstats.drop_count; - prev_ecn_mark = q->cstats.ecn_mark; - - skb = codel_dequeue(sch, &q->cparams, &flow->cvars, &q->cstats, - dequeue); - - flow->dropped += q->cstats.drop_count - prev_drop_count; - flow->dropped += q->cstats.ecn_mark - prev_ecn_mark; - - if (!skb) { - /* force a pass through old_flows to prevent starvation */ - if ((head == &q->new_flows) && !list_empty(&q->old_flows)) - list_move_tail(&flow->flowchain, &q->old_flows); - else - list_del_init(&flow->flowchain); - goto begin; - } - qdisc_bstats_update(sch, skb); - flow->deficit -= qdisc_pkt_len(skb); - /* We cant call qdisc_tree_decrease_qlen() if our qlen is 0, - * or HTB crashes. Defer it for next round. - */ - if (q->cstats.drop_count && sch->q.qlen) { - qdisc_tree_decrease_qlen(sch, q->cstats.drop_count); - q->cstats.drop_count = 0; - } - return skb; -} - -static void fq_codel_reset(struct Qdisc *sch) -{ - struct sk_buff *skb; - - while ((skb = fq_codel_dequeue(sch)) != NULL) - kfree_skb(skb); -} - -static const struct nla_policy fq_codel_policy[TCA_FQ_CODEL_MAX + 1] = { - [TCA_FQ_CODEL_TARGET] = { .type = NLA_U32 }, - [TCA_FQ_CODEL_LIMIT] = { .type = NLA_U32 }, - [TCA_FQ_CODEL_INTERVAL] = { .type = NLA_U32 }, - [TCA_FQ_CODEL_ECN] = { .type = NLA_U32 }, - [TCA_FQ_CODEL_FLOWS] = { .type = NLA_U32 }, - [TCA_FQ_CODEL_QUANTUM] = { .type = NLA_U32 }, -}; - -static int fq_codel_change(struct Qdisc *sch, struct nlattr *opt) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - struct nlattr *tb[TCA_FQ_CODEL_MAX + 1]; - int err; - - if (!opt) - return -EINVAL; - - err = nla_parse_nested(tb, TCA_FQ_CODEL_MAX, opt, fq_codel_policy); - if (err < 0) - return err; - if (tb[TCA_FQ_CODEL_FLOWS]) { - if (q->flows) - return -EINVAL; - q->flows_cnt = nla_get_u32(tb[TCA_FQ_CODEL_FLOWS]); - if (!q->flows_cnt || - q->flows_cnt > 65536) - return -EINVAL; - } - sch_tree_lock(sch); - - if (tb[TCA_FQ_CODEL_TARGET]) { - u64 target = nla_get_u32(tb[TCA_FQ_CODEL_TARGET]); - - q->cparams.target = (target * NSEC_PER_USEC) >> CODEL_SHIFT; - } - - if (tb[TCA_FQ_CODEL_INTERVAL]) { - u64 interval = nla_get_u32(tb[TCA_FQ_CODEL_INTERVAL]); - - q->cparams.interval = (interval * NSEC_PER_USEC) >> CODEL_SHIFT; - } - - if (tb[TCA_FQ_CODEL_LIMIT]) -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - q->limit = nla_get_u32(tb[TCA_FQ_CODEL_LIMIT]); -#else - sch->limit = nla_get_u32(tb[TCA_FQ_CODEL_LIMIT]); -#endif - - if (tb[TCA_FQ_CODEL_ECN]) - q->cparams.ecn = !!nla_get_u32(tb[TCA_FQ_CODEL_ECN]); - - if (tb[TCA_FQ_CODEL_QUANTUM]) - q->quantum = max(256U, nla_get_u32(tb[TCA_FQ_CODEL_QUANTUM])); - -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - while (sch->q.qlen > q->limit) { -#else - while (sch->q.qlen > sch->limit) { -#endif - struct sk_buff *skb = fq_codel_dequeue(sch); - - kfree_skb(skb); - q->cstats.drop_count++; - } - qdisc_tree_decrease_qlen(sch, q->cstats.drop_count); - q->cstats.drop_count = 0; - - sch_tree_unlock(sch); - return 0; -} - -static void *fq_codel_zalloc(size_t sz) -{ - void *ptr = kzalloc(sz, GFP_KERNEL | __GFP_NOWARN); - - if (!ptr) - ptr = vzalloc(sz); - return ptr; -} - -static void fq_codel_free(void *addr) -{ - if (addr) { - if (is_vmalloc_addr(addr)) - vfree(addr); - else - kfree(addr); - } -} - -static void fq_codel_destroy(struct Qdisc *sch) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,25)) - tcf_destroy_chain(&q->filter_list); -#else - tcf_destroy_chain(q->filter_list); -#endif - fq_codel_free(q->backlogs); - fq_codel_free(q->flows); -} - -static int fq_codel_init(struct Qdisc *sch, struct nlattr *opt) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - int i; - -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - q->limit = 10*1024; -#else - sch->limit = 10*1024; -#endif - q->flows_cnt = 1024; - q->quantum = psched_mtu(qdisc_dev(sch)); - q->perturbation = net_random(); - INIT_LIST_HEAD(&q->new_flows); - INIT_LIST_HEAD(&q->old_flows); - codel_params_init(&q->cparams); - codel_stats_init(&q->cstats); - q->cparams.ecn = true; - - if (opt) { - int err = fq_codel_change(sch, opt); - if (err) - return err; - } - - if (!q->flows) { - q->flows = fq_codel_zalloc(q->flows_cnt * - sizeof(struct fq_codel_flow)); - if (!q->flows) - return -ENOMEM; - q->backlogs = fq_codel_zalloc(q->flows_cnt * sizeof(u32)); - if (!q->backlogs) { - fq_codel_free(q->flows); - return -ENOMEM; - } - for (i = 0; i < q->flows_cnt; i++) { - struct fq_codel_flow *flow = q->flows + i; - - INIT_LIST_HEAD(&flow->flowchain); - } - } -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - if (q->limit >= 1) -#else - if (sch->limit >= 1) -#endif - sch->flags |= TCQ_F_CAN_BYPASS; - else - sch->flags &= ~TCQ_F_CAN_BYPASS; - return 0; -} - -static int fq_codel_dump(struct Qdisc *sch, struct sk_buff *skb) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - struct nlattr *opts; - - opts = nla_nest_start(skb, TCA_OPTIONS); - if (opts == NULL) - goto nla_put_failure; - - if (nla_put_u32(skb, TCA_FQ_CODEL_TARGET, - codel_time_to_us(q->cparams.target)) || - nla_put_u32(skb, TCA_FQ_CODEL_LIMIT, -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,39)) - q->limit) || -#else - sch->limit) || -#endif - nla_put_u32(skb, TCA_FQ_CODEL_INTERVAL, - codel_time_to_us(q->cparams.interval)) || - nla_put_u32(skb, TCA_FQ_CODEL_ECN, - q->cparams.ecn) || - nla_put_u32(skb, TCA_FQ_CODEL_QUANTUM, - q->quantum) || - nla_put_u32(skb, TCA_FQ_CODEL_FLOWS, - q->flows_cnt)) - goto nla_put_failure; - - nla_nest_end(skb, opts); - return skb->len; - -nla_put_failure: - return -1; -} - -static int fq_codel_dump_stats(struct Qdisc *sch, struct gnet_dump *d) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - struct tc_fq_codel_xstats st = { - .type = TCA_FQ_CODEL_XSTATS_QDISC, - }; - struct list_head *pos; - - st.qdisc_stats.maxpacket = q->cstats.maxpacket; - st.qdisc_stats.drop_overlimit = q->drop_overlimit; - st.qdisc_stats.ecn_mark = q->cstats.ecn_mark; - st.qdisc_stats.new_flow_count = q->new_flow_count; - - list_for_each(pos, &q->new_flows) - st.qdisc_stats.new_flows_len++; - - list_for_each(pos, &q->old_flows) - st.qdisc_stats.old_flows_len++; - - return gnet_stats_copy_app(d, &st, sizeof(st)); -} - -static struct Qdisc *fq_codel_leaf(struct Qdisc *sch, unsigned long arg) -{ - return NULL; -} - -static unsigned long fq_codel_get(struct Qdisc *sch, u32 classid) -{ - return 0; -} - -static unsigned long fq_codel_bind(struct Qdisc *sch, unsigned long parent, - u32 classid) -{ - /* we cannot bypass queue discipline anymore */ - sch->flags &= ~TCQ_F_CAN_BYPASS; - return 0; -} - -static void fq_codel_put(struct Qdisc *q, unsigned long cl) -{ -} - -static struct tcf_proto **fq_codel_find_tcf(struct Qdisc *sch, unsigned long cl) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - - if (cl) - return NULL; - return &q->filter_list; -} - -static int fq_codel_dump_class(struct Qdisc *sch, unsigned long cl, - struct sk_buff *skb, struct tcmsg *tcm) -{ - tcm->tcm_handle |= TC_H_MIN(cl); - return 0; -} - -static int fq_codel_dump_class_stats(struct Qdisc *sch, unsigned long cl, - struct gnet_dump *d) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - u32 idx = cl - 1; - struct gnet_stats_queue qs = { 0 }; - struct tc_fq_codel_xstats xstats; - - if (idx < q->flows_cnt) { - const struct fq_codel_flow *flow = &q->flows[idx]; - const struct sk_buff *skb = flow->head; - - memset(&xstats, 0, sizeof(xstats)); - xstats.type = TCA_FQ_CODEL_XSTATS_CLASS; - xstats.class_stats.deficit = flow->deficit; - xstats.class_stats.ldelay = - codel_time_to_us(flow->cvars.ldelay); - xstats.class_stats.count = flow->cvars.count; - xstats.class_stats.lastcount = flow->cvars.lastcount; - xstats.class_stats.dropping = flow->cvars.dropping; - if (flow->cvars.dropping) { - codel_tdiff_t delta = flow->cvars.drop_next - - codel_get_time(); - - xstats.class_stats.drop_next = (delta >= 0) ? - codel_time_to_us(delta) : - -codel_time_to_us(-delta); - } - while (skb) { - qs.qlen++; - skb = skb->next; - } - qs.backlog = q->backlogs[idx]; - qs.drops = flow->dropped; - } - if (gnet_stats_copy_queue(d, &qs) < 0) - return -1; - if (idx < q->flows_cnt) - return gnet_stats_copy_app(d, &xstats, sizeof(xstats)); - return 0; -} - -static void fq_codel_walk(struct Qdisc *sch, struct qdisc_walker *arg) -{ - struct fq_codel_sched_data *q = qdisc_priv(sch); - unsigned int i; - - if (arg->stop) - return; - - for (i = 0; i < q->flows_cnt; i++) { - if (list_empty(&q->flows[i].flowchain) || - arg->count < arg->skip) { - arg->count++; - continue; - } - if (arg->fn(sch, i + 1, arg) < 0) { - arg->stop = 1; - break; - } - arg->count++; - } -} - -static const struct Qdisc_class_ops fq_codel_class_ops = { - .leaf = fq_codel_leaf, - .get = fq_codel_get, - .put = fq_codel_put, - .tcf_chain = fq_codel_find_tcf, - .bind_tcf = fq_codel_bind, - .unbind_tcf = fq_codel_put, - .dump = fq_codel_dump_class, - .dump_stats = fq_codel_dump_class_stats, - .walk = fq_codel_walk, -}; - -static struct Qdisc_ops fq_codel_qdisc_ops __read_mostly = { - .cl_ops = &fq_codel_class_ops, - .id = "fq_codel", - .priv_size = sizeof(struct fq_codel_sched_data), - .enqueue = fq_codel_enqueue, - .dequeue = fq_codel_dequeue, -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)) - .peek = qdisc_peek_dequeued, -#endif - .drop = fq_codel_drop, - .init = fq_codel_init, - .reset = fq_codel_reset, - .destroy = fq_codel_destroy, - .change = fq_codel_change, - .dump = fq_codel_dump, - .dump_stats = fq_codel_dump_stats, - .owner = THIS_MODULE, -}; - -static int __init fq_codel_module_init(void) -{ - return register_qdisc(&fq_codel_qdisc_ops); -} - -static void __exit fq_codel_module_exit(void) -{ - unregister_qdisc(&fq_codel_qdisc_ops); -} - -module_init(fq_codel_module_init) -module_exit(fq_codel_module_exit) -MODULE_AUTHOR("Eric Dumazet"); -MODULE_LICENSE("GPL"); diff --git a/compat/scripts/compat_firmware_install b/compat/scripts/compat_firmware_install deleted file mode 100755 index e4b9fb0..0000000 --- a/compat/scripts/compat_firmware_install +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -if [ -f /usr/bin/lsb_release ]; then - LSB_RED_ID=$(/usr/bin/lsb_release -i -s) -else - LSB_RED_ID="Unknown" -fi - -case $LSB_RED_ID in -"Ubuntu") - mkdir -p /lib/udev/ /lib/udev/rules.d/ - cp udev/ubuntu/compat_firmware.sh /lib/udev/ - cp udev/50-compat_firmware.rules /lib/udev/rules.d/ - ;; -*) - mkdir -p /lib/udev/ /lib/udev/rules.d/ - cp udev/compat_firmware.sh /lib/udev/ - cp udev/50-compat_firmware.rules /lib/udev/rules.d/ - ;; -esac - diff --git a/compat/scripts/gen-compat-autoconf.sh b/compat/scripts/gen-compat-autoconf.sh deleted file mode 100755 index e52cc5a..0000000 --- a/compat/scripts/gen-compat-autoconf.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/bash -# -# Copyright 2012 Luis R. Rodriguez -# Copyright 2011 Hauke Mehrtens -# Copyright 2011 John W. Linville -# -# Use this to parse a small .config equivalent looking file to generate -# our own autoconf.h. This file has defines for each config option -# just like the kernels include/linux/autoconf.h -# -# XXX: consider using scripts/kconfig/confdata.c instead. -# On the downside this would require the user to have libc though. - -# This indicates which is the oldest kernel we support -# Update this if you are adding support for older kernels. -OLDEST_KERNEL_SUPPORTED="2.6.24" - -if [ $# -ne 1 ]; then - echo "Usage $0 config-file" - exit -fi - -COMPAT_CONFIG="$1" - -if [ ! -f $COMPAT_CONFIG ]; then - echo "File $1 is not a file" - exit -fi - -# Defines a CONFIG_ option if not defined yet, this helps respect -# linux/autoconf.h -function define_config { - VAR=$1 - VALUE=$2 - case $VALUE in - n) # Try to undefine it - echo "#undef $VAR" - ;; - y) - echo "#ifndef $VAR" - echo "#define $VAR 1" - echo "#endif /* $VAR */" - ;; - m) - echo "#ifndef $VAR" - echo "#define $VAR 1" - echo "#endif /* $VAR */" - ;; - *) # Assume string - # XXX: add better checks to make sure what was on - # the right was indeed a string - echo "#ifndef $VAR" - echo "#define $VAR \"$VALUE\"" - echo "#endif /* $VAR */" - ;; - esac -} - -function kernel_version_req { - VERSION=$(echo $1 | sed -e 's/\./,/g') - echo "#if (LINUX_VERSION_CODE < KERNEL_VERSION($VERSION))" - echo "#error compat requirement: Linux >= $VERSION" - echo "#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION($VERSION) */" -} - -cat <= \3)/' -e 's/\(#ifdef \)\(CONFIG_[^:space:]*\)/#if defined(\2) || defined(\2_MODULE)/' - continue - ;; - 'ifndef+CONFIG_'* ) - echo "#$i" | sed -e 's/+/ /' -e 's/\(ifndef CONFIG_COMPAT_KERNEL_3_\)\([0-9]*\)/if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,\2,0))/' -e 's/\(ifndef CONFIG_COMPAT_KERNEL_2_6_\)\([0-9]*\)/if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,\2))/' -e 's/\(ifndef CONFIG_COMPAT_RHEL_\)\([0-9]*\)_\([0-9]*\)/if (!defined(RHEL_MAJOR) || RHEL_MAJOR != \2 || RHEL_MINOR < \3)/' -e 's/\(#ifndef \)\(CONFIG_[^:space:]*\)/#if !defined(\2) \&\& !defined(\2_MODULE)/' - continue - ;; - 'else+#CONFIG_'* | 'endif+#CONFIG_'* ) - echo "#$i */" |sed -e 's/+#/ \/* /g' - continue - ;; - CONFIG_* ) - # Get the element on the left of the "=" - VAR=$(echo $i | cut -d"=" -f 1) - # Get the element on the right of the "=" - VALUE=$(echo $i | cut -d"=" -f 2) - - # Any other module which can *definitely* be built as a module goes here - define_config $VAR $VALUE - continue - ;; - esac -done - -echo "#endif /* COMPAT_AUTOCONF_INCLUDED */" diff --git a/compat/scripts/gen-compat-config.sh b/compat/scripts/gen-compat-config.sh deleted file mode 100755 index 00511c5..0000000 --- a/compat/scripts/gen-compat-config.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash -# Copyright 2012 Luis R. Rodriguez -# Copyright 2012 Hauke Mehrtens -# -# This generates a bunch of CONFIG_COMPAT_KERNEL_2_6_22 -# CONFIG_COMPAT_KERNEL_3_0 .. etc for each kernel release you need an object -# for. -# -# Note: this is part of the compat.git project, not compat-drivers, -# send patches against compat.git. - -if [[ ! -f ${KLIB_BUILD}/Makefile ]]; then - exit -fi - -# Actual kernel version -KERNEL_VERSION=$(${MAKE} -C ${KLIB_BUILD} kernelversion | sed -n 's/^\([0-9]\)\..*/\1/p') - -# 3.0 kernel stuff -COMPAT_LATEST_VERSION="8" -KERNEL_SUBLEVEL="-1" - -# Note that this script will export all variables explicitly, -# trying to export all with a blanket "export" statement at -# the top of the generated file causes the build to slow down -# by an order of magnitude. - -if [[ ${KERNEL_VERSION} -eq "3" ]]; then - KERNEL_SUBLEVEL=$(${MAKE} -C ${KLIB_BUILD} kernelversion | sed -n 's/^3\.\([0-9]\+\).*/\1/p') -else - COMPAT_26LATEST_VERSION="39" - KERNEL_26SUBLEVEL=$(${MAKE} -C ${KLIB_BUILD} kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p') - let KERNEL_26SUBLEVEL=${KERNEL_26SUBLEVEL}+1 - - for i in $(seq ${KERNEL_26SUBLEVEL} ${COMPAT_26LATEST_VERSION}); do - eval CONFIG_COMPAT_KERNEL_2_6_${i}=y - echo "export CONFIG_COMPAT_KERNEL_2_6_${i}=y" - done -fi - -let KERNEL_SUBLEVEL=${KERNEL_SUBLEVEL}+1 -for i in $(seq ${KERNEL_SUBLEVEL} ${COMPAT_LATEST_VERSION}); do - eval CONFIG_COMPAT_KERNEL_3_${i}=y - echo "export CONFIG_COMPAT_KERNEL_3_${i}=y" -done - -# The purpose of these seem to be the inverse of the above other varibales. -# The RHEL checks seem to annotate the existance of RHEL minor versions. -RHEL_MAJOR=$(grep ^RHEL_MAJOR ${KLIB_BUILD}/Makefile | sed -n 's/.*= *\(.*\)/\1/p') -if [[ ! -z ${RHEL_MAJOR} ]]; then - RHEL_MINOR=$(grep ^RHEL_MINOR ${KLIB_BUILD}/Makefile | sed -n 's/.*= *\(.*\)/\1/p') - for i in $(seq 0 ${RHEL_MINOR}); do - eval CONFIG_COMPAT_RHEL_${RHEL_MAJOR}_${i}=y - echo "export CONFIG_COMPAT_RHEL_${RHEL_MAJOR}_${i}=y" - done -fi - -if [[ ${CONFIG_COMPAT_KERNEL_2_6_33} = "y" ]]; then - if [[ ! ${CONFIG_COMPAT_RHEL_6_0} = "y" ]]; then - echo "export CONFIG_COMPAT_FIRMWARE_CLASS=m" - fi -fi - -if [[ ${CONFIG_COMPAT_KERNEL_2_6_36} = "y" ]]; then - if [[ ! ${CONFIG_COMPAT_RHEL_6_1} = "y" ]]; then - echo "export CONFIG_COMPAT_KFIFO=y" - fi -fi - -if [[ ${CONFIG_COMPAT_KERNEL_3_5} = "y" ]]; then - # We don't have 2.6.24 backport support yet for Codel / FQ CoDel - # For those who want to try this is what is required that I can tell - # so far: - # * struct Qdisc_ops - # - init and change callback ops use a different argument dataype - # - you need to parse data received from userspace differently - if [[ ${CONFIG_COMPAT_KERNEL_2_6_25} != "y" ]]; then - echo "export CONFIG_COMPAT_NET_SCH_CODEL=m" - echo "export CONFIG_COMPAT_NET_SCH_FQ_CODEL=m" - fi -fi diff --git a/compat/scripts/skip-colors b/compat/scripts/skip-colors deleted file mode 100755 index 121626f..0000000 --- a/compat/scripts/skip-colors +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -perl -pe 's|(\e)\[(\d+)(;*)(\d*)(\w)||g' diff --git a/compat/user_namespace.c b/compat/user_namespace.c deleted file mode 100644 index a7cebd5..0000000 --- a/compat/user_namespace.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2012 Luis R. Rodriguez - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Compatibility file for Linux wireless for kernels backporting - * user_namespace.c - */ - -#include -#include -#include - -#ifdef CONFIG_USER_NS - -kuid_t make_kuid(struct user_namespace *ns, uid_t uid) -{ - /* Map the uid to a global kernel uid */ - return KUIDT_INIT(uid); -} -EXPORT_SYMBOL(make_kuid); - -uid_t from_kuid(struct user_namespace *targ, kuid_t kuid) -{ - /* Map the uid from a global kernel uid */ - return __kuid_val(kuid); -} -EXPORT_SYMBOL(from_kuid); - -uid_t from_kuid_munged(struct user_namespace *targ, kuid_t kuid) -{ - uid_t uid; - uid = from_kuid(targ, kuid); - - if (uid == (uid_t) -1) - uid = overflowuid; - return uid; -} -EXPORT_SYMBOL(from_kuid_munged); - -kgid_t make_kgid(struct user_namespace *ns, gid_t gid) -{ - /* Map the gid to a global kernel gid */ - return KGIDT_INIT(gid); -} -EXPORT_SYMBOL(make_kgid); - -gid_t from_kgid(struct user_namespace *targ, kgid_t kgid) -{ - /* Map the gid from a global kernel gid */ - return __kgid_val(kgid); -} -EXPORT_SYMBOL(from_kgid); - -gid_t from_kgid_munged(struct user_namespace *targ, kgid_t kgid) -{ - gid_t gid; - gid = from_kgid(targ, kgid); - - if (gid == (gid_t) -1) - gid = overflowgid; - return gid; -} -EXPORT_SYMBOL(from_kgid_munged); - -#endif /* CONFIG_USER_NS */ diff --git a/config.mk b/config.mk deleted file mode 100644 index 804567c..0000000 --- a/config.mk +++ /dev/null @@ -1,761 +0,0 @@ -ifeq ($(wildcard $(KLIB_BUILD)/.config),) -# These will be ignored by compat autoconf - export CONFIG_PCI=y - export CONFIG_USB=y - export CONFIG_PCMCIA=y - export CONFIG_SSB=m -else -include $(KLIB_BUILD)/.config -endif - -ifneq ($(wildcard $(KLIB_BUILD)/Makefile),) - -KERNEL_VERSION := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^\([0-9]\)\..*/\1/p') - -ifneq ($(KERNEL_VERSION),2) -else -KERNEL_26SUBLEVEL := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p') -endif - -ifdef CONFIG_COMPAT_KERNEL_2_6_24 -$(error "ERROR: compat-drivers by default supports kernels >= 2.6.24, try enabling only one driver though") -endif #CONFIG_COMPAT_KERNEL_2_6_24 - -ifeq ($(CONFIG_CFG80211),y) -$(error "ERROR: your kernel has CONFIG_CFG80211=y, you should have it CONFIG_CFG80211=m if you want to use this thing.") -endif - - -# 2.6.27 has FTRACE_DYNAMIC borked, so we will complain if -# you have it enabled, otherwise you will very likely run into -# a kernel panic. -# XXX: move this to compat_autoconf.h script generation -ifeq ($(KERNEL_VERSION),2) -ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_26SUBLEVEL) -eq 27 && echo yes),yes) -ifeq ($(CONFIG_DYNAMIC_FTRACE),y) -$(error "ERROR: Your 2.6.27 kernel has CONFIG_DYNAMIC_FTRACE, please upgrade your distribution kernel as newer ones should not have this enabled (and if so report a bug) or remove this warning if you know what you are doing") -endif -endif -endif - -# This is because with CONFIG_MAC80211 include/linux/skbuff.h will -# enable on 2.6.27 a new attribute: -# -# skb->do_not_encrypt -# -# and on 2.6.28 another new attribute: -# -# skb->requeue -# -# In kernel 2.6.32 both attributes were removed. -# -# XXX: move this to compat_autoconf.h script generation -ifeq ($(KERNEL_VERSION),2) -ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_26SUBLEVEL) -ge 27 -a $(KERNEL_26SUBLEVEL) -le 31 && echo yes),yes) -ifeq ($(CONFIG_MAC80211),) -$(error "ERROR: Your >=2.6.27 and <= 2.6.31 kernel has CONFIG_MAC80211 disabled, you should have it CONFIG_MAC80211=m if you want to use this thing.") -endif -endif -endif - -ifneq ($(KERNELRELEASE),) # This prevents a warning - -# We will warn when you don't have MQ support or NET_SCHED enabled. -# -# We could consider just quiting if MQ and NET_SCHED is disabled -# as I suspect all users of this package want 802.11e (WME) and -# 802.11n (HT) support. -ifeq ($(CONFIG_NET_SCHED),) - QOS_REQS_MISSING+=CONFIG_NET_SCHED -endif - -ifneq ($(QOS_REQS_MISSING),) # Complain about our missing dependencies -$(warning "WARNING: You are running a kernel >= 2.6.23, you should enable in it $(QOS_REQS_MISSING) for 802.11[ne] support") -endif - -endif # build check -endif # kernel Makefile check - -# These both are needed by 802.11 and bluetooth so enable - export CONFIG_COMPAT_RFKILL=y - -ifeq ($(CONFIG_MAC80211),y) -$(error "ERROR: you have MAC80211 compiled into the kernel, CONFIG_MAC80211=y, as such you cannot replace its mac80211 driver. You need this set to CONFIG_MAC80211=m. If you are using Fedora upgrade your kernel as later version should this set as modular. For further information on Fedora see https://bugzilla.redhat.com/show_bug.cgi?id=470143. If you are using your own kernel recompile it and make mac80211 modular") -else - export CONFIG_COMPAT_WIRELESS=y - export CONFIG_COMPAT_WIRELESS_MODULES=m - export CONFIG_COMPAT_VAR_MODULES=m -# We could technically separate these but not yet, we only have b44 -# Note that we don't intend on backporting network drivers that -# use Multiqueue as that was a pain to backport to kernels older than -# 2.6.27. But -- we could just disable those drivers from kernels -# older than 2.6.27 - export CONFIG_COMPAT_NETWORK_MODULES=m - export CONFIG_COMPAT_NET_USB_MODULES=m -endif - -# The Bluetooth compatibility only builds on kernels >= 2.6.27 for now -ifndef CONFIG_COMPAT_KERNEL_2_6_27 -ifeq ($(CONFIG_BT),y) -# we'll ignore compiling bluetooth -else -# export CONFIG_COMPAT_BLUETOOTH=y -# export CONFIG_COMPAT_BLUETOOTH_MODULES=m -# export CONFIG_HID_GENERIC=m -endif -endif #CONFIG_COMPAT_KERNEL_2_6_27 - -# -# CONFIG_COMPAT_FIRMWARE_CLASS definition has no leading whitespace, -# because it gets passed-on through compat_autoconf.h. -# -ifdef CONFIG_COMPAT_KERNEL_2_6_33 -ifndef CONFIG_COMPAT_RHEL_6_1 -ifdef CONFIG_FW_LOADER -export CONFIG_COMPAT_FIRMWARE_CLASS=m -endif #CONFIG_FW_LOADER -endif #CONFIG_COMPAT_RHEL_6_1 -endif #CONFIG_COMPAT_KERNEL_2_6_33 - -ifdef CONFIG_COMPAT_KERNEL_2_6_36 -ifndef CONFIG_COMPAT_RHEL_6_1 - export CONFIG_COMPAT_KFIFO=y -endif #CONFIG_COMPAT_RHEL_6_1 -endif #CONFIG_COMPAT_KERNEL_2_6_36 - -# -# CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN definitions have no leading -# whitespace, because they get passed-on through compat_autoconf.h. -# -ifndef CONFIG_COMPAT_KERNEL_2_6_33 -export CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN=y -endif #CONFIG_COMPAT_KERNEL_2_6_33 -ifdef CONFIG_COMPAT_RHEL_6_0 -export CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN=y -endif #CONFIG_COMPAT_RHEL_6_0 - -# -# CONFIG_COMPAT_FIRMWARE_DATA_RW_NEEDS_FILP definition has no leading -# whitespace, because it gets passed-on through compat_autoconf.h. -# -ifdef CONFIG_COMPAT_RHEL_6_0 -export CONFIG_COMPAT_FIRMWARE_DATA_RW_NEEDS_FILP=y -endif #CONFIG_COMPAT_RHEL_6_0 - -# Wireless subsystem stuff -export CONFIG_MAC80211=m - -ifndef CONFIG_COMPAT_KERNEL_2_6_33 -export CONFIG_COMPAT_MAC80211_DRIVER_API_TRACER=y -endif #CONFIG_COMPAT_KERNEL_2_6_33 - -# export CONFIG_MAC80211_DEBUGFS=y -# export CONFIG_MAC80211_NOINLINE=y -# export CONFIG_MAC80211_VERBOSE_DEBUG=y -# export CONFIG_MAC80211_MESSAGE_TRACING=y -# export CONFIG_MAC80211_DEBUG_COUNTERS=y - -# export CONFIG_MAC80211_IBSS_DEBUG=y -# export CONFIG_MAC80211_PS_DEBUG=y -# export CONFIG_MAC80211_HT_DEBUG=y -# export CONFIG_MAC80211_MPL_DEBUG=y -# export CONFIG_MAC80211_MPATH_DEBUG=y -# export CONFIG_MAC80211_MHWMP_DEBUG=y -# export CONFIG_MAC80211_MESH_SYNC_DEBUG=y -# export CONFIG_MAC80211_TDLS_DEBUG=y -# export CONFIG_MAC80211_STA_DEBUG=y -# export CONFIG_MAC80211_MLME_DEBUG=y - -# choose between pid and minstrel as default rate control algorithm -export CONFIG_MAC80211_RC_DEFAULT=minstrel_ht -export CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y -# export CONFIG_MAC80211_RC_DEFAULT_PID=y -# This is the one used by our compat-drivers net/mac80211/rate.c -# in case you have and old kernel which is overriding this to pid. -export CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstrel_ht -export CONFIG_MAC80211_RC_PID=y -export CONFIG_MAC80211_RC_MINSTREL=y -export CONFIG_MAC80211_RC_MINSTREL_HT=y -ifdef CONFIG_LEDS_TRIGGERS -export CONFIG_MAC80211_LEDS=y -endif #CONFIG_LEDS_TRIGGERS - -# enable mesh networking too -export CONFIG_MAC80211_MESH=y - -export CONFIG_CFG80211=m -export CONFIG_CFG80211_DEFAULT_PS=y -# export CONFIG_CFG80211_DEBUGFS=y -# export CONFIG_NL80211_TESTMODE=y -# export CONFIG_CFG80211_DEVELOPER_WARNINGS=y -# export CONFIG_CFG80211_REG_DEBUG=y -export CONFIG_CFG80211_INTERNAL_REGDB=y -# See below for wext stuff - -ifndef CONFIG_COMPAT_KERNEL_2_6_33 -export CONFIG_COMPAT_CFG80211_DRIVER_API_TRACER=y -endif #CONFIG_COMPAT_KERNEL_2_6_33 - -export CONFIG_LIB80211=m -export CONFIG_LIB80211_CRYPT_WEP=m -export CONFIG_LIB80211_CRYPT_CCMP=m -export CONFIG_LIB80211_CRYPT_TKIP=m -# export CONFIG_LIB80211_DEBUG=y - -# export CONFIG_BT=m -# export CONFIG_BT_RFCOMM=m -ifndef CONFIG_COMPAT_KERNEL_2_6_33 -# export CONFIG_COMPAT_BT_RFCOMM_TTY=y -endif #CONFIG_COMPAT_KERNEL_2_6_33 -# export CONFIG_BT_BNEP=m -# export CONFIG_BT_BNEP_MC_FILTER=y -# export CONFIG_BT_BNEP_PROTO_FILTER=y -# CONFIG_BT_CMTP depends on ISDN_CAPI -ifdef CONFIG_ISDN_CAPI -# export CONFIG_BT_CMTP=m -endif #CONFIG_ISDN_CAPI -ifndef CONFIG_COMPAT_KERNEL_2_6_28 -# export CONFIG_COMPAT_BT_HIDP=m -endif #CONFIG_COMPAT_KERNEL_2_6_28 - -# export CONFIG_BT_HCIUART=m -# export CONFIG_BT_HCIUART_H4=y -# export CONFIG_BT_HCIUART_BCSP=y -# export CONFIG_BT_HCIUART_ATH3K=y -# export CONFIG_BT_HCIUART_LL=y -# export CONFIG_BT_HCIUART_3WIRE=y - -# export CONFIG_BT_HCIVHCI=m -# export CONFIG_BT_MRVL=m -ifndef CONFIG_COMPAT_KERNEL_2_6_39 -ifdef CONFIG_TI_ST -# export CONFIG_BT_WILINK=m -endif #CONFIG_TI_ST -endif #CONFIG_COMPAT_KERNEL_2_6_39 - -ifdef CONFIG_PCMCIA -# export CONFIG_BT_HCIDTL1=m -# export CONFIG_BT_HCIBT3C=m -# export CONFIG_BT_HCIBLUECARD=m -# export CONFIG_BT_HCIBTUART=m -endif #CONFIG_PCMCIA - - -# We need CONFIG_WIRELESS_EXT for CONFIG_CFG80211_WEXT for every kernel -# version. The new way CONFIG_CFG80211_WEXT is called from the kernel -# does not work with compat-drivers because it calls some callback -# function on struct wiphy. This struct is shipped with compat-drivers -# and changes from kernel version to version. We are using the -# wireless_handlers attribute which will be activated by -# export CONFIG_WIRELESS_EXT. -ifdef CONFIG_WIRELESS_EXT -export CONFIG_CFG80211_WEXT=y -else #CONFIG_CFG80211_WEXT -$(warning "WARNING: CONFIG_CFG80211_WEXT will be deactivated or not working because kernel was compiled with CONFIG_WIRELESS_EXT=n. Tools using wext interface like iwconfig will not work. To activate it build your kernel e.g. with CONFIG_LIBIPW=m.") -endif #CONFIG_WIRELESS_EXT - -ifdef CONFIG_STAGING -export CONFIG_COMPAT_STAGING=m -endif #CONFIG_STAGING - -ifndef CONFIG_COMPAT_KERNEL_2_6_31 -# mac80211 test driver -# export CONFIG_COMPAT_MAC80211_HWSIM=m -endif #CONFIG_COMPAT_KERNEL_2_6_31 - -# export CONFIG_ATH5K=m -# export CONFIG_ATH5K_DEBUG=y -# export CONFIG_ATH5K_TRACER=y -# export CONFIG_ATH5K_AHB=y - -# export CONFIG_ATH9K=m -# export CONFIG_ATH9K_HW=m -# export CONFIG_ATH9K_COMMON=m -# export CONFIG_ATH9K_DEBUGFS=y -# export CONFIG_ATH9K_AHB=y - -# Disable this to get minstrel as default, we leave the ath9k -# rate control algorithm as the default for now as that is also -# default upstream on the kernel. We will move this to minstrel -# as default once we get minstrel properly tested and blessed by -# our systems engineering team. CCK rates also need to be used -# for long range considerations. -export CONFIG_COMPAT_ATH9K_RATE_CONTROL=y - -export CONFIG_ATH9K_BTCOEX_SUPPORT=y - -ifndef CONFIG_COMPAT_KERNEL_2_6_27 -# export CONFIG_ATH6KL=m -# export CONFIG_ATH6KL_DEBUG=y -endif #CONFIG_COMPAT_KERNEL_2_6_27 - -# PCI Drivers -ifdef CONFIG_PCI - -# export CONFIG_ATH5K_PCI=y -# export CONFIG_ATH9K_PCI=y - -ifndef CONFIG_COMPAT_KERNEL_2_6_31 -# export CONFIG_WIL6210=m -# export CONFIG_WIL6210_ISR_COR=y -endif #CONFIG_COMPAT_KERNEL_2_6_31 - -export CONFIG_IWLWIFI=m -export CONFIG_IWLDVM=m -export CONFIG_IWLMVM=m -export CONFIG_IWLWIFI_P2P=y -# export CONFIG_IWLWIFI_DEBUG=y -# export CONFIG_IWLWIFI_DEBUGFS=y -# export CONFIG_IWLWIFI_DEVICE_TRACING=y -# export CONFIG_IWLWIFI_DEBUG_EXPERIMENTAL_UCODE=y - -export CONFIG_IWLEGACY=m -export CONFIG_COMPAT_IWL4965=m -export CONFIG_IWL3945=m -# export CONFIG_IWLEGACY_DEBUG=y -# export CONFIG_IWLEGACY_DEBUGFS=y - - -export CONFIG_B43=m -export CONFIG_B43_HWRNG=y -export CONFIG_B43_PCI_AUTOSELECT=y -ifdef CONFIG_PCMCIA -export CONFIG_B43_PCMCIA=y -endif #CONFIG_PCMCIA -ifdef CONFIG_MAC80211_LEDS -export CONFIG_B43_LEDS=y -endif #CONFIG_MAC80211_LEDS -export CONFIG_B43_PHY_LP=y -export CONFIG_B43_PHY_N=y -export CONFIG_B43_PHY_HT=y -# export CONFIG_B43_PHY_LCN=y -# export CONFIG_B43_DEBUG=y - -export CONFIG_B43LEGACY=m -export CONFIG_B43LEGACY_HWRNG=y -export CONFIG_B43LEGACY_PCI_AUTOSELECT=y -ifdef CONFIG_MAC80211_LEDS -export CONFIG_B43LEGACY_LEDS=y -endif #CONFIG_MAC80211_LEDS -# export CONFIG_B43LEGACY_DEBUG=y -export CONFIG_B43LEGACY_DMA=y -export CONFIG_B43LEGACY_PIO=y - -ifdef CONFIG_WIRELESS_EXT -# The Intel ipws -export CONFIG_LIBIPW=m -# export CONFIG_LIBIPW_DEBUG=y - -export CONFIG_IPW2100=m -export CONFIG_IPW2100_MONITOR=y -# export CONFIG_IPW2100_DEBUG=y -export CONFIG_IPW2200=m -export CONFIG_IPW2200_MONITOR=y -export CONFIG_IPW2200_RADIOTAP=y -export CONFIG_IPW2200_PROMISCUOUS=y -export CONFIG_IPW2200_QOS=y -# export CONFIG_IPW2200_DEBUG=y -# The above enables use a second interface prefixed 'rtap'. -# Example usage: -# -# % modprobe ipw2200 rtap_iface=1 -# % ifconfig rtap0 up -# % tethereal -i rtap0 -# -# If you do not specify 'rtap_iface=1' as a module parameter then -# the rtap interface will not be created and you will need to turn -# it on via sysfs: -# -# % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface -endif #CONFIG_WIRELESS_EXT - -ifdef CONFIG_SSB -# Sonics Silicon Backplane -export CONFIG_SSB_SPROM=y - -export CONFIG_SSB_BLOCKIO=y -export CONFIG_SSB_PCIHOST=y -export CONFIG_SSB_B43_PCI_BRIDGE=y -ifdef CONFIG_PCMCIA -export CONFIG_SSB_PCMCIAHOST=y -endif #CONFIG_PCMCIA -# export CONFIG_SSB_DEBUG=y -export CONFIG_SSB_DRIVER_PCICORE=y -export CONFIG_B43_SSB=y -endif #CONFIG_SSB - -export CONFIG_BCMA=m -export CONFIG_BCMA_BLOCKIO=y -export CONFIG_BCMA_HOST_PCI=y -# export CONFIG_BCMA_DEBUG=y -export CONFIG_B43_BCMA=y -export CONFIG_B43_BCMA_EXTRA=y - -export CONFIG_P54_PCI=m - -export CONFIG_B44=m -export CONFIG_B44_PCI=y - -export CONFIG_RTL8180=m - -export CONFIG_ADM8211=m - -export CONFIG_RT2X00_LIB_PCI=m -export CONFIG_RT2400PCI=m -export CONFIG_RT2500PCI=m -ifdef CONFIG_CRC_CCITT -export CONFIG_RT2800PCI=m -export CONFIG_RT2800PCI_RT3290=y -export CONFIG_RT2800PCI_RT33XX=y -export CONFIG_RT2800PCI_RT35XX=y -export CONFIG_RT2800PCI_RT53XX=y -endif #CONFIG_CRC_CCITT -NEED_RT2X00=y - -# Two rt2x00 drivers require firmware: rt61pci and rt73usb. They depend on -# CRC to check the firmware. We check here first for the PCI -# driver as we're in the PCI section. -ifdef CONFIG_CRC_ITU_T -export CONFIG_RT61PCI=m -endif #CONFIG_CRC_ITU_T - -export CONFIG_MWL8K=m - -# Ethernet drivers go here -export CONFIG_ATL1=m -export CONFIG_ATL2=m -export CONFIG_ATL1E=m -ifndef CONFIG_COMPAT_KERNEL_2_6_28 -export CONFIG_ATL1C=m -export CONFIG_ALX=m -# If MDIO is needed for another driver feel free to -# make it not depend on 2.6.28 -export CONFIG_COMPAT_MDIO=m -endif #CONFIG_COMPAT_KERNEL_2_6_28 - -ifdef CONFIG_WIRELESS_EXT -export CONFIG_HERMES=m -export CONFIG_HERMES_CACHE_FW_ON_INIT=y -ifdef CONFIG_PPC_PMAC -export CONFIG_APPLE_AIRPORT=m -endif #CONFIG_PPC_PMAC -export CONFIG_PLX_HERMES=m -export CONFIG_TMD_HERMES=m -export CONFIG_NORTEL_HERMES=m -export CONFIG_PCI_HERMES=m -ifdef CONFIG_PCMCIA -export CONFIG_PCMCIA_HERMES=m -export CONFIG_PCMCIA_SPECTRUM=m -endif #CONFIG_PCMCIA -endif #CONFIG_WIRELESS_EXT - -export CONFIG_RTL8192CE=m -export CONFIG_RTL8192SE=m -export CONFIG_RTL8192DE=m -export CONFIG_RTL8723AE=m - -export CONFIG_BRCMSMAC=m - -export CONFIG_MWIFIEX_PCIE=m - -endif #CONFIG_PCI -## end of PCI - -ifdef CONFIG_PCMCIA - -ifdef CONFIG_COMPAT_KERNEL_2_6_27 -export CONFIG_LIBERTAS=n -export CONFIG_LIBERTAS_CS=n -else #CONFIG_COMPAT_KERNEL_2_6_27 -export CONFIG_LIBERTAS_CS=m -NEED_LIBERTAS=y -endif #CONFIG_COMPAT_KERNEL_2_6_27 - -endif #CONFIG_PCMCIA -## end of PCMCIA - -# This is required for some cards -# export CONFIG_EEPROM_93CX6=m - -# USB Drivers -ifdef CONFIG_USB -ifndef CONFIG_COMPAT_KERNEL_2_6_29 -# export CONFIG_COMPAT_ZD1211RW=m -# export CONFIG_ZD1211RW_DEBUG=y -endif #CONFIG_COMPAT_KERNEL_2_6_29 - -# Sorry, rndis_wlan uses cancel_work_sync which is new and can't be done in compat... - -# Wireless RNDIS USB support (RTL8185 802.11g) A-Link WL54PC -# All of these devices are based on Broadcom 4320 chip which -# is only wireless RNDIS chip known to date. -# Note: this depends on CONFIG_USB_NET_RNDIS_HOST and CONFIG_USB_NET_CDCETHER -# it also requires new RNDIS_HOST and CDC_ETHER modules which we add -ifdef CONFIG_COMPAT_KERNEL_2_6_29 -export CONFIG_USB_COMPAT_USBNET=n -export CONFIG_USB_NET_COMPAT_RNDIS_HOST=n -export CONFIG_USB_NET_COMPAT_RNDIS_WLAN=n -export CONFIG_USB_NET_COMPAT_CDCETHER=n -else #CONFIG_COMPAT_KERNEL_2_6_29 -# export CONFIG_USB_COMPAT_USBNET=m -ifdef CONFIG_USB_NET_CDCETHER -export CONFIG_USB_NET_COMPAT_RNDIS_HOST=m -export CONFIG_USB_NET_COMPAT_RNDIS_WLAN=m -endif #CONFIG_USB_NET_CDCETHER -ifdef CONFIG_USB_NET_CDCETHER_MODULE -export CONFIG_USB_NET_COMPAT_RNDIS_HOST=m -export CONFIG_USB_NET_COMPAT_RNDIS_WLAN=m -endif #CONFIG_USB_NET_CDCETHER -# export CONFIG_USB_NET_COMPAT_CDCETHER=m -endif #CONFIG_COMPAT_KERNEL_2_6_29 - - -export CONFIG_P54_USB=m -# export CONFIG_RTL8187=m -ifdef CONFIG_MAC80211_LEDS -export CONFIG_RTL8187_LEDS=y -endif #CONFIG_MAC80211_LEDS - -# export CONFIG_AT76C50X_USB=m - -ifndef CONFIG_COMPAT_KERNEL_2_6_29 -# export CONFIG_CARL9170=m -ifdef CONFIG_MAC80211_LEDS -export CONFIG_CARL9170_LEDS=y -endif #CONFIG_MAC80211_LEDS -# export CONFIG_CARL9170_DEBUGFS=y -export CONFIG_CARL9170_WPC=y -endif #CONFIG_COMPAT_KERNEL_2_6_29 - -# This activates a threading fix for usb urb. -# this is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351 -# This fix will be included in some stable releases. -export CONFIG_COMPAT_USB_URB_THREAD_FIX=y - -export CONFIG_ATH9K_HTC=m -# export CONFIG_ATH9K_HTC_DEBUGFS=y - -# export CONFIG_ATH6KL_USB=m - -# export CONFIG_AR5523=m - -# export CONFIG_BRCMFMAC_USB=y - -# RT2500USB does not require firmware -export CONFIG_RT2500USB=m -ifdef CONFIG_CRC_CCITT -export CONFIG_RT2800USB=m -export CONFIG_RT2800USB_RT33XX=y -export CONFIG_RT2800USB_RT35XX=y -export CONFIG_RT2800USB_RT53XX=y -export CONFIG_RT2800USB_UNKNOWN=y -endif #CONFIG_CRC_CCITT -export CONFIG_RT2X00_LIB_USB=m -NEED_RT2X00=y -# RT73USB requires firmware -ifdef CONFIG_CRC_ITU_T -export CONFIG_RT73USB=m -endif #CONFIG_CRC_ITU_T - -ifdef CONFIG_COMPAT_KERNEL_2_6_27 -export CONFIG_LIBERTAS_THINFIRM_USB=n -export CONFIG_LIBERTAS_USB=n -NEED_LIBERTAS=n -else #CONFIG_COMPAT_KERNEL_2_6_27 -export CONFIG_LIBERTAS_THINFIRM_USB=m -export CONFIG_LIBERTAS_USB=m -NEED_LIBERTAS=y -endif #CONFIG_COMPAT_KERNEL_2_6_27 - -export CONFIG_ORINOCO_USB=m - -# export CONFIG_BT_HCIBTUSB=m -# export CONFIG_BT_HCIBCM203X=m -# export CONFIG_BT_HCIBPA10X=m -# export CONFIG_BT_HCIBFUSB=m -# export CONFIG_BT_ATH3K=m - -# export CONFIG_RTL8192CU=m - -# export CONFIG_MWIFIEX_USB=m - -endif #CONFIG_USB end of USB driver list - -ifdef CONFIG_SPI_MASTER -ifndef CONFIG_COMPAT_KERNEL_2_6_25 - -ifdef CONFIG_CRC7 -ifndef CONFIG_COMPAT_KERNEL_2_6_37 -export CONFIG_COMPAT_WL1251_SPI=m -endif #CONFIG_COMPAT_KERNEL_2_6_37 -export CONFIG_WLCORE_SPI=m -endif #CONFIG_CRC7 -export CONFIG_P54_SPI=m - -ifdef CONFIG_COMPAT_KERNEL_2_6_27 -export CONFIG_LIBERTAS_SPI=n -NEED_LIBERTAS=n -else #CONFIG_COMPAT_KERNEL_2_6_27 -export CONFIG_LIBERTAS_SPI=m -NEED_LIBERTAS=y -endif #CONFIG_COMPAT_KERNEL_2_6_27 - -endif #CONFIG_COMPAT_KERNEL_2_6_25 -endif #CONFIG_SPI_MASTER end of SPI driver list - -ifdef CONFIG_MMC - -export CONFIG_SSB_SDIOHOST=y -export CONFIG_B43_SDIO=y - -ifdef CONFIG_CRC7 -ifdef CONFIG_WL12XX_PLATFORM_DATA -ifndef CONFIG_COMPAT_KERNEL_2_6_37 -export CONFIG_COMPAT_WL1251_SDIO=m -endif #CONFIG_COMPAT_KERNEL_2_6_37 -ifndef CONFIG_COMPAT_KERNEL_2_6_38 -export CONFIG_WLCORE_SDIO=m -endif #CONFIG_COMPAT_KERNEL_2_6_38 -endif #CONFIG_WL12XX_PLATFORM_DATA -endif #CONFIG_CRC7 - -export CONFIG_MWIFIEX_SDIO=m - -ifndef CONFIG_COMPAT_KERNEL_2_6_32 -export CONFIG_COMPAT_LIBERTAS_SDIO=m -NEED_LIBERTAS=y -endif #CONFIG_COMPAT_KERNEL_2_6_32 - -export CONFIG_BT_HCIBTSDIO=m -export CONFIG_BT_MRVL_SDIO=m - -# export CONFIG_ATH6KL_SDIO=m - -# export CONFIG_BRCMFMAC_SDIO=y - -endif #CONFIG_MMC - -# export CONFIG_RTLWIFI=m -# export CONFIG_RTL8192C_COMMON=m - -# Common rt2x00 requirements -ifeq ($(NEED_RT2X00),y) -export CONFIG_RT2X00=y -export CONFIG_RT2X00_LIB=m -export CONFIG_RT2800_LIB=m -export CONFIG_RT2X00_LIB_FIRMWARE=y -export CONFIG_RT2X00_LIB_CRYPTO=y -# export CONFIG_RT2X00_LIB_SOC=y -ifdef CONFIG_COMPAT_KERNEL_2_6_25 -export CONFIG_RT2X00_LIB_LEDS=n -else #CONFIG_COMPAT_KERNEL_2_6_25 -ifdef CONFIG_LEDS_CLASS -export CONFIG_RT2X00_LIB_LEDS=y -endif #CONFIG_LEDS_CLASS -endif #CONFIG_COMPAT_KERNEL_2_6_25 -# export CONFIG_RT2X00_DEBUG=y -# export CONFIG_RT2X00_LIB_DEBUGFS=y -endif - -# p54 -export CONFIG_P54_COMMON=m -ifdef CONFIG_MAC80211_LEDS -export CONFIG_P54_LEDS=y -endif #CONFIG_MAC80211_LEDS - -# Atheros -# export CONFIG_ATH_COMMON=m -# export CONFIG_ATH_CARDS=m -# export CONFIG_ATH_DEBUG=y - -export CONFIG_BRCMUTIL=m -# export CONFIG_BRCMDBG=y - -ifndef CONFIG_COMPAT_KERNEL_2_6_29 -# export CONFIG_BRCMFMAC=m -endif #CONFIG_COMPAT_KERNEL_2_6_29 - -ifndef CONFIG_COMPAT_KERNEL_2_6_30 - -# export CONFIG_WL_TI=y -# export CONFIG_WLCORE=m - -ifdef CONFIG_CRC7 -export CONFIG_WL1251=m -export CONFIG_WL12XX=m -export CONFIG_WL18XX=m -endif #CONFIG_CRC7 - -endif #CONFIG_COMPAT_KERNEL_2_6_30 - -ifndef CONFIG_COMPAT_KERNEL_2_6_27 -# export CONFIG_COMPAT_MWIFIEX=m -endif #CONFIG_COMPAT_KERNEL_2_6_27 - -ifndef CONFIG_CORDIC -export CONFIG_COMPAT_CORDIC=y -endif #CONFIG_CORDIC - -ifndef CONFIG_CRC8 -export CONFIG_COMPAT_CRC8=y -endif #CONFIG_CRC8 - -ifdef CONFIG_COMPAT_KERNEL_2_6_27 -export CONFIG_LIBERTAS=n -else #CONFIG_COMPAT_KERNEL_2_6_27 -ifeq ($(NEED_LIBERTAS),y) -# export CONFIG_LIBERTAS_THINFIRM=m -# export CONFIG_LIBERTAS=m -# export CONFIG_LIBERTAS_MESH=y -# export CONFIG_LIBERTAS_DEBUG=y -endif -endif #CONFIG_COMPAT_KERNEL_2_6_27 - -# We need the backported rfkill module on kernel < 2.6.31. -# In more recent kernel versions use the in kernel rfkill module. -ifdef CONFIG_COMPAT_KERNEL_2_6_31 -export CONFIG_RFKILL_BACKPORT=m -ifdef CONFIG_LEDS_TRIGGERS -export CONFIG_RFKILL_BACKPORT_LEDS=y -endif #CONFIG_LEDS_TRIGGERS -export CONFIG_RFKILL_BACKPORT_INPUT=y -endif #CONFIG_COMPAT_KERNEL_2_6_31 - -# compilation has been tested down to 3.0 but run time -# tests have only started on 3.2. -ifndef CONFIG_COMPAT_KERNEL_3_2 -# Basic DRM support -# export CONFIG_COMPAT_HDMI=m -# export CONFIG_COMPAT_VIDEO_MODULES=y -# export CONFIG_COMPAT_DRM=m -# export CONFIG_COMPAT_DRM_TTM=m -# export CONFIG_COMPAT_DRM_KMS_HELPER=m -# export CONFIG_COMPAT_DRM_LOAD_EDID_FIRMWARE=y -# Intel i915 -# export CONFIG_COMPAT_DRM_I915=m -# ATI/AMD Radeon -# export CONFIG_COMPAT_DRM_RADEON=m -# export CONFIG_COMPAT_DRM_RADEON_KMS=y -endif #CONFIG_COMPAT_KERNEL_3_2 - -# Enable nouveau on >= 3.3 -ifndef CONFIG_COMPAT_KERNEL_3_3 -# export CONFIG_COMPAT_DRM_NOUVEAU=m -# export CONFIG_COMPAT_DRM_NOUVEAU_BACKLIGHT=y -# export CONFIG_COMPAT_NOUVEAU_DEBUG=5 -# export CONFIG_COMPAT_NOUVEAU_DEBUG_DEFAULT=3 -endif #CONFIG_COMPAT_KERNEL_3_3 - -export CONFIG_CW1200=m -ifdef CONFIG_MMC -export CONFIG_CW1200_WLAN_SDIO=m -export CONFIG_CW1200_WLAN_SAGRAD=m -endif #CONFIG_MMC -ifdef CONFIG_SPI -export CONFIG_CW1200_WLAN_SPI=m -endif #CONFIG_SPI -ifdef CONFIG_PM -export CONFIG_CW1200_PM=y -endif #CONFIG_PM -export CONFIG_CW1200_ETF=y -export CONFIG_CW1200_ITP=y diff --git a/drivers/bcma/Kconfig b/drivers/bcma/Kconfig deleted file mode 100644 index 8b4221c..0000000 --- a/drivers/bcma/Kconfig +++ /dev/null @@ -1,84 +0,0 @@ -config BCMA_POSSIBLE - bool - depends on HAS_IOMEM && HAS_DMA - default y - -menu "Broadcom specific AMBA" - depends on BCMA_POSSIBLE - -config BCMA - tristate "BCMA support" - depends on BCMA_POSSIBLE - help - Bus driver for Broadcom specific Advanced Microcontroller Bus - Architecture. - -# Support for Block-I/O. SELECT this from the driver that needs it. -config BCMA_BLOCKIO - bool - depends on BCMA - -config BCMA_HOST_PCI_POSSIBLE - bool - depends on BCMA && PCI = y - default y - -config BCMA_HOST_PCI - bool "Support for BCMA on PCI-host bus" - depends on BCMA_HOST_PCI_POSSIBLE - -config BCMA_DRIVER_PCI_HOSTMODE - bool "Driver for PCI core working in hostmode" - depends on BCMA && MIPS && BCMA_HOST_PCI - help - PCI core hostmode operation (external PCI bus). - -config BCMA_HOST_SOC - bool - depends on BCMA_DRIVER_MIPS - -config BCMA_DRIVER_MIPS - bool "BCMA Broadcom MIPS core driver" - depends on BCMA && MIPS - help - Driver for the Broadcom MIPS core attached to Broadcom specific - Advanced Microcontroller Bus. - - If unsure, say N - -config BCMA_SFLASH - bool - depends on BCMA_DRIVER_MIPS - default y - -config BCMA_NFLASH - bool - depends on BCMA_DRIVER_MIPS - default y - -config BCMA_DRIVER_GMAC_CMN - bool "BCMA Broadcom GBIT MAC COMMON core driver" - depends on BCMA - help - Driver for the Broadcom GBIT MAC COMMON core attached to Broadcom - specific Advanced Microcontroller Bus. - - If unsure, say N - -config BCMA_DRIVER_GPIO - bool "BCMA GPIO driver" - depends on BCMA && GPIOLIB - help - Driver to provide access to the GPIO pins of the bcma bus. - - If unsure, say N - -config BCMA_DEBUG - bool "BCMA debugging" - depends on BCMA - help - This turns on additional debugging messages. - - If unsure, say N - -endmenu diff --git a/drivers/bcma/Makefile b/drivers/bcma/Makefile deleted file mode 100644 index 734b32f..0000000 --- a/drivers/bcma/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -bcma-y += main.o scan.o core.o sprom.o -bcma-y += driver_chipcommon.o driver_chipcommon_pmu.o -bcma-$(CONFIG_BCMA_SFLASH) += driver_chipcommon_sflash.o -bcma-$(CONFIG_BCMA_NFLASH) += driver_chipcommon_nflash.o -bcma-y += driver_pci.o -bcma-$(CONFIG_BCMA_DRIVER_PCI_HOSTMODE) += driver_pci_host.o -bcma-$(CONFIG_BCMA_DRIVER_MIPS) += driver_mips.o -bcma-$(CONFIG_BCMA_DRIVER_GMAC_CMN) += driver_gmac_cmn.o -bcma-$(CONFIG_BCMA_DRIVER_GPIO) += driver_gpio.o -bcma-$(CONFIG_BCMA_HOST_PCI) += host_pci.o -bcma-$(CONFIG_BCMA_HOST_SOC) += host_soc.o -obj-$(CONFIG_BCMA) += bcma.o - -ccflags-$(CONFIG_BCMA_DEBUG) := -DDEBUG diff --git a/drivers/bcma/bcma_private.h b/drivers/bcma/bcma_private.h deleted file mode 100644 index dae8586..0000000 --- a/drivers/bcma/bcma_private.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef LINUX_BCMA_PRIVATE_H_ -#define LINUX_BCMA_PRIVATE_H_ - -#undef pr_fmt -#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt - -#include -#include -#include - -#define BCMA_CORE_SIZE 0x1000 - -#define bcma_err(bus, fmt, ...) \ - pr_err("bus%d: " fmt, (bus)->num, ##__VA_ARGS__) -#define bcma_warn(bus, fmt, ...) \ - pr_warn("bus%d: " fmt, (bus)->num, ##__VA_ARGS__) -#define bcma_info(bus, fmt, ...) \ - pr_info("bus%d: " fmt, (bus)->num, ##__VA_ARGS__) -#define bcma_debug(bus, fmt, ...) \ - pr_debug("bus%d: " fmt, (bus)->num, ##__VA_ARGS__) - -struct bcma_bus; - -/* main.c */ -int bcma_bus_register(struct bcma_bus *bus); -void bcma_bus_unregister(struct bcma_bus *bus); -int __init bcma_bus_early_register(struct bcma_bus *bus, - struct bcma_device *core_cc, - struct bcma_device *core_mips); -#ifdef CONFIG_PM -int bcma_bus_suspend(struct bcma_bus *bus); -int bcma_bus_resume(struct bcma_bus *bus); -#endif -struct bcma_device *bcma_find_core_unit(struct bcma_bus *bus, u16 coreid, - u8 unit); - -/* scan.c */ -int bcma_bus_scan(struct bcma_bus *bus); -int __init bcma_bus_scan_early(struct bcma_bus *bus, - struct bcma_device_id *match, - struct bcma_device *core); -void bcma_init_bus(struct bcma_bus *bus); - -/* sprom.c */ -int bcma_sprom_get(struct bcma_bus *bus); - -/* driver_chipcommon.c */ -#ifdef CONFIG_BCMA_DRIVER_MIPS -void bcma_chipco_serial_init(struct bcma_drv_cc *cc); -extern struct platform_device bcma_pflash_dev; -#endif /* CONFIG_BCMA_DRIVER_MIPS */ - -/* driver_chipcommon_pmu.c */ -u32 bcma_pmu_get_alp_clock(struct bcma_drv_cc *cc); -u32 bcma_pmu_get_cpu_clock(struct bcma_drv_cc *cc); - -#ifdef CONFIG_BCMA_SFLASH -/* driver_chipcommon_sflash.c */ -int bcma_sflash_init(struct bcma_drv_cc *cc); -extern struct platform_device bcma_sflash_dev; -#else -static inline int bcma_sflash_init(struct bcma_drv_cc *cc) -{ - bcma_err(cc->core->bus, "Serial flash not supported\n"); - return 0; -} -#endif /* CONFIG_BCMA_SFLASH */ - -#ifdef CONFIG_BCMA_NFLASH -/* driver_chipcommon_nflash.c */ -int bcma_nflash_init(struct bcma_drv_cc *cc); -extern struct platform_device bcma_nflash_dev; -#else -static inline int bcma_nflash_init(struct bcma_drv_cc *cc) -{ - bcma_err(cc->core->bus, "NAND flash not supported\n"); - return 0; -} -#endif /* CONFIG_BCMA_NFLASH */ - -#ifdef CONFIG_BCMA_HOST_PCI -/* host_pci.c */ -extern int __init bcma_host_pci_init(void); -extern void __exit bcma_host_pci_exit(void); -#endif /* CONFIG_BCMA_HOST_PCI */ - -/* driver_pci.c */ -u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address); - -extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc); - -#ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE -bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc); -void bcma_core_pci_hostmode_init(struct bcma_drv_pci *pc); -#endif /* CONFIG_BCMA_DRIVER_PCI_HOSTMODE */ - -#ifdef CONFIG_BCMA_DRIVER_GPIO -/* driver_gpio.c */ -int bcma_gpio_init(struct bcma_drv_cc *cc); -int bcma_gpio_unregister(struct bcma_drv_cc *cc); -#else -static inline int bcma_gpio_init(struct bcma_drv_cc *cc) -{ - return -ENOTSUPP; -} -static inline int bcma_gpio_unregister(struct bcma_drv_cc *cc) -{ - return 0; -} -#endif /* CONFIG_BCMA_DRIVER_GPIO */ - -#endif diff --git a/drivers/bcma/core.c b/drivers/bcma/core.c deleted file mode 100644 index 03bbe10..0000000 --- a/drivers/bcma/core.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Broadcom specific AMBA - * Core ops - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" -#include -#include - -bool bcma_core_is_enabled(struct bcma_device *core) -{ - if ((bcma_aread32(core, BCMA_IOCTL) & (BCMA_IOCTL_CLK | BCMA_IOCTL_FGC)) - != BCMA_IOCTL_CLK) - return false; - if (bcma_aread32(core, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET) - return false; - return true; -} -EXPORT_SYMBOL_GPL(bcma_core_is_enabled); - -void bcma_core_disable(struct bcma_device *core, u32 flags) -{ - if (bcma_aread32(core, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET) - return; - - bcma_awrite32(core, BCMA_IOCTL, flags); - bcma_aread32(core, BCMA_IOCTL); - udelay(10); - - bcma_awrite32(core, BCMA_RESET_CTL, BCMA_RESET_CTL_RESET); - bcma_aread32(core, BCMA_RESET_CTL); - udelay(1); -} -EXPORT_SYMBOL_GPL(bcma_core_disable); - -int bcma_core_enable(struct bcma_device *core, u32 flags) -{ - bcma_core_disable(core, flags); - - bcma_awrite32(core, BCMA_IOCTL, (BCMA_IOCTL_CLK | BCMA_IOCTL_FGC | flags)); - bcma_aread32(core, BCMA_IOCTL); - - bcma_awrite32(core, BCMA_RESET_CTL, 0); - udelay(1); - - bcma_awrite32(core, BCMA_IOCTL, (BCMA_IOCTL_CLK | flags)); - bcma_aread32(core, BCMA_IOCTL); - udelay(1); - - return 0; -} -EXPORT_SYMBOL_GPL(bcma_core_enable); - -void bcma_core_set_clockmode(struct bcma_device *core, - enum bcma_clkmode clkmode) -{ - u16 i; - - WARN_ON(core->id.id != BCMA_CORE_CHIPCOMMON && - core->id.id != BCMA_CORE_PCIE && - core->id.id != BCMA_CORE_80211); - - switch (clkmode) { - case BCMA_CLKMODE_FAST: - bcma_set32(core, BCMA_CLKCTLST, BCMA_CLKCTLST_FORCEHT); - usleep_range(64, 300); - for (i = 0; i < 1500; i++) { - if (bcma_read32(core, BCMA_CLKCTLST) & - BCMA_CLKCTLST_HAVEHT) { - i = 0; - break; - } - udelay(10); - } - if (i) - bcma_err(core->bus, "HT force timeout\n"); - break; - case BCMA_CLKMODE_DYNAMIC: - bcma_set32(core, BCMA_CLKCTLST, ~BCMA_CLKCTLST_FORCEHT); - break; - } -} -EXPORT_SYMBOL_GPL(bcma_core_set_clockmode); - -void bcma_core_pll_ctl(struct bcma_device *core, u32 req, u32 status, bool on) -{ - u16 i; - - WARN_ON(req & ~BCMA_CLKCTLST_EXTRESREQ); - WARN_ON(status & ~BCMA_CLKCTLST_EXTRESST); - - if (on) { - bcma_set32(core, BCMA_CLKCTLST, req); - for (i = 0; i < 10000; i++) { - if ((bcma_read32(core, BCMA_CLKCTLST) & status) == - status) { - i = 0; - break; - } - udelay(10); - } - if (i) - bcma_err(core->bus, "PLL enable timeout\n"); - } else { - bcma_warn(core->bus, "Disabling PLL not supported yet!\n"); - } -} -EXPORT_SYMBOL_GPL(bcma_core_pll_ctl); - -u32 bcma_core_dma_translation(struct bcma_device *core) -{ - switch (core->bus->hosttype) { - case BCMA_HOSTTYPE_SOC: - return 0; - case BCMA_HOSTTYPE_PCI: - if (bcma_aread32(core, BCMA_IOST) & BCMA_IOST_DMA64) - return BCMA_DMA_TRANSLATION_DMA64_CMT; - else - return BCMA_DMA_TRANSLATION_DMA32_CMT; - default: - bcma_err(core->bus, "DMA translation unknown for host %d\n", - core->bus->hosttype); - } - return BCMA_DMA_TRANSLATION_NONE; -} -EXPORT_SYMBOL(bcma_core_dma_translation); diff --git a/drivers/bcma/driver_chipcommon.c b/drivers/bcma/driver_chipcommon.c deleted file mode 100644 index 28fa50a..0000000 --- a/drivers/bcma/driver_chipcommon.c +++ /dev/null @@ -1,344 +0,0 @@ -/* - * Broadcom specific AMBA - * ChipCommon core driver - * - * Copyright 2005, Broadcom Corporation - * Copyright 2006, 2007, Michael Buesch - * Copyright 2012, Hauke Mehrtens - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" -#include -#include -#include -#include - -static inline u32 bcma_cc_write32_masked(struct bcma_drv_cc *cc, u16 offset, - u32 mask, u32 value) -{ - value &= mask; - value |= bcma_cc_read32(cc, offset) & ~mask; - bcma_cc_write32(cc, offset, value); - - return value; -} - -static u32 bcma_chipco_get_alp_clock(struct bcma_drv_cc *cc) -{ - if (cc->capabilities & BCMA_CC_CAP_PMU) - return bcma_pmu_get_alp_clock(cc); - - return 20000000; -} - -static u32 bcma_chipco_watchdog_get_max_timer(struct bcma_drv_cc *cc) -{ - struct bcma_bus *bus = cc->core->bus; - u32 nb; - - if (cc->capabilities & BCMA_CC_CAP_PMU) { - if (bus->chipinfo.id == BCMA_CHIP_ID_BCM4706) - nb = 32; - else if (cc->core->id.rev < 26) - nb = 16; - else - nb = (cc->core->id.rev >= 37) ? 32 : 24; - } else { - nb = 28; - } - if (nb == 32) - return 0xffffffff; - else - return (1 << nb) - 1; -} - -static u32 bcma_chipco_watchdog_timer_set_wdt(struct bcm47xx_wdt *wdt, - u32 ticks) -{ - struct bcma_drv_cc *cc = bcm47xx_wdt_get_drvdata(wdt); - - return bcma_chipco_watchdog_timer_set(cc, ticks); -} - -static u32 bcma_chipco_watchdog_timer_set_ms_wdt(struct bcm47xx_wdt *wdt, - u32 ms) -{ - struct bcma_drv_cc *cc = bcm47xx_wdt_get_drvdata(wdt); - u32 ticks; - - ticks = bcma_chipco_watchdog_timer_set(cc, cc->ticks_per_ms * ms); - return ticks / cc->ticks_per_ms; -} - -static int bcma_chipco_watchdog_ticks_per_ms(struct bcma_drv_cc *cc) -{ - struct bcma_bus *bus = cc->core->bus; - - if (cc->capabilities & BCMA_CC_CAP_PMU) { - if (bus->chipinfo.id == BCMA_CHIP_ID_BCM4706) - /* 4706 CC and PMU watchdogs are clocked at 1/4 of ALP clock */ - return bcma_chipco_get_alp_clock(cc) / 4000; - else - /* based on 32KHz ILP clock */ - return 32; - } else { - return bcma_chipco_get_alp_clock(cc) / 1000; - } -} - -int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc) -{ - struct bcm47xx_wdt wdt = {}; - struct platform_device *pdev; - - wdt.driver_data = cc; - wdt.timer_set = bcma_chipco_watchdog_timer_set_wdt; - wdt.timer_set_ms = bcma_chipco_watchdog_timer_set_ms_wdt; - wdt.max_timer_ms = bcma_chipco_watchdog_get_max_timer(cc) / cc->ticks_per_ms; - - pdev = platform_device_register_data(NULL, "bcm47xx-wdt", - cc->core->bus->num, &wdt, - sizeof(wdt)); - if (IS_ERR(pdev)) - return PTR_ERR(pdev); - - cc->watchdog = pdev; - - return 0; -} - -void bcma_core_chipcommon_early_init(struct bcma_drv_cc *cc) -{ - if (cc->early_setup_done) - return; - - spin_lock_init(&cc->gpio_lock); - - if (cc->core->id.rev >= 11) - cc->status = bcma_cc_read32(cc, BCMA_CC_CHIPSTAT); - cc->capabilities = bcma_cc_read32(cc, BCMA_CC_CAP); - if (cc->core->id.rev >= 35) - cc->capabilities_ext = bcma_cc_read32(cc, BCMA_CC_CAP_EXT); - - if (cc->capabilities & BCMA_CC_CAP_PMU) - bcma_pmu_early_init(cc); - - cc->early_setup_done = true; -} - -void bcma_core_chipcommon_init(struct bcma_drv_cc *cc) -{ - u32 leddc_on = 10; - u32 leddc_off = 90; - - if (cc->setup_done) - return; - - bcma_core_chipcommon_early_init(cc); - - if (cc->core->id.rev >= 20) { - bcma_cc_write32(cc, BCMA_CC_GPIOPULLUP, 0); - bcma_cc_write32(cc, BCMA_CC_GPIOPULLDOWN, 0); - } - - if (cc->capabilities & BCMA_CC_CAP_PMU) - bcma_pmu_init(cc); - if (cc->capabilities & BCMA_CC_CAP_PCTL) - bcma_err(cc->core->bus, "Power control not implemented!\n"); - - if (cc->core->id.rev >= 16) { - if (cc->core->bus->sprom.leddc_on_time && - cc->core->bus->sprom.leddc_off_time) { - leddc_on = cc->core->bus->sprom.leddc_on_time; - leddc_off = cc->core->bus->sprom.leddc_off_time; - } - bcma_cc_write32(cc, BCMA_CC_GPIOTIMER, - ((leddc_on << BCMA_CC_GPIOTIMER_ONTIME_SHIFT) | - (leddc_off << BCMA_CC_GPIOTIMER_OFFTIME_SHIFT))); - } - cc->ticks_per_ms = bcma_chipco_watchdog_ticks_per_ms(cc); - - cc->setup_done = true; -} - -/* Set chip watchdog reset timer to fire in 'ticks' backplane cycles */ -u32 bcma_chipco_watchdog_timer_set(struct bcma_drv_cc *cc, u32 ticks) -{ - u32 maxt; - enum bcma_clkmode clkmode; - - maxt = bcma_chipco_watchdog_get_max_timer(cc); - if (cc->capabilities & BCMA_CC_CAP_PMU) { - if (ticks == 1) - ticks = 2; - else if (ticks > maxt) - ticks = maxt; - bcma_cc_write32(cc, BCMA_CC_PMU_WATCHDOG, ticks); - } else { - clkmode = ticks ? BCMA_CLKMODE_FAST : BCMA_CLKMODE_DYNAMIC; - bcma_core_set_clockmode(cc->core, clkmode); - if (ticks > maxt) - ticks = maxt; - /* instant NMI */ - bcma_cc_write32(cc, BCMA_CC_WATCHDOG, ticks); - } - return ticks; -} - -void bcma_chipco_irq_mask(struct bcma_drv_cc *cc, u32 mask, u32 value) -{ - bcma_cc_write32_masked(cc, BCMA_CC_IRQMASK, mask, value); -} - -u32 bcma_chipco_irq_status(struct bcma_drv_cc *cc, u32 mask) -{ - return bcma_cc_read32(cc, BCMA_CC_IRQSTAT) & mask; -} - -u32 bcma_chipco_gpio_in(struct bcma_drv_cc *cc, u32 mask) -{ - return bcma_cc_read32(cc, BCMA_CC_GPIOIN) & mask; -} - -u32 bcma_chipco_gpio_out(struct bcma_drv_cc *cc, u32 mask, u32 value) -{ - unsigned long flags; - u32 res; - - spin_lock_irqsave(&cc->gpio_lock, flags); - res = bcma_cc_write32_masked(cc, BCMA_CC_GPIOOUT, mask, value); - spin_unlock_irqrestore(&cc->gpio_lock, flags); - - return res; -} - -u32 bcma_chipco_gpio_outen(struct bcma_drv_cc *cc, u32 mask, u32 value) -{ - unsigned long flags; - u32 res; - - spin_lock_irqsave(&cc->gpio_lock, flags); - res = bcma_cc_write32_masked(cc, BCMA_CC_GPIOOUTEN, mask, value); - spin_unlock_irqrestore(&cc->gpio_lock, flags); - - return res; -} - -/* - * If the bit is set to 0, chipcommon controlls this GPIO, - * if the bit is set to 1, it is used by some part of the chip and not our code. - */ -u32 bcma_chipco_gpio_control(struct bcma_drv_cc *cc, u32 mask, u32 value) -{ - unsigned long flags; - u32 res; - - spin_lock_irqsave(&cc->gpio_lock, flags); - res = bcma_cc_write32_masked(cc, BCMA_CC_GPIOCTL, mask, value); - spin_unlock_irqrestore(&cc->gpio_lock, flags); - - return res; -} -EXPORT_SYMBOL_GPL(bcma_chipco_gpio_control); - -u32 bcma_chipco_gpio_intmask(struct bcma_drv_cc *cc, u32 mask, u32 value) -{ - unsigned long flags; - u32 res; - - spin_lock_irqsave(&cc->gpio_lock, flags); - res = bcma_cc_write32_masked(cc, BCMA_CC_GPIOIRQ, mask, value); - spin_unlock_irqrestore(&cc->gpio_lock, flags); - - return res; -} - -u32 bcma_chipco_gpio_polarity(struct bcma_drv_cc *cc, u32 mask, u32 value) -{ - unsigned long flags; - u32 res; - - spin_lock_irqsave(&cc->gpio_lock, flags); - res = bcma_cc_write32_masked(cc, BCMA_CC_GPIOPOL, mask, value); - spin_unlock_irqrestore(&cc->gpio_lock, flags); - - return res; -} - -u32 bcma_chipco_gpio_pullup(struct bcma_drv_cc *cc, u32 mask, u32 value) -{ - unsigned long flags; - u32 res; - - if (cc->core->id.rev < 20) - return 0; - - spin_lock_irqsave(&cc->gpio_lock, flags); - res = bcma_cc_write32_masked(cc, BCMA_CC_GPIOPULLUP, mask, value); - spin_unlock_irqrestore(&cc->gpio_lock, flags); - - return res; -} - -u32 bcma_chipco_gpio_pulldown(struct bcma_drv_cc *cc, u32 mask, u32 value) -{ - unsigned long flags; - u32 res; - - if (cc->core->id.rev < 20) - return 0; - - spin_lock_irqsave(&cc->gpio_lock, flags); - res = bcma_cc_write32_masked(cc, BCMA_CC_GPIOPULLDOWN, mask, value); - spin_unlock_irqrestore(&cc->gpio_lock, flags); - - return res; -} - -#ifdef CONFIG_BCMA_DRIVER_MIPS -void bcma_chipco_serial_init(struct bcma_drv_cc *cc) -{ - unsigned int irq; - u32 baud_base; - u32 i; - unsigned int ccrev = cc->core->id.rev; - struct bcma_serial_port *ports = cc->serial_ports; - - if (ccrev >= 11 && ccrev != 15) { - baud_base = bcma_chipco_get_alp_clock(cc); - if (ccrev >= 21) { - /* Turn off UART clock before switching clocksource. */ - bcma_cc_write32(cc, BCMA_CC_CORECTL, - bcma_cc_read32(cc, BCMA_CC_CORECTL) - & ~BCMA_CC_CORECTL_UARTCLKEN); - } - /* Set the override bit so we don't divide it */ - bcma_cc_write32(cc, BCMA_CC_CORECTL, - bcma_cc_read32(cc, BCMA_CC_CORECTL) - | BCMA_CC_CORECTL_UARTCLK0); - if (ccrev >= 21) { - /* Re-enable the UART clock. */ - bcma_cc_write32(cc, BCMA_CC_CORECTL, - bcma_cc_read32(cc, BCMA_CC_CORECTL) - | BCMA_CC_CORECTL_UARTCLKEN); - } - } else { - bcma_err(cc->core->bus, "serial not supported on this device ccrev: 0x%x\n", ccrev); - return; - } - - irq = bcma_core_irq(cc->core); - - /* Determine the registers of the UARTs */ - cc->nr_serial_ports = (cc->capabilities & BCMA_CC_CAP_NRUART); - for (i = 0; i < cc->nr_serial_ports; i++) { - ports[i].regs = cc->core->io_addr + BCMA_CC_UART0_DATA + - (i * 256); - ports[i].irq = irq; - ports[i].baud_base = baud_base; - ports[i].reg_shift = 0; - } -} -#endif /* CONFIG_BCMA_DRIVER_MIPS */ diff --git a/drivers/bcma/driver_chipcommon_nflash.c b/drivers/bcma/driver_chipcommon_nflash.c deleted file mode 100644 index d4f699a..0000000 --- a/drivers/bcma/driver_chipcommon_nflash.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Broadcom specific AMBA - * ChipCommon NAND flash interface - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" - -#include -#include - -struct platform_device bcma_nflash_dev = { - .name = "bcma_nflash", - .num_resources = 0, -}; - -/* Initialize NAND flash access */ -int bcma_nflash_init(struct bcma_drv_cc *cc) -{ - struct bcma_bus *bus = cc->core->bus; - - if (bus->chipinfo.id != BCMA_CHIP_ID_BCM4706 && - cc->core->id.rev != 38) { - bcma_err(bus, "NAND flash on unsupported board!\n"); - return -ENOTSUPP; - } - - if (!(cc->capabilities & BCMA_CC_CAP_NFLASH)) { - bcma_err(bus, "NAND flash not present according to ChipCommon\n"); - return -ENODEV; - } - - cc->nflash.present = true; - if (cc->core->id.rev == 38 && - (cc->status & BCMA_CC_CHIPST_5357_NAND_BOOT)) - cc->nflash.boot = true; - - /* Prepare platform device, but don't register it yet. It's too early, - * malloc (required by device_private_init) is not available yet. */ - bcma_nflash_dev.dev.platform_data = &cc->nflash; - - return 0; -} diff --git a/drivers/bcma/driver_chipcommon_pmu.c b/drivers/bcma/driver_chipcommon_pmu.c deleted file mode 100644 index 932b101..0000000 --- a/drivers/bcma/driver_chipcommon_pmu.c +++ /dev/null @@ -1,511 +0,0 @@ -/* - * Broadcom specific AMBA - * ChipCommon Power Management Unit driver - * - * Copyright 2009, Michael Buesch - * Copyright 2007, 2011, Broadcom Corporation - * Copyright 2011, 2012, Hauke Mehrtens - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" -#include -#include - -u32 bcma_chipco_pll_read(struct bcma_drv_cc *cc, u32 offset) -{ - bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, offset); - bcma_cc_read32(cc, BCMA_CC_PLLCTL_ADDR); - return bcma_cc_read32(cc, BCMA_CC_PLLCTL_DATA); -} -EXPORT_SYMBOL_GPL(bcma_chipco_pll_read); - -void bcma_chipco_pll_write(struct bcma_drv_cc *cc, u32 offset, u32 value) -{ - bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, offset); - bcma_cc_read32(cc, BCMA_CC_PLLCTL_ADDR); - bcma_cc_write32(cc, BCMA_CC_PLLCTL_DATA, value); -} -EXPORT_SYMBOL_GPL(bcma_chipco_pll_write); - -void bcma_chipco_pll_maskset(struct bcma_drv_cc *cc, u32 offset, u32 mask, - u32 set) -{ - bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, offset); - bcma_cc_read32(cc, BCMA_CC_PLLCTL_ADDR); - bcma_cc_maskset32(cc, BCMA_CC_PLLCTL_DATA, mask, set); -} -EXPORT_SYMBOL_GPL(bcma_chipco_pll_maskset); - -void bcma_chipco_chipctl_maskset(struct bcma_drv_cc *cc, - u32 offset, u32 mask, u32 set) -{ - bcma_cc_write32(cc, BCMA_CC_CHIPCTL_ADDR, offset); - bcma_cc_read32(cc, BCMA_CC_CHIPCTL_ADDR); - bcma_cc_maskset32(cc, BCMA_CC_CHIPCTL_DATA, mask, set); -} -EXPORT_SYMBOL_GPL(bcma_chipco_chipctl_maskset); - -void bcma_chipco_regctl_maskset(struct bcma_drv_cc *cc, u32 offset, u32 mask, - u32 set) -{ - bcma_cc_write32(cc, BCMA_CC_REGCTL_ADDR, offset); - bcma_cc_read32(cc, BCMA_CC_REGCTL_ADDR); - bcma_cc_maskset32(cc, BCMA_CC_REGCTL_DATA, mask, set); -} -EXPORT_SYMBOL_GPL(bcma_chipco_regctl_maskset); - -static void bcma_pmu_resources_init(struct bcma_drv_cc *cc) -{ - struct bcma_bus *bus = cc->core->bus; - u32 min_msk = 0, max_msk = 0; - - switch (bus->chipinfo.id) { - case BCMA_CHIP_ID_BCM4313: - min_msk = 0x200D; - max_msk = 0xFFFF; - break; - default: - bcma_debug(bus, "PMU resource config unknown or not needed for device 0x%04X\n", - bus->chipinfo.id); - } - - /* Set the resource masks. */ - if (min_msk) - bcma_cc_write32(cc, BCMA_CC_PMU_MINRES_MSK, min_msk); - if (max_msk) - bcma_cc_write32(cc, BCMA_CC_PMU_MAXRES_MSK, max_msk); - - /* - * Add some delay; allow resources to come up and settle. - * Delay is required for SoC (early init). - */ - mdelay(2); -} - -/* Disable to allow reading SPROM. Don't know the adventages of enabling it. */ -void bcma_chipco_bcm4331_ext_pa_lines_ctl(struct bcma_drv_cc *cc, bool enable) -{ - struct bcma_bus *bus = cc->core->bus; - u32 val; - - val = bcma_cc_read32(cc, BCMA_CC_CHIPCTL); - if (enable) { - val |= BCMA_CHIPCTL_4331_EXTPA_EN; - if (bus->chipinfo.pkg == 9 || bus->chipinfo.pkg == 11) - val |= BCMA_CHIPCTL_4331_EXTPA_ON_GPIO2_5; - else if (bus->chipinfo.rev > 0) - val |= BCMA_CHIPCTL_4331_EXTPA_EN2; - } else { - val &= ~BCMA_CHIPCTL_4331_EXTPA_EN; - val &= ~BCMA_CHIPCTL_4331_EXTPA_EN2; - val &= ~BCMA_CHIPCTL_4331_EXTPA_ON_GPIO2_5; - } - bcma_cc_write32(cc, BCMA_CC_CHIPCTL, val); -} - -static void bcma_pmu_workarounds(struct bcma_drv_cc *cc) -{ - struct bcma_bus *bus = cc->core->bus; - - switch (bus->chipinfo.id) { - case BCMA_CHIP_ID_BCM4313: - /* enable 12 mA drive strenth for 4313 and set chipControl - register bit 1 */ - bcma_chipco_chipctl_maskset(cc, 0, - ~BCMA_CCTRL_4313_12MA_LED_DRIVE, - BCMA_CCTRL_4313_12MA_LED_DRIVE); - break; - case BCMA_CHIP_ID_BCM4331: - case BCMA_CHIP_ID_BCM43431: - /* Ext PA lines must be enabled for tx on BCM4331 */ - bcma_chipco_bcm4331_ext_pa_lines_ctl(cc, true); - break; - case BCMA_CHIP_ID_BCM43224: - case BCMA_CHIP_ID_BCM43421: - /* enable 12 mA drive strenth for 43224 and set chipControl - register bit 15 */ - if (bus->chipinfo.rev == 0) { - bcma_cc_maskset32(cc, BCMA_CC_CHIPCTL, - ~BCMA_CCTRL_43224_GPIO_TOGGLE, - BCMA_CCTRL_43224_GPIO_TOGGLE); - bcma_chipco_chipctl_maskset(cc, 0, - ~BCMA_CCTRL_43224A0_12MA_LED_DRIVE, - BCMA_CCTRL_43224A0_12MA_LED_DRIVE); - } else { - bcma_chipco_chipctl_maskset(cc, 0, - ~BCMA_CCTRL_43224B0_12MA_LED_DRIVE, - BCMA_CCTRL_43224B0_12MA_LED_DRIVE); - } - break; - default: - bcma_debug(bus, "Workarounds unknown or not needed for device 0x%04X\n", - bus->chipinfo.id); - } -} - -void bcma_pmu_early_init(struct bcma_drv_cc *cc) -{ - u32 pmucap; - - pmucap = bcma_cc_read32(cc, BCMA_CC_PMU_CAP); - cc->pmu.rev = (pmucap & BCMA_CC_PMU_CAP_REVISION); - - bcma_debug(cc->core->bus, "Found rev %u PMU (capabilities 0x%08X)\n", - cc->pmu.rev, pmucap); -} - -void bcma_pmu_init(struct bcma_drv_cc *cc) -{ - if (cc->pmu.rev == 1) - bcma_cc_mask32(cc, BCMA_CC_PMU_CTL, - ~BCMA_CC_PMU_CTL_NOILPONW); - else - bcma_cc_set32(cc, BCMA_CC_PMU_CTL, - BCMA_CC_PMU_CTL_NOILPONW); - - bcma_pmu_resources_init(cc); - bcma_pmu_workarounds(cc); -} - -u32 bcma_pmu_get_alp_clock(struct bcma_drv_cc *cc) -{ - struct bcma_bus *bus = cc->core->bus; - - switch (bus->chipinfo.id) { - case BCMA_CHIP_ID_BCM4716: - case BCMA_CHIP_ID_BCM4748: - case BCMA_CHIP_ID_BCM47162: - case BCMA_CHIP_ID_BCM4313: - case BCMA_CHIP_ID_BCM5357: - case BCMA_CHIP_ID_BCM4749: - case BCMA_CHIP_ID_BCM53572: - /* always 20Mhz */ - return 20000 * 1000; - case BCMA_CHIP_ID_BCM5356: - case BCMA_CHIP_ID_BCM4706: - /* always 25Mhz */ - return 25000 * 1000; - default: - bcma_warn(bus, "No ALP clock specified for %04X device, pmu rev. %d, using default %d Hz\n", - bus->chipinfo.id, cc->pmu.rev, BCMA_CC_PMU_ALP_CLOCK); - } - return BCMA_CC_PMU_ALP_CLOCK; -} - -/* Find the output of the "m" pll divider given pll controls that start with - * pllreg "pll0" i.e. 12 for main 6 for phy, 0 for misc. - */ -static u32 bcma_pmu_pll_clock(struct bcma_drv_cc *cc, u32 pll0, u32 m) -{ - u32 tmp, div, ndiv, p1, p2, fc; - struct bcma_bus *bus = cc->core->bus; - - BUG_ON((pll0 & 3) || (pll0 > BCMA_CC_PMU4716_MAINPLL_PLL0)); - - BUG_ON(!m || m > 4); - - if (bus->chipinfo.id == BCMA_CHIP_ID_BCM5357 || - bus->chipinfo.id == BCMA_CHIP_ID_BCM4749) { - /* Detect failure in clock setting */ - tmp = bcma_cc_read32(cc, BCMA_CC_CHIPSTAT); - if (tmp & 0x40000) - return 133 * 1000000; - } - - tmp = bcma_chipco_pll_read(cc, pll0 + BCMA_CC_PPL_P1P2_OFF); - p1 = (tmp & BCMA_CC_PPL_P1_MASK) >> BCMA_CC_PPL_P1_SHIFT; - p2 = (tmp & BCMA_CC_PPL_P2_MASK) >> BCMA_CC_PPL_P2_SHIFT; - - tmp = bcma_chipco_pll_read(cc, pll0 + BCMA_CC_PPL_M14_OFF); - div = (tmp >> ((m - 1) * BCMA_CC_PPL_MDIV_WIDTH)) & - BCMA_CC_PPL_MDIV_MASK; - - tmp = bcma_chipco_pll_read(cc, pll0 + BCMA_CC_PPL_NM5_OFF); - ndiv = (tmp & BCMA_CC_PPL_NDIV_MASK) >> BCMA_CC_PPL_NDIV_SHIFT; - - /* Do calculation in Mhz */ - fc = bcma_pmu_get_alp_clock(cc) / 1000000; - fc = (p1 * ndiv * fc) / p2; - - /* Return clock in Hertz */ - return (fc / div) * 1000000; -} - -static u32 bcma_pmu_pll_clock_bcm4706(struct bcma_drv_cc *cc, u32 pll0, u32 m) -{ - u32 tmp, ndiv, p1div, p2div; - u32 clock; - - BUG_ON(!m || m > 4); - - /* Get N, P1 and P2 dividers to determine CPU clock */ - tmp = bcma_chipco_pll_read(cc, pll0 + BCMA_CC_PMU6_4706_PROCPLL_OFF); - ndiv = (tmp & BCMA_CC_PMU6_4706_PROC_NDIV_INT_MASK) - >> BCMA_CC_PMU6_4706_PROC_NDIV_INT_SHIFT; - p1div = (tmp & BCMA_CC_PMU6_4706_PROC_P1DIV_MASK) - >> BCMA_CC_PMU6_4706_PROC_P1DIV_SHIFT; - p2div = (tmp & BCMA_CC_PMU6_4706_PROC_P2DIV_MASK) - >> BCMA_CC_PMU6_4706_PROC_P2DIV_SHIFT; - - tmp = bcma_cc_read32(cc, BCMA_CC_CHIPSTAT); - if (tmp & BCMA_CC_CHIPST_4706_PKG_OPTION) - /* Low cost bonding: Fixed reference clock 25MHz and m = 4 */ - clock = (25000000 / 4) * ndiv * p2div / p1div; - else - /* Fixed reference clock 25MHz and m = 2 */ - clock = (25000000 / 2) * ndiv * p2div / p1div; - - if (m == BCMA_CC_PMU5_MAINPLL_SSB) - clock = clock / 4; - - return clock; -} - -/* query bus clock frequency for PMU-enabled chipcommon */ -u32 bcma_pmu_get_bus_clock(struct bcma_drv_cc *cc) -{ - struct bcma_bus *bus = cc->core->bus; - - switch (bus->chipinfo.id) { - case BCMA_CHIP_ID_BCM4716: - case BCMA_CHIP_ID_BCM4748: - case BCMA_CHIP_ID_BCM47162: - return bcma_pmu_pll_clock(cc, BCMA_CC_PMU4716_MAINPLL_PLL0, - BCMA_CC_PMU5_MAINPLL_SSB); - case BCMA_CHIP_ID_BCM5356: - return bcma_pmu_pll_clock(cc, BCMA_CC_PMU5356_MAINPLL_PLL0, - BCMA_CC_PMU5_MAINPLL_SSB); - case BCMA_CHIP_ID_BCM5357: - case BCMA_CHIP_ID_BCM4749: - return bcma_pmu_pll_clock(cc, BCMA_CC_PMU5357_MAINPLL_PLL0, - BCMA_CC_PMU5_MAINPLL_SSB); - case BCMA_CHIP_ID_BCM4706: - return bcma_pmu_pll_clock_bcm4706(cc, - BCMA_CC_PMU4706_MAINPLL_PLL0, - BCMA_CC_PMU5_MAINPLL_SSB); - case BCMA_CHIP_ID_BCM53572: - return 75000000; - default: - bcma_warn(bus, "No bus clock specified for %04X device, pmu rev. %d, using default %d Hz\n", - bus->chipinfo.id, cc->pmu.rev, BCMA_CC_PMU_HT_CLOCK); - } - return BCMA_CC_PMU_HT_CLOCK; -} -EXPORT_SYMBOL_GPL(bcma_pmu_get_bus_clock); - -/* query cpu clock frequency for PMU-enabled chipcommon */ -u32 bcma_pmu_get_cpu_clock(struct bcma_drv_cc *cc) -{ - struct bcma_bus *bus = cc->core->bus; - - if (bus->chipinfo.id == BCMA_CHIP_ID_BCM53572) - return 300000000; - - /* New PMUs can have different clock for bus and CPU */ - if (cc->pmu.rev >= 5) { - u32 pll; - switch (bus->chipinfo.id) { - case BCMA_CHIP_ID_BCM4706: - return bcma_pmu_pll_clock_bcm4706(cc, - BCMA_CC_PMU4706_MAINPLL_PLL0, - BCMA_CC_PMU5_MAINPLL_CPU); - case BCMA_CHIP_ID_BCM5356: - pll = BCMA_CC_PMU5356_MAINPLL_PLL0; - break; - case BCMA_CHIP_ID_BCM5357: - case BCMA_CHIP_ID_BCM4749: - pll = BCMA_CC_PMU5357_MAINPLL_PLL0; - break; - default: - pll = BCMA_CC_PMU4716_MAINPLL_PLL0; - break; - } - - return bcma_pmu_pll_clock(cc, pll, BCMA_CC_PMU5_MAINPLL_CPU); - } - - /* On old PMUs CPU has the same clock as the bus */ - return bcma_pmu_get_bus_clock(cc); -} - -static void bcma_pmu_spuravoid_pll_write(struct bcma_drv_cc *cc, u32 offset, - u32 value) -{ - bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, offset); - bcma_cc_write32(cc, BCMA_CC_PLLCTL_DATA, value); -} - -void bcma_pmu_spuravoid_pllupdate(struct bcma_drv_cc *cc, int spuravoid) -{ - u32 tmp = 0; - u8 phypll_offset = 0; - u8 bcm5357_bcm43236_p1div[] = {0x1, 0x5, 0x5}; - u8 bcm5357_bcm43236_ndiv[] = {0x30, 0xf6, 0xfc}; - struct bcma_bus *bus = cc->core->bus; - - switch (bus->chipinfo.id) { - case BCMA_CHIP_ID_BCM5357: - case BCMA_CHIP_ID_BCM4749: - case BCMA_CHIP_ID_BCM53572: - /* 5357[ab]0, 43236[ab]0, and 6362b0 */ - - /* BCM5357 needs to touch PLL1_PLLCTL[02], - so offset PLL0_PLLCTL[02] by 6 */ - phypll_offset = (bus->chipinfo.id == BCMA_CHIP_ID_BCM5357 || - bus->chipinfo.id == BCMA_CHIP_ID_BCM4749 || - bus->chipinfo.id == BCMA_CHIP_ID_BCM53572) ? 6 : 0; - - /* RMW only the P1 divider */ - bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, - BCMA_CC_PMU_PLL_CTL0 + phypll_offset); - tmp = bcma_cc_read32(cc, BCMA_CC_PLLCTL_DATA); - tmp &= (~(BCMA_CC_PMU1_PLL0_PC0_P1DIV_MASK)); - tmp |= (bcm5357_bcm43236_p1div[spuravoid] << BCMA_CC_PMU1_PLL0_PC0_P1DIV_SHIFT); - bcma_cc_write32(cc, BCMA_CC_PLLCTL_DATA, tmp); - - /* RMW only the int feedback divider */ - bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, - BCMA_CC_PMU_PLL_CTL2 + phypll_offset); - tmp = bcma_cc_read32(cc, BCMA_CC_PLLCTL_DATA); - tmp &= ~(BCMA_CC_PMU1_PLL0_PC2_NDIV_INT_MASK); - tmp |= (bcm5357_bcm43236_ndiv[spuravoid]) << BCMA_CC_PMU1_PLL0_PC2_NDIV_INT_SHIFT; - bcma_cc_write32(cc, BCMA_CC_PLLCTL_DATA, tmp); - - tmp = 1 << 10; - break; - - case BCMA_CHIP_ID_BCM4331: - case BCMA_CHIP_ID_BCM43431: - if (spuravoid == 2) { - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, - 0x11500014); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, - 0x0FC00a08); - } else if (spuravoid == 1) { - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, - 0x11500014); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, - 0x0F600a08); - } else { - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, - 0x11100014); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, - 0x03000a08); - } - tmp = 1 << 10; - break; - - case BCMA_CHIP_ID_BCM43224: - case BCMA_CHIP_ID_BCM43225: - case BCMA_CHIP_ID_BCM43421: - if (spuravoid == 1) { - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, - 0x11500010); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, - 0x000C0C06); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, - 0x0F600a08); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, - 0x00000000); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, - 0x2001E920); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, - 0x88888815); - } else { - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, - 0x11100010); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, - 0x000c0c06); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, - 0x03000a08); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, - 0x00000000); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, - 0x200005c0); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, - 0x88888815); - } - tmp = 1 << 10; - break; - - case BCMA_CHIP_ID_BCM4716: - case BCMA_CHIP_ID_BCM4748: - case BCMA_CHIP_ID_BCM47162: - if (spuravoid == 1) { - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, - 0x11500060); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, - 0x080C0C06); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, - 0x0F600000); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, - 0x00000000); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, - 0x2001E924); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, - 0x88888815); - } else { - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, - 0x11100060); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, - 0x080c0c06); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, - 0x03000000); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, - 0x00000000); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, - 0x200005c0); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, - 0x88888815); - } - - tmp = 3 << 9; - break; - - case BCMA_CHIP_ID_BCM43227: - case BCMA_CHIP_ID_BCM43228: - case BCMA_CHIP_ID_BCM43428: - /* LCNXN */ - /* PLL Settings for spur avoidance on/off mode, - no on2 support for 43228A0 */ - if (spuravoid == 1) { - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, - 0x01100014); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, - 0x040C0C06); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, - 0x03140A08); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, - 0x00333333); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, - 0x202C2820); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, - 0x88888815); - } else { - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, - 0x11100014); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, - 0x040c0c06); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, - 0x03000a08); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, - 0x00000000); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, - 0x200005c0); - bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, - 0x88888815); - } - tmp = 1 << 10; - break; - default: - bcma_err(bus, "Unknown spuravoidance settings for chip 0x%04X, not changing PLL\n", - bus->chipinfo.id); - break; - } - - tmp |= bcma_cc_read32(cc, BCMA_CC_PMU_CTL); - bcma_cc_write32(cc, BCMA_CC_PMU_CTL, tmp); -} -EXPORT_SYMBOL_GPL(bcma_pmu_spuravoid_pllupdate); diff --git a/drivers/bcma/driver_chipcommon_sflash.c b/drivers/bcma/driver_chipcommon_sflash.c deleted file mode 100644 index e6ed4fe..0000000 --- a/drivers/bcma/driver_chipcommon_sflash.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Broadcom specific AMBA - * ChipCommon serial flash interface - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" - -#include -#include - -static struct resource bcma_sflash_resource = { - .name = "bcma_sflash", - .start = BCMA_SOC_FLASH2, - .end = 0, - .flags = IORESOURCE_MEM | IORESOURCE_READONLY, -}; - -struct platform_device bcma_sflash_dev = { - .name = "bcma_sflash", - .resource = &bcma_sflash_resource, - .num_resources = 1, -}; - -struct bcma_sflash_tbl_e { - char *name; - u32 id; - u32 blocksize; - u16 numblocks; -}; - -static struct bcma_sflash_tbl_e bcma_sflash_st_tbl[] = { - { "M25P20", 0x11, 0x10000, 4, }, - { "M25P40", 0x12, 0x10000, 8, }, - - { "M25P16", 0x14, 0x10000, 32, }, - { "M25P32", 0x15, 0x10000, 64, }, - { "M25P64", 0x16, 0x10000, 128, }, - { "M25FL128", 0x17, 0x10000, 256, }, - { 0 }, -}; - -static struct bcma_sflash_tbl_e bcma_sflash_sst_tbl[] = { - { "SST25WF512", 1, 0x1000, 16, }, - { "SST25VF512", 0x48, 0x1000, 16, }, - { "SST25WF010", 2, 0x1000, 32, }, - { "SST25VF010", 0x49, 0x1000, 32, }, - { "SST25WF020", 3, 0x1000, 64, }, - { "SST25VF020", 0x43, 0x1000, 64, }, - { "SST25WF040", 4, 0x1000, 128, }, - { "SST25VF040", 0x44, 0x1000, 128, }, - { "SST25VF040B", 0x8d, 0x1000, 128, }, - { "SST25WF080", 5, 0x1000, 256, }, - { "SST25VF080B", 0x8e, 0x1000, 256, }, - { "SST25VF016", 0x41, 0x1000, 512, }, - { "SST25VF032", 0x4a, 0x1000, 1024, }, - { "SST25VF064", 0x4b, 0x1000, 2048, }, - { 0 }, -}; - -static struct bcma_sflash_tbl_e bcma_sflash_at_tbl[] = { - { "AT45DB011", 0xc, 256, 512, }, - { "AT45DB021", 0x14, 256, 1024, }, - { "AT45DB041", 0x1c, 256, 2048, }, - { "AT45DB081", 0x24, 256, 4096, }, - { "AT45DB161", 0x2c, 512, 4096, }, - { "AT45DB321", 0x34, 512, 8192, }, - { "AT45DB642", 0x3c, 1024, 8192, }, - { 0 }, -}; - -static void bcma_sflash_cmd(struct bcma_drv_cc *cc, u32 opcode) -{ - int i; - bcma_cc_write32(cc, BCMA_CC_FLASHCTL, - BCMA_CC_FLASHCTL_START | opcode); - for (i = 0; i < 1000; i++) { - if (!(bcma_cc_read32(cc, BCMA_CC_FLASHCTL) & - BCMA_CC_FLASHCTL_BUSY)) - return; - cpu_relax(); - } - bcma_err(cc->core->bus, "SFLASH control command failed (timeout)!\n"); -} - -/* Initialize serial flash access */ -int bcma_sflash_init(struct bcma_drv_cc *cc) -{ - struct bcma_bus *bus = cc->core->bus; - struct bcma_sflash *sflash = &cc->sflash; - struct bcma_sflash_tbl_e *e; - u32 id, id2; - - switch (cc->capabilities & BCMA_CC_CAP_FLASHT) { - case BCMA_CC_FLASHT_STSER: - bcma_sflash_cmd(cc, BCMA_CC_FLASHCTL_ST_DP); - - bcma_cc_write32(cc, BCMA_CC_FLASHADDR, 0); - bcma_sflash_cmd(cc, BCMA_CC_FLASHCTL_ST_RES); - id = bcma_cc_read32(cc, BCMA_CC_FLASHDATA); - - bcma_cc_write32(cc, BCMA_CC_FLASHADDR, 1); - bcma_sflash_cmd(cc, BCMA_CC_FLASHCTL_ST_RES); - id2 = bcma_cc_read32(cc, BCMA_CC_FLASHDATA); - - switch (id) { - case 0xbf: - for (e = bcma_sflash_sst_tbl; e->name; e++) { - if (e->id == id2) - break; - } - break; - case 0x13: - return -ENOTSUPP; - default: - for (e = bcma_sflash_st_tbl; e->name; e++) { - if (e->id == id) - break; - } - break; - } - if (!e->name) { - bcma_err(bus, "Unsupported ST serial flash (id: 0x%X, id2: 0x%X)\n", id, id2); - return -ENOTSUPP; - } - - break; - case BCMA_CC_FLASHT_ATSER: - bcma_sflash_cmd(cc, BCMA_CC_FLASHCTL_AT_STATUS); - id = bcma_cc_read32(cc, BCMA_CC_FLASHDATA) & 0x3c; - - for (e = bcma_sflash_at_tbl; e->name; e++) { - if (e->id == id) - break; - } - if (!e->name) { - bcma_err(bus, "Unsupported Atmel serial flash (id: 0x%X)\n", id); - return -ENOTSUPP; - } - - break; - default: - bcma_err(bus, "Unsupported flash type\n"); - return -ENOTSUPP; - } - - sflash->window = BCMA_SOC_FLASH2; - sflash->blocksize = e->blocksize; - sflash->numblocks = e->numblocks; - sflash->size = sflash->blocksize * sflash->numblocks; - sflash->present = true; - - bcma_info(bus, "Found %s serial flash (size: %dKiB, blocksize: 0x%X, blocks: %d)\n", - e->name, sflash->size / 1024, sflash->blocksize, - sflash->numblocks); - - /* Prepare platform device, but don't register it yet. It's too early, - * malloc (required by device_private_init) is not available yet. */ - bcma_sflash_dev.resource[0].end = bcma_sflash_dev.resource[0].start + - sflash->size; - bcma_sflash_dev.dev.platform_data = sflash; - - return 0; -} diff --git a/drivers/bcma/driver_gmac_cmn.c b/drivers/bcma/driver_gmac_cmn.c deleted file mode 100644 index dcb1379..0000000 --- a/drivers/bcma/driver_gmac_cmn.c +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Broadcom specific AMBA - * GBIT MAC COMMON Core - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" -#include - -void bcma_core_gmac_cmn_init(struct bcma_drv_gmac_cmn *gc) -{ - mutex_init(&gc->phy_mutex); -} diff --git a/drivers/bcma/driver_gpio.c b/drivers/bcma/driver_gpio.c deleted file mode 100644 index 45f0996..0000000 --- a/drivers/bcma/driver_gpio.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Broadcom specific AMBA - * GPIO driver - * - * Copyright 2011, Broadcom Corporation - * Copyright 2012, Hauke Mehrtens - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include -#include -#include - -#include "bcma_private.h" - -static inline struct bcma_drv_cc *bcma_gpio_get_cc(struct gpio_chip *chip) -{ - return container_of(chip, struct bcma_drv_cc, gpio); -} - -static int bcma_gpio_get_value(struct gpio_chip *chip, unsigned gpio) -{ - struct bcma_drv_cc *cc = bcma_gpio_get_cc(chip); - - return !!bcma_chipco_gpio_in(cc, 1 << gpio); -} - -static void bcma_gpio_set_value(struct gpio_chip *chip, unsigned gpio, - int value) -{ - struct bcma_drv_cc *cc = bcma_gpio_get_cc(chip); - - bcma_chipco_gpio_out(cc, 1 << gpio, value ? 1 << gpio : 0); -} - -static int bcma_gpio_direction_input(struct gpio_chip *chip, unsigned gpio) -{ - struct bcma_drv_cc *cc = bcma_gpio_get_cc(chip); - - bcma_chipco_gpio_outen(cc, 1 << gpio, 0); - return 0; -} - -static int bcma_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, - int value) -{ - struct bcma_drv_cc *cc = bcma_gpio_get_cc(chip); - - bcma_chipco_gpio_outen(cc, 1 << gpio, 1 << gpio); - bcma_chipco_gpio_out(cc, 1 << gpio, value ? 1 << gpio : 0); - return 0; -} - -static int bcma_gpio_request(struct gpio_chip *chip, unsigned gpio) -{ - struct bcma_drv_cc *cc = bcma_gpio_get_cc(chip); - - bcma_chipco_gpio_control(cc, 1 << gpio, 0); - /* clear pulldown */ - bcma_chipco_gpio_pulldown(cc, 1 << gpio, 0); - /* Set pullup */ - bcma_chipco_gpio_pullup(cc, 1 << gpio, 1 << gpio); - - return 0; -} - -static void bcma_gpio_free(struct gpio_chip *chip, unsigned gpio) -{ - struct bcma_drv_cc *cc = bcma_gpio_get_cc(chip); - - /* clear pullup */ - bcma_chipco_gpio_pullup(cc, 1 << gpio, 0); -} - -static int bcma_gpio_to_irq(struct gpio_chip *chip, unsigned gpio) -{ - struct bcma_drv_cc *cc = bcma_gpio_get_cc(chip); - - if (cc->core->bus->hosttype == BCMA_HOSTTYPE_SOC) - return bcma_core_irq(cc->core); - else - return -EINVAL; -} - -int bcma_gpio_init(struct bcma_drv_cc *cc) -{ - struct gpio_chip *chip = &cc->gpio; - - chip->label = "bcma_gpio"; - chip->owner = THIS_MODULE; - chip->request = bcma_gpio_request; - chip->free = bcma_gpio_free; - chip->get = bcma_gpio_get_value; - chip->set = bcma_gpio_set_value; - chip->direction_input = bcma_gpio_direction_input; - chip->direction_output = bcma_gpio_direction_output; - chip->to_irq = bcma_gpio_to_irq; - chip->ngpio = 16; - /* There is just one SoC in one device and its GPIO addresses should be - * deterministic to address them more easily. The other buses could get - * a random base number. */ - if (cc->core->bus->hosttype == BCMA_HOSTTYPE_SOC) - chip->base = 0; - else - chip->base = -1; - - return gpiochip_add(chip); -} - -int bcma_gpio_unregister(struct bcma_drv_cc *cc) -{ - return gpiochip_remove(&cc->gpio); -} diff --git a/drivers/bcma/driver_mips.c b/drivers/bcma/driver_mips.c deleted file mode 100644 index 9a7f0e3..0000000 --- a/drivers/bcma/driver_mips.c +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Broadcom specific AMBA - * Broadcom MIPS32 74K core driver - * - * Copyright 2009, Broadcom Corporation - * Copyright 2006, 2007, Michael Buesch - * Copyright 2010, Bernhard Loos - * Copyright 2011, Hauke Mehrtens - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" - -#include - -#include -#include -#include -#include -#include -#include - -static const char *part_probes[] = { "bcm47xxpart", NULL }; - -static struct physmap_flash_data bcma_pflash_data = { - .part_probe_types = part_probes, -}; - -static struct resource bcma_pflash_resource = { - .name = "bcma_pflash", - .flags = IORESOURCE_MEM, -}; - -struct platform_device bcma_pflash_dev = { - .name = "physmap-flash", - .dev = { - .platform_data = &bcma_pflash_data, - }, - .resource = &bcma_pflash_resource, - .num_resources = 1, -}; - -/* The 47162a0 hangs when reading MIPS DMP registers registers */ -static inline bool bcma_core_mips_bcm47162a0_quirk(struct bcma_device *dev) -{ - return dev->bus->chipinfo.id == BCMA_CHIP_ID_BCM47162 && - dev->bus->chipinfo.rev == 0 && dev->id.id == BCMA_CORE_MIPS_74K; -} - -/* The 5357b0 hangs when reading USB20H DMP registers */ -static inline bool bcma_core_mips_bcm5357b0_quirk(struct bcma_device *dev) -{ - return (dev->bus->chipinfo.id == BCMA_CHIP_ID_BCM5357 || - dev->bus->chipinfo.id == BCMA_CHIP_ID_BCM4749) && - dev->bus->chipinfo.pkg == 11 && - dev->id.id == BCMA_CORE_USB20_HOST; -} - -static inline u32 mips_read32(struct bcma_drv_mips *mcore, - u16 offset) -{ - return bcma_read32(mcore->core, offset); -} - -static inline void mips_write32(struct bcma_drv_mips *mcore, - u16 offset, - u32 value) -{ - bcma_write32(mcore->core, offset, value); -} - -static const u32 ipsflag_irq_mask[] = { - 0, - BCMA_MIPS_IPSFLAG_IRQ1, - BCMA_MIPS_IPSFLAG_IRQ2, - BCMA_MIPS_IPSFLAG_IRQ3, - BCMA_MIPS_IPSFLAG_IRQ4, -}; - -static const u32 ipsflag_irq_shift[] = { - 0, - BCMA_MIPS_IPSFLAG_IRQ1_SHIFT, - BCMA_MIPS_IPSFLAG_IRQ2_SHIFT, - BCMA_MIPS_IPSFLAG_IRQ3_SHIFT, - BCMA_MIPS_IPSFLAG_IRQ4_SHIFT, -}; - -static u32 bcma_core_mips_irqflag(struct bcma_device *dev) -{ - u32 flag; - - if (bcma_core_mips_bcm47162a0_quirk(dev)) - return dev->core_index; - if (bcma_core_mips_bcm5357b0_quirk(dev)) - return dev->core_index; - flag = bcma_aread32(dev, BCMA_MIPS_OOBSELOUTA30); - - if (flag) - return flag & 0x1F; - else - return 0x3f; -} - -/* Get the MIPS IRQ assignment for a specified device. - * If unassigned, 0 is returned. - * If disabled, 5 is returned. - * If not supported, 6 is returned. - */ -static unsigned int bcma_core_mips_irq(struct bcma_device *dev) -{ - struct bcma_device *mdev = dev->bus->drv_mips.core; - u32 irqflag; - unsigned int irq; - - irqflag = bcma_core_mips_irqflag(dev); - if (irqflag == 0x3f) - return 6; - - for (irq = 0; irq <= 4; irq++) - if (bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(irq)) & - (1 << irqflag)) - return irq; - - return 5; -} - -unsigned int bcma_core_irq(struct bcma_device *dev) -{ - unsigned int mips_irq = bcma_core_mips_irq(dev); - return mips_irq <= 4 ? mips_irq + 2 : 0; -} -EXPORT_SYMBOL(bcma_core_irq); - -static void bcma_core_mips_set_irq(struct bcma_device *dev, unsigned int irq) -{ - unsigned int oldirq = bcma_core_mips_irq(dev); - struct bcma_bus *bus = dev->bus; - struct bcma_device *mdev = bus->drv_mips.core; - u32 irqflag; - - irqflag = bcma_core_mips_irqflag(dev); - BUG_ON(oldirq == 6); - - dev->irq = irq + 2; - - /* clear the old irq */ - if (oldirq == 0) - bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0), - bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0)) & - ~(1 << irqflag)); - else if (oldirq != 5) - bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(oldirq), 0); - - /* assign the new one */ - if (irq == 0) { - bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0), - bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0)) | - (1 << irqflag)); - } else { - u32 irqinitmask = bcma_read32(mdev, - BCMA_MIPS_MIPS74K_INTMASK(irq)); - if (irqinitmask) { - struct bcma_device *core; - - /* backplane irq line is in use, find out who uses - * it and set user to irq 0 - */ - list_for_each_entry(core, &bus->cores, list) { - if ((1 << bcma_core_mips_irqflag(core)) == - irqinitmask) { - bcma_core_mips_set_irq(core, 0); - break; - } - } - } - bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(irq), - 1 << irqflag); - } - - bcma_debug(bus, "set_irq: core 0x%04x, irq %d => %d\n", - dev->id.id, oldirq <= 4 ? oldirq + 2 : 0, irq + 2); -} - -static void bcma_core_mips_set_irq_name(struct bcma_bus *bus, unsigned int irq, - u16 coreid, u8 unit) -{ - struct bcma_device *core; - - core = bcma_find_core_unit(bus, coreid, unit); - if (!core) { - bcma_warn(bus, - "Can not find core (id: 0x%x, unit %i) for IRQ configuration.\n", - coreid, unit); - return; - } - - bcma_core_mips_set_irq(core, irq); -} - -static void bcma_core_mips_print_irq(struct bcma_device *dev, unsigned int irq) -{ - int i; - static const char *irq_name[] = {"2(S)", "3", "4", "5", "6", "D", "I"}; - printk(KERN_DEBUG KBUILD_MODNAME ": core 0x%04x, irq :", dev->id.id); - for (i = 0; i <= 6; i++) - printk(" %s%s", irq_name[i], i == irq ? "*" : " "); - printk("\n"); -} - -static void bcma_core_mips_dump_irq(struct bcma_bus *bus) -{ - struct bcma_device *core; - - list_for_each_entry(core, &bus->cores, list) { - bcma_core_mips_print_irq(core, bcma_core_mips_irq(core)); - } -} - -u32 bcma_cpu_clock(struct bcma_drv_mips *mcore) -{ - struct bcma_bus *bus = mcore->core->bus; - - if (bus->drv_cc.capabilities & BCMA_CC_CAP_PMU) - return bcma_pmu_get_cpu_clock(&bus->drv_cc); - - bcma_err(bus, "No PMU available, need this to get the cpu clock\n"); - return 0; -} -EXPORT_SYMBOL(bcma_cpu_clock); - -static void bcma_core_mips_flash_detect(struct bcma_drv_mips *mcore) -{ - struct bcma_bus *bus = mcore->core->bus; - struct bcma_drv_cc *cc = &bus->drv_cc; - struct bcma_pflash *pflash = &cc->pflash; - - switch (cc->capabilities & BCMA_CC_CAP_FLASHT) { - case BCMA_CC_FLASHT_STSER: - case BCMA_CC_FLASHT_ATSER: - bcma_debug(bus, "Found serial flash\n"); - bcma_sflash_init(cc); - break; - case BCMA_CC_FLASHT_PARA: - bcma_debug(bus, "Found parallel flash\n"); - pflash->present = true; - pflash->window = BCMA_SOC_FLASH2; - pflash->window_size = BCMA_SOC_FLASH2_SZ; - - if ((bcma_read32(cc->core, BCMA_CC_FLASH_CFG) & - BCMA_CC_FLASH_CFG_DS) == 0) - pflash->buswidth = 1; - else - pflash->buswidth = 2; - - bcma_pflash_data.width = pflash->buswidth; - bcma_pflash_resource.start = pflash->window; - bcma_pflash_resource.end = pflash->window + pflash->window_size; - - break; - default: - bcma_err(bus, "Flash type not supported\n"); - } - - if (cc->core->id.rev == 38 || - bus->chipinfo.id == BCMA_CHIP_ID_BCM4706) { - if (cc->capabilities & BCMA_CC_CAP_NFLASH) { - bcma_debug(bus, "Found NAND flash\n"); - bcma_nflash_init(cc); - } - } -} - -void bcma_core_mips_early_init(struct bcma_drv_mips *mcore) -{ - struct bcma_bus *bus = mcore->core->bus; - - if (mcore->early_setup_done) - return; - - bcma_chipco_serial_init(&bus->drv_cc); - bcma_core_mips_flash_detect(mcore); - - mcore->early_setup_done = true; -} - -static void bcma_fix_i2s_irqflag(struct bcma_bus *bus) -{ - struct bcma_device *cpu, *pcie, *i2s; - - /* Fixup the interrupts in 4716/4748 for i2s core (2010 Broadcom SDK) - * (IRQ flags > 7 are ignored when setting the interrupt masks) - */ - if (bus->chipinfo.id != BCMA_CHIP_ID_BCM4716 && - bus->chipinfo.id != BCMA_CHIP_ID_BCM4748) - return; - - cpu = bcma_find_core(bus, BCMA_CORE_MIPS_74K); - pcie = bcma_find_core(bus, BCMA_CORE_PCIE); - i2s = bcma_find_core(bus, BCMA_CORE_I2S); - if (cpu && pcie && i2s && - bcma_aread32(cpu, BCMA_MIPS_OOBSELINA74) == 0x08060504 && - bcma_aread32(pcie, BCMA_MIPS_OOBSELINA74) == 0x08060504 && - bcma_aread32(i2s, BCMA_MIPS_OOBSELOUTA30) == 0x88) { - bcma_awrite32(cpu, BCMA_MIPS_OOBSELINA74, 0x07060504); - bcma_awrite32(pcie, BCMA_MIPS_OOBSELINA74, 0x07060504); - bcma_awrite32(i2s, BCMA_MIPS_OOBSELOUTA30, 0x87); - bcma_debug(bus, - "Moved i2s interrupt to oob line 7 instead of 8\n"); - } -} - -void bcma_core_mips_init(struct bcma_drv_mips *mcore) -{ - struct bcma_bus *bus; - struct bcma_device *core; - bus = mcore->core->bus; - - if (mcore->setup_done) - return; - - bcma_debug(bus, "Initializing MIPS core...\n"); - - bcma_core_mips_early_init(mcore); - - bcma_fix_i2s_irqflag(bus); - - switch (bus->chipinfo.id) { - case BCMA_CHIP_ID_BCM4716: - case BCMA_CHIP_ID_BCM4748: - bcma_core_mips_set_irq_name(bus, 1, BCMA_CORE_80211, 0); - bcma_core_mips_set_irq_name(bus, 2, BCMA_CORE_MAC_GBIT, 0); - bcma_core_mips_set_irq_name(bus, 3, BCMA_CORE_USB20_HOST, 0); - bcma_core_mips_set_irq_name(bus, 4, BCMA_CORE_PCIE, 0); - bcma_core_mips_set_irq_name(bus, 0, BCMA_CORE_CHIPCOMMON, 0); - bcma_core_mips_set_irq_name(bus, 0, BCMA_CORE_I2S, 0); - break; - case BCMA_CHIP_ID_BCM5356: - case BCMA_CHIP_ID_BCM47162: - case BCMA_CHIP_ID_BCM53572: - bcma_core_mips_set_irq_name(bus, 1, BCMA_CORE_80211, 0); - bcma_core_mips_set_irq_name(bus, 2, BCMA_CORE_MAC_GBIT, 0); - bcma_core_mips_set_irq_name(bus, 0, BCMA_CORE_CHIPCOMMON, 0); - break; - case BCMA_CHIP_ID_BCM5357: - case BCMA_CHIP_ID_BCM4749: - bcma_core_mips_set_irq_name(bus, 1, BCMA_CORE_80211, 0); - bcma_core_mips_set_irq_name(bus, 2, BCMA_CORE_MAC_GBIT, 0); - bcma_core_mips_set_irq_name(bus, 3, BCMA_CORE_USB20_HOST, 0); - bcma_core_mips_set_irq_name(bus, 0, BCMA_CORE_CHIPCOMMON, 0); - bcma_core_mips_set_irq_name(bus, 0, BCMA_CORE_I2S, 0); - break; - case BCMA_CHIP_ID_BCM4706: - bcma_core_mips_set_irq_name(bus, 1, BCMA_CORE_PCIE, 0); - bcma_core_mips_set_irq_name(bus, 2, BCMA_CORE_4706_MAC_GBIT, - 0); - bcma_core_mips_set_irq_name(bus, 3, BCMA_CORE_PCIE, 1); - bcma_core_mips_set_irq_name(bus, 4, BCMA_CORE_USB20_HOST, 0); - bcma_core_mips_set_irq_name(bus, 0, BCMA_CORE_4706_CHIPCOMMON, - 0); - break; - default: - list_for_each_entry(core, &bus->cores, list) { - core->irq = bcma_core_irq(core); - } - bcma_err(bus, - "Unknown device (0x%x) found, can not configure IRQs\n", - bus->chipinfo.id); - } - bcma_debug(bus, "IRQ reconfiguration done\n"); - bcma_core_mips_dump_irq(bus); - - mcore->setup_done = true; -} diff --git a/drivers/bcma/driver_pci.c b/drivers/bcma/driver_pci.c deleted file mode 100644 index cf7a476..0000000 --- a/drivers/bcma/driver_pci.c +++ /dev/null @@ -1,277 +0,0 @@ -/* - * Broadcom specific AMBA - * PCI Core - * - * Copyright 2005, 2011, Broadcom Corporation - * Copyright 2006, 2007, Michael Buesch - * Copyright 2011, 2012, Hauke Mehrtens - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" -#include -#include - -/************************************************** - * R/W ops. - **************************************************/ - -u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address) -{ - pcicore_write32(pc, BCMA_CORE_PCI_PCIEIND_ADDR, address); - pcicore_read32(pc, BCMA_CORE_PCI_PCIEIND_ADDR); - return pcicore_read32(pc, BCMA_CORE_PCI_PCIEIND_DATA); -} - -static void bcma_pcie_write(struct bcma_drv_pci *pc, u32 address, u32 data) -{ - pcicore_write32(pc, BCMA_CORE_PCI_PCIEIND_ADDR, address); - pcicore_read32(pc, BCMA_CORE_PCI_PCIEIND_ADDR); - pcicore_write32(pc, BCMA_CORE_PCI_PCIEIND_DATA, data); -} - -static void bcma_pcie_mdio_set_phy(struct bcma_drv_pci *pc, u8 phy) -{ - u32 v; - int i; - - v = BCMA_CORE_PCI_MDIODATA_START; - v |= BCMA_CORE_PCI_MDIODATA_WRITE; - v |= (BCMA_CORE_PCI_MDIODATA_DEV_ADDR << - BCMA_CORE_PCI_MDIODATA_DEVADDR_SHF); - v |= (BCMA_CORE_PCI_MDIODATA_BLK_ADDR << - BCMA_CORE_PCI_MDIODATA_REGADDR_SHF); - v |= BCMA_CORE_PCI_MDIODATA_TA; - v |= (phy << 4); - pcicore_write32(pc, BCMA_CORE_PCI_MDIO_DATA, v); - - udelay(10); - for (i = 0; i < 200; i++) { - v = pcicore_read32(pc, BCMA_CORE_PCI_MDIO_CONTROL); - if (v & BCMA_CORE_PCI_MDIOCTL_ACCESS_DONE) - break; - usleep_range(1000, 2000); - } -} - -static u16 bcma_pcie_mdio_read(struct bcma_drv_pci *pc, u8 device, u8 address) -{ - int max_retries = 10; - u16 ret = 0; - u32 v; - int i; - - /* enable mdio access to SERDES */ - v = BCMA_CORE_PCI_MDIOCTL_PREAM_EN; - v |= BCMA_CORE_PCI_MDIOCTL_DIVISOR_VAL; - pcicore_write32(pc, BCMA_CORE_PCI_MDIO_CONTROL, v); - - if (pc->core->id.rev >= 10) { - max_retries = 200; - bcma_pcie_mdio_set_phy(pc, device); - v = (BCMA_CORE_PCI_MDIODATA_DEV_ADDR << - BCMA_CORE_PCI_MDIODATA_DEVADDR_SHF); - v |= (address << BCMA_CORE_PCI_MDIODATA_REGADDR_SHF); - } else { - v = (device << BCMA_CORE_PCI_MDIODATA_DEVADDR_SHF_OLD); - v |= (address << BCMA_CORE_PCI_MDIODATA_REGADDR_SHF_OLD); - } - - v = BCMA_CORE_PCI_MDIODATA_START; - v |= BCMA_CORE_PCI_MDIODATA_READ; - v |= BCMA_CORE_PCI_MDIODATA_TA; - - pcicore_write32(pc, BCMA_CORE_PCI_MDIO_DATA, v); - /* Wait for the device to complete the transaction */ - udelay(10); - for (i = 0; i < max_retries; i++) { - v = pcicore_read32(pc, BCMA_CORE_PCI_MDIO_CONTROL); - if (v & BCMA_CORE_PCI_MDIOCTL_ACCESS_DONE) { - udelay(10); - ret = pcicore_read32(pc, BCMA_CORE_PCI_MDIO_DATA); - break; - } - usleep_range(1000, 2000); - } - pcicore_write32(pc, BCMA_CORE_PCI_MDIO_CONTROL, 0); - return ret; -} - -static void bcma_pcie_mdio_write(struct bcma_drv_pci *pc, u8 device, - u8 address, u16 data) -{ - int max_retries = 10; - u32 v; - int i; - - /* enable mdio access to SERDES */ - v = BCMA_CORE_PCI_MDIOCTL_PREAM_EN; - v |= BCMA_CORE_PCI_MDIOCTL_DIVISOR_VAL; - pcicore_write32(pc, BCMA_CORE_PCI_MDIO_CONTROL, v); - - if (pc->core->id.rev >= 10) { - max_retries = 200; - bcma_pcie_mdio_set_phy(pc, device); - v = (BCMA_CORE_PCI_MDIODATA_DEV_ADDR << - BCMA_CORE_PCI_MDIODATA_DEVADDR_SHF); - v |= (address << BCMA_CORE_PCI_MDIODATA_REGADDR_SHF); - } else { - v = (device << BCMA_CORE_PCI_MDIODATA_DEVADDR_SHF_OLD); - v |= (address << BCMA_CORE_PCI_MDIODATA_REGADDR_SHF_OLD); - } - - v = BCMA_CORE_PCI_MDIODATA_START; - v |= BCMA_CORE_PCI_MDIODATA_WRITE; - v |= BCMA_CORE_PCI_MDIODATA_TA; - v |= data; - pcicore_write32(pc, BCMA_CORE_PCI_MDIO_DATA, v); - /* Wait for the device to complete the transaction */ - udelay(10); - for (i = 0; i < max_retries; i++) { - v = pcicore_read32(pc, BCMA_CORE_PCI_MDIO_CONTROL); - if (v & BCMA_CORE_PCI_MDIOCTL_ACCESS_DONE) - break; - usleep_range(1000, 2000); - } - pcicore_write32(pc, BCMA_CORE_PCI_MDIO_CONTROL, 0); -} - -/************************************************** - * Workarounds. - **************************************************/ - -static u8 bcma_pcicore_polarity_workaround(struct bcma_drv_pci *pc) -{ - u32 tmp; - - tmp = bcma_pcie_read(pc, BCMA_CORE_PCI_PLP_STATUSREG); - if (tmp & BCMA_CORE_PCI_PLP_POLARITYINV_STAT) - return BCMA_CORE_PCI_SERDES_RX_CTRL_FORCE | - BCMA_CORE_PCI_SERDES_RX_CTRL_POLARITY; - else - return BCMA_CORE_PCI_SERDES_RX_CTRL_FORCE; -} - -static void bcma_pcicore_serdes_workaround(struct bcma_drv_pci *pc) -{ - u16 tmp; - - bcma_pcie_mdio_write(pc, BCMA_CORE_PCI_MDIODATA_DEV_RX, - BCMA_CORE_PCI_SERDES_RX_CTRL, - bcma_pcicore_polarity_workaround(pc)); - tmp = bcma_pcie_mdio_read(pc, BCMA_CORE_PCI_MDIODATA_DEV_PLL, - BCMA_CORE_PCI_SERDES_PLL_CTRL); - if (tmp & BCMA_CORE_PCI_PLL_CTRL_FREQDET_EN) - bcma_pcie_mdio_write(pc, BCMA_CORE_PCI_MDIODATA_DEV_PLL, - BCMA_CORE_PCI_SERDES_PLL_CTRL, - tmp & ~BCMA_CORE_PCI_PLL_CTRL_FREQDET_EN); -} - -static void bcma_core_pci_fixcfg(struct bcma_drv_pci *pc) -{ - struct bcma_device *core = pc->core; - u16 val16, core_index; - uint regoff; - - regoff = BCMA_CORE_PCI_SPROM(BCMA_CORE_PCI_SPROM_PI_OFFSET); - core_index = (u16)core->core_index; - - val16 = pcicore_read16(pc, regoff); - if (((val16 & BCMA_CORE_PCI_SPROM_PI_MASK) >> BCMA_CORE_PCI_SPROM_PI_SHIFT) - != core_index) { - val16 = (core_index << BCMA_CORE_PCI_SPROM_PI_SHIFT) | - (val16 & ~BCMA_CORE_PCI_SPROM_PI_MASK); - pcicore_write16(pc, regoff, val16); - } -} - -/* Fix MISC config to allow coming out of L2/L3-Ready state w/o PRST */ -/* Needs to happen when coming out of 'standby'/'hibernate' */ -static void bcma_core_pci_config_fixup(struct bcma_drv_pci *pc) -{ - u16 val16; - uint regoff; - - regoff = BCMA_CORE_PCI_SPROM(BCMA_CORE_PCI_SPROM_MISC_CONFIG); - - val16 = pcicore_read16(pc, regoff); - - if (!(val16 & BCMA_CORE_PCI_SPROM_L23READY_EXIT_NOPERST)) { - val16 |= BCMA_CORE_PCI_SPROM_L23READY_EXIT_NOPERST; - pcicore_write16(pc, regoff, val16); - } -} - -/************************************************** - * Init. - **************************************************/ - -static void bcma_core_pci_clientmode_init(struct bcma_drv_pci *pc) -{ - bcma_core_pci_fixcfg(pc); - bcma_pcicore_serdes_workaround(pc); - bcma_core_pci_config_fixup(pc); -} - -void bcma_core_pci_init(struct bcma_drv_pci *pc) -{ - if (pc->setup_done) - return; - -#ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE - pc->hostmode = bcma_core_pci_is_in_hostmode(pc); - if (pc->hostmode) - bcma_core_pci_hostmode_init(pc); -#endif /* CONFIG_BCMA_DRIVER_PCI_HOSTMODE */ - - if (!pc->hostmode) - bcma_core_pci_clientmode_init(pc); -} - -int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core, - bool enable) -{ - struct pci_dev *pdev; - u32 coremask, tmp; - int err = 0; - - if (!pc || core->bus->hosttype != BCMA_HOSTTYPE_PCI) { - /* This bcma device is not on a PCI host-bus. So the IRQs are - * not routed through the PCI core. - * So we must not enable routing through the PCI core. */ - goto out; - } - - pdev = pc->core->bus->host_pci; - - err = pci_read_config_dword(pdev, BCMA_PCI_IRQMASK, &tmp); - if (err) - goto out; - - coremask = BIT(core->core_index) << 8; - if (enable) - tmp |= coremask; - else - tmp &= ~coremask; - - err = pci_write_config_dword(pdev, BCMA_PCI_IRQMASK, tmp); - -out: - return err; -} -EXPORT_SYMBOL_GPL(bcma_core_pci_irq_ctl); - -void bcma_core_pci_extend_L1timer(struct bcma_drv_pci *pc, bool extend) -{ - u32 w; - - w = bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG); - if (extend) - w |= BCMA_CORE_PCI_ASPMTIMER_EXTEND; - else - w &= ~BCMA_CORE_PCI_ASPMTIMER_EXTEND; - bcma_pcie_write(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG, w); - bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG); -} -EXPORT_SYMBOL_GPL(bcma_core_pci_extend_L1timer); diff --git a/drivers/bcma/driver_pci_host.c b/drivers/bcma/driver_pci_host.c deleted file mode 100644 index 30629a3..0000000 --- a/drivers/bcma/driver_pci_host.c +++ /dev/null @@ -1,616 +0,0 @@ -/* - * Broadcom specific AMBA - * PCI Core in hostmode - * - * Copyright 2005 - 2011, Broadcom Corporation - * Copyright 2006, 2007, Michael Buesch - * Copyright 2011, 2012, Hauke Mehrtens - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" -#include -#include -#include -#include - -/* Probe a 32bit value on the bus and catch bus exceptions. - * Returns nonzero on a bus exception. - * This is MIPS specific */ -#define mips_busprobe32(val, addr) get_dbe((val), ((u32 *)(addr))) - -/* Assume one-hot slot wiring */ -#define BCMA_PCI_SLOT_MAX 16 -#define PCI_CONFIG_SPACE_SIZE 256 - -bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc) -{ - struct bcma_bus *bus = pc->core->bus; - u16 chipid_top; - u32 tmp; - - chipid_top = (bus->chipinfo.id & 0xFF00); - if (chipid_top != 0x4700 && - chipid_top != 0x5300) - return false; - - bcma_core_enable(pc->core, 0); - - return !mips_busprobe32(tmp, pc->core->io_addr); -} - -static u32 bcma_pcie_read_config(struct bcma_drv_pci *pc, u32 address) -{ - pcicore_write32(pc, BCMA_CORE_PCI_CONFIG_ADDR, address); - pcicore_read32(pc, BCMA_CORE_PCI_CONFIG_ADDR); - return pcicore_read32(pc, BCMA_CORE_PCI_CONFIG_DATA); -} - -static void bcma_pcie_write_config(struct bcma_drv_pci *pc, u32 address, - u32 data) -{ - pcicore_write32(pc, BCMA_CORE_PCI_CONFIG_ADDR, address); - pcicore_read32(pc, BCMA_CORE_PCI_CONFIG_ADDR); - pcicore_write32(pc, BCMA_CORE_PCI_CONFIG_DATA, data); -} - -static u32 bcma_get_cfgspace_addr(struct bcma_drv_pci *pc, unsigned int dev, - unsigned int func, unsigned int off) -{ - u32 addr = 0; - - /* Issue config commands only when the data link is up (atleast - * one external pcie device is present). - */ - if (dev >= 2 || !(bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_LSREG) - & BCMA_CORE_PCI_DLLP_LSREG_LINKUP)) - goto out; - - /* Type 0 transaction */ - /* Slide the PCI window to the appropriate slot */ - pcicore_write32(pc, BCMA_CORE_PCI_SBTOPCI1, BCMA_CORE_PCI_SBTOPCI_CFG0); - /* Calculate the address */ - addr = pc->host_controller->host_cfg_addr; - addr |= (dev << BCMA_CORE_PCI_CFG_SLOT_SHIFT); - addr |= (func << BCMA_CORE_PCI_CFG_FUN_SHIFT); - addr |= (off & ~3); - -out: - return addr; -} - -static int bcma_extpci_read_config(struct bcma_drv_pci *pc, unsigned int dev, - unsigned int func, unsigned int off, - void *buf, int len) -{ - int err = -EINVAL; - u32 addr, val; - void __iomem *mmio = 0; - - WARN_ON(!pc->hostmode); - if (unlikely(len != 1 && len != 2 && len != 4)) - goto out; - if (dev == 0) { - /* we support only two functions on device 0 */ - if (func > 1) - goto out; - - /* accesses to config registers with offsets >= 256 - * requires indirect access. - */ - if (off >= PCI_CONFIG_SPACE_SIZE) { - addr = (func << 12); - addr |= (off & 0x0FFC); - val = bcma_pcie_read_config(pc, addr); - } else { - addr = BCMA_CORE_PCI_PCICFG0; - addr |= (func << 8); - addr |= (off & 0xFC); - val = pcicore_read32(pc, addr); - } - } else { - addr = bcma_get_cfgspace_addr(pc, dev, func, off); - if (unlikely(!addr)) - goto out; - err = -ENOMEM; - mmio = ioremap_nocache(addr, sizeof(val)); - if (!mmio) - goto out; - - if (mips_busprobe32(val, mmio)) { - val = 0xFFFFFFFF; - goto unmap; - } - } - val >>= (8 * (off & 3)); - - switch (len) { - case 1: - *((u8 *)buf) = (u8)val; - break; - case 2: - *((u16 *)buf) = (u16)val; - break; - case 4: - *((u32 *)buf) = (u32)val; - break; - } - err = 0; -unmap: - if (mmio) - iounmap(mmio); -out: - return err; -} - -static int bcma_extpci_write_config(struct bcma_drv_pci *pc, unsigned int dev, - unsigned int func, unsigned int off, - const void *buf, int len) -{ - int err = -EINVAL; - u32 addr, val; - void __iomem *mmio = 0; - u16 chipid = pc->core->bus->chipinfo.id; - - WARN_ON(!pc->hostmode); - if (unlikely(len != 1 && len != 2 && len != 4)) - goto out; - if (dev == 0) { - /* we support only two functions on device 0 */ - if (func > 1) - goto out; - - /* accesses to config registers with offsets >= 256 - * requires indirect access. - */ - if (off >= PCI_CONFIG_SPACE_SIZE) { - addr = (func << 12); - addr |= (off & 0x0FFC); - val = bcma_pcie_read_config(pc, addr); - } else { - addr = BCMA_CORE_PCI_PCICFG0; - addr |= (func << 8); - addr |= (off & 0xFC); - val = pcicore_read32(pc, addr); - } - } else { - addr = bcma_get_cfgspace_addr(pc, dev, func, off); - if (unlikely(!addr)) - goto out; - err = -ENOMEM; - mmio = ioremap_nocache(addr, sizeof(val)); - if (!mmio) - goto out; - - if (mips_busprobe32(val, mmio)) { - val = 0xFFFFFFFF; - goto unmap; - } - } - - switch (len) { - case 1: - val &= ~(0xFF << (8 * (off & 3))); - val |= *((const u8 *)buf) << (8 * (off & 3)); - break; - case 2: - val &= ~(0xFFFF << (8 * (off & 3))); - val |= *((const u16 *)buf) << (8 * (off & 3)); - break; - case 4: - val = *((const u32 *)buf); - break; - } - if (dev == 0) { - /* accesses to config registers with offsets >= 256 - * requires indirect access. - */ - if (off >= PCI_CONFIG_SPACE_SIZE) - bcma_pcie_write_config(pc, addr, val); - else - pcicore_write32(pc, addr, val); - } else { - writel(val, mmio); - - if (chipid == BCMA_CHIP_ID_BCM4716 || - chipid == BCMA_CHIP_ID_BCM4748) - readl(mmio); - } - - err = 0; -unmap: - if (mmio) - iounmap(mmio); -out: - return err; -} - -static int bcma_core_pci_hostmode_read_config(struct pci_bus *bus, - unsigned int devfn, - int reg, int size, u32 *val) -{ - unsigned long flags; - int err; - struct bcma_drv_pci *pc; - struct bcma_drv_pci_host *pc_host; - - pc_host = container_of(bus->ops, struct bcma_drv_pci_host, pci_ops); - pc = pc_host->pdev; - - spin_lock_irqsave(&pc_host->cfgspace_lock, flags); - err = bcma_extpci_read_config(pc, PCI_SLOT(devfn), - PCI_FUNC(devfn), reg, val, size); - spin_unlock_irqrestore(&pc_host->cfgspace_lock, flags); - - return err ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL; -} - -static int bcma_core_pci_hostmode_write_config(struct pci_bus *bus, - unsigned int devfn, - int reg, int size, u32 val) -{ - unsigned long flags; - int err; - struct bcma_drv_pci *pc; - struct bcma_drv_pci_host *pc_host; - - pc_host = container_of(bus->ops, struct bcma_drv_pci_host, pci_ops); - pc = pc_host->pdev; - - spin_lock_irqsave(&pc_host->cfgspace_lock, flags); - err = bcma_extpci_write_config(pc, PCI_SLOT(devfn), - PCI_FUNC(devfn), reg, &val, size); - spin_unlock_irqrestore(&pc_host->cfgspace_lock, flags); - - return err ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL; -} - -/* return cap_offset if requested capability exists in the PCI config space */ -static u8 bcma_find_pci_capability(struct bcma_drv_pci *pc, unsigned int dev, - unsigned int func, u8 req_cap_id, - unsigned char *buf, u32 *buflen) -{ - u8 cap_id; - u8 cap_ptr = 0; - u32 bufsize; - u8 byte_val; - - /* check for Header type 0 */ - bcma_extpci_read_config(pc, dev, func, PCI_HEADER_TYPE, &byte_val, - sizeof(u8)); - if ((byte_val & 0x7F) != PCI_HEADER_TYPE_NORMAL) - return cap_ptr; - - /* check if the capability pointer field exists */ - bcma_extpci_read_config(pc, dev, func, PCI_STATUS, &byte_val, - sizeof(u8)); - if (!(byte_val & PCI_STATUS_CAP_LIST)) - return cap_ptr; - - /* check if the capability pointer is 0x00 */ - bcma_extpci_read_config(pc, dev, func, PCI_CAPABILITY_LIST, &cap_ptr, - sizeof(u8)); - if (cap_ptr == 0x00) - return cap_ptr; - - /* loop thr'u the capability list and see if the requested capabilty - * exists */ - bcma_extpci_read_config(pc, dev, func, cap_ptr, &cap_id, sizeof(u8)); - while (cap_id != req_cap_id) { - bcma_extpci_read_config(pc, dev, func, cap_ptr + 1, &cap_ptr, - sizeof(u8)); - if (cap_ptr == 0x00) - return cap_ptr; - bcma_extpci_read_config(pc, dev, func, cap_ptr, &cap_id, - sizeof(u8)); - } - - /* found the caller requested capability */ - if ((buf != NULL) && (buflen != NULL)) { - u8 cap_data; - - bufsize = *buflen; - if (!bufsize) - return cap_ptr; - - *buflen = 0; - - /* copy the cpability data excluding cap ID and next ptr */ - cap_data = cap_ptr + 2; - if ((bufsize + cap_data) > PCI_CONFIG_SPACE_SIZE) - bufsize = PCI_CONFIG_SPACE_SIZE - cap_data; - *buflen = bufsize; - while (bufsize--) { - bcma_extpci_read_config(pc, dev, func, cap_data, buf, - sizeof(u8)); - cap_data++; - buf++; - } - } - - return cap_ptr; -} - -/* If the root port is capable of returning Config Request - * Retry Status (CRS) Completion Status to software then - * enable the feature. - */ -static void bcma_core_pci_enable_crs(struct bcma_drv_pci *pc) -{ - struct bcma_bus *bus = pc->core->bus; - u8 cap_ptr, root_ctrl, root_cap, dev; - u16 val16; - int i; - - cap_ptr = bcma_find_pci_capability(pc, 0, 0, PCI_CAP_ID_EXP, NULL, - NULL); - root_cap = cap_ptr + PCI_EXP_RTCAP; - bcma_extpci_read_config(pc, 0, 0, root_cap, &val16, sizeof(u16)); - if (val16 & BCMA_CORE_PCI_RC_CRS_VISIBILITY) { - /* Enable CRS software visibility */ - root_ctrl = cap_ptr + PCI_EXP_RTCTL; - val16 = PCI_EXP_RTCTL_CRSSVE; - bcma_extpci_read_config(pc, 0, 0, root_ctrl, &val16, - sizeof(u16)); - - /* Initiate a configuration request to read the vendor id - * field of the device function's config space header after - * 100 ms wait time from the end of Reset. If the device is - * not done with its internal initialization, it must at - * least return a completion TLP, with a completion status - * of "Configuration Request Retry Status (CRS)". The root - * complex must complete the request to the host by returning - * a read-data value of 0001h for the Vendor ID field and - * all 1s for any additional bytes included in the request. - * Poll using the config reads for max wait time of 1 sec or - * until we receive the successful completion status. Repeat - * the procedure for all the devices. - */ - for (dev = 1; dev < BCMA_PCI_SLOT_MAX; dev++) { - for (i = 0; i < 100000; i++) { - bcma_extpci_read_config(pc, dev, 0, - PCI_VENDOR_ID, &val16, - sizeof(val16)); - if (val16 != 0x1) - break; - udelay(10); - } - if (val16 == 0x1) - bcma_err(bus, "PCI: Broken device in slot %d\n", - dev); - } - } -} - -void bcma_core_pci_hostmode_init(struct bcma_drv_pci *pc) -{ - struct bcma_bus *bus = pc->core->bus; - struct bcma_drv_pci_host *pc_host; - u32 tmp; - u32 pci_membase_1G; - unsigned long io_map_base; - - bcma_info(bus, "PCIEcore in host mode found\n"); - - if (bus->sprom.boardflags_lo & BCMA_CORE_PCI_BFL_NOPCI) { - bcma_info(bus, "This PCIE core is disabled and not working\n"); - return; - } - - pc_host = kzalloc(sizeof(*pc_host), GFP_KERNEL); - if (!pc_host) { - bcma_err(bus, "can not allocate memory"); - return; - } - - spin_lock_init(&pc_host->cfgspace_lock); - - pc->host_controller = pc_host; - pc_host->pci_controller.io_resource = &pc_host->io_resource; - pc_host->pci_controller.mem_resource = &pc_host->mem_resource; - pc_host->pci_controller.pci_ops = &pc_host->pci_ops; - pc_host->pdev = pc; - - pci_membase_1G = BCMA_SOC_PCI_DMA; - pc_host->host_cfg_addr = BCMA_SOC_PCI_CFG; - - pc_host->pci_ops.read = bcma_core_pci_hostmode_read_config; - pc_host->pci_ops.write = bcma_core_pci_hostmode_write_config; - - pc_host->mem_resource.name = "BCMA PCIcore external memory", - pc_host->mem_resource.start = BCMA_SOC_PCI_DMA; - pc_host->mem_resource.end = BCMA_SOC_PCI_DMA + BCMA_SOC_PCI_DMA_SZ - 1; - pc_host->mem_resource.flags = IORESOURCE_MEM | IORESOURCE_PCI_FIXED; - - pc_host->io_resource.name = "BCMA PCIcore external I/O", - pc_host->io_resource.start = 0x100; - pc_host->io_resource.end = 0x7FF; - pc_host->io_resource.flags = IORESOURCE_IO | IORESOURCE_PCI_FIXED; - - /* Reset RC */ - usleep_range(3000, 5000); - pcicore_write32(pc, BCMA_CORE_PCI_CTL, BCMA_CORE_PCI_CTL_RST_OE); - msleep(50); - pcicore_write32(pc, BCMA_CORE_PCI_CTL, BCMA_CORE_PCI_CTL_RST | - BCMA_CORE_PCI_CTL_RST_OE); - - /* 64 MB I/O access window. On 4716, use - * sbtopcie0 to access the device registers. We - * can't use address match 2 (1 GB window) region - * as mips can't generate 64-bit address on the - * backplane. - */ - if (bus->chipinfo.id == BCMA_CHIP_ID_BCM4716 || - bus->chipinfo.id == BCMA_CHIP_ID_BCM4748) { - pc_host->mem_resource.start = BCMA_SOC_PCI_MEM; - pc_host->mem_resource.end = BCMA_SOC_PCI_MEM + - BCMA_SOC_PCI_MEM_SZ - 1; - pcicore_write32(pc, BCMA_CORE_PCI_SBTOPCI0, - BCMA_CORE_PCI_SBTOPCI_MEM | BCMA_SOC_PCI_MEM); - } else if (bus->chipinfo.id == BCMA_CHIP_ID_BCM4706) { - tmp = BCMA_CORE_PCI_SBTOPCI_MEM; - tmp |= BCMA_CORE_PCI_SBTOPCI_PREF; - tmp |= BCMA_CORE_PCI_SBTOPCI_BURST; - if (pc->core->core_unit == 0) { - pc_host->mem_resource.start = BCMA_SOC_PCI_MEM; - pc_host->mem_resource.end = BCMA_SOC_PCI_MEM + - BCMA_SOC_PCI_MEM_SZ - 1; - pc_host->io_resource.start = 0x100; - pc_host->io_resource.end = 0x47F; - pci_membase_1G = BCMA_SOC_PCIE_DMA_H32; - pcicore_write32(pc, BCMA_CORE_PCI_SBTOPCI0, - tmp | BCMA_SOC_PCI_MEM); - } else if (pc->core->core_unit == 1) { - pc_host->mem_resource.start = BCMA_SOC_PCI1_MEM; - pc_host->mem_resource.end = BCMA_SOC_PCI1_MEM + - BCMA_SOC_PCI_MEM_SZ - 1; - pc_host->io_resource.start = 0x480; - pc_host->io_resource.end = 0x7FF; - pci_membase_1G = BCMA_SOC_PCIE1_DMA_H32; - pc_host->host_cfg_addr = BCMA_SOC_PCI1_CFG; - pcicore_write32(pc, BCMA_CORE_PCI_SBTOPCI0, - tmp | BCMA_SOC_PCI1_MEM); - } - } else - pcicore_write32(pc, BCMA_CORE_PCI_SBTOPCI0, - BCMA_CORE_PCI_SBTOPCI_IO); - - /* 64 MB configuration access window */ - pcicore_write32(pc, BCMA_CORE_PCI_SBTOPCI1, BCMA_CORE_PCI_SBTOPCI_CFG0); - - /* 1 GB memory access window */ - pcicore_write32(pc, BCMA_CORE_PCI_SBTOPCI2, - BCMA_CORE_PCI_SBTOPCI_MEM | pci_membase_1G); - - - /* As per PCI Express Base Spec 1.1 we need to wait for - * at least 100 ms from the end of a reset (cold/warm/hot) - * before issuing configuration requests to PCI Express - * devices. - */ - msleep(100); - - bcma_core_pci_enable_crs(pc); - - if (bus->chipinfo.id == BCMA_CHIP_ID_BCM4706 || - bus->chipinfo.id == BCMA_CHIP_ID_BCM4716) { - u16 val16; - bcma_extpci_read_config(pc, 0, 0, BCMA_CORE_PCI_CFG_DEVCTRL, - &val16, sizeof(val16)); - val16 |= (2 << 5); /* Max payload size of 512 */ - val16 |= (2 << 12); /* MRRS 512 */ - bcma_extpci_write_config(pc, 0, 0, BCMA_CORE_PCI_CFG_DEVCTRL, - &val16, sizeof(val16)); - } - - /* Enable PCI bridge BAR0 memory & master access */ - tmp = PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY; - bcma_extpci_write_config(pc, 0, 0, PCI_COMMAND, &tmp, sizeof(tmp)); - - /* Enable PCI interrupts */ - pcicore_write32(pc, BCMA_CORE_PCI_IMASK, BCMA_CORE_PCI_IMASK_INTA); - - /* Ok, ready to run, register it to the system. - * The following needs change, if we want to port hostmode - * to non-MIPS platform. */ - io_map_base = (unsigned long)ioremap_nocache(pc_host->mem_resource.start, - resource_size(&pc_host->mem_resource)); - pc_host->pci_controller.io_map_base = io_map_base; - set_io_port_base(pc_host->pci_controller.io_map_base); - /* Give some time to the PCI controller to configure itself with the new - * values. Not waiting at this point causes crashes of the machine. */ - usleep_range(10000, 15000); - register_pci_controller(&pc_host->pci_controller); - return; -} - -/* Early PCI fixup for a device on the PCI-core bridge. */ -static void bcma_core_pci_fixup_pcibridge(struct pci_dev *dev) -{ - if (dev->bus->ops->read != bcma_core_pci_hostmode_read_config) { - /* This is not a device on the PCI-core bridge. */ - return; - } - if (PCI_SLOT(dev->devfn) != 0) - return; - - pr_info("PCI: Fixing up bridge %s\n", pci_name(dev)); - - /* Enable PCI bridge bus mastering and memory space */ - pci_set_master(dev); - if (pcibios_enable_device(dev, ~0) < 0) { - pr_err("PCI: BCMA bridge enable failed\n"); - return; - } - - /* Enable PCI bridge BAR1 prefetch and burst */ - pci_write_config_dword(dev, BCMA_PCI_BAR1_CONTROL, 3); -} -DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, bcma_core_pci_fixup_pcibridge); - -/* Early PCI fixup for all PCI-cores to set the correct memory address. */ -static void bcma_core_pci_fixup_addresses(struct pci_dev *dev) -{ - struct resource *res; - int pos, err; - - if (dev->bus->ops->read != bcma_core_pci_hostmode_read_config) { - /* This is not a device on the PCI-core bridge. */ - return; - } - if (PCI_SLOT(dev->devfn) == 0) - return; - - pr_info("PCI: Fixing up addresses %s\n", pci_name(dev)); - - for (pos = 0; pos < 6; pos++) { - res = &dev->resource[pos]; - if (res->flags & (IORESOURCE_IO | IORESOURCE_MEM)) { - err = pci_assign_resource(dev, pos); - if (err) - pr_err("PCI: Problem fixing up the addresses on %s\n", - pci_name(dev)); - } - } -} -DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, bcma_core_pci_fixup_addresses); - -/* This function is called when doing a pci_enable_device(). - * We must first check if the device is a device on the PCI-core bridge. */ -int bcma_core_pci_plat_dev_init(struct pci_dev *dev) -{ - struct bcma_drv_pci_host *pc_host; - - if (dev->bus->ops->read != bcma_core_pci_hostmode_read_config) { - /* This is not a device on the PCI-core bridge. */ - return -ENODEV; - } - pc_host = container_of(dev->bus->ops, struct bcma_drv_pci_host, - pci_ops); - - pr_info("PCI: Fixing up device %s\n", pci_name(dev)); - - /* Fix up interrupt lines */ - dev->irq = bcma_core_irq(pc_host->pdev->core); - pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq); - - return 0; -} -EXPORT_SYMBOL(bcma_core_pci_plat_dev_init); - -/* PCI device IRQ mapping. */ -int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev) -{ - struct bcma_drv_pci_host *pc_host; - - if (dev->bus->ops->read != bcma_core_pci_hostmode_read_config) { - /* This is not a device on the PCI-core bridge. */ - return -ENODEV; - } - - pc_host = container_of(dev->bus->ops, struct bcma_drv_pci_host, - pci_ops); - return bcma_core_irq(pc_host->pdev->core); -} -EXPORT_SYMBOL(bcma_core_pci_pcibios_map_irq); diff --git a/drivers/bcma/host_pci.c b/drivers/bcma/host_pci.c deleted file mode 100644 index 5e76bc3..0000000 --- a/drivers/bcma/host_pci.c +++ /dev/null @@ -1,307 +0,0 @@ -/* - * Broadcom specific AMBA - * PCI Host - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" -#include -#include -#include -#include - -static void bcma_host_pci_switch_core(struct bcma_device *core) -{ - pci_write_config_dword(core->bus->host_pci, BCMA_PCI_BAR0_WIN, - core->addr); - pci_write_config_dword(core->bus->host_pci, BCMA_PCI_BAR0_WIN2, - core->wrap); - core->bus->mapped_core = core; - bcma_debug(core->bus, "Switched to core: 0x%X\n", core->id.id); -} - -/* Provides access to the requested core. Returns base offset that has to be - * used. It makes use of fixed windows when possible. */ -static u16 bcma_host_pci_provide_access_to_core(struct bcma_device *core) -{ - switch (core->id.id) { - case BCMA_CORE_CHIPCOMMON: - return 3 * BCMA_CORE_SIZE; - case BCMA_CORE_PCIE: - return 2 * BCMA_CORE_SIZE; - } - - if (core->bus->mapped_core != core) - bcma_host_pci_switch_core(core); - return 0; -} - -static u8 bcma_host_pci_read8(struct bcma_device *core, u16 offset) -{ - offset += bcma_host_pci_provide_access_to_core(core); - return ioread8(core->bus->mmio + offset); -} - -static u16 bcma_host_pci_read16(struct bcma_device *core, u16 offset) -{ - offset += bcma_host_pci_provide_access_to_core(core); - return ioread16(core->bus->mmio + offset); -} - -static u32 bcma_host_pci_read32(struct bcma_device *core, u16 offset) -{ - offset += bcma_host_pci_provide_access_to_core(core); - return ioread32(core->bus->mmio + offset); -} - -static void bcma_host_pci_write8(struct bcma_device *core, u16 offset, - u8 value) -{ - offset += bcma_host_pci_provide_access_to_core(core); - iowrite8(value, core->bus->mmio + offset); -} - -static void bcma_host_pci_write16(struct bcma_device *core, u16 offset, - u16 value) -{ - offset += bcma_host_pci_provide_access_to_core(core); - iowrite16(value, core->bus->mmio + offset); -} - -static void bcma_host_pci_write32(struct bcma_device *core, u16 offset, - u32 value) -{ - offset += bcma_host_pci_provide_access_to_core(core); - iowrite32(value, core->bus->mmio + offset); -} - -#ifdef CONFIG_BCMA_BLOCKIO -static void bcma_host_pci_block_read(struct bcma_device *core, void *buffer, - size_t count, u16 offset, u8 reg_width) -{ - void __iomem *addr = core->bus->mmio + offset; - if (core->bus->mapped_core != core) - bcma_host_pci_switch_core(core); - switch (reg_width) { - case sizeof(u8): - ioread8_rep(addr, buffer, count); - break; - case sizeof(u16): - WARN_ON(count & 1); - ioread16_rep(addr, buffer, count >> 1); - break; - case sizeof(u32): - WARN_ON(count & 3); - ioread32_rep(addr, buffer, count >> 2); - break; - default: - WARN_ON(1); - } -} - -static void bcma_host_pci_block_write(struct bcma_device *core, - const void *buffer, size_t count, - u16 offset, u8 reg_width) -{ - void __iomem *addr = core->bus->mmio + offset; - if (core->bus->mapped_core != core) - bcma_host_pci_switch_core(core); - switch (reg_width) { - case sizeof(u8): - iowrite8_rep(addr, buffer, count); - break; - case sizeof(u16): - WARN_ON(count & 1); - iowrite16_rep(addr, buffer, count >> 1); - break; - case sizeof(u32): - WARN_ON(count & 3); - iowrite32_rep(addr, buffer, count >> 2); - break; - default: - WARN_ON(1); - } -} -#endif - -static u32 bcma_host_pci_aread32(struct bcma_device *core, u16 offset) -{ - if (core->bus->mapped_core != core) - bcma_host_pci_switch_core(core); - return ioread32(core->bus->mmio + (1 * BCMA_CORE_SIZE) + offset); -} - -static void bcma_host_pci_awrite32(struct bcma_device *core, u16 offset, - u32 value) -{ - if (core->bus->mapped_core != core) - bcma_host_pci_switch_core(core); - iowrite32(value, core->bus->mmio + (1 * BCMA_CORE_SIZE) + offset); -} - -static const struct bcma_host_ops bcma_host_pci_ops = { - .read8 = bcma_host_pci_read8, - .read16 = bcma_host_pci_read16, - .read32 = bcma_host_pci_read32, - .write8 = bcma_host_pci_write8, - .write16 = bcma_host_pci_write16, - .write32 = bcma_host_pci_write32, -#ifdef CONFIG_BCMA_BLOCKIO - .block_read = bcma_host_pci_block_read, - .block_write = bcma_host_pci_block_write, -#endif - .aread32 = bcma_host_pci_aread32, - .awrite32 = bcma_host_pci_awrite32, -}; - -static int bcma_host_pci_probe(struct pci_dev *dev, - const struct pci_device_id *id) -{ - struct bcma_bus *bus; - int err = -ENOMEM; - const char *name; - u32 val; - - /* Alloc */ - bus = kzalloc(sizeof(*bus), GFP_KERNEL); - if (!bus) - goto out; - - /* Basic PCI configuration */ - err = pci_enable_device(dev); - if (err) - goto err_kfree_bus; - - name = dev_name(&dev->dev); - if (dev->driver && dev->driver->name) - name = dev->driver->name; - err = pci_request_regions(dev, name); - if (err) - goto err_pci_disable; - pci_set_master(dev); - - /* Disable the RETRY_TIMEOUT register (0x41) to keep - * PCI Tx retries from interfering with C3 CPU state */ - pci_read_config_dword(dev, 0x40, &val); - if ((val & 0x0000ff00) != 0) - pci_write_config_dword(dev, 0x40, val & 0xffff00ff); - - /* SSB needed additional powering up, do we have any AMBA PCI cards? */ - if (!pci_is_pcie(dev)) - bcma_err(bus, "PCI card detected, report problems.\n"); - - /* Map MMIO */ - err = -ENOMEM; - bus->mmio = pci_iomap(dev, 0, ~0UL); - if (!bus->mmio) - goto err_pci_release_regions; - - /* Host specific */ - bus->host_pci = dev; - bus->hosttype = BCMA_HOSTTYPE_PCI; - bus->ops = &bcma_host_pci_ops; - - bus->boardinfo.vendor = bus->host_pci->subsystem_vendor; - bus->boardinfo.type = bus->host_pci->subsystem_device; - - /* Register */ - err = bcma_bus_register(bus); - if (err) - goto err_pci_unmap_mmio; - - pci_set_drvdata(dev, bus); - -out: - return err; - -err_pci_unmap_mmio: - pci_iounmap(dev, bus->mmio); -err_pci_release_regions: - pci_release_regions(dev); -err_pci_disable: - pci_disable_device(dev); -err_kfree_bus: - kfree(bus); - return err; -} - -static void bcma_host_pci_remove(struct pci_dev *dev) -{ - struct bcma_bus *bus = pci_get_drvdata(dev); - - bcma_bus_unregister(bus); - pci_iounmap(dev, bus->mmio); - pci_release_regions(dev); - pci_disable_device(dev); - kfree(bus); - pci_set_drvdata(dev, NULL); -} - -#ifdef CONFIG_PM_SLEEP -static int bcma_host_pci_suspend(struct device *dev) -{ - struct pci_dev *pdev = to_pci_dev(dev); - struct bcma_bus *bus = pci_get_drvdata(pdev); - - bus->mapped_core = NULL; - - return bcma_bus_suspend(bus); -} - -static int bcma_host_pci_resume(struct device *dev) -{ - struct pci_dev *pdev = to_pci_dev(dev); - struct bcma_bus *bus = pci_get_drvdata(pdev); - - return bcma_bus_resume(bus); -} - -compat_pci_suspend(bcma_host_pci_suspend) -compat_pci_resume(bcma_host_pci_resume) - -static SIMPLE_DEV_PM_OPS(bcma_pm_ops, bcma_host_pci_suspend, - bcma_host_pci_resume); -#define BCMA_PM_OPS (&bcma_pm_ops) - -#else /* CONFIG_PM_SLEEP */ - -#define BCMA_PM_OPS NULL - -#endif /* CONFIG_PM_SLEEP */ - -static DEFINE_PCI_DEVICE_TABLE(bcma_pci_bridge_tbl) = { - { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x0576) }, - { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 43224) }, - { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4331) }, - { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4353) }, - { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4357) }, - { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4358) }, - { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4359) }, - { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4727) }, - { 0, }, -}; -MODULE_DEVICE_TABLE(pci, bcma_pci_bridge_tbl); - -static struct pci_driver bcma_pci_bridge_driver = { - .name = "bcma-pci-bridge", - .id_table = bcma_pci_bridge_tbl, - .probe = bcma_host_pci_probe, - .remove = bcma_host_pci_remove, -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) - .driver.pm = BCMA_PM_OPS, -#elif defined(CONFIG_PM_SLEEP) - .suspend = bcma_host_pci_suspend_compat, - .resume = bcma_host_pci_resume_compat, -#endif -}; - -int __init bcma_host_pci_init(void) -{ - return pci_register_driver(&bcma_pci_bridge_driver); -} - -void __exit bcma_host_pci_exit(void) -{ - pci_unregister_driver(&bcma_pci_bridge_driver); -} diff --git a/drivers/bcma/host_soc.c b/drivers/bcma/host_soc.c deleted file mode 100644 index 3475e60..0000000 --- a/drivers/bcma/host_soc.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Broadcom specific AMBA - * System on Chip (SoC) Host - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" -#include "scan.h" -#include -#include - -static u8 bcma_host_soc_read8(struct bcma_device *core, u16 offset) -{ - return readb(core->io_addr + offset); -} - -static u16 bcma_host_soc_read16(struct bcma_device *core, u16 offset) -{ - return readw(core->io_addr + offset); -} - -static u32 bcma_host_soc_read32(struct bcma_device *core, u16 offset) -{ - return readl(core->io_addr + offset); -} - -static void bcma_host_soc_write8(struct bcma_device *core, u16 offset, - u8 value) -{ - writeb(value, core->io_addr + offset); -} - -static void bcma_host_soc_write16(struct bcma_device *core, u16 offset, - u16 value) -{ - writew(value, core->io_addr + offset); -} - -static void bcma_host_soc_write32(struct bcma_device *core, u16 offset, - u32 value) -{ - writel(value, core->io_addr + offset); -} - -#ifdef CONFIG_BCMA_BLOCKIO -static void bcma_host_soc_block_read(struct bcma_device *core, void *buffer, - size_t count, u16 offset, u8 reg_width) -{ - void __iomem *addr = core->io_addr + offset; - - switch (reg_width) { - case sizeof(u8): { - u8 *buf = buffer; - - while (count) { - *buf = __raw_readb(addr); - buf++; - count--; - } - break; - } - case sizeof(u16): { - __le16 *buf = buffer; - - WARN_ON(count & 1); - while (count) { - *buf = (__force __le16)__raw_readw(addr); - buf++; - count -= 2; - } - break; - } - case sizeof(u32): { - __le32 *buf = buffer; - - WARN_ON(count & 3); - while (count) { - *buf = (__force __le32)__raw_readl(addr); - buf++; - count -= 4; - } - break; - } - default: - WARN_ON(1); - } -} - -static void bcma_host_soc_block_write(struct bcma_device *core, - const void *buffer, - size_t count, u16 offset, u8 reg_width) -{ - void __iomem *addr = core->io_addr + offset; - - switch (reg_width) { - case sizeof(u8): { - const u8 *buf = buffer; - - while (count) { - __raw_writeb(*buf, addr); - buf++; - count--; - } - break; - } - case sizeof(u16): { - const __le16 *buf = buffer; - - WARN_ON(count & 1); - while (count) { - __raw_writew((__force u16)(*buf), addr); - buf++; - count -= 2; - } - break; - } - case sizeof(u32): { - const __le32 *buf = buffer; - - WARN_ON(count & 3); - while (count) { - __raw_writel((__force u32)(*buf), addr); - buf++; - count -= 4; - } - break; - } - default: - WARN_ON(1); - } -} -#endif /* CONFIG_BCMA_BLOCKIO */ - -static u32 bcma_host_soc_aread32(struct bcma_device *core, u16 offset) -{ - return readl(core->io_wrap + offset); -} - -static void bcma_host_soc_awrite32(struct bcma_device *core, u16 offset, - u32 value) -{ - writel(value, core->io_wrap + offset); -} - -static const struct bcma_host_ops bcma_host_soc_ops = { - .read8 = bcma_host_soc_read8, - .read16 = bcma_host_soc_read16, - .read32 = bcma_host_soc_read32, - .write8 = bcma_host_soc_write8, - .write16 = bcma_host_soc_write16, - .write32 = bcma_host_soc_write32, -#ifdef CONFIG_BCMA_BLOCKIO - .block_read = bcma_host_soc_block_read, - .block_write = bcma_host_soc_block_write, -#endif - .aread32 = bcma_host_soc_aread32, - .awrite32 = bcma_host_soc_awrite32, -}; - -int __init bcma_host_soc_register(struct bcma_soc *soc) -{ - struct bcma_bus *bus = &soc->bus; - int err; - - /* iomap only first core. We have to read some register on this core - * to scan the bus. - */ - bus->mmio = ioremap_nocache(BCMA_ADDR_BASE, BCMA_CORE_SIZE * 1); - if (!bus->mmio) - return -ENOMEM; - - /* Host specific */ - bus->hosttype = BCMA_HOSTTYPE_SOC; - bus->ops = &bcma_host_soc_ops; - - /* Register */ - err = bcma_bus_early_register(bus, &soc->core_cc, &soc->core_mips); - if (err) - iounmap(bus->mmio); - - return err; -} diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c deleted file mode 100644 index 9a6188a..0000000 --- a/drivers/bcma/main.c +++ /dev/null @@ -1,485 +0,0 @@ -/* - * Broadcom specific AMBA - * Bus subsystem - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" -#include -#include -#include -#include - -MODULE_DESCRIPTION("Broadcom's specific AMBA driver"); -MODULE_LICENSE("GPL"); - -/* contains the number the next bus should get. */ -static unsigned int bcma_bus_next_num = 0; - -/* bcma_buses_mutex locks the bcma_bus_next_num */ -static DEFINE_MUTEX(bcma_buses_mutex); - -static int bcma_bus_match(struct device *dev, struct device_driver *drv); -static int bcma_device_probe(struct device *dev); -static int bcma_device_remove(struct device *dev); -static int bcma_device_uevent(struct device *dev, struct kobj_uevent_env *env); - -static ssize_t manuf_show(struct device *dev, struct device_attribute *attr, char *buf) -{ - struct bcma_device *core = container_of(dev, struct bcma_device, dev); - return sprintf(buf, "0x%03X\n", core->id.manuf); -} -static ssize_t id_show(struct device *dev, struct device_attribute *attr, char *buf) -{ - struct bcma_device *core = container_of(dev, struct bcma_device, dev); - return sprintf(buf, "0x%03X\n", core->id.id); -} -static ssize_t rev_show(struct device *dev, struct device_attribute *attr, char *buf) -{ - struct bcma_device *core = container_of(dev, struct bcma_device, dev); - return sprintf(buf, "0x%02X\n", core->id.rev); -} -static ssize_t class_show(struct device *dev, struct device_attribute *attr, char *buf) -{ - struct bcma_device *core = container_of(dev, struct bcma_device, dev); - return sprintf(buf, "0x%X\n", core->id.class); -} -static struct device_attribute bcma_device_attrs[] = { - __ATTR_RO(manuf), - __ATTR_RO(id), - __ATTR_RO(rev), - __ATTR_RO(class), - __ATTR_NULL, -}; - -static struct bus_type bcma_bus_type = { - .name = "bcma", - .match = bcma_bus_match, - .probe = bcma_device_probe, - .remove = bcma_device_remove, - .uevent = bcma_device_uevent, - .dev_attrs = bcma_device_attrs, -}; - -static u16 bcma_cc_core_id(struct bcma_bus *bus) -{ - if (bus->chipinfo.id == BCMA_CHIP_ID_BCM4706) - return BCMA_CORE_4706_CHIPCOMMON; - return BCMA_CORE_CHIPCOMMON; -} - -struct bcma_device *bcma_find_core(struct bcma_bus *bus, u16 coreid) -{ - struct bcma_device *core; - - list_for_each_entry(core, &bus->cores, list) { - if (core->id.id == coreid) - return core; - } - return NULL; -} -EXPORT_SYMBOL_GPL(bcma_find_core); - -struct bcma_device *bcma_find_core_unit(struct bcma_bus *bus, u16 coreid, - u8 unit) -{ - struct bcma_device *core; - - list_for_each_entry(core, &bus->cores, list) { - if (core->id.id == coreid && core->core_unit == unit) - return core; - } - return NULL; -} - -static void bcma_release_core_dev(struct device *dev) -{ - struct bcma_device *core = container_of(dev, struct bcma_device, dev); - if (core->io_addr) - iounmap(core->io_addr); - if (core->io_wrap) - iounmap(core->io_wrap); - kfree(core); -} - -static int bcma_register_cores(struct bcma_bus *bus) -{ - struct bcma_device *core; - int err, dev_id = 0; - - list_for_each_entry(core, &bus->cores, list) { - /* We support that cores ourself */ - switch (core->id.id) { - case BCMA_CORE_4706_CHIPCOMMON: - case BCMA_CORE_CHIPCOMMON: - case BCMA_CORE_PCI: - case BCMA_CORE_PCIE: - case BCMA_CORE_MIPS_74K: - case BCMA_CORE_4706_MAC_GBIT_COMMON: - continue; - } - - core->dev.release = bcma_release_core_dev; - core->dev.bus = &bcma_bus_type; - dev_set_name(&core->dev, "bcma%d:%d", bus->num, dev_id); - - switch (bus->hosttype) { - case BCMA_HOSTTYPE_PCI: - core->dev.parent = &bus->host_pci->dev; - core->dma_dev = &bus->host_pci->dev; - core->irq = bus->host_pci->irq; - break; - case BCMA_HOSTTYPE_SOC: - core->dev.dma_mask = &core->dev.coherent_dma_mask; - core->dma_dev = &core->dev; - break; - case BCMA_HOSTTYPE_SDIO: - break; - } - - err = device_register(&core->dev); - if (err) { - bcma_err(bus, - "Could not register dev for core 0x%03X\n", - core->id.id); - continue; - } - core->dev_registered = true; - dev_id++; - } - -#ifdef CONFIG_BCMA_DRIVER_MIPS - if (bus->drv_cc.pflash.present) { - err = platform_device_register(&bcma_pflash_dev); - if (err) - bcma_err(bus, "Error registering parallel flash\n"); - } -#endif - -#ifdef CONFIG_BCMA_SFLASH - if (bus->drv_cc.sflash.present) { - err = platform_device_register(&bcma_sflash_dev); - if (err) - bcma_err(bus, "Error registering serial flash\n"); - } -#endif - -#ifdef CONFIG_BCMA_NFLASH - if (bus->drv_cc.nflash.present) { - err = platform_device_register(&bcma_nflash_dev); - if (err) - bcma_err(bus, "Error registering NAND flash\n"); - } -#endif - err = bcma_gpio_init(&bus->drv_cc); - if (err == -ENOTSUPP) - bcma_debug(bus, "GPIO driver not activated\n"); - else if (err) - bcma_err(bus, "Error registering GPIO driver: %i\n", err); - - if (bus->hosttype == BCMA_HOSTTYPE_SOC) { - err = bcma_chipco_watchdog_register(&bus->drv_cc); - if (err) - bcma_err(bus, "Error registering watchdog driver\n"); - } - - return 0; -} - -static void bcma_unregister_cores(struct bcma_bus *bus) -{ - struct bcma_device *core, *tmp; - - list_for_each_entry_safe(core, tmp, &bus->cores, list) { - list_del(&core->list); - if (core->dev_registered) - device_unregister(&core->dev); - } - if (bus->hosttype == BCMA_HOSTTYPE_SOC) - platform_device_unregister(bus->drv_cc.watchdog); -} - -int bcma_bus_register(struct bcma_bus *bus) -{ - int err; - struct bcma_device *core; - - mutex_lock(&bcma_buses_mutex); - bus->num = bcma_bus_next_num++; - mutex_unlock(&bcma_buses_mutex); - - /* Scan for devices (cores) */ - err = bcma_bus_scan(bus); - if (err) { - bcma_err(bus, "Failed to scan: %d\n", err); - return -1; - } - - /* Early init CC core */ - core = bcma_find_core(bus, bcma_cc_core_id(bus)); - if (core) { - bus->drv_cc.core = core; - bcma_core_chipcommon_early_init(&bus->drv_cc); - } - - /* Try to get SPROM */ - err = bcma_sprom_get(bus); - if (err == -ENOENT) { - bcma_err(bus, "No SPROM available\n"); - } else if (err) - bcma_err(bus, "Failed to get SPROM: %d\n", err); - - /* Init CC core */ - core = bcma_find_core(bus, bcma_cc_core_id(bus)); - if (core) { - bus->drv_cc.core = core; - bcma_core_chipcommon_init(&bus->drv_cc); - } - - /* Init MIPS core */ - core = bcma_find_core(bus, BCMA_CORE_MIPS_74K); - if (core) { - bus->drv_mips.core = core; - bcma_core_mips_init(&bus->drv_mips); - } - - /* Init PCIE core */ - core = bcma_find_core_unit(bus, BCMA_CORE_PCIE, 0); - if (core) { - bus->drv_pci[0].core = core; - bcma_core_pci_init(&bus->drv_pci[0]); - } - - /* Init PCIE core */ - core = bcma_find_core_unit(bus, BCMA_CORE_PCIE, 1); - if (core) { - bus->drv_pci[1].core = core; - bcma_core_pci_init(&bus->drv_pci[1]); - } - - /* Init GBIT MAC COMMON core */ - core = bcma_find_core(bus, BCMA_CORE_4706_MAC_GBIT_COMMON); - if (core) { - bus->drv_gmac_cmn.core = core; - bcma_core_gmac_cmn_init(&bus->drv_gmac_cmn); - } - - /* Register found cores */ - bcma_register_cores(bus); - - bcma_info(bus, "Bus registered\n"); - - return 0; -} - -void bcma_bus_unregister(struct bcma_bus *bus) -{ - struct bcma_device *cores[3]; - int err; - - err = bcma_gpio_unregister(&bus->drv_cc); - if (err == -EBUSY) - bcma_err(bus, "Some GPIOs are still in use.\n"); - else if (err) - bcma_err(bus, "Can not unregister GPIO driver: %i\n", err); - - cores[0] = bcma_find_core(bus, BCMA_CORE_MIPS_74K); - cores[1] = bcma_find_core(bus, BCMA_CORE_PCIE); - cores[2] = bcma_find_core(bus, BCMA_CORE_4706_MAC_GBIT_COMMON); - - bcma_unregister_cores(bus); - - kfree(cores[2]); - kfree(cores[1]); - kfree(cores[0]); -} - -int __init bcma_bus_early_register(struct bcma_bus *bus, - struct bcma_device *core_cc, - struct bcma_device *core_mips) -{ - int err; - struct bcma_device *core; - struct bcma_device_id match; - - bcma_init_bus(bus); - - match.manuf = BCMA_MANUF_BCM; - match.id = bcma_cc_core_id(bus); - match.class = BCMA_CL_SIM; - match.rev = BCMA_ANY_REV; - - /* Scan for chip common core */ - err = bcma_bus_scan_early(bus, &match, core_cc); - if (err) { - bcma_err(bus, "Failed to scan for common core: %d\n", err); - return -1; - } - - match.manuf = BCMA_MANUF_MIPS; - match.id = BCMA_CORE_MIPS_74K; - match.class = BCMA_CL_SIM; - match.rev = BCMA_ANY_REV; - - /* Scan for mips core */ - err = bcma_bus_scan_early(bus, &match, core_mips); - if (err) { - bcma_err(bus, "Failed to scan for mips core: %d\n", err); - return -1; - } - - /* Early init CC core */ - core = bcma_find_core(bus, bcma_cc_core_id(bus)); - if (core) { - bus->drv_cc.core = core; - bcma_core_chipcommon_early_init(&bus->drv_cc); - } - - /* Early init MIPS core */ - core = bcma_find_core(bus, BCMA_CORE_MIPS_74K); - if (core) { - bus->drv_mips.core = core; - bcma_core_mips_early_init(&bus->drv_mips); - } - - bcma_info(bus, "Early bus registered\n"); - - return 0; -} - -#ifdef CONFIG_PM -int bcma_bus_suspend(struct bcma_bus *bus) -{ - struct bcma_device *core; - - list_for_each_entry(core, &bus->cores, list) { - struct device_driver *drv = core->dev.driver; - if (drv) { - struct bcma_driver *adrv = container_of(drv, struct bcma_driver, drv); - if (adrv->suspend) - adrv->suspend(core); - } - } - return 0; -} - -int bcma_bus_resume(struct bcma_bus *bus) -{ - struct bcma_device *core; - - /* Init CC core */ - if (bus->drv_cc.core) { - bus->drv_cc.setup_done = false; - bcma_core_chipcommon_init(&bus->drv_cc); - } - - list_for_each_entry(core, &bus->cores, list) { - struct device_driver *drv = core->dev.driver; - if (drv) { - struct bcma_driver *adrv = container_of(drv, struct bcma_driver, drv); - if (adrv->resume) - adrv->resume(core); - } - } - - return 0; -} -#endif - -int __bcma_driver_register(struct bcma_driver *drv, struct module *owner) -{ - drv->drv.name = drv->name; - drv->drv.bus = &bcma_bus_type; - drv->drv.owner = owner; - - return driver_register(&drv->drv); -} -EXPORT_SYMBOL_GPL(__bcma_driver_register); - -void bcma_driver_unregister(struct bcma_driver *drv) -{ - driver_unregister(&drv->drv); -} -EXPORT_SYMBOL_GPL(bcma_driver_unregister); - -static int bcma_bus_match(struct device *dev, struct device_driver *drv) -{ - struct bcma_device *core = container_of(dev, struct bcma_device, dev); - struct bcma_driver *adrv = container_of(drv, struct bcma_driver, drv); - const struct bcma_device_id *cid = &core->id; - const struct bcma_device_id *did; - - for (did = adrv->id_table; did->manuf || did->id || did->rev; did++) { - if ((did->manuf == cid->manuf || did->manuf == BCMA_ANY_MANUF) && - (did->id == cid->id || did->id == BCMA_ANY_ID) && - (did->rev == cid->rev || did->rev == BCMA_ANY_REV) && - (did->class == cid->class || did->class == BCMA_ANY_CLASS)) - return 1; - } - return 0; -} - -static int bcma_device_probe(struct device *dev) -{ - struct bcma_device *core = container_of(dev, struct bcma_device, dev); - struct bcma_driver *adrv = container_of(dev->driver, struct bcma_driver, - drv); - int err = 0; - - if (adrv->probe) - err = adrv->probe(core); - - return err; -} - -static int bcma_device_remove(struct device *dev) -{ - struct bcma_device *core = container_of(dev, struct bcma_device, dev); - struct bcma_driver *adrv = container_of(dev->driver, struct bcma_driver, - drv); - - if (adrv->remove) - adrv->remove(core); - - return 0; -} - -static int bcma_device_uevent(struct device *dev, struct kobj_uevent_env *env) -{ - struct bcma_device *core = container_of(dev, struct bcma_device, dev); - - return add_uevent_var(env, - "MODALIAS=bcma:m%04Xid%04Xrev%02Xcl%02X", - core->id.manuf, core->id.id, - core->id.rev, core->id.class); -} - -static int __init bcma_modinit(void) -{ - int err; - - err = bus_register(&bcma_bus_type); - if (err) - return err; - -#ifdef CONFIG_BCMA_HOST_PCI - err = bcma_host_pci_init(); - if (err) { - pr_err("PCI host initialization failed\n"); - err = 0; - } -#endif - - return err; -} -fs_initcall(bcma_modinit); - -static void __exit bcma_modexit(void) -{ -#ifdef CONFIG_BCMA_HOST_PCI - bcma_host_pci_exit(); -#endif - bus_unregister(&bcma_bus_type); -} -module_exit(bcma_modexit) diff --git a/drivers/bcma/scan.c b/drivers/bcma/scan.c deleted file mode 100644 index 8d0b571..0000000 --- a/drivers/bcma/scan.c +++ /dev/null @@ -1,563 +0,0 @@ -/* - * Broadcom specific AMBA - * Bus scanning - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "scan.h" -#include "bcma_private.h" - -#include -#include -#include -#include -#include -#include - -struct bcma_device_id_name { - u16 id; - const char *name; -}; - -static const struct bcma_device_id_name bcma_arm_device_names[] = { - { BCMA_CORE_4706_MAC_GBIT_COMMON, "BCM4706 GBit MAC Common" }, - { BCMA_CORE_ARM_1176, "ARM 1176" }, - { BCMA_CORE_ARM_7TDMI, "ARM 7TDMI" }, - { BCMA_CORE_ARM_CM3, "ARM CM3" }, -}; - -static const struct bcma_device_id_name bcma_bcm_device_names[] = { - { BCMA_CORE_OOB_ROUTER, "OOB Router" }, - { BCMA_CORE_4706_CHIPCOMMON, "BCM4706 ChipCommon" }, - { BCMA_CORE_4706_SOC_RAM, "BCM4706 SOC RAM" }, - { BCMA_CORE_4706_MAC_GBIT, "BCM4706 GBit MAC" }, - { BCMA_CORE_AMEMC, "AMEMC (DDR)" }, - { BCMA_CORE_ALTA, "ALTA (I2S)" }, - { BCMA_CORE_INVALID, "Invalid" }, - { BCMA_CORE_CHIPCOMMON, "ChipCommon" }, - { BCMA_CORE_ILINE20, "ILine 20" }, - { BCMA_CORE_SRAM, "SRAM" }, - { BCMA_CORE_SDRAM, "SDRAM" }, - { BCMA_CORE_PCI, "PCI" }, - { BCMA_CORE_ETHERNET, "Fast Ethernet" }, - { BCMA_CORE_V90, "V90" }, - { BCMA_CORE_USB11_HOSTDEV, "USB 1.1 Hostdev" }, - { BCMA_CORE_ADSL, "ADSL" }, - { BCMA_CORE_ILINE100, "ILine 100" }, - { BCMA_CORE_IPSEC, "IPSEC" }, - { BCMA_CORE_UTOPIA, "UTOPIA" }, - { BCMA_CORE_PCMCIA, "PCMCIA" }, - { BCMA_CORE_INTERNAL_MEM, "Internal Memory" }, - { BCMA_CORE_MEMC_SDRAM, "MEMC SDRAM" }, - { BCMA_CORE_OFDM, "OFDM" }, - { BCMA_CORE_EXTIF, "EXTIF" }, - { BCMA_CORE_80211, "IEEE 802.11" }, - { BCMA_CORE_PHY_A, "PHY A" }, - { BCMA_CORE_PHY_B, "PHY B" }, - { BCMA_CORE_PHY_G, "PHY G" }, - { BCMA_CORE_USB11_HOST, "USB 1.1 Host" }, - { BCMA_CORE_USB11_DEV, "USB 1.1 Device" }, - { BCMA_CORE_USB20_HOST, "USB 2.0 Host" }, - { BCMA_CORE_USB20_DEV, "USB 2.0 Device" }, - { BCMA_CORE_SDIO_HOST, "SDIO Host" }, - { BCMA_CORE_ROBOSWITCH, "Roboswitch" }, - { BCMA_CORE_PARA_ATA, "PATA" }, - { BCMA_CORE_SATA_XORDMA, "SATA XOR-DMA" }, - { BCMA_CORE_ETHERNET_GBIT, "GBit Ethernet" }, - { BCMA_CORE_PCIE, "PCIe" }, - { BCMA_CORE_PHY_N, "PHY N" }, - { BCMA_CORE_SRAM_CTL, "SRAM Controller" }, - { BCMA_CORE_MINI_MACPHY, "Mini MACPHY" }, - { BCMA_CORE_PHY_LP, "PHY LP" }, - { BCMA_CORE_PMU, "PMU" }, - { BCMA_CORE_PHY_SSN, "PHY SSN" }, - { BCMA_CORE_SDIO_DEV, "SDIO Device" }, - { BCMA_CORE_PHY_HT, "PHY HT" }, - { BCMA_CORE_MAC_GBIT, "GBit MAC" }, - { BCMA_CORE_DDR12_MEM_CTL, "DDR1/DDR2 Memory Controller" }, - { BCMA_CORE_PCIE_RC, "PCIe Root Complex" }, - { BCMA_CORE_OCP_OCP_BRIDGE, "OCP to OCP Bridge" }, - { BCMA_CORE_SHARED_COMMON, "Common Shared" }, - { BCMA_CORE_OCP_AHB_BRIDGE, "OCP to AHB Bridge" }, - { BCMA_CORE_SPI_HOST, "SPI Host" }, - { BCMA_CORE_I2S, "I2S" }, - { BCMA_CORE_SDR_DDR1_MEM_CTL, "SDR/DDR1 Memory Controller" }, - { BCMA_CORE_SHIM, "SHIM" }, - { BCMA_CORE_DEFAULT, "Default" }, -}; - -static const struct bcma_device_id_name bcma_mips_device_names[] = { - { BCMA_CORE_MIPS, "MIPS" }, - { BCMA_CORE_MIPS_3302, "MIPS 3302" }, - { BCMA_CORE_MIPS_74K, "MIPS 74K" }, -}; - -static const char *bcma_device_name(const struct bcma_device_id *id) -{ - const struct bcma_device_id_name *names; - int size, i; - - /* search manufacturer specific names */ - switch (id->manuf) { - case BCMA_MANUF_ARM: - names = bcma_arm_device_names; - size = ARRAY_SIZE(bcma_arm_device_names); - break; - case BCMA_MANUF_BCM: - names = bcma_bcm_device_names; - size = ARRAY_SIZE(bcma_bcm_device_names); - break; - case BCMA_MANUF_MIPS: - names = bcma_mips_device_names; - size = ARRAY_SIZE(bcma_mips_device_names); - break; - default: - return "UNKNOWN"; - } - - for (i = 0; i < size; i++) { - if (names[i].id == id->id) - return names[i].name; - } - - return "UNKNOWN"; -} - -static u32 bcma_scan_read32(struct bcma_bus *bus, u8 current_coreidx, - u16 offset) -{ - return readl(bus->mmio + offset); -} - -static void bcma_scan_switch_core(struct bcma_bus *bus, u32 addr) -{ - if (bus->hosttype == BCMA_HOSTTYPE_PCI) - pci_write_config_dword(bus->host_pci, BCMA_PCI_BAR0_WIN, - addr); -} - -static u32 bcma_erom_get_ent(struct bcma_bus *bus, u32 **eromptr) -{ - u32 ent = readl(*eromptr); - (*eromptr)++; - return ent; -} - -static void bcma_erom_push_ent(u32 **eromptr) -{ - (*eromptr)--; -} - -static s32 bcma_erom_get_ci(struct bcma_bus *bus, u32 **eromptr) -{ - u32 ent = bcma_erom_get_ent(bus, eromptr); - if (!(ent & SCAN_ER_VALID)) - return -ENOENT; - if ((ent & SCAN_ER_TAG) != SCAN_ER_TAG_CI) - return -ENOENT; - return ent; -} - -static bool bcma_erom_is_end(struct bcma_bus *bus, u32 **eromptr) -{ - u32 ent = bcma_erom_get_ent(bus, eromptr); - bcma_erom_push_ent(eromptr); - return (ent == (SCAN_ER_TAG_END | SCAN_ER_VALID)); -} - -static bool bcma_erom_is_bridge(struct bcma_bus *bus, u32 **eromptr) -{ - u32 ent = bcma_erom_get_ent(bus, eromptr); - bcma_erom_push_ent(eromptr); - return (((ent & SCAN_ER_VALID)) && - ((ent & SCAN_ER_TAGX) == SCAN_ER_TAG_ADDR) && - ((ent & SCAN_ADDR_TYPE) == SCAN_ADDR_TYPE_BRIDGE)); -} - -static void bcma_erom_skip_component(struct bcma_bus *bus, u32 **eromptr) -{ - u32 ent; - while (1) { - ent = bcma_erom_get_ent(bus, eromptr); - if ((ent & SCAN_ER_VALID) && - ((ent & SCAN_ER_TAG) == SCAN_ER_TAG_CI)) - break; - if (ent == (SCAN_ER_TAG_END | SCAN_ER_VALID)) - break; - } - bcma_erom_push_ent(eromptr); -} - -static s32 bcma_erom_get_mst_port(struct bcma_bus *bus, u32 **eromptr) -{ - u32 ent = bcma_erom_get_ent(bus, eromptr); - if (!(ent & SCAN_ER_VALID)) - return -ENOENT; - if ((ent & SCAN_ER_TAG) != SCAN_ER_TAG_MP) - return -ENOENT; - return ent; -} - -static s32 bcma_erom_get_addr_desc(struct bcma_bus *bus, u32 **eromptr, - u32 type, u8 port) -{ - u32 addrl, addrh, sizel, sizeh = 0; - u32 size; - - u32 ent = bcma_erom_get_ent(bus, eromptr); - if ((!(ent & SCAN_ER_VALID)) || - ((ent & SCAN_ER_TAGX) != SCAN_ER_TAG_ADDR) || - ((ent & SCAN_ADDR_TYPE) != type) || - (((ent & SCAN_ADDR_PORT) >> SCAN_ADDR_PORT_SHIFT) != port)) { - bcma_erom_push_ent(eromptr); - return -EINVAL; - } - - addrl = ent & SCAN_ADDR_ADDR; - if (ent & SCAN_ADDR_AG32) - addrh = bcma_erom_get_ent(bus, eromptr); - else - addrh = 0; - - if ((ent & SCAN_ADDR_SZ) == SCAN_ADDR_SZ_SZD) { - size = bcma_erom_get_ent(bus, eromptr); - sizel = size & SCAN_SIZE_SZ; - if (size & SCAN_SIZE_SG32) - sizeh = bcma_erom_get_ent(bus, eromptr); - } else - sizel = SCAN_ADDR_SZ_BASE << - ((ent & SCAN_ADDR_SZ) >> SCAN_ADDR_SZ_SHIFT); - - return addrl; -} - -static struct bcma_device *bcma_find_core_by_index(struct bcma_bus *bus, - u16 index) -{ - struct bcma_device *core; - - list_for_each_entry(core, &bus->cores, list) { - if (core->core_index == index) - return core; - } - return NULL; -} - -static struct bcma_device *bcma_find_core_reverse(struct bcma_bus *bus, u16 coreid) -{ - struct bcma_device *core; - - list_for_each_entry_reverse(core, &bus->cores, list) { - if (core->id.id == coreid) - return core; - } - return NULL; -} - -static int bcma_get_next_core(struct bcma_bus *bus, u32 __iomem **eromptr, - struct bcma_device_id *match, int core_num, - struct bcma_device *core) -{ - s32 tmp; - u8 i, j; - s32 cia, cib; - u8 ports[2], wrappers[2]; - - /* get CIs */ - cia = bcma_erom_get_ci(bus, eromptr); - if (cia < 0) { - bcma_erom_push_ent(eromptr); - if (bcma_erom_is_end(bus, eromptr)) - return -ESPIPE; - return -EILSEQ; - } - cib = bcma_erom_get_ci(bus, eromptr); - if (cib < 0) - return -EILSEQ; - - /* parse CIs */ - core->id.class = (cia & SCAN_CIA_CLASS) >> SCAN_CIA_CLASS_SHIFT; - core->id.id = (cia & SCAN_CIA_ID) >> SCAN_CIA_ID_SHIFT; - core->id.manuf = (cia & SCAN_CIA_MANUF) >> SCAN_CIA_MANUF_SHIFT; - ports[0] = (cib & SCAN_CIB_NMP) >> SCAN_CIB_NMP_SHIFT; - ports[1] = (cib & SCAN_CIB_NSP) >> SCAN_CIB_NSP_SHIFT; - wrappers[0] = (cib & SCAN_CIB_NMW) >> SCAN_CIB_NMW_SHIFT; - wrappers[1] = (cib & SCAN_CIB_NSW) >> SCAN_CIB_NSW_SHIFT; - core->id.rev = (cib & SCAN_CIB_REV) >> SCAN_CIB_REV_SHIFT; - - if (((core->id.manuf == BCMA_MANUF_ARM) && - (core->id.id == 0xFFF)) || - (ports[1] == 0)) { - bcma_erom_skip_component(bus, eromptr); - return -ENXIO; - } - - /* check if component is a core at all */ - if (wrappers[0] + wrappers[1] == 0) { - /* Some specific cores don't need wrappers */ - switch (core->id.id) { - case BCMA_CORE_4706_MAC_GBIT_COMMON: - /* Not used yet: case BCMA_CORE_OOB_ROUTER: */ - break; - default: - bcma_erom_skip_component(bus, eromptr); - return -ENXIO; - } - } - - if (bcma_erom_is_bridge(bus, eromptr)) { - bcma_erom_skip_component(bus, eromptr); - return -ENXIO; - } - - if (bcma_find_core_by_index(bus, core_num)) { - bcma_erom_skip_component(bus, eromptr); - return -ENODEV; - } - - if (match && ((match->manuf != BCMA_ANY_MANUF && - match->manuf != core->id.manuf) || - (match->id != BCMA_ANY_ID && match->id != core->id.id) || - (match->rev != BCMA_ANY_REV && match->rev != core->id.rev) || - (match->class != BCMA_ANY_CLASS && match->class != core->id.class) - )) { - bcma_erom_skip_component(bus, eromptr); - return -ENODEV; - } - - /* get & parse master ports */ - for (i = 0; i < ports[0]; i++) { - s32 mst_port_d = bcma_erom_get_mst_port(bus, eromptr); - if (mst_port_d < 0) - return -EILSEQ; - } - - /* First Slave Address Descriptor should be port 0: - * the main register space for the core - */ - tmp = bcma_erom_get_addr_desc(bus, eromptr, SCAN_ADDR_TYPE_SLAVE, 0); - if (tmp <= 0) { - /* Try again to see if it is a bridge */ - tmp = bcma_erom_get_addr_desc(bus, eromptr, - SCAN_ADDR_TYPE_BRIDGE, 0); - if (tmp <= 0) { - return -EILSEQ; - } else { - bcma_info(bus, "Bridge found\n"); - return -ENXIO; - } - } - core->addr = tmp; - - /* get & parse slave ports */ - for (i = 0; i < ports[1]; i++) { - for (j = 0; ; j++) { - tmp = bcma_erom_get_addr_desc(bus, eromptr, - SCAN_ADDR_TYPE_SLAVE, i); - if (tmp < 0) { - /* no more entries for port _i_ */ - /* pr_debug("erom: slave port %d " - * "has %d descriptors\n", i, j); */ - break; - } else { - if (i == 0 && j == 0) - core->addr1 = tmp; - } - } - } - - /* get & parse master wrappers */ - for (i = 0; i < wrappers[0]; i++) { - for (j = 0; ; j++) { - tmp = bcma_erom_get_addr_desc(bus, eromptr, - SCAN_ADDR_TYPE_MWRAP, i); - if (tmp < 0) { - /* no more entries for port _i_ */ - /* pr_debug("erom: master wrapper %d " - * "has %d descriptors\n", i, j); */ - break; - } else { - if (i == 0 && j == 0) - core->wrap = tmp; - } - } - } - - /* get & parse slave wrappers */ - for (i = 0; i < wrappers[1]; i++) { - u8 hack = (ports[1] == 1) ? 0 : 1; - for (j = 0; ; j++) { - tmp = bcma_erom_get_addr_desc(bus, eromptr, - SCAN_ADDR_TYPE_SWRAP, i + hack); - if (tmp < 0) { - /* no more entries for port _i_ */ - /* pr_debug("erom: master wrapper %d " - * has %d descriptors\n", i, j); */ - break; - } else { - if (wrappers[0] == 0 && !i && !j) - core->wrap = tmp; - } - } - } - if (bus->hosttype == BCMA_HOSTTYPE_SOC) { - core->io_addr = ioremap_nocache(core->addr, BCMA_CORE_SIZE); - if (!core->io_addr) - return -ENOMEM; - core->io_wrap = ioremap_nocache(core->wrap, BCMA_CORE_SIZE); - if (!core->io_wrap) { - iounmap(core->io_addr); - return -ENOMEM; - } - } - return 0; -} - -void bcma_init_bus(struct bcma_bus *bus) -{ - s32 tmp; - struct bcma_chipinfo *chipinfo = &(bus->chipinfo); - - if (bus->init_done) - return; - - INIT_LIST_HEAD(&bus->cores); - bus->nr_cores = 0; - - bcma_scan_switch_core(bus, BCMA_ADDR_BASE); - - tmp = bcma_scan_read32(bus, 0, BCMA_CC_ID); - chipinfo->id = (tmp & BCMA_CC_ID_ID) >> BCMA_CC_ID_ID_SHIFT; - chipinfo->rev = (tmp & BCMA_CC_ID_REV) >> BCMA_CC_ID_REV_SHIFT; - chipinfo->pkg = (tmp & BCMA_CC_ID_PKG) >> BCMA_CC_ID_PKG_SHIFT; - bcma_info(bus, "Found chip with id 0x%04X, rev 0x%02X and package 0x%02X\n", - chipinfo->id, chipinfo->rev, chipinfo->pkg); - - bus->init_done = true; -} - -int bcma_bus_scan(struct bcma_bus *bus) -{ - u32 erombase; - u32 __iomem *eromptr, *eromend; - - int err, core_num = 0; - - bcma_init_bus(bus); - - erombase = bcma_scan_read32(bus, 0, BCMA_CC_EROM); - if (bus->hosttype == BCMA_HOSTTYPE_SOC) { - eromptr = ioremap_nocache(erombase, BCMA_CORE_SIZE); - if (!eromptr) - return -ENOMEM; - } else { - eromptr = bus->mmio; - } - - eromend = eromptr + BCMA_CORE_SIZE / sizeof(u32); - - bcma_scan_switch_core(bus, erombase); - - while (eromptr < eromend) { - struct bcma_device *other_core; - struct bcma_device *core = kzalloc(sizeof(*core), GFP_KERNEL); - if (!core) { - err = -ENOMEM; - goto out; - } - INIT_LIST_HEAD(&core->list); - core->bus = bus; - - err = bcma_get_next_core(bus, &eromptr, NULL, core_num, core); - if (err < 0) { - kfree(core); - if (err == -ENODEV) { - core_num++; - continue; - } else if (err == -ENXIO) { - continue; - } else if (err == -ESPIPE) { - break; - } - goto out; - } - - core->core_index = core_num++; - bus->nr_cores++; - other_core = bcma_find_core_reverse(bus, core->id.id); - core->core_unit = (other_core == NULL) ? 0 : other_core->core_unit + 1; - - bcma_info(bus, "Core %d found: %s (manuf 0x%03X, id 0x%03X, rev 0x%02X, class 0x%X)\n", - core->core_index, bcma_device_name(&core->id), - core->id.manuf, core->id.id, core->id.rev, - core->id.class); - - list_add_tail(&core->list, &bus->cores); - } - - err = 0; -out: - if (bus->hosttype == BCMA_HOSTTYPE_SOC) - iounmap(eromptr); - - return err; -} - -int __init bcma_bus_scan_early(struct bcma_bus *bus, - struct bcma_device_id *match, - struct bcma_device *core) -{ - u32 erombase; - u32 __iomem *eromptr, *eromend; - - int err = -ENODEV; - int core_num = 0; - - erombase = bcma_scan_read32(bus, 0, BCMA_CC_EROM); - if (bus->hosttype == BCMA_HOSTTYPE_SOC) { - eromptr = ioremap_nocache(erombase, BCMA_CORE_SIZE); - if (!eromptr) - return -ENOMEM; - } else { - eromptr = bus->mmio; - } - - eromend = eromptr + BCMA_CORE_SIZE / sizeof(u32); - - bcma_scan_switch_core(bus, erombase); - - while (eromptr < eromend) { - memset(core, 0, sizeof(*core)); - INIT_LIST_HEAD(&core->list); - core->bus = bus; - - err = bcma_get_next_core(bus, &eromptr, match, core_num, core); - if (err == -ENODEV) { - core_num++; - continue; - } else if (err == -ENXIO) - continue; - else if (err == -ESPIPE) - break; - else if (err < 0) - goto out; - - core->core_index = core_num++; - bus->nr_cores++; - bcma_info(bus, "Core %d found: %s (manuf 0x%03X, id 0x%03X, rev 0x%02X, class 0x%X)\n", - core->core_index, bcma_device_name(&core->id), - core->id.manuf, core->id.id, core->id.rev, - core->id.class); - - list_add_tail(&core->list, &bus->cores); - err = 0; - break; - } - -out: - if (bus->hosttype == BCMA_HOSTTYPE_SOC) - iounmap(eromptr); - - return err; -} diff --git a/drivers/bcma/scan.h b/drivers/bcma/scan.h deleted file mode 100644 index 30eb475..0000000 --- a/drivers/bcma/scan.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef BCMA_SCAN_H_ -#define BCMA_SCAN_H_ - -#define BCMA_ADDR_BASE 0x18000000 -#define BCMA_WRAP_BASE 0x18100000 - -#define SCAN_ER_VALID 0x00000001 -#define SCAN_ER_TAGX 0x00000006 /* we have to ignore 0x8 bit when checking tag for SCAN_ER_TAG_ADDR */ -#define SCAN_ER_TAG 0x0000000E -#define SCAN_ER_TAG_CI 0x00000000 -#define SCAN_ER_TAG_MP 0x00000002 -#define SCAN_ER_TAG_ADDR 0x00000004 -#define SCAN_ER_TAG_END 0x0000000E -#define SCAN_ER_BAD 0xFFFFFFFF - -#define SCAN_CIA_CLASS 0x000000F0 -#define SCAN_CIA_CLASS_SHIFT 4 -#define SCAN_CIA_ID 0x000FFF00 -#define SCAN_CIA_ID_SHIFT 8 -#define SCAN_CIA_MANUF 0xFFF00000 -#define SCAN_CIA_MANUF_SHIFT 20 - -#define SCAN_CIB_NMP 0x000001F0 -#define SCAN_CIB_NMP_SHIFT 4 -#define SCAN_CIB_NSP 0x00003E00 -#define SCAN_CIB_NSP_SHIFT 9 -#define SCAN_CIB_NMW 0x0007C000 -#define SCAN_CIB_NMW_SHIFT 14 -#define SCAN_CIB_NSW 0x00F80000 -#define SCAN_CIB_NSW_SHIFT 19 -#define SCAN_CIB_REV 0xFF000000 -#define SCAN_CIB_REV_SHIFT 24 - -#define SCAN_ADDR_AG32 0x00000008 -#define SCAN_ADDR_SZ 0x00000030 -#define SCAN_ADDR_SZ_SHIFT 4 -#define SCAN_ADDR_SZ_4K 0x00000000 -#define SCAN_ADDR_SZ_8K 0x00000010 -#define SCAN_ADDR_SZ_16K 0x00000020 -#define SCAN_ADDR_SZ_SZD 0x00000030 -#define SCAN_ADDR_TYPE 0x000000C0 -#define SCAN_ADDR_TYPE_SLAVE 0x00000000 -#define SCAN_ADDR_TYPE_BRIDGE 0x00000040 -#define SCAN_ADDR_TYPE_SWRAP 0x00000080 -#define SCAN_ADDR_TYPE_MWRAP 0x000000C0 -#define SCAN_ADDR_PORT 0x00000F00 -#define SCAN_ADDR_PORT_SHIFT 8 -#define SCAN_ADDR_ADDR 0xFFFFF000 - -#define SCAN_ADDR_SZ_BASE 0x00001000 /* 4KB */ - -#define SCAN_SIZE_SZ_ALIGN 0x00000FFF -#define SCAN_SIZE_SZ 0xFFFFF000 -#define SCAN_SIZE_SG32 0x00000008 - -#endif /* BCMA_SCAN_H_ */ diff --git a/drivers/bcma/sprom.c b/drivers/bcma/sprom.c deleted file mode 100644 index 4adf9ef..0000000 --- a/drivers/bcma/sprom.c +++ /dev/null @@ -1,609 +0,0 @@ -/* - * Broadcom specific AMBA - * SPROM reading - * - * Copyright 2011, 2012, Hauke Mehrtens - * - * Licensed under the GNU/GPL. See COPYING for details. - */ - -#include "bcma_private.h" - -#include -#include -#include -#include -#include -#include - -static int(*get_fallback_sprom)(struct bcma_bus *dev, struct ssb_sprom *out); - -/** - * bcma_arch_register_fallback_sprom - Registers a method providing a - * fallback SPROM if no SPROM is found. - * - * @sprom_callback: The callback function. - * - * With this function the architecture implementation may register a - * callback handler which fills the SPROM data structure. The fallback is - * used for PCI based BCMA devices, where no valid SPROM can be found - * in the shadow registers and to provide the SPROM for SoCs where BCMA is - * to controll the system bus. - * - * This function is useful for weird architectures that have a half-assed - * BCMA device hardwired to their PCI bus. - * - * This function is available for architecture code, only. So it is not - * exported. - */ -int bcma_arch_register_fallback_sprom(int (*sprom_callback)(struct bcma_bus *bus, - struct ssb_sprom *out)) -{ - if (get_fallback_sprom) - return -EEXIST; - get_fallback_sprom = sprom_callback; - - return 0; -} - -static int bcma_fill_sprom_with_fallback(struct bcma_bus *bus, - struct ssb_sprom *out) -{ - int err; - - if (!get_fallback_sprom) { - err = -ENOENT; - goto fail; - } - - err = get_fallback_sprom(bus, out); - if (err) - goto fail; - - bcma_debug(bus, "Using SPROM revision %d provided by platform.\n", - bus->sprom.revision); - return 0; -fail: - bcma_warn(bus, "Using fallback SPROM failed (err %d)\n", err); - return err; -} - -/************************************************** - * R/W ops. - **************************************************/ - -static void bcma_sprom_read(struct bcma_bus *bus, u16 offset, u16 *sprom) -{ - int i; - for (i = 0; i < SSB_SPROMSIZE_WORDS_R4; i++) - sprom[i] = bcma_read16(bus->drv_cc.core, - offset + (i * 2)); -} - -/************************************************** - * Validation. - **************************************************/ - -static inline u8 bcma_crc8(u8 crc, u8 data) -{ - /* Polynomial: x^8 + x^7 + x^6 + x^4 + x^2 + 1 */ - static const u8 t[] = { - 0x00, 0xF7, 0xB9, 0x4E, 0x25, 0xD2, 0x9C, 0x6B, - 0x4A, 0xBD, 0xF3, 0x04, 0x6F, 0x98, 0xD6, 0x21, - 0x94, 0x63, 0x2D, 0xDA, 0xB1, 0x46, 0x08, 0xFF, - 0xDE, 0x29, 0x67, 0x90, 0xFB, 0x0C, 0x42, 0xB5, - 0x7F, 0x88, 0xC6, 0x31, 0x5A, 0xAD, 0xE3, 0x14, - 0x35, 0xC2, 0x8C, 0x7B, 0x10, 0xE7, 0xA9, 0x5E, - 0xEB, 0x1C, 0x52, 0xA5, 0xCE, 0x39, 0x77, 0x80, - 0xA1, 0x56, 0x18, 0xEF, 0x84, 0x73, 0x3D, 0xCA, - 0xFE, 0x09, 0x47, 0xB0, 0xDB, 0x2C, 0x62, 0x95, - 0xB4, 0x43, 0x0D, 0xFA, 0x91, 0x66, 0x28, 0xDF, - 0x6A, 0x9D, 0xD3, 0x24, 0x4F, 0xB8, 0xF6, 0x01, - 0x20, 0xD7, 0x99, 0x6E, 0x05, 0xF2, 0xBC, 0x4B, - 0x81, 0x76, 0x38, 0xCF, 0xA4, 0x53, 0x1D, 0xEA, - 0xCB, 0x3C, 0x72, 0x85, 0xEE, 0x19, 0x57, 0xA0, - 0x15, 0xE2, 0xAC, 0x5B, 0x30, 0xC7, 0x89, 0x7E, - 0x5F, 0xA8, 0xE6, 0x11, 0x7A, 0x8D, 0xC3, 0x34, - 0xAB, 0x5C, 0x12, 0xE5, 0x8E, 0x79, 0x37, 0xC0, - 0xE1, 0x16, 0x58, 0xAF, 0xC4, 0x33, 0x7D, 0x8A, - 0x3F, 0xC8, 0x86, 0x71, 0x1A, 0xED, 0xA3, 0x54, - 0x75, 0x82, 0xCC, 0x3B, 0x50, 0xA7, 0xE9, 0x1E, - 0xD4, 0x23, 0x6D, 0x9A, 0xF1, 0x06, 0x48, 0xBF, - 0x9E, 0x69, 0x27, 0xD0, 0xBB, 0x4C, 0x02, 0xF5, - 0x40, 0xB7, 0xF9, 0x0E, 0x65, 0x92, 0xDC, 0x2B, - 0x0A, 0xFD, 0xB3, 0x44, 0x2F, 0xD8, 0x96, 0x61, - 0x55, 0xA2, 0xEC, 0x1B, 0x70, 0x87, 0xC9, 0x3E, - 0x1F, 0xE8, 0xA6, 0x51, 0x3A, 0xCD, 0x83, 0x74, - 0xC1, 0x36, 0x78, 0x8F, 0xE4, 0x13, 0x5D, 0xAA, - 0x8B, 0x7C, 0x32, 0xC5, 0xAE, 0x59, 0x17, 0xE0, - 0x2A, 0xDD, 0x93, 0x64, 0x0F, 0xF8, 0xB6, 0x41, - 0x60, 0x97, 0xD9, 0x2E, 0x45, 0xB2, 0xFC, 0x0B, - 0xBE, 0x49, 0x07, 0xF0, 0x9B, 0x6C, 0x22, 0xD5, - 0xF4, 0x03, 0x4D, 0xBA, 0xD1, 0x26, 0x68, 0x9F, - }; - return t[crc ^ data]; -} - -static u8 bcma_sprom_crc(const u16 *sprom) -{ - int word; - u8 crc = 0xFF; - - for (word = 0; word < SSB_SPROMSIZE_WORDS_R4 - 1; word++) { - crc = bcma_crc8(crc, sprom[word] & 0x00FF); - crc = bcma_crc8(crc, (sprom[word] & 0xFF00) >> 8); - } - crc = bcma_crc8(crc, sprom[SSB_SPROMSIZE_WORDS_R4 - 1] & 0x00FF); - crc ^= 0xFF; - - return crc; -} - -static int bcma_sprom_check_crc(const u16 *sprom) -{ - u8 crc; - u8 expected_crc; - u16 tmp; - - crc = bcma_sprom_crc(sprom); - tmp = sprom[SSB_SPROMSIZE_WORDS_R4 - 1] & SSB_SPROM_REVISION_CRC; - expected_crc = tmp >> SSB_SPROM_REVISION_CRC_SHIFT; - if (crc != expected_crc) - return -EPROTO; - - return 0; -} - -static int bcma_sprom_valid(const u16 *sprom) -{ - u16 revision; - int err; - - err = bcma_sprom_check_crc(sprom); - if (err) - return err; - - revision = sprom[SSB_SPROMSIZE_WORDS_R4 - 1] & SSB_SPROM_REVISION_REV; - if (revision != 8 && revision != 9) { - pr_err("Unsupported SPROM revision: %d\n", revision); - return -ENOENT; - } - - return 0; -} - -/************************************************** - * SPROM extraction. - **************************************************/ - -#define SPOFF(offset) ((offset) / sizeof(u16)) - -#define SPEX(_field, _offset, _mask, _shift) \ - bus->sprom._field = ((sprom[SPOFF(_offset)] & (_mask)) >> (_shift)) - -#define SPEX32(_field, _offset, _mask, _shift) \ - bus->sprom._field = ((((u32)sprom[SPOFF((_offset)+2)] << 16 | \ - sprom[SPOFF(_offset)]) & (_mask)) >> (_shift)) - -#define SPEX_ARRAY8(_field, _offset, _mask, _shift) \ - do { \ - SPEX(_field[0], _offset + 0, _mask, _shift); \ - SPEX(_field[1], _offset + 2, _mask, _shift); \ - SPEX(_field[2], _offset + 4, _mask, _shift); \ - SPEX(_field[3], _offset + 6, _mask, _shift); \ - SPEX(_field[4], _offset + 8, _mask, _shift); \ - SPEX(_field[5], _offset + 10, _mask, _shift); \ - SPEX(_field[6], _offset + 12, _mask, _shift); \ - SPEX(_field[7], _offset + 14, _mask, _shift); \ - } while (0) - -static void bcma_sprom_extract_r8(struct bcma_bus *bus, const u16 *sprom) -{ - u16 v, o; - int i; - u16 pwr_info_offset[] = { - SSB_SROM8_PWR_INFO_CORE0, SSB_SROM8_PWR_INFO_CORE1, - SSB_SROM8_PWR_INFO_CORE2, SSB_SROM8_PWR_INFO_CORE3 - }; - BUILD_BUG_ON(ARRAY_SIZE(pwr_info_offset) != - ARRAY_SIZE(bus->sprom.core_pwr_info)); - - bus->sprom.revision = sprom[SSB_SPROMSIZE_WORDS_R4 - 1] & - SSB_SPROM_REVISION_REV; - - for (i = 0; i < 3; i++) { - v = sprom[SPOFF(SSB_SPROM8_IL0MAC) + i]; - *(((__be16 *)bus->sprom.il0mac) + i) = cpu_to_be16(v); - } - - SPEX(board_rev, SSB_SPROM8_BOARDREV, ~0, 0); - - SPEX(txpid2g[0], SSB_SPROM4_TXPID2G01, SSB_SPROM4_TXPID2G0, - SSB_SPROM4_TXPID2G0_SHIFT); - SPEX(txpid2g[1], SSB_SPROM4_TXPID2G01, SSB_SPROM4_TXPID2G1, - SSB_SPROM4_TXPID2G1_SHIFT); - SPEX(txpid2g[2], SSB_SPROM4_TXPID2G23, SSB_SPROM4_TXPID2G2, - SSB_SPROM4_TXPID2G2_SHIFT); - SPEX(txpid2g[3], SSB_SPROM4_TXPID2G23, SSB_SPROM4_TXPID2G3, - SSB_SPROM4_TXPID2G3_SHIFT); - - SPEX(txpid5gl[0], SSB_SPROM4_TXPID5GL01, SSB_SPROM4_TXPID5GL0, - SSB_SPROM4_TXPID5GL0_SHIFT); - SPEX(txpid5gl[1], SSB_SPROM4_TXPID5GL01, SSB_SPROM4_TXPID5GL1, - SSB_SPROM4_TXPID5GL1_SHIFT); - SPEX(txpid5gl[2], SSB_SPROM4_TXPID5GL23, SSB_SPROM4_TXPID5GL2, - SSB_SPROM4_TXPID5GL2_SHIFT); - SPEX(txpid5gl[3], SSB_SPROM4_TXPID5GL23, SSB_SPROM4_TXPID5GL3, - SSB_SPROM4_TXPID5GL3_SHIFT); - - SPEX(txpid5g[0], SSB_SPROM4_TXPID5G01, SSB_SPROM4_TXPID5G0, - SSB_SPROM4_TXPID5G0_SHIFT); - SPEX(txpid5g[1], SSB_SPROM4_TXPID5G01, SSB_SPROM4_TXPID5G1, - SSB_SPROM4_TXPID5G1_SHIFT); - SPEX(txpid5g[2], SSB_SPROM4_TXPID5G23, SSB_SPROM4_TXPID5G2, - SSB_SPROM4_TXPID5G2_SHIFT); - SPEX(txpid5g[3], SSB_SPROM4_TXPID5G23, SSB_SPROM4_TXPID5G3, - SSB_SPROM4_TXPID5G3_SHIFT); - - SPEX(txpid5gh[0], SSB_SPROM4_TXPID5GH01, SSB_SPROM4_TXPID5GH0, - SSB_SPROM4_TXPID5GH0_SHIFT); - SPEX(txpid5gh[1], SSB_SPROM4_TXPID5GH01, SSB_SPROM4_TXPID5GH1, - SSB_SPROM4_TXPID5GH1_SHIFT); - SPEX(txpid5gh[2], SSB_SPROM4_TXPID5GH23, SSB_SPROM4_TXPID5GH2, - SSB_SPROM4_TXPID5GH2_SHIFT); - SPEX(txpid5gh[3], SSB_SPROM4_TXPID5GH23, SSB_SPROM4_TXPID5GH3, - SSB_SPROM4_TXPID5GH3_SHIFT); - - SPEX(boardflags_lo, SSB_SPROM8_BFLLO, ~0, 0); - SPEX(boardflags_hi, SSB_SPROM8_BFLHI, ~0, 0); - SPEX(boardflags2_lo, SSB_SPROM8_BFL2LO, ~0, 0); - SPEX(boardflags2_hi, SSB_SPROM8_BFL2HI, ~0, 0); - - SPEX(alpha2[0], SSB_SPROM8_CCODE, 0xff00, 8); - SPEX(alpha2[1], SSB_SPROM8_CCODE, 0x00ff, 0); - - /* Extract cores power info info */ - for (i = 0; i < ARRAY_SIZE(pwr_info_offset); i++) { - o = pwr_info_offset[i]; - SPEX(core_pwr_info[i].itssi_2g, o + SSB_SROM8_2G_MAXP_ITSSI, - SSB_SPROM8_2G_ITSSI, SSB_SPROM8_2G_ITSSI_SHIFT); - SPEX(core_pwr_info[i].maxpwr_2g, o + SSB_SROM8_2G_MAXP_ITSSI, - SSB_SPROM8_2G_MAXP, 0); - - SPEX(core_pwr_info[i].pa_2g[0], o + SSB_SROM8_2G_PA_0, ~0, 0); - SPEX(core_pwr_info[i].pa_2g[1], o + SSB_SROM8_2G_PA_1, ~0, 0); - SPEX(core_pwr_info[i].pa_2g[2], o + SSB_SROM8_2G_PA_2, ~0, 0); - - SPEX(core_pwr_info[i].itssi_5g, o + SSB_SROM8_5G_MAXP_ITSSI, - SSB_SPROM8_5G_ITSSI, SSB_SPROM8_5G_ITSSI_SHIFT); - SPEX(core_pwr_info[i].maxpwr_5g, o + SSB_SROM8_5G_MAXP_ITSSI, - SSB_SPROM8_5G_MAXP, 0); - SPEX(core_pwr_info[i].maxpwr_5gh, o + SSB_SPROM8_5GHL_MAXP, - SSB_SPROM8_5GH_MAXP, 0); - SPEX(core_pwr_info[i].maxpwr_5gl, o + SSB_SPROM8_5GHL_MAXP, - SSB_SPROM8_5GL_MAXP, SSB_SPROM8_5GL_MAXP_SHIFT); - - SPEX(core_pwr_info[i].pa_5gl[0], o + SSB_SROM8_5GL_PA_0, ~0, 0); - SPEX(core_pwr_info[i].pa_5gl[1], o + SSB_SROM8_5GL_PA_1, ~0, 0); - SPEX(core_pwr_info[i].pa_5gl[2], o + SSB_SROM8_5GL_PA_2, ~0, 0); - SPEX(core_pwr_info[i].pa_5g[0], o + SSB_SROM8_5G_PA_0, ~0, 0); - SPEX(core_pwr_info[i].pa_5g[1], o + SSB_SROM8_5G_PA_1, ~0, 0); - SPEX(core_pwr_info[i].pa_5g[2], o + SSB_SROM8_5G_PA_2, ~0, 0); - SPEX(core_pwr_info[i].pa_5gh[0], o + SSB_SROM8_5GH_PA_0, ~0, 0); - SPEX(core_pwr_info[i].pa_5gh[1], o + SSB_SROM8_5GH_PA_1, ~0, 0); - SPEX(core_pwr_info[i].pa_5gh[2], o + SSB_SROM8_5GH_PA_2, ~0, 0); - } - - SPEX(fem.ghz2.tssipos, SSB_SPROM8_FEM2G, SSB_SROM8_FEM_TSSIPOS, - SSB_SROM8_FEM_TSSIPOS_SHIFT); - SPEX(fem.ghz2.extpa_gain, SSB_SPROM8_FEM2G, SSB_SROM8_FEM_EXTPA_GAIN, - SSB_SROM8_FEM_EXTPA_GAIN_SHIFT); - SPEX(fem.ghz2.pdet_range, SSB_SPROM8_FEM2G, SSB_SROM8_FEM_PDET_RANGE, - SSB_SROM8_FEM_PDET_RANGE_SHIFT); - SPEX(fem.ghz2.tr_iso, SSB_SPROM8_FEM2G, SSB_SROM8_FEM_TR_ISO, - SSB_SROM8_FEM_TR_ISO_SHIFT); - SPEX(fem.ghz2.antswlut, SSB_SPROM8_FEM2G, SSB_SROM8_FEM_ANTSWLUT, - SSB_SROM8_FEM_ANTSWLUT_SHIFT); - - SPEX(fem.ghz5.tssipos, SSB_SPROM8_FEM5G, SSB_SROM8_FEM_TSSIPOS, - SSB_SROM8_FEM_TSSIPOS_SHIFT); - SPEX(fem.ghz5.extpa_gain, SSB_SPROM8_FEM5G, SSB_SROM8_FEM_EXTPA_GAIN, - SSB_SROM8_FEM_EXTPA_GAIN_SHIFT); - SPEX(fem.ghz5.pdet_range, SSB_SPROM8_FEM5G, SSB_SROM8_FEM_PDET_RANGE, - SSB_SROM8_FEM_PDET_RANGE_SHIFT); - SPEX(fem.ghz5.tr_iso, SSB_SPROM8_FEM5G, SSB_SROM8_FEM_TR_ISO, - SSB_SROM8_FEM_TR_ISO_SHIFT); - SPEX(fem.ghz5.antswlut, SSB_SPROM8_FEM5G, SSB_SROM8_FEM_ANTSWLUT, - SSB_SROM8_FEM_ANTSWLUT_SHIFT); - - SPEX(ant_available_a, SSB_SPROM8_ANTAVAIL, SSB_SPROM8_ANTAVAIL_A, - SSB_SPROM8_ANTAVAIL_A_SHIFT); - SPEX(ant_available_bg, SSB_SPROM8_ANTAVAIL, SSB_SPROM8_ANTAVAIL_BG, - SSB_SPROM8_ANTAVAIL_BG_SHIFT); - SPEX(maxpwr_bg, SSB_SPROM8_MAXP_BG, SSB_SPROM8_MAXP_BG_MASK, 0); - SPEX(itssi_bg, SSB_SPROM8_MAXP_BG, SSB_SPROM8_ITSSI_BG, - SSB_SPROM8_ITSSI_BG_SHIFT); - SPEX(maxpwr_a, SSB_SPROM8_MAXP_A, SSB_SPROM8_MAXP_A_MASK, 0); - SPEX(itssi_a, SSB_SPROM8_MAXP_A, SSB_SPROM8_ITSSI_A, - SSB_SPROM8_ITSSI_A_SHIFT); - SPEX(maxpwr_ah, SSB_SPROM8_MAXP_AHL, SSB_SPROM8_MAXP_AH_MASK, 0); - SPEX(maxpwr_al, SSB_SPROM8_MAXP_AHL, SSB_SPROM8_MAXP_AL_MASK, - SSB_SPROM8_MAXP_AL_SHIFT); - SPEX(gpio0, SSB_SPROM8_GPIOA, SSB_SPROM8_GPIOA_P0, 0); - SPEX(gpio1, SSB_SPROM8_GPIOA, SSB_SPROM8_GPIOA_P1, - SSB_SPROM8_GPIOA_P1_SHIFT); - SPEX(gpio2, SSB_SPROM8_GPIOB, SSB_SPROM8_GPIOB_P2, 0); - SPEX(gpio3, SSB_SPROM8_GPIOB, SSB_SPROM8_GPIOB_P3, - SSB_SPROM8_GPIOB_P3_SHIFT); - SPEX(tri2g, SSB_SPROM8_TRI25G, SSB_SPROM8_TRI2G, 0); - SPEX(tri5g, SSB_SPROM8_TRI25G, SSB_SPROM8_TRI5G, - SSB_SPROM8_TRI5G_SHIFT); - SPEX(tri5gl, SSB_SPROM8_TRI5GHL, SSB_SPROM8_TRI5GL, 0); - SPEX(tri5gh, SSB_SPROM8_TRI5GHL, SSB_SPROM8_TRI5GH, - SSB_SPROM8_TRI5GH_SHIFT); - SPEX(rxpo2g, SSB_SPROM8_RXPO, SSB_SPROM8_RXPO2G, - SSB_SPROM8_RXPO2G_SHIFT); - SPEX(rxpo5g, SSB_SPROM8_RXPO, SSB_SPROM8_RXPO5G, - SSB_SPROM8_RXPO5G_SHIFT); - SPEX(rssismf2g, SSB_SPROM8_RSSIPARM2G, SSB_SPROM8_RSSISMF2G, 0); - SPEX(rssismc2g, SSB_SPROM8_RSSIPARM2G, SSB_SPROM8_RSSISMC2G, - SSB_SPROM8_RSSISMC2G_SHIFT); - SPEX(rssisav2g, SSB_SPROM8_RSSIPARM2G, SSB_SPROM8_RSSISAV2G, - SSB_SPROM8_RSSISAV2G_SHIFT); - SPEX(bxa2g, SSB_SPROM8_RSSIPARM2G, SSB_SPROM8_BXA2G, - SSB_SPROM8_BXA2G_SHIFT); - SPEX(rssismf5g, SSB_SPROM8_RSSIPARM5G, SSB_SPROM8_RSSISMF5G, 0); - SPEX(rssismc5g, SSB_SPROM8_RSSIPARM5G, SSB_SPROM8_RSSISMC5G, - SSB_SPROM8_RSSISMC5G_SHIFT); - SPEX(rssisav5g, SSB_SPROM8_RSSIPARM5G, SSB_SPROM8_RSSISAV5G, - SSB_SPROM8_RSSISAV5G_SHIFT); - SPEX(bxa5g, SSB_SPROM8_RSSIPARM5G, SSB_SPROM8_BXA5G, - SSB_SPROM8_BXA5G_SHIFT); - - SPEX(pa0b0, SSB_SPROM8_PA0B0, ~0, 0); - SPEX(pa0b1, SSB_SPROM8_PA0B1, ~0, 0); - SPEX(pa0b2, SSB_SPROM8_PA0B2, ~0, 0); - SPEX(pa1b0, SSB_SPROM8_PA1B0, ~0, 0); - SPEX(pa1b1, SSB_SPROM8_PA1B1, ~0, 0); - SPEX(pa1b2, SSB_SPROM8_PA1B2, ~0, 0); - SPEX(pa1lob0, SSB_SPROM8_PA1LOB0, ~0, 0); - SPEX(pa1lob1, SSB_SPROM8_PA1LOB1, ~0, 0); - SPEX(pa1lob2, SSB_SPROM8_PA1LOB2, ~0, 0); - SPEX(pa1hib0, SSB_SPROM8_PA1HIB0, ~0, 0); - SPEX(pa1hib1, SSB_SPROM8_PA1HIB1, ~0, 0); - SPEX(pa1hib2, SSB_SPROM8_PA1HIB2, ~0, 0); - SPEX(cck2gpo, SSB_SPROM8_CCK2GPO, ~0, 0); - SPEX32(ofdm2gpo, SSB_SPROM8_OFDM2GPO, ~0, 0); - SPEX32(ofdm5glpo, SSB_SPROM8_OFDM5GLPO, ~0, 0); - SPEX32(ofdm5gpo, SSB_SPROM8_OFDM5GPO, ~0, 0); - SPEX32(ofdm5ghpo, SSB_SPROM8_OFDM5GHPO, ~0, 0); - - /* Extract the antenna gain values. */ - SPEX(antenna_gain.a0, SSB_SPROM8_AGAIN01, - SSB_SPROM8_AGAIN0, SSB_SPROM8_AGAIN0_SHIFT); - SPEX(antenna_gain.a1, SSB_SPROM8_AGAIN01, - SSB_SPROM8_AGAIN1, SSB_SPROM8_AGAIN1_SHIFT); - SPEX(antenna_gain.a2, SSB_SPROM8_AGAIN23, - SSB_SPROM8_AGAIN2, SSB_SPROM8_AGAIN2_SHIFT); - SPEX(antenna_gain.a3, SSB_SPROM8_AGAIN23, - SSB_SPROM8_AGAIN3, SSB_SPROM8_AGAIN3_SHIFT); - - SPEX(leddc_on_time, SSB_SPROM8_LEDDC, SSB_SPROM8_LEDDC_ON, - SSB_SPROM8_LEDDC_ON_SHIFT); - SPEX(leddc_off_time, SSB_SPROM8_LEDDC, SSB_SPROM8_LEDDC_OFF, - SSB_SPROM8_LEDDC_OFF_SHIFT); - - SPEX(txchain, SSB_SPROM8_TXRXC, SSB_SPROM8_TXRXC_TXCHAIN, - SSB_SPROM8_TXRXC_TXCHAIN_SHIFT); - SPEX(rxchain, SSB_SPROM8_TXRXC, SSB_SPROM8_TXRXC_RXCHAIN, - SSB_SPROM8_TXRXC_RXCHAIN_SHIFT); - SPEX(antswitch, SSB_SPROM8_TXRXC, SSB_SPROM8_TXRXC_SWITCH, - SSB_SPROM8_TXRXC_SWITCH_SHIFT); - - SPEX(opo, SSB_SPROM8_OFDM2GPO, 0x00ff, 0); - - SPEX_ARRAY8(mcs2gpo, SSB_SPROM8_2G_MCSPO, ~0, 0); - SPEX_ARRAY8(mcs5gpo, SSB_SPROM8_5G_MCSPO, ~0, 0); - SPEX_ARRAY8(mcs5glpo, SSB_SPROM8_5GL_MCSPO, ~0, 0); - SPEX_ARRAY8(mcs5ghpo, SSB_SPROM8_5GH_MCSPO, ~0, 0); - - SPEX(rawtempsense, SSB_SPROM8_RAWTS, SSB_SPROM8_RAWTS_RAWTEMP, - SSB_SPROM8_RAWTS_RAWTEMP_SHIFT); - SPEX(measpower, SSB_SPROM8_RAWTS, SSB_SPROM8_RAWTS_MEASPOWER, - SSB_SPROM8_RAWTS_MEASPOWER_SHIFT); - SPEX(tempsense_slope, SSB_SPROM8_OPT_CORRX, - SSB_SPROM8_OPT_CORRX_TEMP_SLOPE, - SSB_SPROM8_OPT_CORRX_TEMP_SLOPE_SHIFT); - SPEX(tempcorrx, SSB_SPROM8_OPT_CORRX, SSB_SPROM8_OPT_CORRX_TEMPCORRX, - SSB_SPROM8_OPT_CORRX_TEMPCORRX_SHIFT); - SPEX(tempsense_option, SSB_SPROM8_OPT_CORRX, - SSB_SPROM8_OPT_CORRX_TEMP_OPTION, - SSB_SPROM8_OPT_CORRX_TEMP_OPTION_SHIFT); - SPEX(freqoffset_corr, SSB_SPROM8_HWIQ_IQSWP, - SSB_SPROM8_HWIQ_IQSWP_FREQ_CORR, - SSB_SPROM8_HWIQ_IQSWP_FREQ_CORR_SHIFT); - SPEX(iqcal_swp_dis, SSB_SPROM8_HWIQ_IQSWP, - SSB_SPROM8_HWIQ_IQSWP_IQCAL_SWP, - SSB_SPROM8_HWIQ_IQSWP_IQCAL_SWP_SHIFT); - SPEX(hw_iqcal_en, SSB_SPROM8_HWIQ_IQSWP, SSB_SPROM8_HWIQ_IQSWP_HW_IQCAL, - SSB_SPROM8_HWIQ_IQSWP_HW_IQCAL_SHIFT); - - SPEX(bw40po, SSB_SPROM8_BW40PO, ~0, 0); - SPEX(cddpo, SSB_SPROM8_CDDPO, ~0, 0); - SPEX(stbcpo, SSB_SPROM8_STBCPO, ~0, 0); - SPEX(bwduppo, SSB_SPROM8_BWDUPPO, ~0, 0); - - SPEX(tempthresh, SSB_SPROM8_THERMAL, SSB_SPROM8_THERMAL_TRESH, - SSB_SPROM8_THERMAL_TRESH_SHIFT); - SPEX(tempoffset, SSB_SPROM8_THERMAL, SSB_SPROM8_THERMAL_OFFSET, - SSB_SPROM8_THERMAL_OFFSET_SHIFT); - SPEX(phycal_tempdelta, SSB_SPROM8_TEMPDELTA, - SSB_SPROM8_TEMPDELTA_PHYCAL, - SSB_SPROM8_TEMPDELTA_PHYCAL_SHIFT); - SPEX(temps_period, SSB_SPROM8_TEMPDELTA, SSB_SPROM8_TEMPDELTA_PERIOD, - SSB_SPROM8_TEMPDELTA_PERIOD_SHIFT); - SPEX(temps_hysteresis, SSB_SPROM8_TEMPDELTA, - SSB_SPROM8_TEMPDELTA_HYSTERESIS, - SSB_SPROM8_TEMPDELTA_HYSTERESIS_SHIFT); -} - -/* - * Indicates the presence of external SPROM. - */ -static bool bcma_sprom_ext_available(struct bcma_bus *bus) -{ - u32 chip_status; - u32 srom_control; - u32 present_mask; - - if (bus->drv_cc.core->id.rev >= 31) { - if (!(bus->drv_cc.capabilities & BCMA_CC_CAP_SPROM)) - return false; - - srom_control = bcma_read32(bus->drv_cc.core, - BCMA_CC_SROM_CONTROL); - return srom_control & BCMA_CC_SROM_CONTROL_PRESENT; - } - - /* older chipcommon revisions use chip status register */ - chip_status = bcma_read32(bus->drv_cc.core, BCMA_CC_CHIPSTAT); - switch (bus->chipinfo.id) { - case BCMA_CHIP_ID_BCM4313: - present_mask = BCMA_CC_CHIPST_4313_SPROM_PRESENT; - break; - - case BCMA_CHIP_ID_BCM4331: - present_mask = BCMA_CC_CHIPST_4331_SPROM_PRESENT; - break; - - default: - return true; - } - - return chip_status & present_mask; -} - -/* - * Indicates that on-chip OTP memory is present and enabled. - */ -static bool bcma_sprom_onchip_available(struct bcma_bus *bus) -{ - u32 chip_status; - u32 otpsize = 0; - bool present; - - chip_status = bcma_read32(bus->drv_cc.core, BCMA_CC_CHIPSTAT); - switch (bus->chipinfo.id) { - case BCMA_CHIP_ID_BCM4313: - present = chip_status & BCMA_CC_CHIPST_4313_OTP_PRESENT; - break; - - case BCMA_CHIP_ID_BCM4331: - present = chip_status & BCMA_CC_CHIPST_4331_OTP_PRESENT; - break; - - case BCMA_CHIP_ID_BCM43224: - case BCMA_CHIP_ID_BCM43225: - /* for these chips OTP is always available */ - present = true; - break; - case BCMA_CHIP_ID_BCM43227: - case BCMA_CHIP_ID_BCM43228: - case BCMA_CHIP_ID_BCM43428: - present = chip_status & BCMA_CC_CHIPST_43228_OTP_PRESENT; - break; - default: - present = false; - break; - } - - if (present) { - otpsize = bus->drv_cc.capabilities & BCMA_CC_CAP_OTPS; - otpsize >>= BCMA_CC_CAP_OTPS_SHIFT; - } - - return otpsize != 0; -} - -/* - * Verify OTP is filled and determine the byte - * offset where SPROM data is located. - * - * On error, returns 0; byte offset otherwise. - */ -static int bcma_sprom_onchip_offset(struct bcma_bus *bus) -{ - struct bcma_device *cc = bus->drv_cc.core; - u32 offset; - - /* verify OTP status */ - if ((bcma_read32(cc, BCMA_CC_OTPS) & BCMA_CC_OTPS_GU_PROG_HW) == 0) - return 0; - - /* obtain bit offset from otplayout register */ - offset = (bcma_read32(cc, BCMA_CC_OTPL) & BCMA_CC_OTPL_GURGN_OFFSET); - return BCMA_CC_SPROM + (offset >> 3); -} - -int bcma_sprom_get(struct bcma_bus *bus) -{ - u16 offset = BCMA_CC_SPROM; - u16 *sprom; - int err = 0; - - if (!bus->drv_cc.core) - return -EOPNOTSUPP; - - if (!bcma_sprom_ext_available(bus)) { - bool sprom_onchip; - - /* - * External SPROM takes precedence so check - * on-chip OTP only when no external SPROM - * is present. - */ - sprom_onchip = bcma_sprom_onchip_available(bus); - if (sprom_onchip) { - /* determine offset */ - offset = bcma_sprom_onchip_offset(bus); - } - if (!offset || !sprom_onchip) { - /* - * Maybe there is no SPROM on the device? - * Now we ask the arch code if there is some sprom - * available for this device in some other storage. - */ - err = bcma_fill_sprom_with_fallback(bus, &bus->sprom); - return err; - } - } - - sprom = kcalloc(SSB_SPROMSIZE_WORDS_R4, sizeof(u16), - GFP_KERNEL); - if (!sprom) - return -ENOMEM; - - if (bus->chipinfo.id == BCMA_CHIP_ID_BCM4331 || - bus->chipinfo.id == BCMA_CHIP_ID_BCM43431) - bcma_chipco_bcm4331_ext_pa_lines_ctl(&bus->drv_cc, false); - - bcma_debug(bus, "SPROM offset 0x%x\n", offset); - bcma_sprom_read(bus, offset, sprom); - - if (bus->chipinfo.id == BCMA_CHIP_ID_BCM4331 || - bus->chipinfo.id == BCMA_CHIP_ID_BCM43431) - bcma_chipco_bcm4331_ext_pa_lines_ctl(&bus->drv_cc, true); - - err = bcma_sprom_valid(sprom); - if (err) { - bcma_warn(bus, "invalid sprom read from the PCIe card, try to use fallback sprom\n"); - err = bcma_fill_sprom_with_fallback(bus, &bus->sprom); - goto out; - } - - bcma_sprom_extract_r8(bus, sprom); - -out: - kfree(sprom); - return err; -} diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig deleted file mode 100644 index fdfd61a..0000000 --- a/drivers/bluetooth/Kconfig +++ /dev/null @@ -1,245 +0,0 @@ - -menu "Bluetooth device drivers" - depends on BT - -config BT_HCIBTUSB - tristate "HCI USB driver" - depends on USB - help - Bluetooth HCI USB driver. - This driver is required if you want to use Bluetooth devices with - USB interface. - - Say Y here to compile support for Bluetooth USB devices into the - kernel or say M to compile it as module (btusb). - -config BT_HCIBTSDIO - tristate "HCI SDIO driver" - depends on MMC - help - Bluetooth HCI SDIO driver. - This driver is required if you want to use Bluetooth device with - SDIO interface. - - Say Y here to compile support for Bluetooth SDIO devices into the - kernel or say M to compile it as module (btsdio). - -config BT_HCIUART - tristate "HCI UART driver" - depends on TTY - help - Bluetooth HCI UART driver. - This driver is required if you want to use Bluetooth devices with - serial port interface. You will also need this driver if you have - UART based Bluetooth PCMCIA and CF devices like Xircom Credit Card - adapter and BrainBoxes Bluetooth PC Card. - - Say Y here to compile support for Bluetooth UART devices into the - kernel or say M to compile it as module (hci_uart). - -config BT_HCIUART_H4 - bool "UART (H4) protocol support" - depends on BT_HCIUART - help - UART (H4) is serial protocol for communication between Bluetooth - device and host. This protocol is required for most Bluetooth devices - with UART interface, including PCMCIA and CF cards. - - Say Y here to compile support for HCI UART (H4) protocol. - -config BT_HCIUART_BCSP - bool "BCSP protocol support" - depends on BT_HCIUART - select BITREVERSE - help - BCSP (BlueCore Serial Protocol) is serial protocol for communication - between Bluetooth device and host. This protocol is required for non - USB Bluetooth devices based on CSR BlueCore chip, including PCMCIA and - CF cards. - - Say Y here to compile support for HCI BCSP protocol. - -config BT_HCIUART_ATH3K - bool "Atheros AR300x serial support" - depends on BT_HCIUART - help - HCIATH3K (HCI Atheros AR300x) is a serial protocol for - communication between host and Atheros AR300x Bluetooth devices. - This protocol enables AR300x chips to be enabled with - power management support. - Enable this if you have Atheros AR300x serial Bluetooth device. - - Say Y here to compile support for HCI UART ATH3K protocol. - -config BT_HCIUART_LL - bool "HCILL protocol support" - depends on BT_HCIUART - help - HCILL (HCI Low Level) is a serial protocol for communication - between Bluetooth device and host. This protocol is required for - serial Bluetooth devices that are based on Texas Instruments' - BRF chips. - - Say Y here to compile support for HCILL protocol. - -config BT_HCIUART_3WIRE - bool "Three-wire UART (H5) protocol support" - depends on BT_HCIUART - help - The HCI Three-wire UART Transport Layer makes it possible to - user the Bluetooth HCI over a serial port interface. The HCI - Three-wire UART Transport Layer assumes that the UART - communication may have bit errors, overrun errors or burst - errors and thereby making CTS/RTS lines unnecessary. - - Say Y here to compile support for Three-wire UART protocol. - -config BT_HCIBCM203X - tristate "HCI BCM203x USB driver" - depends on USB - select FW_LOADER - help - Bluetooth HCI BCM203x USB driver. - This driver provides the firmware loading mechanism for the Broadcom - Blutonium based devices. - - Say Y here to compile support for HCI BCM203x devices into the - kernel or say M to compile it as module (bcm203x). - -config BT_HCIBPA10X - tristate "HCI BPA10x USB driver" - depends on USB - help - Bluetooth HCI BPA10x USB driver. - This driver provides support for the Digianswer BPA 100/105 Bluetooth - sniffer devices. - - Say Y here to compile support for HCI BPA10x devices into the - kernel or say M to compile it as module (bpa10x). - -config BT_HCIBFUSB - tristate "HCI BlueFRITZ! USB driver" - depends on USB - select FW_LOADER - help - Bluetooth HCI BlueFRITZ! USB driver. - This driver provides support for Bluetooth USB devices with AVM - interface: - AVM BlueFRITZ! USB - - Say Y here to compile support for HCI BFUSB devices into the - kernel or say M to compile it as module (bfusb). - -config BT_HCIDTL1 - tristate "HCI DTL1 (PC Card) driver" - depends on PCMCIA - help - Bluetooth HCI DTL1 (PC Card) driver. - This driver provides support for Bluetooth PCMCIA devices with - Nokia DTL1 interface: - Nokia Bluetooth Card - Socket Bluetooth CF Card - - Say Y here to compile support for HCI DTL1 devices into the - kernel or say M to compile it as module (dtl1_cs). - -config BT_HCIBT3C - tristate "HCI BT3C (PC Card) driver" - depends on PCMCIA - select FW_LOADER - help - Bluetooth HCI BT3C (PC Card) driver. - This driver provides support for Bluetooth PCMCIA devices with - 3Com BT3C interface: - 3Com Bluetooth Card (3CRWB6096) - HP Bluetooth Card - - Say Y here to compile support for HCI BT3C devices into the - kernel or say M to compile it as module (bt3c_cs). - -config BT_HCIBLUECARD - tristate "HCI BlueCard (PC Card) driver" - depends on PCMCIA - help - Bluetooth HCI BlueCard (PC Card) driver. - This driver provides support for Bluetooth PCMCIA devices with - Anycom BlueCard interface: - Anycom Bluetooth PC Card - Anycom Bluetooth CF Card - - Say Y here to compile support for HCI BlueCard devices into the - kernel or say M to compile it as module (bluecard_cs). - -config BT_HCIBTUART - tristate "HCI UART (PC Card) device driver" - depends on PCMCIA - help - Bluetooth HCI UART (PC Card) driver. - This driver provides support for Bluetooth PCMCIA devices with - an UART interface: - Xircom CreditCard Bluetooth Adapter - Xircom RealPort2 Bluetooth Adapter - Sphinx PICO Card - H-Soft blue+Card - Cyber-blue Compact Flash Card - - Say Y here to compile support for HCI UART devices into the - kernel or say M to compile it as module (btuart_cs). - -config BT_HCIVHCI - tristate "HCI VHCI (Virtual HCI device) driver" - help - Bluetooth Virtual HCI device driver. - This driver is required if you want to use HCI Emulation software. - - Say Y here to compile support for virtual HCI devices into the - kernel or say M to compile it as module (hci_vhci). - -config BT_MRVL - tristate "Marvell Bluetooth driver support" - help - The core driver to support Marvell Bluetooth devices. - - This driver is required if you want to support - Marvell Bluetooth devices, such as 8688/8787/8797. - - Say Y here to compile Marvell Bluetooth driver - into the kernel or say M to compile it as module. - -config BT_MRVL_SDIO - tristate "Marvell BT-over-SDIO driver" - depends on BT_MRVL && MMC - select FW_LOADER - help - The driver for Marvell Bluetooth chipsets with SDIO interface. - - This driver is required if you want to use Marvell Bluetooth - devices with SDIO interface. Currently SD8688/SD8787/SD8797 - chipsets are supported. - - Say Y here to compile support for Marvell BT-over-SDIO driver - into the kernel or say M to compile it as module. - -config BT_ATH3K - tristate "Atheros firmware download driver" - depends on BT_HCIBTUSB - select FW_LOADER - help - Bluetooth firmware download driver. - This driver loads the firmware into the Atheros Bluetooth - chipset. - - Say Y here to compile support for "Atheros firmware download driver" - into the kernel or say M to compile it as module (ath3k). - -config BT_WILINK - tristate "Texas Instruments WiLink7 driver" - depends on TI_ST - help - This enables the Bluetooth driver for Texas Instrument's BT/FM/GPS - combo devices. This makes use of shared transport line discipline - core driver to communicate with the BT core of the combo chip. - - Say Y here to compile support for Texas Instrument's WiLink7 driver - into the kernel or say M to compile it as module. -endmenu diff --git a/drivers/bluetooth/Makefile b/drivers/bluetooth/Makefile deleted file mode 100644 index 4afae20..0000000 --- a/drivers/bluetooth/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -# -# Makefile for the Linux Bluetooth HCI device drivers. -# - -obj-$(CONFIG_BT_HCIVHCI) += hci_vhci.o -obj-$(CONFIG_BT_HCIUART) += hci_uart.o -obj-$(CONFIG_BT_HCIBCM203X) += bcm203x.o -obj-$(CONFIG_BT_HCIBPA10X) += bpa10x.o -obj-$(CONFIG_BT_HCIBFUSB) += bfusb.o -obj-$(CONFIG_BT_HCIDTL1) += dtl1_cs.o -obj-$(CONFIG_BT_HCIBT3C) += bt3c_cs.o -obj-$(CONFIG_BT_HCIBLUECARD) += bluecard_cs.o -obj-$(CONFIG_BT_HCIBTUART) += btuart_cs.o - -obj-$(CONFIG_BT_HCIBTUSB) += btusb.o -obj-$(CONFIG_BT_HCIBTSDIO) += btsdio.o - -obj-$(CONFIG_BT_ATH3K) += ath3k.o -obj-$(CONFIG_BT_MRVL) += btmrvl.o -obj-$(CONFIG_BT_MRVL_SDIO) += btmrvl_sdio.o -obj-$(CONFIG_BT_WILINK) += btwilink.o - -btmrvl-y := btmrvl_main.o -btmrvl-$(CONFIG_DEBUG_FS) += btmrvl_debugfs.o - -hci_uart-y := hci_ldisc.o -hci_uart-$(CONFIG_BT_HCIUART_H4) += hci_h4.o -hci_uart-$(CONFIG_BT_HCIUART_BCSP) += hci_bcsp.o -hci_uart-$(CONFIG_BT_HCIUART_LL) += hci_ll.o -hci_uart-$(CONFIG_BT_HCIUART_ATH3K) += hci_ath.o -hci_uart-$(CONFIG_BT_HCIUART_3WIRE) += hci_h5.o -hci_uart-objs := $(hci_uart-y) diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c deleted file mode 100644 index 9403ac4..0000000 --- a/drivers/bluetooth/ath3k.c +++ /dev/null @@ -1,481 +0,0 @@ -/* - * Copyright (c) 2008-2009 Atheros Communications Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define VERSION "1.0" -#define ATH3K_FIRMWARE "ath3k-1.fw" - -#define ATH3K_DNLOAD 0x01 -#define ATH3K_GETSTATE 0x05 -#define ATH3K_SET_NORMAL_MODE 0x07 -#define ATH3K_GETVERSION 0x09 -#define USB_REG_SWITCH_VID_PID 0x0a - -#define ATH3K_MODE_MASK 0x3F -#define ATH3K_NORMAL_MODE 0x0E - -#define ATH3K_PATCH_UPDATE 0x80 -#define ATH3K_SYSCFG_UPDATE 0x40 - -#define ATH3K_XTAL_FREQ_26M 0x00 -#define ATH3K_XTAL_FREQ_40M 0x01 -#define ATH3K_XTAL_FREQ_19P2 0x02 -#define ATH3K_NAME_LEN 0xFF - -struct ath3k_version { - unsigned int rom_version; - unsigned int build_version; - unsigned int ram_version; - unsigned char ref_clock; - unsigned char reserved[0x07]; -}; - -static struct usb_device_id ath3k_table[] = { - /* Atheros AR3011 */ - { USB_DEVICE(0x0CF3, 0x3000) }, - - /* Atheros AR3011 with sflash firmware*/ - { USB_DEVICE(0x0CF3, 0x3002) }, - { USB_DEVICE(0x0CF3, 0xE019) }, - { USB_DEVICE(0x13d3, 0x3304) }, - { USB_DEVICE(0x0930, 0x0215) }, - { USB_DEVICE(0x0489, 0xE03D) }, - { USB_DEVICE(0x0489, 0xE027) }, - - /* Atheros AR9285 Malbec with sflash firmware */ - { USB_DEVICE(0x03F0, 0x311D) }, - - /* Atheros AR3012 with sflash firmware*/ - { USB_DEVICE(0x0CF3, 0x3004) }, - { USB_DEVICE(0x0CF3, 0x3008) }, - { USB_DEVICE(0x0CF3, 0x311D) }, - { USB_DEVICE(0x13d3, 0x3375) }, - { USB_DEVICE(0x04CA, 0x3004) }, - { USB_DEVICE(0x04CA, 0x3005) }, - { USB_DEVICE(0x04CA, 0x3006) }, - { USB_DEVICE(0x04CA, 0x3008) }, - { USB_DEVICE(0x13d3, 0x3362) }, - { USB_DEVICE(0x0CF3, 0xE004) }, - { USB_DEVICE(0x0930, 0x0219) }, - { USB_DEVICE(0x0489, 0xe057) }, - { USB_DEVICE(0x13d3, 0x3393) }, - { USB_DEVICE(0x0489, 0xe04e) }, - { USB_DEVICE(0x0489, 0xe056) }, - - /* Atheros AR5BBU12 with sflash firmware */ - { USB_DEVICE(0x0489, 0xE02C) }, - - /* Atheros AR5BBU22 with sflash firmware */ - { USB_DEVICE(0x0489, 0xE03C) }, - { USB_DEVICE(0x0489, 0xE036) }, - - { } /* Terminating entry */ -}; - -MODULE_DEVICE_TABLE(usb, ath3k_table); - -#define BTUSB_ATH3012 0x80 -/* This table is to load patch and sysconfig files - * for AR3012 */ -static struct usb_device_id ath3k_blist_tbl[] = { - - /* Atheros AR3012 with sflash firmware*/ - { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 }, - - /* Atheros AR5BBU22 with sflash firmware */ - { USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0489, 0xE036), .driver_info = BTUSB_ATH3012 }, - - { } /* Terminating entry */ -}; - -#define USB_REQ_DFU_DNLOAD 1 -#define BULK_SIZE 4096 -#define FW_HDR_SIZE 20 - -static int ath3k_load_firmware(struct usb_device *udev, - const struct firmware *firmware) -{ - u8 *send_buf; - int err, pipe, len, size, sent = 0; - int count = firmware->size; - - BT_DBG("udev %p", udev); - - pipe = usb_sndctrlpipe(udev, 0); - - send_buf = kmalloc(BULK_SIZE, GFP_KERNEL); - if (!send_buf) { - BT_ERR("Can't allocate memory chunk for firmware"); - return -ENOMEM; - } - - memcpy(send_buf, firmware->data, 20); - if ((err = usb_control_msg(udev, pipe, - USB_REQ_DFU_DNLOAD, - USB_TYPE_VENDOR, 0, 0, - send_buf, 20, USB_CTRL_SET_TIMEOUT)) < 0) { - BT_ERR("Can't change to loading configuration err"); - goto error; - } - sent += 20; - count -= 20; - - while (count) { - size = min_t(uint, count, BULK_SIZE); - pipe = usb_sndbulkpipe(udev, 0x02); - memcpy(send_buf, firmware->data + sent, size); - - err = usb_bulk_msg(udev, pipe, send_buf, size, - &len, 3000); - - if (err || (len != size)) { - BT_ERR("Error in firmware loading err = %d," - "len = %d, size = %d", err, len, size); - goto error; - } - - sent += size; - count -= size; - } - -error: - kfree(send_buf); - return err; -} - -static int ath3k_get_state(struct usb_device *udev, unsigned char *state) -{ - int pipe = 0; - - pipe = usb_rcvctrlpipe(udev, 0); - return usb_control_msg(udev, pipe, ATH3K_GETSTATE, - USB_TYPE_VENDOR | USB_DIR_IN, 0, 0, - state, 0x01, USB_CTRL_SET_TIMEOUT); -} - -static int ath3k_get_version(struct usb_device *udev, - struct ath3k_version *version) -{ - int pipe = 0; - - pipe = usb_rcvctrlpipe(udev, 0); - return usb_control_msg(udev, pipe, ATH3K_GETVERSION, - USB_TYPE_VENDOR | USB_DIR_IN, 0, 0, version, - sizeof(struct ath3k_version), - USB_CTRL_SET_TIMEOUT); -} - -static int ath3k_load_fwfile(struct usb_device *udev, - const struct firmware *firmware) -{ - u8 *send_buf; - int err, pipe, len, size, count, sent = 0; - int ret; - - count = firmware->size; - - send_buf = kmalloc(BULK_SIZE, GFP_KERNEL); - if (!send_buf) { - BT_ERR("Can't allocate memory chunk for firmware"); - return -ENOMEM; - } - - size = min_t(uint, count, FW_HDR_SIZE); - memcpy(send_buf, firmware->data, size); - - pipe = usb_sndctrlpipe(udev, 0); - ret = usb_control_msg(udev, pipe, ATH3K_DNLOAD, - USB_TYPE_VENDOR, 0, 0, send_buf, - size, USB_CTRL_SET_TIMEOUT); - if (ret < 0) { - BT_ERR("Can't change to loading configuration err"); - kfree(send_buf); - return ret; - } - - sent += size; - count -= size; - - while (count) { - size = min_t(uint, count, BULK_SIZE); - pipe = usb_sndbulkpipe(udev, 0x02); - - memcpy(send_buf, firmware->data + sent, size); - - err = usb_bulk_msg(udev, pipe, send_buf, size, - &len, 3000); - if (err || (len != size)) { - BT_ERR("Error in firmware loading err = %d," - "len = %d, size = %d", err, len, size); - kfree(send_buf); - return err; - } - sent += size; - count -= size; - } - - kfree(send_buf); - return 0; -} - -static int ath3k_switch_pid(struct usb_device *udev) -{ - int pipe = 0; - - pipe = usb_sndctrlpipe(udev, 0); - return usb_control_msg(udev, pipe, USB_REG_SWITCH_VID_PID, - USB_TYPE_VENDOR, 0, 0, - NULL, 0, USB_CTRL_SET_TIMEOUT); -} - -static int ath3k_set_normal_mode(struct usb_device *udev) -{ - unsigned char fw_state; - int pipe = 0, ret; - - ret = ath3k_get_state(udev, &fw_state); - if (ret < 0) { - BT_ERR("Can't get state to change to normal mode err"); - return ret; - } - - if ((fw_state & ATH3K_MODE_MASK) == ATH3K_NORMAL_MODE) { - BT_DBG("firmware was already in normal mode"); - return 0; - } - - pipe = usb_sndctrlpipe(udev, 0); - return usb_control_msg(udev, pipe, ATH3K_SET_NORMAL_MODE, - USB_TYPE_VENDOR, 0, 0, - NULL, 0, USB_CTRL_SET_TIMEOUT); -} - -static int ath3k_load_patch(struct usb_device *udev) -{ - unsigned char fw_state; - char filename[ATH3K_NAME_LEN] = {0}; - const struct firmware *firmware; - struct ath3k_version fw_version, pt_version; - int ret; - - ret = ath3k_get_state(udev, &fw_state); - if (ret < 0) { - BT_ERR("Can't get state to change to load ram patch err"); - return ret; - } - - if (fw_state & ATH3K_PATCH_UPDATE) { - BT_DBG("Patch was already downloaded"); - return 0; - } - - ret = ath3k_get_version(udev, &fw_version); - if (ret < 0) { - BT_ERR("Can't get version to change to load ram patch err"); - return ret; - } - - snprintf(filename, ATH3K_NAME_LEN, "ar3k/AthrBT_0x%08x.dfu", - fw_version.rom_version); - - ret = request_firmware(&firmware, filename, &udev->dev); - if (ret < 0) { - BT_ERR("Patch file not found %s", filename); - return ret; - } - - pt_version.rom_version = *(int *)(firmware->data + firmware->size - 8); - pt_version.build_version = *(int *) - (firmware->data + firmware->size - 4); - - if ((pt_version.rom_version != fw_version.rom_version) || - (pt_version.build_version <= fw_version.build_version)) { - BT_ERR("Patch file version did not match with firmware"); - release_firmware(firmware); - return -EINVAL; - } - - ret = ath3k_load_fwfile(udev, firmware); - release_firmware(firmware); - - return ret; -} - -static int ath3k_load_syscfg(struct usb_device *udev) -{ - unsigned char fw_state; - char filename[ATH3K_NAME_LEN] = {0}; - const struct firmware *firmware; - struct ath3k_version fw_version; - int clk_value, ret; - - ret = ath3k_get_state(udev, &fw_state); - if (ret < 0) { - BT_ERR("Can't get state to change to load configuration err"); - return -EBUSY; - } - - ret = ath3k_get_version(udev, &fw_version); - if (ret < 0) { - BT_ERR("Can't get version to change to load ram patch err"); - return ret; - } - - switch (fw_version.ref_clock) { - - case ATH3K_XTAL_FREQ_26M: - clk_value = 26; - break; - case ATH3K_XTAL_FREQ_40M: - clk_value = 40; - break; - case ATH3K_XTAL_FREQ_19P2: - clk_value = 19; - break; - default: - clk_value = 0; - break; - } - - snprintf(filename, ATH3K_NAME_LEN, "ar3k/ramps_0x%08x_%d%s", - fw_version.rom_version, clk_value, ".dfu"); - - ret = request_firmware(&firmware, filename, &udev->dev); - if (ret < 0) { - BT_ERR("Configuration file not found %s", filename); - return ret; - } - - ret = ath3k_load_fwfile(udev, firmware); - release_firmware(firmware); - - return ret; -} - -static int ath3k_probe(struct usb_interface *intf, - const struct usb_device_id *id) -{ - const struct firmware *firmware; - struct usb_device *udev = interface_to_usbdev(intf); - int ret; - - BT_DBG("intf %p id %p", intf, id); - - if (intf->cur_altsetting->desc.bInterfaceNumber != 0) - return -ENODEV; - - /* match device ID in ath3k blacklist table */ - if (!id->driver_info) { - const struct usb_device_id *match; - match = usb_match_id(intf, ath3k_blist_tbl); - if (match) - id = match; - } - - /* load patch and sysconfig files for AR3012 */ - if (id->driver_info & BTUSB_ATH3012) { - - /* New firmware with patch and sysconfig files already loaded */ - if (le16_to_cpu(udev->descriptor.bcdDevice) > 0x0001) - return -ENODEV; - - ret = ath3k_load_patch(udev); - if (ret < 0) { - BT_ERR("Loading patch file failed"); - return ret; - } - ret = ath3k_load_syscfg(udev); - if (ret < 0) { - BT_ERR("Loading sysconfig file failed"); - return ret; - } - ret = ath3k_set_normal_mode(udev); - if (ret < 0) { - BT_ERR("Set normal mode failed"); - return ret; - } - ath3k_switch_pid(udev); - return 0; - } - - ret = request_firmware(&firmware, ATH3K_FIRMWARE, &udev->dev); - if (ret < 0) { - if (ret == -ENOENT) - BT_ERR("Firmware file \"%s\" not found", - ATH3K_FIRMWARE); - else - BT_ERR("Firmware file \"%s\" request failed (err=%d)", - ATH3K_FIRMWARE, ret); - return ret; - } - - ret = ath3k_load_firmware(udev, firmware); - release_firmware(firmware); - - return ret; -} - -static void ath3k_disconnect(struct usb_interface *intf) -{ - BT_DBG("ath3k_disconnect intf %p", intf); -} - -static struct usb_driver ath3k_driver = { - .name = "ath3k", - .probe = ath3k_probe, - .disconnect = ath3k_disconnect, - .id_table = ath3k_table, -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)) - .disable_hub_initiated_lpm = 1, -#endif -}; - -module_usb_driver(ath3k_driver); - -MODULE_AUTHOR("Atheros Communications"); -MODULE_DESCRIPTION("Atheros AR30xx firmware driver"); -MODULE_VERSION(VERSION); -MODULE_LICENSE("GPL"); -MODULE_FIRMWARE(ATH3K_FIRMWARE); diff --git a/drivers/bluetooth/bcm203x.c b/drivers/bluetooth/bcm203x.c deleted file mode 100644 index ee43c60..0000000 --- a/drivers/bluetooth/bcm203x.c +++ /dev/null @@ -1,288 +0,0 @@ -/* - * - * Broadcom Blutonium firmware driver - * - * Copyright (C) 2003 Maxim Krasnyansky - * Copyright (C) 2003 Marcel Holtmann - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include - -#define VERSION "1.2" - -static const struct usb_device_id bcm203x_table[] = { - /* Broadcom Blutonium (BCM2033) */ - { USB_DEVICE(0x0a5c, 0x2033) }, - - { } /* Terminating entry */ -}; - -MODULE_DEVICE_TABLE(usb, bcm203x_table); - -#define BCM203X_ERROR 0 -#define BCM203X_RESET 1 -#define BCM203X_LOAD_MINIDRV 2 -#define BCM203X_SELECT_MEMORY 3 -#define BCM203X_CHECK_MEMORY 4 -#define BCM203X_LOAD_FIRMWARE 5 -#define BCM203X_CHECK_FIRMWARE 6 - -#define BCM203X_IN_EP 0x81 -#define BCM203X_OUT_EP 0x02 - -struct bcm203x_data { - struct usb_device *udev; - - unsigned long state; - - struct work_struct work; - atomic_t shutdown; - - struct urb *urb; - unsigned char *buffer; - - unsigned char *fw_data; - unsigned int fw_size; - unsigned int fw_sent; -}; - -static void bcm203x_complete(struct urb *urb) -{ - struct bcm203x_data *data = urb->context; - struct usb_device *udev = urb->dev; - int len; - - BT_DBG("udev %p urb %p", udev, urb); - - if (urb->status) { - BT_ERR("URB failed with status %d", urb->status); - data->state = BCM203X_ERROR; - return; - } - - switch (data->state) { - case BCM203X_LOAD_MINIDRV: - memcpy(data->buffer, "#", 1); - - usb_fill_bulk_urb(urb, udev, usb_sndbulkpipe(udev, BCM203X_OUT_EP), - data->buffer, 1, bcm203x_complete, data); - - data->state = BCM203X_SELECT_MEMORY; - - /* use workqueue to have a small delay */ - schedule_work(&data->work); - break; - - case BCM203X_SELECT_MEMORY: - usb_fill_int_urb(urb, udev, usb_rcvintpipe(udev, BCM203X_IN_EP), - data->buffer, 32, bcm203x_complete, data, 1); - - data->state = BCM203X_CHECK_MEMORY; - - if (usb_submit_urb(data->urb, GFP_ATOMIC) < 0) - BT_ERR("Can't submit URB"); - break; - - case BCM203X_CHECK_MEMORY: - if (data->buffer[0] != '#') { - BT_ERR("Memory select failed"); - data->state = BCM203X_ERROR; - break; - } - - data->state = BCM203X_LOAD_FIRMWARE; - - case BCM203X_LOAD_FIRMWARE: - if (data->fw_sent == data->fw_size) { - usb_fill_int_urb(urb, udev, usb_rcvintpipe(udev, BCM203X_IN_EP), - data->buffer, 32, bcm203x_complete, data, 1); - - data->state = BCM203X_CHECK_FIRMWARE; - } else { - len = min_t(uint, data->fw_size - data->fw_sent, 4096); - - usb_fill_bulk_urb(urb, udev, usb_sndbulkpipe(udev, BCM203X_OUT_EP), - data->fw_data + data->fw_sent, len, bcm203x_complete, data); - - data->fw_sent += len; - } - - if (usb_submit_urb(