/*
 * Copyright (C) 2015 Freescale Semiconductor, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#define SPANSIONFLASH
#include "imx6sx-sdb.dts"

/*
 * The CAN transceiver is changed on RevB board.
 * This dts is used for support the old CAN transceiver on RevA board
 */

&cpu0 {
	operating-points = <
		/* kHz    uV */
		996000  1275000
		792000  1175000
		396000  1075000
		198000	975000
		>;
	fsl,soc-operating-points = <
		/* ARM kHz      SOC uV */
		996000	1175000
		792000	1175000
		396000	1175000
		198000	1175000
	>;
	arm-supply = <&sw1a_reg>;
	soc-supply = <&sw1c_reg>;
	fsl,arm-soc-shared = <0>;
};

&flexcan1 {
	trx-en-gpio = <&gpio4 25 GPIO_ACTIVE_HIGH>;
	trx-stby-gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
};

&flexcan2 {
	trx-en-gpio = <&gpio4 25 GPIO_ACTIVE_HIGH>;
	trx-stby-gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
};

&pmic {
	compatible = "fsl,pfuze100";

	regulators {
		sw1c_reg: sw1c {
			regulator-min-microvolt = <300000>;
			regulator-max-microvolt = <1875000>;
			regulator-boot-on;
			regulator-always-on;
			regulator-ramp-delay = <6250>;
		};
		sw4_reg: sw4 {
			regulator-min-microvolt = <800000>;
			regulator-max-microvolt = <3300000>;
		};
	};
};

&qspi2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_qspi2_1>;
	status = "okay";
	ddrsmp=<0>;

	flash0: s25fl128s@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "spansion,s25fl128s";
		spi-max-frequency = <29000000>;
		reg = <0>;
	};

	flash1: s25fl128s@1 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "spansion,s25fl128s";
		spi-max-frequency = <29000000>;
		reg = <1>;
	};
};
