Commit aec499c7 authored by Alan Kao's avatar Alan Kao Committed by Arnd Bergmann
Browse files

nds32: Remove the architecture

The nds32 architecture, also known as AndeStar V3, is a custom 32-bit
RISC target designed by Andes Technologies. Support was added to the
kernel in 2016 as the replacement RISC-V based V5 processors were
already announced, and maintained by (current or former) Andes
employees.

As explained by Alan Kao, new customers are now all using RISC-V,
and all known nds32 users are already on longterm stable kernels
provided by Andes, with no development work going into mainline
support any more.

While the port is still in a reasonably good shape, it only gets
worse over time without active maintainers, so it seems best
to remove it before it becomes unusable. As always, if it turns
out that there are mainline users after all, and they volunteer
to maintain the port in the future, the removal can be reverted.

Link: https://lore.kernel.org/linux-mm/YhdWNLUhk+x9RAzU@yamatobi.andestech.com/
Link: https://lore.kernel.org/lkml/20220302065213.82702-1-alankao@andestech.com/
Link: https://www.andestech.com/en/products-solutions/andestar-architecture/


Signed-off-by: default avatarAlan Kao <alankao@andestech.com>
[arnd: rewrite changelog to provide more background]
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent dd865f09
Loading
Loading
Loading
Loading
+0 −19
Original line number Diff line number Diff line
* Andestech Internal Vector Interrupt Controller

The Internal Vector Interrupt Controller (IVIC) is a basic interrupt controller
suitable for a simpler SoC platform not requiring a more sophisticated and
bigger External Vector Interrupt Controller.


Main node required properties:

- compatible : should at least contain  "andestech,ativic32".
- interrupt-controller : Identifies the node as an interrupt controller
- #interrupt-cells: 1 cells and refer to interrupt-controller/interrupts

Examples:
	intc: interrupt-controller {
		compatible = "andestech,ativic32";
		#interrupt-cells = <1>;
		interrupt-controller;
	};
+0 −40
Original line number Diff line number Diff line
Andestech(nds32) AE3XX Platform
-----------------------------------------------------------------------------
The AE3XX prototype demonstrates the AE3XX example platform on the FPGA. It
is composed of one Andestech(nds32) processor and AE3XX.

Required properties (in root node):
- compatible = "andestech,ae3xx";

Example:
/dts-v1/;
/ {
	compatible = "andestech,ae3xx";
	#address-cells = <1>;
	#size-cells = <1>;
	interrupt-parent = <&intc>;
};

Andestech(nds32) AG101P Platform
-----------------------------------------------------------------------------
AG101P is a generic SoC Platform IP that works with any of Andestech(nds32)
processors to provide a cost-effective and high performance solution for
majority of embedded systems in variety of application domains. Users may
simply attach their IP on one of the system buses together with certain glue
logics to complete a SoC solution for a specific application. With
comprehensive simulation and design environments, users may evaluate the
system performance of their applications and track bugs of their designs
efficiently. The optional hardware development platform further provides real
system environment for early prototyping and software/hardware co-development.

Required properties (in root node):
	compatible = "andestech,ag101p";

Example:
/dts-v1/;
/ {
	compatible = "andestech,ag101p";
	#address-cells = <1>;
	#size-cells = <1>;
	interrupt-parent = <&intc>;
};
+0 −28
Original line number Diff line number Diff line
* Andestech L2 cache Controller

The level-2 cache controller plays an important role in reducing memory latency
for high performance systems, such as thoese designs with AndesCore processors.
Level-2 cache controller in general enhances overall system performance
signigicantly and the system power consumption might be reduced as well by
reducing DRAM accesses.

This binding specifies what properties must be available in the device tree
representation of an Andestech L2 cache controller.

Required properties:
	- compatible:
		Usage: required
		Value type: <string>
		Definition: "andestech,atl2c"
	- reg : Physical base address and size of cache controller's memory mapped
	- cache-unified : Specifies the cache is a unified cache.
	- cache-level : Should be set to 2 for a level 2 cache.

* Example

	cache-controller@e0500000 {
		compatible = "andestech,atl2c";
		reg = <0xe0500000 0x1000>;
		cache-unified;
		cache-level = <2>;
	};
+0 −38
Original line number Diff line number Diff line
* Andestech Processor Binding

This binding specifies what properties must be available in the device tree
representation of a Andestech Processor Core, which is the root node in the
tree.

Required properties:

	- compatible:
		Usage: required
		Value type: <string>
		Definition: Should be "andestech,<core_name>", "andestech,nds32v3" as fallback.
		Must contain "andestech,nds32v3" as the most generic value, in addition to
		one of the following identifiers for a particular CPU core:
		"andestech,n13"
		"andestech,n15"
		"andestech,d15"
		"andestech,n10"
		"andestech,d10"
	- device_type
		Usage: required
		Value type: <string>
		Definition: must be "cpu"
	- reg: Contains CPU index.
	- clock-frequency: Contains the clock frequency for CPU, in Hz.

* Examples

/ {
	cpus {
		cpu@0 {
			device_type = "cpu";
			compatible = "andestech,n13", "andestech,nds32v3";
			reg = <0x0>;
			clock-frequency = <60000000>
		};
	};
};
+0 −17
Original line number Diff line number Diff line
* NDS32 Performance Monitor Units

NDS32 core have a PMU for counting cpu and cache events like cache misses.
The NDS32 PMU representation in the device tree should be done as under:

Required properties:

- compatible :
	"andestech,nds32v3-pmu"

- interrupts : The interrupt number for NDS32 PMU is 13.

Example:
pmu{
	compatible = "andestech,nds32v3-pmu";
	interrupts = <13>;
}
Loading