mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 21:21:37 +00:00
Merge git://git.denx.de/u-boot-sunxi
This commit is contained in:
commit
ded4bc3a8b
16 changed files with 192 additions and 12 deletions
|
@ -144,7 +144,16 @@ struct sunxi_ccm_reg {
|
|||
|
||||
#define PLL1_CFG_DEFAULT 0xa1005000
|
||||
|
||||
#if defined CONFIG_OLD_SUNXI_KERNEL_COMPAT && defined CONFIG_MACH_SUN5I
|
||||
/*
|
||||
* Older linux-sunxi-3.4 kernels override our PLL6 setting with 300 MHz,
|
||||
* halving the mbus frequency, so set it to 300 MHz ourselves and base the
|
||||
* mbus divider on that.
|
||||
*/
|
||||
#define PLL6_CFG_DEFAULT 0xa1009900
|
||||
#else
|
||||
#define PLL6_CFG_DEFAULT 0xa1009911
|
||||
#endif
|
||||
|
||||
/* nand clock */
|
||||
#define NAND_CLK_SRC_OSC24 0
|
||||
|
|
|
@ -223,6 +223,14 @@ config USB0_VBUS_PIN
|
|||
Set the Vbus enable pin for usb0 (otg). This takes a string in the
|
||||
format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
|
||||
|
||||
config USB0_VBUS_DET
|
||||
string "Vbus detect pin for usb0 (otg)"
|
||||
depends on USB_MUSB_SUNXI
|
||||
default ""
|
||||
---help---
|
||||
Set the Vbus detect pin for usb0 (otg). This takes a string in the
|
||||
format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
|
||||
|
||||
config USB1_VBUS_PIN
|
||||
string "Vbus enable pin for usb1 (ehci0)"
|
||||
default "PH6" if MACH_SUN4I || MACH_SUN7I
|
||||
|
@ -312,6 +320,14 @@ config VIDEO_LCD_POWER
|
|||
Set the power enable pin for the LCD panel. This takes a string in the
|
||||
format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
|
||||
|
||||
config VIDEO_LCD_RESET
|
||||
string "LCD panel reset pin"
|
||||
depends on VIDEO
|
||||
default ""
|
||||
---help---
|
||||
Set the reset pin for the LCD panel. This takes a string in the format
|
||||
understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
|
||||
|
||||
config VIDEO_LCD_BL_EN
|
||||
string "LCD panel backlight enable pin"
|
||||
depends on VIDEO
|
||||
|
@ -336,6 +352,30 @@ config VIDEO_LCD_BL_PWM_ACTIVE_LOW
|
|||
---help---
|
||||
Set this if the backlight pwm output is active low.
|
||||
|
||||
config VIDEO_LCD_PANEL_I2C
|
||||
bool "LCD panel needs to be configured via i2c"
|
||||
depends on VIDEO
|
||||
default m
|
||||
---help---
|
||||
Say y here if the LCD panel needs to be configured via i2c. This
|
||||
will add a bitbang i2c controller using gpios to talk to the LCD.
|
||||
|
||||
config VIDEO_LCD_PANEL_I2C_SDA
|
||||
string "LCD panel i2c interface SDA pin"
|
||||
depends on VIDEO_LCD_PANEL_I2C
|
||||
default "PG12"
|
||||
---help---
|
||||
Set the SDA pin for the LCD i2c interface. This takes a string in the
|
||||
format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
|
||||
|
||||
config VIDEO_LCD_PANEL_I2C_SCL
|
||||
string "LCD panel i2c interface SCL pin"
|
||||
depends on VIDEO_LCD_PANEL_I2C
|
||||
default "PG10"
|
||||
---help---
|
||||
Set the SCL pin for the LCD i2c interface. This takes a string in the
|
||||
format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
|
||||
|
||||
|
||||
# Note only one of these may be selected at a time! But hidden choices are
|
||||
# not supported by Kconfig
|
||||
|
@ -374,6 +414,14 @@ config VIDEO_LCD_PANEL_HITACHI_TX18D42VM
|
|||
---help---
|
||||
7.85" 1024x768 Hitachi tx18d42vm LCD panel support
|
||||
|
||||
config VIDEO_LCD_TL059WV5C0
|
||||
bool "tl059wv5c0 LCD panel"
|
||||
select VIDEO_LCD_PANEL_I2C
|
||||
select VIDEO_LCD_IF_PARALLEL
|
||||
---help---
|
||||
6" 480x800 tl059wv5c0 panel support, as used on the Utoo P66 and
|
||||
Aigo M60/M608/M606 tablets.
|
||||
|
||||
endchoice
|
||||
|
||||
|
||||
|
|
|
@ -33,6 +33,12 @@
|
|||
#include <linux/usb/musb.h>
|
||||
#include <net.h>
|
||||
|
||||
#if defined CONFIG_VIDEO_LCD_PANEL_I2C && !(defined CONFIG_SPL_BUILD)
|
||||
/* So that we can use pin names in Kconfig and sunxi_name_to_gpio() */
|
||||
int soft_i2c_gpio_sda;
|
||||
int soft_i2c_gpio_scl;
|
||||
#endif
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
/* add board specific code here */
|
||||
|
@ -152,6 +158,10 @@ void i2c_init_board(void)
|
|||
sunxi_gpio_set_cfgpin(SUNXI_GPB(0), SUNXI_GPB0_TWI0);
|
||||
sunxi_gpio_set_cfgpin(SUNXI_GPB(1), SUNXI_GPB0_TWI0);
|
||||
clock_twi_onoff(0, 1);
|
||||
#if defined CONFIG_VIDEO_LCD_PANEL_I2C && !(defined CONFIG_SPL_BUILD)
|
||||
soft_i2c_gpio_sda = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_PANEL_I2C_SDA);
|
||||
soft_i2c_gpio_scl = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_PANEL_I2C_SCL);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
|
|
|
@ -3,6 +3,7 @@ CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=2,AXP209_POWER"
|
|||
CONFIG_FDTFILE="sun5i-a13-ampe-a76.dtb"
|
||||
CONFIG_USB_MUSB_SUNXI=y
|
||||
CONFIG_USB0_VBUS_PIN="PG12"
|
||||
CONFIG_USB0_VBUS_DET="PG01"
|
||||
CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:45,ri:82,up:22,lo:22,hs:1,vs:1,sync:3,vmode:0"
|
||||
CONFIG_VIDEO_LCD_POWER="AXP0-0"
|
||||
CONFIG_VIDEO_LCD_BL_EN="AXP0-1"
|
||||
|
|
|
@ -3,6 +3,7 @@ CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
|
|||
CONFIG_FDTFILE="sun4i-a10-chuwi-v7-cw0825.dtb"
|
||||
CONFIG_USB_MUSB_SUNXI=y
|
||||
CONFIG_USB0_VBUS_PIN="PB9"
|
||||
CONFIG_USB0_VBUS_DET="PH5"
|
||||
CONFIG_VIDEO_LCD_MODE="x:1024,y:768,depth:24,pclk_khz:51000,le:19,ri:300,up:6,lo:31,hs:1,vs:1,sync:3,vmode:0"
|
||||
CONFIG_VIDEO_LCD_POWER="PH8"
|
||||
CONFIG_VIDEO_LCD_BL_EN="PH7"
|
||||
|
|
|
@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
|
|||
CONFIG_FDTFILE="sun4i-a10-hyundai-a7hd.dtb"
|
||||
CONFIG_USB_MUSB_SUNXI=y
|
||||
CONFIG_USB0_VBUS_PIN="PB09"
|
||||
CONFIG_USB0_VBUS_DET="PH5"
|
||||
CONFIG_USB1_VBUS_PIN=""
|
||||
CONFIG_USB2_VBUS_PIN="PH6"
|
||||
CONFIG_VIDEO_LCD_MODE="x:1024,y:600,depth:18,pclk_khz:51000,le:45,ri:274,up:22,lo:12,hs:1,vs:1,sync:3,vmode:0"
|
||||
|
|
|
@ -3,6 +3,7 @@ CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
|
|||
CONFIG_FDTFILE="sun5i-a13-inet-86vs.dtb"
|
||||
CONFIG_USB_MUSB_SUNXI=y
|
||||
CONFIG_USB0_VBUS_PIN="PG12"
|
||||
CONFIG_USB0_VBUS_DET="PG1"
|
||||
CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:45,ri:209,up:22,lo:22,hs:1,vs:1,sync:3,vmode:0"
|
||||
CONFIG_VIDEO_LCD_POWER="AXP0-0"
|
||||
CONFIG_VIDEO_LCD_BL_EN="AXP0-1"
|
||||
|
|
|
@ -3,6 +3,7 @@ CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=2,AXP209_POWER"
|
|||
CONFIG_FDTFILE="sun5i-a13-tzx-q8-713b7.dtb"
|
||||
CONFIG_USB_MUSB_SUNXI=y
|
||||
CONFIG_USB0_VBUS_PIN="PG12"
|
||||
CONFIG_USB0_VBUS_DET="PG1"
|
||||
CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:87,ri:40,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0"
|
||||
CONFIG_VIDEO_LCD_POWER="AXP0-0"
|
||||
CONFIG_VIDEO_LCD_BL_EN="AXP0-1"
|
||||
|
|
21
configs/UTOO_P66_defconfig
Normal file
21
configs/UTOO_P66_defconfig
Normal file
|
@ -0,0 +1,21 @@
|
|||
CONFIG_SPL=y
|
||||
CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
|
||||
CONFIG_FDTFILE="sun5i-a13-utoo-p66.dtb"
|
||||
CONFIG_USB_MUSB_SUNXI=y
|
||||
CONFIG_USB0_VBUS_PIN="PB04"
|
||||
CONFIG_USB0_VBUS_DET="PG01"
|
||||
CONFIG_VIDEO_LCD_MODE="x:480,y:800,depth:18,pclk_khz:25000,le:2,ri:93,up:2,lo:93,hs:1,vs:1,sync:3,vmode:0"
|
||||
CONFIG_VIDEO_LCD_DCLK_PHASE=0
|
||||
CONFIG_VIDEO_LCD_POWER="PG4"
|
||||
CONFIG_VIDEO_LCD_RESET="PG11"
|
||||
CONFIG_VIDEO_LCD_BL_EN="AXP0-1"
|
||||
CONFIG_VIDEO_LCD_BL_PWM="PB2"
|
||||
CONFIG_VIDEO_LCD_TL059WV5C0=y
|
||||
+S:CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
||||
+S:CONFIG_MMC0_CD_PIN="PG0"
|
||||
+S:CONFIG_ARM=y
|
||||
+S:CONFIG_ARCH_SUNXI=y
|
||||
+S:CONFIG_MACH_SUN5I=y
|
||||
+S:CONFIG_DRAM_CLK=432
|
||||
+S:CONFIG_DRAM_ZQ=123
|
||||
+S:CONFIG_DRAM_EMR1=0
|
|
@ -449,11 +449,7 @@ struct mmc *sunxi_mmc_init(int sdc_no)
|
|||
|
||||
cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
|
||||
cfg->host_caps = MMC_MODE_4BIT;
|
||||
cfg->host_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS;
|
||||
#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN7I) || \
|
||||
defined(CONFIG_MACH_SUN8I) || defined(CONFIG_MACH_SUN9I)
|
||||
cfg->host_caps |= MMC_MODE_HC;
|
||||
#endif
|
||||
cfg->host_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS | MMC_MODE_HC;
|
||||
cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
|
||||
|
||||
cfg->f_min = 400000;
|
||||
|
|
|
@ -22,7 +22,9 @@
|
|||
*/
|
||||
#include <common.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
#include <asm/arch/usbc.h>
|
||||
#include <asm-generic/gpio.h>
|
||||
#include "linux-compat.h"
|
||||
#include "musb_core.h"
|
||||
|
||||
|
@ -224,6 +226,33 @@ static int sunxi_musb_init(struct musb *musb)
|
|||
|
||||
pr_debug("%s():\n", __func__);
|
||||
|
||||
if (is_host_enabled(musb)) {
|
||||
int vbus_det = sunxi_name_to_gpio(CONFIG_USB0_VBUS_DET);
|
||||
if (vbus_det == -1) {
|
||||
eprintf("Error invalid Vusb-det pin\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
err = gpio_request(vbus_det, "vbus0_det");
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = gpio_direction_input(vbus_det);
|
||||
if (err) {
|
||||
gpio_free(vbus_det);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = gpio_get_value(vbus_det);
|
||||
if (err) {
|
||||
eprintf("Error: A charger is plugged into the OTG\n");
|
||||
gpio_free(vbus_det);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
gpio_free(vbus_det);
|
||||
}
|
||||
|
||||
err = sunxi_usbc_request_resources(0);
|
||||
if (err)
|
||||
return err;
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include <errno.h>
|
||||
#include <fdtdec.h>
|
||||
#include <fdt_support.h>
|
||||
#include <i2c.h>
|
||||
#include <video_fb.h>
|
||||
#include "videomodes.h"
|
||||
#include "hitachi_tx18d42vm_lcd.h"
|
||||
|
@ -592,7 +593,7 @@ static void sunxi_lcdc_enable(void)
|
|||
|
||||
static void sunxi_lcdc_panel_enable(void)
|
||||
{
|
||||
int pin;
|
||||
int pin, reset_pin;
|
||||
|
||||
/*
|
||||
* Start with backlight disabled to avoid the screen flashing to
|
||||
|
@ -610,6 +611,12 @@ static void sunxi_lcdc_panel_enable(void)
|
|||
gpio_direction_output(pin, PWM_OFF);
|
||||
}
|
||||
|
||||
reset_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_RESET);
|
||||
if (reset_pin != -1) {
|
||||
gpio_request(reset_pin, "lcd_reset");
|
||||
gpio_direction_output(reset_pin, 0); /* Assert reset */
|
||||
}
|
||||
|
||||
/* Give the backlight some time to turn off and power up the panel. */
|
||||
mdelay(40);
|
||||
pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_POWER);
|
||||
|
@ -617,6 +624,9 @@ static void sunxi_lcdc_panel_enable(void)
|
|||
gpio_request(pin, "lcd_power");
|
||||
gpio_direction_output(pin, 1);
|
||||
}
|
||||
|
||||
if (reset_pin != -1)
|
||||
gpio_direction_output(reset_pin, 1); /* De-assert reset */
|
||||
}
|
||||
|
||||
static void sunxi_lcdc_backlight_enable(void)
|
||||
|
@ -1021,6 +1031,12 @@ static void sunxi_mode_set(const struct ctfb_res_modes *mode,
|
|||
mdelay(50); /* Wait for lcd controller power on */
|
||||
hitachi_tx18d42vm_init();
|
||||
}
|
||||
if (IS_ENABLED(CONFIG_VIDEO_LCD_TL059WV5C0)) {
|
||||
unsigned int orig_i2c_bus = i2c_get_bus_num();
|
||||
i2c_set_bus_num(CONFIG_VIDEO_LCD_I2C_BUS);
|
||||
i2c_reg_write(0x5c, 0x04, 0x42); /* Turn on the LCD */
|
||||
i2c_set_bus_num(orig_i2c_bus);
|
||||
}
|
||||
sunxi_composer_mode_set(mode, address);
|
||||
sunxi_lcdc_tcon0_mode_set(mode, false);
|
||||
sunxi_composer_enable();
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
*/
|
||||
#define CONFIG_CLK_FULL_SPEED 1008000000
|
||||
|
||||
#define CONFIG_MACH_TYPE 4104
|
||||
|
||||
#ifdef CONFIG_USB_EHCI
|
||||
#define CONFIG_USB_EHCI_SUNXI
|
||||
#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
|
||||
|
@ -25,4 +23,6 @@
|
|||
*/
|
||||
#include <configs/sunxi-common.h>
|
||||
|
||||
#define CONFIG_MACH_TYPE (4104 | ((CONFIG_MACH_TYPE_COMPAT_REV) << 28))
|
||||
|
||||
#endif /* __CONFIG_H */
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
*/
|
||||
#define CONFIG_CLK_FULL_SPEED 1008000000
|
||||
|
||||
#define CONFIG_MACH_TYPE 4138
|
||||
|
||||
#ifdef CONFIG_USB_EHCI
|
||||
#define CONFIG_USB_EHCI_SUNXI
|
||||
#define CONFIG_USB_MAX_CONTROLLER_COUNT 1
|
||||
|
@ -25,4 +23,6 @@
|
|||
*/
|
||||
#include <configs/sunxi-common.h>
|
||||
|
||||
#define CONFIG_MACH_TYPE (4138 | ((CONFIG_MACH_TYPE_COMPAT_REV) << 28))
|
||||
|
||||
#endif /* __CONFIG_H */
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
*/
|
||||
#define CONFIG_CLK_FULL_SPEED 912000000
|
||||
|
||||
#define CONFIG_MACH_TYPE 4283
|
||||
|
||||
#ifdef CONFIG_USB_EHCI
|
||||
#define CONFIG_USB_EHCI_SUNXI
|
||||
#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
|
||||
|
@ -31,4 +29,6 @@
|
|||
*/
|
||||
#include <configs/sunxi-common.h>
|
||||
|
||||
#define CONFIG_MACH_TYPE (4283 | ((CONFIG_MACH_TYPE_COMPAT_REV) << 28))
|
||||
|
||||
#endif /* __CONFIG_H */
|
||||
|
|
|
@ -13,6 +13,22 @@
|
|||
#ifndef _SUNXI_COMMON_CONFIG_H
|
||||
#define _SUNXI_COMMON_CONFIG_H
|
||||
|
||||
#ifdef CONFIG_OLD_SUNXI_KERNEL_COMPAT
|
||||
/*
|
||||
* The U-Boot workarounds bugs in the outdated buggy sunxi-3.4 kernels at the
|
||||
* expense of restricting some features, so the regular machine id values can
|
||||
* be used.
|
||||
*/
|
||||
# define CONFIG_MACH_TYPE_COMPAT_REV 0
|
||||
#else
|
||||
/*
|
||||
* A compatibility guard to prevent loading outdated buggy sunxi-3.4 kernels.
|
||||
* Only sunxi-3.4 kernels with appropriate fixes applied are able to pass
|
||||
* beyond the machine id check.
|
||||
*/
|
||||
# define CONFIG_MACH_TYPE_COMPAT_REV 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* High Level Configuration Options
|
||||
*/
|
||||
|
@ -183,6 +199,22 @@
|
|||
#define CONFIG_SYS_I2C_MVTWSI
|
||||
#define CONFIG_SYS_I2C_SPEED 400000
|
||||
#define CONFIG_SYS_I2C_SLAVE 0x7f
|
||||
|
||||
#if defined CONFIG_VIDEO_LCD_PANEL_I2C && !(defined CONFIG_SPL_BUILD)
|
||||
#define CONFIG_SYS_I2C_SOFT
|
||||
#define CONFIG_SYS_I2C_SOFT_SPEED 50000
|
||||
#define CONFIG_SYS_I2C_SOFT_SLAVE 0x00
|
||||
#define CONFIG_VIDEO_LCD_I2C_BUS 0 /* The lcd panel soft i2c is bus 0 */
|
||||
#define CONFIG_SYS_SPD_BUS_NUM 1 /* And the axp209 i2c bus is bus 1 */
|
||||
/* We use pin names in Kconfig and sunxi_name_to_gpio() */
|
||||
#define CONFIG_SOFT_I2C_GPIO_SDA soft_i2c_gpio_sda
|
||||
#define CONFIG_SOFT_I2C_GPIO_SCL soft_i2c_gpio_scl
|
||||
#ifndef __ASSEMBLY__
|
||||
extern int soft_i2c_gpio_sda;
|
||||
extern int soft_i2c_gpio_scl;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define CONFIG_CMD_I2C
|
||||
|
||||
/* PMU */
|
||||
|
@ -194,6 +226,20 @@
|
|||
#define CONFIG_CONS_INDEX 1 /* UART0 */
|
||||
#endif
|
||||
|
||||
#if CONFIG_CONS_INDEX == 1
|
||||
#ifdef CONFIG_MACH_SUN9I
|
||||
#define OF_STDOUT_PATH "/soc/serial@07000000:115200"
|
||||
#else
|
||||
#define OF_STDOUT_PATH "/soc@01c00000/serial@01c28000:115200"
|
||||
#endif
|
||||
#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUN5I)
|
||||
#define OF_STDOUT_PATH "/soc@01c00000/serial@01c28400:115200"
|
||||
#elif CONFIG_CONS_INDEX == 5 && defined(CONFIG_MACH_SUN8I)
|
||||
#define OF_STDOUT_PATH "/soc@01c00000/serial@01f02800:115200"
|
||||
#else
|
||||
#error Unsupported console port nr. Please fix stdout-path in sunxi-common.h.
|
||||
#endif
|
||||
|
||||
/* GPIO */
|
||||
#define CONFIG_SUNXI_GPIO
|
||||
#define CONFIG_SPL_GPIO_SUPPORT
|
||||
|
|
Loading…
Add table
Reference in a new issue