[PATCH] riscv: Add support for AMD/Xilinx MicroBlaze V

Michal Simek michal.simek at amd.com
Mon Nov 6 12:53:46 CET 2023


Hi Conor,

On 11/3/23 17:25, Conor Dooley wrote:
> Yo,
> 
> Since you sent it to me, I may as well comment...
> 
> On Fri, Nov 03, 2023 at 05:03:25PM +0100, Michal Simek wrote:
>> MicroBlaze V is new AMD/Xilinx soft-core 32bit RISC-V processor IP.
>> It is hardware compatible with classic MicroBlaze processor.
>>
>> The patch contains initial wiring and configuration for initial HW design
>> with memory, cpu, interrupt controller, timers and uartlite console.
>>
>> Provided DT is just describing one configuration and should be taken only
>> as example.
> 
> 
>> @@ -0,0 +1,86 @@
>> +// SPDX-License-Identifier: GPL-2.0
>> +/*
>> + * dts file for Xilinx MicroBlaze V
>> + *
>> + * (C) Copyright 2023, Advanced Micro Devices, Inc.
>> + *
>> + * Michal Simek <michal.simek at amd.com>
>> + */
>> +
>> +/dts-v1/;
>> +/ {
>> +	#address-cells = <1>;
>> +	#size-cells = <1>;
>> +	model = "Xilinx MicroBlaze V 32bit";
>> +	compatible = "xlnx,mbv32";
>> +
>> +	cpus: cpus {
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +		timebase-frequency = <102000000>;
>> +		cpu_0: cpu at 0 {
>> +			device_type = "cpu";
>> +			compatible = "riscv";
> 
> You're missing a cpu specific compatible here.
> "riscv" in isolation is only for {emu,simu}lators.

Will add.

> 
>> +			reg = <0>;
>> +			status = "okay";
>> +			riscv,isa = "rv32imafdc";
>> +			clock-frequency = <100000000>;
>> +			i-cache-size = <32768>;
>> +			d-cache-size = <32768>;
> 
> Missing an interrupt-controller child node for the cpu-intc, no?

For u-boot interrupt controller is not needed but it is listed below that's why 
will try to wire it.

> 
>> +		};
>> +	};
>> +
>> +	aliases {
>> +		serial0 = &uart0;
>> +	};
>> +
>> +	chosen {
>> +		bootargs = "earlycon";
>> +		stdout-path = "serial0:115200n8";
>> +	};
>> +
>> +	memory at 20000000 {
>> +		device_type = "memory";
>> +		reg = <0x20000000 0x20000000>;
>> +	};
>> +
>> +	axi: axi {
>> +		#address-cells = <1>;
>> +		#size-cells = <1>;
>> +		compatible = "simple-bus";
>> +		ranges;
>> +		bootph-all;
>> +
>> +		axi_intc: interrupt-controller at 41200000 {
>> +			compatible = "xlnx.xps-intc";
> 
> This is some non-standard interrupt controller, rather than a plic,
> right?

non-standard riscv interrupt controller. But standard microblaze interrrupt 
controller. And of course it is not plic compatible. Based on my discussion with 
HW designers it shouldn't be a problem to use this one.

> Also, should you not also have a riscv,timer node?

It is design from Amd perspective as option to exchange microblaze with riscv 
that's why all IPs around it are the same. It means xps timer is used instead.

Thanks,
Michal




More information about the U-Boot mailing list