1. 28 Jun, 2012 1 commit
  2. 03 Jun, 2012 2 commits
  3. 02 Jun, 2012 18 commits
  4. 01 Jun, 2012 19 commits
    • Linus Torvalds's avatar
      Merge tag 'fbdev-updates-for-3.5' of git://github.com/schandinat/linux-2.6 · 804ce986
      Linus Torvalds authored
      Pull fbdev updates from Florian Tobias Schandinat:
       - driver for AUO-K1900 and AUO-K1901 epaper controller
       - large updates for OMAP (e.g. decouple HDMI audio and video)
       - some updates for Exynos and SH Mobile
       - various other small fixes and cleanups
      
      * tag 'fbdev-updates-for-3.5' of git://github.com/schandinat/linux-2.6: (130 commits)
        video: bfin_adv7393fb: Fix cleanup code
        video: exynos_dp: reduce delay time when configuring video setting
        video: exynos_dp: move sw reset prioir to enabling sw defined function
        video: exynos_dp: use devm_ functions
        fb: handle NULL pointers in framebuffer release
        OMAPDSS: HDMI: OMAP4: Update IRQ flags for the HPD IRQ request
        OMAPDSS: Apply VENC timings even if panel is disabled
        OMAPDSS: VENC/DISPC: Delay dividing Y resolution for managers connected to VENC
        OMAPDSS: DISPC: Support rotation through TILER
        OMAPDSS: VRFB: remove compiler warnings when CONFIG_BUG=n
        OMAPFB: remove compiler warnings when CONFIG_BUG=n
        OMAPDSS: remove compiler warnings when CONFIG_BUG=n
        OMAPDSS: DISPC: fix usage of dispc_ovl_set_accu_uv
        OMAPDSS: use DSI_FIFO_BUG workaround only for manual update displays
        OMAPDSS: DSI: Support command mode interleaving during video mode blanking periods
        OMAPDSS: DISPC: Update Accumulator configuration for chroma plane
        drivers/video: fsl-diu-fb: don't initialize the THRESHOLDS registers
        video: exynos mipi dsi: support reverse panel type
        video: exynos mipi dsi: Properly interpret the interrupt source flags
        video: exynos mipi dsi: Avoid races in probe()
        ...
      804ce986
    • Linus Torvalds's avatar
      Merge tag 'for-linus-3.5-20120601' of git://git.infradead.org/linux-mtd · f5e7e844
      Linus Torvalds authored
      Pull mtd update from David Woodhouse:
       - More robust parsing especially of xattr data in JFFS2
       - Updates to mxc_nand and gpmi drivers to support new boards and device tree
       - Improve consistency of information about ECC strength in NAND devices
       - Clean up partition handling of plat_nand
       - Support NAND drivers without dedicated access to OOB area
       - BCH hardware ECC support for OMAP
       - Other fixes and cleanups, and a few new device IDs
      
      Fixed trivial conflict in drivers/mtd/nand/gpmi-nand/gpmi-nand.c due to
      added include files next to each other.
      
      * tag 'for-linus-3.5-20120601' of git://git.infradead.org/linux-mtd: (75 commits)
        mtd: mxc_nand: move ecc strengh setup before nand_scan_tail
        mtd: block2mtd: fix recursive call of mtd_writev
        mtd: gpmi-nand: define ecc.strength
        mtd: of_parts: fix breakage in Kconfig
        mtd: nand: fix scan_read_raw_oob
        mtd: docg3 fix in-middle of blocks reads
        mtd: cfi_cmdset_0002: Slight cleanup of fixup messages
        mtd: add fixup for S29NS512P NOR flash.
        jffs2: allow to complete xattr integrity check on first GC scan
        jffs2: allow to discriminate between recoverable and non-recoverable errors
        mtd: nand: omap: add support for hardware BCH ecc
        ARM: OMAP3: gpmc: add BCH ecc api and modes
        mtd: nand: check the return code of 'read_oob/read_oob_raw'
        mtd: nand: remove 'sndcmd' parameter of 'read_oob/read_oob_raw'
        mtd: m25p80: Add support for Winbond W25Q80BW
        jffs2: get rid of jffs2_sync_super
        jffs2: remove unnecessary GC pass on sync
        jffs2: remove unnecessary GC pass on umount
        jffs2: remove lock_super
        mtd: gpmi: add gpmi support for mx6q
        ...
      f5e7e844
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 · 48445159
      Linus Torvalds authored
      Pull x86 platform driver updates from Matthew Garrett:
       "Some significant improvements for the Sony driver on newer machines,
        but other than that mostly just minor fixes and a patch to remove the
        broken rfkill code from the Dell driver."
      
      * 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86: (35 commits)
        apple-gmux: Fix up the suspend/resume patch
        dell-laptop: Remove rfkill code
        toshiba_acpi: Fix mis-merge
        dell-laptop: Add touchpad led support for Dell V3450
        acer-wmi: add 3 laptops to video backlight vendor mode quirk table
        sony-laptop: add touchpad enable/disable function
        sony-laptop: add missing Fn key combos for 0x100 handlers
        sony-laptop: add support for more WWAN modems
        sony-laptop: new keyboard backlight handle
        sony-laptop: add high speed battery charging function
        sony-laptop: support automatic resume on lid open
        sony-laptop: adjust error handling in finding SNC handles
        sony-laptop: add thermal profiles support
        sony-laptop: support battery care functions
        sony-laptop: additional debug statements
        sony-laptop: improve SNC initialization and acpi notify callback code
        sony-laptop: use kstrtoul to parse sysfs values
        sony-laptop: generalise ACPI calls into SNC functions
        sony-laptop: fix return path when no ACPI buffer is allocated
        sony-laptop: use soft rfkill status stored in hw
        ...
      48445159
    • Linus Torvalds's avatar
      Merge branch 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux · af4f8ba3
      Linus Torvalds authored
      Pull slab updates from Pekka Enberg:
       "Mainly a bunch of SLUB fixes from Joonsoo Kim"
      
      * 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux:
        slub: use __SetPageSlab function to set PG_slab flag
        slub: fix a memory leak in get_partial_node()
        slub: remove unused argument of init_kmem_cache_node()
        slub: fix a possible memory leak
        Documentations: Fix slabinfo.c directory in vm/slub.txt
        slub: fix incorrect return type of get_any_partial()
      af4f8ba3
    • H. Peter Anvin's avatar
    • Linus Torvalds's avatar
      Merge branch 'ux500/hickup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · efff0471
      Linus Torvalds authored
      Pull arm fixes for ux500 mismerge mishap from Arnd Bergmann:
       "The device tree conversion for arm/ux500 in 3.5 turns out to be
        incomplete because of a mismerge done by Linus Walleij that I failed
        to notice early enough and that Lee Jones as the original author of
        those patches did not manage to fix during the -next cycle.  While we
        originally to get a much larger set of ux500 device tree enablement
        patches merged, this did not happen in time.
      
        After some discussion at Linaro Connect conference this week, Lee has
        been able to do damage control and provide a series to put the broken
        platform back into usable shape for both DT and non-DT based booting.
      
        This series has not been part of linux-next and is based on top of the
        current state of the upstream kernel rather than an -rc, but this is
        the best we could manage given the earlier breakage."
      
      * 'ux500/hickup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: ux500: Enable probing of pinctrl through Device Tree
        ARM: ux500: Add support for ab8500 regulators into the Device Tree
        ARM: ux500: Provide regulator support for SMSC911x via Device Tree
        ARM: ux500: Allow PRCMU regulator to be probed during a DT enabled boot
        ARM: ux500: Apply db8500-prcmu regulator information to db8500 Device Tree
        ARM: ux500: Only initialise STE's UIBs on boards which support them
        ARM: ux500: Disable platform setup of the ab8500 when DT is enabled
        ARM: ux500: Use correct format for dynamic IRQ assignment
        ARM: ux500: Re-enable SMSC911x platform code registration during non-DT boots
        ARM: ux500: PRCMU related configuration and layout corrections for Device Tree
        ARM: ux500: Remove DB8500 PRCMU platform registration when DT is enabled
        ARM: ux500: Disable SMSC911x platform code registration when DT is enabled
        ARM: ux500: New DT:ed u8500_init_devices for one-by-one device enablement
        ARM: ux500: New DT:ed snowball_platform_devs for one-by-one device enablement
        pinctrl-nomadik: Allow Device Tree driver probing
      efff0471
    • Devendra Naga's avatar
      r8169: call netif_napi_del at errpaths and at driver unload · ad1be8d3
      Devendra Naga authored
      
      
      when register_netdev fails, the init'ed NAPIs by netif_napi_add must be
      deleted with netif_napi_del, and also when driver unloads, it should
      delete the NAPI before unregistering netdevice using unregister_netdev.
      Signed-off-by: default avatarDevendra Naga <devendra.aaru@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ad1be8d3
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 3ded7acf
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "A bunch of fixes:
         - vmware memory corruption
         - ttm spinlock balance
         - cirrus/mgag200 work in the presence of efifb
        and finally Alex and Jerome managed to track down a magic set of bits
        that on certain rv740 and evergreen cards allow the correct use of the
        complete set of render backends, this makes the cards operate
        correctly in a number of scenarios we had issues in before, it also
        manages to boost speed on benchmarks my large amounts on these
        specific gpus."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/edid: Make the header fixup threshold tunable
        drm/radeon: fix regression in UMS CS ioctl
        drm/vmwgfx: Fix nasty write past alloced memory area
        drm/ttm: Fix spinlock imbalance
        drm/radeon: fixup tiling group size and backendmap on r6xx-r9xx (v4)
        drm/radeon: fix HD6790, HD6570 backend programming
        drm/radeon: properly program gart on rv740, juniper, cypress, barts, hemlock
        drm/radeon: fix bank information in tiling config
        drm/mgag200: kick off conflicting framebuffers earlier.
        drm/cirrus: kick out conflicting framebuffers earlier
        cirrus: avoid crash if driver fails to load
      3ded7acf
    • Linus Torvalds's avatar
      Merge tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 37b22400
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "Just a few trivial driver-specific fixes."
      
      * tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hdspm - Work around broken DDS value on PCI RME MADI
        ALSA: usb-audio: fix rate_list memory leak
        ASoC: fsi: bugfix: ensure dma is terminated
        ASoC: fsi: bugfix: correct dma area
        ASoC: fsi: bugfix: enable master clock control on DMA stream
        ASoC: imx-ssi: Use clk_prepare_enable/clk_disable_unprepare
      37b22400
    • H.J. Lu's avatar
      x86, x32, ptrace: Remove PTRACE_ARCH_PRCTL for x32 · bad1a753
      H.J. Lu authored
      When I added x32 ptrace to 3.4 kernel, I also include PTRACE_ARCH_PRCTL
      support for x32 GDB  For ARCH_GET_FS/GS, it takes a pointer to int64.  But
      at user level, ARCH_GET_FS/GS takes a pointer to int32.  So I have to add
      x32 ptrace to glibc to handle it with a temporary int64 passed to kernel and
      copy it back to GDB as int32.  Roland suggested that PTRACE_ARCH_PRCTL
      is obsolete and x32 GDB should use fs_base and gs_base fields of
      user_regs_struct instead.
      
      Accordingly, remove PTRACE_ARCH_PRCTL completely from the x32 code to
      avoid possible memory overrun when pointer to int32 is passed to
      kernel.
      
      Link: http://lkml.kernel.org/r/CAMe9rOpDzHfS7NH7m1vmD9QRw8SSj4Sc%2BaNOgcWm_WJME2eRsQ@mail.gmail.com
      
      Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
      Cc: <stable@vger.kernel.org> v3.4
      bad1a753
    • Sascha Hauer's avatar
      mtd: mxc_nand: move ecc strengh setup before nand_scan_tail · 4a43faf5
      Sascha Hauer authored
      Since commit 6a918bad
      
      , the mxc_nand driver
      fails with:
      
      Driver must set ecc.strength when using hardware ECC
      
      This is because nand_scan_tail checks for correct ecc strength
      settings, so we must set them up before nand_scan_tail.
      Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
      Cc: stable@vger.kernel.org [3.4+]
      Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      4a43faf5
    • Gabor Juhos's avatar
      mtd: block2mtd: fix recursive call of mtd_writev · 2e24e32e
      Gabor Juhos authored
      The 'mtd_writev' interface calls the function assigned
      to the '_write' field of a given mtd device if that is
      not NULL. The block2mtd driver sets the '_writev' field
      to the 'mtd_writev' function itself and thus causes a
      endless loop.
      
      This is caused by 1dbebd32
      
      
      (mtd: harmonize mtd_writev usage).
      
      Remove the assignment from the block2mtd driver to fix the
      issue.
      Signed-off-by: default avatarGabor Juhos <juhosg@openwrt.org>
      Cc: stable@kernel.org [3.3+]
      Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      2e24e32e
    • Marek Vasut's avatar
      mtd: gpmi-nand: define ecc.strength · 5636ce0f
      Marek Vasut authored
      
      
      Fix an issue which was introduced by the recent addition of ecc.strength.
      
      The ecc.strength wasn't set in gpmi-nand, resulting in the following crash:
      [    2.550000] kernel BUG at drivers/mtd/nand/nand_base.c:3347!
      ...
      [    2.550000] [<c020841c>] (nand_scan_tail+0x328/0x650) from [<c02f68e0>] (gpmi_nand_probe+0x43c/0x5a4)
      [    2.550000] [<c02f68e0>] (gpmi_nand_probe+0x43c/0x5a4) from [<c01f6618>] (platform_drv_probe+0x14/0x18)
      [    2.550000] [<c01f6618>] (platform_drv_probe+0x14/0x18) from [<c01f55b0>] (driver_probe_device+0x74/0x1fc)
      [    2.550000] [<c01f55b0>] (driver_probe_device+0x74/0x1fc) from [<c01f57cc>] (__driver_attach+0x94/0x98)
      [    2.550000] [<c01f57cc>] (__driver_attach+0x94/0x98) from [<c01f3d40>] (bus_for_each_dev+0x50/0x80)
      [    2.550000] [<c01f3d40>] (bus_for_each_dev+0x50/0x80) from [<c01f4e18>] (bus_add_driver+0x188/0x25c)
      [    2.550000] [<c01f4e18>] (bus_add_driver+0x188/0x25c) from [<c01f5a70>] (driver_register+0x78/0x138)
      [    2.550000] [<c01f5a70>] (driver_register+0x78/0x138) from [<c043dc7c>] (gpmi_nand_init+0xc/0x30)
      [    2.550000] [<c043dc7c>] (gpmi_nand_init+0xc/0x30) from [<c0008824>] (do_one_initcall+0x108/0x17c)
      [    2.550000] [<c0008824>] (do_one_initcall+0x108/0x17c) from [<c042a8b8>] (kernel_init+0xfc/0x1bc)
      [    2.550000] [<c042a8b8>] (kernel_init+0xfc/0x1bc) from [<c000fab4>] (kernel_thread_exit+0x0/0x8)
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      5636ce0f
    • Matthew Garrett's avatar
      apple-gmux: Fix up the suspend/resume patch · a2f01a89
      Matthew Garrett authored
      
      
      I incorporated the wrong version of the suspend/resume patch for gmux,
      and so lost David Woodhouse's fix to leave the backlight level unchanged
      over suspend/resume. This fixes it up to v2.
      Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
      a2f01a89
    • Frank Svendsboe's avatar
      mtd: of_parts: fix breakage in Kconfig · 2e929d00
      Frank Svendsboe authored
      MTD_OF_PARTS and the default setting is not working due to using 'Y'
      instead of 'y', introduced in commit
      d6137bad
      
      . This made our board, and
      possibly other boards using DTS defined partitions and not having
      CONFIG_MTD_OF_PARTS=y defined in the defconfig, fail to mount root.
      Signed-off-by: default avatarFrank Svendsboe <frank.svendsboe@gmail.com>
      Cc: stable@kernel.org [3.2+]
      Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      2e929d00
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal · 86c47b70
      Linus Torvalds authored
      Pull third pile of signal handling patches from Al Viro:
       "This time it's mostly helpers and conversions to them; there's a lot
        of stuff remaining in the tree, but that'll either go in -rc2
        (isolated bug fixes, ideally via arch maintainers' trees) or will sit
        there until the next cycle."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal:
        x86: get rid of calling do_notify_resume() when returning to kernel mode
        blackfin: check __get_user() return value
        whack-a-mole with TIF_FREEZE
        FRV: Optimise the system call exit path in entry.S [ver #2]
        FRV: Shrink TIF_WORK_MASK [ver #2]
        FRV: Prevent syscall exit tracing and notify_resume at end of kernel exceptions
        new helper: signal_delivered()
        powerpc: get rid of restore_sigmask()
        most of set_current_blocked() callers want SIGKILL/SIGSTOP removed from set
        set_restore_sigmask() is never called without SIGPENDING (and never should be)
        TIF_RESTORE_SIGMASK can be set only when TIF_SIGPENDING is set
        don't call try_to_freeze() from do_signal()
        pull clearing RESTORE_SIGMASK into block_sigmask()
        sh64: failure to build sigframe != signal without handler
        openrisc: tracehook_signal_handler() is supposed to be called on success
        new helper: sigmask_to_save()
        new helper: restore_saved_sigmask()
        new helpers: {clear,test,test_and_clear}_restore_sigmask()
        HAVE_RESTORE_SIGMASK is defined on all architectures now
      86c47b70
    • Eric Dumazet's avatar
      tcp: reflect SYN queue_mapping into SYNACK packets · fff32699
      Eric Dumazet authored
      
      
      While testing how linux behaves on SYNFLOOD attack on multiqueue device
      (ixgbe), I found that SYNACK messages were dropped at Qdisc level
      because we send them all on a single queue.
      
      Obvious choice is to reflect incoming SYN packet @queue_mapping to
      SYNACK packet.
      
      Under stress, my machine could only send 25.000 SYNACK per second (for
      200.000 incoming SYN per second). NIC : ixgbe with 16 rx/tx queues.
      
      After patch, not a single SYNACK is dropped.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Hans Schillstrom <hans.schillstrom@ericsson.com>
      Cc: Jesper Dangaard Brouer <brouer@redhat.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fff32699
    • Eric Dumazet's avatar
      tcp: do not create inetpeer on SYNACK message · 7433819a
      Eric Dumazet authored
      Another problem on SYNFLOOD/DDOS attack is the inetpeer cache getting
      larger and larger, using lots of memory and cpu time.
      
      tcp_v4_send_synack()
      ->inet_csk_route_req()
       ->ip_route_output_flow()
        ->rt_set_nexthop()
         ->rt_init_metrics()
          ->inet_getpeer( create = true)
      
      This is a side effect of commit a4daad6b
      
       (net: Pre-COW metrics for
      TCP) added in 2.6.39
      
      Possible solution :
      
      Instruct inet_csk_route_req() to remove FLOWI_FLAG_PRECOW_METRICS
      
      Before patch :
      
      # grep peer /proc/slabinfo
      inet_peer_cache   4175430 4175430    192   42    2 : tunables    0    0    0 : slabdata  99415  99415      0
      
      Samples: 41K of event 'cycles', Event count (approx.): 30716565122
      +  20,24%      ksoftirqd/0  [kernel.kallsyms]           [k] inet_getpeer
      +   8,19%      ksoftirqd/0  [kernel.kallsyms]           [k] peer_avl_rebalance.isra.1
      +   4,81%      ksoftirqd/0  [kernel.kallsyms]           [k] sha_transform
      +   3,64%      ksoftirqd/0  [kernel.kallsyms]           [k] fib_table_lookup
      +   2,36%      ksoftirqd/0  [ixgbe]                     [k] ixgbe_poll
      +   2,16%      ksoftirqd/0  [kernel.kallsyms]           [k] __ip_route_output_key
      +   2,11%      ksoftirqd/0  [kernel.kallsyms]           [k] kernel_map_pages
      +   2,11%      ksoftirqd/0  [kernel.kallsyms]           [k] ip_route_input_common
      +   2,01%      ksoftirqd/0  [kernel.kallsyms]           [k] __inet_lookup_established
      +   1,83%      ksoftirqd/0  [kernel.kallsyms]           [k] md5_transform
      +   1,75%      ksoftirqd/0  [kernel.kallsyms]           [k] check_leaf.isra.9
      +   1,49%      ksoftirqd/0  [kernel.kallsyms]           [k] ipt_do_table
      +   1,46%      ksoftirqd/0  [kernel.kallsyms]           [k] hrtimer_interrupt
      +   1,45%      ksoftirqd/0  [kernel.kallsyms]           [k] kmem_cache_alloc
      +   1,29%      ksoftirqd/0  [kernel.kallsyms]           [k] inet_csk_search_req
      +   1,29%      ksoftirqd/0  [kernel.kallsyms]           [k] __netif_receive_skb
      +   1,16%      ksoftirqd/0  [kernel.kallsyms]           [k] copy_user_generic_string
      +   1,15%      ksoftirqd/0  [kernel.kallsyms]           [k] kmem_cache_free
      +   1,02%      ksoftirqd/0  [kernel.kallsyms]           [k] tcp_make_synack
      +   0,93%      ksoftirqd/0  [kernel.kallsyms]           [k] _raw_spin_lock_bh
      +   0,87%      ksoftirqd/0  [kernel.kallsyms]           [k] __call_rcu
      +   0,84%      ksoftirqd/0  [kernel.kallsyms]           [k] rt_garbage_collect
      +   0,84%      ksoftirqd/0  [kernel.kallsyms]           [k] fib_rules_lookup
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Hans Schillstrom <hans.schillstrom@ericsson.com>
      Cc: Jesper Dangaard Brouer <brouer@redhat.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7433819a
    • Jason Wang's avatar
      8139cp/8139too: terminate the eeprom access with the right opmode · 0bc777bc
      Jason Wang authored
      
      
      Currently, we terminate the eeprom access through clearing the CS by:
      
      RTL_W8 (Cfg9346, ~EE_CS); or writeb (~EE_CS, ee_addr);
      
      This would left the eeprom into "Config. Register Write Enable:"
      state which is not expcted as the highest two bits were set to
      0x11 ( expected is the "Normal" mode (0x00)). Solving this by write
      0x0 instead of ~EE_CS when terminating the eeprom access.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0bc777bc