You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'u300-multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson into next/soc
From Linus Walleij: Device Tree and Multiplatform support for U300: - Add devicetree support to timer, pinctrl (probe), I2C block, watchdog, DMA controller and clocks. - Piecewise add a device tree containing all peripherals. - Delete the ATAG boot path. - Delete redundant platform data and board files. - Convert to multiplatform. * tag 'u300-multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson: (40 commits) ARM: u300: switch to using syscon regmap for board ARM: u300: Update MMC configs for u300 defconfig spi: pl022: use DMA by default when probing from DT pinctrl: get rid of all platform data for coh901 ARM: u300: convert MMC/SD clock to device tree ARM: u300: move the gated system controller clocks to DT i2c: stu300: do not request a specific clock name clk: move the U300 fixed and fixed-factor to DT ARM: u300: remove register definition file ARM: u300: add syscon node ARM: u300 use module_spi_driver to register driver ARM: u300: delete remnant machine headers ARM: u300: convert to multiplatform ARM: u300: localize <mach/u300-regs.h> ARM: u300: delete <mach/irqs.h> ARM: u300: delete <mach/hardware.h> ARM: u300: push down syscon registers ARM: u300: remove deps from debug macro ARM: u300: move debugmacro to debug includes ARM: u300: delete all static board data ... Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
ST-Ericsson U300 Device Tree Bindings
|
||||
|
||||
For various board the "board" node may contain specific properties
|
||||
that pertain to this particular board, such as board-specific GPIOs
|
||||
or board power regulator supplies.
|
||||
|
||||
Required root node property:
|
||||
|
||||
compatible="stericsson,u300";
|
||||
|
||||
Required node: syscon
|
||||
This contains the system controller.
|
||||
- compatible: must be "stericsson,u300-syscon".
|
||||
- reg: the base address and size of the system controller.
|
||||
|
||||
Boards with the U300 SoC include:
|
||||
|
||||
S365 "Small Board U365":
|
||||
|
||||
Required node: s365
|
||||
This contains the board-specific information.
|
||||
- compatible: must be "stericsson,s365".
|
||||
- vana15-supply: the regulator supplying the 1.5V to drive the
|
||||
board.
|
||||
- syscon: a pointer to the syscon node so we can acccess the
|
||||
syscon registers to set the board as self-powered.
|
||||
|
||||
Example:
|
||||
|
||||
/ {
|
||||
model = "ST-Ericsson U300";
|
||||
compatible = "stericsson,u300";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
s365 {
|
||||
compatible = "stericsson,s365";
|
||||
vana15-supply = <&ab3100_ldo_d_reg>;
|
||||
syscon = <&syscon>;
|
||||
};
|
||||
|
||||
syscon: syscon@c0011000 {
|
||||
compatible = "stericsson,u300-syscon";
|
||||
reg = <0xc0011000 0x1000>;
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,80 @@
|
||||
Clock bindings for ST-Ericsson U300 System Controller Clocks
|
||||
|
||||
Bindings for the gated system controller clocks:
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "stericsson,u300-syscon-clk"
|
||||
- #clock-cells: must be <0>
|
||||
- clock-type: specifies the type of clock:
|
||||
0 = slow clock
|
||||
1 = fast clock
|
||||
2 = rest/remaining clock
|
||||
- clock-id: specifies the clock in the type range
|
||||
|
||||
Optional properties:
|
||||
- clocks: parent clock(s)
|
||||
|
||||
The available clocks per type are as follows:
|
||||
|
||||
Type: ID: Clock:
|
||||
-------------------
|
||||
0 0 Slow peripheral bridge clock
|
||||
0 1 UART0 clock
|
||||
0 4 GPIO clock
|
||||
0 6 RTC clock
|
||||
0 7 Application timer clock
|
||||
0 8 Access timer clock
|
||||
|
||||
1 0 Fast peripheral bridge clock
|
||||
1 1 I2C bus 0 clock
|
||||
1 2 I2C bus 1 clock
|
||||
1 5 MMC interface peripheral (silicon) clock
|
||||
1 6 SPI clock
|
||||
|
||||
2 3 CPU clock
|
||||
2 4 DMA controller clock
|
||||
2 5 External Memory Interface (EMIF) clock
|
||||
2 6 NAND flask interface clock
|
||||
2 8 XGAM graphics engine clock
|
||||
2 9 Shared External Memory Interface (SEMI) clock
|
||||
2 10 AHB Subsystem Bridge clock
|
||||
2 12 Interrupt controller clock
|
||||
|
||||
Example:
|
||||
|
||||
gpio_clk: gpio_clk@13M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <0>; /* Slow */
|
||||
clock-id = <4>;
|
||||
clocks = <&slow_clk>;
|
||||
};
|
||||
|
||||
gpio: gpio@c0016000 {
|
||||
compatible = "stericsson,gpio-coh901";
|
||||
(...)
|
||||
clocks = <&gpio_clk>;
|
||||
};
|
||||
|
||||
|
||||
Bindings for the MMC/SD card clock:
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "stericsson,u300-syscon-mclk"
|
||||
- #clock-cells: must be <0>
|
||||
|
||||
Optional properties:
|
||||
- clocks: parent clock(s)
|
||||
|
||||
mmc_mclk: mmc_mclk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-mclk";
|
||||
clocks = <&mmc_pclk>;
|
||||
};
|
||||
|
||||
mmcsd: mmcsd@c0001000 {
|
||||
compatible = "arm,pl18x", "arm,primecell";
|
||||
clocks = <&mmc_pclk>, <&mmc_mclk>;
|
||||
clock-names = "apb_pclk", "mclk";
|
||||
(...)
|
||||
};
|
||||
@@ -0,0 +1,32 @@
|
||||
ST-Ericsson COH 901 318 DMA Controller
|
||||
|
||||
This is a DMA controller which has begun as a fork of the
|
||||
ARM PL08x PrimeCell VHDL code.
|
||||
|
||||
Required properties:
|
||||
- compatible: should be "stericsson,coh901318"
|
||||
- reg: register locations and length
|
||||
- interrupts: the single DMA IRQ
|
||||
- #dma-cells: must be set to <1>, as the channels on the
|
||||
COH 901 318 are simple and identified by a single number
|
||||
- dma-channels: the number of DMA channels handled
|
||||
|
||||
Example:
|
||||
|
||||
dmac: dma-controller@c00020000 {
|
||||
compatible = "stericsson,coh901318";
|
||||
reg = <0xc0020000 0x1000>;
|
||||
interrupt-parent = <&vica>;
|
||||
interrupts = <2>;
|
||||
#dma-cells = <1>;
|
||||
dma-channels = <40>;
|
||||
};
|
||||
|
||||
Consumers example:
|
||||
|
||||
uart0: serial@c0013000 {
|
||||
compatible = "...";
|
||||
(...)
|
||||
dmas = <&dmac 17 &dmac 18>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
@@ -0,0 +1,7 @@
|
||||
ST-Ericsson COH 901 571/3 GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible: Compatible property value should be "stericsson,gpio-coh901"
|
||||
- reg: Physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
- interrupts: the 0...n interrupts assigned to the different GPIO ports/banks.
|
||||
@@ -0,0 +1,15 @@
|
||||
ST Microelectronics DDC I2C
|
||||
|
||||
Required properties :
|
||||
- compatible : Must be "st,ddci2c"
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
- interrupts: interrupt number to the cpu.
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
|
||||
Optional properties:
|
||||
- Child nodes conforming to i2c bus binding
|
||||
|
||||
Examples :
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
ST-Ericsson U300 apptimer
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible : should be "stericsson,u300-apptimer"
|
||||
- reg : Specifies base physical address and size of the registers.
|
||||
- interrupts : A list of 4 interrupts; one for each subtimer. These
|
||||
are, in order: OS (operating system), DD (device driver) both
|
||||
adopted for EPOC/Symbian with two specific IRQs for these tasks,
|
||||
then GP1 and GP2, which are general-purpose timers.
|
||||
|
||||
Example:
|
||||
|
||||
timer {
|
||||
compatible = "stericsson,u300-apptimer";
|
||||
reg = <0xc0014000 0x1000>;
|
||||
interrupts = <24 25 26 27>;
|
||||
};
|
||||
@@ -0,0 +1,19 @@
|
||||
ST-Ericsson COH 901 327 Watchdog timer
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "stericsson,coh901327".
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
- interrupts: the interrupt used for the watchdog timeout warning.
|
||||
|
||||
Optional properties:
|
||||
- timeout-sec: contains the watchdog timeout in seconds.
|
||||
|
||||
Example:
|
||||
|
||||
watchdog: watchdog@c0012000 {
|
||||
compatible = "stericsson,coh901327";
|
||||
reg = <0xc0012000 0x1000>;
|
||||
interrupts = <3>;
|
||||
timeout-sec = <60>;
|
||||
};
|
||||
+1
-18
@@ -815,23 +815,6 @@ config ARCH_SHARK
|
||||
Support for the StrongARM based Digital DNARD machine, also known
|
||||
as "Shark" (<http://www.shark-linux.de/shark.html>).
|
||||
|
||||
config ARCH_U300
|
||||
bool "ST-Ericsson U300 Series"
|
||||
depends on MMU
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
select ARM_AMBA
|
||||
select ARM_PATCH_PHYS_VIRT
|
||||
select ARM_VIC
|
||||
select CLKDEV_LOOKUP
|
||||
select CLKSRC_MMIO
|
||||
select COMMON_CLK
|
||||
select CPU_ARM926T
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select HAVE_TCM
|
||||
select SPARSE_IRQ
|
||||
help
|
||||
Support for ST-Ericsson U300 series mobile platforms.
|
||||
|
||||
config ARCH_DAVINCI
|
||||
bool "TI DaVinci"
|
||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
||||
@@ -2045,7 +2028,7 @@ config CRASH_DUMP
|
||||
|
||||
config AUTO_ZRELADDR
|
||||
bool "Auto calculation of the decompressed kernel image address"
|
||||
depends on !ZBOOT_ROM && !ARCH_U300
|
||||
depends on !ZBOOT_ROM
|
||||
help
|
||||
ZRELADDR is the physical address where the decompressed kernel
|
||||
image will be placed. If AUTO_ZRELADDR is selected, the address
|
||||
|
||||
@@ -482,6 +482,13 @@ choice
|
||||
Say Y here if you want the debug print routines to direct
|
||||
their output to the uart1 port on SiRFmarco devices.
|
||||
|
||||
config DEBUG_U300_UART
|
||||
bool "Kernel low-level debugging messages via U300 UART0"
|
||||
depends on ARCH_U300
|
||||
help
|
||||
Say Y here if you want the debug print routines to direct
|
||||
their output to the uart port on U300 devices.
|
||||
|
||||
config DEBUG_UX500_UART
|
||||
depends on ARCH_U8500
|
||||
bool "Use Ux500 UART for low-level debug"
|
||||
@@ -685,6 +692,7 @@ config DEBUG_LL_INCLUDE
|
||||
default "debug/socfpga.S" if DEBUG_SOCFPGA_UART
|
||||
default "debug/sunxi.S" if DEBUG_SUNXI_UART0 || DEBUG_SUNXI_UART1
|
||||
default "debug/tegra.S" if DEBUG_TEGRA_UART
|
||||
default "debug/u300.S" if DEBUG_U300_UART
|
||||
default "debug/ux500.S" if DEBUG_UX500_UART
|
||||
default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT || \
|
||||
DEBUG_VEXPRESS_UART0_CA9 || DEBUG_VEXPRESS_UART0_RS1
|
||||
|
||||
@@ -201,6 +201,7 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
|
||||
tegra114-pluto.dtb
|
||||
dtb-$(CONFIG_ARCH_VERSATILE) += versatile-ab.dtb \
|
||||
versatile-pb.dtb
|
||||
dtb-$(CONFIG_ARCH_U300) += ste-u300.dtb
|
||||
dtb-$(CONFIG_ARCH_VEXPRESS) += vexpress-v2p-ca5s.dtb \
|
||||
vexpress-v2p-ca9.dtb \
|
||||
vexpress-v2p-ca15-tc1.dtb \
|
||||
|
||||
@@ -0,0 +1,473 @@
|
||||
/*
|
||||
* Device Tree for the ST-Ericsson U300 Machine and SoC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/include/ "skeleton.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ST-Ericsson U300";
|
||||
compatible = "stericsson,u300";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
chosen {
|
||||
bootargs = "root=/dev/ram0 console=ttyAMA0,115200n8 earlyprintk";
|
||||
};
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
serial1 = &uart1;
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x48000000 0x03c00000>;
|
||||
};
|
||||
|
||||
s365 {
|
||||
compatible = "stericsson,s365";
|
||||
vana15-supply = <&ab3100_ldo_d_reg>;
|
||||
syscon = <&syscon>;
|
||||
};
|
||||
|
||||
syscon: syscon@c0011000 {
|
||||
compatible = "stericsson,u300-syscon", "syscon";
|
||||
reg = <0xc0011000 0x1000>;
|
||||
clk32: app_32_clk@32k {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
pll13: pll13@13M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <13000000>;
|
||||
};
|
||||
/* Slow bridge clocks under PLL13 */
|
||||
slow_clk: slow_clk@13M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <0>; /* Slow */
|
||||
clock-id = <0>;
|
||||
clocks = <&pll13>;
|
||||
};
|
||||
uart0_clk: uart0_clk@13M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <0>; /* Slow */
|
||||
clock-id = <1>;
|
||||
clocks = <&slow_clk>;
|
||||
};
|
||||
gpio_clk: gpio_clk@13M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <0>; /* Slow */
|
||||
clock-id = <4>;
|
||||
clocks = <&slow_clk>;
|
||||
};
|
||||
rtc_clk: rtc_clk@13M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <0>; /* Slow */
|
||||
clock-id = <6>;
|
||||
clocks = <&slow_clk>;
|
||||
};
|
||||
apptimer_clk: app_tmr_clk@13M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <0>; /* Slow */
|
||||
clock-id = <7>;
|
||||
clocks = <&slow_clk>;
|
||||
};
|
||||
acc_tmr_clk@13M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <0>; /* Slow */
|
||||
clock-id = <8>;
|
||||
clocks = <&slow_clk>;
|
||||
};
|
||||
pll208: pll208@208M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <208000000>;
|
||||
};
|
||||
app208: app_208_clk@208M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-factor-clock";
|
||||
clock-div = <1>;
|
||||
clock-mult = <1>;
|
||||
clocks = <&pll208>;
|
||||
};
|
||||
cpu_clk@208M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <2>; /* Rest */
|
||||
clock-id = <3>;
|
||||
clocks = <&app208>;
|
||||
};
|
||||
app104: app_104_clk@104M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-factor-clock";
|
||||
clock-div = <2>;
|
||||
clock-mult = <1>;
|
||||
clocks = <&pll208>;
|
||||
};
|
||||
semi_clk@104M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <2>; /* Rest */
|
||||
clock-id = <9>;
|
||||
clocks = <&app104>;
|
||||
};
|
||||
app52: app_52_clk@52M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-factor-clock";
|
||||
clock-div = <4>;
|
||||
clock-mult = <1>;
|
||||
clocks = <&pll208>;
|
||||
};
|
||||
/* AHB subsystem clocks */
|
||||
ahb_clk: ahb_subsys_clk@52M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <2>; /* Rest */
|
||||
clock-id = <10>;
|
||||
clocks = <&app52>;
|
||||
};
|
||||
intcon_clk@52M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <2>; /* Rest */
|
||||
clock-id = <12>;
|
||||
clocks = <&ahb_clk>;
|
||||
};
|
||||
emif_clk@52M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <2>; /* Rest */
|
||||
clock-id = <5>;
|
||||
clocks = <&ahb_clk>;
|
||||
};
|
||||
dmac_clk: dmac_clk@52M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <2>; /* Rest */
|
||||
clock-id = <4>;
|
||||
clocks = <&app52>;
|
||||
};
|
||||
fsmc_clk: fsmc_clk@52M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <2>; /* Rest */
|
||||
clock-id = <6>;
|
||||
clocks = <&app52>;
|
||||
};
|
||||
xgam_clk: xgam_clk@52M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <2>; /* Rest */
|
||||
clock-id = <8>;
|
||||
clocks = <&app52>;
|
||||
};
|
||||
app26: app_26_clk@26M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-factor-clock";
|
||||
clock-div = <2>;
|
||||
clock-mult = <1>;
|
||||
clocks = <&app52>;
|
||||
};
|
||||
/* Fast bridge clocks */
|
||||
fast_clk: fast_clk@26M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <1>; /* Fast */
|
||||
clock-id = <0>;
|
||||
clocks = <&app26>;
|
||||
};
|
||||
i2c0_clk: i2c0_clk@26M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <1>; /* Fast */
|
||||
clock-id = <1>;
|
||||
clocks = <&fast_clk>;
|
||||
};
|
||||
i2c1_clk: i2c1_clk@26M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <1>; /* Fast */
|
||||
clock-id = <2>;
|
||||
clocks = <&fast_clk>;
|
||||
};
|
||||
mmc_pclk: mmc_p_clk@26M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <1>; /* Fast */
|
||||
clock-id = <5>;
|
||||
clocks = <&fast_clk>;
|
||||
};
|
||||
mmc_mclk: mmc_mclk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-mclk";
|
||||
clocks = <&mmc_pclk>;
|
||||
};
|
||||
spi_clk: spi_p_clk@26M {
|
||||
#clock-cells = <0>;
|
||||
compatible = "stericsson,u300-syscon-clk";
|
||||
clock-type = <1>; /* Fast */
|
||||
clock-id = <6>;
|
||||
clocks = <&fast_clk>;
|
||||
};
|
||||
};
|
||||
|
||||
timer: timer@c0014000 {
|
||||
compatible = "stericsson,u300-apptimer";
|
||||
reg = <0xc0014000 0x1000>;
|
||||
interrupt-parent = <&vica>;
|
||||
interrupts = <24 25 26 27>;
|
||||
clocks = <&apptimer_clk>;
|
||||
};
|
||||
|
||||
gpio: gpio@c0016000 {
|
||||
compatible = "stericsson,gpio-coh901";
|
||||
reg = <0xc0016000 0x1000>;
|
||||
interrupt-parent = <&vicb>;
|
||||
interrupts = <0 1 2 18 21 22 23>;
|
||||
clocks = <&gpio_clk>;
|
||||
interrupt-names = "gpio0", "gpio1", "gpio2", "gpio3",
|
||||
"gpio4", "gpio5", "gpio6";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
pinctrl: pinctrl@c0011000 {
|
||||
compatible = "stericsson,pinctrl-u300";
|
||||
reg = <0xc0011000 0x1000>;
|
||||
};
|
||||
|
||||
watchdog: watchdog@c0012000 {
|
||||
compatible = "stericsson,coh901327";
|
||||
reg = <0xc0012000 0x1000>;
|
||||
interrupt-parent = <&vicb>;
|
||||
interrupts = <3>;
|
||||
clocks = <&clk32>;
|
||||
};
|
||||
|
||||
rtc: rtc@c0017000 {
|
||||
compatible = "stericsson,coh901331";
|
||||
reg = <0xc0017000 0x1000>;
|
||||
interrupt-parent = <&vicb>;
|
||||
interrupts = <10>;
|
||||
clocks = <&rtc_clk>;
|
||||
};
|
||||
|
||||
dmac: dma-controller@c00020000 {
|
||||
compatible = "stericsson,coh901318";
|
||||
reg = <0xc0020000 0x1000>;
|
||||
interrupt-parent = <&vica>;
|
||||
interrupts = <2>;
|
||||
#dma-cells = <1>;
|
||||
dma-channels = <40>;
|
||||
clocks = <&dmac_clk>;
|
||||
};
|
||||
|
||||
/* A NAND flash of 128 MiB */
|
||||
fsmc: flash@40000000 {
|
||||
compatible = "stericsson,fsmc-nand";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x9f800000 0x1000>, /* FSMC Register*/
|
||||
<0x80000000 0x4000>, /* NAND Base DATA */
|
||||
<0x80020000 0x4000>, /* NAND Base ADDR */
|
||||
<0x80010000 0x4000>; /* NAND Base CMD */
|
||||
reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
|
||||
nand-skip-bbtscan;
|
||||
clocks = <&fsmc_clk>;
|
||||
|
||||
partition@0 {
|
||||
label = "boot records";
|
||||
reg = <0x0 0x20000>;
|
||||
};
|
||||
partition@20000 {
|
||||
label = "free";
|
||||
reg = <0x20000 0x7e0000>;
|
||||
};
|
||||
partition@800000 {
|
||||
label = "platform";
|
||||
reg = <0x800000 0xf800000>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c0: i2c@c0004000 {
|
||||
compatible = "st,ddci2c";
|
||||
reg = <0xc0004000 0x1000>;
|
||||
interrupt-parent = <&vicb>;
|
||||
interrupts = <8>;
|
||||
clocks = <&i2c0_clk>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
ab3100: ab3100@0x48 {
|
||||
compatible = "stericsson,ab3100";
|
||||
reg = <0x48>;
|
||||
interrupt-parent = <&vica>;
|
||||
interrupts = <0>; /* EXT0 IRQ */
|
||||
ab3100-regulators {
|
||||
compatible = "stericsson,ab3100-regulators";
|
||||
ab3100_ldo_a_reg: ab3100_ldo_a {
|
||||
regulator-compatible = "ab3100_ldo_a";
|
||||
startup-delay-us = <200>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
ab3100_ldo_c_reg: ab3100_ldo_c {
|
||||
regulator-compatible = "ab3100_ldo_c";
|
||||
startup-delay-us = <200>;
|
||||
};
|
||||
ab3100_ldo_d_reg: ab3100_ldo_d {
|
||||
regulator-compatible = "ab3100_ldo_d";
|
||||
startup-delay-us = <200>;
|
||||
};
|
||||
ab3100_ldo_e_reg: ab3100_ldo_e {
|
||||
regulator-compatible = "ab3100_ldo_e";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
startup-delay-us = <200>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
ab3100_ldo_f_reg: ab3100_ldo_f {
|
||||
regulator-compatible = "ab3100_ldo_f";
|
||||
regulator-min-microvolt = <2500000>;
|
||||
regulator-max-microvolt = <2500000>;
|
||||
startup-delay-us = <600>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
ab3100_ldo_g_reg: ab3100_ldo_g {
|
||||
regulator-compatible = "ab3100_ldo_g";
|
||||
regulator-min-microvolt = <1500000>;
|
||||
regulator-max-microvolt = <2850000>;
|
||||
startup-delay-us = <400>;
|
||||
};
|
||||
ab3100_ldo_h_reg: ab3100_ldo_h {
|
||||
regulator-compatible = "ab3100_ldo_h";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <2750000>;
|
||||
startup-delay-us = <200>;
|
||||
};
|
||||
ab3100_ldo_k_reg: ab3100_ldo_k {
|
||||
regulator-compatible = "ab3100_ldo_k";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <2750000>;
|
||||
startup-delay-us = <200>;
|
||||
};
|
||||
ab3100_ext_reg: ab3100_ext {
|
||||
regulator-compatible = "ab3100_ext";
|
||||
};
|
||||
ab3100_buck_reg: ab3100_buck {
|
||||
regulator-compatible = "ab3100_buck";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
startup-delay-us = <1000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
i2c1: i2c@c0005000 {
|
||||
compatible = "st,ddci2c";
|
||||
reg = <0xc0005000 0x1000>;
|
||||
interrupt-parent = <&vicb>;
|
||||
interrupts = <9>;
|
||||
clocks = <&i2c1_clk>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
fwcam0: fwcam@0x10 {
|
||||
reg = <0x10>;
|
||||
};
|
||||
fwcam1: fwcam@0x5d {
|
||||
reg = <0x5d>;
|
||||
};
|
||||
};
|
||||
|
||||
amba {
|
||||
compatible = "arm,amba-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
vica: interrupt-controller@a0001000 {
|
||||
compatible = "arm,versatile-vic";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0xa0001000 0x20>;
|
||||
};
|
||||
|
||||
vicb: interrupt-controller@a0002000 {
|
||||
compatible = "arm,versatile-vic";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0xa0002000 0x20>;
|
||||
};
|
||||
|
||||
uart0: serial@c0013000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0xc0013000 0x1000>;
|
||||
interrupt-parent = <&vica>;
|
||||
interrupts = <22>;
|
||||
clocks = <&uart0_clk>, <&uart0_clk>;
|
||||
clock-names = "apb_pclk", "uart0_clk";
|
||||
dmas = <&dmac 17 &dmac 18>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
uart1: serial@c0007000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0xc0007000 0x1000>;
|
||||
interrupt-parent = <&vicb>;
|
||||
interrupts = <20>;
|
||||
dmas = <&dmac 38 &dmac 39>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmcsd: mmcsd@c0001000 {
|
||||
compatible = "arm,pl18x", "arm,primecell";
|
||||
reg = <0xc0001000 0x1000>;
|
||||
interrupt-parent = <&vicb>;
|
||||
interrupts = <6 7>;
|
||||
clocks = <&mmc_pclk>, <&mmc_mclk>;
|
||||
clock-names = "apb_pclk", "mclk";
|
||||
max-frequency = <24000000>;
|
||||
bus-width = <4>; // SD-card slot
|
||||
mmc-cap-mmc-highspeed;
|
||||
mmc-cap-sd-highspeed;
|
||||
cd-gpios = <&gpio 12 0x4>;
|
||||
cd-inverted;
|
||||
vmmc-supply = <&ab3100_ldo_g_reg>;
|
||||
dmas = <&dmac 14>;
|
||||
dma-names = "rx";
|
||||
};
|
||||
|
||||
spi: ssp@c0006000 {
|
||||
compatible = "arm,pl022", "arm,primecell";
|
||||
reg = <0xc0006000 0x1000>;
|
||||
interrupt-parent = <&vica>;
|
||||
interrupts = <23>;
|
||||
clocks = <&spi_clk>, <&spi_clk>;
|
||||
clock-names = "apb_pclk", "spi_clk";
|
||||
dmas = <&dmac 27 &dmac 28>;
|
||||
dma-names = "tx", "rx";
|
||||
num-cs = <3>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-dummy@1 {
|
||||
compatible = "arm,pl022-dummy";
|
||||
reg = <1>;
|
||||
spi-max-frequency = <20000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -1,7 +1,8 @@
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_AIO is not set
|
||||
@@ -11,12 +12,9 @@ CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_LBDAF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
# CONFIG_ARCH_MULTI_V7 is not set
|
||||
CONFIG_ARCH_U300=y
|
||||
CONFIG_MACH_U300=y
|
||||
CONFIG_MACH_U300_BS335=y
|
||||
CONFIG_MACH_U300_SPIDUMMY=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_AEABI=y
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
@@ -44,14 +42,15 @@ CONFIG_I2C=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
# CONFIG_LCD_CLASS_DEVICE is not set
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_CLKGATE=y
|
||||
CONFIG_MMC_UNSAFE_RESUME=y
|
||||
# CONFIG_MMC_BLOCK_BOUNCE is not set
|
||||
CONFIG_MMC_ARMMMCI=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_HCTOSYS is not set
|
||||
@@ -70,4 +69,3 @@ CONFIG_DEBUG_FS=y
|
||||
CONFIG_TIMER_STATS=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_CRC32 is not set
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
/*
|
||||
*
|
||||
* arch-arm/mach-u300/include/mach/debug-macro.S
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2006-2009 ST-Ericsson AB
|
||||
* Copyright (C) 2006-2013 ST-Ericsson AB
|
||||
* License terms: GNU General Public License (GPL) version 2
|
||||
* Debugging macro include header.
|
||||
* Author: Linus Walleij <linus.walleij@stericsson.com>
|
||||
*/
|
||||
#include <mach/hardware.h>
|
||||
#define U300_SLOW_PER_PHYS_BASE 0xc0010000
|
||||
#define U300_SLOW_PER_VIRT_BASE 0xff000000
|
||||
|
||||
.macro addruart, rp, rv, tmp
|
||||
/* If we move the address using MMU, use this. */
|
||||
@@ -1,24 +1,46 @@
|
||||
if ARCH_U300
|
||||
|
||||
menu "ST-Ericsson AB U300/U335 Platform"
|
||||
|
||||
comment "ST-Ericsson Mobile Platform Products"
|
||||
|
||||
config MACH_U300
|
||||
bool "U300"
|
||||
config ARCH_U300
|
||||
bool "ST-Ericsson U300 Series"
|
||||
depends on MMU
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
select ARM_AMBA
|
||||
select ARM_PATCH_PHYS_VIRT
|
||||
select ARM_VIC
|
||||
select CLKDEV_LOOKUP
|
||||
select CLKSRC_MMIO
|
||||
select CLKSRC_OF
|
||||
select COMMON_CLK
|
||||
select CPU_ARM926T
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select HAVE_TCM
|
||||
select PINCTRL
|
||||
select PINCTRL_COH901
|
||||
select PINCTRL_U300
|
||||
select SPARSE_IRQ
|
||||
select MFD_SYSCON
|
||||
select USE_OF
|
||||
help
|
||||
Support for ST-Ericsson U300 series mobile platforms.
|
||||
|
||||
comment "ST-Ericsson U300/U335 Feature Selections"
|
||||
|
||||
config MACH_U300
|
||||
depends on ARCH_U300
|
||||
bool "U300"
|
||||
default y
|
||||
|
||||
config U300_DEBUG
|
||||
depends on ARCH_U300
|
||||
bool "Debug support for U300"
|
||||
depends on PM
|
||||
help
|
||||
Debug support for U300 in sysfs, procfs etc.
|
||||
|
||||
config MACH_U300_SPIDUMMY
|
||||
depends on ARCH_U300
|
||||
bool "SSP/SPI dummy chip"
|
||||
select SPI
|
||||
select SPI_MASTER
|
||||
@@ -31,5 +53,3 @@ config MACH_U300_SPIDUMMY
|
||||
SPI framework and ARM PL022 support.
|
||||
|
||||
endmenu
|
||||
|
||||
endif
|
||||
|
||||
@@ -7,7 +7,5 @@ obj-m :=
|
||||
obj-n :=
|
||||
obj- :=
|
||||
|
||||
obj-$(CONFIG_SPI_PL022) += spi.o
|
||||
obj-$(CONFIG_MACH_U300_SPIDUMMY) += dummyspichip.o
|
||||
obj-$(CONFIG_I2C_STU300) += i2c.o
|
||||
obj-$(CONFIG_REGULATOR_AB3100) += regulator.o
|
||||
|
||||
+237
-522
File diff suppressed because it is too large
Load Diff
@@ -263,28 +263,22 @@ static int pl022_dummy_remove(struct spi_device *spi)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id pl022_dummy_dt_match[] = {
|
||||
{ .compatible = "arm,pl022-dummy" },
|
||||
{},
|
||||
};
|
||||
|
||||
static struct spi_driver pl022_dummy_driver = {
|
||||
.driver = {
|
||||
.name = "spi-dummy",
|
||||
.owner = THIS_MODULE,
|
||||
.of_match_table = pl022_dummy_dt_match,
|
||||
},
|
||||
.probe = pl022_dummy_probe,
|
||||
.remove = pl022_dummy_remove,
|
||||
};
|
||||
|
||||
static int __init pl022_init_dummy(void)
|
||||
{
|
||||
return spi_register_driver(&pl022_dummy_driver);
|
||||
}
|
||||
|
||||
static void __exit pl022_exit_dummy(void)
|
||||
{
|
||||
spi_unregister_driver(&pl022_dummy_driver);
|
||||
}
|
||||
|
||||
module_init(pl022_init_dummy);
|
||||
module_exit(pl022_exit_dummy);
|
||||
|
||||
module_spi_driver(pl022_dummy_driver);
|
||||
MODULE_AUTHOR("Linus Walleij <linus.walleij@stericsson.com>");
|
||||
MODULE_DESCRIPTION("PL022 SSP/SPI DUMMY Linux driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
@@ -1,285 +0,0 @@
|
||||
/*
|
||||
* arch/arm/mach-u300/i2c.c
|
||||
*
|
||||
* Copyright (C) 2009-2012 ST-Ericsson AB
|
||||
* License terms: GNU General Public License (GPL) version 2
|
||||
*
|
||||
* Register board i2c devices
|
||||
* Author: Linus Walleij <linus.walleij@stericsson.com>
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/mfd/ab3100.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/amba/bus.h>
|
||||
#include <mach/irqs.h>
|
||||
|
||||
/*
|
||||
* Initial settings of ab3100 registers.
|
||||
* Common for below LDO regulator settings are that
|
||||
* bit 7-5 controls voltage. Bit 4 turns regulator ON(1) or OFF(0).
|
||||
* Bit 3-2 controls sleep enable and bit 1-0 controls sleep mode.
|
||||
*/
|
||||
|
||||
/* LDO_A 0x16: 2.75V, ON, SLEEP_A, SLEEP OFF GND */
|
||||
#define LDO_A_SETTING 0x16
|
||||
/* LDO_C 0x10: 2.65V, ON, SLEEP_A or B, SLEEP full power */
|
||||
#define LDO_C_SETTING 0x10
|
||||
/* LDO_D 0x10: 2.65V, ON, sleep mode not used */
|
||||
#define LDO_D_SETTING 0x10
|
||||
/* LDO_E 0x10: 1.8V, ON, SLEEP_A or B, SLEEP full power */
|
||||
#define LDO_E_SETTING 0x10
|
||||
/* LDO_E SLEEP 0x00: 1.8V, not used, SLEEP_A or B, not used */
|
||||
#define LDO_E_SLEEP_SETTING 0x00
|
||||
/* LDO_F 0xD0: 2.5V, ON, SLEEP_A or B, SLEEP full power */
|
||||
#define LDO_F_SETTING 0xD0
|
||||
/* LDO_G 0x00: 2.85V, OFF, SLEEP_A or B, SLEEP full power */
|
||||
#define LDO_G_SETTING 0x00
|
||||
/* LDO_H 0x18: 2.75V, ON, SLEEP_B, SLEEP full power */
|
||||
#define LDO_H_SETTING 0x18
|
||||
/* LDO_K 0x00: 2.75V, OFF, SLEEP_A or B, SLEEP full power */
|
||||
#define LDO_K_SETTING 0x00
|
||||
/* LDO_EXT 0x00: Voltage not set, OFF, not used, not used */
|
||||
#define LDO_EXT_SETTING 0x00
|
||||
/* BUCK 0x7D: 1.2V, ON, SLEEP_A and B, SLEEP low power */
|
||||
#define BUCK_SETTING 0x7D
|
||||
/* BUCK SLEEP 0xAC: 1.05V, Not used, SLEEP_A and B, Not used */
|
||||
#define BUCK_SLEEP_SETTING 0xAC
|
||||
|
||||
#ifdef CONFIG_AB3100_CORE
|
||||
static struct regulator_consumer_supply supply_ldo_c[] = {
|
||||
{
|
||||
.dev_name = "ab3100-codec",
|
||||
.supply = "vaudio", /* Powers the codec */
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* This one needs to be a supply so we can turn it off
|
||||
* in order to shut down the system.
|
||||
*/
|
||||
static struct regulator_consumer_supply supply_ldo_d[] = {
|
||||
{
|
||||
.supply = "vana15", /* Powers the SoC (CPU etc) */
|
||||
},
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply supply_ldo_g[] = {
|
||||
{
|
||||
.dev_name = "mmci",
|
||||
.supply = "vmmc", /* Powers MMC/SD card */
|
||||
},
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply supply_ldo_h[] = {
|
||||
{
|
||||
.dev_name = "xgam_pdi",
|
||||
.supply = "vdisp", /* Powers camera, display etc */
|
||||
},
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply supply_ldo_k[] = {
|
||||
{
|
||||
.dev_name = "irda",
|
||||
.supply = "vir", /* Power IrDA */
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* This is a placeholder for whoever wish to use the
|
||||
* external power.
|
||||
*/
|
||||
static struct regulator_consumer_supply supply_ldo_ext[] = {
|
||||
{
|
||||
.supply = "vext", /* External power */
|
||||
},
|
||||
};
|
||||
|
||||
/* Preset (hardware defined) voltages for these regulators */
|
||||
#define LDO_A_VOLTAGE 2750000
|
||||
#define LDO_C_VOLTAGE 2650000
|
||||
#define LDO_D_VOLTAGE 2650000
|
||||
|
||||
static struct ab3100_platform_data ab3100_plf_data = {
|
||||
.reg_constraints = {
|
||||
/* LDO A routing and constraints */
|
||||
{
|
||||
.constraints = {
|
||||
.name = "vrad",
|
||||
.min_uV = LDO_A_VOLTAGE,
|
||||
.max_uV = LDO_A_VOLTAGE,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
.always_on = 1,
|
||||
.boot_on = 1,
|
||||
},
|
||||
},
|
||||
/* LDO C routing and constraints */
|
||||
{
|
||||
.constraints = {
|
||||
.min_uV = LDO_C_VOLTAGE,
|
||||
.max_uV = LDO_C_VOLTAGE,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
},
|
||||
.num_consumer_supplies = ARRAY_SIZE(supply_ldo_c),
|
||||
.consumer_supplies = supply_ldo_c,
|
||||
},
|
||||
/* LDO D routing and constraints */
|
||||
{
|
||||
.constraints = {
|
||||
.min_uV = LDO_D_VOLTAGE,
|
||||
.max_uV = LDO_D_VOLTAGE,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
.valid_ops_mask = REGULATOR_CHANGE_STATUS,
|
||||
/*
|
||||
* Actually this is boot_on but we need
|
||||
* to reference count it externally to
|
||||
* be able to shut down the system.
|
||||
*/
|
||||
},
|
||||
.num_consumer_supplies = ARRAY_SIZE(supply_ldo_d),
|
||||
.consumer_supplies = supply_ldo_d,
|
||||
},
|
||||
/* LDO E routing and constraints */
|
||||
{
|
||||
.constraints = {
|
||||
.name = "vio",
|
||||
.min_uV = 1800000,
|
||||
.max_uV = 1800000,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
.always_on = 1,
|
||||
.boot_on = 1,
|
||||
},
|
||||
},
|
||||
/* LDO F routing and constraints */
|
||||
{
|
||||
.constraints = {
|
||||
.name = "vana25",
|
||||
.min_uV = 2500000,
|
||||
.max_uV = 2500000,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
.always_on = 1,
|
||||
.boot_on = 1,
|
||||
},
|
||||
},
|
||||
/* LDO G routing and constraints */
|
||||
{
|
||||
.constraints = {
|
||||
.min_uV = 1500000,
|
||||
.max_uV = 2850000,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
.valid_ops_mask =
|
||||
REGULATOR_CHANGE_VOLTAGE |
|
||||
REGULATOR_CHANGE_STATUS,
|
||||
},
|
||||
.num_consumer_supplies = ARRAY_SIZE(supply_ldo_g),
|
||||
.consumer_supplies = supply_ldo_g,
|
||||
},
|
||||
/* LDO H routing and constraints */
|
||||
{
|
||||
.constraints = {
|
||||
.min_uV = 1200000,
|
||||
.max_uV = 2750000,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
.valid_ops_mask =
|
||||
REGULATOR_CHANGE_VOLTAGE |
|
||||
REGULATOR_CHANGE_STATUS,
|
||||
},
|
||||
.num_consumer_supplies = ARRAY_SIZE(supply_ldo_h),
|
||||
.consumer_supplies = supply_ldo_h,
|
||||
},
|
||||
/* LDO K routing and constraints */
|
||||
{
|
||||
.constraints = {
|
||||
.min_uV = 1800000,
|
||||
.max_uV = 2750000,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
.valid_ops_mask =
|
||||
REGULATOR_CHANGE_VOLTAGE |
|
||||
REGULATOR_CHANGE_STATUS,
|
||||
},
|
||||
.num_consumer_supplies = ARRAY_SIZE(supply_ldo_k),
|
||||
.consumer_supplies = supply_ldo_k,
|
||||
},
|
||||
/* External regulator interface. No fixed voltage specified.
|
||||
* If we knew the voltage of the external regulator and it
|
||||
* was connected on the board, we could add the (fixed)
|
||||
* voltage for it here.
|
||||
*/
|
||||
{
|
||||
.constraints = {
|
||||
.min_uV = 0,
|
||||
.max_uV = 0,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
.valid_ops_mask =
|
||||
REGULATOR_CHANGE_STATUS,
|
||||
},
|
||||
.num_consumer_supplies = ARRAY_SIZE(supply_ldo_ext),
|
||||
.consumer_supplies = supply_ldo_ext,
|
||||
},
|
||||
/* Buck converter routing and constraints */
|
||||
{
|
||||
.constraints = {
|
||||
.name = "vcore",
|
||||
.min_uV = 1200000,
|
||||
.max_uV = 1800000,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
.valid_ops_mask =
|
||||
REGULATOR_CHANGE_VOLTAGE,
|
||||
.always_on = 1,
|
||||
.boot_on = 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
.reg_initvals = {
|
||||
LDO_A_SETTING,
|
||||
LDO_C_SETTING,
|
||||
LDO_E_SETTING,
|
||||
LDO_E_SLEEP_SETTING,
|
||||
LDO_F_SETTING,
|
||||
LDO_G_SETTING,
|
||||
LDO_H_SETTING,
|
||||
LDO_K_SETTING,
|
||||
LDO_EXT_SETTING,
|
||||
BUCK_SETTING,
|
||||
BUCK_SLEEP_SETTING,
|
||||
LDO_D_SETTING,
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
static struct i2c_board_info __initdata bus0_i2c_board_info[] = {
|
||||
#ifdef CONFIG_AB3100_CORE
|
||||
{
|
||||
.type = "ab3100",
|
||||
.addr = 0x48,
|
||||
.irq = IRQ_U300_IRQ0_EXT,
|
||||
.platform_data = &ab3100_plf_data,
|
||||
},
|
||||
#else
|
||||
{ },
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata bus1_i2c_board_info[] = {
|
||||
{
|
||||
.type = "fwcam",
|
||||
.addr = 0x10,
|
||||
},
|
||||
{
|
||||
.type = "fwcam",
|
||||
.addr = 0x5d,
|
||||
},
|
||||
};
|
||||
|
||||
void __init u300_i2c_register_board_devices(void)
|
||||
{
|
||||
i2c_register_board_info(0, bus0_i2c_board_info,
|
||||
ARRAY_SIZE(bus0_i2c_board_info));
|
||||
/*
|
||||
* This makes the core shut down all unused regulators
|
||||
* after all the initcalls have completed.
|
||||
*/
|
||||
regulator_has_full_constraints();
|
||||
i2c_register_board_info(1, bus1_i2c_board_info,
|
||||
ARRAY_SIZE(bus1_i2c_board_info));
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
* arch/arm/mach-u300/i2c.h
|
||||
*
|
||||
* Copyright (C) 2009 ST-Ericsson AB
|
||||
* License terms: GNU General Public License (GPL) version 2
|
||||
*
|
||||
* Register board i2c devices
|
||||
* Author: Linus Walleij <linus.walleij@stericsson.com>
|
||||
*/
|
||||
|
||||
#ifndef MACH_U300_I2C_H
|
||||
#define MACH_U300_I2C_H
|
||||
|
||||
#ifdef CONFIG_I2C_STU300
|
||||
void __init u300_i2c_register_board_devices(void);
|
||||
#else
|
||||
/* Compile out this stuff if no I2C adapter is available */
|
||||
static inline void __init u300_i2c_register_board_devices(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,5 +0,0 @@
|
||||
/*
|
||||
* arch/arm/mach-u300/include/mach/hardware.h
|
||||
*/
|
||||
#include <asm/sizes.h>
|
||||
#include <mach/u300-regs.h>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user