Hi,
This serie aims at fixing an issue we had to carry out of tree patches
for for a few years.
The issue is this: a significant number of Allwinner boards don't have
an Ethernet connection, while an Ethernet connection is pretty useful
for example during development to do some PXE/NFS boot.
Fastboot need a bunch of options to be operating properly, such as the
g_dnl gadget, the fastboot command, and some options that make sense. Since
fastboot is now part of Kconfig, make sure we have them right.
That will also reduce the boilerplate in the defconfigs.
Reviewed-by: Simon Glass
Now that we can enable the usb_ether gadget, do it. This will be especially
useful for boards that don't have any ethernet controller, such as the ones
based on the A13 or A33.
Reviewed-by: Simon Glass
Signed-off-by: Maxime Ripard
---
The e-mail addresses for DA8XXEVM BOARD and DA850_AM18XXEVM BOARD
are invalid.
Remove DA8XXEVM.
Update DA850_AM18XXEVM to have me be the maintainer since I work
for Logic PD and have access to OMAP-L138 and AM1808 EVM kits.
Signed-off-by: Adam Ford
diff --git
Import the RCar Gen3 DTS and headers from upstream Linux kernel v4.13,
commit 569dbb88e80deb68974ef6fdd6a13edb9d686261 . This includes both M3
and H3 ULCB and Salvator-X boards.
Signed-off-by: Marek Vasut
Cc: Nobuhiro Iwamatsu
---
The Linux kernel driver sets the number of event segments and entries
to 1 , while the initial import of the xhci code set that values to 3
for reasons unknown. While most controllers are fine with more event
segments with more entries, there are standard-conformant controllers
(ie. Renesas RCar
On Tue, Sep 12, 2017 at 03:45:05PM -0500, Adam Ford wrote:
> The e-mail addresses for DA8XXEVM BOARD and DA850_AM18XXEVM BOARD
> are invalid.
>
> Remove DA8XXEVM.
>
> Update DA850_AM18XXEVM to have me be the maintainer since I work
> for Logic PD and have access to OMAP-L138 and AM1808 EVM
The R8A7796 XHCI USB nodes are missing from r8a7796 dtsi, add them.
These nodes don't come from mainline Linux, yet the DT binding is
similar enough to R8A7795 which already has those in mainline and
once the nodes hit mainline, this DT should be resynched.
Signed-off-by: Marek Vasut
On Tue, Sep 12, 2017 at 04:58:47AM -0600, Simon Glass wrote:
> Hi Tom,
>
> Here is an assortment of minor changes related to driver model,
> sandbox and patman/other tools.
>
>
> The following changes since commit c98ac3487e413c71e5d36322ef3324b21c6f60f9:
>
> Prepare v2017.09 (2017-09-11
On Tue, Sep 12, 2017 at 12:01:51PM -0400, Tom Rini wrote:
> We now can no longer re-use the provided path and need to give the
> full PATH we want used now.
>
> Signed-off-by: Tom Rini
Applied to u-boot/master, thanks!
--
Tom
signature.asc
Description: Digital signature
On Tue, Sep 12, 2017 at 03:59:46PM +, York Sun wrote:
> Tom,
>
> The following changes since commit 584f316f115df52fd09a6cf699b29dcf824b4da5:
>
> cmd: ide: Make the first device the default one (2017-09-10 12:27:43 -0400)
>
> are available in the git repository at:
>
>
On Tue, Sep 12, 2017 at 12:36:07PM -0500, Adam Ford wrote:
> The da850evm maintainer list shows a few people who are returning
> boucing e-mail addresses:
>
> DA8XXEVM BOARD
> M: Nick Thompson
> S: Maintained
> F: board/davinci/da8xxevm/
> F:
This converts the following to Kconfig:
CONFIG_EMIF4
CONFIG_SDRC
Signed-off-by: Adam Ford
---
arch/arm/mach-omap2/omap3/Kconfig | 15 +++
configs/am3517_crane_defconfig| 1 +
configs/am3517_evm_defconfig | 1 +
configs/cm_t3517_defconfig|
A new fatbuf was allocated by get_fs_info() (called by fat_itr_root()),
but not freed, resulting in eventually running out of memory. Spotted
by running 'ls -r' in a large FAT filesystem from Shell.efi.
fatbuf is mainly used to cache FAT entry lookups (get_fatent())..
possibly once fat_write.c
> Use the defconfig for all usb gadget and function related
> option instead of define then in header file.
>
> Signed-off-by: Kever Yang
> Acked-by: Philipp Tomsich
> ---
>
> Changes in v2: None
>
>
> Rockusb will be used by all the rockchip SoCs, enable it by
> default in Kconfig, and it can be work if USB gadget is available.
>
> Signed-off-by: Kever Yang
> Acked-by: Philipp Tomsich
> ---
>
> Changes in v2: None
>
>
> Since we support ATF in SPL and add script for it, let's make the
> document up to date.
>
> Signed-off-by: Kever Yang
> Acked-by: Philipp Tomsich
> ---
>
> Changes in v2:
> - typo fix, evb-fireflyï¼>firefly-rk3399
>
>
U-Boot itself might need to identify the boot device, for example to be
able to tell where to load the kernel from when several options are
possible.
Move the logic of spl_boot_device to a function that is compiled both for
the SPL and the main binary.
Tested-by: Chen-Yu Tsai
Our current board code duplicates a bit the sunxi_get_boot_device logic.
Now that we can use that function in the full-flavoured U-Boot, remove that
duplication and call the function instead.
Signed-off-by: Maxime Ripard
---
board/sunxi/board.c | 6 +-
1
On Tue, Sep 12, 2017 at 04:25:36PM +0800, icen...@aosc.io wrote:
> 在 2017-09-12 16:18,Maxime Ripard 写道:
> > Hi,
> >
> > On Mon, Sep 11, 2017 at 11:54:58PM +0800, Icenowy Zheng wrote:
> > > diff --git a/include/configs/sunxi-common.h
> > > b/include/configs/sunxi-common.h
> > > index
The USBNET_DEVADDR has nothing to do with the USB download gadget, but
rather with the USB Ethernet gadget. Move it out of the if statement.
Reviewed-by: Simon Glass
Signed-off-by: Maxime Ripard
---
drivers/usb/gadget/Kconfig | 4 ++--
1
The kernel DT of the SinA33 has evolved quite a bit. Make sure we sync it
and its upstream DTSI to be able to use the OTG. The DTs were taken from
the 4.13 kernel release.
Reviewed-by: Simon Glass
Signed-off-by: Maxime Ripard
---
> Enable SPL_FIT_GENERATOR with path for it.
> With this patch you can get u-boot.itb for rk3399-firefly with:
> > make u-boot.itb
>
> Signed-off-by: Kever Yang
> Reviewed-by: Mark Kettenis
> Tested-by: Mark Kettenis
> ---
> Add a script to generate binaries from bl31.elf, and generate
> u-boot.its file for FIT image including u-boot, dtb and atf binaries.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Mark Kettenis
> Tested-by: Mark Kettenis
>
The current code, if there's both an eMMC and an MMC slot available on the
board, will swap the MMC indices based on whether we booted from the eMMC
or the MMC. This way, the MMC we're supposed to boot on will always have
the index 0.
However, this causes various issues, for example when using
On Wed, 6 Sep 2017, Kever Yang wrote:
OP-TEE is an open source trusted OS, in armv7, its loading and
running are like this:
loading:
- SPL load both OP-TEE and U-Boot
running:
- SPL run into OP-TEE in secure mode;
- OP-TEE run into U-Boot in non-secure mode;
More detail:
> When we use DM_SERIAL for serial driver, we need enable the
> dts node for the debug console.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> Acked-by: Philipp Tomsich
> ---
>
>
> TPL may need use libfdt for dt decode, add option for it.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> Acked-by: Philipp Tomsich
> ---
>
> lib/Kconfig | 10 ++
> 1 file changed, 10
> Move original spl to tpl, and add spl to load next stage firmware,
> adapt all the address and option for them.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> Acked-by: Philipp Tomsich
> ---
>
>
> Enable all the options for TPL/SPL and OPTEE.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> Acked-by: Philipp Tomsich
> ---
>
> configs/evb-rk3229_defconfig | 28
>
> We package U-Boot and OP-TEE into one itb file for SPL,
> so that we can support OP-TEE in SPL.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> Acked-by: Philipp Tomsich
> ---
>
>
> Some options like TPL_SYS_THUMB_BUILD, TPL_USE_ARCH_MEMCPY
> and TPL_USE_ARCH_MEMCPY are needed for TPL build in 32bit arm.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> Acked-by: Philipp Tomsich
> TPL stack may different from SPL and sys stack, add support for
> separate one when the board defines it.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> Acked-by: Philipp Tomsich
> ---
>
>
> SPL/TPL also need use sysreset for some feature like panic callback.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> Acked-by: Philipp Tomsich
> ---
>
> drivers/sysreset/Kconfig | 18
On Tue, Sep 12, 2017 at 09:57:45AM +0200, Heinrich Schuchardt wrote:
> Checkpatch produces the following warning:
>
> Unescaped left brace in regex is deprecated here
> (and will be fatal in Perl 5.30), passed through in regex;
> marked by <-- HERE in m/^(\+.*(?:do|\))){ <-- HERE /
> at
On 08/28/2017 07:53 AM, Jaehoon Chung wrote:
> On 08/28/2017 05:17 AM, Tom Rini wrote:
>> On Sun, Aug 27, 2017 at 02:10:08PM -0600, Simon Glass wrote:
>>> Hi,
>>>
>>> On 25 August 2017 at 02:16, Ziyuan wrote:
hi Jaehoon,
On 07/28/2017 09:05 PM, Jaehoon Chung
On Tue, Sep 12, 2017 at 4:05 PM, Tom Rini wrote:
> On Tue, Sep 12, 2017 at 03:45:05PM -0500, Adam Ford wrote:
>
>> The e-mail addresses for DA8XXEVM BOARD and DA850_AM18XXEVM BOARD
>> are invalid.
>>
>> Remove DA8XXEVM.
>>
>> Update DA850_AM18XXEVM to have me be the maintainer
On Tue, Sep 12, 2017 at 04:44:05PM -0500, Adam Ford wrote:
> On Tue, Sep 12, 2017 at 4:05 PM, Tom Rini wrote:
> > On Tue, Sep 12, 2017 at 03:45:05PM -0500, Adam Ford wrote:
> >
> >> The e-mail addresses for DA8XXEVM BOARD and DA850_AM18XXEVM BOARD
> >> are invalid.
> >>
> >>
Hi Simon,
On Wed, Sep 6, 2017 at 9:39 AM, Simon Glass wrote:
> Hi Bin,
>
> On 26 August 2017 at 18:12, Bin Meng wrote:
>> Hi Simon,
>>
>> On Sun, Aug 27, 2017 at 6:40 AM, Simon Glass wrote:
>>> Hi Bin,
>>>
>>> On 26 August 2017 at
> Add the missing target and pinctrl config for rk3368 sheep board
>
> Signed-off-by: Andy Yan
> Reviewed-by: Simon Glass
> Acked-by: Philipp Tomsich
> ---
>
> configs/sheep-rk3368_defconfig | 2 ++
> 1 file
Enter download mode if the download key pressed.
Signed-off-by: Andy Yan
---
arch/arm/mach-rockchip/boot_mode.c | 27 ++-
board/rockchip/evb_rk3399/evb-rk3399.c | 28
2 files changed, 54 insertions(+), 1
Rockchip bootrom will enter download mode if it returns from
spl/tpl with a none-zero value and couldn't find a valid image
in the backup partition.
This patch provide a method to instruct the system to back to
bootrom download mode by checking the BROM_DOWNLOAD_FLAG register.
As the bootrom
Signed-off-by: Jean-Jacques Hiblot
Reviewed-by: Tom Rini
Reviewed-by: Simon Glass
---
include/linux/lzo.h| 3 +++
lib/lzo/lzo1x_decompress.c | 21 +
2 files changed, 20 insertions(+), 4 deletions(-)
diff
Most rockchip platform based boards use a key to instruct
the board enter download firmware mode, some boards use a
adc to detect the key status, and some use a gpio.
This series try to implement all the download mode releated
functions.
Andy Yan (3):
rockchip: make boot_mode releated codes
setup_boot_mode function use the same logic but different
mode register address across all the rockchip platforms,
so it's better to make this function reused across all the
platforms, and let the mode register address setting from
the config file.
Signed-off-by: Andy Yan
> On 11 Sep 2017, at 12:47, Philipp Tomsich
> wrote:
>
> On the RK3399, we will have either OF_PLATDATA or full OF_CONTROL
> enabled: this allows the use of syscon to retrieve the addresses of
> GRF and SGRF (except for the early debug UART setup, which
If board_fit_config_name_match() doesn't match any configuration node,
then use the default one (if provided).
Signed-off-by: Jean-Jacques Hiblot
Reviewed-by: Tom Rini
Reviewed-by: Simon Glass
---
common/common_fit.c | 20
The generic ehci-driver (ehci-generic.c) will try to enable the clocks
listed in the DTSI. If this fails (e.g. due to clk_enable not being
implemented in a driver and -ENOSYS being returned by the clk-uclass),
the driver will bail our and print an error message.
This implements a minimal
On recent bootloader versions, the USB hub on the RK3399-Q7 was never
brought out of reset, due to the 'rockchip,vbus-gpio' property not
being supported any longer (since 26a8b80).
This series rectifies the situation by using a fixed regulator in the
device tree to turn the USB hub on.
Philipp
This series repeats the same exercise as for the RK3368 and adapts any
lingering dependencies necessary to move the RK3399-based boards over
to use a live tree. Validated on the RK3399-Q7 (Puma).
Resent, due to an apparent patchworks hick-up yesterday that "ate my series".
Philipp Tomsich
Update the generic EHCI driver to support a live tree.
Signed-off-by: Philipp Tomsich
---
drivers/usb/host/ehci-generic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/host/ehci-generic.c b/drivers/usb/host/ehci-generic.c
The (Qseven) BIOS_DISABLE signal on the RK3399-Q7 (Puma) keeps the
eMMC and SPI in reset initially and we need to write a GPIO to turn
them on before continuing the boot-up.
This adds the DTS entries for the additional regulator and makes
pinctrl and gpio3 available during SPL. It also adds a
The Makefile already tests for SPL_DM_REGULATOR_FIXED, but Kconfig
does not provide it. This adds SPL_DM_REGULATOR_FIXED to Kconfig.
Signed-off-by: Philipp Tomsich
---
drivers/power/regulator/Kconfig | 7 +++
1 file changed, 7 insertions(+)
diff
In the general case, we want to continue booting the full U-Boot
(contained in a discoverable FIT image) from the same device the SPL
stage was loaded from. This prepends the 'same-as-spl' specifier to
our configurable boot-order to make this the default behaviour.
Signed-off-by: Philipp Tomsich
> Some options like TPL_SYS_THUMB_BUILD, TPL_USE_ARCH_MEMCPY
> and TPL_USE_ARCH_MEMCPY are needed for TPL build in 32bit arm.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> ---
>
> arch/arm/Kconfig | 29 +
>
> SPL/TPL also need use sysreset for some feature like panic callback.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> ---
>
> drivers/sysreset/Kconfig | 18 ++
> drivers/sysreset/Makefile | 2 +-
> 2 files changed, 19
> OP-TEE is an open source trusted OS, in armv7, its loading and
> running are like this:
> loading:
> - SPL load both OP-TEE and U-Boot
> running:
> - SPL run into OP-TEE in secure mode;
> - OP-TEE run into U-Boot in non-secure mode;
>
> More detail:
> https://github.com/OP-TEE/optee_os
> and
> Enable all the options for TPL/SPL and OPTEE.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> ---
>
> configs/evb-rk3229_defconfig | 28
> 1 file changed, 24 insertions(+), 4 deletions(-)
>
Acked-by:
> Add driver for rk322x to support sdram initialize in SPL.
>
> Signed-off-by: Kever Yang
> ---
>
> Changes in v3:
> - move rk332x sdram driver to driver/ram
> - do the ram init in TPL instad of SPL
>
> arch/arm/include/asm/arch-rockchip/sdram_rk322x.h | 581
> After Simon's patch, the dtoc can work with 64bit address,
> so we need to fix reg number for it.
> Depend on Simon's patch set:
> https://patchwork.ozlabs.org/cover/807266/
>
> Signed-off-by: Kever Yang
> Reviewed-by: Philipp Tomsich
Hi Jean-Jacques,
On 12 September 2017 at 07:23, Jean-Jacques Hiblot wrote:
> Hi Simon,
>
> It's has been a month since you've reviewed the series, I think it's time
> that I send a v5.
> I tried to address all your remarks but I stumbled on this one below:
>
> JJ
>
> On
On Tue, 22 Aug 2017, Kever Yang wrote:
Rockchip using rockusb for flash emmc via USB, people
use 'reboot loader' in kernel and then want to get a rockusb
device in bootloader for firmware update.
Signed-off-by: Kever Yang
Reviewed-by: Philipp Tomsich
Update the clock driver for the RK3399 to support a live device tree.
Signed-off-by: Philipp Tomsich
---
drivers/clk/rockchip/clk_rk3399.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/rockchip/clk_rk3399.c
With the dev_read_addr_ptr function available, we can change the
efuse driver to use it (and eliminate the explicit type-cast).
Signed-off-by: Philipp Tomsich
---
drivers/misc/rockchip-efuse.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff
The original initialisation code for board_init() was largely lifted
from the code on the EVB. However, the RK3399-Q7 can do with a much
more concise init sequence.
This cleans up the board_init() by updating it to the essentials for
the RK3399-Q7 and getting rid of the accumulated cruft.
To support the new "same-as-spl" specifier in the boot-order on the
RK3399, this implements the chip-specific mapping from the information
obtainable from the BROM to a OF path name.
Signed-off-by: Philipp Tomsich
---
It is often desirable to configure the spl-boot-order (i.e. the order
that SPL probes devices to find the FIT image containing a full U-Boot)
such that it contains 'the same device the SPL stage was booted from'
early on. To support this, we introduce the 'same-as-spl' specifier
for the
> TPL stack may different from SPL and sys stack, add support for
> separate one when the board defines it.
>
> Signed-off-by: Kever Yang
> Reviewed-by: Simon Glass
> ---
>
> arch/arm/lib/crt0.S | 4 +++-
> 1 file changed, 3 insertions(+), 1
> Add the ENV_MEM_LAYOUT_SETTINGS to CONFIG_EXTRA_ENV_SETTINGS
>
> Signed-off-by: Andy Yan
> Acked-by: Philipp Tomsich
> ---
>
> include/configs/rk3368_common.h | 1 +
> 1 file changed, 1 insertion(+)
>
Acked-by: Philipp
> Detail of step by step to bring up the board with OP-TEE support.
>
> Signed-off-by: Kever Yang
> ---
>
> board/rockchip/evb_rk3229/README | 72
>
> 1 file changed, 72 insertions(+)
> create mode 100644
> After Simon's patch, the dtoc can work with 64bit address,
> so we need to fix reg number for it.
> Depend on Simon's patch set:
> https://patchwork.ozlabs.org/cover/807266/
>
> Signed-off-by: Kever Yang
> ---
>
> drivers/mmc/rockchip_sdhci.c | 2 +-
> 1 file
> The dram channel info will be auto detect by the driver,
> we do not need it.
>
> Signed-off-by: Kever Yang
> ---
>
> Changes in v3: None
>
> arch/arm/dts/rk3229-evb.dts | 1 -
> 1 file changed, 1 deletion(-)
>
Acked-by: Philipp Tomsich
> We don't need SPL_ATF_TEXT_BASE since we can get the bl31 entry
> from spl_image.entry_point.
>
> Signed-off-by: Kever Yang
> ---
>
> common/spl/Kconfig | 6 --
> 1 file changed, 6 deletions(-)
>
Acked-by: Philipp Tomsich
> Rename the bl31_entry() function with 'spl_' prefix and add one
> parameter for bl31 entry address since we can get it from spl_image header.
>
> Signed-off-by: Kever Yang
> ---
>
> common/spl/spl.c | 2 +-
> common/spl/spl_atf.c | 4 ++--
> include/spl.h
On Tue, 22 Aug 2017, Kever Yang wrote:
U-Boot fastboot, kernel may reboot with parameter which require
bootloader to get into different boot mode, detect it and enter
proper mode.
Signed-off-by: Kever Yang
Reviewed-by: Philipp Tomsich
On 09/12/2017 03:19 PM, Masahiro Yamada wrote:
> Hi Marek,
>
>
> 2017-09-12 19:23 GMT+09:00 Marek Vasut :
>> On 09/12/2017 10:23 AM, Masahiro Yamada wrote:
>>> GCC 7.1 warns:
>>> duplicate ‘const’ declaration specifier [-Wduplicate-decl-specifier]
>>>
>>> Signed-off-by: Masahiro
On 08/20/2017 05:11 PM, Marek Vasut wrote:
> This patch prepares the driver to support controller(s) with registers
> at locations shifted by constant. Pull out the readl()/writel() from
> the driver into separate functions, where the adjustment of the register
> offset can be easily contained.
>
Enable the EHCI generic driver, which is superior to ad-hoc SoC specific one.
Signed-off-by: Marek Vasut
Cc: Nobuhiro Iwamatsu
---
configs/r8a7795_ulcb_defconfig | 1 +
configs/r8a7796_ulcb_defconfig | 1 +
2 files changed, 2 insertions(+)
Enable the EHCI generic driver, which is superior to ad-hoc SoC specific one.
Signed-off-by: Marek Vasut
Cc: Nobuhiro Iwamatsu
---
configs/r8a7795_salvator-x_defconfig | 1 +
configs/r8a7796_salvator-x_defconfig | 1 +
2 files changed, 2
Since we use EHCI generic driver on RCar Gen3 , this driver is useless.
Remove it.
Signed-off-by: Marek Vasut
Cc: Nobuhiro Iwamatsu
---
drivers/usb/host/Kconfig | 8 ---
drivers/usb/host/Makefile | 1 -
In order to use ehci-generic driver, move the configuration of HSUSB
block into the board file. This configuration should not have been in
the Gen3 EHCI USB driver in the first place, so move it to the board
file until there is a proper infrastructure and driver for the HSUSB
block.
The status register is optional in the AMD command sets, but it's
presence can be checked by reading out CFI table entry 0xc bit 0.
If the register is present, prefer using it's bit 7 to determine
if the flash is busy over reading the flash ; this is needed ie.
on Hyperflash memories.
Just move those config options from macros to configs.
Signed-off-by: Marek Vasut
Cc: Nobuhiro Iwamatsu
---
configs/r8a7795_salvator-x_defconfig | 4
configs/r8a7795_ulcb_defconfig | 5 +
configs/r8a7796_salvator-x_defconfig |
Embed the flash base into struct flash_info instead of having ad-hoc
static array in the code. This does not only remove static variable,
but also allows CFI-like controllers, ie. HyperFlash ones, to use most
of the CFI flash code by populating the flash_info with matching base
address.
This adds DM compatibility for the davinici GPIO driver.
Tested on da850-evm.
Signed-off-by: Adam Ford
diff --git a/arch/arm/mach-davinci/include/mach/gpio.h
b/arch/arm/mach-davinci/include/mach/gpio.h
index 7da0060..32cae3a 100644
---
The da850evm maintainer list shows a few people who are returning
boucing e-mail addresses:
DA8XXEVM BOARD
M: Nick Thompson
S: Maintained
F: board/davinci/da8xxevm/
F: include/configs/da830evm.h
F: configs/da830evm_defconfig
DA850_AM18XXEVM BOARD
M: Sudhakar
301 - 386 of 386 matches
Mail list logo