]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
kernel3: updated to 2.6.42.20 (aka 3.2.20).
authorArne Fitzenreiter <arne_f@ipfire.org>
Sat, 16 Jun 2012 12:58:35 +0000 (14:58 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sat, 16 Jun 2012 12:58:35 +0000 (14:58 +0200)
kernel3 is used for raspberry pi and pandaboard yet.

config/kernel/kernel.config.armv5tel-ipfire-rpi
lfs/linux3
src/patches/linux-3.2-bcm2708-sdhci_patches.patch [new file with mode: 0644]

index c5a9062cb2a7a6c6bc7f5c7ef05b7ac8d2bcc23e..fa286d9314a111ccc9ea83b1598ce94766e59ccc 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 2.6.42.18 Kernel Configuration
+# Linux/arm 2.6.42.20 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -122,10 +122,9 @@ CONFIG_PERF_USE_VMALLOC=y
 # CONFIG_PERF_EVENTS is not set
 # CONFIG_PERF_COUNTERS is not set
 CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLUB_DEBUG=y
 # CONFIG_COMPAT_BRK is not set
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
 # CONFIG_SLOB is not set
 # CONFIG_PROFILING is not set
 CONFIG_HAVE_OPROFILE=y
@@ -2734,28 +2733,6 @@ CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
 # CONFIG_USB_GADGET is not set
-# CONFIG_USB_FUSB300 is not set
-# CONFIG_USB_R8A66597 is not set
-# CONFIG_USB_M66592 is not set
-# CONFIG_USB_NET2272 is not set
-# CONFIG_USB_DUMMY_HCD is not set
-# CONFIG_USB_ZERO is not set
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_ETH is not set
-# CONFIG_USB_G_NCM is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FUNCTIONFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_MASS_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_CDC_COMPOSITE is not set
-# CONFIG_USB_G_ACM_MS is not set
-# CONFIG_USB_G_MULTI is not set
-# CONFIG_USB_G_HID is not set
-# CONFIG_USB_G_DBGP is not set
-# CONFIG_USB_G_WEBCAM is not set
 
 #
 # OTG and related infrastructure
@@ -3205,8 +3182,7 @@ CONFIG_SCHED_DEBUG=y
 # CONFIG_SCHEDSTATS is not set
 CONFIG_TIMER_STATS=y
 # CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
 # CONFIG_DEBUG_KMEMLEAK is not set
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
index e049be0f288b1ed9b77f931cec2c8a9ee967cd9b..94233dc5479cd4b99e1e68e3589385dc177464fe 100644 (file)
 
 include Config
 
-PATCHLEVEL = .19
+PATCHLEVEL = .20
 
-VER           = 2.6.42.19
+VER           = 2.6.42.20
 
-XVERS         = 3.2.19
+XVERS         = 3.2.20
 XVERSION      = 2
 XPATCHLEVEL   = 6
 XSUBLEVEL     = 42
-XEXTRAVERSION = .19
+XEXTRAVERSION = .20
 
-RPI_PATCHES = linux-3.2-bootc-5b84c25
+RPI_PATCHES = linux-3.2-bootc-6ab6087
 
 THISAPP    = linux-$(VER)
 DL_FILE    = linux-$(XVERS).tar.bz2
@@ -83,9 +83,8 @@ objects =$(DL_FILE) \
 $(DL_FILE)                             = $(URL_IPFIRE)/$(DL_FILE)
 rpi-patches-$(RPI_PATCHES).patch.xz    = $(URL_IPFIRE)/rpi-patches-$(RPI_PATCHES).patch.xz
 
-$(DL_FILE)_MD5                         = 64c732cb425eb8787b841d11309bb335
-rpi-patches-$(RPI_PATCHES).patch.xz_MD5        = 0b2fac563b093465f5c6b3d571e57399
-
+$(DL_FILE)_MD5                         = bd0063a747c3ea0ecdcc85a512d9760a
+rpi-patches-$(RPI_PATCHES).patch.xz_MD5        = fd87188cbd0b168a2b335db3d661ece9
 
 install : $(TARGET)
 
@@ -174,6 +173,7 @@ ifeq "$(KCFG)" "-rpi"
        cd $(DIR_APP) && xzcat $(DIR_DL)/rpi-patches-$(RPI_PATCHES).patch.xz | patch -Np1
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-bcm2835-alsamixer.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-bcm2835-limit_volume.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-bcm2708-sdhci_patches.patch
 endif
 
 ifeq "$(HEADERS)" "1"
diff --git a/src/patches/linux-3.2-bcm2708-sdhci_patches.patch b/src/patches/linux-3.2-bcm2708-sdhci_patches.patch
new file mode 100644 (file)
index 0000000..060e820
--- /dev/null
@@ -0,0 +1,138 @@
+commit 872a8ff772ded51403bd8a46f80b1bf9706b76cd
+Author: Paul Walmsley <paul@pwsan.com>
+Date:   Mon Mar 12 10:58:00 2012 -0600
+
+    mmc: use really long write timeout to deal with crappy cards
+    
+    mmc: use really long write timeout to deal with crappy cards
+    
+    Several people have noticed that crappy SD cards take much longer to
+    complete multiple block writes than the 300ms that Linux specifies.
+    Try to work around this by using a three second write timeout instead.
+    
+    This is a generalized version of a patch from Chase Maupin
+    <Chase.Maupin@ti.com>, whose patch description said:
+    
+    * With certain SD cards timeouts like the following have been seen
+      due to an improper calculation of the dto value:
+        mmcblk0: error -110 transferring data, sector 4126233, nr 8,
+        card status 0xc00
+    * By removing the dto calculation and setting the timeout value
+      to the maximum specified by the SD card specification part A2
+      section 2.2.15 these timeouts can be avoided.
+    * This change has been used by beagleboard users as well as the
+      Texas Instruments SDK without a negative impact.
+    * There are multiple discussion threads about this but the most
+      relevant ones are:
+        * http://talk.maemo.org/showthread.php?p=1000707#post1000707
+        * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42213.html
+    * Original proposal for this fix was done by Sukumar Ghoral of
+      Texas Instruments
+    * Tested using a Texas Instruments AM335x EVM
+    
+    Signed-off-by: Paul Walmsley <paul@pwsan.com>
+    Tested-by: Tony Lindgren <tony@atomide.com>
+    Signed-off-by: Chris Ball <cjb@laptop.org>
+
+diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
+index d637982..a14ddf96 100644
+--- a/drivers/mmc/core/core.c
++++ b/drivers/mmc/core/core.c
+@@ -396,10 +396,14 @@ void mmc_set_data_timeout(struct mmc_data *data, const struct mmc_card *card)
+               if (data->flags & MMC_DATA_WRITE)
+                       /*
+-                       * The limit is really 250 ms, but that is
+-                       * insufficient for some crappy cards.
++                       * The MMC spec "It is strongly recommended
++                       * for hosts to implement more than 500ms
++                       * timeout value even if the card indicates
++                       * the 250ms maximum busy length."  Even the
++                       * previous value of 300ms is known to be
++                       * insufficient for some cards.
+                        */
+-                      limit_us = 300000;
++                      limit_us = 3000000;
+               else
+                       limit_us = 100000;
+
+The folowing sdhci fixes rebased from rasperry pi github tree to kernel 3.2 to use
+actial firmware that run emmc slot at 50Mhz.
+Author: Arne Fitzenreiter <arne.fitzenreiter@ipfire.org>
+
+diff -Naur linux-3.2.20.org/drivers/mmc/host/sdhci-bcm2708.c linux-3.2.20/drivers/mmc/host/sdhci-bcm2708.c
+--- linux-3.2.20.org/drivers/mmc/host/sdhci-bcm2708.c  2012-06-12 00:18:23.000000000 +0200
++++ linux-3.2.20/drivers/mmc/host/sdhci-bcm2708.c      2012-06-14 09:33:42.448194435 +0200
+@@ -328,12 +328,7 @@
+ static unsigned int sdhci_bcm2708_get_max_clock(struct sdhci_host *host)
+ {
+-      return 100000000;       // this value is in Hz (100MHz/4)
+-}
+-
+-static unsigned int sdhci_bcm2708_get_timeout_clock(struct sdhci_host *host)
+-{
+-      return 100000;          // this value is in kHz (100MHz/4)
++      return BCM2708_EMMC_CLOCK_FREQ;
+ }
+ /*****************************************************************************\
+@@ -1222,12 +1217,7 @@
+ #else
+ #error The BCM2708 SDHCI driver needs CONFIG_MMC_SDHCI_IO_ACCESSORS to be set
+ #endif
+-      //.enable_dma = NULL,
+-      //.set_clock = NULL,
+       .get_max_clock = sdhci_bcm2708_get_max_clock,
+-      //.get_min_clock = NULL,
+-      .get_timeout_clock = sdhci_bcm2708_get_timeout_clock,
+-
+       .enable = sdhci_bcm2708_enable,
+       .disable = sdhci_bcm2708_disable,
+       .set_plat_power = sdhci_bcm2708_set_plat_power,
+diff -Naur linux-3.2.20.org/drivers/mmc/host/sdhci-bcm2708.c linux-3.2.20/drivers/mmc/host/sdhci-bcm2708.c
+--- linux-3.2.20.org/drivers/mmc/host/sdhci-bcm2708.c  2012-06-14 09:33:42.000000000 +0200
++++ linux-3.2.20/drivers/mmc/host/sdhci-bcm2708.c      2012-06-14 09:47:20.635695042 +0200
+@@ -1277,7 +1277,10 @@
+       host->irq = platform_get_irq(pdev, 0);
+       host->quirks = SDHCI_QUIRK_BROKEN_CARD_DETECTION |
+-                     SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK;
++                     SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
++                     SDHCI_QUIRK_BROKEN_TIMEOUT_VAL |
++                     SDHCI_QUIRK_MISSING_CAPS |
++                     SDHCI_QUIRK_NO_HISPD_BIT;
+ #ifdef CONFIG_MMC_SDHCI_BCM2708_DMA
+       host->flags = SDHCI_USE_PLATDMA;
+ #endif
+diff -Naur linux-3.2.20.org/drivers/mmc/host/sdhci-bcm2708.c linux-3.2.20/drivers/mmc/host/sdhci-bcm2708.c
+--- linux-3.2.20.org/drivers/mmc/host/sdhci-bcm2708.c  2012-06-14 10:03:31.000000000 +0200
++++ linux-3.2.20/drivers/mmc/host/sdhci-bcm2708.c      2012-06-14 10:15:44.909133194 +0200
+@@ -71,6 +71,8 @@
+ #define BCM2708_SDHCI_SLEEP_TIMEOUT 1000   /* msecs */
++#define BCM2708_EMMC_CLOCK_FREQ 50000000
++
+ #define POWER_OFF 0
+ #define POWER_LAZY_OFF 1
+ #define POWER_ON  2
+
+With the last revert Chris Boot has removed the UHS block at 3.3V
+so it is needed to readd it to use some cards (eg. Verbatim 8GB Class10)
+Author: Arne Fitzenreiter <arne.fitzenreiter@ipfire.org>
+
+diff -Naur linux-3.2.20.org/drivers/mmc/host/sdhci.c linux-3.2.20/drivers/mmc/host/sdhci.c
+--- linux-3.2.20.org/drivers/mmc/host/sdhci.c  2012-06-12 00:18:24.000000000 +0200
++++ linux-3.2.20/drivers/mmc/host/sdhci.c      2012-06-14 12:47:25.435538000 +0200
+@@ -2930,6 +2930,10 @@
+       if(host->ops->voltage_broken)
+               ocr_avail |= MMC_VDD_29_30 | MMC_VDD_30_31;
++              /* No UHS Modes at 3.3V */
++              mmc->caps &=  ~(MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 | MMC_CAP_UHS_SDR104 |
++                              MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_DDR50 );
++
+       mmc->ocr_avail = ocr_avail;
+       mmc->ocr_avail_sdio = ocr_avail;
+       if (host->ocr_avail_sdio)