~ubuntu-branches/ubuntu/trusty/linux-armadaxp/trusty

« back to all changes in this revision

Viewing changes to drivers/net/wireless/rtlwifi/rtl8192se/sw.c

  • Committer: Package Import Robot
  • Author(s): Michael Casadevall, Bryan Wu, Dann Frazier, Michael Casadeall
  • Date: 2012-03-10 15:00:54 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120310150054-flugb39zon8vvgwe
Tags: 3.2.0-1600.1
[ Bryan Wu ]
* UBUNTU: import debian/debian.env and debian.armadaxp

[ Dann Frazier ]
* ARM: Armada XP: remove trailing '/' in dirnames in mvRules.mk

[ Michael Casadeall ]
* tools: add some tools for Marvell Armada XP processor
* kernel: timer tick hacking from Marvell
* kernel: Sheeva Errata: add delay on Sheeva when powering down
* net: add Marvell NFP netfilter
* net: socket and skb modifications made by Marvell
* miscdevice: add minor IDs for some Marvell Armada drivers
* fs: introduce memory pool for splice()
* video: EDID detection updates from Marvell Armada XP patchset
* video: backlight: add Marvell Dove LCD backlight driver
* video: display: add THS8200 display driver
* video: framebuffer: add Marvell Dove and Armada XP processor onchip LCD controller driver
* usbtest: add Interrupt transfer testing by Marvell Armada XP code
* usb: ehci: add support for Marvell EHCI controler
* tty/serial: 8250: add support for Marvell Armada XP processor and DeviceTree work
* rtc: add support for Marvell Armada XP onchip RTC controller
* net: pppoe: add Marvell ethernet NFP hook in PPPoE networking driver
* mtd: nand: add support for Marvell Armada XP Nand Flash Controller
* mtd: maps: add Marvell Armada XP specific map driver
* mmc: add support for Marvell Armada XP MMC/SD host controller
* i2c: add support for Marvell Armada XP onchip i2c bus controller
* hwmon: add Kconfig option for Armada XP onchip thermal sensor driver
* dmaengine: add Net DMA support for splice and update Marvell XOR DMA engine driver
* ata: add support for Marvell Armada XP SATA controller and update some quirks
* ARM: add Marvell Armada XP machine to mach-types
* ARM: oprofile: add support for Marvell PJ4B core
* ARM: mm: more ARMv6 switches for Marvell Armada XP
* ARM: remove static declaration to allow compilation
* ARM: alignment access fault trick
* ARM: mm: skip some fault fixing when run on NONE SMP ARMv6 mode during early abort event
* ARM: mm: add Marvell Sheeva CPU Architecture for PJ4B
* ARM: introduce optimized copy operation for Marvell Armada XP
* ARM: SAUCE: hardware breakpoint trick for Marvell Armada XP
* ARM: big endian and little endian tricks for Marvell Armada XP
* ARM: SAUCE: Add Marvell Armada XP build rules to arch/arm/kernel/Makefile
* ARM: vfp: add special handling for Marvell Armada XP
* ARM: add support for Marvell U-Boot
* ARM: add mv_controller_num for ARM PCI drivers
* ARM: add support for local PMUs, general SMP tweaks and cache flushing
* ARM: add Marvell device identifies in glue-proc.h
* ARM: add IPC driver support for Marvell platforms
* ARM: add DMA mapping for Marvell platforms
* ARM: add Sheeva errata and PJ4B code for booting
* ARM: update Kconfig and Makefile to include Marvell Armada XP platforms
* ARM: Armada XP: import LSP from Marvell for Armada XP 3.2 kernel enablement

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
 *
28
28
 *****************************************************************************/
29
29
 
 
30
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
31
 
30
32
#include <linux/vmalloc.h>
 
33
#include <linux/module.h>
31
34
 
32
35
#include "../wifi.h"
33
36
#include "../core.h"
158
161
 
159
162
        rtlpci->first_init = true;
160
163
 
 
164
        /* for debug level */
 
165
        rtlpriv->dbg.global_debuglevel = rtlpriv->cfg->mod_params->debug;
161
166
        /* for LPS & IPS */
162
167
        rtlpriv->psc.inactiveps = rtlpriv->cfg->mod_params->inactiveps;
163
168
        rtlpriv->psc.swctrl_lps = rtlpriv->cfg->mod_params->swctrl_lps;
164
169
        rtlpriv->psc.fwctrl_lps = rtlpriv->cfg->mod_params->fwctrl_lps;
 
170
        if (!rtlpriv->psc.inactiveps)
 
171
                pr_info("rtl8192ce: Power Save off (module option)\n");
 
172
        if (!rtlpriv->psc.fwctrl_lps)
 
173
                pr_info("rtl8192ce: FW Power Save off (module option)\n");
165
174
        rtlpriv->psc.reg_fwctrl_lps = 3;
166
175
        rtlpriv->psc.reg_max_lps_awakeintvl = 5;
167
176
        /* for ASPM, you can close aspm through
183
192
                return 1;
184
193
        }
185
194
 
186
 
        printk(KERN_INFO "rtl8192se: Driver for Realtek RTL8192SE/RTL8191SE\n"
187
 
               "           Loading firmware %s\n", rtlpriv->cfg->fw_name);
 
195
        pr_info("Driver for Realtek RTL8192SE/RTL8191SE\n"
 
196
                "Loading firmware %s\n", rtlpriv->cfg->fw_name);
188
197
        /* request fw */
189
198
        err = request_firmware(&firmware, rtlpriv->cfg->fw_name,
190
199
                        rtlpriv->io.dev);
266
275
        .inactiveps = true,
267
276
        .swctrl_lps = true,
268
277
        .fwctrl_lps = false,
 
278
        .debug = DBG_EMERG,
269
279
};
270
280
 
271
281
/* Because memory R/W bursting will cause system hang/crash
298
308
        .maps[EFUSE_HWSET_MAX_SIZE] = HWSET_MAX_SIZE_92S,
299
309
        .maps[EFUSE_MAX_SECTION_MAP] = EFUSE_MAX_SECTION,
300
310
        .maps[EFUSE_REAL_CONTENT_SIZE] = EFUSE_REAL_CONTENT_LEN,
 
311
        .maps[EFUSE_OOB_PROTECT_BYTES_LEN] = EFUSE_OOB_PROTECT_BYTES,
301
312
 
302
313
        .maps[RWCAM] = REG_RWCAM,
303
314
        .maps[WCAMI] = REG_WCAMI,
346
357
        .maps[RTL_IMR_ROK] = IMR_ROK,
347
358
        .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER),
348
359
 
349
 
        .maps[RTL_RC_CCK_RATE1M] = DESC92S_RATE1M,
350
 
        .maps[RTL_RC_CCK_RATE2M] = DESC92S_RATE2M,
351
 
        .maps[RTL_RC_CCK_RATE5_5M] = DESC92S_RATE5_5M,
352
 
        .maps[RTL_RC_CCK_RATE11M] = DESC92S_RATE11M,
353
 
        .maps[RTL_RC_OFDM_RATE6M] = DESC92S_RATE6M,
354
 
        .maps[RTL_RC_OFDM_RATE9M] = DESC92S_RATE9M,
355
 
        .maps[RTL_RC_OFDM_RATE12M] = DESC92S_RATE12M,
356
 
        .maps[RTL_RC_OFDM_RATE18M] = DESC92S_RATE18M,
357
 
        .maps[RTL_RC_OFDM_RATE24M] = DESC92S_RATE24M,
358
 
        .maps[RTL_RC_OFDM_RATE36M] = DESC92S_RATE36M,
359
 
        .maps[RTL_RC_OFDM_RATE48M] = DESC92S_RATE48M,
360
 
        .maps[RTL_RC_OFDM_RATE54M] = DESC92S_RATE54M,
 
360
        .maps[RTL_RC_CCK_RATE1M] = DESC92_RATE1M,
 
361
        .maps[RTL_RC_CCK_RATE2M] = DESC92_RATE2M,
 
362
        .maps[RTL_RC_CCK_RATE5_5M] = DESC92_RATE5_5M,
 
363
        .maps[RTL_RC_CCK_RATE11M] = DESC92_RATE11M,
 
364
        .maps[RTL_RC_OFDM_RATE6M] = DESC92_RATE6M,
 
365
        .maps[RTL_RC_OFDM_RATE9M] = DESC92_RATE9M,
 
366
        .maps[RTL_RC_OFDM_RATE12M] = DESC92_RATE12M,
 
367
        .maps[RTL_RC_OFDM_RATE18M] = DESC92_RATE18M,
 
368
        .maps[RTL_RC_OFDM_RATE24M] = DESC92_RATE24M,
 
369
        .maps[RTL_RC_OFDM_RATE36M] = DESC92_RATE36M,
 
370
        .maps[RTL_RC_OFDM_RATE48M] = DESC92_RATE48M,
 
371
        .maps[RTL_RC_OFDM_RATE54M] = DESC92_RATE54M,
361
372
 
362
 
        .maps[RTL_RC_HT_RATEMCS7] = DESC92S_RATEMCS7,
363
 
        .maps[RTL_RC_HT_RATEMCS15] = DESC92S_RATEMCS15,
 
373
        .maps[RTL_RC_HT_RATEMCS7] = DESC92_RATEMCS7,
 
374
        .maps[RTL_RC_HT_RATEMCS15] = DESC92_RATEMCS15,
364
375
};
365
376
 
366
377
static struct pci_device_id rtl92se_pci_ids[] __devinitdata = {
376
387
 
377
388
MODULE_AUTHOR("lizhaoming       <chaoming_li@realsil.com.cn>");
378
389
MODULE_AUTHOR("Realtek WlanFAE  <wlanfae@realtek.com>");
 
390
MODULE_AUTHOR("Larry Finger     <Larry.Finger@lwfinger.net>");
379
391
MODULE_LICENSE("GPL");
380
392
MODULE_DESCRIPTION("Realtek 8192S/8191S 802.11n PCI wireless");
381
393
MODULE_FIRMWARE("rtlwifi/rtl8192sefw.bin");
382
394
 
383
395
module_param_named(swenc, rtl92se_mod_params.sw_crypto, bool, 0444);
 
396
module_param_named(debug, rtl92se_mod_params.debug, int, 0444);
384
397
module_param_named(ips, rtl92se_mod_params.inactiveps, bool, 0444);
385
398
module_param_named(swlps, rtl92se_mod_params.swctrl_lps, bool, 0444);
386
399
module_param_named(fwlps, rtl92se_mod_params.fwctrl_lps, bool, 0444);
387
 
MODULE_PARM_DESC(swenc, "using hardware crypto (default 0 [hardware])\n");
388
 
MODULE_PARM_DESC(ips, "using no link power save (default 1 is open)\n");
389
 
MODULE_PARM_DESC(swlps, "using linked sw control power save (default 1 is "
390
 
                 "open)\n");
 
400
MODULE_PARM_DESC(swenc, "Set to 1 for software crypto (default 0)\n");
 
401
MODULE_PARM_DESC(ips, "Set to 0 to not use link power save (default 1)\n");
 
402
MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n");
 
403
MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
 
404
MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
391
405
 
 
406
static const struct dev_pm_ops rtlwifi_pm_ops = {
 
407
        .suspend = rtl_pci_suspend,
 
408
        .resume = rtl_pci_resume,
 
409
        .freeze = rtl_pci_suspend,
 
410
        .thaw = rtl_pci_resume,
 
411
        .poweroff = rtl_pci_suspend,
 
412
        .restore = rtl_pci_resume,
 
413
};
392
414
 
393
415
static struct pci_driver rtl92se_driver = {
394
416
        .name = KBUILD_MODNAME,
395
417
        .id_table = rtl92se_pci_ids,
396
418
        .probe = rtl_pci_probe,
397
419
        .remove = rtl_pci_disconnect,
398
 
 
399
 
#ifdef CONFIG_PM
400
 
        .suspend = rtl_pci_suspend,
401
 
        .resume = rtl_pci_resume,
402
 
#endif
403
 
 
 
420
        .driver.pm = &rtlwifi_pm_ops,
404
421
};
405
422
 
406
423
static int __init rtl92se_module_init(void)