b725dc458f
While I2C supports multi-master buses this is difficult to get right. The implementation on the master side in software is quite complex. Clock-stretching and the arbitrary time that an I2C transaction can take make it difficult to share the bus fairly in the face of high traffic. When one or more masters can be reset independently part-way through a transaction it is hard to know the state of the bus. This driver provides a scheme based on two 'claim' GPIOs, one driven by the AP (Application Processor, meaning the main CPU) and one driven by the EC (Embedded Controller, a small CPU aimed at handling system tasks). With these they can communicate and reliably share the bus. This scheme has minimal overhead and involves very little code. It is used on snow to permit the EC and the AP to share access to the main system PMIC and battery. The scheme can survive reboots by either side without difficulty. This scheme has been tested in the field with millions of devices. Since U-Boot runs on the AP, the terminology used is 'our' claim GPIO, meaning the AP's, and 'their' claim GPIO, meaning the EC's. This terminology is used by the device tree bindings in Linux also. Signed-off-by: Simon Glass <sjg@chromium.org> |
||
---|---|---|
.. | ||
device-tree-bindings | ||
DocBook | ||
driver-model | ||
SPI | ||
SPL | ||
uImage.FIT | ||
feature-removal-schedule.txt | ||
git-mailrc | ||
I2C_Edge_Conditions | ||
kwboot.1 | ||
mkimage.1 | ||
README.440-DDR-performance | ||
README.ag102 | ||
README.AMCC-eval-boards-cleanup | ||
README.android-fastboot | ||
README.android-fastboot-protocol | ||
README.ARC | ||
README.arm64 | ||
README.arm-caches | ||
README.ARM-memory-map | ||
README.arm-relocation | ||
README.at91 | ||
README.at91-soc | ||
README.atmel_mci | ||
README.atmel_pmecc | ||
README.autoboot | ||
README.AVR32 | ||
README.AVR32-port-muxing | ||
README.b4860qds | ||
README.bedbug | ||
README.bitbangMII | ||
README.blackfin | ||
README.bootmenu | ||
README.bus_vcxk | ||
README.cfi | ||
README.clang | ||
README.commands | ||
README.commands.itest | ||
README.commands.spl | ||
README.console | ||
README.davinci | ||
README.davinci.nand_spl | ||
README.displaying-bmps | ||
README.distro | ||
README.dns | ||
README.drivers.eth | ||
README.efi | ||
README.enetaddr | ||
README.esbc_validate | ||
README.ext4 | ||
README.falcon | ||
README.fdt-control | ||
README.fec_mxc | ||
README.fsl_iim | ||
README.fsl-ddr | ||
README.fsl-dpaa | ||
README.fsl-esdhc | ||
README.fsl-hwconfig | ||
README.fsl-trustzone-components | ||
README.fuse | ||
README.generic_usb_ohci | ||
README.generic-board | ||
README.gpt | ||
README.Heterogeneous-SoCs | ||
README.hwconfig | ||
README.i2c | ||
README.idma2intr | ||
README.imx5 | ||
README.imx6 | ||
README.imx25 | ||
README.imx27 | ||
README.imx31 | ||
README.imximage | ||
README.iomux | ||
README.JFFS2 | ||
README.JFFS2_NAND | ||
README.kconfig | ||
README.kwbimage | ||
README.LED | ||
README.LED_display | ||
README.link-local | ||
README.lynxkdi | ||
README.m68k | ||
README.m54418twr | ||
README.malta | ||
README.marubun-pcmcia | ||
README.memory-test | ||
README.menu | ||
README.mips | ||
README.Modem | ||
README.mpc5xx | ||
README.mpc74xx | ||
README.mpc83xx.ddrecc | ||
README.mpc83xxads | ||
README.mpc85xx | ||
README.mpc85xx-sd-spi-boot | ||
README.mpc85xx-spin-table | ||
README.mpc85xxads | ||
README.mpc85xxcds | ||
README.MPC866 | ||
README.mxc_hab | ||
README.mxc_ocotp | ||
README.mxs | ||
README.mxsimage | ||
README.N1213 | ||
README.nand | ||
README.nand-boot-ppc440 | ||
README.NDS32 | ||
README.ne2000 | ||
README.NetConsole | ||
README.nokia_rx51 | ||
README.odroid | ||
README.OFT | ||
README.omap3 | ||
README.omap-reset-time | ||
README.omap-ulpi-viewport | ||
README.pblimage | ||
README.plan9 | ||
README.POST | ||
README.power-framework | ||
README.ppc440 | ||
README.pxe | ||
README.qemu-mips | ||
README.ramboot-ppc85xx | ||
README.rmobile | ||
README.s5pc1xx | ||
README.sata | ||
README.sched | ||
README.scrapyard | ||
README.semihosting | ||
README.serial_multi | ||
README.sh | ||
README.sh7752evb | ||
README.sh7753evb | ||
README.sha1 | ||
README.silent | ||
README.SNTP | ||
README.socfpga | ||
README.spear | ||
README.SPL | ||
README.splashprepare | ||
README.srio-pcie-boot-corenet | ||
README.standalone | ||
README.switch_config | ||
README.t1040-l2switch | ||
README.TPL | ||
README.trace | ||
README.ubi | ||
README.ublimage | ||
README.unaligned-memory-access.txt | ||
README.uniphier | ||
README.update | ||
README.usb | ||
README.vf610 | ||
README.video | ||
README.VLAN | ||
README.VSC3316-3308 | ||
README.vxworks | ||
README.watchdog | ||
README.x86 | ||
README.zfs | ||
README.zynq |
# # Xilinx ZYNQ U-Boot # # (C) Copyright 2013 Xilinx, Inc. # # SPDX-License-Identifier: GPL-2.0+ # 1. About this This document describes the information about Xilinx Zynq U-Boot - like supported boards, ML status and TODO list. 2. Zynq boards Xilinx Zynq-7000 All Programmable SoCs enable extensive system level differentiation, integration, and flexibility through hardware, software, and I/O programmability. * zc702 (single qspi, gem0, mmc) [1] * zc706 (dual parallel qspi, gem0, mmc) [2] * zed (single qspi, gem0, mmc) [3] * microzed (single qspi, gem0, mmc) [4] * zc770 - zc770-xm010 (single qspi, gem0, mmc) - zc770-xm011 (8 or 16 bit nand) - zc770-xm012 (nor) - zc770-xm013 (dual parallel qspi, gem1) 3. Building ex. configure and build for zc702 board $ make zynq_zc702_config $ make 4. Bootmode Zynq has a facility to read the bootmode from the slcr bootmode register once user is setting through jumpers on the board - see page no:1546 on [5] All possible bootmode values are defined in Table 6-2:Boot_Mode MIO Pins on [5]. board_late_init() will read the bootmode values using slcr bootmode register at runtime and assign the modeboot variable to specific bootmode string which is intern used in autoboot. SLCR bootmode register Bit[3:0] values #define ZYNQ_BM_NOR 0x02 #define ZYNQ_BM_SD 0x05 #define ZYNQ_BM_JTAG 0x0 "modeboot" variable can assign any of "norboot", "sdboot" or "jtagboot" bootmode strings at runtime. 5. Mainline status - Added basic board configurations support. - Added zynq u-boot bsp code - arch/arm/cpu/armv7/zynq - Added zynq boards named - zc70x, zed, microzed, zc770_xm010, zc770_xm012, zc770_xm013 - Added zynq drivers: serial - drivers/serial/serial_zynq.c net - drivers/net/zynq_gem.c mmc - drivers/mmc/zynq_sdhci.c mmc - drivers/mmc/zynq_sdhci.c spi- drivers/spi/zynq_spi.c i2c - drivers/i2c/zynq_i2c.c - Done proper cleanups on board configurations - Added basic FDT support for zynq boards - d-cache support for zynq_gem.c 6. TODO - Add zynq boards support - zc770_xm011 - Add zynq qspi controller driver - Add zynq nand controller driver - Add FDT support on individual drivers [1] http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC702-G.htm [2] http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC706-G.htm [3] http://zedboard.org/product/zedboard [4] http://zedboard.org/product/microzed [5] http://www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf -- Jagannadha Sutradharudu Teki <jaganna@xilinx.com> Sun Dec 15 14:52:41 IST 2013