update kernel
authorschon <schon@dev03-server>
Thu, 22 Dec 2011 11:24:57 +0000 (20:24 +0900)
committerschon <schon@dev03-server>
Thu, 22 Dec 2011 11:24:57 +0000 (20:24 +0900)
 - fix hdd recognition problem
update driver
 - Support german remote-keyboard(ultimo)

recipes/linux/linux-bm750-3.1.1/linux-sata_brcm.patch [new file with mode: 0644]
recipes/linux/linux-bm750_3.1.1.bb
recipes/linux/linux-vuultimo-3.1.1/linux-sata_brcm.patch [new file with mode: 0644]
recipes/linux/linux-vuultimo_3.1.1.bb
recipes/linux/linux-vuuno-3.1.1/linux-sata_brcm.patch [new file with mode: 0644]
recipes/linux/linux-vuuno_3.1.1.bb
recipes/vuplus/vuplus-dvb-modules.bb

diff --git a/recipes/linux/linux-bm750-3.1.1/linux-sata_brcm.patch b/recipes/linux/linux-bm750-3.1.1/linux-sata_brcm.patch
new file mode 100644 (file)
index 0000000..9216bad
--- /dev/null
@@ -0,0 +1,243 @@
+diff --git a/drivers/ata/sata_brcmstb.c b/drivers/ata/sata_brcmstb.c
+index 7ba20e0..ca02cdf 100644
+--- a/drivers/ata/sata_brcmstb.c
++++ b/drivers/ata/sata_brcmstb.c
+@@ -53,9 +53,7 @@
+ #include <linux/pm.h>
+ #include <linux/clk.h>
+ #include <linux/version.h>
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+ #include <linux/pm_runtime.h>
+-#endif
+ #ifdef CONFIG_PPC_OF
+ #include <asm/prom.h>
+@@ -127,7 +125,7 @@ enum {
+       K2_SATA_TF_LBAM_OFFSET          = 0x10,
+       K2_SATA_TF_LBAH_OFFSET          = 0x14,
+       K2_SATA_TF_DEVICE_OFFSET        = 0x18,
+-      K2_SATA_TF_CMDSTAT_OFFSET       = 0x1c,
++      K2_SATA_TF_CMDSTAT_OFFSET       = 0x1c,
+       K2_SATA_TF_CTL_OFFSET           = 0x20,
+       /* DMA base */
+@@ -142,7 +140,7 @@ enum {
+       /* Others */
+       K2_SATA_SICR1_OFFSET            = 0x80,
+       K2_SATA_SICR2_OFFSET            = 0x84,
+-      K2_SATA_SIMR_OFFSET             = 0x88, /* SATA interrupt mask register */
++      K2_SATA_SIMR_OFFSET             = 0x88, /* SATA intr mask register */
+       K2_SATA_MDIO_OFFSET             = 0x8c, /* SATA MDIO access register */
+       K2_SATA_SCQR_OFFSET             = 0x94, /* SATA command queue depth */
+       K2_SATA_QAL_OFFSET              = 0xa0, /* QDMA ring address lower */
+@@ -330,6 +328,22 @@ static void brcm_EnableOOBWindowFix(void __iomem *mmio_base, int port)
+       mdio_write_reg(mmio_base, port, 0x0D, sval);
+ }
++static void brcm_Enable256AlignDetection(void __iomem *mmio_base, int port)
++{
++      uint32_t tmp32;
++      void __iomem *port_mmio;
++
++      port_mmio = PORT_BASE(mmio_base, port);
++
++      tmp32 = readl(port_mmio + K2_SATA_SICR1_OFFSET);
++      tmp32 |= 0x08000000;
++      writel(tmp32, port_mmio + K2_SATA_SICR1_OFFSET);
++
++      tmp32 = readl(port_mmio + K2_SATA_SICR2_OFFSET);
++      tmp32 |= 0x00800000;
++      writel(tmp32, port_mmio + K2_SATA_SICR2_OFFSET);
++}
++
+ static void brcm_AnalogReset(void __iomem *mmio_base, int port)
+ {
+       /* do analog reset */
+@@ -385,6 +399,8 @@ static void brcm_InitSata_1_5Gb(void __iomem *mmio_base, int port)
+       brcm_SetPllTxRxCtrl(mmio_base, port);
+       brcm_EnableOOBWindowFix(mmio_base, port);
++      brcm_Enable256AlignDetection(mmio_base, port);
++
+       if (!port) {
+ #ifdef CONFIG_BRCM_SATA_75MHZ_PLL
+               /* use 75Mhz PLL clock */
+@@ -446,6 +462,8 @@ static void brcm_InitSata2_3Gb(void __iomem *mmio_base, int port)
+       brcm_SetPllTxRxCtrl(mmio_base, port);
+       brcm_EnableOOBWindowFix(mmio_base, port);
++      brcm_Enable256AlignDetection(mmio_base, port);
++
+       if (!port) {
+ #ifdef CONFIG_BRCM_SATA_75MHZ_PLL
+               /* use 75Mhz PLL clock */
+@@ -758,11 +776,7 @@ static void k2_bmdma_setup_mmio(struct ata_queued_cmd *qc)
+       void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
+       /* load PRD table addr. */
+       mb();   /* make sure PRD table writes are visible to controller */
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+       writel(ap->bmdma_prd_dma, mmio + ATA_DMA_TABLE_OFS);
+-#else
+-      writel(ap->prd_dma, mmio + ATA_DMA_TABLE_OFS);
+-#endif
+       /* specify data direction, triple-check start bit is clear */
+       dmactl = readb(mmio + ATA_DMA_CMD);
+@@ -819,11 +833,7 @@ static void k2_bmdma_start_mmio(struct ata_queued_cmd *qc)
+ static int k2_sata_port_start(struct ata_port *ap)
+ {
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+       ata_bmdma_port_start(ap);
+-#else
+-      ata_port_start(ap);
+-#endif
+       return 0;
+ }
+@@ -848,8 +858,7 @@ static irqreturn_t k2_sata_interrupt(int irq, void *dev_instance)
+               ap = host->ports[i];
+-              ata_for_each_link(link, ap, EDGE)
+-              {
++              ata_for_each_link(link, ap, EDGE) {
+                       int rc;
+                       unsigned int serror;
+@@ -887,11 +896,7 @@ static irqreturn_t k2_sata_interrupt(int irq, void *dev_instance)
+       if (handled & IRQ_HANDLED)
+               return handled;
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+       return ata_bmdma_interrupt(irq, dev_instance);
+-#else
+-      return  ata_sff_interrupt(irq, dev_instance);
+-#endif
+ }
+ /*
+@@ -1044,10 +1049,7 @@ static void k2_sata_remove_one(struct pci_dev *pdev)
+       struct k2_host_priv *hp = host->private_data;
+       brcm_pm_unregister_cb("sata");
+-
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+       pm_runtime_get_noresume(&pdev->dev);
+-#endif
+       K2_POWER_ON(host);
+       ata_pci_remove_one(pdev);
+@@ -1135,7 +1137,9 @@ static int k2_sata_resume(struct device *dev)
+               ap = host->ports[i];
+               ata_for_each_link(link, ap, EDGE) {
++                      spin_unlock_irqrestore(&hp->lock, flags);
+                       sata_std_hardreset(link, NULL, 1000);
++                      spin_lock_irqsave(&hp->lock, flags);
+               }
+       }
+@@ -1144,7 +1148,6 @@ static int k2_sata_resume(struct device *dev)
+       return 0;
+ }
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+ static int k2_sata_runtime_suspend(struct device *dev)
+ {
+       return k2_sata_suspend(dev);
+@@ -1162,8 +1165,6 @@ static int k2_sata_runtime_idle(struct device *dev)
+       return 0; /* ignored by pm core */
+ }
+-#endif
+-
+ /*
+  * Driver initialization
+  */
+@@ -1206,25 +1207,25 @@ static struct ata_port_operations k2_sata_ops = {
+ };
+ static const struct ata_port_info k2_port_info[] = {
+-      /* chip_sata1 */
+-      {
+-              .flags          = ATA_FLAG_SATA |
+-                                K2_FLAG_NO_ATAPI_DMA,
+-              .pio_mask       = 0x1f,
+-              .mwdma_mask     = 0x07,
+-              .udma_mask      = ATA_UDMA7,
+-              .port_ops       = &k2_sata_ops,
+-      },
+-      /* chip_sata2 */
+-      {
+-              .flags          = ATA_FLAG_SATA |
+-                                K2_FLAG_NO_ATAPI_DMA |
+-                                K2_FLAG_BRCM_SATA2,
+-              .pio_mask       = 0x1f,
+-              .mwdma_mask     = 0x07,
+-              .udma_mask      = ATA_UDMA7,
+-              .port_ops       = &k2_sata_ops,
+-      },
++        /* chip_sata1 */
++        {
++                .flags          = ATA_FLAG_SATA |
++                                  K2_FLAG_NO_ATAPI_DMA,
++                .pio_mask       = 0x1f,
++                .mwdma_mask     = 0x07,
++                .udma_mask      = ATA_UDMA7,
++                .port_ops       = &k2_sata_ops,
++        },
++        /* chip_sata2 */
++        {
++                .flags          = ATA_FLAG_SATA |
++                                  K2_FLAG_NO_ATAPI_DMA |
++                                  K2_FLAG_BRCM_SATA2,
++                .pio_mask       = 0x1f,
++                .mwdma_mask     = 0x07,
++                .udma_mask      = ATA_UDMA7,
++                .port_ops       = &k2_sata_ops,
++        },
+ };
+ static void k2_sata_setup_port(struct ata_ioports *port, void __iomem *base)
+@@ -1250,8 +1251,8 @@ static int k2_sata_init_one(struct pci_dev *pdev,
+                               const struct pci_device_id *ent)
+ {
+       static int printed_version;
+-      const struct ata_port_info *ppi[] =
+-              { &k2_port_info[ent->driver_data], NULL };
++      const struct ata_port_info *ppi[] = {
++              &k2_port_info[ent->driver_data], NULL };
+       struct ata_host *host;
+       void __iomem *mmio_base;
+       int n_ports, i, rc, bar_pos;
+@@ -1358,13 +1359,10 @@ static int k2_sata_init_one(struct pci_dev *pdev,
+       brcm_pm_register_cb("sata", k2_sata_pm_cb, host);
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+       /* pci core incremented pm counter before calling probe,
+        * we are decrementing it to enable runtime pm */
+       pm_runtime_put_noidle(&pdev->dev);
+-#endif
+-
+       return 0;
+ }
+@@ -1374,14 +1372,12 @@ static const struct pci_device_id k2_sata_pci_tbl[] = {
+       { }
+ };
+-static struct dev_pm_ops k2_sata_pm_ops = {
++static const struct dev_pm_ops k2_sata_pm_ops = {
+       .suspend_noirq          = k2_sata_suspend,
+       .resume_noirq           = k2_sata_resume,
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+       .runtime_suspend        = k2_sata_runtime_suspend,
+       .runtime_resume         = k2_sata_runtime_resume,
+       .runtime_idle           = k2_sata_runtime_idle,
+-#endif
+ };
+ static struct pci_driver k2_sata_pci_driver = {
index 4322b2c..4c8b7ce 100644 (file)
@@ -1,8 +1,9 @@
 require linux-vuplus-3.1.1.inc
 
-PR = "r4"
+PR = "r5"
 
 SRC_URI += "\
         file://linux_3.1.1_bm750.patch;patch=1;pnum=1 \
+        file://linux-sata_brcm.patch;patch=1;pnum=1 \
        "
 
diff --git a/recipes/linux/linux-vuultimo-3.1.1/linux-sata_brcm.patch b/recipes/linux/linux-vuultimo-3.1.1/linux-sata_brcm.patch
new file mode 100644 (file)
index 0000000..9216bad
--- /dev/null
@@ -0,0 +1,243 @@
+diff --git a/drivers/ata/sata_brcmstb.c b/drivers/ata/sata_brcmstb.c
+index 7ba20e0..ca02cdf 100644
+--- a/drivers/ata/sata_brcmstb.c
++++ b/drivers/ata/sata_brcmstb.c
+@@ -53,9 +53,7 @@
+ #include <linux/pm.h>
+ #include <linux/clk.h>
+ #include <linux/version.h>
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+ #include <linux/pm_runtime.h>
+-#endif
+ #ifdef CONFIG_PPC_OF
+ #include <asm/prom.h>
+@@ -127,7 +125,7 @@ enum {
+       K2_SATA_TF_LBAM_OFFSET          = 0x10,
+       K2_SATA_TF_LBAH_OFFSET          = 0x14,
+       K2_SATA_TF_DEVICE_OFFSET        = 0x18,
+-      K2_SATA_TF_CMDSTAT_OFFSET       = 0x1c,
++      K2_SATA_TF_CMDSTAT_OFFSET       = 0x1c,
+       K2_SATA_TF_CTL_OFFSET           = 0x20,
+       /* DMA base */
+@@ -142,7 +140,7 @@ enum {
+       /* Others */
+       K2_SATA_SICR1_OFFSET            = 0x80,
+       K2_SATA_SICR2_OFFSET            = 0x84,
+-      K2_SATA_SIMR_OFFSET             = 0x88, /* SATA interrupt mask register */
++      K2_SATA_SIMR_OFFSET             = 0x88, /* SATA intr mask register */
+       K2_SATA_MDIO_OFFSET             = 0x8c, /* SATA MDIO access register */
+       K2_SATA_SCQR_OFFSET             = 0x94, /* SATA command queue depth */
+       K2_SATA_QAL_OFFSET              = 0xa0, /* QDMA ring address lower */
+@@ -330,6 +328,22 @@ static void brcm_EnableOOBWindowFix(void __iomem *mmio_base, int port)
+       mdio_write_reg(mmio_base, port, 0x0D, sval);
+ }
++static void brcm_Enable256AlignDetection(void __iomem *mmio_base, int port)
++{
++      uint32_t tmp32;
++      void __iomem *port_mmio;
++
++      port_mmio = PORT_BASE(mmio_base, port);
++
++      tmp32 = readl(port_mmio + K2_SATA_SICR1_OFFSET);
++      tmp32 |= 0x08000000;
++      writel(tmp32, port_mmio + K2_SATA_SICR1_OFFSET);
++
++      tmp32 = readl(port_mmio + K2_SATA_SICR2_OFFSET);
++      tmp32 |= 0x00800000;
++      writel(tmp32, port_mmio + K2_SATA_SICR2_OFFSET);
++}
++
+ static void brcm_AnalogReset(void __iomem *mmio_base, int port)
+ {
+       /* do analog reset */
+@@ -385,6 +399,8 @@ static void brcm_InitSata_1_5Gb(void __iomem *mmio_base, int port)
+       brcm_SetPllTxRxCtrl(mmio_base, port);
+       brcm_EnableOOBWindowFix(mmio_base, port);
++      brcm_Enable256AlignDetection(mmio_base, port);
++
+       if (!port) {
+ #ifdef CONFIG_BRCM_SATA_75MHZ_PLL
+               /* use 75Mhz PLL clock */
+@@ -446,6 +462,8 @@ static void brcm_InitSata2_3Gb(void __iomem *mmio_base, int port)
+       brcm_SetPllTxRxCtrl(mmio_base, port);
+       brcm_EnableOOBWindowFix(mmio_base, port);
++      brcm_Enable256AlignDetection(mmio_base, port);
++
+       if (!port) {
+ #ifdef CONFIG_BRCM_SATA_75MHZ_PLL
+               /* use 75Mhz PLL clock */
+@@ -758,11 +776,7 @@ static void k2_bmdma_setup_mmio(struct ata_queued_cmd *qc)
+       void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
+       /* load PRD table addr. */
+       mb();   /* make sure PRD table writes are visible to controller */
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+       writel(ap->bmdma_prd_dma, mmio + ATA_DMA_TABLE_OFS);
+-#else
+-      writel(ap->prd_dma, mmio + ATA_DMA_TABLE_OFS);
+-#endif
+       /* specify data direction, triple-check start bit is clear */
+       dmactl = readb(mmio + ATA_DMA_CMD);
+@@ -819,11 +833,7 @@ static void k2_bmdma_start_mmio(struct ata_queued_cmd *qc)
+ static int k2_sata_port_start(struct ata_port *ap)
+ {
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+       ata_bmdma_port_start(ap);
+-#else
+-      ata_port_start(ap);
+-#endif
+       return 0;
+ }
+@@ -848,8 +858,7 @@ static irqreturn_t k2_sata_interrupt(int irq, void *dev_instance)
+               ap = host->ports[i];
+-              ata_for_each_link(link, ap, EDGE)
+-              {
++              ata_for_each_link(link, ap, EDGE) {
+                       int rc;
+                       unsigned int serror;
+@@ -887,11 +896,7 @@ static irqreturn_t k2_sata_interrupt(int irq, void *dev_instance)
+       if (handled & IRQ_HANDLED)
+               return handled;
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+       return ata_bmdma_interrupt(irq, dev_instance);
+-#else
+-      return  ata_sff_interrupt(irq, dev_instance);
+-#endif
+ }
+ /*
+@@ -1044,10 +1049,7 @@ static void k2_sata_remove_one(struct pci_dev *pdev)
+       struct k2_host_priv *hp = host->private_data;
+       brcm_pm_unregister_cb("sata");
+-
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+       pm_runtime_get_noresume(&pdev->dev);
+-#endif
+       K2_POWER_ON(host);
+       ata_pci_remove_one(pdev);
+@@ -1135,7 +1137,9 @@ static int k2_sata_resume(struct device *dev)
+               ap = host->ports[i];
+               ata_for_each_link(link, ap, EDGE) {
++                      spin_unlock_irqrestore(&hp->lock, flags);
+                       sata_std_hardreset(link, NULL, 1000);
++                      spin_lock_irqsave(&hp->lock, flags);
+               }
+       }
+@@ -1144,7 +1148,6 @@ static int k2_sata_resume(struct device *dev)
+       return 0;
+ }
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+ static int k2_sata_runtime_suspend(struct device *dev)
+ {
+       return k2_sata_suspend(dev);
+@@ -1162,8 +1165,6 @@ static int k2_sata_runtime_idle(struct device *dev)
+       return 0; /* ignored by pm core */
+ }
+-#endif
+-
+ /*
+  * Driver initialization
+  */
+@@ -1206,25 +1207,25 @@ static struct ata_port_operations k2_sata_ops = {
+ };
+ static const struct ata_port_info k2_port_info[] = {
+-      /* chip_sata1 */
+-      {
+-              .flags          = ATA_FLAG_SATA |
+-                                K2_FLAG_NO_ATAPI_DMA,
+-              .pio_mask       = 0x1f,
+-              .mwdma_mask     = 0x07,
+-              .udma_mask      = ATA_UDMA7,
+-              .port_ops       = &k2_sata_ops,
+-      },
+-      /* chip_sata2 */
+-      {
+-              .flags          = ATA_FLAG_SATA |
+-                                K2_FLAG_NO_ATAPI_DMA |
+-                                K2_FLAG_BRCM_SATA2,
+-              .pio_mask       = 0x1f,
+-              .mwdma_mask     = 0x07,
+-              .udma_mask      = ATA_UDMA7,
+-              .port_ops       = &k2_sata_ops,
+-      },
++        /* chip_sata1 */
++        {
++                .flags          = ATA_FLAG_SATA |
++                                  K2_FLAG_NO_ATAPI_DMA,
++                .pio_mask       = 0x1f,
++                .mwdma_mask     = 0x07,
++                .udma_mask      = ATA_UDMA7,
++                .port_ops       = &k2_sata_ops,
++        },
++        /* chip_sata2 */
++        {
++                .flags          = ATA_FLAG_SATA |
++                                  K2_FLAG_NO_ATAPI_DMA |
++                                  K2_FLAG_BRCM_SATA2,
++                .pio_mask       = 0x1f,
++                .mwdma_mask     = 0x07,
++                .udma_mask      = ATA_UDMA7,
++                .port_ops       = &k2_sata_ops,
++        },
+ };
+ static void k2_sata_setup_port(struct ata_ioports *port, void __iomem *base)
+@@ -1250,8 +1251,8 @@ static int k2_sata_init_one(struct pci_dev *pdev,
+                               const struct pci_device_id *ent)
+ {
+       static int printed_version;
+-      const struct ata_port_info *ppi[] =
+-              { &k2_port_info[ent->driver_data], NULL };
++      const struct ata_port_info *ppi[] = {
++              &k2_port_info[ent->driver_data], NULL };
+       struct ata_host *host;
+       void __iomem *mmio_base;
+       int n_ports, i, rc, bar_pos;
+@@ -1358,13 +1359,10 @@ static int k2_sata_init_one(struct pci_dev *pdev,
+       brcm_pm_register_cb("sata", k2_sata_pm_cb, host);
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+       /* pci core incremented pm counter before calling probe,
+        * we are decrementing it to enable runtime pm */
+       pm_runtime_put_noidle(&pdev->dev);
+-#endif
+-
+       return 0;
+ }
+@@ -1374,14 +1372,12 @@ static const struct pci_device_id k2_sata_pci_tbl[] = {
+       { }
+ };
+-static struct dev_pm_ops k2_sata_pm_ops = {
++static const struct dev_pm_ops k2_sata_pm_ops = {
+       .suspend_noirq          = k2_sata_suspend,
+       .resume_noirq           = k2_sata_resume,
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+       .runtime_suspend        = k2_sata_runtime_suspend,
+       .runtime_resume         = k2_sata_runtime_resume,
+       .runtime_idle           = k2_sata_runtime_idle,
+-#endif
+ };
+ static struct pci_driver k2_sata_pci_driver = {
index 6923ef6..b940aec 100644 (file)
@@ -1,7 +1,8 @@
 require linux-vuplus-3.1.1.inc
 
-PR = "r5"
+PR = "r6"
 
 SRC_URI += "\
+       file://linux-sata_brcm.patch;patch=1;pnum=1 \
        "
 
diff --git a/recipes/linux/linux-vuuno-3.1.1/linux-sata_brcm.patch b/recipes/linux/linux-vuuno-3.1.1/linux-sata_brcm.patch
new file mode 100644 (file)
index 0000000..9216bad
--- /dev/null
@@ -0,0 +1,243 @@
+diff --git a/drivers/ata/sata_brcmstb.c b/drivers/ata/sata_brcmstb.c
+index 7ba20e0..ca02cdf 100644
+--- a/drivers/ata/sata_brcmstb.c
++++ b/drivers/ata/sata_brcmstb.c
+@@ -53,9 +53,7 @@
+ #include <linux/pm.h>
+ #include <linux/clk.h>
+ #include <linux/version.h>
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+ #include <linux/pm_runtime.h>
+-#endif
+ #ifdef CONFIG_PPC_OF
+ #include <asm/prom.h>
+@@ -127,7 +125,7 @@ enum {
+       K2_SATA_TF_LBAM_OFFSET          = 0x10,
+       K2_SATA_TF_LBAH_OFFSET          = 0x14,
+       K2_SATA_TF_DEVICE_OFFSET        = 0x18,
+-      K2_SATA_TF_CMDSTAT_OFFSET       = 0x1c,
++      K2_SATA_TF_CMDSTAT_OFFSET       = 0x1c,
+       K2_SATA_TF_CTL_OFFSET           = 0x20,
+       /* DMA base */
+@@ -142,7 +140,7 @@ enum {
+       /* Others */
+       K2_SATA_SICR1_OFFSET            = 0x80,
+       K2_SATA_SICR2_OFFSET            = 0x84,
+-      K2_SATA_SIMR_OFFSET             = 0x88, /* SATA interrupt mask register */
++      K2_SATA_SIMR_OFFSET             = 0x88, /* SATA intr mask register */
+       K2_SATA_MDIO_OFFSET             = 0x8c, /* SATA MDIO access register */
+       K2_SATA_SCQR_OFFSET             = 0x94, /* SATA command queue depth */
+       K2_SATA_QAL_OFFSET              = 0xa0, /* QDMA ring address lower */
+@@ -330,6 +328,22 @@ static void brcm_EnableOOBWindowFix(void __iomem *mmio_base, int port)
+       mdio_write_reg(mmio_base, port, 0x0D, sval);
+ }
++static void brcm_Enable256AlignDetection(void __iomem *mmio_base, int port)
++{
++      uint32_t tmp32;
++      void __iomem *port_mmio;
++
++      port_mmio = PORT_BASE(mmio_base, port);
++
++      tmp32 = readl(port_mmio + K2_SATA_SICR1_OFFSET);
++      tmp32 |= 0x08000000;
++      writel(tmp32, port_mmio + K2_SATA_SICR1_OFFSET);
++
++      tmp32 = readl(port_mmio + K2_SATA_SICR2_OFFSET);
++      tmp32 |= 0x00800000;
++      writel(tmp32, port_mmio + K2_SATA_SICR2_OFFSET);
++}
++
+ static void brcm_AnalogReset(void __iomem *mmio_base, int port)
+ {
+       /* do analog reset */
+@@ -385,6 +399,8 @@ static void brcm_InitSata_1_5Gb(void __iomem *mmio_base, int port)
+       brcm_SetPllTxRxCtrl(mmio_base, port);
+       brcm_EnableOOBWindowFix(mmio_base, port);
++      brcm_Enable256AlignDetection(mmio_base, port);
++
+       if (!port) {
+ #ifdef CONFIG_BRCM_SATA_75MHZ_PLL
+               /* use 75Mhz PLL clock */
+@@ -446,6 +462,8 @@ static void brcm_InitSata2_3Gb(void __iomem *mmio_base, int port)
+       brcm_SetPllTxRxCtrl(mmio_base, port);
+       brcm_EnableOOBWindowFix(mmio_base, port);
++      brcm_Enable256AlignDetection(mmio_base, port);
++
+       if (!port) {
+ #ifdef CONFIG_BRCM_SATA_75MHZ_PLL
+               /* use 75Mhz PLL clock */
+@@ -758,11 +776,7 @@ static void k2_bmdma_setup_mmio(struct ata_queued_cmd *qc)
+       void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
+       /* load PRD table addr. */
+       mb();   /* make sure PRD table writes are visible to controller */
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+       writel(ap->bmdma_prd_dma, mmio + ATA_DMA_TABLE_OFS);
+-#else
+-      writel(ap->prd_dma, mmio + ATA_DMA_TABLE_OFS);
+-#endif
+       /* specify data direction, triple-check start bit is clear */
+       dmactl = readb(mmio + ATA_DMA_CMD);
+@@ -819,11 +833,7 @@ static void k2_bmdma_start_mmio(struct ata_queued_cmd *qc)
+ static int k2_sata_port_start(struct ata_port *ap)
+ {
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+       ata_bmdma_port_start(ap);
+-#else
+-      ata_port_start(ap);
+-#endif
+       return 0;
+ }
+@@ -848,8 +858,7 @@ static irqreturn_t k2_sata_interrupt(int irq, void *dev_instance)
+               ap = host->ports[i];
+-              ata_for_each_link(link, ap, EDGE)
+-              {
++              ata_for_each_link(link, ap, EDGE) {
+                       int rc;
+                       unsigned int serror;
+@@ -887,11 +896,7 @@ static irqreturn_t k2_sata_interrupt(int irq, void *dev_instance)
+       if (handled & IRQ_HANDLED)
+               return handled;
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+       return ata_bmdma_interrupt(irq, dev_instance);
+-#else
+-      return  ata_sff_interrupt(irq, dev_instance);
+-#endif
+ }
+ /*
+@@ -1044,10 +1049,7 @@ static void k2_sata_remove_one(struct pci_dev *pdev)
+       struct k2_host_priv *hp = host->private_data;
+       brcm_pm_unregister_cb("sata");
+-
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+       pm_runtime_get_noresume(&pdev->dev);
+-#endif
+       K2_POWER_ON(host);
+       ata_pci_remove_one(pdev);
+@@ -1135,7 +1137,9 @@ static int k2_sata_resume(struct device *dev)
+               ap = host->ports[i];
+               ata_for_each_link(link, ap, EDGE) {
++                      spin_unlock_irqrestore(&hp->lock, flags);
+                       sata_std_hardreset(link, NULL, 1000);
++                      spin_lock_irqsave(&hp->lock, flags);
+               }
+       }
+@@ -1144,7 +1148,6 @@ static int k2_sata_resume(struct device *dev)
+       return 0;
+ }
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+ static int k2_sata_runtime_suspend(struct device *dev)
+ {
+       return k2_sata_suspend(dev);
+@@ -1162,8 +1165,6 @@ static int k2_sata_runtime_idle(struct device *dev)
+       return 0; /* ignored by pm core */
+ }
+-#endif
+-
+ /*
+  * Driver initialization
+  */
+@@ -1206,25 +1207,25 @@ static struct ata_port_operations k2_sata_ops = {
+ };
+ static const struct ata_port_info k2_port_info[] = {
+-      /* chip_sata1 */
+-      {
+-              .flags          = ATA_FLAG_SATA |
+-                                K2_FLAG_NO_ATAPI_DMA,
+-              .pio_mask       = 0x1f,
+-              .mwdma_mask     = 0x07,
+-              .udma_mask      = ATA_UDMA7,
+-              .port_ops       = &k2_sata_ops,
+-      },
+-      /* chip_sata2 */
+-      {
+-              .flags          = ATA_FLAG_SATA |
+-                                K2_FLAG_NO_ATAPI_DMA |
+-                                K2_FLAG_BRCM_SATA2,
+-              .pio_mask       = 0x1f,
+-              .mwdma_mask     = 0x07,
+-              .udma_mask      = ATA_UDMA7,
+-              .port_ops       = &k2_sata_ops,
+-      },
++        /* chip_sata1 */
++        {
++                .flags          = ATA_FLAG_SATA |
++                                  K2_FLAG_NO_ATAPI_DMA,
++                .pio_mask       = 0x1f,
++                .mwdma_mask     = 0x07,
++                .udma_mask      = ATA_UDMA7,
++                .port_ops       = &k2_sata_ops,
++        },
++        /* chip_sata2 */
++        {
++                .flags          = ATA_FLAG_SATA |
++                                  K2_FLAG_NO_ATAPI_DMA |
++                                  K2_FLAG_BRCM_SATA2,
++                .pio_mask       = 0x1f,
++                .mwdma_mask     = 0x07,
++                .udma_mask      = ATA_UDMA7,
++                .port_ops       = &k2_sata_ops,
++        },
+ };
+ static void k2_sata_setup_port(struct ata_ioports *port, void __iomem *base)
+@@ -1250,8 +1251,8 @@ static int k2_sata_init_one(struct pci_dev *pdev,
+                               const struct pci_device_id *ent)
+ {
+       static int printed_version;
+-      const struct ata_port_info *ppi[] =
+-              { &k2_port_info[ent->driver_data], NULL };
++      const struct ata_port_info *ppi[] = {
++              &k2_port_info[ent->driver_data], NULL };
+       struct ata_host *host;
+       void __iomem *mmio_base;
+       int n_ports, i, rc, bar_pos;
+@@ -1358,13 +1359,10 @@ static int k2_sata_init_one(struct pci_dev *pdev,
+       brcm_pm_register_cb("sata", k2_sata_pm_cb, host);
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+       /* pci core incremented pm counter before calling probe,
+        * we are decrementing it to enable runtime pm */
+       pm_runtime_put_noidle(&pdev->dev);
+-#endif
+-
+       return 0;
+ }
+@@ -1374,14 +1372,12 @@ static const struct pci_device_id k2_sata_pci_tbl[] = {
+       { }
+ };
+-static struct dev_pm_ops k2_sata_pm_ops = {
++static const struct dev_pm_ops k2_sata_pm_ops = {
+       .suspend_noirq          = k2_sata_suspend,
+       .resume_noirq           = k2_sata_resume,
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)
+       .runtime_suspend        = k2_sata_runtime_suspend,
+       .runtime_resume         = k2_sata_runtime_resume,
+       .runtime_idle           = k2_sata_runtime_idle,
+-#endif
+ };
+ static struct pci_driver k2_sata_pci_driver = {
index dcdbb3a..fedaf4d 100644 (file)
@@ -1,8 +1,9 @@
 require linux-vuplus-3.1.1.inc
 
-PR = "r5"
+PR = "r6"
 
 SRC_URI += "\
         file://linux_3.1.1_vuuno.patch;patch=1;pnum=1 \
+       file://linux-sata_brcm.patch;patch=1;pnum=1 \
        "
 
index d8f11ea..564b409 100755 (executable)
@@ -8,10 +8,10 @@ KV = "${@base_contains('PREFERRED_VERSION_linux-${MACHINE}', '2.6.18', '2.6.18',
 
 PV = "${KV}"
 
-SRCDATE_bm750 = "20111216"
-SRCDATE_vusolo = "20111216"
-SRCDATE_vuuno = "20111216"
-SRCDATE_vuultimo = "20111216"
+SRCDATE_bm750 = "20111222"
+SRCDATE_vusolo = "20111222"
+SRCDATE_vuuno = "20111222"
+SRCDATE_vuultimo = "20111222"
 
 MODULES_NAME_bm750 = "procmk\ndvb-bcm7335\nbrcmfb"
 MODULES_NAME_vusolo = "procmk\ndvb-bcm7325\nbrcmfb"
@@ -51,7 +51,6 @@ do_install() {
 pkg_postinst_vuplus-dvb-modules () {
         if [ -d /proc/stb ]; then
                 depmod -ae
-               sync
         fi
         true
 }