···415415 select SYS_HAS_CPU_MIPS32_R1416416 select SYS_HAS_CPU_MIPS32_R2417417 select SYS_HAS_CPU_MIPS32_R3_5418418+ select SYS_HAS_CPU_MIPS32_R5418419 select SYS_HAS_CPU_MIPS32_R6419420 select SYS_HAS_CPU_MIPS64_R1420421 select SYS_HAS_CPU_MIPS64_R2···425424 select SYS_SUPPORTS_32BIT_KERNEL426425 select SYS_SUPPORTS_64BIT_KERNEL427426 select SYS_SUPPORTS_BIG_ENDIAN427427+ select SYS_SUPPORTS_HIGHMEM428428 select SYS_SUPPORTS_LITTLE_ENDIAN429429 select SYS_SUPPORTS_MICROMIPS430430 select SYS_SUPPORTS_MIPS_CMP···16401638 One of its primary benefits is an increase in the maximum size16411639 of lowmem (up to 3GB). If unsure, say 'N' here.1642164016411641+config CPU_MIPS32_R5_FEATURES16421642+ bool "MIPS32 Release 5 Features"16431643+ depends on SYS_HAS_CPU_MIPS32_R516441644+ depends on CPU_MIPS32_R216451645+ help16461646+ Choose this option to build a kernel for release 2 or later of the16471647+ MIPS32 architecture including features from release 5 such as16481648+ support for Extended Physical Addressing (XPA).16491649+16501650+config CPU_MIPS32_R5_XPA16511651+ bool "Extended Physical Addressing (XPA)"16521652+ depends on CPU_MIPS32_R5_FEATURES16531653+ depends on !EVA16541654+ depends on !PAGE_SIZE_4KB16551655+ depends on SYS_SUPPORTS_HIGHMEM16561656+ select XPA16571657+ select HIGHMEM16581658+ select ARCH_PHYS_ADDR_T_64BIT16591659+ default n16601660+ help16611661+ Choose this option if you want to enable the Extended Physical16621662+ Addressing (XPA) on your MIPS32 core (such as P5600 series). The16631663+ benefit is to increase physical addressing equal to or greater16641664+ than 40 bits. Note that this has the side effect of turning on16651665+ 64-bit addressing which in turn makes the PTEs 64-bit in size.16661666+ If unsure, say 'N' here.16671667+16431668if CPU_LOONGSON2F16441669config CPU_NOP_WORKAROUNDS16451670 bool···17681739 bool1769174017701741config SYS_HAS_CPU_MIPS32_R3_517421742+ bool17431743+17441744+config SYS_HAS_CPU_MIPS32_R517711745 bool1772174617731747config SYS_HAS_CPU_MIPS32_R6···19081876 select MIPS_SPRAM1909187719101878config EVA18791879+ bool18801880+18811881+config XPA19111882 bool1912188319131884config SYS_SUPPORTS_32BIT_KERNEL···21492114 help21502115 Choose this option if you want to run non-R6 MIPS userland code.21512116 Even if you say 'Y' here, the emulator will still be disabled by21522152- default. You can enable it using the 'mipsr2emul' kernel option.21172117+ default. You can enable it using the 'mipsr2emu' kernel option.21532118 The only reason this is a build-time option is to save ~14K from the21542119 final kernel image.21552120comment "MIPS R2-to-R6 emulator is only available for UP kernels"···2219218422202185config MIPS_CPS22212186 bool "MIPS Coherent Processing System support"22222222- depends on SYS_SUPPORTS_MIPS_CPS21872187+ depends on SYS_SUPPORTS_MIPS_CPS && !64BIT22232188 select MIPS_CM22242189 select MIPS_CPC22252190 select MIPS_CPS_PM if HOTPLUG_CPU
+10-4
arch/mips/Makefile
···197197# Warning: the 64-bit MIPS architecture does not support the `smartmips' extension198198# Pass -Wa,--no-warn to disable all assembler warnings until the kernel code has199199# been fixed properly.200200-mips-cflags := "$(cflags-y)"201201-cflags-$(CONFIG_CPU_HAS_SMARTMIPS) += $(call cc-option,$(mips-cflags),-msmartmips) -Wa,--no-warn202202-cflags-$(CONFIG_CPU_MICROMIPS) += $(call cc-option,$(mips-cflags),-mmicromips)200200+mips-cflags := $(cflags-y)201201+ifeq ($(CONFIG_CPU_HAS_SMARTMIPS),y)202202+smartmips-ase := $(call cc-option-yn,$(mips-cflags) -msmartmips)203203+cflags-$(smartmips-ase) += -msmartmips -Wa,--no-warn204204+endif205205+ifeq ($(CONFIG_CPU_MICROMIPS),y)206206+micromips-ase := $(call cc-option-yn,$(mips-cflags) -mmicromips)207207+cflags-$(micromips-ase) += -mmicromips208208+endif203209ifeq ($(CONFIG_CPU_HAS_MSA),y)204204-toolchain-msa := $(call cc-option-yn,-$(mips-cflags),mhard-float -mfp64 -Wa$(comma)-mmsa)210210+toolchain-msa := $(call cc-option-yn,$(mips-cflags) -mhard-float -mfp64 -Wa$(comma)-mmsa)205211cflags-$(toolchain-msa) += -DTOOLCHAIN_SUPPORTS_MSA206212endif207213
···2929 * - flush_icache_all() flush the entire instruction cache3030 * - flush_data_cache_page() flushes a page from the data cache3131 */3232+3333+ /*3434+ * This flag is used to indicate that the page pointed to by a pte3535+ * is dirty and requires cleaning before returning it to the user.3636+ */3737+#define PG_dcache_dirty PG_arch_13838+3939+#define Page_dcache_dirty(page) \4040+ test_bit(PG_dcache_dirty, &(page)->flags)4141+#define SetPageDcacheDirty(page) \4242+ set_bit(PG_dcache_dirty, &(page)->flags)4343+#define ClearPageDcacheDirty(page) \4444+ clear_bit(PG_dcache_dirty, &(page)->flags)4545+3246extern void (*flush_cache_all)(void);3347extern void (*__flush_cache_all)(void);3448extern void (*flush_cache_mm)(struct mm_struct *mm);···5137 unsigned long start, unsigned long end);5238extern void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page, unsigned long pfn);5339extern void __flush_dcache_page(struct page *page);4040+extern void __flush_icache_page(struct vm_area_struct *vma, struct page *page);54415542#define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 15643static inline void flush_dcache_page(struct page *page)5744{5858- if (cpu_has_dc_aliases || !cpu_has_ic_fills_f_dc)4545+ if (cpu_has_dc_aliases)5946 __flush_dcache_page(page);6060-4747+ else if (!cpu_has_ic_fills_f_dc)4848+ SetPageDcacheDirty(page);6149}62506351#define flush_dcache_mmap_lock(mapping) do { } while (0)···7761static inline void flush_icache_page(struct vm_area_struct *vma,7862 struct page *page)7963{6464+ if (!cpu_has_ic_fills_f_dc && (vma->vm_flags & VM_EXEC) &&6565+ Page_dcache_dirty(page)) {6666+ __flush_icache_page(vma, page);6767+ ClearPageDcacheDirty(page);6868+ }8069}81708271extern void (*flush_icache_range)(unsigned long start, unsigned long end);···11594extern void (*flush_icache_all)(void);11695extern void (*local_flush_data_cache_page)(void * addr);11796extern void (*flush_data_cache_page)(unsigned long addr);118118-119119-/*120120- * This flag is used to indicate that the page pointed to by a pte121121- * is dirty and requires cleaning before returning it to the user.122122- */123123-#define PG_dcache_dirty PG_arch_1124124-125125-#define Page_dcache_dirty(page) \126126- test_bit(PG_dcache_dirty, &(page)->flags)127127-#define SetPageDcacheDirty(page) \128128- set_bit(PG_dcache_dirty, &(page)->flags)129129-#define ClearPageDcacheDirty(page) \130130- clear_bit(PG_dcache_dirty, &(page)->flags)1319713298/* Run kernel code uncached, useful for cache probing functions. */13399unsigned long run_uncached(void *func);
+35-1
arch/mips/include/asm/cpu-features.h
···140140# endif141141#endif142142143143+#ifndef cpu_has_xpa144144+#define cpu_has_xpa (cpu_data[0].options & MIPS_CPU_XPA)145145+#endif143146#ifndef cpu_has_vtag_icache144147#define cpu_has_vtag_icache (cpu_data[0].icache.flags & MIPS_CACHE_VTAG)145148#endif···242239/* MIPSR2 and MIPSR6 have a lot of similarities */243240#define cpu_has_mips_r2_r6 (cpu_has_mips_r2 | cpu_has_mips_r6)244241242242+/*243243+ * cpu_has_mips_r2_exec_hazard - return if IHB is required on current processor244244+ *245245+ * Returns non-zero value if the current processor implementation requires246246+ * an IHB instruction to deal with an instruction hazard as per MIPS R2247247+ * architecture specification, zero otherwise.248248+ */245249#ifndef cpu_has_mips_r2_exec_hazard246246-#define cpu_has_mips_r2_exec_hazard (cpu_has_mips_r2 | cpu_has_mips_r6)250250+#define cpu_has_mips_r2_exec_hazard \251251+({ \252252+ int __res; \253253+ \254254+ switch (current_cpu_type()) { \255255+ case CPU_M14KC: \256256+ case CPU_74K: \257257+ case CPU_1074K: \258258+ case CPU_PROAPTIV: \259259+ case CPU_P5600: \260260+ case CPU_M5150: \261261+ case CPU_QEMU_GENERIC: \262262+ case CPU_CAVIUM_OCTEON: \263263+ case CPU_CAVIUM_OCTEON_PLUS: \264264+ case CPU_CAVIUM_OCTEON2: \265265+ case CPU_CAVIUM_OCTEON3: \266266+ __res = 0; \267267+ break; \268268+ \269269+ default: \270270+ __res = 1; \271271+ } \272272+ \273273+ __res; \274274+})247275#endif248276249277/*
+2-1
arch/mips/include/asm/cpu.h
···377377#define MIPS_CPU_MAAR 0x400000000ull /* MAAR(I) registers are present */378378#define MIPS_CPU_FRE 0x800000000ull /* FRE & UFE bits implemented */379379#define MIPS_CPU_RW_LLB 0x1000000000ull /* LLADDR/LLB writes are allowed */380380-#define MIPS_CPU_CDMM 0x2000000000ull /* CPU has Common Device Memory Map */380380+#define MIPS_CPU_XPA 0x2000000000ull /* CPU supports Extended Physical Addressing */381381+#define MIPS_CPU_CDMM 0x4000000000ull /* CPU has Common Device Memory Map */381382382383/*383384 * CPU ASE encodings
···11111212#include <linux/pci.h>13131414-/* Some PCI cards require delays when accessing config space. */1515-#define PCI_CONFIG_SPACE_DELAY 100001616-1714/*1815 * The physical memory base mapped by BAR1. 256MB at the end of the1916 * first 4GB.
···10101111#include <asm/asm.h>1212#include <asm/asmmacro.h>1313+#include <asm/compiler.h>1314#include <asm/regdef.h>1415#include <asm/mipsregs.h>1516#include <asm/stackframe.h>···186185 * For C code use the inline version named instruction_hazard().187186 */188187LEAF(mips_ihb)189189- .set mips32r2188188+ .set MIPS_ISA_LEVEL_RAW190189 jr.hb ra191190 nop192191 END(mips_ihb)
+1
arch/mips/kernel/proc.c
···120120 if (cpu_has_msa) seq_printf(m, "%s", " msa");121121 if (cpu_has_eva) seq_printf(m, "%s", " eva");122122 if (cpu_has_htw) seq_printf(m, "%s", " htw");123123+ if (cpu_has_xpa) seq_printf(m, "%s", " xpa");123124 seq_printf(m, "\n");124125125126 if (cpu_has_mmips) {
+6
arch/mips/kernel/smp-cps.c
···88888989 /* Make core 0 coherent with everything */9090 write_gcr_cl_coherence(0xff);9191+9292+#ifdef CONFIG_MIPS_MT_FPAFF9393+ /* If we have an FPU, enroll ourselves in the FPU-full mask */9494+ if (cpu_has_fpu)9595+ cpu_set(0, mt_fpu_cpumask);9696+#endif /* CONFIG_MIPS_MT_FPAFF */9197}92989399static void __init cps_prepare_cpus(unsigned int max_cpus)
···333333 ptep = pte_offset_map(pmdp, address);334334335335#if defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32)336336+#ifdef CONFIG_XPA337337+ write_c0_entrylo0(pte_to_entrylo(ptep->pte_high));338338+ writex_c0_entrylo0(ptep->pte_low & _PFNX_MASK);339339+ ptep++;340340+ write_c0_entrylo1(pte_to_entrylo(ptep->pte_high));341341+ writex_c0_entrylo1(ptep->pte_low & _PFNX_MASK);342342+#else336343 write_c0_entrylo0(ptep->pte_high);337344 ptep++;338345 write_c0_entrylo1(ptep->pte_high);346346+#endif339347#else340348 write_c0_entrylo0(pte_to_entrylo(pte_val(*ptep++)));341349 write_c0_entrylo1(pte_to_entrylo(pte_val(*ptep)));···363355void add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,364356 unsigned long entryhi, unsigned long pagemask)365357{358358+#ifdef CONFIG_XPA359359+ panic("Broken for XPA kernels");360360+#else366361 unsigned long flags;367362 unsigned long wired;368363 unsigned long old_pagemask;···394383 write_c0_pagemask(old_pagemask);395384 local_flush_tlb_all();396385 local_irq_restore(flags);386386+#endif397387}398388399389#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+81-34
arch/mips/mm/tlbex.c
···3535#include <asm/uasm.h>3636#include <asm/setup.h>37373838+static int __cpuinitdata mips_xpa_disabled;3939+4040+static int __init xpa_disable(char *s)4141+{4242+ mips_xpa_disabled = 1;4343+4444+ return 1;4545+}4646+4747+__setup("noxpa", xpa_disable);4848+3849/*3950 * TLB load/store/modify handlers.4051 *···242231 pr_define("_PAGE_HUGE_SHIFT %d\n", _PAGE_HUGE_SHIFT);243232 pr_define("_PAGE_SPLITTING_SHIFT %d\n", _PAGE_SPLITTING_SHIFT);244233#endif234234+#ifdef CONFIG_CPU_MIPSR2245235 if (cpu_has_rixi) {246236#ifdef _PAGE_NO_EXEC_SHIFT247237 pr_define("_PAGE_NO_EXEC_SHIFT %d\n", _PAGE_NO_EXEC_SHIFT);248248-#endif249249-#ifdef _PAGE_NO_READ_SHIFT250238 pr_define("_PAGE_NO_READ_SHIFT %d\n", _PAGE_NO_READ_SHIFT);251239#endif252240 }241241+#endif253242 pr_define("_PAGE_GLOBAL_SHIFT %d\n", _PAGE_GLOBAL_SHIFT);254243 pr_define("_PAGE_VALID_SHIFT %d\n", _PAGE_VALID_SHIFT);255244 pr_define("_PAGE_DIRTY_SHIFT %d\n", _PAGE_DIRTY_SHIFT);···512501 case tlb_indexed: tlbw = uasm_i_tlbwi; break;513502 }514503515515- if (cpu_has_mips_r2_exec_hazard) {516516- /*517517- * The architecture spec says an ehb is required here,518518- * but a number of cores do not have the hazard and519519- * using an ehb causes an expensive pipeline stall.520520- */521521- switch (current_cpu_type()) {522522- case CPU_M14KC:523523- case CPU_74K:524524- case CPU_1074K:525525- case CPU_PROAPTIV:526526- case CPU_P5600:527527- case CPU_M5150:528528- case CPU_QEMU_GENERIC:529529- break;530530-531531- default:504504+ if (cpu_has_mips_r2_r6) {505505+ if (cpu_has_mips_r2_exec_hazard)532506 uasm_i_ehb(p);533533- break;534534- }535507 tlbw(p);536508 return;537509 }···10221028 } else {10231029 int pte_off_even = sizeof(pte_t) / 2;10241030 int pte_off_odd = pte_off_even + sizeof(pte_t);10311031+#ifdef CONFIG_XPA10321032+ const int scratch = 1; /* Our extra working register */1025103310261026- /* The pte entries are pre-shifted */10271027- uasm_i_lw(p, tmp, pte_off_even, ptep); /* get even pte */10281028- UASM_i_MTC0(p, tmp, C0_ENTRYLO0); /* load it */10291029- uasm_i_lw(p, ptep, pte_off_odd, ptep); /* get odd pte */10301030- UASM_i_MTC0(p, ptep, C0_ENTRYLO1); /* load it */10341034+ uasm_i_addu(p, scratch, 0, ptep);10351035+#endif10361036+ uasm_i_lw(p, tmp, pte_off_even, ptep); /* even pte */10371037+ uasm_i_lw(p, ptep, pte_off_odd, ptep); /* odd pte */10381038+ UASM_i_ROTR(p, tmp, tmp, ilog2(_PAGE_GLOBAL));10391039+ UASM_i_ROTR(p, ptep, ptep, ilog2(_PAGE_GLOBAL));10401040+ UASM_i_MTC0(p, tmp, C0_ENTRYLO0);10411041+ UASM_i_MTC0(p, ptep, C0_ENTRYLO1);10421042+#ifdef CONFIG_XPA10431043+ uasm_i_lw(p, tmp, 0, scratch);10441044+ uasm_i_lw(p, ptep, sizeof(pte_t), scratch);10451045+ uasm_i_lui(p, scratch, 0xff);10461046+ uasm_i_ori(p, scratch, scratch, 0xffff);10471047+ uasm_i_and(p, tmp, scratch, tmp);10481048+ uasm_i_and(p, ptep, scratch, ptep);10491049+ uasm_i_mthc0(p, tmp, C0_ENTRYLO0);10501050+ uasm_i_mthc0(p, ptep, C0_ENTRYLO1);10511051+#endif10311052 }10321053#else10331054 UASM_i_LW(p, tmp, 0, ptep); /* get even pte */···15431534{15441535#ifdef CONFIG_PHYS_ADDR_T_64BIT15451536 unsigned int hwmode = mode & (_PAGE_VALID | _PAGE_DIRTY);15461546-#endif1547153715381538+ if (!cpu_has_64bits) {15391539+ const int scratch = 1; /* Our extra working register */15401540+15411541+ uasm_i_lui(p, scratch, (mode >> 16));15421542+ uasm_i_or(p, pte, pte, scratch);15431543+ } else15441544+#endif15481545 uasm_i_ori(p, pte, pte, mode);15491546#ifdef CONFIG_SMP15501547# ifdef CONFIG_PHYS_ADDR_T_64BIT···16141599 uasm_il_bbit0(p, r, pte, ilog2(_PAGE_PRESENT), lid);16151600 uasm_i_nop(p);16161601 } else {16171617- uasm_i_andi(p, t, pte, _PAGE_PRESENT);16021602+ uasm_i_srl(p, t, pte, _PAGE_PRESENT_SHIFT);16031603+ uasm_i_andi(p, t, t, 1);16181604 uasm_il_beqz(p, r, t, lid);16191605 if (pte == t)16201606 /* You lose the SMP race :-(*/16211607 iPTE_LW(p, pte, ptr);16221608 }16231609 } else {16241624- uasm_i_andi(p, t, pte, _PAGE_PRESENT | _PAGE_READ);16251625- uasm_i_xori(p, t, t, _PAGE_PRESENT | _PAGE_READ);16101610+ uasm_i_srl(p, t, pte, _PAGE_PRESENT_SHIFT);16111611+ uasm_i_andi(p, t, t, 3);16121612+ uasm_i_xori(p, t, t, 3);16261613 uasm_il_bnez(p, r, t, lid);16271614 if (pte == t)16281615 /* You lose the SMP race :-(*/···16531636{16541637 int t = scratch >= 0 ? scratch : pte;1655163816561656- uasm_i_andi(p, t, pte, _PAGE_PRESENT | _PAGE_WRITE);16571657- uasm_i_xori(p, t, t, _PAGE_PRESENT | _PAGE_WRITE);16391639+ uasm_i_srl(p, t, pte, _PAGE_PRESENT_SHIFT);16401640+ uasm_i_andi(p, t, t, 5);16411641+ uasm_i_xori(p, t, t, 5);16581642 uasm_il_bnez(p, r, t, lid);16591643 if (pte == t)16601644 /* You lose the SMP race :-(*/···16911673 uasm_i_nop(p);16921674 } else {16931675 int t = scratch >= 0 ? scratch : pte;16941694- uasm_i_andi(p, t, pte, _PAGE_WRITE);16761676+ uasm_i_srl(p, t, pte, _PAGE_WRITE_SHIFT);16771677+ uasm_i_andi(p, t, t, 1);16951678 uasm_il_beqz(p, r, t, lid);16961679 if (pte == t)16971680 /* You lose the SMP race :-(*/···2305228623062287 pwsize = ilog2(PTRS_PER_PGD) << MIPS_PWSIZE_GDW_SHIFT;23072288 pwsize |= ilog2(PTRS_PER_PTE) << MIPS_PWSIZE_PTW_SHIFT;22892289+22902290+ /* If XPA has been enabled, PTEs are 64-bit in size. */22912291+ if (read_c0_pagegrain() & PG_ELPA)22922292+ pwsize |= 1;22932293+23082294 write_c0_pwsize(pwsize);2309229523102296 /* Make sure everything is set before we enable the HTW */···23212297 pr_info("Hardware Page Table Walker enabled\n");2322229823232299 print_htw_config();23002300+}23012301+23022302+static void config_xpa_params(void)23032303+{23042304+#ifdef CONFIG_XPA23052305+ unsigned int pagegrain;23062306+23072307+ if (mips_xpa_disabled) {23082308+ pr_info("Extended Physical Addressing (XPA) disabled\n");23092309+ return;23102310+ }23112311+23122312+ pagegrain = read_c0_pagegrain();23132313+ write_c0_pagegrain(pagegrain | PG_ELPA);23142314+ back_to_back_c0_hazard();23152315+ pagegrain = read_c0_pagegrain();23162316+23172317+ if (pagegrain & PG_ELPA)23182318+ pr_info("Extended Physical Addressing (XPA) enabled\n");23192319+ else23202320+ panic("Extended Physical Addressing (XPA) disabled");23212321+#endif23242322}2325232323262324void build_tlb_refill_handler(void)···24092363 }24102364 if (cpu_has_local_ebase)24112365 build_r4000_tlb_refill_handler();23662366+ if (cpu_has_xpa)23672367+ config_xpa_params();24122368 if (cpu_has_htw)24132369 config_htw_params();24142414-24152370 }24162371}
+6
arch/mips/mti-malta/malta-memory.c
···5454 pr_warn("memsize not set in YAMON, set to default (32Mb)\n");5555 physical_memsize = 0x02000000;5656 } else {5757+ if (memsize > (256 << 20)) { /* memsize should be capped to 256M */5858+ pr_warn("Unsupported memsize value (0x%lx) detected! "5959+ "Using 0x10000000 (256M) instead\n",6060+ memsize);6161+ memsize = 256 << 20;6262+ }5763 /* If ememsize is set, then set physical_memsize to that */5864 physical_memsize = ememsize ? : memsize;5965 }
+13
arch/mips/netlogic/xlp/ahci-init-xlp2.c
···203203static void config_sata_phy(u64 regbase)204204{205205 u32 port, i, reg;206206+ u8 val;206207207208 for (port = 0; port < 2; port++) {208209 for (i = 0, reg = RXCDRCALFOSC0; reg <= CALDUTY; reg++, i++)···211210212211 for (i = 0, reg = RXDPIF; reg <= PPMDRIFTMAX_HI; reg++, i++)213212 write_phy_reg(regbase, reg, port, sata_phy_config2[i]);213213+214214+ /* Fix for PHY link up failures at lower temperatures */215215+ write_phy_reg(regbase, 0x800F, port, 0x1f);216216+217217+ val = read_phy_reg(regbase, 0x0029, port);218218+ write_phy_reg(regbase, 0x0029, port, val | (0x7 << 1));219219+220220+ val = read_phy_reg(regbase, 0x0056, port);221221+ write_phy_reg(regbase, 0x0056, port, val & ~(1 << 3));222222+223223+ val = read_phy_reg(regbase, 0x0018, port);224224+ write_phy_reg(regbase, 0x0018, port, val & ~(0x7 << 0));214225 }215226}216227
···214214 return "AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA";215215 case CVMX_BOARD_TYPE_BBGW_REF:216216 return "AABCD";217217+ case CVMX_BOARD_TYPE_CUST_DSR1000N:218218+ return "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC";217219 case CVMX_BOARD_TYPE_THUNDER:218220 case CVMX_BOARD_TYPE_EBH3000:219221 default:···273271 pci_addr.s.func = devfn & 0x7;274272 pci_addr.s.reg = reg;275273276276-#if PCI_CONFIG_SPACE_DELAY277277- udelay(PCI_CONFIG_SPACE_DELAY);278278-#endif279274 switch (size) {280275 case 4:281276 *val = le32_to_cpu(cvmx_read64_uint32(pci_addr.u64));···307308 pci_addr.s.func = devfn & 0x7;308309 pci_addr.s.reg = reg;309310310310-#if PCI_CONFIG_SPACE_DELAY311311- udelay(PCI_CONFIG_SPACE_DELAY);312312-#endif313311 switch (size) {314312 case 4:315313 cvmx_write64_uint32(pci_addr.u64, cpu_to_le32(val));
-8
arch/mips/pci/pcie-octeon.c
···17621762 default:17631763 return PCIBIOS_FUNC_NOT_SUPPORTED;17641764 }17651765-#if PCI_CONFIG_SPACE_DELAY17661766- /*17671767- * Delay on writes so that devices have time to come up. Some17681768- * bridges need this to allow time for the secondary busses to17691769- * work17701770- */17711771- udelay(PCI_CONFIG_SPACE_DELAY);17721772-#endif17731765 return PCIBIOS_SUCCESSFUL;17741766}17751767