Lines Matching refs:mmio
1038 static u64 to_interleave_offset(u64 offset, struct nfit_blk_mmio *mmio) in to_interleave_offset() argument
1040 struct acpi_nfit_interleave *idt = mmio->idt; in to_interleave_offset()
1044 line_no = div_u64_rem(offset, mmio->line_size, &sub_line_offset); in to_interleave_offset()
1045 table_skip_count = div_u64_rem(line_no, mmio->num_lines, &line_index); in to_interleave_offset()
1047 * mmio->line_size; in to_interleave_offset()
1048 table_offset = table_skip_count * mmio->table_size; in to_interleave_offset()
1050 return mmio->base_offset + line_offset + table_offset + sub_line_offset; in to_interleave_offset()
1073 struct nfit_blk_mmio *mmio = &nfit_blk->mmio[DCR]; in read_blk_stat() local
1074 u64 offset = nfit_blk->stat_offset + mmio->size * bw; in read_blk_stat()
1076 if (mmio->num_lines) in read_blk_stat()
1077 offset = to_interleave_offset(offset, mmio); in read_blk_stat()
1079 return readl(mmio->addr.base + offset); in read_blk_stat()
1086 struct nfit_blk_mmio *mmio = &nfit_blk->mmio[DCR]; in write_blk_ctl() local
1100 offset = nfit_blk->cmd_offset + mmio->size * bw; in write_blk_ctl()
1101 if (mmio->num_lines) in write_blk_ctl()
1102 offset = to_interleave_offset(offset, mmio); in write_blk_ctl()
1104 writeq(cmd, mmio->addr.base + offset); in write_blk_ctl()
1108 readq(mmio->addr.base + offset); in write_blk_ctl()
1115 struct nfit_blk_mmio *mmio = &nfit_blk->mmio[BDW]; in acpi_nfit_blk_single_io() local
1121 + lane * mmio->size; in acpi_nfit_blk_single_io()
1127 if (mmio->num_lines) { in acpi_nfit_blk_single_io()
1131 mmio); in acpi_nfit_blk_single_io()
1132 div_u64_rem(offset, mmio->line_size, &line_offset); in acpi_nfit_blk_single_io()
1133 c = min_t(size_t, len, mmio->line_size - line_offset); in acpi_nfit_blk_single_io()
1140 memcpy_to_pmem(mmio->addr.aperture + offset, in acpi_nfit_blk_single_io()
1145 mmio->addr.aperture + offset, c); in acpi_nfit_blk_single_io()
1148 mmio->addr.aperture + offset, c); in acpi_nfit_blk_single_io()
1166 struct nfit_blk_mmio *mmio = &nfit_blk->mmio[BDW]; in acpi_nfit_blk_region_do_io() local
1173 u64 c = min(len, mmio->size); in acpi_nfit_blk_region_do_io()
1307 static int nfit_blk_init_interleave(struct nfit_blk_mmio *mmio, in nfit_blk_init_interleave() argument
1311 mmio->num_lines = idt->line_count; in nfit_blk_init_interleave()
1312 mmio->line_size = idt->line_size; in nfit_blk_init_interleave()
1315 mmio->table_size = mmio->num_lines * interleave_ways in nfit_blk_init_interleave()
1316 * mmio->line_size; in nfit_blk_init_interleave()
1351 struct nfit_blk_mmio *mmio; in acpi_nfit_blk_region_enable() local
1375 mmio = &nfit_blk->mmio[BDW]; in acpi_nfit_blk_region_enable()
1376 mmio->addr.base = nfit_spa_map(acpi_desc, nfit_mem->spa_bdw, in acpi_nfit_blk_region_enable()
1378 if (!mmio->addr.base) { in acpi_nfit_blk_region_enable()
1383 mmio->size = nfit_mem->bdw->size; in acpi_nfit_blk_region_enable()
1384 mmio->base_offset = nfit_mem->memdev_bdw->region_offset; in acpi_nfit_blk_region_enable()
1385 mmio->idt = nfit_mem->idt_bdw; in acpi_nfit_blk_region_enable()
1386 mmio->spa = nfit_mem->spa_bdw; in acpi_nfit_blk_region_enable()
1387 rc = nfit_blk_init_interleave(mmio, nfit_mem->idt_bdw, in acpi_nfit_blk_region_enable()
1398 mmio = &nfit_blk->mmio[DCR]; in acpi_nfit_blk_region_enable()
1399 mmio->addr.base = nfit_spa_map(acpi_desc, nfit_mem->spa_dcr, in acpi_nfit_blk_region_enable()
1401 if (!mmio->addr.base) { in acpi_nfit_blk_region_enable()
1406 mmio->size = nfit_mem->dcr->window_size; in acpi_nfit_blk_region_enable()
1407 mmio->base_offset = nfit_mem->memdev_dcr->region_offset; in acpi_nfit_blk_region_enable()
1408 mmio->idt = nfit_mem->idt_dcr; in acpi_nfit_blk_region_enable()
1409 mmio->spa = nfit_mem->spa_dcr; in acpi_nfit_blk_region_enable()
1410 rc = nfit_blk_init_interleave(mmio, nfit_mem->idt_dcr, in acpi_nfit_blk_region_enable()
1436 if (mmio->line_size == 0) in acpi_nfit_blk_region_enable()
1439 if ((u32) nfit_blk->cmd_offset % mmio->line_size in acpi_nfit_blk_region_enable()
1440 + 8 > mmio->line_size) { in acpi_nfit_blk_region_enable()
1443 } else if ((u32) nfit_blk->stat_offset % mmio->line_size in acpi_nfit_blk_region_enable()
1444 + 8 > mmio->line_size) { in acpi_nfit_blk_region_enable()
1466 struct nfit_blk_mmio *mmio = &nfit_blk->mmio[i]; in acpi_nfit_blk_region_disable() local
1468 if (mmio->addr.base) in acpi_nfit_blk_region_disable()
1469 nfit_spa_unmap(acpi_desc, mmio->spa); in acpi_nfit_blk_region_disable()