[bhnd] fix bcma resource allocation for regions; EROM work around.
* bcma.c - assign different resource IDs for different regions * bcma_erom.c - workaround for BCM/MIPS bus enumerations Tested: * (submitter) Tested on ASUS RT-N16 initially, double checked on ASUS RT-N53 * (landonf) BCM4331 Submitted by: Michael Zhilin <mizkha@gmail.com> Differential Revision: https://reviews.freebsd.org/D6245
This commit is contained in:
parent
1f1bf434c6
commit
05992f9e2c
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=299314
@ -97,7 +97,7 @@ bcma_attach(device_t dev)
|
||||
r_count = size;
|
||||
r_end = r_start + r_count - 1;
|
||||
|
||||
dinfo->rid_agent = 0;
|
||||
dinfo->rid_agent = i + 1;
|
||||
dinfo->res_agent = bhnd_alloc_resource(dev, SYS_RES_MEMORY,
|
||||
&dinfo->rid_agent, r_start, r_end, r_count, RF_ACTIVE);
|
||||
if (dinfo->res_agent == NULL) {
|
||||
|
@ -878,7 +878,26 @@ bcma_erom_parse_corecfg(struct bcma_erom *erom, struct bcma_corecfg **result)
|
||||
for (uint8_t i = 0; i < core.num_swrap; i++) {
|
||||
/* Slave wrapper ports are not numbered distinctly from master
|
||||
* wrapper ports. */
|
||||
uint8_t sp_num = core.num_mwrap + i;
|
||||
|
||||
/*
|
||||
* Broadcom DDR1/DDR2 Memory Controller
|
||||
* (cid=82e, rev=1, unit=0, d/mw/sw = 2/0/1 ) ->
|
||||
* bhnd0: erom[0xdc]: core6 agent0.0: mismatch got: 0x1 (0x2)
|
||||
*
|
||||
* ARM BP135 AMBA3 AXI to APB Bridge
|
||||
* (cid=135, rev=0, unit=0, d/mw/sw = 1/0/1 ) ->
|
||||
* bhnd0: erom[0x124]: core9 agent1.0: mismatch got: 0x0 (0x2)
|
||||
*
|
||||
* core.num_mwrap
|
||||
* ===>
|
||||
* (core.num_mwrap > 0) ?
|
||||
* core.num_mwrap :
|
||||
* ((core.vendor == BHND_MFGID_BCM) ? 1 : 0)
|
||||
*/
|
||||
uint8_t sp_num;
|
||||
sp_num = (core.num_mwrap > 0) ?
|
||||
core.num_mwrap :
|
||||
((core.vendor == BHND_MFGID_BCM) ? 1 : 0) + i;
|
||||
error = erom_corecfg_fill_port_regions(erom, cfg, sp_num,
|
||||
BCMA_EROM_REGION_TYPE_SWRAP);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user