kernel: generic: update to 3.8-rc6
authorJonas Gorski <jogo@openwrt.org>
Mon, 4 Feb 2013 10:19:28 +0000 (10:19 +0000)
committerJonas Gorski <jogo@openwrt.org>
Mon, 4 Feb 2013 10:19:28 +0000 (10:19 +0000)
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 35478

25 files changed:
target/linux/generic/patches-3.8/010-mtd_mp25p80_add_gd25q32_gd25q64.patch
target/linux/generic/patches-3.8/230-openwrt_lzma_options.patch
target/linux/generic/patches-3.8/306-mips_mem_functions_performance.patch
target/linux/generic/patches-3.8/470-mtd_m25p80_add_pm25lv_flash_support.patch
target/linux/generic/patches-3.8/473-mtd_m25p80_add_w25q128.patch
target/linux/generic/patches-3.8/476-mtd-m25p80-allow-to-disable-small-sector-erase.patch
target/linux/generic/patches-3.8/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch
target/linux/generic/patches-3.8/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch
target/linux/generic/patches-3.8/531-debloat_lzma.patch
target/linux/generic/patches-3.8/600-netfilter_layer7_2.22.patch
target/linux/generic/patches-3.8/604-netfilter_conntrack_flush.patch
target/linux/generic/patches-3.8/610-netfilter_match_bypass_default_checks.patch
target/linux/generic/patches-3.8/653-disable_netlink_trim.patch
target/linux/generic/patches-3.8/750-hostap_txpower.patch
target/linux/generic/patches-3.8/810-pci_disable_common_quirks.patch
target/linux/generic/patches-3.8/901-debloat_sock_diag.patch
target/linux/generic/patches-3.8/941-ocf_20120127.patch
target/linux/generic/patches-3.8/992-mpcore_wdt_fix_watchdog_counter_loading.patch
target/linux/mvebu/Makefile
target/linux/mvebu/patches-3.8/005-arm_mvebu_use_global_interrupts_for_gpio.patch [deleted file]
target/linux/mvebu/patches-3.8/006-mmc_mvsdio_use_slot_gpio.patch
target/linux/mvebu/patches-3.8/007-mmc_mvsdio_use_slot_gpio_for_cd.patch
target/linux/mvebu/patches-3.8/008-mmc_mvsdio_implement_a_device_tree_binding.patch
target/linux/mvebu/patches-3.8/009-mmc_mvsdio_add_pinctrl.patch
target/linux/mvebu/patches-3.8/035-arm_mvebu_the_core_pcie_driver.patch

index ddc27b104ebef2aaaf3c3e715ceb2da4f9754adc..6ec137ff7414e25369fbd796d082b360f2ee7b2b 100644 (file)
@@ -1,8 +1,8 @@
 --- a/drivers/mtd/devices/m25p80.c
 +++ b/drivers/mtd/devices/m25p80.c
-@@ -651,6 +651,10 @@
+@@ -642,6 +642,10 @@ static const struct spi_device_id m25p_i
        /* Everspin */
-       { "mr25h256", CAT25_INFO(  32 * 1024, 1, 256, 2) },
+       { "mr25h256", CAT25_INFO(  32 * 1024, 1, 256, 2) },
  
 +      /* GigaDevice */
 +      { "gd25q32", INFO(0xc84016, 0, 64 * 1024,  64, SECT_4K) },
index b6bb77023a5ee6304800b4955eaece915fc657c1..55434c13ab2f93fa50486a986598152d3dba9551 100644 (file)
@@ -1,6 +1,6 @@
 --- a/scripts/Makefile.lib
 +++ b/scripts/Makefile.lib
-@@ -299,7 +299,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^) 
+@@ -299,7 +299,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^)
  
  quiet_cmd_lzma = LZMA    $@
  cmd_lzma = (cat $(filter-out FORCE,$^) | \
index e6056fa5c409f1181b854ef7187f1d1ece0249cf..981867742531547c11ed4ac124494f5820eae79a 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/include/asm/string.h
 +++ b/arch/mips/include/asm/string.h
-@@ -133,11 +133,44 @@ strncmp(__const__ char *__cs, __const__ 
+@@ -133,11 +133,44 @@ strncmp(__const__ char *__cs, __const__
  
  #define __HAVE_ARCH_MEMSET
  extern void *memset(void *__s, int __c, size_t __count);
index 7af5e4bd3f3d03ccfef86515ee29cb0e43d97f68..16d92c3139b8c41b54af816fc0a6f63fd31d4b58 100644 (file)
@@ -16,7 +16,7 @@
  };
  
  #define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flags)    \
-@@ -665,6 +667,10 @@ static const struct spi_device_id m25p_i
+@@ -669,6 +671,10 @@ static const struct spi_device_id m25p_i
        { "n25q128a13",  INFO(0x20ba18, 0, 64 * 1024, 256, 0) },
        { "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512, SECT_4K) },
  
@@ -27,7 +27,7 @@
        /* Spansion -- single (large) sector size only, at least
         * for the chips listed here (without boot sectors).
         */
-@@ -909,6 +915,9 @@ static int m25p_probe(struct spi_device 
+@@ -913,6 +919,9 @@ static int m25p_probe(struct spi_device
        if (info->flags & SECT_4K) {
                flash->erase_opcode = OPCODE_BE_4K;
                flash->mtd.erasesize = 4096;
index 515ec10e2adfd39861f67df185b5e64c4c2d865f..896240dbd5052cc6b16e85a3584c687f8223cfb7 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/mtd/devices/m25p80.c
 +++ b/drivers/mtd/devices/m25p80.c
-@@ -750,6 +750,7 @@ static const struct spi_device_id m25p_i
+@@ -754,6 +754,7 @@ static const struct spi_device_id m25p_i
        { "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },
        { "w25q80", INFO(0xef5014, 0, 64 * 1024,  16, SECT_4K) },
        { "w25q80bl", INFO(0xef4014, 0, 64 * 1024,  16, SECT_4K) },
index 83d6aa7e24d340dde575f4ea561d13f9037fae2e..4a8b3d434cfbb2e0db7eb2712a73b778455bffa0 100644 (file)
@@ -30,7 +30,7 @@
  /****************************************************************************/
  
  struct m25p {
-@@ -913,7 +919,7 @@ static int m25p_probe(struct spi_device 
+@@ -917,7 +923,7 @@ static int m25p_probe(struct spi_device
                flash->mtd._write = m25p80_write;
  
        /* prefer "small sector" erase if possible */
index 4767e769b6321a3a40ba2c74fc5ff3c4c5cf0d52..1b814e97fd6a0f8df6c8177f3d5677432e3ab4e7 100644 (file)
@@ -26,7 +26,7 @@ Signed-off-by: Charles Manning <cdhmanning@gmail.com>
  #include <linux/pagemap.h>
  #include <linux/mtd/mtd.h>
  #include <linux/interrupt.h>
-@@ -236,7 +238,9 @@ static int yaffs_file_flush(struct file 
+@@ -236,7 +238,9 @@ static int yaffs_file_flush(struct file
  static int yaffs_file_flush(struct file *file);
  #endif
  
index 7787d500a9470162bde5bf4e6f70d336de587e9d..1ca189d2eec994b0cfdbe18f16a8f971c540c289 100644 (file)
        result = yaffs_rd_chunk_tags_nand(dev,nand_chunk,buffer,&tempTags);
        if(memcmp(buffer,data,dev->data_bytes_per_chunk) ||
                tempTags.obj_id != tags->obj_id ||
-@@ -424,7 +424,7 @@ static int yaffs_write_new_chunk(struct 
+@@ -424,7 +424,7 @@ static int yaffs_write_new_chunk(struct
                 * lot of checks that are most likely not needed.
                 *
                 * Mods to the above
                 * rest of the block.
                 */
  
-@@ -486,7 +486,7 @@ static int yaffs_write_new_chunk(struct 
+@@ -486,7 +486,7 @@ static int yaffs_write_new_chunk(struct
  }
  
  
                                        /* Free chunks already includes softdeleted chunks.
                                         * How ever this chunk is going to soon be really deleted
                                         * which will increment free chunks.
-@@ -2752,7 +2752,7 @@ int yaffs_put_chunk_in_file(yaffs_obj_t 
+@@ -2752,7 +2752,7 @@ int yaffs_put_chunk_in_file(yaffs_obj_t
                                        NULL);
        if (!tn)
                return YAFFS_FAIL;
  #ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
        else if (obj->short_name[0]) {
                yaffs_strcpy(name, obj->short_name);
-@@ -4861,9 +4861,9 @@ int yaffs_set_attribs(yaffs_obj_t *obj, 
+@@ -4861,9 +4861,9 @@ int yaffs_set_attribs(yaffs_obj_t *obj,
        if (valid & ATTR_MODE)
                obj->yst_mode = attr->ia_mode;
        if (valid & ATTR_UID)
  
        if (valid & ATTR_ATIME)
                obj->yst_atime = Y_TIME_CONVERT(attr->ia_atime);
-@@ -4886,9 +4886,9 @@ int yaffs_get_attribs(yaffs_obj_t *obj, 
+@@ -4886,9 +4886,9 @@ int yaffs_get_attribs(yaffs_obj_t *obj,
  
        attr->ia_mode = obj->yst_mode;
        valid |= ATTR_MODE;
index 18e4a51ee35b7226321708364bfa5466ab5c38cd..1e41661ebb60fdbfa7e0ba613e236e4e0d94405a 100644 (file)
  /* LzmaDecode
 --- a/lib/lzma/LzmaDec.c
 +++ b/lib/lzma/LzmaDec.c
-@@ -682,7 +682,7 @@ static void LzmaDec_InitRc(CLzmaDec *p, 
+@@ -682,7 +682,7 @@ static void LzmaDec_InitRc(CLzmaDec *p,
    p->needFlush = 0;
  }
  
  {
    CLzmaProps propNew;
    RINOK(LzmaProps_Decode(&propNew, props, propsSize));
-@@ -944,7 +944,7 @@ SRes LzmaDec_AllocateProbs(CLzmaDec *p, 
+@@ -944,7 +944,7 @@ SRes LzmaDec_AllocateProbs(CLzmaDec *p,
    return SZ_OK;
  }
  
  void MatchFinder_Construct(CMatchFinder *p);
  
  /* Conditions:
-@@ -70,12 +65,6 @@ int MatchFinder_Create(CMatchFinder *p, 
+@@ -70,12 +65,6 @@ int MatchFinder_Create(CMatchFinder *p,
      UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter,
      ISzAlloc *alloc);
  void MatchFinder_Free(CMatchFinder *p, ISzAlloc *alloc);
index 66e95146843fd8d02e273302b9315c6f02ddccdf..08c012cdc786892cde4dab7b2dc3ce0f7931197b 100644 (file)
@@ -30,7 +30,7 @@
        depends on NETFILTER_ADVANCED
 --- a/net/netfilter/Makefile
 +++ b/net/netfilter/Makefile
-@@ -131,6 +131,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT) 
+@@ -131,6 +131,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT)
  obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
index d7f1bd4947921e30668a791b75bf8eaa25987719..3ee5e498295029eb99bc2d5a62b42e1f0b8d9dd2 100644 (file)
@@ -1,6 +1,6 @@
 --- a/net/netfilter/nf_conntrack_standalone.c
 +++ b/net/netfilter/nf_conntrack_standalone.c
-@@ -261,10 +261,34 @@ static int ct_open(struct inode *inode, 
+@@ -267,10 +267,34 @@ static int ct_open(struct inode *inode,
                        sizeof(struct ct_iter_state));
  }
  
@@ -35,7 +35,7 @@
        .llseek  = seq_lseek,
        .release = seq_release_net,
  };
-@@ -366,7 +390,7 @@ static int nf_conntrack_standalone_init_
+@@ -372,7 +396,7 @@ static int nf_conntrack_standalone_init_
  {
        struct proc_dir_entry *pde;
  
index ded6f5f1533dc3cc6eac15c4b9ed671f42b003a0..0081da01df7ccd857a35923aca0ab463d6cfea6a 100644 (file)
  
        counters = alloc_counters(table);
        if (IS_ERR(counters))
-@@ -961,6 +990,14 @@ copy_entries_to_user(unsigned int total_
+@@ -960,6 +989,14 @@ copy_entries_to_user(unsigned int total_
+                       ret = -EFAULT;
                        goto free_counters;
                }
++
 +              flags = e->ip.flags & IPT_F_MASK;
 +              if (copy_to_user(userptr + off
 +                               + offsetof(struct ipt_entry, ip.flags),
@@ -87,7 +88,6 @@
 +                      ret = -EFAULT;
 +                      goto free_counters;
 +              }
-+
                for (i = sizeof(struct ipt_entry);
                     i < e->target_offset;
-                    i += m->u.match_size) {
index c5c967d20bbc6f17ce24daf42deb2e3465266608..870ae944a110a070ef86138d34a1a6b3f2022b69 100644 (file)
@@ -1,6 +1,6 @@
 --- a/net/netlink/af_netlink.c
 +++ b/net/netlink/af_netlink.c
-@@ -898,25 +898,7 @@ void netlink_detachskb(struct sock *sk, 
+@@ -898,25 +898,7 @@ void netlink_detachskb(struct sock *sk,
  
  static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
  {
index a111c8127bc89bb2d81f7280b993121d112e67c7..814406df11a723f7b8fafd71ff4ffbc853fc0e16 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/hostap/hostap_ap.c
 +++ b/drivers/net/wireless/hostap/hostap_ap.c
-@@ -2340,13 +2340,13 @@ int prism2_ap_get_sta_qual(local_info_t 
+@@ -2340,13 +2340,13 @@ int prism2_ap_get_sta_qual(local_info_t
                addr[count].sa_family = ARPHRD_ETHER;
                memcpy(addr[count].sa_data, sta->addr, ETH_ALEN);
                if (sta->last_rx_silence == 0)
index 02d97cc5bfea23eeb7e1a51dd535d397606a5fb7..cd8551bc745fb89c26bda35fc65f52884bf295ef 100644 (file)
@@ -15,7 +15,7 @@
        default y
 --- a/drivers/pci/quirks.c
 +++ b/drivers/pci/quirks.c
-@@ -44,6 +44,7 @@ static void quirk_mmio_always_on(struct 
+@@ -44,6 +44,7 @@ static void quirk_mmio_always_on(struct
  DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID,
                                PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on);
  
index 119760648df123e368af802e82eb0fbbc6e39ef8..4065f8aeae767153fdd066a6300adb15caee889f 100644 (file)
@@ -12,7 +12,7 @@
        help
 --- a/net/core/Makefile
 +++ b/net/core/Makefile
-@@ -8,9 +8,9 @@ obj-y := sock.o request_sock.o skbuff.o 
+@@ -8,9 +8,9 @@ obj-y := sock.o request_sock.o skbuff.o
  obj-$(CONFIG_SYSCTL) += sysctl_net_core.o
  
  obj-y              += dev.o ethtool.o dev_addr_lists.o dst.o netevent.o \
index dec3c282115cd29486218f3c6e178c14e98b27ea..3c2ba0d38d0f27772d78e9945375d2ee39a3d8ce 100644 (file)
@@ -24,7 +24,7 @@
   * All of these routines try to estimate how many bits of randomness a
   * particular randomness source.  They do this by keeping track of the
   * first and second order deltas of the event timings.
-@@ -796,6 +806,63 @@ void add_disk_randomness(struct gendisk 
+@@ -796,6 +806,63 @@ void add_disk_randomness(struct gendisk
  }
  #endif
  
index 611b858268e06e2569b8ebd341fddb538cad12d2..8d7390ebda4a163340af771758260eb64ba6ce8d 100644 (file)
@@ -55,7 +55,7 @@ Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
        { .compatible = "arm,cortex-a9-twd-timer",      },
 --- a/drivers/watchdog/mpcore_wdt.c
 +++ b/drivers/watchdog/mpcore_wdt.c
-@@ -101,9 +101,7 @@ static void mpcore_wdt_keepalive(struct 
+@@ -101,9 +101,7 @@ static void mpcore_wdt_keepalive(struct
  
        spin_lock(&wdt_lock);
        /* Assume prescale is set to 256 */
index 76a88a17ac80964b9a488c75d7421eae9392c4be..52e667b7e978bb5c08d96a90ee326339f36661bf 100644 (file)
@@ -13,7 +13,7 @@ FEATURES:=targz usb jffs2 pci pcie gpio
 CFLAGS:=-Os -pipe -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp
 MAINTAINER:=Florian Fainelli <florian@openwrt.org>
 
-LINUX_VERSION:=3.8-rc4
+LINUX_VERSION:=3.8-rc6
 
 include $(INCLUDE_DIR)/target.mk
 
diff --git a/target/linux/mvebu/patches-3.8/005-arm_mvebu_use_global_interrupts_for_gpio.patch b/target/linux/mvebu/patches-3.8/005-arm_mvebu_use_global_interrupts_for_gpio.patch
deleted file mode 100644 (file)
index e190a33..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-The Armada XP GPIO controller has two ways of notifying interrupts:
-using global interrupts or using per-CPU interrupts. In an attempt to
-use the best available features, the 'marvell,armadaxp-gpio'
-compatible string selects a variant of the gpio-mvebu driver that
-makes use of the per-CPU interrupts.
-
-Unfortunately, this doesn't work properly in a SMP context, because we
-fall into cases where the GPIO interrupt is enabled on CPU X at the
-GPIO controller level, but on CPU Y at the interrupt controller
-level. It is not yet clear how to fix that easily.
-
-So for 3.8, our approach is to switch to global interrupts for GPIOs,
-so that we do not fall into this per-CPU interrupts problem.
-
-This patch therefore fixes GPIO interrupts on Armada XP
-platforms. Without this patch, GPIO interrupts simply do not work
-reliably, because their proper operation depends on which CPU the code
-requesting the interrupt is running.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
----
-This is 3.8-rc material.
----
- arch/arm/boot/dts/armada-xp-mv78230.dtsi |   14 ++++++--------
- arch/arm/boot/dts/armada-xp-mv78260.dtsi |   21 +++++++++------------
- arch/arm/boot/dts/armada-xp-mv78460.dtsi |   21 +++++++++------------
- 3 files changed, 24 insertions(+), 32 deletions(-)
-
---- a/arch/arm/boot/dts/armada-xp-mv78230.dtsi
-+++ b/arch/arm/boot/dts/armada-xp-mv78230.dtsi
-@@ -50,27 +50,25 @@
-               };
-               gpio0: gpio@d0018100 {
--                      compatible = "marvell,armadaxp-gpio";
--                      reg = <0xd0018100 0x40>,
--                          <0xd0018800 0x30>;
-+                      compatible = "marvell,orion-gpio";
-+                      reg = <0xd0018100 0x40>;
-                       ngpios = <32>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupts-cells = <2>;
--                      interrupts = <16>, <17>, <18>, <19>;
-+                      interrupts = <82>, <83>, <84>, <85>;
-               };
-               gpio1: gpio@d0018140 {
--                      compatible = "marvell,armadaxp-gpio";
--                      reg = <0xd0018140 0x40>,
--                          <0xd0018840 0x30>;
-+                      compatible = "marvell,orion-gpio";
-+                      reg = <0xd0018140 0x40>;
-                       ngpios = <17>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupts-cells = <2>;
--                      interrupts = <20>, <21>, <22>;
-+                      interrupts = <87>, <88>, <89>;
-               };
-       };
- };
---- a/arch/arm/boot/dts/armada-xp-mv78260.dtsi
-+++ b/arch/arm/boot/dts/armada-xp-mv78260.dtsi
-@@ -51,39 +51,36 @@
-               };
-               gpio0: gpio@d0018100 {
--                      compatible = "marvell,armadaxp-gpio";
--                      reg = <0xd0018100 0x40>,
--                          <0xd0018800 0x30>;
-+                      compatible = "marvell,orion-gpio";
-+                      reg = <0xd0018100 0x40>;
-                       ngpios = <32>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupts-cells = <2>;
--                      interrupts = <16>, <17>, <18>, <19>;
-+                      interrupts = <82>, <83>, <84>, <85>;
-               };
-               gpio1: gpio@d0018140 {
--                      compatible = "marvell,armadaxp-gpio";
--                      reg = <0xd0018140 0x40>,
--                          <0xd0018840 0x30>;
-+                      compatible = "marvell,orion-gpio";
-+                      reg = <0xd0018140 0x40>;
-                       ngpios = <32>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupts-cells = <2>;
--                      interrupts = <20>, <21>, <22>, <23>;
-+                      interrupts = <87>, <88>, <89>, <90>;
-               };
-               gpio2: gpio@d0018180 {
--                      compatible = "marvell,armadaxp-gpio";
--                      reg = <0xd0018180 0x40>,
--                          <0xd0018870 0x30>;
-+                      compatible = "marvell,orion-gpio";
-+                      reg = <0xd0018180 0x40>;
-                       ngpios = <3>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupts-cells = <2>;
--                      interrupts = <24>;
-+                      interrupts = <91>;
-               };
-               ethernet@d0034000 {
---- a/arch/arm/boot/dts/armada-xp-mv78460.dtsi
-+++ b/arch/arm/boot/dts/armada-xp-mv78460.dtsi
-@@ -66,39 +66,36 @@
-               };
-               gpio0: gpio@d0018100 {
--                      compatible = "marvell,armadaxp-gpio";
--                      reg = <0xd0018100 0x40>,
--                          <0xd0018800 0x30>;
-+                      compatible = "marvell,orion-gpio";
-+                      reg = <0xd0018100 0x40>;
-                       ngpios = <32>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupts-cells = <2>;
--                      interrupts = <16>, <17>, <18>, <19>;
-+                      interrupts = <82>, <83>, <84>, <85>;
-               };
-               gpio1: gpio@d0018140 {
--                      compatible = "marvell,armadaxp-gpio";
--                      reg = <0xd0018140 0x40>,
--                          <0xd0018840 0x30>;
-+                      compatible = "marvell,orion-gpio";
-+                      reg = <0xd0018140 0x40>;
-                       ngpios = <32>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupts-cells = <2>;
--                      interrupts = <20>, <21>, <22>, <23>;
-+                      interrupts = <87>, <88>, <89>, <90>;
-               };
-               gpio2: gpio@d0018180 {
--                      compatible = "marvell,armadaxp-gpio";
--                      reg = <0xd0018180 0x40>,
--                          <0xd0018870 0x30>;
-+                      compatible = "marvell,orion-gpio";
-+                      reg = <0xd0018180 0x40>;
-                       ngpios = <3>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupts-cells = <2>;
--                      interrupts = <24>;
-+                      interrupts = <91>;
-               };
-               ethernet@d0034000 {
index 35a2d8e5282f32e58485f02fb9c5aebd00f7d946..7bb8c20d5ddc83997be3bb5139b8fce503736cf0 100644 (file)
@@ -1,3 +1,20 @@
+From patchwork Wed Jan 16 13:13:57 2013
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [2/5] mmc: mvsdio: use slot-gpio infrastructure for write protect gpio
+Date: Wed, 16 Jan 2013 13:13:57 -0000
+From: Andrew Lunn <andrew@lunn.ch>
+X-Patchwork-Id: 1987931
+Message-Id: <1358342040-7130-3-git-send-email-andrew@lunn.ch>
+To: Jason Cooper <jason@lakedaemon.net>
+Cc: linux ARM <linux-arm-kernel@lists.infradead.org>,
+ linux-mmc@vger.kernel.org, linux@arm.linux.org.uk,
+ Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
+ Andrew Lunn <andrew@lunn.ch>
+
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
 The MMC core subsystem provides in drivers/mmc/core/slot-gpio.c a nice
 set of helper functions to simplify the management of the write
 protect GPIO in MMC host drivers. This patch migrates the mvsdio
@@ -6,9 +23,14 @@ simpler, and therefore ease the process of adding a Device Tree
 binding for this driver.
 
 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Andrew Lunn <andrew@lunn.ch>
+Tested-by: Stefan Peter <s.peter@mpl.ch>
+Tested-by: Florian Fainelli <florian@openwrt.org>
+Signed-off-by: Jason Cooper <jason@lakedaemon.net>
+
 ---
- drivers/mmc/host/mvsdio.c |   34 +++++-----------------------------
- 1 file changed, 5 insertions(+), 29 deletions(-)
+drivers/mmc/host/mvsdio.c |   30 +++++-------------------------
+ 1 file changed, 5 insertions(+), 25 deletions(-)
 
 --- a/drivers/mmc/host/mvsdio.c
 +++ b/drivers/mmc/host/mvsdio.c
@@ -20,15 +42,15 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  
  #include <asm/sizes.h>
  #include <asm/unaligned.h>
-@@ -54,7 +55,6 @@ struct mvsd_host {
-       int irq;
+@@ -52,7 +53,6 @@ struct mvsd_host {
+       struct device *dev;
        struct clk *clk;
        int gpio_card_detect;
 -      int gpio_write_protect;
  };
  
  #define mvsd_write(offs, val) writel(val, iobase + (offs))
-@@ -566,20 +566,6 @@ static void mvsd_enable_sdio_irq(struct
+@@ -564,20 +564,6 @@ static void mvsd_enable_sdio_irq(struct
        spin_unlock_irqrestore(&host->lock, flags);
  }
  
@@ -49,7 +71,7 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  static void mvsd_power_up(struct mvsd_host *host)
  {
        void __iomem *iobase = host->base;
-@@ -676,7 +662,7 @@ static void mvsd_set_ios(struct mmc_host
+@@ -674,7 +660,7 @@ static void mvsd_set_ios(struct mmc_host
  
  static const struct mmc_host_ops mvsd_ops = {
        .request                = mvsd_request,
@@ -58,15 +80,15 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
        .set_ios                = mvsd_set_ios,
        .enable_sdio_irq        = mvsd_enable_sdio_irq,
  };
-@@ -798,15 +784,7 @@ static int __init mvsd_probe(struct plat
+@@ -793,15 +779,7 @@ static int __init mvsd_probe(struct plat
        if (!host->gpio_card_detect)
                mmc->caps |= MMC_CAP_NEEDS_POLL;
  
 -      if (mvsd_data->gpio_write_protect) {
--              ret = gpio_request(mvsd_data->gpio_write_protect,
--                                 DRIVER_NAME " wp");
+-              ret = devm_gpio_request_one(&pdev->dev,
+-                                          mvsd_data->gpio_write_protect,
+-                                          GPIOF_IN, DRIVER_NAME " wp");
 -              if (ret == 0) {
--                      gpio_direction_input(mvsd_data->gpio_write_protect);
 -                      host->gpio_write_protect =
 -                              mvsd_data->gpio_write_protect;
 -              }
@@ -75,23 +97,19 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  
        setup_timer(&host->timer, mvsd_timeout_timer, (unsigned long)host);
        platform_set_drvdata(pdev, mmc);
-@@ -831,8 +809,7 @@ out:
-                       free_irq(gpio_to_irq(host->gpio_card_detect), host);
-                       gpio_free(host->gpio_card_detect);
-               }
--              if (host->gpio_write_protect)
--                      gpio_free(host->gpio_write_protect);
-+              mmc_gpio_free_ro(mmc);
-               if (host->base)
-                       iounmap(host->base);
-       }
-@@ -861,8 +838,7 @@ static int __exit mvsd_remove(struct pla
-               }
-               mmc_remove_host(mmc);
-               free_irq(host->irq, host);
--              if (host->gpio_write_protect)
--                      gpio_free(host->gpio_write_protect);
+@@ -820,6 +798,7 @@ static int __init mvsd_probe(struct plat
+ out:
+       if (mmc) {
 +              mmc_gpio_free_ro(mmc);
-               del_timer_sync(&host->timer);
-               mvsd_power_down(host);
-               iounmap(host->base);
+               if (!IS_ERR(host->clk))
+                       clk_disable_unprepare(host->clk);
+               mmc_free_host(mmc);
+@@ -834,6 +813,7 @@ static int __exit mvsd_remove(struct pla
+       struct mvsd_host *host = mmc_priv(mmc);
++      mmc_gpio_free_ro(mmc);
+       mmc_remove_host(mmc);
+       del_timer_sync(&host->timer);
+       mvsd_power_down(host);
index bede3bf7e3601ea3f6a583b71c8536d96bf17ca1..a1b3b8723ae3cd0d0050d981b3e868579c99d5af 100644 (file)
@@ -1,3 +1,20 @@
+From patchwork Wed Jan 16 13:13:58 2013
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [3/5] mmc: mvsdio: use slot-gpio for card detect gpio
+Date: Wed, 16 Jan 2013 13:13:58 -0000
+From: Andrew Lunn <andrew@lunn.ch>
+X-Patchwork-Id: 1987941
+Message-Id: <1358342040-7130-4-git-send-email-andrew@lunn.ch>
+To: Jason Cooper <jason@lakedaemon.net>
+Cc: linux ARM <linux-arm-kernel@lists.infradead.org>,
+ linux-mmc@vger.kernel.org, linux@arm.linux.org.uk,
+ Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
+ Andrew Lunn <andrew@lunn.ch>
+
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
 The MMC core subsystem provides in drivers/mmc/core/slot-gpio.c a nice
 set of helper functions to simplify the management of the card detect
 GPIO in MMC host drivers. This patch migrates the mvsdio driver to
@@ -6,21 +23,26 @@ therefore ease the process of adding a Device Tree binding for this
 driver.
 
 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Andrew Lunn <andrew@lunn.ch>
+Tested-by: Stefan Peter <s.peter@mpl.ch>
+Tested-by: Florian Fainelli <florian@openwrt.org>
+Signed-off-by: Jason Cooper <jason@lakedaemon.net>
+
 ---
- drivers/mmc/host/mvsdio.c |   44 +++++++++-----------------------------------
- 1 file changed, 9 insertions(+), 35 deletions(-)
+drivers/mmc/host/mvsdio.c |   39 +++++++++------------------------------
+ 1 file changed, 9 insertions(+), 30 deletions(-)
 
 --- a/drivers/mmc/host/mvsdio.c
 +++ b/drivers/mmc/host/mvsdio.c
-@@ -54,7 +54,6 @@ struct mvsd_host {
-       struct resource *res;
-       int irq;
+@@ -52,7 +52,6 @@ struct mvsd_host {
+       struct mmc_host *mmc;
+       struct device *dev;
        struct clk *clk;
 -      int gpio_card_detect;
  };
  
  #define mvsd_write(offs, val) writel(val, iobase + (offs))
-@@ -540,13 +539,6 @@ static void mvsd_timeout_timer(unsigned
+@@ -538,13 +537,6 @@ static void mvsd_timeout_timer(unsigned
                mmc_request_done(host->mmc, mrq);
  }
  
@@ -34,24 +56,27 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  static void mvsd_enable_sdio_irq(struct mmc_host *mmc, int enable)
  {
        struct mvsd_host *host = mmc_priv(mmc);
-@@ -765,23 +757,11 @@ static int __init mvsd_probe(struct plat
+@@ -757,26 +749,11 @@ static int __init mvsd_probe(struct plat
+       if (!IS_ERR(host->clk))
                clk_prepare_enable(host->clk);
-       }
  
 -      if (mvsd_data->gpio_card_detect) {
--              ret = gpio_request(mvsd_data->gpio_card_detect,
--                                 DRIVER_NAME " cd");
+-              ret = devm_gpio_request_one(&pdev->dev,
+-                                          mvsd_data->gpio_card_detect,
+-                                          GPIOF_IN, DRIVER_NAME " cd");
 -              if (ret == 0) {
--                      gpio_direction_input(mvsd_data->gpio_card_detect);
 -                      irq = gpio_to_irq(mvsd_data->gpio_card_detect);
--                      ret = request_irq(irq, mvsd_card_detect_irq,
--                                        IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING,
--                                        DRIVER_NAME " cd", host);
+-                      ret = devm_request_irq(&pdev->dev, irq,
+-                                             mvsd_card_detect_irq,
+-                                             IRQ_TYPE_EDGE_RISING |
+-                                             IRQ_TYPE_EDGE_FALLING,
+-                                             DRIVER_NAME " cd", host);
 -                      if (ret == 0)
 -                              host->gpio_card_detect =
 -                                      mvsd_data->gpio_card_detect;
 -                      else
--                              gpio_free(mvsd_data->gpio_card_detect);
+-                              devm_gpio_free(&pdev->dev,
+-                                             mvsd_data->gpio_card_detect);
 -              }
 -      }
 -      if (!host->gpio_card_detect)
@@ -63,7 +88,7 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
                mmc->caps |= MMC_CAP_NEEDS_POLL;
  
        mmc_gpio_request_ro(mmc, mvsd_data->gpio_write_protect);
-@@ -794,9 +774,9 @@ static int __init mvsd_probe(struct plat
+@@ -789,15 +766,16 @@ static int __init mvsd_probe(struct plat
  
        pr_notice("%s: %s driver initialized, ",
                           mmc_hostname(mmc), DRIVER_NAME);
@@ -75,27 +100,18 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
        else
                printk("lacking card detect (fall back to polling)\n");
        return 0;
-@@ -805,10 +785,7 @@ out:
-       if (host) {
-               if (host->irq)
-                       free_irq(host->irq, host);
--              if (host->gpio_card_detect) {
--                      free_irq(gpio_to_irq(host->gpio_card_detect), host);
--                      gpio_free(host->gpio_card_detect);
--              }
-+              mmc_gpio_free_cd(mmc);
-               mmc_gpio_free_ro(mmc);
-               if (host->base)
-                       iounmap(host->base);
-@@ -832,10 +809,7 @@ static int __exit mvsd_remove(struct pla
-       if (mmc) {
-               struct mvsd_host *host = mmc_priv(mmc);
  
--              if (host->gpio_card_detect) {
--                      free_irq(gpio_to_irq(host->gpio_card_detect), host);
--                      gpio_free(host->gpio_card_detect);
--              }
+ out:
+       if (mmc) {
 +              mmc_gpio_free_cd(mmc);
-               mmc_remove_host(mmc);
-               free_irq(host->irq, host);
                mmc_gpio_free_ro(mmc);
+               if (!IS_ERR(host->clk))
+                       clk_disable_unprepare(host->clk);
+@@ -813,6 +791,7 @@ static int __exit mvsd_remove(struct pla
+       struct mvsd_host *host = mmc_priv(mmc);
++      mmc_gpio_free_cd(mmc);
+       mmc_gpio_free_ro(mmc);
+       mmc_remove_host(mmc);
+       del_timer_sync(&host->timer);
index 7aa7856675fb3633e850d299f6ccb8a31eba2393..baec5a1467010618ac78e38f850f34f30cc0c9e8 100644 (file)
@@ -1,3 +1,20 @@
+From patchwork Wed Jan 16 13:13:59 2013
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [4/5] mmc: mvsdio: implement a Device Tree binding
+Date: Wed, 16 Jan 2013 13:13:59 -0000
+From: Andrew Lunn <andrew@lunn.ch>
+X-Patchwork-Id: 1987921
+Message-Id: <1358342040-7130-5-git-send-email-andrew@lunn.ch>
+To: Jason Cooper <jason@lakedaemon.net>
+Cc: linux ARM <linux-arm-kernel@lists.infradead.org>,
+ linux-mmc@vger.kernel.org, linux@arm.linux.org.uk,
+ Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
+ Andrew Lunn <andrew@lunn.ch>
+
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
 This patch adds a simple Device Tree binding for the mvsdio driver, as
 well as the necessary documentation for it. Compatibility with non-DT
 platforms is preserved, by keeping the platform_data based
@@ -11,10 +28,15 @@ reference is not mandatory, but the clock frequency must be passed in
 the "clock" field of the mvsdio_platform_data structure.
 
 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Andrew Lunn <andrew@lunn.ch>
+Tested-by: Stefan Peter <s.peter@mpl.ch>
+Tested-by: Florian Fainelli <florian@openwrt.org>
+Signed-off-by: Jason Cooper <jason@lakedaemon.net>
+
 ---
- .../devicetree/bindings/mmc/orion-sdio.txt         |   17 ++++++
- drivers/mmc/host/mvsdio.c                          |   60 +++++++++++++++-----
- 2 files changed, 62 insertions(+), 15 deletions(-)
+.../devicetree/bindings/mmc/orion-sdio.txt         |   17 ++++++
+ drivers/mmc/host/mvsdio.c                          |   62 +++++++++++++++-----
+ 2 files changed, 64 insertions(+), 15 deletions(-)
  create mode 100644 Documentation/devicetree/bindings/mmc/orion-sdio.txt
 
 --- /dev/null
@@ -48,7 +70,7 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  #include <linux/mmc/host.h>
  #include <linux/mmc/slot-gpio.h>
  
-@@ -683,17 +685,17 @@ mv_conf_mbus_windows(struct mvsd_host *h
+@@ -681,17 +683,17 @@ mv_conf_mbus_windows(struct mvsd_host *h
  
  static int __init mvsd_probe(struct platform_device *pdev)
  {
@@ -68,19 +90,20 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 +      if (!r || irq < 0)
                return -ENXIO;
  
-       r = request_mem_region(r->start, SZ_1K, DRIVER_NAME);
-@@ -710,7 +712,35 @@ static int __init mvsd_probe(struct plat
+       mmc = mmc_alloc_host(sizeof(struct mvsd_host), &pdev->dev);
+@@ -703,8 +705,37 @@ static int __init mvsd_probe(struct plat
+       host = mmc_priv(mmc);
        host->mmc = mmc;
        host->dev = &pdev->dev;
-       host->res = r;
 -      host->base_clock = mvsd_data->clock / 2;
+-      host->clk = ERR_PTR(-EINVAL);
 +
 +      /* Some non-DT platforms do not pass a clock, and the clock
 +         frequency is passed through platform_data. On DT platforms,
 +         a clock must always be passed, even if there is no gatable
 +         clock associated to the SDIO interface (it can simply be a
 +         fixed rate clock). */
-+      host->clk = clk_get(&pdev->dev, NULL);
++      host->clk = devm_clk_get(&pdev->dev, NULL);
 +      if (!IS_ERR(host->clk))
 +              clk_prepare_enable(host->clk);
 +
@@ -97,8 +120,10 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 +      } else {
 +              const struct mvsdio_platform_data *mvsd_data;
 +              mvsd_data = pdev->dev.platform_data;
-+              if (!mvsd_data)
-+                      return -ENXIO;
++              if (!mvsd_data) {
++                      ret = -ENXIO;
++                      goto out;
++              }
 +              host->base_clock = mvsd_data->clock / 2;
 +              gpio_card_detect = mvsd_data->gpio_card_detect;
 +              gpio_write_protect = mvsd_data->gpio_write_protect;
@@ -106,16 +131,15 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  
        mmc->ops = &mvsd_ops;
  
-@@ -750,21 +780,14 @@ static int __init mvsd_probe(struct plat
-       } else
-               host->irq = irq;
+@@ -743,20 +774,14 @@ static int __init mvsd_probe(struct plat
+               goto out;
+       }
  
 -      /* Not all platforms can gate the clock, so it is not
 -         an error if the clock does not exists. */
--      host->clk = clk_get(&pdev->dev, NULL);
--      if (!IS_ERR(host->clk)) {
+-      host->clk = devm_clk_get(&pdev->dev, NULL);
+-      if (!IS_ERR(host->clk))
 -              clk_prepare_enable(host->clk);
--      }
 -
 -      if (gpio_is_valid(mvsd_data->gpio_card_detect)) {
 -              ret = mmc_gpio_request_cd(mmc, mvsd_data->gpio_card_detect);
@@ -131,7 +155,7 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  
        setup_timer(&host->timer, mvsd_timeout_timer, (unsigned long)host);
        platform_set_drvdata(pdev, mmc);
-@@ -776,7 +799,7 @@ static int __init mvsd_probe(struct plat
+@@ -768,7 +793,7 @@ static int __init mvsd_probe(struct plat
                           mmc_hostname(mmc), DRIVER_NAME);
        if (!(mmc->caps & MMC_CAP_NEEDS_POLL))
                printk("using GPIO %d for card detection\n",
@@ -140,7 +164,7 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
        else
                printk("lacking card detect (fall back to polling)\n");
        return 0;
-@@ -855,12 +878,19 @@ static int mvsd_resume(struct platform_d
+@@ -832,12 +857,19 @@ static int mvsd_resume(struct platform_d
  #define mvsd_resume   NULL
  #endif
  
index 9f98bda135816e72f11f47eb772f3e3b6ca170ad..394ca5b9fa60a423501cd2c919f69fb2575a5a50 100644 (file)
@@ -1,3 +1,20 @@
+From patchwork Wed Jan 16 13:14:00 2013
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [5/5] mmc: mvsdio: add pinctrl integration
+Date: Wed, 16 Jan 2013 13:14:00 -0000
+From: Andrew Lunn <andrew@lunn.ch>
+X-Patchwork-Id: 1987901
+Message-Id: <1358342040-7130-6-git-send-email-andrew@lunn.ch>
+To: Jason Cooper <jason@lakedaemon.net>
+Cc: linux ARM <linux-arm-kernel@lists.infradead.org>,
+ linux-mmc@vger.kernel.org, linux@arm.linux.org.uk,
+ Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
+ Andrew Lunn <andrew@lunn.ch>
+
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
 On many Marvell SoCs, the pins used for the SDIO interface are part of
 the MPP pins, that are muxable pins. In order to get the muxing of
 those pins correct, this commit integrates the mvsdio driver with the
@@ -9,8 +26,13 @@ platforms have yet been fully converted to using the pinctrl
 infrastructure.
 
 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Andrew Lunn <andrew@lunn.ch>
+Tested-by: Stefan Peter <s.peter@mpl.ch>
+Tested-by: Florian Fainelli <florian@openwrt.org>
+Signed-off-by: Jason Cooper <jason@lakedaemon.net>
+
 ---
- drivers/mmc/host/mvsdio.c |    6 ++++++
+drivers/mmc/host/mvsdio.c |    6 ++++++
  1 file changed, 6 insertions(+)
 
 --- a/drivers/mmc/host/mvsdio.c
@@ -23,7 +45,7 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  
  #include <asm/sizes.h>
  #include <asm/unaligned.h>
-@@ -692,6 +693,7 @@ static int __init mvsd_probe(struct plat
+@@ -690,6 +691,7 @@ static int __init mvsd_probe(struct plat
        struct resource *r;
        int ret, irq;
        int gpio_card_detect, gpio_write_protect;
@@ -31,9 +53,9 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  
        r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        irq = platform_get_irq(pdev, 0);
-@@ -713,6 +715,10 @@ static int __init mvsd_probe(struct plat
+@@ -706,6 +708,10 @@ static int __init mvsd_probe(struct plat
+       host->mmc = mmc;
        host->dev = &pdev->dev;
-       host->res = r;
  
 +      pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
 +      if (IS_ERR(pinctrl))
index 1cc5f5a0c5aa3a2fc5eeadac37f0d44d71af4779..aa4e1f426d88e958fc478283a00cb8c69f48499a 100644 (file)
@@ -158,7 +158,7 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 +
 --- a/arch/arm/mach-mvebu/Makefile
 +++ b/arch/arm/mach-mvebu/Makefile
-@@ -5,3 +5,4 @@ obj-y += system-controller.o
+@@ -7,3 +7,4 @@ obj-y += system-controller.o
  obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o irq-armada-370-xp.o addr-map.o coherency.o coherency_ll.o pmsu.o
  obj-$(CONFIG_SMP)                += platsmp.o headsmp.o
  obj-$(CONFIG_HOTPLUG_CPU)        += hotplug.o