/*
 * Copyright (C) 2013 Broadcom Corporation
 *
 * 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 version 2.
 *
 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
 * kind, whether express or implied; without even the implied warranty
 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>

#include "bcm11351.dtsi"

/ {
	model = "BCM28155 AP board";
	compatible = "brcm,bcm28155-ap", "brcm,bcm11351";

	memory {
		reg = <0x80000000 0x40000000>; /* 1 GB */
	};

	uart@3e000000 {
		status = "okay";
	};

	i2c@3e016000 {
		status="okay";
		clock-frequency = <400000>;
	};

	i2c@3e017000 {
		status="okay";
		clock-frequency = <400000>;
	};

	i2c@3e018000 {
		status="okay";
		clock-frequency = <400000>;
	};

	i2c@3500d000 {
		status="okay";
		clock-frequency = <100000>;

		pmu: pmu@8 {
			reg = <0x08>;
		};
	};

	sdio2: sdio@3f190000 {
		non-removable;
		max-frequency = <48000000>;
		vmmc-supply = <&camldo1_reg>;
		vqmmc-supply = <&iosr1_reg>;
		status = "okay";
	};

	sdio4: sdio@3f1b0000 {
		max-frequency = <48000000>;
		cd-gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
		vmmc-supply = <&sdldo_reg>;
		vqmmc-supply = <&sdxldo_reg>;
		status = "okay";
	};

	pwm: pwm@3e01a000 {
		status = "okay";
	};

	usbotg: usb@3f120000 {
		vusb_d-supply = <&usbldo_reg>;
		vusb_a-supply = <&iosr1_reg>;
		status = "okay";
	};

	usbphy: usb-phy@3f130000 {
		status = "okay";
	};
};

#include "bcm59056.dtsi"

&pmu {
	compatible = "brcm,bcm59056";
	interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
	regulators {
		camldo1_reg: camldo1 {
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
		};

		sdldo_reg: sdldo {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3000000>;
		};

		sdxldo_reg: sdxldo {
			regulator-min-microvolt = <2700000>;
			regulator-max-microvolt = <3300000>;
		};

		usbldo_reg: usbldo {
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
		};

		iosr1_reg: iosr1 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-always-on;
		};
	};
};
