Path: blob/main/sys/dev/bhnd/bhndb/bhndb_pci_hwdata.c
39536 views
/*-1* Copyright (c) 2015 Landon Fuller <[email protected]>2* All rights reserved.3*4* Redistribution and use in source and binary forms, with or without5* modification, are permitted provided that the following conditions6* are met:7* 1. Redistributions of source code must retain the above copyright8* notice, this list of conditions and the following disclaimer,9* without modification.10* 2. Redistributions in binary form must reproduce at minimum a disclaimer11* similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any12* redistribution must be conditioned upon including a substantially13* similar Disclaimer requirement for further binary redistribution.14*15* NO WARRANTY16* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS17* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT18* LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY19* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL20* THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,21* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF22* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS23* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER24* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)25* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF26* THE POSSIBILITY OF SUCH DAMAGES.27*/2829#include <sys/cdefs.h>30/*31* Resource specifications and register maps for Broadcom PCI/PCIe cores32* configured as PCI-BHND bridges.33*/3435#include <sys/param.h>36#include <sys/bus.h>3738#include <machine/bus.h>39#include <sys/rman.h>40#include <machine/resource.h>4142#include <dev/pci/pcireg.h>43#include <dev/pci/pcivar.h>4445#include <dev/bhnd/cores/pci/bhnd_pcireg.h>46#include <dev/bhnd/cores/pcie2/bhnd_pcie2_reg.h>4748#include "bhndbvar.h"49#include "bhndb_pcireg.h"5051static const struct bhndb_hwcfg bhndb_pci_hwcfg_v0;52static const struct bhndb_hwcfg bhndb_pci_hwcfg_v1_pci;53static const struct bhndb_hwcfg bhndb_pci_hwcfg_v1_pcie;54static const struct bhndb_hwcfg bhndb_pci_hwcfg_v2;55static const struct bhndb_hwcfg bhndb_pci_hwcfg_v3;5657/**58* Define a bhndb_hw match entry.59*60* @param _name The entry name.61* @param _vers The configuration version associated with this entry.62*/63#define BHNDB_HW_MATCH(_name, _vers, ...) { \64.name = _name, \65.hw_reqs = _BHNDB_HW_REQ_ARRAY(__VA_ARGS__), \66.num_hw_reqs = (sizeof(_BHNDB_HW_REQ_ARRAY(__VA_ARGS__)) / \67sizeof(_BHNDB_HW_REQ_ARRAY(__VA_ARGS__)[0])), \68.cfg = &bhndb_pci_hwcfg_ ## _vers \69}70#define _BHNDB_HW_REQ_ARRAY(...) (struct bhnd_core_match[]) { __VA_ARGS__ }7172/**73* Generic PCI-SIBA bridge configuration usable with all known siba(4)-based74* PCI devices; this configuration is adequate for enumerating a bridged75* siba(4) bus to determine the full hardware configuration.76*77* @par Compatibility78* - Compatible with PCI_V0, PCI_V1, PCI_V2, and PCI_V3 devices.79* - Compatible with siba(4) bus enumeration.80* - Compatible with bcma(4) bus enumeration if the ChipCommon core is mapped81* at the default enumeration address (0x18000000).82*/83const struct bhndb_hwcfg bhndb_pci_siba_generic_hwcfg = {84.resource_specs = (const struct resource_spec[]) {85{ SYS_RES_MEMORY, PCIR_BAR(0), RF_ACTIVE },86{ -1, 0, 0 }87},8889.register_windows = (const struct bhndb_regwin[]) {90/* bar0+0x0000: configurable backplane window */91{92.win_type = BHNDB_REGWIN_T_DYN,93.win_offset = BHNDB_PCI_V1_BAR0_WIN0_OFFSET,94.win_size = BHNDB_PCI_V1_BAR0_WIN0_SIZE,95.d.dyn = {96.cfg_offset = BHNDB_PCI_V1_BAR0_WIN0_CONTROL97},98.res = { SYS_RES_MEMORY, PCIR_BAR(0) }99},100BHNDB_REGWIN_TABLE_END101},102103/* DMA unsupported under generic configuration */104.dma_translations = NULL,105};106107/**108* Generic PCI-BCMA bridge configuration usable with all known bcma(4)-based109* PCI devices; this configuration is adequate for enumerating a bridged110* bcma(4) bus to determine the full hardware configuration.111*112* @par Compatibility113* - Compatible with PCI_V1, PCI_V2, and PCI_V3 devices.114* - Compatible with both siba(4) and bcma(4) bus enumeration.115*/116const struct bhndb_hwcfg bhndb_pci_bcma_generic_hwcfg = {117.resource_specs = (const struct resource_spec[]) {118{ SYS_RES_MEMORY, PCIR_BAR(0), RF_ACTIVE },119{ -1, 0, 0 }120},121122.register_windows = (const struct bhndb_regwin[]) {123/* bar0+0x0000: configurable backplane window */124{125.win_type = BHNDB_REGWIN_T_DYN,126.win_offset = BHNDB_PCI_V1_BAR0_WIN0_OFFSET,127.win_size = BHNDB_PCI_V1_BAR0_WIN0_SIZE,128.d.dyn = {129.cfg_offset = BHNDB_PCI_V1_BAR0_WIN0_CONTROL,130},131.res = { SYS_RES_MEMORY, PCIR_BAR(0) }132},133134/* bar0+0x3000: chipc core registers */135{136.win_type = BHNDB_REGWIN_T_CORE,137.win_offset = BHNDB_PCI_V1_BAR0_CCREGS_OFFSET,138.win_size = BHNDB_PCI_V1_BAR0_CCREGS_SIZE,139.d.core = {140.class = BHND_DEVCLASS_CC,141.unit = 0,142.port = 0,143.region = 0,144.port_type = BHND_PORT_DEVICE145},146.res = { SYS_RES_MEMORY, PCIR_BAR(0) }147},148149BHNDB_REGWIN_TABLE_END150},151152/* DMA unsupported under generic configuration */153.dma_translations = NULL,154};155156/**157* Hardware configuration tables for Broadcom HND PCI NICs.158*/159const struct bhndb_hw bhndb_pci_generic_hw_table[] = {160/* PCI/V0 WLAN */161BHNDB_HW_MATCH("PCI/v0 WLAN", v0,162/* PCI Core */163{164BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),165BHND_MATCH_CORE_ID (BHND_COREID_PCI),166BHND_MATCH_CORE_REV(167HWREV_LTE (BHNDB_PCI_V0_MAX_PCI_HWREV)),168BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_PCI),169BHND_MATCH_CORE_UNIT (0)170},171172/* 802.11 Core */173{174BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),175BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_WLAN),176BHND_MATCH_CORE_UNIT (0)177}178),179180/* PCI/V1 WLAN */181BHNDB_HW_MATCH("PCI/v1 WLAN", v1_pci,182/* PCI Core */183{184BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),185BHND_MATCH_CORE_ID (BHND_COREID_PCI),186BHND_MATCH_CORE_REV(187HWREV_GTE (BHNDB_PCI_V1_MIN_PCI_HWREV)),188BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_PCI),189BHND_MATCH_CORE_UNIT (0)190},191192/* 802.11 Core */193{194BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),195BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_WLAN),196BHND_MATCH_CORE_UNIT (0)197}198),199200/* PCIE/V1 WLAN */201BHNDB_HW_MATCH("PCIe/v1 WLAN", v1_pcie,202/* PCIe Core */203{204BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),205BHND_MATCH_CORE_ID (BHND_COREID_PCIE),206BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_PCIE),207BHND_MATCH_CORE_UNIT (0)208},209210/* ChipCommon (revision <= 31) */211{212BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),213BHND_MATCH_CORE_ID (BHND_COREID_CC),214BHND_MATCH_CORE_REV(215HWREV_LTE (BHNDB_PCI_V1_MAX_CHIPC_HWREV)),216BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_CC),217BHND_MATCH_CORE_UNIT (0)218},219220/* 802.11 Core */221{222BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),223BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_WLAN),224BHND_MATCH_CORE_UNIT (0)225}226),227228/* PCIE/V2 WLAN */229BHNDB_HW_MATCH("PCIe/v2 WLAN", v2,230/* PCIe Core */231{232BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),233BHND_MATCH_CORE_ID (BHND_COREID_PCIE),234BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_PCIE),235BHND_MATCH_CORE_UNIT (0)236},237238/* ChipCommon (revision >= 32) */239{240BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),241BHND_MATCH_CORE_ID (BHND_COREID_CC),242BHND_MATCH_CORE_REV(243HWREV_GTE (BHNDB_PCI_V2_MIN_CHIPC_HWREV)),244BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_CC),245BHND_MATCH_CORE_UNIT (0)246},247248/* 802.11 Core */249{250BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),251BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_WLAN),252BHND_MATCH_CORE_UNIT (0)253}254),255256/* PCIE/V3 WLAN */257BHNDB_HW_MATCH("PCIe-Gen2/v3 WLAN", v3,258/* PCIe Gen2 Core */259{260BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),261BHND_MATCH_CORE_ID (BHND_COREID_PCIE2),262BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_PCIE),263BHND_MATCH_CORE_UNIT (0)264},265266/* 802.11 Core */267{268BHND_MATCH_CORE_VENDOR (BHND_MFGID_BCM),269BHND_MATCH_CORE_CLASS (BHND_DEVCLASS_WLAN),270BHND_MATCH_CORE_UNIT (0)271}272),273{ NULL, NULL, 0, NULL }274};275276/**277* PCI_V0 hardware configuration.278*279* Applies to:280* - PCI (cid=0x804, revision <= 12)281*/282static const struct bhndb_hwcfg bhndb_pci_hwcfg_v0 = {283.resource_specs = (const struct resource_spec[]) {284{ SYS_RES_MEMORY, PCIR_BAR(0), RF_ACTIVE },285{ -1, 0, 0 }286},287288.register_windows = (const struct bhndb_regwin[]) {289/* bar0+0x0000: configurable backplane window */290{291.win_type = BHNDB_REGWIN_T_DYN,292.win_offset = BHNDB_PCI_V0_BAR0_WIN0_OFFSET,293.win_size = BHNDB_PCI_V0_BAR0_WIN0_SIZE,294.d.dyn = {295.cfg_offset = BHNDB_PCI_V0_BAR0_WIN0_CONTROL296},297.res = { SYS_RES_MEMORY, PCIR_BAR(0) }298},299300/* bar0+0x1000: sprom shadow */301{302.win_type = BHNDB_REGWIN_T_SPROM,303.win_offset = BHNDB_PCI_V0_BAR0_SPROM_OFFSET,304.win_size = BHNDB_PCI_V0_BAR0_SPROM_SIZE,305.res = { SYS_RES_MEMORY, PCIR_BAR(0) }306},307308/*309* bar0+0x1800: pci core registers.310*311* Does not include the SSB CFG registers found at the end of312* the 4K core register block; these are mapped non-contigiously313* by the next entry.314*/315{316.win_type = BHNDB_REGWIN_T_CORE,317.win_offset = BHNDB_PCI_V0_BAR0_PCIREG_OFFSET,318.win_size = BHNDB_PCI_V0_BAR0_PCIREG_SIZE,319.d.core = {320.class = BHND_DEVCLASS_PCI,321.unit = 0,322.port = 0,323.region = 0,324.port_type = BHND_PORT_DEVICE,325},326.res = { SYS_RES_MEMORY, PCIR_BAR(0) }327},328329/* bar0+0x1E00: pci core (SSB CFG registers) */330{331.win_type = BHNDB_REGWIN_T_CORE,332.win_offset = BHNDB_PCI_V0_BAR0_PCISB_OFFSET ,333.win_size = BHNDB_PCI_V0_BAR0_PCISB_SIZE,334.d.core = {335.class = BHND_DEVCLASS_PCI,336.unit = 0,337.port = 0,338.region = 0,339.offset = BHNDB_PCI_V0_BAR0_PCISB_COREOFF,340.port_type = BHND_PORT_DEVICE341},342.res = { SYS_RES_MEMORY, PCIR_BAR(0) }343},344345BHNDB_REGWIN_TABLE_END346},347348.dma_translations = (const struct bhnd_dma_translation[]) {349{350.base_addr = BHND_PCI_DMA32_TRANSLATION,351.addr_mask = ~BHND_PCI_DMA32_MASK,352.addrext_mask = BHND_PCI_DMA32_MASK353},354BHND_DMA_TRANSLATION_TABLE_END355}356};357358/**359* PCI_V1 (PCI-only) hardware configuration (PCI version)360*361* Applies to:362* - PCI (cid=0x804, revision >= 13)363*/364static const struct bhndb_hwcfg bhndb_pci_hwcfg_v1_pci = {365.resource_specs = (const struct resource_spec[]) {366{ SYS_RES_MEMORY, PCIR_BAR(0), RF_ACTIVE },367{ -1, 0, 0 }368},369370.register_windows = (const struct bhndb_regwin[]) {371/* bar0+0x0000: configurable backplane window */372{373.win_type = BHNDB_REGWIN_T_DYN,374.win_offset = BHNDB_PCI_V1_BAR0_WIN0_OFFSET,375.win_size = BHNDB_PCI_V1_BAR0_WIN0_SIZE,376.d.dyn = {377.cfg_offset = BHNDB_PCI_V1_BAR0_WIN0_CONTROL378},379.res = { SYS_RES_MEMORY, PCIR_BAR(0) }380},381382/* bar0+0x1000: sprom shadow */383{384.win_type = BHNDB_REGWIN_T_SPROM,385.win_offset = BHNDB_PCI_V1_BAR0_SPROM_OFFSET,386.win_size = BHNDB_PCI_V1_BAR0_SPROM_SIZE,387.res = { SYS_RES_MEMORY, PCIR_BAR(0) }388},389390/* bar0+0x2000: pci core registers */391{392.win_type = BHNDB_REGWIN_T_CORE,393.win_offset = BHNDB_PCI_V1_BAR0_PCIREG_OFFSET,394.win_size = BHNDB_PCI_V1_BAR0_PCIREG_SIZE,395.d.core = {396.class = BHND_DEVCLASS_PCI,397.unit = 0,398.port = 0,399.region = 0,400.port_type = BHND_PORT_DEVICE401},402.res = { SYS_RES_MEMORY, PCIR_BAR(0) }403},404405/* bar0+0x3000: chipc core registers */406{407.win_type = BHNDB_REGWIN_T_CORE,408.win_offset = BHNDB_PCI_V1_BAR0_CCREGS_OFFSET,409.win_size = BHNDB_PCI_V1_BAR0_CCREGS_SIZE,410.d.core = {411.class = BHND_DEVCLASS_CC,412.unit = 0,413.port = 0,414.region = 0,415.port_type = BHND_PORT_DEVICE416},417.res = { SYS_RES_MEMORY, PCIR_BAR(0) }418},419420BHNDB_REGWIN_TABLE_END421},422423.dma_translations = (const struct bhnd_dma_translation[]) {424{425.base_addr = BHND_PCI_DMA32_TRANSLATION,426.addr_mask = ~BHND_PCI_DMA32_MASK,427.addrext_mask = BHND_PCI_DMA32_MASK428},429BHND_DMA_TRANSLATION_TABLE_END430}431};432433/**434* PCI_V1 hardware configuration (PCIE version).435*436* Applies to:437* - PCIE (cid=0x820) with ChipCommon (revision <= 31)438*/439static const struct bhndb_hwcfg bhndb_pci_hwcfg_v1_pcie = {440.resource_specs = (const struct resource_spec[]) {441{ SYS_RES_MEMORY, PCIR_BAR(0), RF_ACTIVE },442{ -1, 0, 0 }443},444445.register_windows = (const struct bhndb_regwin[]) {446/* bar0+0x0000: configurable backplane window */447{448.win_type = BHNDB_REGWIN_T_DYN,449.win_offset = BHNDB_PCI_V1_BAR0_WIN0_OFFSET,450.win_size = BHNDB_PCI_V1_BAR0_WIN0_SIZE,451.d.dyn = {452.cfg_offset = BHNDB_PCI_V1_BAR0_WIN0_CONTROL453},454.res = { SYS_RES_MEMORY, PCIR_BAR(0) }455},456457/* bar0+0x1000: sprom shadow */458{459.win_type = BHNDB_REGWIN_T_SPROM,460.win_offset = BHNDB_PCI_V1_BAR0_SPROM_OFFSET,461.win_size = BHNDB_PCI_V1_BAR0_SPROM_SIZE,462.res = { SYS_RES_MEMORY, PCIR_BAR(0) }463},464465/* bar0+0x2000: pci core registers */466{467.win_type = BHNDB_REGWIN_T_CORE,468.win_offset = BHNDB_PCI_V1_BAR0_PCIREG_OFFSET,469.win_size = BHNDB_PCI_V1_BAR0_PCIREG_SIZE,470.d.core = {471.class = BHND_DEVCLASS_PCIE,472.unit = 0,473.port = 0,474.region = 0,475.port_type = BHND_PORT_DEVICE476},477.res = { SYS_RES_MEMORY, PCIR_BAR(0) }478},479480/* bar0+0x3000: chipc core registers */481{482.win_type = BHNDB_REGWIN_T_CORE,483.win_offset = BHNDB_PCI_V1_BAR0_CCREGS_OFFSET,484.win_size = BHNDB_PCI_V1_BAR0_CCREGS_SIZE,485.d.core = {486.class = BHND_DEVCLASS_CC,487.unit = 0,488.port = 0,489.region = 0,490.port_type = BHND_PORT_DEVICE491},492.res = { SYS_RES_MEMORY, PCIR_BAR(0) }493},494495BHNDB_REGWIN_TABLE_END496},497498.dma_translations = (const struct bhnd_dma_translation[]) {499{500.base_addr = BHND_PCIE_DMA32_TRANSLATION,501.addr_mask = ~BHND_PCIE_DMA32_MASK,502.addrext_mask = BHND_PCIE_DMA32_MASK503},504{505.base_addr = BHND_PCIE_DMA64_TRANSLATION,506.addr_mask = ~BHND_PCIE_DMA64_MASK,507.addrext_mask = BHND_PCIE_DMA64_MASK508},509BHND_DMA_TRANSLATION_TABLE_END510}511};512513/**514* PCI_V2 hardware configuration.515*516* Applies to:517* - PCIE (cid=0x820) with ChipCommon (revision >= 32)518*/519static const struct bhndb_hwcfg bhndb_pci_hwcfg_v2 = {520.resource_specs = (const struct resource_spec[]) {521{ SYS_RES_MEMORY, PCIR_BAR(0), RF_ACTIVE },522{ -1, 0, 0 }523},524525.register_windows = (const struct bhndb_regwin[]) {526/* bar0+0x0000: configurable backplane window */527{528.win_type = BHNDB_REGWIN_T_DYN,529.win_offset = BHNDB_PCI_V2_BAR0_WIN0_OFFSET,530.win_size = BHNDB_PCI_V2_BAR0_WIN0_SIZE,531.d.dyn = {532.cfg_offset = BHNDB_PCI_V2_BAR0_WIN0_CONTROL,533},534.res = { SYS_RES_MEMORY, PCIR_BAR(0) }535},536537/* bar0+0x1000: configurable backplane window */538{539.win_type = BHNDB_REGWIN_T_DYN,540.win_offset = BHNDB_PCI_V2_BAR0_WIN1_OFFSET,541.win_size = BHNDB_PCI_V2_BAR0_WIN1_SIZE,542.d.dyn = {543.cfg_offset = BHNDB_PCI_V2_BAR0_WIN1_CONTROL,544},545.res = { SYS_RES_MEMORY, PCIR_BAR(0) }546},547548/* bar0+0x2000: pcie core registers */549{550.win_type = BHNDB_REGWIN_T_CORE,551.win_offset = BHNDB_PCI_V2_BAR0_PCIREG_OFFSET,552.win_size = BHNDB_PCI_V2_BAR0_PCIREG_SIZE,553.d.core = {554.class = BHND_DEVCLASS_PCIE,555.unit = 0,556.port = 0,557.region = 0,558.port_type = BHND_PORT_DEVICE559},560.res = { SYS_RES_MEMORY, PCIR_BAR(0) }561},562563/* bar0+0x3000: chipc core registers */564{565.win_type = BHNDB_REGWIN_T_CORE,566.win_offset = BHNDB_PCI_V2_BAR0_CCREGS_OFFSET,567.win_size = BHNDB_PCI_V2_BAR0_CCREGS_SIZE,568.d.core = {569.class = BHND_DEVCLASS_CC,570.unit = 0,571.port = 0,572.region = 0,573.port_type = BHND_PORT_DEVICE574},575.res = { SYS_RES_MEMORY, PCIR_BAR(0) }576},577578BHNDB_REGWIN_TABLE_END579},580581.dma_translations = (const struct bhnd_dma_translation[]) {582{583.base_addr = BHND_PCIE_DMA32_TRANSLATION,584.addr_mask = ~BHND_PCIE_DMA32_MASK,585.addrext_mask = BHND_PCIE_DMA32_MASK586},587{588.base_addr = BHND_PCIE_DMA64_TRANSLATION,589.addr_mask = ~BHND_PCIE_DMA64_MASK,590.addrext_mask = BHND_PCIE_DMA64_MASK591},592BHND_DMA_TRANSLATION_TABLE_END593}594};595596/**597* PCI_V3 hardware configuration.598*599* Applies to:600* - PCIE2 (cid=0x83c)601*/602static const struct bhndb_hwcfg bhndb_pci_hwcfg_v3 = {603.resource_specs = (const struct resource_spec[]) {604{ SYS_RES_MEMORY, PCIR_BAR(0), RF_ACTIVE },605{ -1, 0, 0 }606},607608.register_windows = (const struct bhndb_regwin[]) {609/* bar0+0x0000: configurable backplane window */610{611.win_type = BHNDB_REGWIN_T_DYN,612.win_offset = BHNDB_PCI_V3_BAR0_WIN0_OFFSET,613.win_size = BHNDB_PCI_V3_BAR0_WIN0_SIZE,614.d.dyn = {615.cfg_offset = BHNDB_PCI_V3_BAR0_WIN0_CONTROL,616},617.res = { SYS_RES_MEMORY, PCIR_BAR(0) }618},619620/* bar0+0x1000: configurable backplane window */621{622.win_type = BHNDB_REGWIN_T_DYN,623.win_offset = BHNDB_PCI_V3_BAR0_WIN1_OFFSET,624.win_size = BHNDB_PCI_V3_BAR0_WIN1_SIZE,625.d.dyn = {626.cfg_offset = BHNDB_PCI_V3_BAR0_WIN1_CONTROL,627},628.res = { SYS_RES_MEMORY, PCIR_BAR(0) }629},630631/* bar0+0x2000: pcie core registers */632{633.win_type = BHNDB_REGWIN_T_CORE,634.win_offset = BHNDB_PCI_V3_BAR0_PCIREG_OFFSET,635.win_size = BHNDB_PCI_V3_BAR0_PCIREG_SIZE,636.d.core = {637.class = BHND_DEVCLASS_PCIE,638.unit = 0,639.port = 0,640.region = 0,641.port_type = BHND_PORT_DEVICE642},643.res = { SYS_RES_MEMORY, PCIR_BAR(0) }644},645646/* bar0+0x3000: chipc core registers */647{648.win_type = BHNDB_REGWIN_T_CORE,649.win_offset = BHNDB_PCI_V3_BAR0_CCREGS_OFFSET,650.win_size = BHNDB_PCI_V3_BAR0_CCREGS_SIZE,651.d.core = {652.class = BHND_DEVCLASS_CC,653.unit = 0,654.port = 0,655.region = 0,656.port_type = BHND_PORT_DEVICE657},658.res = { SYS_RES_MEMORY, PCIR_BAR(0) }659},660661BHNDB_REGWIN_TABLE_END662},663664.dma_translations = (const struct bhnd_dma_translation[]) {665{666.base_addr = BHND_PCIE2_DMA64_TRANSLATION,667.addr_mask = ~BHND_PCIE2_DMA64_MASK,668.addrext_mask = BHND_PCIE_DMA64_MASK669},670BHND_DMA_TRANSLATION_TABLE_END671}672};673674675