Skip to content

Commit

Permalink
Merge tag 'riscv/for-v5.3-rc4' of git://git.kernel.org/pub/scm/linux/…
Browse files Browse the repository at this point in the history
…kernel/git/riscv/linux

Pull RISC-V updates from Paul Walmsley:
 "A few minor RISC-V updates for v5.3-rc4:

   - Remove __udivdi3() from the 32-bit Linux port, converting the only
     upstream user to use do_div(), per Linux policy

   - Convert the RISC-V standard clocksource away from per-cpu data
     structures, since only one is used by Linux, even on a multi-CPU
     system

   - A set of DT binding updates that remove an obsolete text binding in
     favor of a YAML binding, fix a bogus compatible string in the
     schema (thus fixing a "make dtbs_check" warning), and clarifies the
     future values expected in one of the RISC-V CPU properties"

* tag 'riscv/for-v5.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
  dt-bindings: riscv: fix the schema compatible string for the HiFive Unleashed board
  dt-bindings: riscv: remove obsolete cpus.txt
  RISC-V: Remove udivdi3
  riscv: delay: use do_div() instead of __udivdi3()
  dt-bindings: Update the riscv,isa string description
  RISC-V: Remove per cpu clocksource
  • Loading branch information
torvalds committed Aug 10, 2019
2 parents 6d8f809 + b390e0b commit 296d05c
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 202 deletions.
162 changes: 0 additions & 162 deletions Documentation/devicetree/bindings/riscv/cpus.txt

This file was deleted.

16 changes: 16 additions & 0 deletions Documentation/devicetree/bindings/riscv/cpus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,18 @@ maintainers:
- Paul Walmsley <[email protected]>
- Palmer Dabbelt <[email protected]>

description: |
This document uses some terminology common to the RISC-V community
that is not widely used, the definitions of which are listed here:
hart: A hardware execution context, which contains all the state
mandated by the RISC-V ISA: a PC and some registers. This
terminology is designed to disambiguate software's view of execution
contexts from any particular microarchitectural implementation
strategy. For example, an Intel laptop containing one socket with
two cores, each of which has two hyperthreads, could be described as
having four harts.
properties:
compatible:
items:
Expand Down Expand Up @@ -50,6 +62,10 @@ properties:
User-Level ISA document, available from
https://riscv.org/specifications/

While the isa strings in ISA specification are case
insensitive, letters in the riscv,isa string must be all
lowercase to simplify parsing.

timebase-frequency:
type: integer
minimum: 1
Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/riscv/sifive.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ properties:
compatible:
items:
- enum:
- sifive,freedom-unleashed-a00
- sifive,hifive-unleashed-a00
- const: sifive,fu540-c000
- const: sifive,fu540
...
2 changes: 0 additions & 2 deletions arch/riscv/lib/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,3 @@ lib-y += memset.o
lib-y += uaccess.o

lib-$(CONFIG_64BIT) += tishift.o

lib-$(CONFIG_32BIT) += udivdi3.o
6 changes: 5 additions & 1 deletion arch/riscv/lib/delay.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,13 @@ EXPORT_SYMBOL(__delay);
void udelay(unsigned long usecs)
{
u64 ucycles = (u64)usecs * lpj_fine * UDELAY_MULT;
u64 n;

if (unlikely(usecs > MAX_UDELAY_US)) {
__delay((u64)usecs * riscv_timebase / 1000000ULL);
n = (u64)usecs * riscv_timebase;
do_div(n, 1000000);

__delay(n);
return;
}

Expand Down
32 changes: 0 additions & 32 deletions arch/riscv/lib/udivdi3.S

This file was deleted.

6 changes: 2 additions & 4 deletions drivers/clocksource/timer-riscv.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ static u64 riscv_sched_clock(void)
return get_cycles64();
}

static DEFINE_PER_CPU(struct clocksource, riscv_clocksource) = {
static struct clocksource riscv_clocksource = {
.name = "riscv_clocksource",
.rating = 300,
.mask = CLOCKSOURCE_MASK(64),
Expand Down Expand Up @@ -92,7 +92,6 @@ void riscv_timer_interrupt(void)
static int __init riscv_timer_init_dt(struct device_node *n)
{
int cpuid, hartid, error;
struct clocksource *cs;

hartid = riscv_of_processor_hartid(n);
if (hartid < 0) {
Expand All @@ -112,8 +111,7 @@ static int __init riscv_timer_init_dt(struct device_node *n)

pr_info("%s: Registering clocksource cpuid [%d] hartid [%d]\n",
__func__, cpuid, hartid);
cs = per_cpu_ptr(&riscv_clocksource, cpuid);
error = clocksource_register_hz(cs, riscv_timebase);
error = clocksource_register_hz(&riscv_clocksource, riscv_timebase);
if (error) {
pr_err("RISCV timer register failed [%d] for cpu = [%d]\n",
error, cpuid);
Expand Down

0 comments on commit 296d05c

Please sign in to comment.