mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-27 04:18:51 +09:00
![Sean Anderson](/assets/img/avatar_default.png)
The Sipeed Maix series is a collection of boards built around the RISC-V Kendryte K210 processor. This processor contains several peripherals to accelerate neural network processing and other "ai" tasks. This includes a "KPU" neural network processor, an audio processor supporting beamforming reception, and a digital video port supporting capture and output at VGA resolution. Other peripherals include 8M of sram (accessible with and without caching); remappable pins, including 40 GPIOs; AES, FFT, and SHA256 accelerators; a DMA controller; and I2C, I2S, and SPI controllers. Maix peripherals vary, but include spi flash; on-board usb-serial bridges; ports for cameras, displays, and sd cards; and ESP32 chips. Currently, only the Sipeed Maix Bit V2.0 (bitm) is supported, but the boards are fairly similar. Documentation for Maix boards is located at <http://dl.sipeed.com/MAIX/HDK/>. Documentation for the Kendryte K210 is located at <https://kendryte.com/downloads/>. However, hardware details are rather lacking, so most technical reference has been taken from the standalone sdk located at <https://github.com/kendryte/kendryte-standalone-sdk>. Signed-off-by: Sean Anderson <seanga2@gmail.com>
42 lines
775 B
C
42 lines
775 B
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (C) 2019-20 Sean Anderson <seanga2@gmail.com>
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <clk.h>
|
|
#include <dm.h>
|
|
#include <fdt_support.h>
|
|
#include <asm/io.h>
|
|
|
|
phys_size_t get_effective_memsize(void)
|
|
{
|
|
return CONFIG_SYS_SDRAM_SIZE;
|
|
}
|
|
|
|
int board_init(void)
|
|
{
|
|
int ret, i;
|
|
const char * const banks[] = { "sram0", "sram1", "airam" };
|
|
ofnode memory;
|
|
struct clk clk;
|
|
|
|
/* Enable RAM clocks */
|
|
memory = ofnode_by_compatible(ofnode_null(), "kendryte,k210-sram");
|
|
if (ofnode_equal(memory, ofnode_null()))
|
|
return -ENOENT;
|
|
|
|
for (i = 0; i < ARRAY_SIZE(banks); i++) {
|
|
ret = clk_get_by_name_nodev(memory, banks[i], &clk);
|
|
if (ret)
|
|
continue;
|
|
|
|
ret = clk_enable(&clk);
|
|
clk_free(&clk);
|
|
if (ret)
|
|
return ret;
|
|
}
|
|
|
|
return 0;
|
|
}
|