mb/cubietech/cubieboard: Remove board
The Allwinner code was never completed and lacks a driver to load romstage from the bootblock. Change-Id: I12e9d7213ce61ab757e9317a63299d5d82e69acb Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/33132 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
2e92adce77
commit
041200fae3
|
@ -1,17 +0,0 @@
|
|||
if VENDOR_CUBIETECH
|
||||
|
||||
# Auto select common options
|
||||
choice
|
||||
prompt "Mainboard model"
|
||||
|
||||
source "src/mainboard/cubietech/*/Kconfig.name"
|
||||
|
||||
endchoice
|
||||
|
||||
source "src/mainboard/cubietech/*/Kconfig"
|
||||
|
||||
config MAINBOARD_VENDOR
|
||||
string
|
||||
default "Cubietech"
|
||||
|
||||
endif # VENDOR_CUBIETECH
|
|
@ -1,2 +0,0 @@
|
|||
config VENDOR_CUBIETECH
|
||||
bool "Cubietech"
|
|
@ -1,30 +0,0 @@
|
|||
if BOARD_CUBIETECH_CUBIEBOARD
|
||||
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select CPU_ALLWINNER_A10
|
||||
select BOARD_ROMSIZE_KB_4096
|
||||
select DRIVER_XPOWERS_AXP209
|
||||
select MISSING_BOARD_RESET
|
||||
|
||||
config MAINBOARD_DIR
|
||||
string
|
||||
default cubietech/cubieboard
|
||||
|
||||
config MAINBOARD_PART_NUMBER
|
||||
string
|
||||
default "Cubieboard A10"
|
||||
|
||||
config MAX_CPUS
|
||||
int
|
||||
default 1
|
||||
|
||||
config DRAM_SIZE_MB
|
||||
int
|
||||
default 1024
|
||||
|
||||
config UART_FOR_CONSOLE
|
||||
int
|
||||
default 0
|
||||
|
||||
endif # BOARD_CUBIETECH_CUBIEBOARD
|
|
@ -1,2 +0,0 @@
|
|||
config BOARD_CUBIETECH_CUBIEBOARD
|
||||
bool "Cubieboard"
|
|
@ -1,6 +0,0 @@
|
|||
bootblock-y += bootblock.c
|
||||
romstage-y += romstage.c
|
||||
|
||||
bootblock-y += memlayout.ld
|
||||
romstage-y += memlayout.ld
|
||||
ramstage-y += memlayout.ld
|
|
@ -1 +0,0 @@
|
|||
Category: sbc
|
|
@ -1,157 +0,0 @@
|
|||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright (C) 2013 Alexandru Gagniuc <mr.nuke.me@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Minimal bootblock for Cubieboard
|
||||
* It sets up CPU clock, and enables the bootblock console.
|
||||
*/
|
||||
|
||||
#include <device/mmio.h>
|
||||
#include <bootblock_common.h>
|
||||
#include <console/uart.h>
|
||||
#include <delay.h>
|
||||
#include <cpu/allwinner/a10/gpio.h>
|
||||
#include <cpu/allwinner/a10/clock.h>
|
||||
#include <cpu/allwinner/a10/dramc.h>
|
||||
|
||||
#define CPU_AHB_APB0_DEFAULT \
|
||||
CPU_CLK_SRC_OSC24M \
|
||||
| APB0_DIV_1 \
|
||||
| AHB_DIV_2 \
|
||||
| AXI_DIV_1
|
||||
|
||||
#define GPH_STATUS_LEDS (1 << 20) | (1 << 21)
|
||||
#define GPH_LED1_PIN_NO 21
|
||||
#define GPH_LED2_PIN_NO 20
|
||||
|
||||
#define GPB_UART0_FUNC 2
|
||||
#define GPB_UART0_PINS ((1 << 22) | (1 << 23))
|
||||
|
||||
#define GPF_SD0_FUNC 2
|
||||
#define GPF_SD0_PINS 0x3f /* PF0 thru PF5 */
|
||||
#define GPH1_SD0_DET_FUNC 5
|
||||
|
||||
static void cubieboard_set_sys_clock(void)
|
||||
{
|
||||
u32 reg32;
|
||||
struct a10_ccm *ccm = (void *)A1X_CCM_BASE;
|
||||
|
||||
/* Switch CPU clock to main oscillator */
|
||||
write32(&ccm->cpu_ahb_apb0_cfg, CPU_AHB_APB0_DEFAULT);
|
||||
|
||||
/* Configure the PLL1. The value is the same one used by u-boot
|
||||
* P = 1, N = 16, K = 1, M = 1 --> Output = 384 MHz
|
||||
*/
|
||||
write32(&ccm->pll1_cfg, 0xa1005000);
|
||||
|
||||
/* FIXME: Delay to wait for PLL to lock */
|
||||
u32 wait = 1000;
|
||||
while (--wait);
|
||||
|
||||
/* Switch CPU to PLL clock */
|
||||
reg32 = read32(&ccm->cpu_ahb_apb0_cfg);
|
||||
reg32 &= ~CPU_CLK_SRC_MASK;
|
||||
reg32 |= CPU_CLK_SRC_PLL1;
|
||||
write32(&ccm->cpu_ahb_apb0_cfg, reg32);
|
||||
}
|
||||
|
||||
static void cubieboard_setup_clocks(void)
|
||||
{
|
||||
struct a10_ccm *ccm = (void *)A1X_CCM_BASE;
|
||||
|
||||
cubieboard_set_sys_clock();
|
||||
/* Configure the clock source for APB1. This drives our UART */
|
||||
write32(&ccm->apb1_clk_div_cfg,
|
||||
APB1_CLK_SRC_OSC24M | APB1_RAT_N(0) | APB1_RAT_M(0));
|
||||
|
||||
/* Configure the clock for SD0 */
|
||||
write32(&ccm->sd0_clk_cfg,
|
||||
SDx_CLK_GATE | SDx_CLK_SRC_OSC24M | SDx_RAT_EXP_N(0) | SDx_RAT_M(1));
|
||||
|
||||
/* Enable clock to SD0 */
|
||||
a1x_periph_clock_enable(A1X_CLKEN_MMC0);
|
||||
|
||||
}
|
||||
|
||||
static void cubieboard_setup_gpios(void)
|
||||
{
|
||||
/* Mux Status LED pins */
|
||||
gpio_set_multipin_func(GPH, GPH_STATUS_LEDS, GPIO_PIN_FUNC_OUTPUT);
|
||||
/* Turn on green LED to let user know we're executing coreboot code */
|
||||
gpio_set(GPH, GPH_LED2_PIN_NO);
|
||||
|
||||
/* Mux UART pins */
|
||||
gpio_set_multipin_func(GPB, GPB_UART0_PINS, GPB_UART0_FUNC);
|
||||
|
||||
/* Mux SD pins */
|
||||
gpio_set_multipin_func(GPF, GPF_SD0_PINS, GPF_SD0_FUNC);
|
||||
gpio_set_pin_func(GPH, 1, GPH1_SD0_DET_FUNC);
|
||||
}
|
||||
|
||||
static void cubieboard_enable_uart(void)
|
||||
{
|
||||
a1x_periph_clock_enable(A1X_CLKEN_UART0);
|
||||
}
|
||||
|
||||
static void cubieboard_raminit(void)
|
||||
{
|
||||
struct dram_para dram_para = {
|
||||
.clock = 480,
|
||||
.type = 3,
|
||||
.rank_num = 1,
|
||||
.density = 4096,
|
||||
.io_width = 16,
|
||||
.bus_width = 32,
|
||||
.cas = 6,
|
||||
.zq = 123,
|
||||
.odt_en = 0,
|
||||
.size = 1024,
|
||||
.tpr0 = 0x30926692,
|
||||
.tpr1 = 0x1090,
|
||||
.tpr2 = 0x1a0c8,
|
||||
.tpr3 = 0,
|
||||
.tpr4 = 0,
|
||||
.tpr5 = 0,
|
||||
.emr1 = 0,
|
||||
.emr2 = 0,
|
||||
.emr3 = 0,
|
||||
};
|
||||
|
||||
dramc_init(&dram_para);
|
||||
|
||||
/* FIXME: ram_check does not compile for ARM,
|
||||
* and we didn't init console yet
|
||||
*/
|
||||
////void *const test_base = (void *)A1X_DRAM_BASE;
|
||||
////ram_check((u32)test_base, (u32)test_base + 0x1000);
|
||||
}
|
||||
|
||||
void bootblock_mainboard_early_init(void)
|
||||
{
|
||||
/* A10 Timer init uses the 24MHz clock, not PLLs, so we can init it very
|
||||
* early on to get udelay, which is used almost everywhere else.
|
||||
*/
|
||||
init_timer();
|
||||
|
||||
cubieboard_setup_clocks();
|
||||
cubieboard_setup_gpios();
|
||||
cubieboard_enable_uart();
|
||||
}
|
||||
|
||||
void bootblock_mainboard_init(void)
|
||||
{
|
||||
cubieboard_raminit();
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
chip cpu/allwinner/a10
|
||||
device cpu_cluster 0 on end
|
||||
|
||||
chip drivers/xpowers/axp209 # AXP209 is on I2C 0
|
||||
device i2c 0x34 on end
|
||||
register "dcdc2_voltage_mv" = "1400" # Vcore
|
||||
register "dcdc3_voltage_mv" = "1250" # DLL Vdd
|
||||
register "ldo2_voltage_mv" = "3000" # AVCC
|
||||
register "ldo3_voltage_mv" = "2800" # NC?
|
||||
register "ldo4_voltage_mv" = "2800" # CSI1-IO-2V8
|
||||
end
|
||||
end
|
|
@ -1,34 +0,0 @@
|
|||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright 2013 Alexandru Gagniuc <mr.nuke.me@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <memlayout.h>
|
||||
|
||||
#include <arch/header.ld>
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
SRAM_START(0x0)
|
||||
/* eGON.BT0: 32 bytes */
|
||||
BOOTBLOCK(0x20, 0x5fa0)
|
||||
STACK(0x6000, 8K)
|
||||
SRAM_END(0x8000)
|
||||
|
||||
DRAM_START(0x40000000)
|
||||
RAMSTAGE(0x40000000, 16M)
|
||||
ROMSTAGE(0x41000000, 108K)
|
||||
|
||||
/* TODO: Implement MMU support and move TTB to a better location. */
|
||||
TTB(0x42000000, 16K)
|
||||
}
|
|
@ -1,101 +0,0 @@
|
|||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright (C) 2013 Alexandru Gagniuc <mr.nuke.me@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Basic romstage for Cubieboard
|
||||
*
|
||||
* Set up system voltages, then increase the CPU clock, before turning control
|
||||
* to ramstage. The CPU VDD needs to be properly set before it can run at full
|
||||
* speed. Setting the CPU at full speed helps lzma-decompress ramstage a lot
|
||||
* faster.
|
||||
*/
|
||||
|
||||
#include <console/console.h>
|
||||
#include <cpu/allwinner/a10/clock.h>
|
||||
#include <cpu/allwinner/a10/gpio.h>
|
||||
#include <cpu/allwinner/a10/twi.h>
|
||||
#include <program_loading.h>
|
||||
#include <device/device.h>
|
||||
#include <drivers/xpowers/axp209/axp209.h>
|
||||
#include <drivers/xpowers/axp209/chip.h>
|
||||
#include <types.h>
|
||||
|
||||
#define GPB_TWI0_FUNC 2
|
||||
#define GPB_TWI0_PINS ((1 << 0) | (1 << 1))
|
||||
|
||||
#define AXP209_BUS 0
|
||||
|
||||
static enum cb_err cubieboard_setup_power(void)
|
||||
{
|
||||
enum cb_err err;
|
||||
const struct device * pmu;
|
||||
const struct drivers_xpowers_axp209_config *cfg;
|
||||
|
||||
/* Find the AXP209 in devicetree */
|
||||
pmu = dev_find_slot_on_smbus(AXP209_BUS, AXP209_I2C_ADDR);
|
||||
if (!pmu) {
|
||||
printk(BIOS_ERR, "AXP209 not found in devicetree.cb\n");
|
||||
return CB_ERR;
|
||||
}
|
||||
|
||||
cfg = pmu->chip_info;
|
||||
|
||||
/* Mux TWI0 pins */
|
||||
gpio_set_multipin_func(GPB, GPB_TWI0_PINS, GPB_TWI0_FUNC);
|
||||
/* Enable TWI0 */
|
||||
a1x_periph_clock_enable(A1X_CLKEN_TWI0);
|
||||
a1x_twi_init(AXP209_BUS, 400000);
|
||||
|
||||
if ((err = axp209_init(AXP209_BUS)) != CB_SUCCESS) {
|
||||
printk(BIOS_ERR, "PMU initialization failed\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((err = axp209_set_voltages(AXP209_BUS, cfg)) != CB_SUCCESS) {
|
||||
printk(BIOS_WARNING, "Power setup incomplete: "
|
||||
"CPU may hang when increasing clock\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
printk(BIOS_SPEW, "VDD CPU (DCDC2): %imv\n", cfg->dcdc2_voltage_mv);
|
||||
printk(BIOS_SPEW, "VDD DLL (DCDC3): %imv\n", cfg->dcdc3_voltage_mv);
|
||||
printk(BIOS_SPEW, "AVCC (LDO2) : %imv\n", cfg->ldo2_voltage_mv);
|
||||
printk(BIOS_SPEW, "CSI1-IO (LDO4) : %imv\n", cfg->ldo4_voltage_mv);
|
||||
printk(BIOS_SPEW, "(LDO3) : %imv\n", cfg->ldo3_voltage_mv);
|
||||
|
||||
return CB_SUCCESS;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
enum cb_err err;
|
||||
|
||||
console_init();
|
||||
|
||||
/* Configure power rails */
|
||||
err = cubieboard_setup_power();
|
||||
|
||||
if (err == CB_SUCCESS) {
|
||||
/* TODO: Get this clock from devicetree.cb */
|
||||
a1x_set_cpu_clock(1008);
|
||||
} else {
|
||||
/* cubieboard_setup_power() prints more details */
|
||||
printk(BIOS_WARNING, "Will run CPU at reduced speed\n");
|
||||
a1x_set_cpu_clock(384);
|
||||
}
|
||||
|
||||
run_ramstage();
|
||||
}
|
Loading…
Reference in New Issue