Ambarella Platforms Device Tree Bindings
----------------------------------------

(c) 2013 Cao Rongrong <rrcao@ambarella.com>, Ambarella,Inc.


Table of Contents
=================

  I  - Introduction

  II - Ambarella Node definiton
    1)  - Root node
    2)  - Informational node
    3)  - CPUS node
    4)  - TWD node
    5)  - APB/AHB/AXI/RCT node
    6)  - TIMER node
    7)  - INTERRUPT node
    8)  - DMA node
    9)  - NAND node
    10) - SPINOR node
    11) - I2S node
    12) - UDC node
    13) - EHCI/OHCI node
    14) - SD/MMC node
    15) - ETHERNET node
    16) - SPI node
    17) - SLAVE SPI node
    18) - USBPHY node
    19) - PINCTRL node
    20) - GPIO node
    21) - UART node
    22) - I2C node
    23) - I2CMUX node
    24) - PWM node
    25) - ADC node
    26) - IR node
    27) - WDT node
    28) - RTC node
    29) - CRYPTO node
    30) - IAV node
    31) - SOUND node

  III - Misc Node definition
    1)  - BOGUS BUS node
    2)  - GPIO KEY node
    3)  - ADC KEY node
    4)  - PWM BACKLIGHT node



I - Introduction
++++++++++++++++


1) Reference
------------
   a) Documentation/devicetree/booting-without-of.txt
   b) Documentation/devicetree/usage-model.txt
   c) http://devicetree.org/Device_Tree_Usage
   d) https://wiki.freebsd.org/FlattenedDeviceTree
   e) http://xillybus.com/tutorials/device-tree-zynq-1

2) Abbreviations
----------------
   a) FDT: Flattened Device Tree
   b) OF:  Open Firmware
   c) DTS: Device Tree Source
   d) DTB: Device Tree Blob
   e) DTC: Device Tree Compiler

3) Summary
----------
Device Tree is essentially a data structure in byte code format (that is, not
human-readable) which contains information that is helpful to the kernel when
booting up. The boot loader copies that chunk of data into a known address in
the RAM before jumping to the kernel's entry point.

The device tree comes in three forms:
   DTS: the source of FDT, which is a plain txt file.
   DTB: the binary blob of FDT, which will be copied to RAM.
   /proc/device-tree: a file system in a running Linux, normally for debug.

In a normal flow, the DTS file is edited and compiled into a DTB file using a
special compiler named DTC. You can find DTC in the Linux kernel sources, or
download it by "git clone git://www.jdl.com/software/dtc.git dtc".

For Ambarella, the DTS for specific board is:
   $PROJECT/ambarella/boards/$BOARD/bsp/$BOARD.dts
which will include the DTS for specific ambarella SoC chip:
   arch/arm/boot/dts/ambarella-$SoC.dtsi
Normally, it's NOT recommended to modify the DTS for ambarella SoC chip.


II - Node definiton
+++++++++++++++++++


1) - Root node
==============


i) Properties
-------------
Required properties:
- model: "Ambarella <SoC> <BOARD>", can be modified according to the board.
- compatible: should be "ambarella,<SoC>";
- interrupt-parent: <&intc>, or <&gic>, See Interrupt below for more detail.

ii) Example
----------
/ {
	model = "Ambarella S2L Hawthorn Board";
	compatible = "ambarella,hawthorn", "ambarella,s2l";
	interrupt-parent = <&intc>;
  }


2) - Informational node
========================


i) /aliases
-----------
Please see http://devicetree.org/Device_Tree_Usage#aliases_Node

ii) /chosen
-----------
Please see http://devicetree.org/Device_Tree_Usage#chosen_Node
           Documentation/devicetree/booting-without-of.txt

iii) /memory
------------
   Please see Documentation/devicetree/booting-without-of.txt
   For Ambarella, the /memory node will be overwritten in Amboot.

iv) Example
-----------
	aliases {
		serial0 = &uart0;
		serial1 = &uart1;
		nand = &nand0;
		i2c0 = &i2c0;
		i2c1 = &i2c1;
		i2c2 = &i2c2;
		spi0 = &spi0;
		spi1 = &spi1;
		spinor = &spinor0;
		ethernet0 = &mac0;
	};

	/* the memory node will be overwritten in Amboot,
	 * here is just the default value. */
	memory {
		device_type = "memory";
		reg = <0x00200000 0x07e00000>; /* 126M */
	};

	chosen {
		bootargs = "console=ttyS0 ubi.mtd=lnx root=ubi0:rootfs rw rootfstype=ubifs init=/linuxrc";
	};


3) - CPUS node
==============


i) Reference
------------
Please see Documentation/devicetree/bindings/arm/cpus.txt

ii) Properties
- amb,core-div: this prop should be 1 or 2, this specified the divide of gclk_core from pll_out_core,
  for s2e and s5, this value should be 1; and for s2l, s3l, this should be 2. If you don't add this prop,
  the divide for gclk_core is 2 as default.
- cpufreq_tbl: Table of frequencies gclk_cortex and gclk_core could be transitioned
  into, in the unit of nanoseconds.
- clock-latency: Specify the possible maximum transition latency for clock, in
  unit of nanoseconds.


4) - TWD node
=============


i) Reference
------------
Please see Documentation/devicetree/bindings/arm/twd.txt

ii) Description
---------------
This node is only available for SoC chip that supports per-cpu local timer,
i.e., S2.


5) - APB/AHB/AXI/RCT node
=========================


i) Summary
----------
The apb/ahb/axi/rct nodes represent the BUS inside the SoC, each node may
contain many device nodes which connect to the corresponding bus.
PS: RCT is not a real bus, just means a serial of registers address space.

ii) Properties
--------------
Required properties:
- compatible: should be "simple-bus".
- #address-cells: should be 1.
- #size-cells: should be 1.
- reg: address range of the registers in each bus.
- ranges:


6) - TIMER node
===============


i) Properties
-------------
Required properties:
- compatible: should be
  a) "ambarella,clock-source": for timer used as clock source.
  b) "ambarella,clock-event":  for timer used as clock event.
- reg : specifies base physical address and size of the registers. The last
  pair for the timer-ctrl register which is shared by all of the timers.
- interrupts: the interrupt for this timer.
- ctrl-offset: bit offset in timer-ctrl reg for this timer.

ii) Example
-----------
	timer7: timer@e800b064 {
		compatible = "ambarella,clock-source";
		reg = <0xe800b064 0x10 0xe800b030 0x4>;
		interrupts = <62 0x1>;
		ctrl-offset = <24>; /* bit offset in timer-ctrl reg */
	};


7) - INTERRUPT node
===================


i) Reference
------------
Please see Documentation/devicetree/bindings/interrupt-control/interrupts.txt

ii) Properties
--------------
a) Ambarella VIC:
Required properties:
- compatible: should be "ambarella,vic".
- interrupt-controller: marks the node as an interrupt controller
- #interrupt-cells: should be 2, specifies the number of cells to define the
  interrupts. The first cell defines the index of the interrupt within the
  controller, while the second cell is used to specify any of the following
  flags:
    1 = low-to-high edge triggered.
    2 = high-to-low edge triggered.
    4 = active high level-sensitive.
    8 = active low level-sensitive.
- reg: specifies base physical address and size of the registers.

b) GIC:
Please see Documentation/devicetree/bindings/arm/gic.txt

iii) Example
------------
a) Ambarella VIC:
	intc: interrupt-controller@e0003000 {
		compatible = "ambarella,vic";
		interrupt-controller;
		#interrupt-cells = <2>;
		reg = <0xe0003000 0x1000>,
		      <0xe0010000 0x1000>,
		      <0xe001c000 0x1000>;
	};

b) GIC:
	gic: interrupt-controller@f0001000 {
		compatible = "arm,cortex-a9-gic";
		interrupt-controller;
		#interrupt-cells = <3>;
		reg = <0xf0001000 0x1000>,
			  <0xf0000100 0x0100>;
	};


8) - DMA node
=============


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,dma".
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for the DMA controller.
- #dma-cells: Must be at least 1. Used to provide DMA controller
			specific information. See DMA client binding below for
			more details.
- dma-channels: 	Number of DMA channels supported by the controller.
- dma-requests: 	Number of DMA requests signals supported by the
			controller.
- dma-trans-type:   specifies the dma channel use type.
					0 for memcpy, 1 for slave.

Optional properties:
- amb,copy-align: specifies alignment requirement for previous chips.
- amb,support-prs: should be specified for SoC that supports PAUSE/RESUME/STOP.
- dma-channel-sel: should be specified for Soc that support dma channel sel.
  different value is used for selecting the device.
  e.g., 0 for ssi0_tx, 1 for ssi0_rx, 10 for i2s_tx, 11 for i2s_rx.

ii) Example
-----------
	dma@e0005000 {
		compatible = "ambarella,dma";
		reg = <0xe0005000 0x1000>;
		interrupts = <15 0x4>;
		#dma-cells = <2>;
		dma-channels = <8>;
		dma-requests = <12>;
		dma-trans-type = <1 1 0 0 1 1 1 1>; /* 0-memcpy ,1-slave*/
		dma-channel-sel = <4 5 0 0 8 9 11 10>;
	};


9) - NAND node
==============


i) Reference
------------
Please see Documentation/devicetree/bindings/mtd/nand.txt

ii) Properties
--------------
Required properties:
- compatible: should be "ambarella,nand".
- #address-cells: should be 1.
- #size-cells: should be 1.
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for the NAND controller.

Optional properties:
- nand-on-flash-bbt: please see Reference.
- amb,enable-wp: specifies to enable write protection
- amb,no-bch: should be specified for SoC without BCH supported.
- amb,use-2x-pll: should be specified only for A5S.
- amb,soft-ecc: specifies to use software ECC instead of hardware ECC, the
  value should be as:
    1 = 1 bit software ECC
    6 = 6 bit software ECC
    8 = 8 bit software ECC
- amb,timing: an integer array with size 6, the array is used to specify the
  NAND timing, like tcls/tals/tcs/..., which can be found in NAND datasheet.
  Please note that this property is provided by Amboot in runtime.

iii) Subnode
------------
Please see Documentation/devicetree/bindings/mtd/partition.txt, and please
note that the subnodes for partitions are provided by Amboot in runtime.

iv) Example
-----------
	nand0: nand@e0001000 {
		compatible = "ambarella,nand";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0xe0001000 0x1000>, /* fio reg address */
		      <0xe0012000 0x1000>, /* fdma reg address */
		      <0xe0000000 0x4>;    /* fifo base */
		interrupts = <16 0x4>,	/* fio_cmd_irq */
			     <17 0x4>,	/* fio_dma_irq */
			     <33 0x4>;	/* fdma_irq */
		nand-on-flash-bbt;
		/* amb,soft-ecc = <1>; */
		/* amb,enable-wp; */
	};


10) - SPINOR node
=================


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,spinor".
- reg: specifies base physical address and size of the registers.

ii) Example
-----------
	spinor0: spinor@e0031000 {
		compatible = "ambarella,spinor";
		reg = <0xe0031000 0x2ff>, /* spi nor controller */
		      <0xe0005300 0x20>;  /* dma reg */
	};


11) - I2S node
==============


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,i2s".
- reg: specifies base physical address and size of the registers.
- pinctrl-names: should contain only one value - "default".
- pinctrl-0: pin control group to be used for this controller.
- amb,i2s-channels: should be one of these values: 2, 4, 6.
- amb,default-mclk: specifies the initial mclk frequency in HZ.

ii) Example
-----------
	i2s0: i2s@e001a000 {
		compatible = "ambarella,i2s";
		reg = <0xe001a000 0x1000>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2s0_pins>;
		amb,i2s-channels = <2>;
		amb,default-mclk = <12288000>;
	};


12) - UDC node
==============


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,udc".
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for the UDC controller.
- amb,usbphy: specifies the phandle to USB PHY.

Optional properties:
- amb,dma-addr-fix: should be specified only for S2.

ii) Example
-----------
	udc@e0006000 {
		compatible = "ambarella,udc";
		reg = <0xe0006000 0x2000 0xec1702cc 0x4>;
		interrupts = <4 0x4>;
		amb,usbphy = <&usbphy>;
	};


13) - EHCI/OHCI node
====================


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,ehci", or "ambarella,ohci".
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for the EHCI/OHCI controller.
- amb,usbphy: specifies the phandle to USB PHY.

Optional properties:
- amb,dma-addr-fix: should be specified only for S2.

ii) Example
-----------
	ehci@e0018000 {
		compatible = "ambarella,ehci";
		reg = <0xe0018000 0x1000>;
		interrupts = <39 0x4>;
		amb,usbphy = <&usbphy>;
	};

	ohci@e0019000 {
		compatible = "ambarella,ohci";
		reg = <0xe0019000 0x1000>;
		interrupts = <44 0x4>;
		amb,usbphy = <&usbphy>;
		status = "disabled";
	};


14) - SD/MMC node
=================


i) Reference
------------
Please see Documentation/devicetree/bindings/mmc/mmc.txt

ii) Properties
--------------
Required properties:
- compatible: should be "ambarella,sdmmc".
- reg: specifies base physical address and size of the registers.
- #address-cells: should be 1.
- #size-cells: should be 0.
- interrupts: the interrupt for the SD controller.
- amb,clk-name: specifies the PLL name of this SD controller, should be one
  of these strings: "gclk_sd", "gclk_sdio", "gclk_sdxc".
- amb,wait-tmo: specifies the timeout in millisecond to wait for CMD complete.
- amb,switch-vol-tmo: specifies the timeout to enable clk after switch voltage
  from 3.3v to 1.8v.
- amb,max-blk-size: specifies the maximal block size, should be multiple of 4k.

Optional properties:
- amb,dma-addr-fix: should be specified only for S2.
- amb,soft-phy: should be specified for SD controllers to adjust timing base on
  SD phy.
- amb,phy-timing: an integer array which is used to specify the SD phy timing,
  the size of the array is different according to corresponding phy register
  for each chips or SD controllers, and the values are gotten by SD shmoo in
  Amboot.
  For the SD controller to ajust timing base on SD controller, like S3L and later
  chip, the array is orgnized as: <mode SD_DELAY_SEL_L SD_DELAY_SEL_H>;
  For the SD controller to ajust timing base on SD phy, like S2E SD0, S2L, S3L, the
  array is orgnized as: <mode phy_ctrl0_val latency_ctrl_val>;
  For the SD controller only supporting ms delay mux, like S2E SD1, the array
  is orgnized as: <mode ms_delay_ctrl_mask ms_delay_ctrl_val>;
  Here mode is the ORed value of SD card working modes like sdr104, ddr50 and
  etc., and the later 2 items are values written to corresponding phy registers.
  Following is the definition of each bits for mode:
  bit0: specify the default phy timing setting, so bit0 must be reserved as 1, and
  followed by default phy timing setting. PS: it's a MUST to define the default phy
  timing setting with bit0 set, and it MUST be placed in the first row.
  bit1: MMC HS; bit2: SD HS;
  bit3: SDR12; bit4: SDR25; bit5: SDR50; bit6: SDR104; bit7: DDR50
  bit8: MMC HS200
  In fact, the definition for each bit of mode comes from the following
  definition which are defined in include/linux/mmc/host.h:
    #define MMC_TIMING_LEGACY	0
    #define MMC_TIMING_MMC_HS	1
    #define MMC_TIMING_SD_HS	2
    #define MMC_TIMING_UHS_SDR12	3
    #define MMC_TIMING_UHS_SDR25	4
    #define MMC_TIMING_UHS_SDR50	5
    #define MMC_TIMING_UHS_SDR104	6
    #define MMC_TIMING_UHS_DDR50	7
    #define MMC_TIMING_MMC_HS200	8

Example for ajusting timing base sd controller on s3l platform:
		sdmmc0: sdmmc0@e0002000 {
			compatible = "ambarella,sdmmc";
			reg = <0xe0002000 0x1000>,
			      <0xe0001000 0x80>;/* fio reg address */
			amb,max-blk-size = <131072>; /* valid value: 4K<<n */
			amb,soft-phy;
			amb,phy-timing = <0x00000007 0x00000000 0x00000000>,/*HS 50M and 25M*/
					/*sdr25 50M,sdr50 100M,sdr104 120M*/
					<0x00000078 0x10410400 0x00904104>,
					<0x00000080 0x38E38E00 0x0238E38E>;/*DDR50 50M*/
			slot@0 {

			};
		};


Example for ajusting timing base sd phy on s3l platform:
		sdmmc0: sdmmc0@e0002000 {
			compatible = "ambarella,sdmmc";
			reg = <0xe0002000 0x1000>,
			      <0xe0001000 0x80>;/* fio reg address */
			      <0xec1704c0 0x8>;/*should specify the phy register*/

			amb,soft-phy;
			amb,phy-timing = <0x00000001 0x04070000 0x00000000>,
					/*sdr12 24M,sdr25 50M,sdr50 100M*/
					<0x00000038 0x00000003 0x00001111>,
					<0x00000040 0x00000005 0x00002222>,/*sdr104 200M*/
					<0x00000080 0x000C0005 0x00000000>;/*ddr50 50M*/
			slot@0 {

			};
		};

iii) Subnode
------------
The SD/MMC node should contain subnodes which represent the slot belong to
this controller.

The unit address of subnodes should be its index of the slot. And the subnode
should contain the following properties.
- reg: index of the slot, normally the same as the unit address.
- global-id: specify the global id for each slot, it should be unique for all
  of the slots.
- amb,fixed-cd: should be specified if no cd pin, 0: no sd card, 1: sd card is
always present
- amb,fixed-wp: should be specified if no wp pin, 0: write-able, 1: read-only
- amb,caps-adma: should be specified if hardware supports ADMA.
- amb,caps-ddr: should be specified if hardware supports DDR.
- no-1-8-v: should be specified if the slot don't have 1.8V circuit.
- v18-gpios: specifies the GPIO to switch to the 1.8V power if existed.
- pwr-gpios: specifies the GPIO to turn on/off the power for the SD/MMC card.
- amb,force-gpio: force the SD/MMC pins to switch to GPIO mode when in idle,
  should be specified only for A5S SDIO slot.
- pinctrl-names: should contain only one value - "default".
- pinctrl-0: pin control group to be used for this controller.
- properties provided by Kernel, please see Reference above.

iv) Example
-----------
	sdmmc0@e0002000 {
		compatible = "ambarella,sdmmc";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0xe0002000 0x1000>,
		      <0xe0001000 0x80>; /* fio reg address */
		interrupts = <18 0x4>;
		amb,clk-name = "gclk_sd";
		amb,wait-tmo = <2500>; /* in millisecond */
		amb,max-blk-size = <131072>; /* valid value: 4K<<n */

		slot@0 {
			reg = <0>;
			max-frequency = <48000000>;
			bus-width = <8>;
			pinctrl-names = "default";
			pinctrl-0 = <&sdmmc1_pins_8bit>;
			amb,caps-adma;
			cap-sdio-irq;
		};
	};


15) - ETHERNET node
===================


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,eth".
- #address-cells: should be 1.
- #size-cells: should be 0.
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for the ethernet controller.

Optional properties:
- pwr-gpios: specifies the GPIO to control PHY power.
- rst-gpios: specifies the GPIO to reset PHY.
- amb,support-gmii: should be specified if hardware supports GMII.
- amb,tx-ring-size: specifies the Tx ring buffer size.
- amb,rx-ring-size: specifies the Rx ring buffer size.
- amb,fixed-speed: should be specified if connecting without PHY.
- amb,ipc-tx: should be specified if hardware supports Tx checksum.
- amb,ipc-rx: should be specified if hardware supports Rx checksum.
- amb,dump-tx: specifies to dump Tx buffer, for debug purpose.
- amb,dump-rx: specifies to dump Rx buffer, for debug purpose.
- amb,dump-rx-free: specifies to free buffer after dumped.
- amb,dump-rx-all: specifies to dump all buffers without filter.
- amb,mdio-gpio: specifies using mdio gpio to access phy.
- amb,clk-src: specifies the clk source for gtx_clk, 0:external clk, 1:internal clk.
- amb,clk-invert: specifies to invert the clk for ethernet, 0: no invert, 1: invert
- amb,clk-dir: specifies the ref clk direction from PHY, 1: set direction of xx_enet_clk_rx as output from ambarella chip,
  0: set direction of xx_enet_clk_rx as output from external phy.
ii) Example
-----------
	mac0: ethernet@e000e000 {
		compatible = "ambarella,eth";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0xe000e000 0x2000>;
		interrupts = <27 0x4>;
		amb,tx-ring-size = <32>;
		amb,rx-ring-size = <64>;
		amb,ipc-tx;
		amb,ipc-rx;
	};


16) - SPI node
===============


i) Reference
------------
Please see Documentation/devicetree/bindings/spi/spi-bus.txt


ii) Properties
--------------
Required properties:
- compatible: should be "ambarella,spi".
- #address-cells: should be 1.
- #size-cells: should be 0.
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for the SPI controller.
- amb,clk-freq: specifies the PLL frequence in HZ.
- amb,msb-first-only: HW only supports msb first tx/rx, for A5S/S2/S2E, please
  set this flag.
- cs-gpios: gpios chip select. Please see Reference for detailed.

Optional properties:
- amb,dma-used: use dma for TX/RX, only can be specified if SPI channel
  supports dma mode.
- dmas: specify dma channel
- dma-names: specify dma channel name.

iii) Subnode
------------
The SPI node can contain subnodes which represent the spi devices connected
to this SPI controller. If any valid subnode are available, the SPI drivers
will proble them automatically.

The subnodes should contain the following properties.
- compatible: name of the SPI device, should match the name of its drivers.
- reg: index of the SPI device, normally the same as the unit address.
- properties provided by Kernel: please see Reference.

iv) Example
-----------
	spi0: spi@e0020000 {
		compatible = "ambarella,spi";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0xe0020000 0x1000>;
		interrupts = <35 0x4>;
		amb,clk-name = "gclk_ssi_ahb";
		amb,clk-freq = <54000000>;
		cs-gpios = <&gpio 37 0>, <&gpio 38 0>, <&gpio 23 0>;

		sensor: sensor@0 {
			compatible = "ambarella,sensor";
			reg = <0>;
			spi-max-frequency = <1000000>;
			spi-cpha;
			spi-cpol;
		};
	};


17) - SLAVE SPI node
====================


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,spi-slave".
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for the slave spi controller.

ii) Example
-----------
	spi_slave@e0026000 {
		compatible = "ambarella,spi-slave";
		reg = <0xe0026000 0x1000>;
		interrupts = <38 0x4>;
	};


18) - USBPHY node
=================


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,usbphy".
- reg: specifies base physical address and size of the registers.

Optional properties:
- amb,host-phy-num: specifies the PHY number used for host.
- amb,owner-mask: Mask IDDIG0, should be specified for S2L.
- amb,owner-invert: the owner bit for USB PHY is inverted, should be specified
  for S2L.
- amb,ocp-polarity: specifies the polarity of over current protection pin.
- id-gpios: specifies the input GPIO used for OTG detection.
- md-gpios: specifies the output GPIO to control external circuit to switch to
  host mode or device mode.
- hub-gpios: specifies the GPIO to reset the usb hub.

ii) Example
-----------
	usbphy: usbphy@ec170050 {
		compatible = "ambarella,usbphy";
		reg = <0xec170050 0x4 0xe001b00c 0x4 0xec1702c0 0x4>;
		amb,host-phy-num = <2>;
		amb,owner-offset = <0x1001>;
	};


19) - PINCTRL node
==================


i) Reference
------------
Please see Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt

ii) Description
---------------
The pins controlled by Ambarella SoC chip are organized in banks, each bank
has 32 pins.  Each pin has at least 2 multiplexing functions, and generally,
the first function is GPIO.

The PINCTRL node acts as a container for an arbitrary number of subnodes. And
these subnodes will fall into two categories.
One is for GPIO, please see the "GPIO node" section for detail, and another one
is to set up a group of pins for a function, both pin configurations(TODO) and
mux selection, and it's called group node in the binding document.


iii) Properties
---------------
Required properties:
- compatible: should be "ambarella,pinctrl", "simple-bus".
- #address-cells: should be 1.
- #size-cells: should be 0.
- reg: specifies base physical address and size of the registers.
- #gpio-range-cells: should be 3.

Optional properties:
- reg-names: "gpio0", "gpio1", ... , "gpioN", ["iomux"], should be specified
  if the SoC supports IOMUX, e.g., S2L.


iv) Subnode
-----------
On Ambarella SoC chip, there is no hardware pin group. The pin group in this
binding only means a group of pins put together for particular peripheral to
work in particular function.  That said, the group node should include all the
pins needed for one function rather than having these pins defined in several
group nodes.  It also means each of "pinctrl-*" phandle in client device node
should only have one group node pointed in there.

Required subnode-properties:
- reg: Should be the index of the group nodes for same function.
- amb,pinmux-ids: an integer array. Each integer in the array specifies a pin
  with given mux function, with pin id and mux packed as:
    mux << 12 | pin id
  Here mux means function of this pin, and pin id is identical to gpio id. For
  the SoC supporting IOMUX, like S2L, the maximal value of mux is 5. However,
  for the SoC not supporting IOMUX, like A5S, S2, the third or fourth function
  is selected by other "virtual pins" setting. Here the "virtual pins" means
  there is no real hardware pins mapping to the corresponding register address.
  So the registers for the "virtual pins" can be used for the selection of 3rd
  or 4th function for other real pins.
- amb,pinconf-ids: an integer array. Each integer in the array specifies a pin
  with given configuration, with pin id and config packed as:
    config << 16 | pin id
  Here config is used to configure pull up/down and drive strength of the pin,
  and it's orgnization is:
  bit1~0: 00: pull down, 01: pull up, 1x: clear pull up/down
  bit2:   reserved
  bit3:   0: leave pull up/down as default value, 1: config pull up/down
  bit5~4: drive strength value, 0: 2mA, 1: 4mA, 2: 8mA, 3: 12mA
  bit6:   reserved
  bit7:   0: leave drive strength as default value, 1: config drive strength

v) Example
----------
	pinctrl: pinctrl@e8009000 {
		compatible = "ambarella,pinctrl", "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0xe8009000 0x1000>,
		      <0xe800a000 0x1000>,
		      <0xe800e000 0x1000>,
		      <0xe8010000 0x1000>,
		      <0xe8016000 0x1000>;
		reg-names = "gpio0", "gpio1", "gpio2", "gpio3", "iomux";
		#gpio-range-cells = <3>;

		uart0_pins: uart0@0 {
			reg = <0>;
			amb,pinmux-ids = <0x1027 0x1028>;
		};

		sdmmc0_pins_4bit: sdmmc0@1 {
			reg = <1>;
			amb,pinmux-ids = <0x2039 0x203a 0x203b 0x203c
							  0x2049 0x204a 0x204b 0x204c>;
			amb,pinconf-ids = <0x090039 0xb0003a 0xaa003b 0x00003c>;
		};
	}

In this example, uart0_pins defines a group of pins used by uart0 controller,
according to the definition, uart0 uses 2 pins which are pin39(0x27) and
pin40(0x28), i.e., GPIO39 and GPIO40. And, pin39/pin40 use function 1.
And, sdmmc0_pins_4bit defines a group of pins used by sd0 controller, according
to the definition, sd0 uses 8 pins. And pin57 enables pull up, pin58 configure
drive strength to 12mA, pin59 clear pull up/down and configure drive strength
to 8mA, pin60 leave pull up/down and drive strength as default value.


20) - GPIO node
===============


i) Reference
------------
Please see Documentation/devicetree/bindings/gpio/gpio.txt

ii) Description
---------------
The Ambarella GPIO controller is part of Ambarella PIN controller. The GPIOs
are organized in bank. Each port consists of 32 GPIOs.

As the GPIO controller is embedded in the PIN controller and all the GPIO
ports share the same IO space with PIN controller, the GPIO node will be
represented as sub-nodes of Ambarella PINCTRL node.

iii) Properties
---------------
Required properties:
- compatible: should be "ambarella,gpio".
- interrupts: the interrupts for each GPIO bank.
- gpio-controller : marks the device node as a gpio controller.
- #gpio-cells : should be two. The first cell is the pin number and the second
  cell is used to specify the gpio polarity:
    0 = active high.
    1 = active low.
- gpio-ranges: speicify the ranges that may be handled by the pin controller.
- interrupt-controller: marks the device node as an interrupt controller.
- #interrupt-cells : should be 2. The first cell is the GPIO number. The second
  cell bits[3:0] is used to specify trigger type and level flags:
    1 = low-to-high edge triggered.
    2 = high-to-low edge triggered.
    4 = active high level-sensitive.
    8 = active low level-sensitive.

iv) Example
-----------
	gpio: gpio@0 {
		compatible = "ambarella,gpio";
		/* gpio interrupts to vic */
		interrupts = <10 0x4 11 0x4 30 0x4 29 0x4>;
		gpio-controller;
		#gpio-cells = <2>;
		gpio-ranges = <&pinctrl 0 0 128>;
		interrupt-controller;
		#interrupt-cells = <2>;
	};

v) GPIO user nodes example
--------------------------
	spi0: spi@e0020000 {
		......
		cs-gpios = <&gpio 37 0>, <&gpio 38 0>, <&gpio 23 0>;
		......
	};

  DESCRIPTION:
    cs-gpios = GPIO properties name;
    &gpio    = phandle to the GPIO controller node;
    37/38/39 = the GPIO id;
    0        = normal polarity.
  Please see Reference for detailed.


21) - UART node
===============


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,uart".
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for this uart.
- pinctrl-names: should contain only one value - "default".
- pinctrl-0: pin control group to be used for this controller.

Optional properties:
- amb,tx-fifo-fix: should be specified for A7L, iONE and A8
- amb,msr-used: use Modem Status Register, should be specified for non-UART0.
- amb,less-reg: registers like FIFO status register are NOT provided, should be
  specified for A5S.
- amb,txdma-used: use dma for transmitting, should be specified if uart hardware
  supports dma mode.
- amb,rxdma-used: use dma for receiving, should be specified if uart hardware
  supports dma mode.

ii) Example
-----------
	uart0: uart@e8005000 {
		compatible = "ambarella,uart";
		reg = <0xe8005000 0x1000>;
		interrupts = <9 0x4>;
		pinctrl-names = "default";
		pinctrl-0 = <&uart0_pins>;
		status = "ok";
		/* amb,tx-fifo-fix; */
	};


22) - I2C node
==============


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,i2c".
- #address-cells: should be 1.
- #size-cells: should be 0.
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for this i2c.
- pinctrl-names: should contain only one value - "default".
- pinctrl-0: pin control group to be used for this controller.
- clock-frequency: desired I2C bus clock frequency in Hz, [1000, 400000].
- amb,i2c-class:
  a) 0x81: normal I2C controller
  b) 0x08: I2C controller dedicated to HDMI
- amb,turbo-mode: use turbo(FIFO) write mode, batched data will be write into FIFO
directly, but there're 2 restriction for this mode:
  1) FIFO mode will ignore device ACK.
  2) FIFO mode can only write less than or equal to 61 data(FIFO depth) into FIFO at a time.
- amb,duty-cycle: the duty cycle of clock, and the value can be:
    0 = duty cycle 1:1, this is the default setting.
    1 = duty cycle 2:3.
    2 = duty cycle 1:2.

ii) Subnode
-----------
The I2C node can contain subnodes which represent the I2C devices connected
to this I2C controller. If any valid subnode are available, the I2C drivers
will proble them automatically.

The unit address of subnodes should be its device address in I2C bus. And the
subnode should contain the following properties.
- compatible: name of I2C device, should match the name of its drivers.
- reg: device address in the I2C bus, normally the same as the unit address.

iii) Example
------------
	i2c0: i2c@e8003000 {
		compatible = "ambarella,i2c";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0xe8003000 0x1000>;
		interrupts = <19 0x4>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2c0_pins>;
		clock-frequency = <100000>;
		amb,i2c-class = <0x81>;
		amb,turbo-mode;
		amb,duty-cycle = <0>;
		status = "ok";

		ak4642: codec@12 {
			compatible = "ambarella,ak4642";
			reg = <0x12>;
			gpios = <&pca9539 4 0x0>;
		};
	};


23) - I2CMUX node
=================


i) Reference
------------
Please see Documentation/devicetree/bindings/i2c/i2c-mux-pinctrl.txt

ii) Description
---------------
This node is only available for SoC chip that supports I2C Mux, i.e., A5S.


24) - PWM node
==============


i) Reference
------------
Please see Documentation/devicetree/bindings/pwm/pwm.txt

ii) Properties
--------------
Required properties:
- compatible: should be "ambarella,pwm".
- reg: specifies base physical address and size of the registers.
- #pwm-cells: should be 3.

iii) Example
----------
	pwm: pwm@e8008000 {
		compatible = "ambarella,pwm";
		reg = <0xe8008000 0x1000>;
		#pwm-cells = <3>;
	};

iv) PWM user nodes example
--------------------------
	backlight {
		......
		pwms = <&pwm 2 40000 0>;
		......
	};

  DESCRIPTION:
    pwms = PWM properties name;
    &pwm = phandle to the PWM controller node;
    2    = the PWM number or channel;
    4000 = the PWM period in nanoseconds.
    0    = normal polarity
  Please see Reference for detailed.


25) - ADC node
==============


i) Properties
-------------

Required properties:
- compatible: should be "ambarella,adc".
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for adc.
- clock-frequency: desired ADC clock frequency in Hz.
- amb,polling-mode: specified if ADC is working in polling mode, must be
  specified for A5S.

Optional properties:
- amb,print-key: print Key code when key is pressed, for debug purpose.

ii) Example
-----------
	adc@e801d000 {
		compatible = "ambarella,adc";
		reg = <0xe801d000 0x1000>;
		interrupts = <34 0x4>;
		clock-frequency = <3000000>;
	};

iii) Note
---------
For coding easily purpose, we re-order the channel number for A5S.
Please see the ADC address definition in PRM for details.

26) - IR node
=============


i) Properties
-------------
- compatible: should be "ambarella,ir".
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for ir.
- pinctrl-names: should contain only one value - "default".
- pinctrl-0: pin control group to be used for this controller.
- amb,keymap: the key-code to be reported when the key is pressed. Each entry
  is organized as <IRcode Keycode>.

Optional properties:
- amb,protocol: ir protocol, use NEC protocol if not specified.
  a) 0: NEC protocol
  b) 1: PANASONIC protocol
  c) 2: SONY protocol
  d) 3: PHILIPS protocol
- amb,print-key: print IR code when key is pressed, for debug purpose.

ii) Example
-----------
	ir@e8006000 {
		compatible = "ambarella,ir";
		reg = <0xe8006000 0x1000>;
		interrupts = <22 0x4>;
		pinctrl-names = "default";
		pinctrl-0 = <&ir_pins>;
		amb,keymap =
			<0x0100bcbd 116>, /* KEY_POWER */
			<0x01000405 115>, /* KEY_VOLUMEUP */
			<0x01008485 114>; /* KEY_VOLUMEDOWN */
		/* amb,print-key; */
	};


27) - WDT node
==============


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,wdt".
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for wdt, normally not used.
- timeout-sec: the watchdog timeout in seconds.
- amb,non-bootstatus: don't support to report boot status, should be
  specified only for A5S.

ii) Example
-----------
	wdt@e800c000 {
		compatible = "ambarella,wdt";
		reg = <0xe800c000 0x1000>;
		/* interrupts = <21 0x4>; */
		timeout-sec = <15>;
	};


28) - RTC node
==============


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,rtc".
- reg: specifies base physical address and size of the registers.

Optional properties:
- amb,is-limited: should be specified only for A5S.

ii) Example
-----------
	rtc@e8015000 {
		compatible = "ambarella,rtc-v2";
		reg = <0xe8015000 0x1000>;
	};


29) - CRYPTO node
=================


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,crypto".
- reg: specifies base physical address and size of the registers.
- interrupts: the interrupt for crypto.
- interrupt-names: the name for each interrupt.

Optional properties:
- amb,cap-md5-sha1: should be specified if hardwar supports md5 and sha1.
- amb,data-swap: should be specified if hardware needs to swap data.
- amb,reg-64bit: should be specified if hardware has 64bit register.
- amb,binary-mode: should be specified if hardware needs binary mode.

ii) Example
-----------
	crypto@f0020000 {
		compatible = "ambarella,crypto";
		reg = <0xf0020000 0x8000>;
		interrupts = <88 0x1>, <87 0x1>, <86 0x1>, <89 0x1>;
		interrupt-names = "aes-irq", "des-irq", "md5-irq", "sha1-irq";
		amb,cap-md5-sha1;
		amb,data-swap;
		amb,reg-64bit;
	};


30) - IAV node
==============


i) Properties
-------------
Required properties:
- compatible: should be "ambarella,iav".

ii) Subnode
-----------
The IAV node may contain subnodes which represent the VIN controller, whose
name must be vincN (N = 0, 1).

And the optional properties of subnodes:
- vinrst-gpios: specifies the GPIO to reset VIN.
- vinpwr-gpios: specifies the GPIO to control the power of VIN.

iii) Example
------------
	iav {
		compatible = "ambarella,iav";

		/* node for vin controller */
		vinc0 {
			vinrst-gpios = <&pca9539 7 0>;
			vinpwr-gpios = <&gpio 8 1>, <&gpio 9 1>, <&gpio 10 1>;/
	};


31) - SOUND node
================


i) Properties
-------------
Required properties:
- compatible: board name, should match the name in ALSA board driver.
- amb,model: board description.
- amb,i2s-controllers: specifies the phandle to I2S controller.
- amb,audio-codec: specifies the phandle to audio codec.
- amb,dai_fmt: specifies the mode of codec and cpu. If it is 0, the mode is I2S, otherwise it is DSP mode.
- amb,clk_fmt:
	0 : mclk, bclk provided by cpu
	1 : bclk provide by cpu, mclk is not used
	2 : mclk provided by cpu, bclk is provided by codec
There are four type of connection:
clk_fmt=0:
cpu :                   codec:
	MCLK    ------>  MCKI
	BCLK    ------>  BICK
	LRCK    ------>  LRCK
clk_fmt=1:
cpu :                   codec:
	MCLK   is not used
	BCLK    ------> BICK
	LRCK    ------> LRCK
clk_fmt=2:
cpu :                   codec:
	MCLK   ------> MCKI
	BCLK   <------ BICK
	LRCK   <------ LRCK
There are one connection we are not used, it is like clk_fmt=0,but power on the codec PLL.
It is a waster of power, so we do not use it.

- amb,codec-name: specifies the name of the codec.
- amb,stream-name: specifies the name of the stream.
- amb,codec-dai-name: specifies the DAI name within the codec, it must be consistent with the codec driver.
- amb,audio-routing: specifies the route map for audio codec.
usage:
	amb,audio-routing = "sink", source",	/*This is route 0*/
			    "sink", "source";	/*This is route 1*/
	sink and source dapm widget should be based on codec driver and our board.
	dapm widget on board:
	"Mic internal": board internal Mic, used to connect Mic of codec.
	"Mic external": used to connect Mic of codec with the external Mic of our board.
	"Line In": used to connect to line in of codec dapm widget.
	"Line Out": used to connect line out of codec dapm widget.
	"HP Jack": used to connect the headphone of codec dapm widget.
	"Speaker": used to connect the speaker of codec dapm widget.

ii) Example
-----------
	sound {
		compatible = "ambarella,audio-board";
		amb,model = "ak4642 @ Ambarella";
		amb,i2s-controllers = <&i2s0>;
		amb,audio-codec = <&ak4642>;
		amb,dai_fmt = <0>;
		amb,codec-name = "ak4642";
		amb,stream-name = "ak4642 PCM";
		amb,codec-dai-name = "ak4642-hifi";
		amb,audio-routing = "LIN1",	"Mic internal",
				    "RIN1",	"Mic internal",
				    "LIN2",	"Line In",
				    "RIN2",	"Line In",
				    "Line Out",	"LOUT",
				    "Line Out",	"ROUT",
				    "HP Jack",	"HPL",
				    "HP Jack",	"HPR",
				    "Speaker",	"SPP",
				    "Speaker",	"SPN";
	};


III - Misc Node definition
++++++++++++++++++++++++++


1)  - BOGUS BUS node
====================

i) Purpose
----------
No real meaning, just make the name of devices under bogus bus more reasonable.



2)  - GPIO KEY node
===================

i) Reference
------------
Please see Documentation/devicetree/bindings/gpio/gpio_keys.txt



3)  - ADC KEY node
====================


i) Properties
-------------

Required properties:
- compatible: should be "ambarella,input_adckey".
- amb,keymap: the key-code to be reported when the key is pressed. Each entry
  is organized as <ADC Keycode>, where ADC is packed as:
    channel << 28 | high_level << 16 | low_level
  Note: the resolution of ADC is 12 bits. And please see the "Note" in "ADC node".

ii) Example
-----------
	input_adckey {
		compatible = "ambarella,input_adckey";
		amb,keymap =
			/* channel 1 */
			<0x1fff0c1c 0>,   /* KEY_RESERVED */
			<0x1c1c0a8c 373>, /* KEY_MODE */
			<0x19600708 111>, /* KEY_DELETE */
			<0x154603e8 167>, /* KEY_RECORD */
			<0x1320012c 211>, /* KEY_HP */
			<0x10c80000 212>, /* KEY_CAMERA */
			/* channel 3 */
			<0x3fff0c1c 0>,   /* KEY_RESERVED */
			<0x3c1c0af0 139>, /* KEY_MENU */
			<0x3af007d0 106>, /* KEY_RIGHT */
			<0x37d003e8 105>, /* KEY_LEFT */
			<0x33e80190 108>, /* KEY_DOWN */
			<0x31900000 103>; /* KEY_UP */
	};



4)  - PWM BACKLIGHT node
========================

i) Reference
------------
Please see Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt

ii) Properties
--------------
Required properties:
- reg: specifies the pwm channel, no real meaning, just make the device name
  more reasonable. It take effect only when putting the PWM BACKLIGHT node under
  bogus_bus node.

