Changeset 44718


Ignore:
Timestamp:
2015-03-13T04:00:06+01:00 (3 years ago)
Author:
nbd
Message:

atheros: v3.18: move PCI enable code to arch

Move PCI host interface enable code to arch, since it touches generic
SoC registers outside the PCI MMR region.

Signed-off-by: Sergey Ryazanov <ryazanov.s.a@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/atheros/patches-3.18/105-ar2315_pci.patch

    r44717 r44718  
    1111--- /dev/null 
    1212+++ b/arch/mips/pci/pci-ar2315.c 
    13 @@ -0,0 +1,447 @@ 
     13@@ -0,0 +1,428 @@ 
    1414+/* 
    1515+ * This program is free software; you can redistribute it and/or 
     
    379379+{ 
    380380+       struct device *dev = &pdev->dev; 
    381 +       u32 reg; 
    382381+       int res; 
    383382+ 
     
    389388+               return -ENOMEM; 
    390389+       } 
    391 + 
    392 +       /* Reset PCI DMA logic */ 
    393 +       reg = ar231x_mask_reg(AR2315_RESET, 0, AR2315_RESET_PCIDMA); 
    394 +       msleep(20); 
    395 +       reg &= ~AR2315_RESET_PCIDMA; 
    396 +       ar231x_write_reg(AR2315_RESET, reg); 
    397 +       msleep(20); 
    398 + 
    399 +       ar231x_mask_reg(AR2315_ENDIAN_CTL, 0, 
    400 +                       AR2315_CONFIG_PCIAHB | AR2315_CONFIG_PCIAHB_BRIDGE); 
    401 + 
    402 +       ar231x_write_reg(AR2315_PCICLK, AR2315_PCICLK_PLLC_CLKM | 
    403 +                        (AR2315_PCICLK_IN_FREQ_DIV_6 << AR2315_PCICLK_DIV_S)); 
    404 +       ar231x_mask_reg(AR2315_AHB_ARB_CTL, 0, AR2315_ARB_PCI); 
    405 +       ar231x_mask_reg(AR2315_IF_CTL, AR2315_IF_PCI_CLK_MASK | AR2315_IF_MASK, 
    406 +                       AR2315_IF_PCI | AR2315_IF_PCI_HOST | 
    407 +                       AR2315_IF_PCI_INTR | (AR2315_IF_PCI_CLK_OUTPUT_CLK << 
    408 +                                             AR2315_IF_PCI_CLK_SHIFT)); 
    409390+ 
    410391+       /* Reset the PCI bus by setting bits 5-4 in PCI_MCFG */ 
     
    485466                do_IRQ(AR2315_IRQ_MISC_INTRS); 
    486467        else if (pending & CAUSEF_IP7) 
    487 @@ -427,4 +431,10 @@ void __init ar2315_arch_init(void) 
     468@@ -427,4 +431,31 @@ void __init ar2315_arch_init(void) 
    488469 { 
    489470        ath25_serial_setup(AR2315_UART0, AR2315_MISC_IRQ_UART0, 
     
    492473+#ifdef CONFIG_PCI_AR2315 
    493474+       if (ath25_soc == ATH25_SOC_AR2315) { 
     475+               /* Reset PCI DMA logic */ 
     476+               ar231x_mask_reg(AR2315_RESET, 0, AR2315_RESET_PCIDMA); 
     477+               msleep(20); 
     478+               ar231x_mask_reg(AR2315_RESET, AR2315_RESET_PCIDMA, 0); 
     479+               msleep(20); 
     480+ 
     481+               /* Configure endians */ 
     482+               ar231x_mask_reg(AR2315_ENDIAN_CTL, 0, AR2315_CONFIG_PCIAHB | 
     483+                               AR2315_CONFIG_PCIAHB_BRIDGE); 
     484+ 
     485+               /* Configure as PCI host with DMA */ 
     486+               ar231x_write_reg(AR2315_PCICLK, AR2315_PCICLK_PLLC_CLKM | 
     487+                                (AR2315_PCICLK_IN_FREQ_DIV_6 << 
     488+                                 AR2315_PCICLK_DIV_S)); 
     489+               ar231x_mask_reg(AR2315_AHB_ARB_CTL, 0, AR2315_ARB_PCI); 
     490+               ar231x_mask_reg(AR2315_IF_CTL, AR2315_IF_PCI_CLK_MASK | 
     491+                               AR2315_IF_MASK, AR2315_IF_PCI | 
     492+                               AR2315_IF_PCI_HOST | AR2315_IF_PCI_INTR | 
     493+                               (AR2315_IF_PCI_CLK_OUTPUT_CLK << 
     494+                                AR2315_IF_PCI_CLK_SHIFT)); 
     495+ 
    494496+               platform_device_register_simple("ar2315-pci", -1, NULL, 0); 
    495497+       } 
Note: See TracChangeset for help on using the changeset viewer.