Lines Matching refs:start

178 static void __l2c210_op_pa_range(void __iomem *reg, unsigned long start,
181 while (start < end) {
182 writel_relaxed(start, reg);
183 start += CACHE_LINE_SIZE;
187 static void l2c210_inv_range(unsigned long start, unsigned long end)
191 if (start & (CACHE_LINE_SIZE - 1)) {
192 start &= ~(CACHE_LINE_SIZE - 1);
193 writel_relaxed(start, base + L2X0_CLEAN_INV_LINE_PA);
194 start += CACHE_LINE_SIZE;
202 __l2c210_op_pa_range(base + L2X0_INV_LINE_PA, start, end);
206 static void l2c210_clean_range(unsigned long start, unsigned long end)
210 start &= ~(CACHE_LINE_SIZE - 1);
211 __l2c210_op_pa_range(base + L2X0_CLEAN_LINE_PA, start, end);
215 static void l2c210_flush_range(unsigned long start, unsigned long end)
219 start &= ~(CACHE_LINE_SIZE - 1);
220 __l2c210_op_pa_range(base + L2X0_CLEAN_INV_LINE_PA, start, end);
284 static unsigned long l2c220_op_pa_range(void __iomem *reg, unsigned long start,
289 while (start < end) {
290 unsigned long blk_end = start + min(end - start, 4096UL);
292 while (start < blk_end) {
294 writel_relaxed(start, reg);
295 start += CACHE_LINE_SIZE;
307 static void l2c220_inv_range(unsigned long start, unsigned long end)
313 if ((start | end) & (CACHE_LINE_SIZE - 1)) {
314 if (start & (CACHE_LINE_SIZE - 1)) {
315 start &= ~(CACHE_LINE_SIZE - 1);
316 writel_relaxed(start, base + L2X0_CLEAN_INV_LINE_PA);
317 start += CACHE_LINE_SIZE;
328 start, end, flags);
334 static void l2c220_clean_range(unsigned long start, unsigned long end)
339 start &= ~(CACHE_LINE_SIZE - 1);
340 if ((end - start) >= l2x0_size) {
347 start, end, flags);
353 static void l2c220_flush_range(unsigned long start, unsigned long end)
358 start &= ~(CACHE_LINE_SIZE - 1);
359 if ((end - start) >= l2x0_size) {
366 start, end, flags);
467 static void l2c310_inv_range_erratum(unsigned long start, unsigned long end)
471 if ((start | end) & (CACHE_LINE_SIZE - 1)) {
478 if (start & (CACHE_LINE_SIZE - 1)) {
479 start &= ~(CACHE_LINE_SIZE - 1);
480 writel_relaxed(start, base + L2X0_CLEAN_LINE_PA);
481 writel_relaxed(start, base + L2X0_INV_LINE_PA);
482 start += CACHE_LINE_SIZE;
495 __l2c210_op_pa_range(base + L2X0_INV_LINE_PA, start, end);
499 static void l2c310_flush_range_erratum(unsigned long start, unsigned long end)
506 while (start < end) {
507 unsigned long blk_end = start + min(end - start, 4096UL);
510 while (start < blk_end) {
511 writel_relaxed(start, base + L2X0_CLEAN_LINE_PA);
512 writel_relaxed(start, base + L2X0_INV_LINE_PA);
513 start += CACHE_LINE_SIZE;
1354 * inclusive start and end addresses.
1356 static unsigned long aurora_range_end(unsigned long start, unsigned long end)
1363 if (end > start + AURORA_MAX_RANGE_SIZE)
1364 end = start + AURORA_MAX_RANGE_SIZE;
1369 if (end > PAGE_ALIGN(start+1))
1370 end = PAGE_ALIGN(start+1);
1375 static void aurora_pa_range(unsigned long start, unsigned long end,
1383 * round start and end adresses up to cache line size
1385 start &= ~(CACHE_LINE_SIZE - 1);
1389 * perform operation on all full cache lines between 'start' and 'end'
1391 while (start < end) {
1392 range_end = aurora_range_end(start, end);
1395 writel_relaxed(start, base + AURORA_RANGE_BASE_ADDR_REG);
1400 start = range_end;
1403 static void aurora_inv_range(unsigned long start, unsigned long end)
1405 aurora_pa_range(start, end, AURORA_INVAL_RANGE_REG);
1408 static void aurora_clean_range(unsigned long start, unsigned long end)
1415 aurora_pa_range(start, end, AURORA_CLEAN_RANGE_REG);
1418 static void aurora_flush_range(unsigned long start, unsigned long end)
1421 aurora_pa_range(start, end, AURORA_INVAL_RANGE_REG);
1423 aurora_pa_range(start, end, AURORA_FLUSH_RANGE_REG);
1567 * When the start and end addresses have crossed two different sections, we
1578 * We do not need to handle the case when the start address is in
1607 static void bcm_inv_range(unsigned long start, unsigned long end)
1611 BUG_ON(start < BCM_SYS_EMI_START_ADDR);
1613 if (unlikely(end <= start))
1616 new_start = bcm_l2_phys_addr(start);
1619 /* normal case, no cross section between start and end */
1620 if (likely(bcm_addr_is_sys_emi(end) || !bcm_addr_is_sys_emi(start))) {
1634 static void bcm_clean_range(unsigned long start, unsigned long end)
1638 BUG_ON(start < BCM_SYS_EMI_START_ADDR);
1640 if (unlikely(end <= start))
1643 new_start = bcm_l2_phys_addr(start);
1646 /* normal case, no cross section between start and end */
1647 if (likely(bcm_addr_is_sys_emi(end) || !bcm_addr_is_sys_emi(start))) {
1661 static void bcm_flush_range(unsigned long start, unsigned long end)
1665 BUG_ON(start < BCM_SYS_EMI_START_ADDR);
1667 if (unlikely(end <= start))
1670 if ((end - start) >= l2x0_size) {
1675 new_start = bcm_l2_phys_addr(start);
1678 /* normal case, no cross section between start and end */
1679 if (likely(bcm_addr_is_sys_emi(end) || !bcm_addr_is_sys_emi(start))) {
1693 /* Broadcom L2C-310 start from ARMs R3P2 or later, and require no fixups */
1777 l2x0_base = ioremap(res.start, resource_size(&res));
1781 l2x0_saved_regs.phy_base = res.start;