Contents:
 - ti-sci power domain, clock and reset controller support
 - DSP nodes for k2h/k2l/k2e evms
 - DSP CMA memory pools for k2h/k2l/k2e/keg evms
 - MMC/hsmmc suport for k2g
 - eDMA support for k2g
 - DCAN support for k2g
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJZlOAZAAoJEHJsHOdBp5c/ZNIP/3wCj+qddu92u7PKknIKptKQ
 zMKfXnSI01DnjBiuUM3qD6N/ELJCmYrFs2mdYhxjSPNNzKIhMwfg6fSHMWoAmFIN
 juP5VGCs61e2PWOOL74vw93f1+GEWawgG8VpreeFOgkmDXM1t2jHGFdNkOQH64to
 B6ONt423UodLIUp8VQzEcH5sluVHErv2OwizO/EWBKAnioQDlKUIS9KDG3eXb98E
 oVuoso4v8WIoZQj7Rtwpj7gAjnFxCl6DbEWsD5upJ1XLmUtAjqbnGe5PZihYQolJ
 Klc1qqk0gJPQxfkVzesEOn6k0J5y9+SwYELX9DGnno1yDCA98InCtYdTEDENKqlr
 dWAvlsbC0JjaHJnC9hU83Y62rMLZsO/fTV7EZU6Cu1M2Suu8O66LFjlnx77uB21g
 pES0y8bPFdre5JdHXwtvLtyeaDQR2HnTwhzS3Ul1VeMP6gjsiD4FoHAYeqE7tfOE
 dIaYnORlvMbDE5qP7aeFR3blIPIGXtMyI1ARD+NY4uLUtOUevttCQh+pSasaJ/pF
 HcYdL9aH1EvTGCS+WY+oes8+6oII1YQo/ASmV200OFHrg1Ucme9iEiaeFAqrR4rO
 tIXtcOSR4LMjiDHqRBtw5/Ei8hiprRz4070oVAHaKQ190XpmmQe2AkgthrgsKmXM
 THbU5V8bDRTvNKLmYU7U
 =9ZLH
 -----END PGP SIGNATURE-----

Merge tag 'keystone_dts_for_4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone into next/dt

Pull "ARM: Keystone DTS for 4.14" from Santosh Shilimkar:

Contents:
- ti-sci power domain, clock and reset controller support
- DSP nodes for k2h/k2l/k2e evms
- DSP CMA memory pools for k2h/k2l/k2e/keg evms
- MMC/hsmmc suport for k2g
- eDMA support for k2g
- DCAN support for k2g

* tag 'keystone_dts_for_4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone: (22 commits)
  ARM: dts: keystone-k2g-ice: Add and enable DSP CMA memory pool
  ARM: dts: keystone-k2g-evm: Add and enable DSP CMA memory pool
  ARM: dts: keystone-k2g: Add DSP node
  ARM: dts: k2g: Add DCAN nodes
  dt-bindings: net: c_can: Update binding for clock and power-domains property
  ARM: dts: keystone-k2g-evm: Enable MMC0 and MMC1
  ARM: dts: keystone-k2g: add MMC0 and MMC1 nodes
  ARM: dts: keystone-k2g: Add eDMA nodes
  dt-bindings: ti,omap-hsmmc: Add 66AK2G mmc controller
  dt-bindings: ti,edma: Add 66AK2G specific information
  ARM: dts: keystone-k2g: Add gpio nodes
  ARM: dts: keystone-k2e-evm: Add and enable DSP CMA memory pool
  ARM: dts: keystone-k2l-evm: Add and enable common DSP CMA memory pool
  ARM: dts: keystone-k2hk-evm: Add and enable common DSP CMA memory pool
  ARM: dts: keystone-k2e: Add DSP node
  ARM: dts: keystone-k2l: Add DSP nodes
  ARM: dts: keystone-k2hk: Add DSP nodes
  ARM: dts: keystone-k2g: Add TI SCI reset-controller node
  ARM: dts: keystone-k2g: Add ti-sci clock provider node
  ARM: dts: keystone-k2g: Add ti-sci power domain node
  ...
This commit is contained in:
Arnd Bergmann 2017-08-17 10:56:37 +02:00
Родитель 0ee72c9f25 6794d3771c
Коммит 2de8161251
14 изменённых файлов: 769 добавлений и 113 удалений

Просмотреть файл

@ -9,7 +9,12 @@ execute the actual DMA tansfer.
eDMA3 Channel Controller eDMA3 Channel Controller
Required properties: Required properties:
- compatible: "ti,edma3-tpcc" for the channel controller(s) --------------------
- compatible: Should be:
- "ti,edma3-tpcc" for the channel controller(s) on OMAP,
AM33xx and AM43xx SoCs.
- "ti,k2g-edma3-tpcc", "ti,edma3-tpcc" for the
channel controller(s) on 66AK2G.
- #dma-cells: Should be set to <2>. The first number is the DMA request - #dma-cells: Should be set to <2>. The first number is the DMA request
number and the second is the TC the channel is serviced on. number and the second is the TC the channel is serviced on.
- reg: Memory map of eDMA CC - reg: Memory map of eDMA CC
@ -19,8 +24,19 @@ Required properties:
- ti,tptcs: List of TPTCs associated with the eDMA in the following form: - ti,tptcs: List of TPTCs associated with the eDMA in the following form:
<&tptc_phandle TC_priority_number>. The highest priority is 0. <&tptc_phandle TC_priority_number>. The highest priority is 0.
SoC-specific Required properties:
--------------------------------
The following are mandatory properties for OMAP, AM33xx and AM43xx SoCs only:
- ti,hwmods: Name of the hwmods associated to the eDMA CC.
The following are mandatory properties for 66AK2G SoCs only:
- power-domains:Should contain a phandle to a PM domain provider node
and an args specifier containing the device id
value. This property is as per the binding,
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
Optional properties: Optional properties:
- ti,hwmods: Name of the hwmods associated to the eDMA CC -------------------
- ti,edma-memcpy-channels: List of channels allocated to be used for memcpy, iow - ti,edma-memcpy-channels: List of channels allocated to be used for memcpy, iow
these channels will be SW triggered channels. See example. these channels will be SW triggered channels. See example.
- ti,edma-reserved-slot-ranges: PaRAM slot ranges which should not be used by - ti,edma-reserved-slot-ranges: PaRAM slot ranges which should not be used by
@ -31,17 +47,34 @@ Optional properties:
eDMA3 Transfer Controller eDMA3 Transfer Controller
Required properties: Required properties:
- compatible: "ti,edma3-tptc" for the transfer controller(s) --------------------
- compatible: Should be:
- "ti,edma3-tptc" for the transfer controller(s) on OMAP,
AM33xx and AM43xx SoCs.
- "ti,k2g-edma3-tptc", "ti,edma3-tptc" for the
transfer controller(s) on 66AK2G.
- reg: Memory map of eDMA TC - reg: Memory map of eDMA TC
- interrupts: Interrupt number for TCerrint. - interrupts: Interrupt number for TCerrint.
SoC-specific Required properties:
--------------------------------
The following are mandatory properties for OMAP, AM33xx and AM43xx SoCs only:
- ti,hwmods: Name of the hwmods associated to the eDMA TC.
The following are mandatory properties for 66AK2G SoCs only:
- power-domains:Should contain a phandle to a PM domain provider node
and an args specifier containing the device id
value. This property is as per the binding,
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
Optional properties: Optional properties:
- ti,hwmods: Name of the hwmods associated to the given eDMA TC -------------------
- interrupt-names: "edma3_tcerrint" - interrupt-names: "edma3_tcerrint"
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Example: Examples:
1.
edma: edma@49000000 { edma: edma@49000000 {
compatible = "ti,edma3-tpcc"; compatible = "ti,edma3-tpcc";
ti,hwmods = "tpcc"; ti,hwmods = "tpcc";
@ -109,6 +142,58 @@ mcasp0: mcasp@48038000 {
dma-names = "tx", "rx"; dma-names = "tx", "rx";
}; };
2.
edma1: edma@02728000 {
compatible = "ti,k2g-edma3-tpcc", "ti,edma3-tpcc";
reg = <0x02728000 0x8000>;
reg-names = "edma3_cc";
interrupts = <GIC_SPI 208 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 219 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 220 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "edma3_ccint", "emda3_mperr",
"edma3_ccerrint";
dma-requests = <64>;
#dma-cells = <2>;
ti,tptcs = <&edma1_tptc0 7>, <&edma1_tptc1 0>;
/*
* memcpy is disabled, can be enabled with:
* ti,edma-memcpy-channels = <12 13 14 15>;
* for example.
*/
power-domains = <&k2g_pds 0x4f>;
};
edma1_tptc0: tptc@027b0000 {
compatible = "ti,k2g-edma3-tptc", "ti,edma3-tptc";
reg = <0x027b0000 0x400>;
power-domains = <&k2g_pds 0x4f>;
};
edma1_tptc1: tptc@027b8000 {
compatible = "ti, k2g-edma3-tptc", "ti,edma3-tptc";
reg = <0x027b8000 0x400>;
power-domains = <&k2g_pds 0x4f>;
};
mmc0: mmc@23000000 {
compatible = "ti,k2g-hsmmc", "ti,omap4-hsmmc";
reg = <0x23000000 0x400>;
interrupts = <GIC_SPI 96 IRQ_TYPE_EDGE_RISING>;
dmas = <&edma1 24 0>, <&edma1 25 0>;
dma-names = "tx", "rx";
bus-width = <4>;
ti,needs-special-reset;
no-1-8-v;
max-frequency = <96000000>;
power-domains = <&k2g_pds 0xb>;
clocks = <&k2g_clks 0xb 1>, <&k2g_clks 0xb 2>;
clock-names = "fck", "mmchsdb_fck";
status = "disabled";
};
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
DEPRECATED binding, new DTS files must use the ti,edma3-tpcc/ti,edma3-tptc DEPRECATED binding, new DTS files must use the ti,edma3-tpcc/ti,edma3-tptc
binding. binding.

Просмотреть файл

@ -1,33 +1,55 @@
* TI Highspeed MMC host controller for OMAP * TI Highspeed MMC host controller for OMAP and 66AK2G family.
The Highspeed MMC Host Controller on TI OMAP family The Highspeed MMC Host Controller on TI OMAP and 66AK2G family
provides an interface for MMC, SD, and SDIO types of memory cards. provides an interface for MMC, SD, and SDIO types of memory cards.
This file documents differences between the core properties described This file documents differences between the core properties described
by mmc.txt and the properties used by the omap_hsmmc driver. by mmc.txt and the properties used by the omap_hsmmc driver.
Required properties: Required properties:
--------------------
- compatible: - compatible:
Should be "ti,omap2-hsmmc", for OMAP2 controllers Should be "ti,omap2-hsmmc", for OMAP2 controllers
Should be "ti,omap3-hsmmc", for OMAP3 controllers Should be "ti,omap3-hsmmc", for OMAP3 controllers
Should be "ti,omap3-pre-es3-hsmmc" for OMAP3 controllers pre ES3.0 Should be "ti,omap3-pre-es3-hsmmc" for OMAP3 controllers pre ES3.0
Should be "ti,omap4-hsmmc", for OMAP4 controllers Should be "ti,omap4-hsmmc", for OMAP4 controllers
Should be "ti,am33xx-hsmmc", for AM335x controllers Should be "ti,am33xx-hsmmc", for AM335x controllers
- ti,hwmods: Must be "mmc<n>", n is controller instance starting 1 Should be "ti,k2g-hsmmc", "ti,omap4-hsmmc" for 66AK2G controllers.
SoC specific required properties:
---------------------------------
The following are mandatory properties for OMAPs, AM33xx and AM43xx SoCs only:
- ti,hwmods: Must be "mmc<n>", n is controller instance starting 1.
The following are mandatory properties for 66AK2G SoCs only:
- power-domains:Should contain a phandle to a PM domain provider node
and an args specifier containing the MMC device id
value. This property is as per the binding,
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
- clocks: Must contain an entry for each entry in clock-names. Should
be defined as per the he appropriate clock bindings consumer
usage in Documentation/devicetree/bindings/clock/ti,sci-clk.txt
- clock-names: Shall be "fck" for the functional clock,
and "mmchsdb_fck" for the debounce clock.
Optional properties: Optional properties:
ti,dual-volt: boolean, supports dual voltage cards --------------------
<supply-name>-supply: phandle to the regulator device tree node - ti,dual-volt: boolean, supports dual voltage cards
"supply-name" examples are "vmmc", "vmmc_aux"(deprecated)/"vqmmc" etc - <supply-name>-supply: phandle to the regulator device tree node
ti,non-removable: non-removable slot (like eMMC) "supply-name" examples are "vmmc",
ti,needs-special-reset: Requires a special softreset sequence "vmmc_aux"(deprecated)/"vqmmc" etc
ti,needs-special-hs-handling: HSMMC IP needs special setting for handling High Speed - ti,non-removable: non-removable slot (like eMMC)
dmas: List of DMA specifiers with the controller specific format - ti,needs-special-reset: Requires a special softreset sequence
as described in the generic DMA client binding. A tx and rx - ti,needs-special-hs-handling: HSMMC IP needs special setting
specifier is required. for handling High Speed
dma-names: List of DMA request names. These strings correspond - dmas: List of DMA specifiers with the controller specific
1:1 with the DMA specifiers listed in dmas. The string naming is format as described in the generic DMA client
to be "rx" and "tx" for RX and TX DMA requests, respectively. binding. A tx and rx specifier is required.
- dma-names: List of DMA request names. These strings correspond
1:1 with the DMA specifiers listed in dmas.
The string naming is to be "rx" and "tx" for
RX and TX DMA requests, respectively.
Examples: Examples:

Просмотреть файл

@ -11,9 +11,20 @@ Required properties:
- interrupts : property with a value describing the interrupt - interrupts : property with a value describing the interrupt
number number
Optional properties: The following are mandatory properties for DRA7x, AM33xx and AM43xx SoCs only:
- ti,hwmods : Must be "d_can<n>" or "c_can<n>", n being the - ti,hwmods : Must be "d_can<n>" or "c_can<n>", n being the
instance number instance number
The following are mandatory properties for Keystone 2 66AK2G SoCs only:
- power-domains : Should contain a phandle to a PM domain provider node
and an args specifier containing the DCAN device id
value. This property is as per the binding,
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
- clocks : CAN functional clock phandle. This property is as per the
binding,
Documentation/devicetree/bindings/clock/ti,sci-clk.txt
Optional properties:
- syscon-raminit : Handle to system control region that contains the - syscon-raminit : Handle to system control region that contains the
RAMINIT register, register offset to the RAMINIT RAMINIT register, register offset to the RAMINIT
register and the CAN instance number (0 offset). register and the CAN instance number (0 offset).

Просмотреть файл

@ -46,12 +46,13 @@ Required Properties:
- power-domains: phandle pointing to the corresponding PM domain node - power-domains: phandle pointing to the corresponding PM domain node
and an ID representing the device. and an ID representing the device.
See dt-bindings/genpd/k2g.h for the list of valid identifiers for k2g. See http://processors.wiki.ti.com/index.php/TISCI#66AK2G02_Data for the list
of valid identifiers for k2g.
Example (K2G): Example (K2G):
-------------------- --------------------
uart0: serial@02530c00 { uart0: serial@02530c00 {
compatible = "ns16550a"; compatible = "ns16550a";
... ...
power-domains = <&k2g_pds K2G_DEV_UART0>; power-domains = <&k2g_pds 0x002c>;
}; };

Просмотреть файл

@ -16,6 +16,19 @@
compatible = "ti,k2e-evm", "ti,k2e", "ti,keystone"; compatible = "ti,k2e-evm", "ti,k2e", "ti,keystone";
model = "Texas Instruments Keystone 2 Edison EVM"; model = "Texas Instruments Keystone 2 Edison EVM";
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
dsp_common_memory: dsp-common-memory@81f800000 {
compatible = "shared-dma-pool";
reg = <0x00000008 0x1f800000 0x00000000 0x800000>;
reusable;
status = "okay";
};
};
soc { soc {
clocks { clocks {
@ -160,3 +173,8 @@
reg = <1>; reg = <1>;
}; };
}; };
&dsp0 {
memory-region = <&dsp_common_memory>;
status = "okay";
};

Просмотреть файл

@ -45,6 +45,10 @@
}; };
}; };
aliases {
rproc0 = &dsp0;
};
soc { soc {
/include/ "keystone-k2e-clocks.dtsi" /include/ "keystone-k2e-clocks.dtsi"
@ -114,6 +118,22 @@
gpio,syscon-dev = <&devctrl 0x240>; gpio,syscon-dev = <&devctrl 0x240>;
}; };
dsp0: dsp@10800000 {
compatible = "ti,k2e-dsp";
reg = <0x10800000 0x00080000>,
<0x10e00000 0x00008000>,
<0x10f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem0>;
ti,syscon-dev = <&devctrl 0x844>;
resets = <&pscrst 0>;
interrupt-parent = <&kirq0>;
interrupts = <0 8>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio0 27 0>;
status = "disabled";
};
pcie1: pcie@21020000 { pcie1: pcie@21020000 {
compatible = "ti,keystone-pcie","snps,dw-pcie"; compatible = "ti,keystone-pcie","snps,dw-pcie";
clocks = <&clkpcie1>; clocks = <&clkpcie1>;

Просмотреть файл

@ -25,6 +25,26 @@
reg = <0x00000008 0x00000000 0x00000000 0x80000000>; reg = <0x00000008 0x00000000 0x00000000 0x80000000>;
}; };
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
dsp_common_memory: dsp-common-memory@81f800000 {
compatible = "shared-dma-pool";
reg = <0x00000008 0x1f800000 0x00000000 0x800000>;
reusable;
status = "okay";
};
};
vcc3v3_dcin_reg: fixedregulator-vcc3v3-dcin {
compatible = "regulator-fixed";
regulator-name = "mmc0_fixed";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
}; };
&k2g_pinctrl { &k2g_pinctrl {
@ -34,6 +54,33 @@
K2G_CORE_IOPAD(0x11d0) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */ K2G_CORE_IOPAD(0x11d0) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
>; >;
}; };
mmc0_pins: pinmux_mmc0_pins {
pinctrl-single,pins = <
K2G_CORE_IOPAD(0x1300) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE2) /* mmc0_dat3.mmc0_dat3 */
K2G_CORE_IOPAD(0x1304) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE2) /* mmc0_dat2.mmc0_dat2 */
K2G_CORE_IOPAD(0x1308) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE2) /* mmc0_dat1.mmc0_dat1 */
K2G_CORE_IOPAD(0x130c) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE2) /* mmc0_dat0.mmc0_dat0 */
K2G_CORE_IOPAD(0x1310) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE2) /* mmc0_clk.mmc0_clk */
K2G_CORE_IOPAD(0x1314) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE2) /* mmc0_cmd.mmc0_cmd */
K2G_CORE_IOPAD(0x12ec) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE3) /* mmc0_sdcd.gpio1_12 */
>;
};
mmc1_pins: pinmux_mmc1_pins {
pinctrl-single,pins = <
K2G_CORE_IOPAD(0x10ec) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE0) /* mmc1_dat7.mmc1_dat7 */
K2G_CORE_IOPAD(0x10f0) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE0) /* mmc1_dat6.mmc1_dat6 */
K2G_CORE_IOPAD(0x10f4) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE0) /* mmc1_dat5.mmc1_dat5 */
K2G_CORE_IOPAD(0x10f8) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE0) /* mmc1_dat4.mmc1_dat4 */
K2G_CORE_IOPAD(0x10fc) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE0) /* mmc1_dat3.mmc1_dat3 */
K2G_CORE_IOPAD(0x1100) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE0) /* mmc1_dat2.mmc1_dat2 */
K2G_CORE_IOPAD(0x1104) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE0) /* mmc1_dat1.mmc1_dat1 */
K2G_CORE_IOPAD(0x1108) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE0) /* mmc1_dat0.mmc1_dat0 */
K2G_CORE_IOPAD(0x110c) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE0) /* mmc1_clk.mmc1_clk */
K2G_CORE_IOPAD(0x1110) (BUFFER_CLASS_B | PIN_PULLUP | MUX_MODE0) /* mmc1_cmd.mmc1_cmd */
>;
};
}; };
&uart0 { &uart0 {
@ -41,3 +88,27 @@
pinctrl-0 = <&uart0_pins>; pinctrl-0 = <&uart0_pins>;
status = "okay"; status = "okay";
}; };
&gpio1 {
status = "okay";
};
&mmc0 {
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins>;
vmmc-supply = <&vcc3v3_dcin_reg>;
cd-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
status = "okay";
};
&mmc1 {
pinctrl-names = "default";
pinctrl-0 = <&mmc1_pins>;
vmmc-supply = <&vcc3v3_dcin_reg>; /* VCC3V3_EMMC is connected to VCC3V3_DCIN */
status = "okay";
};
&dsp0 {
memory-region = <&dsp_common_memory>;
status = "okay";
};

Просмотреть файл

@ -17,6 +17,19 @@
device_type = "memory"; device_type = "memory";
reg = <0x00000008 0x00000000 0x00000000 0x20000000>; reg = <0x00000008 0x00000000 0x00000000 0x20000000>;
}; };
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
dsp_common_memory: dsp-common-memory@81f800000 {
compatible = "shared-dma-pool";
reg = <0x00000008 0x1f800000 0x00000000 0x800000>;
reusable;
status = "okay";
};
};
}; };
&k2g_pinctrl { &k2g_pinctrl {
@ -33,3 +46,8 @@
pinctrl-0 = <&uart0_pins>; pinctrl-0 = <&uart0_pins>;
status = "okay"; status = "okay";
}; };
&dsp0 {
memory-region = <&dsp_common_memory>;
status = "okay";
};

Просмотреть файл

@ -15,6 +15,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/pinctrl/keystone.h> #include <dt-bindings/pinctrl/keystone.h>
#include <dt-bindings/gpio/gpio.h>
/ { / {
compatible = "ti,k2g","ti,keystone"; compatible = "ti,k2g","ti,keystone";
@ -27,6 +28,7 @@
aliases { aliases {
serial0 = &uart0; serial0 = &uart0;
rproc0 = &dsp0;
}; };
cpus { cpus {
@ -113,6 +115,24 @@
status = "disabled"; status = "disabled";
}; };
dcan0: can@0260B200 {
compatible = "ti,am4372-d_can", "ti,am3352-d_can";
reg = <0x0260B200 0x200>;
interrupts = <GIC_SPI 190 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
power-domains = <&k2g_pds 0x0008>;
clocks = <&k2g_clks 0x0008 1>;
};
dcan1: can@0260B400 {
compatible = "ti,am4372-d_can", "ti,am3352-d_can";
reg = <0x0260B400 0x200>;
interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
power-domains = <&k2g_pds 0x0009>;
clocks = <&k2g_clks 0x0009 1>;
};
kirq0: keystone_irq@026202a0 { kirq0: keystone_irq@026202a0 {
compatible = "ti,keystone-irq"; compatible = "ti,keystone-irq";
interrupts = <GIC_SPI 1 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 1 IRQ_TYPE_EDGE_RISING>;
@ -128,6 +148,22 @@
gpio,syscon-dev = <&devctrl 0x240>; gpio,syscon-dev = <&devctrl 0x240>;
}; };
dsp0: dsp@10800000 {
compatible = "ti,k2g-dsp";
reg = <0x10800000 0x00100000>,
<0x10e00000 0x00008000>,
<0x10f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
power-domains = <&k2g_pds 0x0046>;
ti,syscon-dev = <&devctrl 0x844>;
resets = <&k2g_reset 0x0046 0x1>;
interrupt-parent = <&kirq0>;
interrupts = <0 8>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio0 27 0>;
status = "disabled";
};
msgmgr: msgmgr@02a00000 { msgmgr: msgmgr@02a00000 {
compatible = "ti,k2g-message-manager"; compatible = "ti,k2g-message-manager";
#mbox-cells = <2>; #mbox-cells = <2>;
@ -139,5 +175,173 @@
interrupts = <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH>; <GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH>;
}; };
pmmc: pmmc@02921c00 {
compatible = "ti,k2g-sci";
/*
* In case of rare platforms that does not use k2g as
* system master, use /delete-property/
*/
ti,system-reboot-controller;
mbox-names = "rx", "tx";
mboxes= <&msgmgr 5 2>,
<&msgmgr 0 0>;
reg-names = "debug_messages";
reg = <0x02921c00 0x400>;
k2g_pds: power-controller {
compatible = "ti,sci-pm-domain";
#power-domain-cells = <1>;
};
k2g_clks: clocks {
compatible = "ti,k2g-sci-clk";
#clock-cells = <2>;
};
k2g_reset: reset-controller {
compatible = "ti,sci-reset";
#reset-cells = <2>;
};
};
gpio0: gpio@2603000 {
compatible = "ti,k2g-gpio", "ti,keystone-gpio";
reg = <0x02603000 0x100>;
gpio-controller;
#gpio-cells = <2>;
interrupts = <GIC_SPI 432 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 433 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 434 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 435 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 436 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 437 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 438 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 439 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 440 IRQ_TYPE_EDGE_RISING>;
interrupt-controller;
#interrupt-cells = <2>;
ti,ngpio = <144>;
ti,davinci-gpio-unbanked = <0>;
clocks = <&k2g_clks 0x001b 0x0>;
clock-names = "gpio";
};
gpio1: gpio@260a000 {
compatible = "ti,k2g-gpio", "ti,keystone-gpio";
reg = <0x0260a000 0x100>;
gpio-controller;
#gpio-cells = <2>;
interrupts = <GIC_SPI 442 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 443 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 444 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 445 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 446 IRQ_TYPE_EDGE_RISING>;
interrupt-controller;
#interrupt-cells = <2>;
ti,ngpio = <68>;
ti,davinci-gpio-unbanked = <0>;
clocks = <&k2g_clks 0x001c 0x0>;
clock-names = "gpio";
};
edma0: edma@02700000 {
compatible = "ti,k2g-edma3-tpcc", "ti,edma3-tpcc";
reg = <0x02700000 0x8000>;
reg-names = "edma3_cc";
interrupts = <GIC_SPI 200 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 216 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 217 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "edma3_ccint", "emda3_mperr",
"edma3_ccerrint";
dma-requests = <64>;
#dma-cells = <2>;
ti,tptcs = <&edma0_tptc0 7>, <&edma0_tptc1 0>;
ti,edma-memcpy-channels = <32 33 34 35>;
power-domains = <&k2g_pds 0x3f>;
};
edma0_tptc0: tptc@02760000 {
compatible = "ti,k2g-edma3-tptc", "ti,edma3-tptc";
reg = <0x02760000 0x400>;
power-domains = <&k2g_pds 0x3f>;
};
edma0_tptc1: tptc@02768000 {
compatible = "ti,k2g-edma3-tptc", "ti,edma3-tptc";
reg = <0x02768000 0x400>;
power-domains = <&k2g_pds 0x3f>;
};
edma1: edma@02728000 {
compatible = "ti,k2g-edma3-tpcc", "ti,edma3-tpcc";
reg = <0x02728000 0x8000>;
reg-names = "edma3_cc";
interrupts = <GIC_SPI 208 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 219 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 220 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "edma3_ccint", "emda3_mperr",
"edma3_ccerrint";
dma-requests = <64>;
#dma-cells = <2>;
ti,tptcs = <&edma1_tptc0 7>, <&edma1_tptc1 0>;
/*
* memcpy is disabled, can be enabled with:
* ti,edma-memcpy-channels = <12 13 14 15>;
* for example.
*/
power-domains = <&k2g_pds 0x4f>;
};
edma1_tptc0: tptc@027b0000 {
compatible = "ti,k2g-edma3-tptc", "ti,edma3-tptc";
reg = <0x027b0000 0x400>;
power-domains = <&k2g_pds 0x4f>;
};
edma1_tptc1: tptc@027b8000 {
compatible = "ti,k2g-edma3-tptc", "ti,edma3-tptc";
reg = <0x027b8000 0x400>;
power-domains = <&k2g_pds 0x4f>;
};
mmc0: mmc@23000000 {
compatible = "ti,k2g-hsmmc", "ti,omap4-hsmmc";
reg = <0x23000000 0x400>;
interrupts = <GIC_SPI 96 IRQ_TYPE_EDGE_RISING>;
dmas = <&edma1 24 0>, <&edma1 25 0>;
dma-names = "tx", "rx";
bus-width = <4>;
ti,needs-special-reset;
no-1-8-v;
max-frequency = <96000000>;
power-domains = <&k2g_pds 0xb>;
clocks = <&k2g_clks 0xb 1>, <&k2g_clks 0xb 2>;
clock-names = "fck", "mmchsdb_fck";
status = "disabled";
};
mmc1: mmc@23100000 {
compatible = "ti,k2g-hsmmc", "ti,omap4-hsmmc";
reg = <0x23100000 0x400>;
interrupts = <GIC_SPI 97 IRQ_TYPE_EDGE_RISING>;
dmas = <&edma1 26 0>, <&edma1 27 0>;
dma-names = "tx", "rx";
bus-width = <8>;
ti,needs-special-reset;
ti,non-removable;
max-frequency = <96000000>;
power-domains = <&k2g_pds 0xc>;
clocks = <&k2g_clks 0xc 1>, <&k2g_clks 0xc 2>;
clock-names = "fck", "mmchsdb_fck";
status = "disabled";
};
}; };
}; };

Просмотреть файл

@ -16,6 +16,19 @@
compatible = "ti,k2hk-evm", "ti,k2hk", "ti,keystone"; compatible = "ti,k2hk-evm", "ti,k2hk", "ti,keystone";
model = "Texas Instruments Keystone 2 Kepler/Hawking EVM"; model = "Texas Instruments Keystone 2 Kepler/Hawking EVM";
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
dsp_common_memory: dsp-common-memory@81f800000 {
compatible = "shared-dma-pool";
reg = <0x00000008 0x1f800000 0x00000000 0x800000>;
reusable;
status = "okay";
};
};
soc { soc {
clocks { clocks {
refclksys: refclksys { refclksys: refclksys {
@ -184,3 +197,43 @@
reg = <1>; reg = <1>;
}; };
}; };
&dsp0 {
memory-region = <&dsp_common_memory>;
status = "okay";
};
&dsp1 {
memory-region = <&dsp_common_memory>;
status = "okay";
};
&dsp2 {
memory-region = <&dsp_common_memory>;
status = "okay";
};
&dsp3 {
memory-region = <&dsp_common_memory>;
status = "okay";
};
&dsp4 {
memory-region = <&dsp_common_memory>;
status = "okay";
};
&dsp5 {
memory-region = <&dsp_common_memory>;
status = "okay";
};
&dsp6 {
memory-region = <&dsp_common_memory>;
status = "okay";
};
&dsp7 {
memory-region = <&dsp_common_memory>;
status = "okay";
};

Просмотреть файл

@ -45,6 +45,17 @@
}; };
}; };
aliases {
rproc0 = &dsp0;
rproc1 = &dsp1;
rproc2 = &dsp2;
rproc3 = &dsp3;
rproc4 = &dsp4;
rproc5 = &dsp5;
rproc6 = &dsp6;
rproc7 = &dsp7;
};
soc { soc {
/include/ "keystone-k2hk-clocks.dtsi" /include/ "keystone-k2hk-clocks.dtsi"
@ -134,6 +145,134 @@
gpio,syscon-dev = <&devctrl 0x25c>; gpio,syscon-dev = <&devctrl 0x25c>;
}; };
dsp0: dsp@10800000 {
compatible = "ti,k2hk-dsp";
reg = <0x10800000 0x00100000>,
<0x10e00000 0x00008000>,
<0x10f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem0>;
ti,syscon-dev = <&devctrl 0x40>;
resets = <&pscrst 0>;
interrupt-parent = <&kirq0>;
interrupts = <0 8>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio0 27 0>;
status = "disabled";
};
dsp1: dsp@11800000 {
compatible = "ti,k2hk-dsp";
reg = <0x11800000 0x00100000>,
<0x11e00000 0x00008000>,
<0x11f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem1>;
ti,syscon-dev = <&devctrl 0x44>;
resets = <&pscrst 1>;
interrupt-parent = <&kirq0>;
interrupts = <1 9>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio1 27 0>;
status = "disabled";
};
dsp2: dsp@12800000 {
compatible = "ti,k2hk-dsp";
reg = <0x12800000 0x00100000>,
<0x12e00000 0x00008000>,
<0x12f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem2>;
ti,syscon-dev = <&devctrl 0x48>;
resets = <&pscrst 2>;
interrupt-parent = <&kirq0>;
interrupts = <2 10>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio2 27 0>;
status = "disabled";
};
dsp3: dsp@13800000 {
compatible = "ti,k2hk-dsp";
reg = <0x13800000 0x00100000>,
<0x13e00000 0x00008000>,
<0x13f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem3>;
ti,syscon-dev = <&devctrl 0x4c>;
resets = <&pscrst 3>;
interrupt-parent = <&kirq0>;
interrupts = <3 11>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio3 27 0>;
status = "disabled";
};
dsp4: dsp@14800000 {
compatible = "ti,k2hk-dsp";
reg = <0x14800000 0x00100000>,
<0x14e00000 0x00008000>,
<0x14f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem4>;
ti,syscon-dev = <&devctrl 0x50>;
resets = <&pscrst 4>;
interrupt-parent = <&kirq0>;
interrupts = <4 12>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio4 27 0>;
status = "disabled";
};
dsp5: dsp@15800000 {
compatible = "ti,k2hk-dsp";
reg = <0x15800000 0x00100000>,
<0x15e00000 0x00008000>,
<0x15f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem5>;
ti,syscon-dev = <&devctrl 0x54>;
resets = <&pscrst 5>;
interrupt-parent = <&kirq0>;
interrupts = <5 13>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio5 27 0>;
status = "disabled";
};
dsp6: dsp@16800000 {
compatible = "ti,k2hk-dsp";
reg = <0x16800000 0x00100000>,
<0x16e00000 0x00008000>,
<0x16f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem6>;
ti,syscon-dev = <&devctrl 0x58>;
resets = <&pscrst 6>;
interrupt-parent = <&kirq0>;
interrupts = <6 14>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio6 27 0>;
status = "disabled";
};
dsp7: dsp@17800000 {
compatible = "ti,k2hk-dsp";
reg = <0x17800000 0x00100000>,
<0x17e00000 0x00008000>,
<0x17f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem7>;
ti,syscon-dev = <&devctrl 0x5c>;
resets = <&pscrst 7>;
interrupt-parent = <&kirq0>;
interrupts = <7 15>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio7 27 0>;
status = "disabled";
};
mdio: mdio@02090300 { mdio: mdio@02090300 {
compatible = "ti,keystone_mdio", "ti,davinci_mdio"; compatible = "ti,keystone_mdio", "ti,davinci_mdio";
#address-cells = <1>; #address-cells = <1>;

Просмотреть файл

@ -16,6 +16,19 @@
compatible = "ti,k2l-evm", "ti,k2l", "ti,keystone"; compatible = "ti,k2l-evm", "ti,k2l", "ti,keystone";
model = "Texas Instruments Keystone 2 Lamarr EVM"; model = "Texas Instruments Keystone 2 Lamarr EVM";
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
dsp_common_memory: dsp-common-memory@81f800000 {
compatible = "shared-dma-pool";
reg = <0x00000008 0x1f800000 0x00000000 0x800000>;
reusable;
status = "okay";
};
};
soc { soc {
clocks { clocks {
refclksys: refclksys { refclksys: refclksys {
@ -133,3 +146,23 @@
reg = <1>; reg = <1>;
}; };
}; };
&dsp0 {
memory-region = <&dsp_common_memory>;
status = "okay";
};
&dsp1 {
memory-region = <&dsp_common_memory>;
status = "okay";
};
&dsp2 {
memory-region = <&dsp_common_memory>;
status = "okay";
};
&dsp3 {
memory-region = <&dsp_common_memory>;
status = "okay";
};

Просмотреть файл

@ -33,6 +33,13 @@
}; };
}; };
aliases {
rproc0 = &dsp0;
rproc1 = &dsp1;
rproc2 = &dsp2;
rproc3 = &dsp3;
};
soc { soc {
/include/ "keystone-k2l-clocks.dtsi" /include/ "keystone-k2l-clocks.dtsi"
@ -268,6 +275,70 @@
gpio,syscon-dev = <&devctrl 0x24c>; gpio,syscon-dev = <&devctrl 0x24c>;
}; };
dsp0: dsp@10800000 {
compatible = "ti,k2l-dsp";
reg = <0x10800000 0x00100000>,
<0x10e00000 0x00008000>,
<0x10f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem0>;
ti,syscon-dev = <&devctrl 0x844>;
resets = <&pscrst 0>;
interrupt-parent = <&kirq0>;
interrupts = <0 8>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio0 27 0>;
status = "disabled";
};
dsp1: dsp@11800000 {
compatible = "ti,k2l-dsp";
reg = <0x11800000 0x00100000>,
<0x11e00000 0x00008000>,
<0x11f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem1>;
ti,syscon-dev = <&devctrl 0x848>;
resets = <&pscrst 1>;
interrupt-parent = <&kirq0>;
interrupts = <1 9>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio1 27 0>;
status = "disabled";
};
dsp2: dsp@12800000 {
compatible = "ti,k2l-dsp";
reg = <0x12800000 0x00100000>,
<0x12e00000 0x00008000>,
<0x12f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem2>;
ti,syscon-dev = <&devctrl 0x84c>;
resets = <&pscrst 2>;
interrupt-parent = <&kirq0>;
interrupts = <2 10>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio2 27 0>;
status = "disabled";
};
dsp3: dsp@13800000 {
compatible = "ti,k2l-dsp";
reg = <0x13800000 0x00100000>,
<0x13e00000 0x00008000>,
<0x13f00000 0x00008000>;
reg-names = "l2sram", "l1pram", "l1dram";
clocks = <&clkgem3>;
ti,syscon-dev = <&devctrl 0x850>;
resets = <&pscrst 3>;
interrupt-parent = <&kirq0>;
interrupts = <3 11>;
interrupt-names = "vring", "exception";
kick-gpios = <&dspgpio3 27 0>;
status = "disabled";
};
mdio: mdio@26200f00 { mdio: mdio@26200f00 {
compatible = "ti,keystone_mdio", "ti,davinci_mdio"; compatible = "ti,keystone_mdio", "ti,davinci_mdio";
#address-cells = <1>; #address-cells = <1>;

Просмотреть файл

@ -1,90 +0,0 @@
/*
* TI K2G SoC Device definitions
*
* Copyright (C) 2015-2017 Texas Instruments Incorporated - http://www.ti.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; either 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.
*/
#ifndef _DT_BINDINGS_GENPD_K2G_H
#define _DT_BINDINGS_GENPD_K2G_H
/* Documented in http://processors.wiki.ti.com/index.php/TISCI */
#define K2G_DEV_PMMC0 0x0000
#define K2G_DEV_MLB0 0x0001
#define K2G_DEV_DSS0 0x0002
#define K2G_DEV_MCBSP0 0x0003
#define K2G_DEV_MCASP0 0x0004
#define K2G_DEV_MCASP1 0x0005
#define K2G_DEV_MCASP2 0x0006
#define K2G_DEV_DCAN0 0x0008
#define K2G_DEV_DCAN1 0x0009
#define K2G_DEV_EMIF0 0x000a
#define K2G_DEV_MMCHS0 0x000b
#define K2G_DEV_MMCHS1 0x000c
#define K2G_DEV_GPMC0 0x000d
#define K2G_DEV_ELM0 0x000e
#define K2G_DEV_SPI0 0x0010
#define K2G_DEV_SPI1 0x0011
#define K2G_DEV_SPI2 0x0012
#define K2G_DEV_SPI3 0x0013
#define K2G_DEV_ICSS0 0x0014
#define K2G_DEV_ICSS1 0x0015
#define K2G_DEV_USB0 0x0016
#define K2G_DEV_USB1 0x0017
#define K2G_DEV_NSS0 0x0018
#define K2G_DEV_PCIE0 0x0019
#define K2G_DEV_GPIO0 0x001b
#define K2G_DEV_GPIO1 0x001c
#define K2G_DEV_TIMER64_0 0x001d
#define K2G_DEV_TIMER64_1 0x001e
#define K2G_DEV_TIMER64_2 0x001f
#define K2G_DEV_TIMER64_3 0x0020
#define K2G_DEV_TIMER64_4 0x0021
#define K2G_DEV_TIMER64_5 0x0022
#define K2G_DEV_TIMER64_6 0x0023
#define K2G_DEV_MSGMGR0 0x0025
#define K2G_DEV_BOOTCFG0 0x0026
#define K2G_DEV_ARM_BOOTROM0 0x0027
#define K2G_DEV_DSP_BOOTROM0 0x0029
#define K2G_DEV_DEBUGSS0 0x002b
#define K2G_DEV_UART0 0x002c
#define K2G_DEV_UART1 0x002d
#define K2G_DEV_UART2 0x002e
#define K2G_DEV_EHRPWM0 0x002f
#define K2G_DEV_EHRPWM1 0x0030
#define K2G_DEV_EHRPWM2 0x0031
#define K2G_DEV_EHRPWM3 0x0032
#define K2G_DEV_EHRPWM4 0x0033
#define K2G_DEV_EHRPWM5 0x0034
#define K2G_DEV_EQEP0 0x0035
#define K2G_DEV_EQEP1 0x0036
#define K2G_DEV_EQEP2 0x0037
#define K2G_DEV_ECAP0 0x0038
#define K2G_DEV_ECAP1 0x0039
#define K2G_DEV_I2C0 0x003a
#define K2G_DEV_I2C1 0x003b
#define K2G_DEV_I2C2 0x003c
#define K2G_DEV_EDMA0 0x003f
#define K2G_DEV_SEMAPHORE0 0x0040
#define K2G_DEV_INTC0 0x0041
#define K2G_DEV_GIC0 0x0042
#define K2G_DEV_QSPI0 0x0043
#define K2G_DEV_ARM_64B_COUNTER0 0x0044
#define K2G_DEV_TETRIS0 0x0045
#define K2G_DEV_CGEM0 0x0046
#define K2G_DEV_MSMC0 0x0047
#define K2G_DEV_CBASS0 0x0049
#define K2G_DEV_BOARD0 0x004c
#define K2G_DEV_EDMA1 0x004f
#endif