File tree Expand file tree Collapse file tree 1 file changed +19
-6
lines changed Expand file tree Collapse file tree 1 file changed +19
-6
lines changed Original file line number Diff line number Diff line change 4
4
* Copyright (C) 2017 SiFive
5
5
*/
6
6
7
+ #include <linux/acpi.h>
7
8
#include <linux/of_clk.h>
8
9
#include <linux/clockchips.h>
9
10
#include <linux/clocksource.h>
@@ -18,17 +19,29 @@ EXPORT_SYMBOL_GPL(riscv_timebase);
18
19
void __init time_init (void )
19
20
{
20
21
struct device_node * cpu ;
22
+ struct acpi_table_rhct * rhct ;
23
+ acpi_status status ;
21
24
u32 prop ;
22
25
23
- cpu = of_find_node_by_path ("/cpus" );
24
- if (!cpu || of_property_read_u32 (cpu , "timebase-frequency" , & prop ))
25
- panic (KERN_WARNING "RISC-V system with no 'timebase-frequency' in DTS\n" );
26
- of_node_put (cpu );
27
- riscv_timebase = prop ;
26
+ if (acpi_disabled ) {
27
+ cpu = of_find_node_by_path ("/cpus" );
28
+ if (!cpu || of_property_read_u32 (cpu , "timebase-frequency" , & prop ))
29
+ panic ("RISC-V system with no 'timebase-frequency' in DTS\n" );
30
+
31
+ of_node_put (cpu );
32
+ riscv_timebase = prop ;
33
+ of_clk_init (NULL );
34
+ } else {
35
+ status = acpi_get_table (ACPI_SIG_RHCT , 0 , (struct acpi_table_header * * )& rhct );
36
+ if (ACPI_FAILURE (status ))
37
+ panic ("RISC-V ACPI system with no RHCT table\n" );
38
+
39
+ riscv_timebase = rhct -> time_base_freq ;
40
+ acpi_put_table ((struct acpi_table_header * )rhct );
41
+ }
28
42
29
43
lpj_fine = riscv_timebase / HZ ;
30
44
31
- of_clk_init (NULL );
32
45
timer_probe ();
33
46
34
47
tick_setup_hrtimer_broadcast ();
You can’t perform that action at this time.
0 commit comments