• Home
  • Raw
  • Download

Lines Matching +full:erratum +full:- +full:a008585

101 			writel_relaxed(val, timer->base + CNTP_CTL);  in arch_timer_reg_write()
104 writel_relaxed(val, timer->base + CNTP_TVAL); in arch_timer_reg_write()
111 writel_relaxed(val, timer->base + CNTV_CTL); in arch_timer_reg_write()
114 writel_relaxed(val, timer->base + CNTV_TVAL); in arch_timer_reg_write()
132 val = readl_relaxed(timer->base + CNTP_CTL); in arch_timer_reg_read()
135 val = readl_relaxed(timer->base + CNTP_TVAL); in arch_timer_reg_read()
142 val = readl_relaxed(timer->base + CNTV_CTL); in arch_timer_reg_read()
145 val = readl_relaxed(timer->base + CNTV_TVAL); in arch_timer_reg_read()
205 _retries--; \
238 * Theoretically the erratum should not occur more than twice in succession
251 _retries--; \
252 } while (unlikely((_new - _old) >> 5) && _retries); \
326 * (7ff -> 000 -> 800) and forward (7ff -> fff -> 800), ignore register values
336 _retries--; \
355 return read_sysreg(cntp_cval_el0) - sun50i_a64_read_cntpct_el0(); in sun50i_a64_read_cntp_tval_el0()
360 return read_sysreg(cntv_cval_el0) - sun50i_a64_read_cntvct_el0(); in sun50i_a64_read_cntv_tval_el0()
410 .id = "fsl,erratum-a008585",
411 .desc = "Freescale erratum a005858",
423 .id = "hisilicon,erratum-161010101",
424 .desc = "HiSilicon erratum 161010101",
435 .desc = "HiSilicon erratum 161010101",
448 .desc = "ARM erratum 858921",
456 .id = "allwinner,erratum-unknown1",
457 .desc = "Allwinner erratum UNKNOWN1",
477 return of_property_read_bool(np, wa->id); in arch_timer_check_dt_erratum()
484 return this_cpu_has_cap((uintptr_t)wa->id); in arch_timer_check_local_cap_erratum()
493 const struct ate_acpi_oem_info *info = wa->id; in arch_timer_check_acpi_oem_erratum()
498 if (!memcmp(info->oem_id, table->oem_id, ACPI_OEM_ID_SIZE) && in arch_timer_check_acpi_oem_erratum()
499 !memcmp(info->oem_table_id, table->oem_table_id, ACPI_OEM_TABLE_ID_SIZE) && in arch_timer_check_acpi_oem_erratum()
500 info->oem_revision == table->oem_revision) in arch_timer_check_acpi_oem_erratum()
542 * hotplug framework. Otherwise, we end-up in deadlock-land. in arch_timer_enable_workaround()
548 * out-of-line counter accessor. We may change our mind pretty in arch_timer_enable_workaround()
549 * late in the game (with a per-CPU erratum, for example), so in arch_timer_enable_workaround()
552 if (wa->read_cntvct_el0) { in arch_timer_enable_workaround()
590 wa->desc, __wa->desc); in arch_timer_check_ool_workaround()
598 local ? "local" : "global", wa->desc); in arch_timer_check_ool_workaround()
607 if (__wa && __wa->fn) { \
608 r = __wa->fn(__VA_ARGS__); \
624 return wa && wa->read_cntvct_el0; in arch_timer_this_cpu_has_cntvct_wa()
643 evt->event_handler(evt); in timer_handler()
762 clk->features = CLOCK_EVT_FEAT_ONESHOT; in __arch_timer_setup()
766 clk->features |= CLOCK_EVT_FEAT_C3STOP; in __arch_timer_setup()
767 clk->name = "arch_sys_timer"; in __arch_timer_setup()
768 clk->rating = 450; in __arch_timer_setup()
769 clk->cpumask = cpumask_of(smp_processor_id()); in __arch_timer_setup()
770 clk->irq = arch_timer_ppi[arch_timer_uses_ppi]; in __arch_timer_setup()
773 clk->set_state_shutdown = arch_timer_shutdown_virt; in __arch_timer_setup()
774 clk->set_state_oneshot_stopped = arch_timer_shutdown_virt; in __arch_timer_setup()
775 clk->set_next_event = arch_timer_set_next_event_virt; in __arch_timer_setup()
780 clk->set_state_shutdown = arch_timer_shutdown_phys; in __arch_timer_setup()
781 clk->set_state_oneshot_stopped = arch_timer_shutdown_phys; in __arch_timer_setup()
782 clk->set_next_event = arch_timer_set_next_event_phys; in __arch_timer_setup()
790 clk->features |= CLOCK_EVT_FEAT_DYNIRQ; in __arch_timer_setup()
791 clk->name = "arch_mem_timer"; in __arch_timer_setup()
792 clk->rating = 400; in __arch_timer_setup()
793 clk->cpumask = cpu_possible_mask; in __arch_timer_setup()
795 clk->set_state_shutdown = arch_timer_shutdown_virt_mem; in __arch_timer_setup()
796 clk->set_state_oneshot_stopped = arch_timer_shutdown_virt_mem; in __arch_timer_setup()
797 clk->set_next_event = in __arch_timer_setup()
800 clk->set_state_shutdown = arch_timer_shutdown_phys_mem; in __arch_timer_setup()
801 clk->set_state_oneshot_stopped = arch_timer_shutdown_phys_mem; in __arch_timer_setup()
802 clk->set_next_event = in __arch_timer_setup()
807 clk->set_state_shutdown(clk); in __arch_timer_setup()
835 if (pos > 1 && !(evt_stream_div & (1 << (pos - 2)))) in arch_timer_configure_evtstream()
836 pos--; in arch_timer_configure_evtstream()
909 * For historical reasons, when probing with DT we use whichever (non-zero)
911 * probed has a clock-frequency property, this overrides the HW register.
919 if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate)) in arch_timer_of_configure_rate()
1012 pr_debug("disable IRQ%d cpu #%d\n", clk->irq, smp_processor_id()); in arch_timer_stop()
1018 clk->set_state_shutdown(clk); in arch_timer_stop()
1081 err = -ENOMEM; in arch_timer_register()
1152 return -ENOMEM; in arch_timer_mem_register()
1154 t->base = base; in arch_timer_mem_register()
1155 t->evt.irq = irq; in arch_timer_mem_register()
1156 __arch_timer_setup(ARCH_TIMER_TYPE_MEM, &t->evt); in arch_timer_mem_register()
1163 ret = request_irq(irq, func, IRQF_TIMER, "arch_mem_timer", &t->evt); in arch_timer_mem_register()
1173 { .compatible = "arm,armv7-timer", },
1174 { .compatible = "arm,armv8-timer", },
1179 { .compatible = "arm,armv7-timer-mem", },
1189 /* We have two timers, and both device-tree nodes are probed. */ in arch_timer_needs_of_probing()
1195 * check if we have another type of timer node in device-tree. in arch_timer_needs_of_probing()
1218 * arch_timer_select_ppi() - Select suitable PPI for the current system.
1268 arch_timer_c3stop = !of_property_read_bool(np, "always-on"); in arch_timer_of_init()
1278 of_property_read_bool(np, "arm,cpu-registers-not-fw-configured")) in arch_timer_of_init()
1285 return -EINVAL; in arch_timer_of_init()
1290 "arm,no-tick-in-suspend"); in arch_timer_of_init()
1301 TIMER_OF_DECLARE(armv7_arch_timer, "arm,armv7-timer", arch_timer_of_init);
1302 TIMER_OF_DECLARE(armv8_arch_timer, "arm,armv8-timer", arch_timer_of_init);
1310 base = ioremap(frame->cntbase, frame->size); in arch_timer_mem_frame_get_cntfrq()
1312 pr_err("Unable to map frame @ %pa\n", &frame->cntbase); in arch_timer_mem_frame_get_cntfrq()
1331 cntctlbase = ioremap(timer_mem->cntctlbase, timer_mem->size); in arch_timer_mem_find_best_frame()
1334 &timer_mem->cntctlbase); in arch_timer_mem_find_best_frame()
1348 frame = &timer_mem->frame[i]; in arch_timer_mem_find_best_frame()
1349 if (!frame->valid) in arch_timer_mem_find_best_frame()
1381 irq = frame->virt_irq; in arch_timer_mem_frame_register()
1383 irq = frame->phys_irq; in arch_timer_mem_frame_register()
1388 return -EINVAL; in arch_timer_mem_frame_register()
1391 if (!request_mem_region(frame->cntbase, frame->size, in arch_timer_mem_frame_register()
1393 return -EBUSY; in arch_timer_mem_frame_register()
1395 base = ioremap(frame->cntbase, frame->size); in arch_timer_mem_frame_register()
1398 return -ENXIO; in arch_timer_mem_frame_register()
1419 int ret = -EINVAL; in arch_timer_mem_of_init()
1424 return -ENOMEM; in arch_timer_mem_of_init()
1428 timer_mem->cntctlbase = res.start; in arch_timer_mem_of_init()
1429 timer_mem->size = resource_size(&res); in arch_timer_mem_of_init()
1435 if (of_property_read_u32(frame_node, "frame-number", &n)) { in arch_timer_mem_of_init()
1436 pr_err(FW_BUG "Missing frame-number.\n"); in arch_timer_mem_of_init()
1441 pr_err(FW_BUG "Wrong frame-number, only 0-%u are permitted.\n", in arch_timer_mem_of_init()
1442 ARCH_TIMER_MEM_MAX_FRAMES - 1); in arch_timer_mem_of_init()
1446 frame = &timer_mem->frame[n]; in arch_timer_mem_of_init()
1448 if (frame->valid) { in arch_timer_mem_of_init()
1449 pr_err(FW_BUG "Duplicated frame-number.\n"); in arch_timer_mem_of_init()
1458 frame->cntbase = res.start; in arch_timer_mem_of_init()
1459 frame->size = resource_size(&res); in arch_timer_mem_of_init()
1461 frame->virt_irq = irq_of_parse_and_map(frame_node, in arch_timer_mem_of_init()
1463 frame->phys_irq = irq_of_parse_and_map(frame_node, in arch_timer_mem_of_init()
1466 frame->valid = true; in arch_timer_mem_of_init()
1472 &timer_mem->cntctlbase); in arch_timer_mem_of_init()
1473 ret = -EINVAL; in arch_timer_mem_of_init()
1487 TIMER_OF_DECLARE(armv7_arch_timer_mem, "arm,armv7-timer-mem",
1499 frame = &timer_mem->frame[i]; in arch_timer_mem_verify_cntfrq()
1501 if (!frame->valid) in arch_timer_mem_verify_cntfrq()
1509 &frame->cntbase, in arch_timer_mem_verify_cntfrq()
1512 return -EINVAL; in arch_timer_mem_verify_cntfrq()
1527 return -ENOMEM; in arch_timer_mem_acpi_init()
1556 &timer->cntctlbase); in arch_timer_mem_acpi_init()
1566 /* Initialize per-processor generic timer and memory-mapped timer(if present) */
1573 return -EINVAL; in arch_timer_acpi_init()
1602 return -EINVAL; in arch_timer_acpi_init()
1608 return -EINVAL; in arch_timer_acpi_init()
1611 /* Always-on capability */ in arch_timer_acpi_init()
1623 pr_err("Failed to initialize memory-mapped timer.\n"); in arch_timer_acpi_init()