<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: MX53 MC34708 touchscreen in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232311#M17726</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Weidong,&lt;/P&gt;&lt;P&gt;Here is my mx53_loco.c code, and have had little modified by me. Because MC34708 not supply power for USB. My Bsp only has mx53_loco_pmic_mc34708.c. I paste it in the lastest part.&lt;/P&gt;&lt;P&gt;mx53_loco.c:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * Copyright (C) 2010-2011 Freescale Semiconductor, Inc. All Rights Reserved.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * This program is free software; you can redistribute it and/or modify&lt;/P&gt;&lt;P&gt; * it under the terms of the GNU General Public License as published by&lt;/P&gt;&lt;P&gt; * the Free Software Foundation; either version 2 of the License, or&lt;/P&gt;&lt;P&gt; * (at your option) any later version.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; * This program is distributed in the hope that it will be useful,&lt;/P&gt;&lt;P&gt; * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/P&gt;&lt;P&gt; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&amp;nbsp; See the&lt;/P&gt;&lt;P&gt; * GNU General Public License for more details.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; * You should have received a copy of the GNU General Public License along&lt;/P&gt;&lt;P&gt; * with this program; if not, write to the Free Software Foundation, Inc.,&lt;/P&gt;&lt;P&gt; * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/types.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/sched.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/delay.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pm.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/interrupt.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/irq.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/init.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/input.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/nodemask.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/clk.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/platform_device.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/fsl_devices.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/spi/spi.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/i2c.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/ata.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mtd/mtd.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mtd/map.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mtd/partitions.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/regulator/consumer.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pmic_external.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pmic_status.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/ipu.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mxcfb.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pwm_backlight.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/fec.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/powerkey.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/ahci_platform.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/gpio_keys.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mfd/da9052/da9052.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/common.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/hardware.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/irq.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/setup.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/mach-types.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/mach/arch.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/mach/time.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/mach/keypad.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/mach/flash.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/memory.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/gpio.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/mmc.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/mxc_dvfs.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/iomux-mx53.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/i2c.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/mxc_iim.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/check_fuse.h&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include "crm_regs.h"&lt;/P&gt;&lt;P&gt;#include "devices.h"&lt;/P&gt;&lt;P&gt;#include "usb.h"&lt;/P&gt;&lt;P&gt;#include "pmic.h"&lt;/P&gt;&lt;P&gt;#include "mx53_loco.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*!&lt;/P&gt;&lt;P&gt; * @file mach-mx5/mx53_loco.c&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * @brief This file contains MX53 loco board specific initialization routines.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * @ingroup MSL_MX53&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MX53 LOCO GPIO PIN configurations */&lt;/P&gt;&lt;P&gt;#define NVDD_FAULT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0*32 + 5)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO1_5 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define FEC_INT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1*32 + 4)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_2_4 */&lt;/P&gt;&lt;P&gt;#define HEADPHONE_DEC_B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1*32 + 5)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_2_5 */&lt;/P&gt;&lt;P&gt;#define MIC_DEC_B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1*32 + 6)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_2_6 */&lt;/P&gt;&lt;P&gt;#define USER_UI1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1*32 + 14)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_2_14 */&lt;/P&gt;&lt;P&gt;#define USER_UI2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1*32 + 15)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_2_15 */&lt;/P&gt;&lt;P&gt;#define MX53_nONKEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0*32 + 8)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_1_8 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SD3_CD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2*32 + 11)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_3_11 */&lt;/P&gt;&lt;P&gt;#define SD3_WP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2*32 + 12)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_3_12 */&lt;/P&gt;&lt;P&gt;#define DISP0_POWER_EN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2*32 + 24)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_3_24 */&lt;/P&gt;&lt;P&gt;#define DISP0_DET_INT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2*32 + 31)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_3_31 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define DISP0_RESET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (4*32 + 0)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_5_0 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define CSI0_RTSB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5*32 + 9)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_6_9 */&lt;/P&gt;&lt;P&gt;#define CSI0_PWDN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5*32 + 10)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_6_10 */&lt;/P&gt;&lt;P&gt;#define ACCL_EN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5*32 + 14)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_6_14 */&lt;/P&gt;&lt;P&gt;#define ACCL_INT1_IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5*32 + 15)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_6_15 */&lt;/P&gt;&lt;P&gt;#define ACCL_INT2_IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5*32 + 16)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_6_16 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define LCD_BLT_EN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6*32 + 2)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_7_2 */&lt;/P&gt;&lt;P&gt;#define FEC_RST&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6*32 + 6)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_7_6 */&lt;/P&gt;&lt;P&gt;#define USER_LED_EN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6*32 + 7)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_7_7 */&lt;/P&gt;&lt;P&gt;#define USB_PWREN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6*32 + 8)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_7_8 */&lt;/P&gt;&lt;P&gt;#define NIRQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6*32 + 11)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO7_11 */&lt;/P&gt;&lt;P&gt;#define MX53_LOCO_MC34708_IRQ_REVA&amp;nbsp;&amp;nbsp;&amp;nbsp; (4*32 + 30)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO5_30 */&lt;/P&gt;&lt;P&gt;#define MX53_LOCO_MC34708_IRQ_REVB&amp;nbsp;&amp;nbsp;&amp;nbsp; (4*32 + 23)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO5_23 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MX53_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x20000000)&lt;/P&gt;&lt;P&gt;#define TZIC_WAKEUP0_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x0E00)&lt;/P&gt;&lt;P&gt;#define TZIC_WAKEUP1_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x0E04)&lt;/P&gt;&lt;P&gt;#define TZIC_WAKEUP2_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x0E08)&lt;/P&gt;&lt;P&gt;#define TZIC_WAKEUP3_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x0E0C)&lt;/P&gt;&lt;P&gt;#define GPIO7_0_11_IRQ_BIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x1&amp;lt;&amp;lt;11)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;extern void pm_i2c_init(u32 base_addr);&lt;/P&gt;&lt;P&gt;static u32 mx53_loco_mc34708_irq;&lt;/P&gt;&lt;P&gt;static iomux_v3_cfg_t mx53_loco_pads[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FEC */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_MDC__FEC_MDC,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_MDIO__FEC_MDIO,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_REF_CLK__FEC_TX_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_RX_ER__FEC_RX_ER,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_CRS_DV__FEC_RX_DV,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_RXD1__FEC_RDATA_1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_RXD0__FEC_RDATA_0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_TX_EN__FEC_TX_EN,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_TXD1__FEC_TDATA_1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_TXD0__FEC_TDATA_0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FEC_nRST */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DA_0__GPIO7_6,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FEC_nINT */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA4__GPIO2_4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* AUDMUX5 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_COL0__AUDMUX_AUD5_TXC,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* I2C2 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_COL3__I2C2_SCL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_ROW3__I2C2_SDA,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* I2C3 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_3__I2C3_SCL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_6__I2C3_SDA,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SD1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_CMD__ESDHC1_CMD,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_CLK__ESDHC1_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_DATA0__ESDHC1_DAT0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_DATA1__ESDHC1_DAT1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_DATA2__ESDHC1_DAT2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_DATA3__ESDHC1_DAT3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SD3 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA8__ESDHC3_DAT0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA9__ESDHC3_DAT1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA10__ESDHC3_DAT2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA11__ESDHC3_DAT3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA0__ESDHC3_DAT4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA1__ESDHC3_DAT5,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA2__ESDHC3_DAT6,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA3__ESDHC3_DAT7,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_IORDY__ESDHC3_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_RESET_B__ESDHC3_CMD,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SD3_CD */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_DA11__GPIO3_11,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SD3_WP */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_DA12__GPIO3_12,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* VGA */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_OE__IPU_DI1_PIN7,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_RW__IPU_DI1_PIN8,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DISPLB */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D20__IPU_SER_DISP0_CS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D21__IPU_DISPB0_SER_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D22__IPU_DISPB0_SER_DIN,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D23__IPU_DI0_D0_CS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DISP0_POWER_EN */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D24__GPIO3_24,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DISP0 DET INT */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D31__GPIO3_31,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* LVDS */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS0_TX3_P__LDB_LVDS0_TX3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS0_CLK_P__LDB_LVDS0_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS0_TX2_P__LDB_LVDS0_TX2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS0_TX1_P__LDB_LVDS0_TX1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS0_TX0_P__LDB_LVDS0_TX0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS1_TX3_P__LDB_LVDS1_TX3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS1_TX2_P__LDB_LVDS1_TX2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS1_CLK_P__LDB_LVDS1_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS1_TX1_P__LDB_LVDS1_TX1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS1_TX0_P__LDB_LVDS1_TX0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* I2C1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT8__I2C1_SDA,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT9__I2C1_SCL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT10__UART1_TXD_MUX,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT11__UART1_RXD_MUX,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* CSI0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT13__IPU_CSI0_D_13,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT14__IPU_CSI0_D_14,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT15__IPU_CSI0_D_15,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT16__IPU_CSI0_D_16,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT17__IPU_CSI0_D_17,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT18__IPU_CSI0_D_18,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT19__IPU_CSI0_D_19,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_VSYNC__IPU_CSI0_VSYNC,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_MCLK__IPU_CSI0_HSYNC,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_PIXCLK__IPU_CSI0_PIXCLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DISPLAY */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DI0_DISP_CLK__IPU_DI0_DISP_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DI0_PIN15__IPU_DI0_PIN15,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DI0_PIN2__IPU_DI0_PIN2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DI0_PIN3__IPU_DI0_PIN3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT0__IPU_DISP0_DAT_0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT1__IPU_DISP0_DAT_1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT2__IPU_DISP0_DAT_2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT3__IPU_DISP0_DAT_3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT4__IPU_DISP0_DAT_4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT5__IPU_DISP0_DAT_5,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT6__IPU_DISP0_DAT_6,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT7__IPU_DISP0_DAT_7,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT8__IPU_DISP0_DAT_8,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT9__IPU_DISP0_DAT_9,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT10__IPU_DISP0_DAT_10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT11__IPU_DISP0_DAT_11,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT12__IPU_DISP0_DAT_12,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT13__IPU_DISP0_DAT_13,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT14__IPU_DISP0_DAT_14,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT15__IPU_DISP0_DAT_15,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT16__IPU_DISP0_DAT_16,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT17__IPU_DISP0_DAT_17,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT18__IPU_DISP0_DAT_18,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT19__IPU_DISP0_DAT_19,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT20__IPU_DISP0_DAT_20,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT21__IPU_DISP0_DAT_21,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT22__IPU_DISP0_DAT_22,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT23__IPU_DISP0_DAT_23,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Audio CLK*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* PWM */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_1__PWM2_PWMO,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SPDIF */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_7__SPDIF_PLOCK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_17__SPDIF_OUT1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DA_1__GPIO7_7,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DA_2__GPIO7_8,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA5__GPIO2_5,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA6__GPIO2_6,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA14__GPIO2_14,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA15__GPIO2_15,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_INTRQ__GPIO7_2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_WAIT__GPIO5_0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_NANDF_WP_B__GPIO6_9,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_NANDF_RB0__GPIO6_10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_NANDF_CS1__GPIO6_14,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_NANDF_CS2__GPIO6_15,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_NANDF_CS3__GPIO6_16,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_5__GPIO1_5,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_16__GPIO7_11,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_8__GPIO1_8,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void loco_da9053_irq_wakeup_only_fixup(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void __iomem *tzic_base;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tzic_base = ioremap(MX53_TZIC_BASE_ADDR, SZ_4K);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NULL == tzic_base) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pr_err("fail to map MX53_TZIC_BASE_ADDR\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __raw_writel(0, tzic_base + TZIC_WAKEUP0_OFFSET);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __raw_writel(0, tzic_base + TZIC_WAKEUP1_OFFSET);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __raw_writel(0, tzic_base + TZIC_WAKEUP2_OFFSET);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* only enable irq wakeup for da9053 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __raw_writel(GPIO7_0_11_IRQ_BIT, tzic_base + TZIC_WAKEUP3_OFFSET);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iounmap(tzic_base);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pr_info("only da9053 irq is wakeup-enabled\n");&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void loco_suspend_enter(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!board_is_mx53_loco_mc34708()) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loco_da9053_irq_wakeup_only_fixup();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da9053_suspend_cmd_sw();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void loco_suspend_exit(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!board_is_mx53_loco_mc34708()) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (da9053_get_chip_version())&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da9053_restore_volt_settings();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_pm_platform_data loco_pm_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .suspend_enter = loco_suspend_enter,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .suspend_exit = loco_suspend_exit,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct fb_videomode video_modes[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 800x480 @ 57 Hz , pixel clk @ 27MHz */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "CLAA-WVGA", 57, 800, 480, 37037, 40, 60, 10, 10, 20, 10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_SYNC_CLK_LAT_FALL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_VMODE_NONINTERLACED,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,},&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 800x480 @ 60 Hz , pixel clk @ 32MHz */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "SEIKO-WVGA", 60, 800, 480, 29850, 89, 164, 23, 10, 10, 10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_SYNC_CLK_LAT_FALL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_VMODE_NONINTERLACED,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,},&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 1600x1200 @ 60 Hz 162M pixel clk*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "UXGA", 60, 1600, 1200, 6172,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 304, 64,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1, 46,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 192, 3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_VMODE_NONINTERLACED,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,},&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct platform_pwm_backlight_data mxc_pwm_backlight_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .pwm_id = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_brightness = 255,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dft_brightness = 128,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .pwm_period_ns = 50000,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;extern void mx5_ipu_reset(void);&lt;/P&gt;&lt;P&gt;static struct mxc_ipu_config mxc_ipu_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .rev = 3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .reset = mx5_ipu_reset,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;extern void mx5_vpu_reset(void);&lt;/P&gt;&lt;P&gt;static struct mxc_vpu_platform_data mxc_vpu_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .iram_enable = true,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .iram_size = 0x14000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .reset = mx5_vpu_reset,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct fec_platform_data fec_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .phy = PHY_INTERFACE_MODE_RMII,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_dvfs_platform_data dvfs_core_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .clk1_id = "cpu_clk",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .clk2_id = "gpc_dvfs_clk",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .gpc_cntr_offset = MXC_GPC_CNTR_OFFSET,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .gpc_vcr_offset = MXC_GPC_VCR_OFFSET,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ccm_cdcr_offset = MXC_CCM_CDCR_OFFSET,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ccm_cacrr_offset = MXC_CCM_CACRR_OFFSET,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ccm_cdhipr_offset = MXC_CCM_CDHIPR_OFFSET,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .prediv_mask = 0x1F800,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .prediv_offset = 11,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .prediv_val = 3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .div3ck_mask = 0xE0000000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .div3ck_offset = 29,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .div3ck_val = 2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .emac_val = 0x08,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .upthr_val = 25,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dnthr_val = 9,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .pncthr_val = 33,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .upcnt_val = 10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dncnt_val = 10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .delay_time = 30,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_bus_freq_platform_data bus_freq_data;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct tve_platform_data tve_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_enable = MXC_TVE_VGA,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct ldb_platform_data ldb_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ext_ref = 1,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void mxc_iim_enable_fuse(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32 reg;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!ccm_base)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* enable fuse blown */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg = readl(ccm_base + 0x64);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg |= 0x10;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; writel(reg, ccm_base + 0x64);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void mxc_iim_disable_fuse(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32 reg;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!ccm_base)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* enable fuse blown */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg = readl(ccm_base + 0x64);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg &amp;amp;= ~0x10;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; writel(reg, ccm_base + 0x64);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_iim_data iim_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .bank_start = MXC_IIM_MX53_BANK_START_ADDR,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .bank_end&amp;nbsp;&amp;nbsp; = MXC_IIM_MX53_BANK_END_ADDR,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .enable_fuse = mxc_iim_enable_fuse,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .disable_fuse = mxc_iim_disable_fuse,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct resource mxcfb_resources[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [0] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .flags = IORESOURCE_MEM,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_fb_platform_data fb_data[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .interface_pix_fmt = IPU_PIX_FMT_RGB565,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode_str = "CLAA-WVGA",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode = video_modes,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .num_modes = ARRAY_SIZE(video_modes),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .interface_pix_fmt = IPU_PIX_FMT_GBR24,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode_str = "VGA-XGA",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode = video_modes,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .num_modes = ARRAY_SIZE(video_modes),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;extern int primary_di;&lt;/P&gt;&lt;P&gt;static int __init mxc_init_fb(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!machine_is_mx53_loco())&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*for loco board, set default display as VGA*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (primary_di &amp;lt; 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; primary_di = 1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (primary_di) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_INFO "DI1 is primary\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DI1 -&amp;gt; DP-BG channel: */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_fb_devices[1].num_resources = ARRAY_SIZE(mxcfb_resources);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_fb_devices[1].resource = mxcfb_resources;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fb_devices[1], &amp;amp;fb_data[1]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DI0 -&amp;gt; DC channel: */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fb_devices[0], &amp;amp;fb_data[0]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_INFO "DI0 is primary\n");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DI0 -&amp;gt; DP-BG channel: */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_fb_devices[0].num_resources = ARRAY_SIZE(mxcfb_resources);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_fb_devices[0].resource = mxcfb_resources;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fb_devices[0], &amp;amp;fb_data[0]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DI1 -&amp;gt; DC channel: */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fb_devices[1], &amp;amp;fb_data[1]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * DI0/1 DP-FG channel:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fb_devices[2], NULL);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;device_initcall(mxc_init_fb);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void sii902x_hdmi_reset(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(DISP0_RESET, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(10);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(DISP0_RESET, 1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(10);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int sii902x_get_pins(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Sii902x HDMI controller */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(DISP0_RESET, "disp0-reset");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(DISP0_RESET, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(DISP0_DET_INT, "disp0-detect");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(DISP0_DET_INT);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void sii902x_put_pins(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_free(DISP0_RESET);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_free(DISP0_DET_INT);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_lcd_platform_data sii902x_hdmi_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .reset = sii902x_hdmi_reset,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .fb_id = "DISP3 BG",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .get_pins = sii902x_get_pins,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .put_pins = sii902x_put_pins,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct imxi2c_platform_data mxci2c_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .bitrate = 100000,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = "mma8450",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addr = 0x1C,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = "sgtl5000-i2c",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addr = 0x0a,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = "sii902x",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addr = 0x39,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .irq = gpio_to_irq(DISP0_DET_INT),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .platform_data = &amp;amp;sii902x_hdmi_data,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int p1003_ts_hw_status(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return gpio_get_value(DISP0_DET_INT);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct p1003_ts_platform_data p1003_ts_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .hw_status = p1003_ts_hw_status,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = "p1003_fwv33",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addr = 0x41,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .irq&amp;nbsp; = gpio_to_irq(DISP0_DET_INT),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .platform_data = &amp;amp;p1003_ts_data,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = "egalax_ts",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addr = 0x4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .irq&amp;nbsp; = gpio_to_irq(DISP0_DET_INT),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int sdhc_write_protect(struct device *dev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int ret = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (to_platform_device(dev)-&amp;gt;id == 2)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret = gpio_get_value(SD3_WP);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ret;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static unsigned int sdhc_get_card_det_status(struct device *dev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int ret = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (to_platform_device(dev)-&amp;gt;id == 2)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret = gpio_get_value(SD3_CD);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ret;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_mmc_platform_data mmc1_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29 | MMC_VDD_29_30&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MMC_VDD_31_32,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .caps = MMC_CAP_4_BIT_DATA,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_clk = 400000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_clk = 50000000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .card_inserted_state = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .clock_mmc = "esdhc_clk",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .power_mmc = NULL,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_mmc_platform_data mmc3_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29 | MMC_VDD_29_30&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MMC_VDD_31_32,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MMC_CAP_DATA_DDR,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_clk = 400000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_clk = 50000000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .card_inserted_state = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .status = sdhc_get_card_det_status,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .wp_status = sdhc_write_protect,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .clock_mmc = "esdhc_clk",&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int headphone_det_status(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (gpio_get_value(HEADPHONE_DEC_B) == 0);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int mxc_sgtl5000_init(void);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_audio_platform_data sgtl5000_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ssi_num = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .src_port = 2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ext_port = 5,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .hp_irq = gpio_to_irq(HEADPHONE_DEC_B),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .hp_status = headphone_det_status,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init = mxc_sgtl5000_init,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ext_ram_rx = 1,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int mxc_sgtl5000_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct clk *ssi_ext1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int rate;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssi_ext1 = clk_get(NULL, "ssi_ext1_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (IS_ERR(ssi_ext1))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rate = clk_round_rate(ssi_ext1, 24000000);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rate &amp;lt; 8000000 || rate &amp;gt; 27000000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_ERR "Error: SGTL5000 mclk freq %d out of range!\n",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(ssi_ext1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_set_rate(ssi_ext1, rate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_enable(ssi_ext1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sgtl5000_data.sysclk = rate;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct platform_device mxc_sgtl5000_device = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "imx-3stack-sgtl5000",&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_asrc_platform_data mxc_asrc_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .channel_bits = 4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .clk_map_ver = 2,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_spdif_platform_data mxc_spdif_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_tx = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_rx = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_clk_44100 = -1,&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Souce from CKIH1 for 44.1K */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Source from CCM spdif_clk (24M) for 48k and 32k&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * It's not accurate&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_clk_48000 = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_clkid = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_clk = NULL,&amp;nbsp;&amp;nbsp;&amp;nbsp; /* spdif bus clk */&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_audio_platform_data spdif_audio_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ext_ram_tx = 1,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct platform_device mxc_spdif_audio_device = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "imx-spdif-audio-device",&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void mx53_loco_usbh1_vbus(bool on)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (on)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(USB_PWREN, 1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(USB_PWREN, 0);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)&lt;/P&gt;&lt;P&gt;#define GPIO_BUTTON(gpio_num, ev_code, act_low, descr, wake)&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .gpio&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = gpio_num,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = EV_KEY,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = ev_code,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .active_low&amp;nbsp;&amp;nbsp;&amp;nbsp; = act_low,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .desc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = "btn " descr,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .wakeup&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = wake,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct gpio_keys_button loco_buttons[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_BUTTON(MX53_nONKEY, KEY_POWER, 1, "power", 0),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_BUTTON(USER_UI1, KEY_VOLUMEUP, 1, "volume-up", 0),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_BUTTON(USER_UI2, KEY_VOLUMEDOWN, 1, "volume-down", 0),&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct gpio_keys_platform_data loco_button_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .buttons&amp;nbsp;&amp;nbsp;&amp;nbsp; = loco_buttons,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .nbuttons&amp;nbsp;&amp;nbsp;&amp;nbsp; = ARRAY_SIZE(loco_buttons),&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct platform_device loco_button_device = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = "gpio-keys",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = -1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .num_resources&amp;nbsp; = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dev&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .platform_data = &amp;amp;loco_button_data,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void __init loco_add_device_buttons(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; platform_device_register(&amp;amp;loco_button_device);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;static void __init loco_add_device_buttons(void) {}&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void mxc_register_powerkey(pwrkey_callback pk_cb)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_event_callback_t power_key_event;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; power_key_event.param = (void *)1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; power_key_event.func = (void *)pk_cb;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_event_subscribe(EVENT_PWRONI, power_key_event);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int mxc_pwrkey_getstatus(int id)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int sense;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_INT_SENSE1, &amp;amp;sense, 0xffffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sense &amp;amp; (1 &amp;lt;&amp;lt; 3))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct power_key_platform_data pwrkey_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .key_value = KEY_F4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .register_pwrkey = mxc_register_powerkey,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .get_key_status = mxc_pwrkey_getstatus,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*!&lt;/P&gt;&lt;P&gt; * Board specific fixup function. It is called by \b setup_arch() in&lt;/P&gt;&lt;P&gt; * setup.c file very early on during kernel starts. It allows the user to&lt;/P&gt;&lt;P&gt; * statically fill in the proper values for the passed-in parameters. None of&lt;/P&gt;&lt;P&gt; * the parameters is used currently.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * @param&amp;nbsp; desc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer to \b struct \b machine_desc&lt;/P&gt;&lt;P&gt; * @param&amp;nbsp; tags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer to \b struct \b tag&lt;/P&gt;&lt;P&gt; * @param&amp;nbsp; cmdline&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer to the command line&lt;/P&gt;&lt;P&gt; * @param&amp;nbsp; mi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer to \b struct \b meminfo&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;static void __init fixup_mxc_board(struct machine_desc *desc, struct tag *tags,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char **cmdline, struct meminfo *mi)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct tag *t;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct tag *mem_tag = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int total_mem = SZ_1G;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int left_mem = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int gpu_mem = SZ_128M;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int fb_mem = SZ_32M;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char *str;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_set_cpu_type(MXC_CPU_MX53);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for_each_tag(mem_tag, tags) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mem_tag-&amp;gt;hdr.tag == ATAG_MEM) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; total_mem = mem_tag-&amp;gt;u.mem.size;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for_each_tag(t, tags) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (t-&amp;gt;hdr.tag == ATAG_CMDLINE) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = t-&amp;gt;u.cmdline.cmdline;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = strstr(str, "mem=");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (str != NULL) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += 4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; left_mem = memparse(str, &amp;amp;str);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = t-&amp;gt;u.cmdline.cmdline;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = strstr(str, "gpu_nommu");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (str != NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_data.enable_mmu = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = t-&amp;gt;u.cmdline.cmdline;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = strstr(str, "gpu_memory=");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (str != NULL) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += 11;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_mem = memparse(str, &amp;amp;str);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (gpu_data.enable_mmu)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_mem = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (left_mem == 0 || left_mem &amp;gt; total_mem)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; left_mem = total_mem - gpu_mem - fb_mem;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mem_tag) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fb_mem = total_mem - left_mem - gpu_mem;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (fb_mem &amp;lt; 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_mem = total_mem - left_mem;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fb_mem = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem_tag-&amp;gt;u.mem.size = left_mem;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*reserve memory for gpu*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!gpu_data.enable_mmu) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_device.resource[5].start =&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem_tag-&amp;gt;u.mem.start + left_mem;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_device.resource[5].end =&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_device.resource[5].start + gpu_mem - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;#if defined(CONFIG_FB_MXC_SYNC_PANEL) || \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; defined(CONFIG_FB_MXC_SYNC_PANEL_MODULE)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (fb_mem) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcfb_resources[0].start =&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_data.enable_mmu ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem_tag-&amp;gt;u.mem.start + left_mem :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_device.resource[5].end + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcfb_resources[0].end =&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcfb_resources[0].start + fb_mem - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcfb_resources[0].start = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcfb_resources[0].end = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void __init mx53_loco_io_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY_SIZE(mx53_loco_pads));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SD3 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(SD3_CD, "sd3-cd");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(SD3_CD);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(SD3_WP, "sd3-wp");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(SD3_WP);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* reset FEC PHY */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(FEC_RST, "fec-rst");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(FEC_RST, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(FEC_RST, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(FEC_RST, 1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* headphone_det_b */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(HEADPHONE_DEC_B, "headphone-dec");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(HEADPHONE_DEC_B);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* USB PWR enable */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(USB_PWREN, "usb-pwr");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(USB_PWREN, 0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* LCD panel power enable */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(DISP0_POWER_EN, "disp0-power-en");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(DISP0_POWER_EN, 1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*!&lt;/P&gt;&lt;P&gt; * Board specific initialization.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;static void __init mxc_board_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iomux_v3_cfg_t mc34708_int = MX53_PAD_CSI0_DAT12__GPIO5_30;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iomux_v3_cfg_t da9052_csi0_d12;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_ipu_data.di_clk[0] = clk_get(NULL, "ipu_di0_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_ipu_data.di_clk[1] = clk_get(NULL, "ipu_di1_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_ipu_data.csi_clk[0] = clk_get(NULL, "ssi_ext1_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_spdif_data.spdif_core_clk = clk_get(NULL, "spdif_xtal_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(mxc_spdif_data.spdif_core_clk);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcsdhc3_device.resource[2].start = gpio_to_irq(SD3_CD);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcsdhc3_device.resource[2].end = gpio_to_irq(SD3_CD);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_cpu_common_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_io_init();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_dma_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_wdt_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxci2c_devices[0], &amp;amp;mxci2c_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxci2c_devices[1], &amp;amp;mxci2c_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxci2c_devices[2], &amp;amp;mxci2c_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if (board_is_mx53_loco_mc34708()) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(1){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* set pmic INT gpio pin */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if (board_is_rev(BOARD_REV_2)) {/*Board rev A*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_int = MX53_PAD_CSI0_DAT12__GPIO5_30;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_mc34708_irq = MX53_LOCO_MC34708_IRQ_REVA;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //} else if (board_is_rev(BOARD_REV_4)) {/*Board rev B*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_int = MX53_PAD_CSI0_DAT5__GPIO5_23;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_mc34708_irq = MX53_LOCO_MC34708_IRQ_REVB;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_iomux_v3_setup_pad(mc34708_int);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(mx53_loco_mc34708_irq, "pmic-int");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(mx53_loco_mc34708_irq);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_init_mc34708(mx53_loco_mc34708_irq);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dvfs_core_data.reg_id = "SW1A";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tve_data.dac_reg = "VDAC";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bus_freq_data.gp_reg_id = "SW1A";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bus_freq_data.lp_reg_id = "SW2";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_powerkey_device, &amp;amp;pwrkey_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da9052_csi0_d12 = MX53_PAD_CSI0_DAT12__IPU_CSI0_D_12;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_iomux_v3_setup_pad(da9052_csi0_d12);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_init_da9052();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dvfs_core_data.reg_id = "DA9052_BUCK_CORE";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tve_data.dac_reg = "DA9052_LDO7";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bus_freq_data.gp_reg_id = "DA9052_BUCK_CORE";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bus_freq_data.lp_reg_id = "DA9052_BUCK_PRO";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_rtc_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_ipu_device, &amp;amp;mxc_ipu_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_ldb_device, &amp;amp;ldb_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_tve_device, &amp;amp;tve_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!mxc_fuse_get_vpu_status())&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxcvpu_device, &amp;amp;mxc_vpu_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!mxc_fuse_get_gpu_status())&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;gpu_device, &amp;amp;gpu_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxcscc_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;pm_device, &amp;amp;loco_pm_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_dvfs_core_device, &amp;amp;dvfs_core_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;busfreq_device, &amp;amp;bus_freq_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_iim_device, &amp;amp;iim_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_pwm2_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_pwm1_backlight_device, &amp;amp;mxc_pwm_backlight_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxcsdhc1_device, &amp;amp;mmc1_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxcsdhc3_device, &amp;amp;mmc3_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_ssi1_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_ssi2_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_alsa_spdif_device, &amp;amp;mxc_spdif_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;ahci_fsl_device, &amp;amp;sata_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;imx_ahci_device_hwmon, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fec_device, &amp;amp;fec_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_ptp_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ASRC is only available for MX53 TO2.0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mx53_revision() &amp;gt;= IMX_CHIP_REVISION_2_0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_asrc_data.asrc_core_clk = clk_get(NULL, "asrc_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(mxc_asrc_data.asrc_core_clk);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_asrc_data.asrc_audio_clk = clk_get(NULL, "asrc_serial_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(mxc_asrc_data.asrc_audio_clk);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_asrc_device, &amp;amp;mxc_asrc_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_register_board_info(0, mxc_i2c0_board_info,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY_SIZE(mxc_i2c0_board_info));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_register_board_info(1, mxc_i2c1_board_info,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY_SIZE(mxc_i2c1_board_info));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_register_board_info(2, mxc_i2c2_board_info,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY_SIZE(mxc_i2c2_board_info));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sgtl5000_data.ext_ram_clk = clk_get(NULL, "emi_fast_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(sgtl5000_data.ext_ram_clk);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_sgtl5000_device, &amp;amp;sgtl5000_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spdif_audio_data.ext_ram_clk = clk_get(NULL, "emi_fast_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(spdif_audio_data.ext_ram_clk);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_spdif_audio_device, &amp;amp;spdif_audio_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx5_usb_dr_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx5_set_host1_vbus_func(mx53_loco_usbh1_vbus);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx5_usbh1_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_v4l2_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_v4l2out_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; loco_add_device_buttons();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //pm_power_off = da9053_power_off;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pm_power_off = mc34708_power_off;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pm_i2c_init(I2C1_BASE_ADDR - MX53_OFFSET);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void __init mx53_loco_timer_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct clk *uart_clk;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_clocks_init(32768, 24000000, 0, 0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uart_clk = clk_get_sys("mxcintuart.0", NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; early_console_setup(MX53_BASE_ADDR(UART1_BASE_ADDR), uart_clk);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct sys_timer mxc_timer = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init&amp;nbsp;&amp;nbsp;&amp;nbsp; = mx53_loco_timer_init,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * The following uses standard kernel macros define in arch.h in order to&lt;/P&gt;&lt;P&gt; * initialize __mach_desc_MX53_LOCO data structure.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Maintainer: Freescale Semiconductor, Inc. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .fixup = fixup_mxc_board,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .map_io = mx5_map_io,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init_irq = mx5_init_irq,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init_machine = mxc_board_init,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .timer = &amp;amp;mxc_timer,&lt;/P&gt;&lt;P&gt;MACHINE_END&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;mx53_loco_pmic_mc34708.c:&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * This program is free software; you can redistribute it and/or modify&lt;/P&gt;&lt;P&gt; * it under the terms of the GNU General Public License as published by&lt;/P&gt;&lt;P&gt; * the Free Software Foundation; either version 2 of the License, or&lt;/P&gt;&lt;P&gt; * (at your option) any later version.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * This program is distributed in the hope that it will be useful,&lt;/P&gt;&lt;P&gt; * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/P&gt;&lt;P&gt; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&amp;nbsp; See the&lt;/P&gt;&lt;P&gt; * GNU General Public License for more details.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * You should have received a copy of the GNU General Public License&lt;/P&gt;&lt;P&gt; * along with this program; if not, write to the Free Software&lt;/P&gt;&lt;P&gt; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA&amp;nbsp; 02111-1307 USA&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/module.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/init.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/platform_device.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/i2c.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/irq.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/interrupt.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/err.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pmic_external.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/regulator/machine.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mfd/mc34708/core.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/irqs.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/iomux-mx53.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/gpio.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include "pmic.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * Convenience conversion.&lt;/P&gt;&lt;P&gt; * Here atm, maybe there is somewhere better for this.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;#define mV_to_uV(mV) (mV * 1000)&lt;/P&gt;&lt;P&gt;#define uV_to_mV(uV) (uV / 1000)&lt;/P&gt;&lt;P&gt;#define V_to_uV(V) (mV_to_uV(V * 1000))&lt;/P&gt;&lt;P&gt;#define uV_to_V(uV) (uV_to_mV(uV) / 1000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* regulator standby mask */&lt;/P&gt;&lt;P&gt;#define GEN1_STBY_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; 1)&lt;/P&gt;&lt;P&gt;#define GEN2_STBY_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; 13)&lt;/P&gt;&lt;P&gt;#define PLL_STBY_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; 16)&lt;/P&gt;&lt;P&gt;#define USB2_STBY_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; 19)&lt;/P&gt;&lt;P&gt;#define USB_EN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; 3)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define REG_MODE_0_ALL_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp; (GEN1_STBY_MASK)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SW1A_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 0)&lt;/P&gt;&lt;P&gt;#define SW2_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 14)&lt;/P&gt;&lt;P&gt;#define SW1A_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xc &amp;lt;&amp;lt; 0)&lt;/P&gt;&lt;P&gt;#define SW2_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xc &amp;lt;&amp;lt; 14)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define REG_SW_1_2_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp; (SW1A_MODE_MASK | SW2_MODE_MASK)&lt;/P&gt;&lt;P&gt;#define REG_SW_1_2_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp; (SW1A_MODE_VALUE | SW2_MODE_VALUE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SW3_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 0)&lt;/P&gt;&lt;P&gt;#define SW4A_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 6)&lt;/P&gt;&lt;P&gt;#define SW4B_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 12)&lt;/P&gt;&lt;P&gt;#define SW5_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 18)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SW3_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x0 &amp;lt;&amp;lt; 0)&lt;/P&gt;&lt;P&gt;#define SW4A_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xc &amp;lt;&amp;lt; 6)&lt;/P&gt;&lt;P&gt;#define SW4B_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xc &amp;lt;&amp;lt; 12)&lt;/P&gt;&lt;P&gt;#define SW5_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xc &amp;lt;&amp;lt; 18)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define REG_SW_3_4_5_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp; (SW3_MODE_MASK | SW4A_MODE_MASK\&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SW4B_MODE_MASK | SW5_MODE_MASK)&lt;/P&gt;&lt;P&gt;#define REG_SW_3_4_5_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp; (SW3_MODE_VALUE | SW4A_MODE_VALUE\&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SW4B_MODE_VALUE | SW5_MODE_VALUE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SWBST_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x3 &amp;lt;&amp;lt; 5)&lt;/P&gt;&lt;P&gt;#define SWBST_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x2 &amp;lt;&amp;lt; 5)&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Auto mode*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define REG_SWBST_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp; (SWBST_MODE_MASK)&lt;/P&gt;&lt;P&gt;#define REG_SWBST_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp; (SWBST_MODE_VALUE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SWHOLD_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x1 &amp;lt;&amp;lt; 12)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MC34708_I2C_DEVICE_NAME&amp;nbsp; "mc34708"&lt;/P&gt;&lt;P&gt;/* 7-bit I2C bus slave address */&lt;/P&gt;&lt;P&gt;#define MC34708_I2C_ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x08)&lt;/P&gt;&lt;P&gt;#define MX53_LOCO_MC34708_IRQ&amp;nbsp;&amp;nbsp;&amp;nbsp; (4*32 + 30)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO5_30 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;struct mc34708;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw1a_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW1",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = 650000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = 1437500,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_modes_mask = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .initial_state = PM_SUSPEND_MEM,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .state_mem = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .uV = 850000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode = REGULATOR_MODE_NORMAL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .enabled = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw1b_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW1B",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = 650000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = 1437500,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_modes_mask = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw2_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW2",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = 650000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = 1437500,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .initial_state = PM_SUSPEND_MEM,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .state_mem = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .uV = 950000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode = REGULATOR_MODE_NORMAL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .enabled = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw3_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW3",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = 650000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = 1425000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw4a_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW4A",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(1200),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(3300),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw4b_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW4B",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(1200),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(3300),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw5_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW5",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(1200),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(1975),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vrefddr_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VREFDDR",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vusb_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VUSB",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_STATUS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data swbst_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SWBST",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_STATUS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vpll_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VPLL",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(1200),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(1800),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vdac_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VDAC",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(2500),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(2775),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vusb2_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VUSB2",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(2500),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(3000),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vgen1_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VGEN1",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(1200),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(1550),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vgen2_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VGEN2",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(2500),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(3300),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int mc34708_regulator_init(struct mc34708 *mc34708)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int value;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_IDENTIFICATION, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pr_info("PMIC MC34708 ID:0x%x\n", value);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("PMIC_34708");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* setting switch operating mode for SW1/2 regulators */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_SW_1_2_OP, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value &amp;amp;= ~REG_SW_1_2_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value |= REG_SW_1_2_VALUE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_write_reg(REG_MC34708_SW_1_2_OP, value, 0xffffff);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* setting switch operating mode for SW3/4/5 regulators */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_SW_3_4_5_OP, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value &amp;amp;= ~REG_SW_3_4_5_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value |= REG_SW_3_4_5_VALUE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_write_reg(REG_MC34708_SW_3_4_5_OP, value, 0xffffff);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* setting switch operating mode for SWBST regulators */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_SWBST, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value &amp;amp;= ~REG_SWBST_MODE_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value |= REG_SWBST_MODE_VALUE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_write_reg(REG_MC34708_SWBST, value, 0xffffff);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* clear SWHOLD bit&amp;nbsp; to enable USB MUX */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_USB_CONTROL, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value &amp;amp;= ~SWHOLD_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_write_reg(REG_MC34708_USB_CONTROL, value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* enable WDI reset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_POWER_CTL2, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value |= 0x1000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_write_reg(REG_MC34708_POWER_CTL2, value, 0xffffff);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW1A, &amp;amp;sw1a_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW1B, &amp;amp;sw1b_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW2, &amp;amp;sw2_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW3, &amp;amp;sw3_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW4A, &amp;amp;sw4a_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW4B, &amp;amp;sw4b_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW5, &amp;amp;sw5_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SWBST, &amp;amp;swbst_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VPLL, &amp;amp;vpll_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VREFDDR, &amp;amp;vrefddr_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VDAC, &amp;amp;vdac_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VUSB, &amp;amp;vusb_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VUSB2, &amp;amp;vusb2_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VGEN1, &amp;amp;vgen1_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VGEN2, &amp;amp;vgen2_init);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; regulator_has_full_constraints();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mc34708_platform_data mc34708_plat = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init = mc34708_regulator_init,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct i2c_board_info __initdata mc34708_i2c_device = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_BOARD_INFO(MC34708_I2C_DEVICE_NAME, MC34708_I2C_ADDR),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .platform_data = &amp;amp;mc34708_plat,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;int __init mx53_loco_init_mc34708(u32 int_gpio)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_i2c_device.irq = gpio_to_irq(int_gpio);/*update INT gpio*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return i2c_register_board_info(0, &amp;amp;mc34708_i2c_device, 1);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 22 Jun 2013 12:48:15 GMT</pubDate>
    <dc:creator>vicliu</dc:creator>
    <dc:date>2013-06-22T12:48:15Z</dc:date>
    <item>
      <title>MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232307#M17722</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;I am working with imx53 board and using the mc34708 to provide touchscreen.&lt;/P&gt;&lt;P&gt;I have already load adc driver and MXC touch screen driver, but it doesn't work.&lt;/P&gt;&lt;P&gt;and use evtest /dev/input/event2 for testing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dmesg:&lt;/P&gt;&lt;P&gt;input: gpio-keys as /devices/platform/gpio-keys/input/input0&lt;/P&gt;&lt;P&gt;input: mxc_power_key as /devices/virtual/input/input1&lt;/P&gt;&lt;P&gt;input: mxc_ts as /devices/virtual/input/input2&lt;/P&gt;&lt;P&gt;mxc input touchscreen loaded&lt;/P&gt;&lt;P&gt;PMIC Light driver loading...&lt;/P&gt;&lt;P&gt;PMIC MC34708 ID:0x14&lt;/P&gt;&lt;P&gt;PMIC powerkey probe&lt;/P&gt;&lt;P&gt;PMIC Character device: successfully loaded&lt;/P&gt;&lt;P&gt;PMIC ADC start probe&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;what else do I left??&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Vic.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Jun 2013 02:58:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232307#M17722</guid>
      <dc:creator>vicliu</dc:creator>
      <dc:date>2013-06-21T02:58:28Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232308#M17723</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,liu,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; please open linux/drivers/input/touchscreen/Kconfig, and found:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;depends on MXC_MC13783_ADC || MXC_MC13892_ADC &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;change it to :&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;depends on MXC_MC13783_ADC || MXC_MC13892_ADC || MXC_MC34708_ADC&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then when you run make menuconfig on command line, mxc touchscreen driver could be selected.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Then check if MC34708 was initialized in your BSP file. from your log, mc34708 is not found on i2c bus. please open linux/drivers/mxc/pmic/pmic_core_i2c.c , and find pmic_probe funtion, do following modification:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static int __devinit pmic_probe(struct i2c_client *client, const struct i2c_device_id *id)&lt;/STRONG&gt;&lt;BR /&gt;{&lt;BR /&gt; int ret = 0;&lt;BR /&gt; int pmic_irq;&lt;BR /&gt; struct pmic_platform_data *plat_data = client-&amp;gt;dev.platform_data;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt; const char *name="mc34708";&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt; int pmic_index;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;/* ret = is_chip_onboard(client);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt; if (ret == -1)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;&amp;nbsp; return -ENODEV;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt; name = get_chipname(client);*/&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;......&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; &lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Weidong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Jun 2013 09:25:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232308#M17723</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2013-06-21T09:25:17Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232309#M17724</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,Weidon&lt;BR /&gt;Thank you first, I follow your step, but it still does not work.&lt;BR /&gt;I even use I2C tool to check this. Seems find out the 0x08 device.&lt;/P&gt;&lt;P&gt;What else information may I provide?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;lucid@lucid-desktop:~$ sudo i2cdetect -y -r 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; 1&amp;nbsp; 2&amp;nbsp; 3&amp;nbsp; 4&amp;nbsp; 5&amp;nbsp; 6&amp;nbsp; 7&amp;nbsp; 8&amp;nbsp; 9&amp;nbsp; a&amp;nbsp; b&amp;nbsp; c&amp;nbsp; d&amp;nbsp; e&amp;nbsp; f&lt;/P&gt;&lt;P&gt;00:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- -- -- -- -- UU -- -- -- -- -- -- --&lt;/P&gt;&lt;P&gt;10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;/P&gt;&lt;P&gt;20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;/P&gt;&lt;P&gt;30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;/P&gt;&lt;P&gt;40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;/P&gt;&lt;P&gt;50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;/P&gt;&lt;P&gt;60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;/P&gt;&lt;P&gt;70: -- -- -- -- -- -- -- --&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Jun 2013 10:40:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232309#M17724</guid>
      <dc:creator>vicliu</dc:creator>
      <dc:date>2013-06-21T10:40:48Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232310#M17725</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,vic,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Please paste your BSP file(like mx53_loco.c and mx53_loco_mc34708.c) here, Let me check if mc34708 is correctly initialized.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Weidong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 22 Jun 2013 03:58:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232310#M17725</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2013-06-22T03:58:07Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232311#M17726</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Weidong,&lt;/P&gt;&lt;P&gt;Here is my mx53_loco.c code, and have had little modified by me. Because MC34708 not supply power for USB. My Bsp only has mx53_loco_pmic_mc34708.c. I paste it in the lastest part.&lt;/P&gt;&lt;P&gt;mx53_loco.c:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * Copyright (C) 2010-2011 Freescale Semiconductor, Inc. All Rights Reserved.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * This program is free software; you can redistribute it and/or modify&lt;/P&gt;&lt;P&gt; * it under the terms of the GNU General Public License as published by&lt;/P&gt;&lt;P&gt; * the Free Software Foundation; either version 2 of the License, or&lt;/P&gt;&lt;P&gt; * (at your option) any later version.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; * This program is distributed in the hope that it will be useful,&lt;/P&gt;&lt;P&gt; * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/P&gt;&lt;P&gt; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&amp;nbsp; See the&lt;/P&gt;&lt;P&gt; * GNU General Public License for more details.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; * You should have received a copy of the GNU General Public License along&lt;/P&gt;&lt;P&gt; * with this program; if not, write to the Free Software Foundation, Inc.,&lt;/P&gt;&lt;P&gt; * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/types.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/sched.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/delay.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pm.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/interrupt.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/irq.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/init.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/input.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/nodemask.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/clk.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/platform_device.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/fsl_devices.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/spi/spi.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/i2c.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/ata.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mtd/mtd.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mtd/map.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mtd/partitions.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/regulator/consumer.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pmic_external.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pmic_status.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/ipu.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mxcfb.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pwm_backlight.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/fec.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/powerkey.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/ahci_platform.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/gpio_keys.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mfd/da9052/da9052.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/common.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/hardware.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/irq.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/setup.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/mach-types.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/mach/arch.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/mach/time.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/mach/keypad.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/mach/flash.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/memory.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/gpio.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/mmc.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/mxc_dvfs.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/iomux-mx53.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/i2c.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/mxc_iim.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/check_fuse.h&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include "crm_regs.h"&lt;/P&gt;&lt;P&gt;#include "devices.h"&lt;/P&gt;&lt;P&gt;#include "usb.h"&lt;/P&gt;&lt;P&gt;#include "pmic.h"&lt;/P&gt;&lt;P&gt;#include "mx53_loco.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*!&lt;/P&gt;&lt;P&gt; * @file mach-mx5/mx53_loco.c&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * @brief This file contains MX53 loco board specific initialization routines.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * @ingroup MSL_MX53&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MX53 LOCO GPIO PIN configurations */&lt;/P&gt;&lt;P&gt;#define NVDD_FAULT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0*32 + 5)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO1_5 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define FEC_INT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1*32 + 4)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_2_4 */&lt;/P&gt;&lt;P&gt;#define HEADPHONE_DEC_B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1*32 + 5)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_2_5 */&lt;/P&gt;&lt;P&gt;#define MIC_DEC_B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1*32 + 6)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_2_6 */&lt;/P&gt;&lt;P&gt;#define USER_UI1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1*32 + 14)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_2_14 */&lt;/P&gt;&lt;P&gt;#define USER_UI2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1*32 + 15)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_2_15 */&lt;/P&gt;&lt;P&gt;#define MX53_nONKEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0*32 + 8)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_1_8 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SD3_CD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2*32 + 11)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_3_11 */&lt;/P&gt;&lt;P&gt;#define SD3_WP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2*32 + 12)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_3_12 */&lt;/P&gt;&lt;P&gt;#define DISP0_POWER_EN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2*32 + 24)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_3_24 */&lt;/P&gt;&lt;P&gt;#define DISP0_DET_INT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2*32 + 31)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_3_31 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define DISP0_RESET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (4*32 + 0)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_5_0 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define CSI0_RTSB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5*32 + 9)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_6_9 */&lt;/P&gt;&lt;P&gt;#define CSI0_PWDN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5*32 + 10)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_6_10 */&lt;/P&gt;&lt;P&gt;#define ACCL_EN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5*32 + 14)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_6_14 */&lt;/P&gt;&lt;P&gt;#define ACCL_INT1_IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5*32 + 15)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_6_15 */&lt;/P&gt;&lt;P&gt;#define ACCL_INT2_IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5*32 + 16)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_6_16 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define LCD_BLT_EN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6*32 + 2)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_7_2 */&lt;/P&gt;&lt;P&gt;#define FEC_RST&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6*32 + 6)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_7_6 */&lt;/P&gt;&lt;P&gt;#define USER_LED_EN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6*32 + 7)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_7_7 */&lt;/P&gt;&lt;P&gt;#define USB_PWREN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6*32 + 8)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO_7_8 */&lt;/P&gt;&lt;P&gt;#define NIRQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6*32 + 11)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO7_11 */&lt;/P&gt;&lt;P&gt;#define MX53_LOCO_MC34708_IRQ_REVA&amp;nbsp;&amp;nbsp;&amp;nbsp; (4*32 + 30)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO5_30 */&lt;/P&gt;&lt;P&gt;#define MX53_LOCO_MC34708_IRQ_REVB&amp;nbsp;&amp;nbsp;&amp;nbsp; (4*32 + 23)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO5_23 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MX53_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x20000000)&lt;/P&gt;&lt;P&gt;#define TZIC_WAKEUP0_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x0E00)&lt;/P&gt;&lt;P&gt;#define TZIC_WAKEUP1_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x0E04)&lt;/P&gt;&lt;P&gt;#define TZIC_WAKEUP2_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x0E08)&lt;/P&gt;&lt;P&gt;#define TZIC_WAKEUP3_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x0E0C)&lt;/P&gt;&lt;P&gt;#define GPIO7_0_11_IRQ_BIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x1&amp;lt;&amp;lt;11)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;extern void pm_i2c_init(u32 base_addr);&lt;/P&gt;&lt;P&gt;static u32 mx53_loco_mc34708_irq;&lt;/P&gt;&lt;P&gt;static iomux_v3_cfg_t mx53_loco_pads[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FEC */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_MDC__FEC_MDC,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_MDIO__FEC_MDIO,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_REF_CLK__FEC_TX_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_RX_ER__FEC_RX_ER,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_CRS_DV__FEC_RX_DV,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_RXD1__FEC_RDATA_1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_RXD0__FEC_RDATA_0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_TX_EN__FEC_TX_EN,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_TXD1__FEC_TDATA_1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_FEC_TXD0__FEC_TDATA_0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FEC_nRST */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DA_0__GPIO7_6,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FEC_nINT */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA4__GPIO2_4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* AUDMUX5 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_COL0__AUDMUX_AUD5_TXC,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* I2C2 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_COL3__I2C2_SCL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_KEY_ROW3__I2C2_SDA,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* I2C3 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_3__I2C3_SCL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_6__I2C3_SDA,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SD1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_CMD__ESDHC1_CMD,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_CLK__ESDHC1_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_DATA0__ESDHC1_DAT0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_DATA1__ESDHC1_DAT1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_DATA2__ESDHC1_DAT2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_SD1_DATA3__ESDHC1_DAT3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SD3 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA8__ESDHC3_DAT0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA9__ESDHC3_DAT1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA10__ESDHC3_DAT2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA11__ESDHC3_DAT3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA0__ESDHC3_DAT4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA1__ESDHC3_DAT5,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA2__ESDHC3_DAT6,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA3__ESDHC3_DAT7,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_IORDY__ESDHC3_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_RESET_B__ESDHC3_CMD,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SD3_CD */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_DA11__GPIO3_11,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SD3_WP */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_DA12__GPIO3_12,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* VGA */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_OE__IPU_DI1_PIN7,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_RW__IPU_DI1_PIN8,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DISPLB */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D20__IPU_SER_DISP0_CS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D21__IPU_DISPB0_SER_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D22__IPU_DISPB0_SER_DIN,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D23__IPU_DI0_D0_CS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DISP0_POWER_EN */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D24__GPIO3_24,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DISP0 DET INT */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_D31__GPIO3_31,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* LVDS */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS0_TX3_P__LDB_LVDS0_TX3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS0_CLK_P__LDB_LVDS0_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS0_TX2_P__LDB_LVDS0_TX2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS0_TX1_P__LDB_LVDS0_TX1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS0_TX0_P__LDB_LVDS0_TX0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS1_TX3_P__LDB_LVDS1_TX3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS1_TX2_P__LDB_LVDS1_TX2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS1_CLK_P__LDB_LVDS1_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS1_TX1_P__LDB_LVDS1_TX1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_LVDS1_TX0_P__LDB_LVDS1_TX0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* I2C1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT8__I2C1_SDA,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT9__I2C1_SCL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT10__UART1_TXD_MUX,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT11__UART1_RXD_MUX,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* CSI0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT13__IPU_CSI0_D_13,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT14__IPU_CSI0_D_14,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT15__IPU_CSI0_D_15,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT16__IPU_CSI0_D_16,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT17__IPU_CSI0_D_17,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT18__IPU_CSI0_D_18,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_DAT19__IPU_CSI0_D_19,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_VSYNC__IPU_CSI0_VSYNC,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_MCLK__IPU_CSI0_HSYNC,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_CSI0_PIXCLK__IPU_CSI0_PIXCLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DISPLAY */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DI0_DISP_CLK__IPU_DI0_DISP_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DI0_PIN15__IPU_DI0_PIN15,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DI0_PIN2__IPU_DI0_PIN2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DI0_PIN3__IPU_DI0_PIN3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT0__IPU_DISP0_DAT_0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT1__IPU_DISP0_DAT_1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT2__IPU_DISP0_DAT_2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT3__IPU_DISP0_DAT_3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT4__IPU_DISP0_DAT_4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT5__IPU_DISP0_DAT_5,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT6__IPU_DISP0_DAT_6,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT7__IPU_DISP0_DAT_7,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT8__IPU_DISP0_DAT_8,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT9__IPU_DISP0_DAT_9,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT10__IPU_DISP0_DAT_10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT11__IPU_DISP0_DAT_11,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT12__IPU_DISP0_DAT_12,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT13__IPU_DISP0_DAT_13,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT14__IPU_DISP0_DAT_14,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT15__IPU_DISP0_DAT_15,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT16__IPU_DISP0_DAT_16,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT17__IPU_DISP0_DAT_17,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT18__IPU_DISP0_DAT_18,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT19__IPU_DISP0_DAT_19,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT20__IPU_DISP0_DAT_20,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT21__IPU_DISP0_DAT_21,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT22__IPU_DISP0_DAT_22,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_DISP0_DAT23__IPU_DISP0_DAT_23,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Audio CLK*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* PWM */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_1__PWM2_PWMO,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SPDIF */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_7__SPDIF_PLOCK,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_17__SPDIF_OUT1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DA_1__GPIO7_7,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DA_2__GPIO7_8,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA5__GPIO2_5,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA6__GPIO2_6,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA14__GPIO2_14,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_DATA15__GPIO2_15,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_PATA_INTRQ__GPIO7_2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_EIM_WAIT__GPIO5_0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_NANDF_WP_B__GPIO6_9,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_NANDF_RB0__GPIO6_10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_NANDF_CS1__GPIO6_14,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_NANDF_CS2__GPIO6_15,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_NANDF_CS3__GPIO6_16,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_5__GPIO1_5,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_16__GPIO7_11,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX53_PAD_GPIO_8__GPIO1_8,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void loco_da9053_irq_wakeup_only_fixup(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void __iomem *tzic_base;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tzic_base = ioremap(MX53_TZIC_BASE_ADDR, SZ_4K);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NULL == tzic_base) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pr_err("fail to map MX53_TZIC_BASE_ADDR\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __raw_writel(0, tzic_base + TZIC_WAKEUP0_OFFSET);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __raw_writel(0, tzic_base + TZIC_WAKEUP1_OFFSET);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __raw_writel(0, tzic_base + TZIC_WAKEUP2_OFFSET);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* only enable irq wakeup for da9053 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __raw_writel(GPIO7_0_11_IRQ_BIT, tzic_base + TZIC_WAKEUP3_OFFSET);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iounmap(tzic_base);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pr_info("only da9053 irq is wakeup-enabled\n");&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void loco_suspend_enter(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!board_is_mx53_loco_mc34708()) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loco_da9053_irq_wakeup_only_fixup();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da9053_suspend_cmd_sw();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void loco_suspend_exit(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!board_is_mx53_loco_mc34708()) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (da9053_get_chip_version())&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da9053_restore_volt_settings();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_pm_platform_data loco_pm_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .suspend_enter = loco_suspend_enter,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .suspend_exit = loco_suspend_exit,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct fb_videomode video_modes[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 800x480 @ 57 Hz , pixel clk @ 27MHz */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "CLAA-WVGA", 57, 800, 480, 37037, 40, 60, 10, 10, 20, 10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_SYNC_CLK_LAT_FALL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_VMODE_NONINTERLACED,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,},&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 800x480 @ 60 Hz , pixel clk @ 32MHz */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "SEIKO-WVGA", 60, 800, 480, 29850, 89, 164, 23, 10, 10, 10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_SYNC_CLK_LAT_FALL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_VMODE_NONINTERLACED,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,},&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 1600x1200 @ 60 Hz 162M pixel clk*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "UXGA", 60, 1600, 1200, 6172,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 304, 64,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1, 46,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 192, 3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FB_VMODE_NONINTERLACED,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,},&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct platform_pwm_backlight_data mxc_pwm_backlight_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .pwm_id = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_brightness = 255,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dft_brightness = 128,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .pwm_period_ns = 50000,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;extern void mx5_ipu_reset(void);&lt;/P&gt;&lt;P&gt;static struct mxc_ipu_config mxc_ipu_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .rev = 3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .reset = mx5_ipu_reset,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;extern void mx5_vpu_reset(void);&lt;/P&gt;&lt;P&gt;static struct mxc_vpu_platform_data mxc_vpu_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .iram_enable = true,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .iram_size = 0x14000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .reset = mx5_vpu_reset,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct fec_platform_data fec_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .phy = PHY_INTERFACE_MODE_RMII,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_dvfs_platform_data dvfs_core_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .clk1_id = "cpu_clk",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .clk2_id = "gpc_dvfs_clk",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .gpc_cntr_offset = MXC_GPC_CNTR_OFFSET,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .gpc_vcr_offset = MXC_GPC_VCR_OFFSET,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ccm_cdcr_offset = MXC_CCM_CDCR_OFFSET,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ccm_cacrr_offset = MXC_CCM_CACRR_OFFSET,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ccm_cdhipr_offset = MXC_CCM_CDHIPR_OFFSET,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .prediv_mask = 0x1F800,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .prediv_offset = 11,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .prediv_val = 3,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .div3ck_mask = 0xE0000000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .div3ck_offset = 29,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .div3ck_val = 2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .emac_val = 0x08,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .upthr_val = 25,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dnthr_val = 9,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .pncthr_val = 33,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .upcnt_val = 10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dncnt_val = 10,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .delay_time = 30,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_bus_freq_platform_data bus_freq_data;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct tve_platform_data tve_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_enable = MXC_TVE_VGA,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct ldb_platform_data ldb_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ext_ref = 1,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void mxc_iim_enable_fuse(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32 reg;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!ccm_base)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* enable fuse blown */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg = readl(ccm_base + 0x64);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg |= 0x10;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; writel(reg, ccm_base + 0x64);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void mxc_iim_disable_fuse(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32 reg;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!ccm_base)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* enable fuse blown */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg = readl(ccm_base + 0x64);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg &amp;amp;= ~0x10;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; writel(reg, ccm_base + 0x64);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_iim_data iim_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .bank_start = MXC_IIM_MX53_BANK_START_ADDR,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .bank_end&amp;nbsp;&amp;nbsp; = MXC_IIM_MX53_BANK_END_ADDR,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .enable_fuse = mxc_iim_enable_fuse,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .disable_fuse = mxc_iim_disable_fuse,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct resource mxcfb_resources[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [0] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .flags = IORESOURCE_MEM,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_fb_platform_data fb_data[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .interface_pix_fmt = IPU_PIX_FMT_RGB565,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode_str = "CLAA-WVGA",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode = video_modes,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .num_modes = ARRAY_SIZE(video_modes),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .interface_pix_fmt = IPU_PIX_FMT_GBR24,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode_str = "VGA-XGA",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode = video_modes,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .num_modes = ARRAY_SIZE(video_modes),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;extern int primary_di;&lt;/P&gt;&lt;P&gt;static int __init mxc_init_fb(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!machine_is_mx53_loco())&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*for loco board, set default display as VGA*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (primary_di &amp;lt; 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; primary_di = 1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (primary_di) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_INFO "DI1 is primary\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DI1 -&amp;gt; DP-BG channel: */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_fb_devices[1].num_resources = ARRAY_SIZE(mxcfb_resources);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_fb_devices[1].resource = mxcfb_resources;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fb_devices[1], &amp;amp;fb_data[1]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DI0 -&amp;gt; DC channel: */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fb_devices[0], &amp;amp;fb_data[0]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_INFO "DI0 is primary\n");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DI0 -&amp;gt; DP-BG channel: */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_fb_devices[0].num_resources = ARRAY_SIZE(mxcfb_resources);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_fb_devices[0].resource = mxcfb_resources;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fb_devices[0], &amp;amp;fb_data[0]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DI1 -&amp;gt; DC channel: */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fb_devices[1], &amp;amp;fb_data[1]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * DI0/1 DP-FG channel:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fb_devices[2], NULL);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;device_initcall(mxc_init_fb);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void sii902x_hdmi_reset(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(DISP0_RESET, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(10);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(DISP0_RESET, 1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(10);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int sii902x_get_pins(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Sii902x HDMI controller */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(DISP0_RESET, "disp0-reset");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(DISP0_RESET, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(DISP0_DET_INT, "disp0-detect");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(DISP0_DET_INT);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void sii902x_put_pins(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_free(DISP0_RESET);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_free(DISP0_DET_INT);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_lcd_platform_data sii902x_hdmi_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .reset = sii902x_hdmi_reset,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .fb_id = "DISP3 BG",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .get_pins = sii902x_get_pins,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .put_pins = sii902x_put_pins,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct imxi2c_platform_data mxci2c_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .bitrate = 100000,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = "mma8450",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addr = 0x1C,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = "sgtl5000-i2c",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addr = 0x0a,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = "sii902x",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addr = 0x39,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .irq = gpio_to_irq(DISP0_DET_INT),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .platform_data = &amp;amp;sii902x_hdmi_data,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int p1003_ts_hw_status(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return gpio_get_value(DISP0_DET_INT);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct p1003_ts_platform_data p1003_ts_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .hw_status = p1003_ts_hw_status,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = "p1003_fwv33",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addr = 0x41,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .irq&amp;nbsp; = gpio_to_irq(DISP0_DET_INT),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .platform_data = &amp;amp;p1003_ts_data,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = "egalax_ts",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addr = 0x4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .irq&amp;nbsp; = gpio_to_irq(DISP0_DET_INT),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int sdhc_write_protect(struct device *dev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int ret = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (to_platform_device(dev)-&amp;gt;id == 2)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret = gpio_get_value(SD3_WP);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ret;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static unsigned int sdhc_get_card_det_status(struct device *dev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int ret = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (to_platform_device(dev)-&amp;gt;id == 2)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret = gpio_get_value(SD3_CD);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ret;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_mmc_platform_data mmc1_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29 | MMC_VDD_29_30&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MMC_VDD_31_32,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .caps = MMC_CAP_4_BIT_DATA,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_clk = 400000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_clk = 50000000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .card_inserted_state = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .clock_mmc = "esdhc_clk",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .power_mmc = NULL,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_mmc_platform_data mmc3_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29 | MMC_VDD_29_30&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MMC_VDD_31_32,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MMC_CAP_DATA_DDR,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_clk = 400000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_clk = 50000000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .card_inserted_state = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .status = sdhc_get_card_det_status,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .wp_status = sdhc_write_protect,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .clock_mmc = "esdhc_clk",&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int headphone_det_status(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (gpio_get_value(HEADPHONE_DEC_B) == 0);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int mxc_sgtl5000_init(void);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_audio_platform_data sgtl5000_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ssi_num = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .src_port = 2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ext_port = 5,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .hp_irq = gpio_to_irq(HEADPHONE_DEC_B),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .hp_status = headphone_det_status,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init = mxc_sgtl5000_init,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ext_ram_rx = 1,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int mxc_sgtl5000_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct clk *ssi_ext1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int rate;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssi_ext1 = clk_get(NULL, "ssi_ext1_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (IS_ERR(ssi_ext1))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rate = clk_round_rate(ssi_ext1, 24000000);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rate &amp;lt; 8000000 || rate &amp;gt; 27000000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_ERR "Error: SGTL5000 mclk freq %d out of range!\n",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(ssi_ext1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_set_rate(ssi_ext1, rate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_enable(ssi_ext1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sgtl5000_data.sysclk = rate;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct platform_device mxc_sgtl5000_device = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "imx-3stack-sgtl5000",&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_asrc_platform_data mxc_asrc_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .channel_bits = 4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .clk_map_ver = 2,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_spdif_platform_data mxc_spdif_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_tx = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_rx = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_clk_44100 = -1,&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Souce from CKIH1 for 44.1K */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Source from CCM spdif_clk (24M) for 48k and 32k&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * It's not accurate&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_clk_48000 = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_clkid = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spdif_clk = NULL,&amp;nbsp;&amp;nbsp;&amp;nbsp; /* spdif bus clk */&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mxc_audio_platform_data spdif_audio_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ext_ram_tx = 1,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct platform_device mxc_spdif_audio_device = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "imx-spdif-audio-device",&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void mx53_loco_usbh1_vbus(bool on)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (on)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(USB_PWREN, 1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(USB_PWREN, 0);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)&lt;/P&gt;&lt;P&gt;#define GPIO_BUTTON(gpio_num, ev_code, act_low, descr, wake)&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .gpio&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = gpio_num,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = EV_KEY,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = ev_code,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .active_low&amp;nbsp;&amp;nbsp;&amp;nbsp; = act_low,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .desc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = "btn " descr,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .wakeup&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = wake,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct gpio_keys_button loco_buttons[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_BUTTON(MX53_nONKEY, KEY_POWER, 1, "power", 0),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_BUTTON(USER_UI1, KEY_VOLUMEUP, 1, "volume-up", 0),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_BUTTON(USER_UI2, KEY_VOLUMEDOWN, 1, "volume-down", 0),&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct gpio_keys_platform_data loco_button_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .buttons&amp;nbsp;&amp;nbsp;&amp;nbsp; = loco_buttons,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .nbuttons&amp;nbsp;&amp;nbsp;&amp;nbsp; = ARRAY_SIZE(loco_buttons),&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct platform_device loco_button_device = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = "gpio-keys",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = -1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .num_resources&amp;nbsp; = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dev&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .platform_data = &amp;amp;loco_button_data,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void __init loco_add_device_buttons(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; platform_device_register(&amp;amp;loco_button_device);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;static void __init loco_add_device_buttons(void) {}&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void mxc_register_powerkey(pwrkey_callback pk_cb)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_event_callback_t power_key_event;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; power_key_event.param = (void *)1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; power_key_event.func = (void *)pk_cb;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_event_subscribe(EVENT_PWRONI, power_key_event);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int mxc_pwrkey_getstatus(int id)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int sense;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_INT_SENSE1, &amp;amp;sense, 0xffffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sense &amp;amp; (1 &amp;lt;&amp;lt; 3))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct power_key_platform_data pwrkey_data = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .key_value = KEY_F4,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .register_pwrkey = mxc_register_powerkey,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .get_key_status = mxc_pwrkey_getstatus,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*!&lt;/P&gt;&lt;P&gt; * Board specific fixup function. It is called by \b setup_arch() in&lt;/P&gt;&lt;P&gt; * setup.c file very early on during kernel starts. It allows the user to&lt;/P&gt;&lt;P&gt; * statically fill in the proper values for the passed-in parameters. None of&lt;/P&gt;&lt;P&gt; * the parameters is used currently.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * @param&amp;nbsp; desc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer to \b struct \b machine_desc&lt;/P&gt;&lt;P&gt; * @param&amp;nbsp; tags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer to \b struct \b tag&lt;/P&gt;&lt;P&gt; * @param&amp;nbsp; cmdline&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer to the command line&lt;/P&gt;&lt;P&gt; * @param&amp;nbsp; mi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer to \b struct \b meminfo&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;static void __init fixup_mxc_board(struct machine_desc *desc, struct tag *tags,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char **cmdline, struct meminfo *mi)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct tag *t;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct tag *mem_tag = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int total_mem = SZ_1G;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int left_mem = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int gpu_mem = SZ_128M;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int fb_mem = SZ_32M;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char *str;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_set_cpu_type(MXC_CPU_MX53);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for_each_tag(mem_tag, tags) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mem_tag-&amp;gt;hdr.tag == ATAG_MEM) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; total_mem = mem_tag-&amp;gt;u.mem.size;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for_each_tag(t, tags) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (t-&amp;gt;hdr.tag == ATAG_CMDLINE) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = t-&amp;gt;u.cmdline.cmdline;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = strstr(str, "mem=");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (str != NULL) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += 4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; left_mem = memparse(str, &amp;amp;str);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = t-&amp;gt;u.cmdline.cmdline;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = strstr(str, "gpu_nommu");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (str != NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_data.enable_mmu = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = t-&amp;gt;u.cmdline.cmdline;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = strstr(str, "gpu_memory=");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (str != NULL) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += 11;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_mem = memparse(str, &amp;amp;str);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (gpu_data.enable_mmu)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_mem = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (left_mem == 0 || left_mem &amp;gt; total_mem)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; left_mem = total_mem - gpu_mem - fb_mem;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mem_tag) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fb_mem = total_mem - left_mem - gpu_mem;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (fb_mem &amp;lt; 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_mem = total_mem - left_mem;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fb_mem = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem_tag-&amp;gt;u.mem.size = left_mem;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*reserve memory for gpu*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!gpu_data.enable_mmu) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_device.resource[5].start =&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem_tag-&amp;gt;u.mem.start + left_mem;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_device.resource[5].end =&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_device.resource[5].start + gpu_mem - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;#if defined(CONFIG_FB_MXC_SYNC_PANEL) || \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; defined(CONFIG_FB_MXC_SYNC_PANEL_MODULE)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (fb_mem) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcfb_resources[0].start =&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_data.enable_mmu ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem_tag-&amp;gt;u.mem.start + left_mem :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpu_device.resource[5].end + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcfb_resources[0].end =&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcfb_resources[0].start + fb_mem - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcfb_resources[0].start = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcfb_resources[0].end = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void __init mx53_loco_io_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY_SIZE(mx53_loco_pads));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SD3 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(SD3_CD, "sd3-cd");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(SD3_CD);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(SD3_WP, "sd3-wp");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(SD3_WP);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* reset FEC PHY */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(FEC_RST, "fec-rst");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(FEC_RST, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(FEC_RST, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(FEC_RST, 1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* headphone_det_b */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(HEADPHONE_DEC_B, "headphone-dec");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(HEADPHONE_DEC_B);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* USB PWR enable */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(USB_PWREN, "usb-pwr");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(USB_PWREN, 0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* LCD panel power enable */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(DISP0_POWER_EN, "disp0-power-en");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(DISP0_POWER_EN, 1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*!&lt;/P&gt;&lt;P&gt; * Board specific initialization.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;static void __init mxc_board_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iomux_v3_cfg_t mc34708_int = MX53_PAD_CSI0_DAT12__GPIO5_30;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iomux_v3_cfg_t da9052_csi0_d12;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_ipu_data.di_clk[0] = clk_get(NULL, "ipu_di0_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_ipu_data.di_clk[1] = clk_get(NULL, "ipu_di1_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_ipu_data.csi_clk[0] = clk_get(NULL, "ssi_ext1_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_spdif_data.spdif_core_clk = clk_get(NULL, "spdif_xtal_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(mxc_spdif_data.spdif_core_clk);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcsdhc3_device.resource[2].start = gpio_to_irq(SD3_CD);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxcsdhc3_device.resource[2].end = gpio_to_irq(SD3_CD);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_cpu_common_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_io_init();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_dma_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_wdt_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxci2c_devices[0], &amp;amp;mxci2c_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxci2c_devices[1], &amp;amp;mxci2c_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxci2c_devices[2], &amp;amp;mxci2c_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if (board_is_mx53_loco_mc34708()) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(1){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* set pmic INT gpio pin */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if (board_is_rev(BOARD_REV_2)) {/*Board rev A*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_int = MX53_PAD_CSI0_DAT12__GPIO5_30;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_mc34708_irq = MX53_LOCO_MC34708_IRQ_REVA;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //} else if (board_is_rev(BOARD_REV_4)) {/*Board rev B*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_int = MX53_PAD_CSI0_DAT5__GPIO5_23;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_mc34708_irq = MX53_LOCO_MC34708_IRQ_REVB;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_iomux_v3_setup_pad(mc34708_int);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(mx53_loco_mc34708_irq, "pmic-int");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(mx53_loco_mc34708_irq);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_init_mc34708(mx53_loco_mc34708_irq);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dvfs_core_data.reg_id = "SW1A";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tve_data.dac_reg = "VDAC";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bus_freq_data.gp_reg_id = "SW1A";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bus_freq_data.lp_reg_id = "SW2";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_powerkey_device, &amp;amp;pwrkey_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da9052_csi0_d12 = MX53_PAD_CSI0_DAT12__IPU_CSI0_D_12;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_iomux_v3_setup_pad(da9052_csi0_d12);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_init_da9052();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dvfs_core_data.reg_id = "DA9052_BUCK_CORE";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tve_data.dac_reg = "DA9052_LDO7";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bus_freq_data.gp_reg_id = "DA9052_BUCK_CORE";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bus_freq_data.lp_reg_id = "DA9052_BUCK_PRO";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_rtc_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_ipu_device, &amp;amp;mxc_ipu_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_ldb_device, &amp;amp;ldb_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_tve_device, &amp;amp;tve_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!mxc_fuse_get_vpu_status())&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxcvpu_device, &amp;amp;mxc_vpu_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!mxc_fuse_get_gpu_status())&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;gpu_device, &amp;amp;gpu_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxcscc_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;pm_device, &amp;amp;loco_pm_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_dvfs_core_device, &amp;amp;dvfs_core_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;busfreq_device, &amp;amp;bus_freq_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_iim_device, &amp;amp;iim_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_pwm2_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_pwm1_backlight_device, &amp;amp;mxc_pwm_backlight_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxcsdhc1_device, &amp;amp;mmc1_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxcsdhc3_device, &amp;amp;mmc3_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_ssi1_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_ssi2_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_alsa_spdif_device, &amp;amp;mxc_spdif_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;ahci_fsl_device, &amp;amp;sata_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;imx_ahci_device_hwmon, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_fec_device, &amp;amp;fec_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_ptp_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ASRC is only available for MX53 TO2.0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mx53_revision() &amp;gt;= IMX_CHIP_REVISION_2_0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_asrc_data.asrc_core_clk = clk_get(NULL, "asrc_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(mxc_asrc_data.asrc_core_clk);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_asrc_data.asrc_audio_clk = clk_get(NULL, "asrc_serial_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(mxc_asrc_data.asrc_audio_clk);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_asrc_device, &amp;amp;mxc_asrc_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_register_board_info(0, mxc_i2c0_board_info,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY_SIZE(mxc_i2c0_board_info));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_register_board_info(1, mxc_i2c1_board_info,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY_SIZE(mxc_i2c1_board_info));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_register_board_info(2, mxc_i2c2_board_info,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY_SIZE(mxc_i2c2_board_info));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sgtl5000_data.ext_ram_clk = clk_get(NULL, "emi_fast_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(sgtl5000_data.ext_ram_clk);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_sgtl5000_device, &amp;amp;sgtl5000_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spdif_audio_data.ext_ram_clk = clk_get(NULL, "emi_fast_clk");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk_put(spdif_audio_data.ext_ram_clk);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_spdif_audio_device, &amp;amp;spdif_audio_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx5_usb_dr_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx5_set_host1_vbus_func(mx53_loco_usbh1_vbus);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx5_usbh1_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_v4l2_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_v4l2out_device, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; loco_add_device_buttons();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //pm_power_off = da9053_power_off;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pm_power_off = mc34708_power_off;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pm_i2c_init(I2C1_BASE_ADDR - MX53_OFFSET);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void __init mx53_loco_timer_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct clk *uart_clk;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_clocks_init(32768, 24000000, 0, 0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uart_clk = clk_get_sys("mxcintuart.0", NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; early_console_setup(MX53_BASE_ADDR(UART1_BASE_ADDR), uart_clk);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct sys_timer mxc_timer = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init&amp;nbsp;&amp;nbsp;&amp;nbsp; = mx53_loco_timer_init,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * The following uses standard kernel macros define in arch.h in order to&lt;/P&gt;&lt;P&gt; * initialize __mach_desc_MX53_LOCO data structure.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Maintainer: Freescale Semiconductor, Inc. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .fixup = fixup_mxc_board,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .map_io = mx5_map_io,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init_irq = mx5_init_irq,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init_machine = mxc_board_init,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .timer = &amp;amp;mxc_timer,&lt;/P&gt;&lt;P&gt;MACHINE_END&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;mx53_loco_pmic_mc34708.c:&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * This program is free software; you can redistribute it and/or modify&lt;/P&gt;&lt;P&gt; * it under the terms of the GNU General Public License as published by&lt;/P&gt;&lt;P&gt; * the Free Software Foundation; either version 2 of the License, or&lt;/P&gt;&lt;P&gt; * (at your option) any later version.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * This program is distributed in the hope that it will be useful,&lt;/P&gt;&lt;P&gt; * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/P&gt;&lt;P&gt; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&amp;nbsp; See the&lt;/P&gt;&lt;P&gt; * GNU General Public License for more details.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * You should have received a copy of the GNU General Public License&lt;/P&gt;&lt;P&gt; * along with this program; if not, write to the Free Software&lt;/P&gt;&lt;P&gt; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA&amp;nbsp; 02111-1307 USA&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/module.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/init.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/platform_device.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/i2c.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/irq.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/interrupt.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/err.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pmic_external.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/regulator/machine.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mfd/mc34708/core.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/irqs.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/iomux-mx53.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/gpio.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include "pmic.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * Convenience conversion.&lt;/P&gt;&lt;P&gt; * Here atm, maybe there is somewhere better for this.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;#define mV_to_uV(mV) (mV * 1000)&lt;/P&gt;&lt;P&gt;#define uV_to_mV(uV) (uV / 1000)&lt;/P&gt;&lt;P&gt;#define V_to_uV(V) (mV_to_uV(V * 1000))&lt;/P&gt;&lt;P&gt;#define uV_to_V(uV) (uV_to_mV(uV) / 1000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* regulator standby mask */&lt;/P&gt;&lt;P&gt;#define GEN1_STBY_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; 1)&lt;/P&gt;&lt;P&gt;#define GEN2_STBY_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; 13)&lt;/P&gt;&lt;P&gt;#define PLL_STBY_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; 16)&lt;/P&gt;&lt;P&gt;#define USB2_STBY_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; 19)&lt;/P&gt;&lt;P&gt;#define USB_EN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; 3)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define REG_MODE_0_ALL_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp; (GEN1_STBY_MASK)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SW1A_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 0)&lt;/P&gt;&lt;P&gt;#define SW2_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 14)&lt;/P&gt;&lt;P&gt;#define SW1A_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xc &amp;lt;&amp;lt; 0)&lt;/P&gt;&lt;P&gt;#define SW2_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xc &amp;lt;&amp;lt; 14)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define REG_SW_1_2_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp; (SW1A_MODE_MASK | SW2_MODE_MASK)&lt;/P&gt;&lt;P&gt;#define REG_SW_1_2_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp; (SW1A_MODE_VALUE | SW2_MODE_VALUE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SW3_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 0)&lt;/P&gt;&lt;P&gt;#define SW4A_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 6)&lt;/P&gt;&lt;P&gt;#define SW4B_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 12)&lt;/P&gt;&lt;P&gt;#define SW5_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xf &amp;lt;&amp;lt; 18)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SW3_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x0 &amp;lt;&amp;lt; 0)&lt;/P&gt;&lt;P&gt;#define SW4A_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xc &amp;lt;&amp;lt; 6)&lt;/P&gt;&lt;P&gt;#define SW4B_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xc &amp;lt;&amp;lt; 12)&lt;/P&gt;&lt;P&gt;#define SW5_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xc &amp;lt;&amp;lt; 18)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define REG_SW_3_4_5_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp; (SW3_MODE_MASK | SW4A_MODE_MASK\&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SW4B_MODE_MASK | SW5_MODE_MASK)&lt;/P&gt;&lt;P&gt;#define REG_SW_3_4_5_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp; (SW3_MODE_VALUE | SW4A_MODE_VALUE\&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SW4B_MODE_VALUE | SW5_MODE_VALUE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SWBST_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x3 &amp;lt;&amp;lt; 5)&lt;/P&gt;&lt;P&gt;#define SWBST_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x2 &amp;lt;&amp;lt; 5)&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Auto mode*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define REG_SWBST_MODE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp; (SWBST_MODE_MASK)&lt;/P&gt;&lt;P&gt;#define REG_SWBST_MODE_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp; (SWBST_MODE_VALUE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SWHOLD_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x1 &amp;lt;&amp;lt; 12)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MC34708_I2C_DEVICE_NAME&amp;nbsp; "mc34708"&lt;/P&gt;&lt;P&gt;/* 7-bit I2C bus slave address */&lt;/P&gt;&lt;P&gt;#define MC34708_I2C_ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x08)&lt;/P&gt;&lt;P&gt;#define MX53_LOCO_MC34708_IRQ&amp;nbsp;&amp;nbsp;&amp;nbsp; (4*32 + 30)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* GPIO5_30 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;struct mc34708;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw1a_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW1",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = 650000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = 1437500,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_modes_mask = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .initial_state = PM_SUSPEND_MEM,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .state_mem = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .uV = 850000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode = REGULATOR_MODE_NORMAL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .enabled = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw1b_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW1B",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = 650000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = 1437500,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_modes_mask = 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw2_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW2",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = 650000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = 1437500,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .initial_state = PM_SUSPEND_MEM,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .state_mem = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .uV = 950000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .mode = REGULATOR_MODE_NORMAL,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .enabled = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw3_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW3",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = 650000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = 1425000,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw4a_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW4A",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(1200),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(3300),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw4b_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW4B",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(1200),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(3300),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data sw5_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SW5",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(1200),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(1975),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vrefddr_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VREFDDR",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vusb_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VUSB",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_STATUS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data swbst_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "SWBST",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_STATUS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vpll_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VPLL",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(1200),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(1800),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vdac_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VDAC",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(2500),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(2775),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vusb2_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VUSB2",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(2500),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(3000),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vgen1_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VGEN1",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(1200),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(1550),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct regulator_init_data vgen2_init = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .constraints = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "VGEN2",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .min_uV = mV_to_uV(2500),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .max_uV = mV_to_uV(3300),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .always_on = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int mc34708_regulator_init(struct mc34708 *mc34708)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int value;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_IDENTIFICATION, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pr_info("PMIC MC34708 ID:0x%x\n", value);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("PMIC_34708");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* setting switch operating mode for SW1/2 regulators */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_SW_1_2_OP, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value &amp;amp;= ~REG_SW_1_2_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value |= REG_SW_1_2_VALUE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_write_reg(REG_MC34708_SW_1_2_OP, value, 0xffffff);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* setting switch operating mode for SW3/4/5 regulators */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_SW_3_4_5_OP, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value &amp;amp;= ~REG_SW_3_4_5_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value |= REG_SW_3_4_5_VALUE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_write_reg(REG_MC34708_SW_3_4_5_OP, value, 0xffffff);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* setting switch operating mode for SWBST regulators */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_SWBST, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value &amp;amp;= ~REG_SWBST_MODE_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value |= REG_SWBST_MODE_VALUE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_write_reg(REG_MC34708_SWBST, value, 0xffffff);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* clear SWHOLD bit&amp;nbsp; to enable USB MUX */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_USB_CONTROL, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value &amp;amp;= ~SWHOLD_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_write_reg(REG_MC34708_USB_CONTROL, value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* enable WDI reset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_read_reg(REG_MC34708_POWER_CTL2, &amp;amp;value, 0xffffff);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value |= 0x1000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pmic_write_reg(REG_MC34708_POWER_CTL2, value, 0xffffff);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW1A, &amp;amp;sw1a_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW1B, &amp;amp;sw1b_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW2, &amp;amp;sw2_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW3, &amp;amp;sw3_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW4A, &amp;amp;sw4a_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW4B, &amp;amp;sw4b_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SW5, &amp;amp;sw5_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_SWBST, &amp;amp;swbst_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VPLL, &amp;amp;vpll_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VREFDDR, &amp;amp;vrefddr_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VDAC, &amp;amp;vdac_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VUSB, &amp;amp;vusb_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VUSB2, &amp;amp;vusb2_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VGEN1, &amp;amp;vgen1_init);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_register_regulator(mc34708, MC34708_VGEN2, &amp;amp;vgen2_init);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; regulator_has_full_constraints();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct mc34708_platform_data mc34708_plat = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init = mc34708_regulator_init,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct i2c_board_info __initdata mc34708_i2c_device = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_BOARD_INFO(MC34708_I2C_DEVICE_NAME, MC34708_I2C_ADDR),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .platform_data = &amp;amp;mc34708_plat,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;int __init mx53_loco_init_mc34708(u32 int_gpio)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_i2c_device.irq = gpio_to_irq(int_gpio);/*update INT gpio*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return i2c_register_board_info(0, &amp;amp;mc34708_i2c_device, 1);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 22 Jun 2013 12:48:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232311#M17726</guid>
      <dc:creator>vicliu</dc:creator>
      <dc:date>2013-06-22T12:48:15Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232312#M17727</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,liu,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The interrupt of MC34708 is using GPIO5_23 or GPIO5_30 ?&lt;/P&gt;&lt;P&gt;Weidong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 22 Jun 2013 15:35:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232312#M17727</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2013-06-22T15:35:47Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232313#M17728</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Weidong,&lt;/P&gt;&lt;P&gt;we use CSI0_DATA5 for the pmic_int, where should I modify the code?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pmic_int.JPG"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/39709i8E0342FE010210DA/image-size/large?v=v2&amp;amp;px=999" role="button" title="pmic_int.JPG" alt="pmic_int.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 23 Jun 2013 03:54:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232313#M17728</guid>
      <dc:creator>vicliu</dc:creator>
      <dc:date>2013-06-23T03:54:17Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232314#M17729</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hello,vic&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Modified it like following:&lt;/P&gt;&lt;P&gt;static void __init mxc_board_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; //&amp;nbsp;&amp;nbsp; iomux_v3_cfg_t mc34708_int = MX53_PAD_CSI0_DAT12__GPIO5_30;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc34708_int = MX53_PAD_CSI0_DAT5__GPIO5_23;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_mc34708_irq = MX53_LOCO_MC34708_IRQ_REVB;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_iomux_v3_setup_pad(mc34708_int);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(mx53_loco_mc34708_irq, "pmic-int");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_input(mx53_loco_mc34708_irq);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mx53_loco_init_mc34708(mx53_loco_mc34708_irq);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dvfs_core_data.reg_id = "SW1A";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tve_data.dac_reg = "VDAC";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bus_freq_data.gp_reg_id = "SW1A";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bus_freq_data.lp_reg_id = "SW2";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_powerkey_device, &amp;amp;pwrkey_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_register_device(&amp;amp;mxc_rtc_device, NULL);&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;....&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;Then please paste booting log here !&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt; &lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;Reards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;Weidong&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Jun 2013 04:40:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232314#M17729</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2013-06-24T04:40:41Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232315#M17730</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,vic,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Was the issue resolved ?&lt;/P&gt;&lt;P&gt;weidong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Jun 2013 03:40:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232315#M17730</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2013-06-25T03:40:46Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232316#M17731</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, Weidong,&lt;/P&gt;&lt;P&gt;sorry late to reply the message, I follow your code to modified&lt;BR /&gt;it seems work but still has error, &lt;STRONG&gt;the touch screen is wrong direction ( up change to down, left change to right) , &lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;I think the I2C communication has still error . &lt;/STRONG&gt;&lt;BR /&gt;I show you the log in booting,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dmesg &lt;/P&gt;&lt;P&gt;Linux version 2.6.35.3-1129-g691c08a (terrience@BU2-BUILD) (gcc version 4.4.4 (4&lt;/P&gt;&lt;P&gt;.4.4_09.06.2010) ) #174 PREEMPT Tue Jun 25 15:12:03 CST 2013&lt;/P&gt;&lt;P&gt;CPU: ARMv7 Processor [412fc085] revision 5 (ARMv7), cr=10c53c7f&lt;/P&gt;&lt;P&gt;CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache&lt;/P&gt;&lt;P&gt;Machine: Freescale MX53 LOCO Board&lt;/P&gt;&lt;P&gt;Memory policy: ECC disabled, Data cache writeback&lt;/P&gt;&lt;P&gt;On node 0 totalpages: 253952&lt;/P&gt;&lt;P&gt;free_area_init_node: node 0, pgdat 8086a260, node_mem_map 808aa000&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA zone: 192 pages used for memmap&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA zone: 0 pages reserved&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA zone: 24384 pages, LIFO batch:3&lt;/P&gt;&lt;P&gt;&amp;nbsp; Normal zone: 2880 pages used for memmap&lt;/P&gt;&lt;P&gt;&amp;nbsp; Normal zone: 226496 pages, LIFO batch:31&lt;/P&gt;&lt;P&gt;Built 1 zonelists in Zone order, mobility grouping on.&amp;nbsp; Total pages: 250880&lt;/P&gt;&lt;P&gt;Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p1 rootwait rw vide&lt;/P&gt;&lt;P&gt;o=mxcdi0fb:RGB666,XGA di0_primary ldb=single,di=0,ch0_map=SPWG&lt;/P&gt;&lt;P&gt;PID hash table entries: 4096 (order: 2, 16384 bytes)&lt;/P&gt;&lt;P&gt;Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)&lt;/P&gt;&lt;P&gt;Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)&lt;/P&gt;&lt;P&gt;Memory: 480MB 512MB = 992MB total&lt;/P&gt;&lt;P&gt;Memory: 998240k/998240k available, 17568k reserved, 0K highmem&lt;/P&gt;&lt;P&gt;Virtual kernel memory layout:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vector&amp;nbsp; : 0xffff0000 - 0xffff1000&amp;nbsp;&amp;nbsp; (&amp;nbsp;&amp;nbsp; 4 kB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fixmap&amp;nbsp; : 0xfff00000 - 0xfffe0000&amp;nbsp;&amp;nbsp; ( 896 kB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0xf9e00000 - 0xffe00000&amp;nbsp;&amp;nbsp; (&amp;nbsp; 96 MB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vmalloc : 0xe0800000 - 0xf4000000&amp;nbsp;&amp;nbsp; ( 312 MB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lowmem&amp;nbsp; : 0x80000000 - 0xe0000000&amp;nbsp;&amp;nbsp; (1536 MB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pkmap&amp;nbsp;&amp;nbsp; : 0x7fe00000 - 0x80000000&amp;nbsp;&amp;nbsp; (&amp;nbsp;&amp;nbsp; 2 MB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; modules : 0x7f000000 - 0x7fe00000&amp;nbsp;&amp;nbsp; (&amp;nbsp; 14 MB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init : 0x80008000 - 0x8002d000&amp;nbsp;&amp;nbsp; ( 148 kB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .text : 0x8002d000 - 0x80805000&amp;nbsp;&amp;nbsp; (8032 kB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .data : 0x80822000 - 0x8086afc0&amp;nbsp;&amp;nbsp; ( 292 kB)&lt;/P&gt;&lt;P&gt;SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1&lt;/P&gt;&lt;P&gt;Hierarchical RCU implementation.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RCU-based detection of stalled CPUs is disabled.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Verbose stalled-CPUs detection is disabled.&lt;/P&gt;&lt;P&gt;NR_IRQS:368&lt;/P&gt;&lt;P&gt;MXC GPIO hardware&lt;/P&gt;&lt;P&gt;MXC IRQ initialized&lt;/P&gt;&lt;P&gt;MXC_Early serial console at MMIO 0x53fbc000 (options '115200')&lt;/P&gt;&lt;P&gt;bootconsole [ttymxc0] enabled&lt;/P&gt;&lt;P&gt;Console: colour dummy device 80x30&lt;/P&gt;&lt;P&gt;Calibrating delay loop... 999.42 BogoMIPS (lpj=4997120)&lt;/P&gt;&lt;P&gt;pid_max: default: 32768 minimum: 301&lt;/P&gt;&lt;P&gt;Mount-cache hash table entries: 512&lt;/P&gt;&lt;P&gt;CPU: Testing write buffer coherency: ok&lt;/P&gt;&lt;P&gt;regulator: core version 0.5&lt;/P&gt;&lt;P&gt;NET: Registered protocol family 16&lt;/P&gt;&lt;P&gt;i.MX IRAM pool: 128 KB@0xe0840000&lt;/P&gt;&lt;P&gt;IRAM READY&lt;/P&gt;&lt;P&gt;CPU is i.MX53 Revision 2.1&lt;/P&gt;&lt;P&gt;PMIC_REV4&lt;/P&gt;&lt;P&gt;Using SDMA I.API&lt;/P&gt;&lt;P&gt;MXC DMA API initialized&lt;/P&gt;&lt;P&gt;IMX usb wakeup probe&lt;/P&gt;&lt;P&gt;the wakeup pdata is 0x8082f7b8&lt;/P&gt;&lt;P&gt;IMX usb wakeup probe&lt;/P&gt;&lt;P&gt;the wakeup pdata is 0x8082f86c&lt;/P&gt;&lt;P&gt;bio: create slab &amp;lt;bio-0&amp;gt; at 0&lt;/P&gt;&lt;P&gt;SCSI subsystem initialized&lt;/P&gt;&lt;P&gt;libata version 3.00 loaded.&lt;/P&gt;&lt;P&gt;Freescale USB OTG Driver loaded, $Revision: 1.55 $&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;****************************** NOTICE *****************************&lt;/P&gt;&lt;P&gt;You have seen this notice as you have enabled OTG driver for mx53 LOCO board&lt;/P&gt;&lt;P&gt;For mx53 loco board, the OTG function is unavailable due to hardware limitation&lt;/P&gt;&lt;P&gt;So, Only one usb function (device or host) can be available for certain image&lt;/P&gt;&lt;P&gt;Please config your kernel to disable OTG and the usb function you don't want to &lt;/P&gt;&lt;P&gt;use&lt;/P&gt;&lt;P&gt;And remain the other usb function you would like to use&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below OTG configs should be removed:&lt;/P&gt;&lt;P&gt;CONFIG_MXC_OTG, CONFIG_USB_OTG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Choose one of below configs for host or device function&lt;/P&gt;&lt;P&gt;But DO NOT choose them together&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OTG host config&lt;/P&gt;&lt;P&gt;CONFIG_USB_EHCI_ARC_OTG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OTG device config&lt;/P&gt;&lt;P&gt;CONFIG_USB_GADGET&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver usbfs&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver hub&lt;/P&gt;&lt;P&gt;usbcore: registered new device driver usb&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;i2c i2c-0: Failed to register i2c client mc34708 at 0x08 (-16)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;i2c i2c-0: Can't create device at 0x08&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)&lt;/P&gt;&lt;P&gt;Advanced Linux Sound Architecture Driver Version 1.0.23.&lt;/P&gt;&lt;P&gt;Bluetooth: Core ver 2.15&lt;/P&gt;&lt;P&gt;NET: Registered protocol family 31&lt;/P&gt;&lt;P&gt;Bluetooth: HCI device and connection manager initialized&lt;/P&gt;&lt;P&gt;Bluetooth: HCI socket layer initialized&lt;/P&gt;&lt;P&gt;mc34708 Rev 2.4 FinVer 0 detected&lt;/P&gt;&lt;P&gt;PMIC MC34708 ID:0x14&lt;/P&gt;&lt;P&gt;PMIC_34708&lt;/P&gt;&lt;P&gt;regulator: SW1: 650 &amp;lt;--&amp;gt; 1437 mV at 1250 mV &lt;/P&gt;&lt;P&gt;regulator: SW1B: 650 &amp;lt;--&amp;gt; 1437 mV at 1100 mV &lt;/P&gt;&lt;P&gt;regulator: SW2: 650 &amp;lt;--&amp;gt; 1437 mV at 1300 mV &lt;/P&gt;&lt;P&gt;regulator: SW3: 650 &amp;lt;--&amp;gt; 1425 mV at 1200 mV &lt;/P&gt;&lt;P&gt;regulator: SW4A: 1200 &amp;lt;--&amp;gt; 3300 mV at 1500 mV &lt;/P&gt;&lt;P&gt;regulator: SW4B: 1200 &amp;lt;--&amp;gt; 3300 mV at 1500 mV &lt;/P&gt;&lt;P&gt;regulator: SW5: 1200 &amp;lt;--&amp;gt; 1975 mV at 1800 mV &lt;/P&gt;&lt;P&gt;regulator: SWBST: &lt;/P&gt;&lt;P&gt;regulator: VPLL: 1200 &amp;lt;--&amp;gt; 1800 mV at 1800 mV &lt;/P&gt;&lt;P&gt;regulator: VREFDDR: &lt;/P&gt;&lt;P&gt;regulator: VDAC: 2500 &amp;lt;--&amp;gt; 2775 mV at 2775 mV &lt;/P&gt;&lt;P&gt;regulator: VUSB: &lt;/P&gt;&lt;P&gt;regulator: VUSB2: 2500 &amp;lt;--&amp;gt; 3000 mV at 2500 mV &lt;/P&gt;&lt;P&gt;regulator: VGEN1: 1200 &amp;lt;--&amp;gt; 1550 mV at 1300 mV &lt;/P&gt;&lt;P&gt;regulator: VGEN2: 2500 &amp;lt;--&amp;gt; 3300 mV at 2500 mV &lt;/P&gt;&lt;P&gt;pmic 0-0008: Loaded&lt;/P&gt;&lt;P&gt;Switching to clocksource mxc_timer1&lt;/P&gt;&lt;P&gt;NET: Registered protocol family 2&lt;/P&gt;&lt;P&gt;IP route cache hash table entries: 32768 (order: 5, 131072 bytes)&lt;/P&gt;&lt;P&gt;TCP established hash table entries: 131072 (order: 8, 1048576 bytes)&lt;/P&gt;&lt;P&gt;TCP bind hash table entries: 65536 (order: 6, 262144 bytes)&lt;/P&gt;&lt;P&gt;TCP: Hash tables configured (established 131072 bind 65536)&lt;/P&gt;&lt;P&gt;TCP reno registered&lt;/P&gt;&lt;P&gt;UDP hash table entries: 512 (order: 1, 8192 bytes)&lt;/P&gt;&lt;P&gt;UDP-Lite hash table entries: 512 (order: 1, 8192 bytes)&lt;/P&gt;&lt;P&gt;NET: Registered protocol family 1&lt;/P&gt;&lt;P&gt;RPC: Registered udp transport module.&lt;/P&gt;&lt;P&gt;RPC: Registered tcp transport module.&lt;/P&gt;&lt;P&gt;RPC: Registered tcp NFSv4.1 backchannel transport module.&lt;/P&gt;&lt;P&gt;LPMode driver module loaded&lt;/P&gt;&lt;P&gt;Static Power Management for Freescale i.MX5&lt;/P&gt;&lt;P&gt;PM driver module loaded&lt;/P&gt;&lt;P&gt;sdram autogating driver module loaded&lt;/P&gt;&lt;P&gt;Bus freq driver module loaded&lt;/P&gt;&lt;P&gt;DI0 is primary&lt;/P&gt;&lt;P&gt;mxc_dvfs_core_probe&lt;/P&gt;&lt;P&gt;DVFS driver module loaded&lt;/P&gt;&lt;P&gt;i.MXC CPU frequency driver&lt;/P&gt;&lt;P&gt;DVFS PER driver module loaded&lt;/P&gt;&lt;P&gt;JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.&lt;/P&gt;&lt;P&gt;msgmni has been set to 1949&lt;/P&gt;&lt;P&gt;alg: No test for stdrng (krng)&lt;/P&gt;&lt;P&gt;cryptodev: driver loaded.&lt;/P&gt;&lt;P&gt;io scheduler noop registered&lt;/P&gt;&lt;P&gt;io scheduler deadline registered&lt;/P&gt;&lt;P&gt;io scheduler cfq registered (default)&lt;/P&gt;&lt;P&gt;regulator: get() with no identifier&lt;/P&gt;&lt;P&gt;By setting, SII driver will not be enabled&lt;/P&gt;&lt;P&gt;regulator: get() with no identifier&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 9&lt;/P&gt;&lt;P&gt;IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)&lt;/P&gt;&lt;P&gt;DMFC high resolution has set, will not change&lt;/P&gt;&lt;P&gt;Console: switching to colour frame buffer device 128x37&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 7&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 7&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 10&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 10&lt;/P&gt;&lt;P&gt;Serial: MXC Internal UART driver&lt;/P&gt;&lt;P&gt;mxcintuart.0: ttymxc0 at MMIO 0x53fbc000 (irq = 31) is a Freescale i.MX&lt;/P&gt;&lt;P&gt;console [ttymxc0] enabled, bootconsole disabled&lt;/P&gt;&lt;P&gt;mxcintuart.1: ttymxc1 at MMIO 0x53fc0000 (irq = 32) is a Freescale i.MX&lt;/P&gt;&lt;P&gt;mxcintuart.2: ttymxc2 at MMIO 0x5000c000 (irq = 33) is a Freescale i.MX&lt;/P&gt;&lt;P&gt;mxcintuart.3: ttymxc3 at MMIO 0x53ff0000 (irq = 13) is a Freescale i.MX&lt;/P&gt;&lt;P&gt;mxcintuart.4: ttymxc4 at MMIO 0x63f90000 (irq = 86) is a Freescale i.MX&lt;/P&gt;&lt;P&gt;loop: module loaded&lt;/P&gt;&lt;P&gt;MXC MTD nand Driver 3.0&lt;/P&gt;&lt;P&gt;vcan: Virtual CAN interface driver&lt;/P&gt;&lt;P&gt;Freescale FlexCAN Driver &lt;/P&gt;&lt;P&gt;FEC Ethernet Driver&lt;/P&gt;&lt;P&gt;fec_enet_mii_bus: probed&lt;/P&gt;&lt;P&gt;tun: Universal TUN/TAP device driver, 1.6&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;tun: (C) 1999-2004 Max Krasnyansky &amp;lt;&lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:maxk@qualcomm.com"&gt;maxk@qualcomm.com&lt;/A&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;hso: drivers/net/usb/hso.c: 1.2 Option Wireless&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver hso&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver asix&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver cdc_ether&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver cdc_eem&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver smsc75xx&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver smsc95xx&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver net1080&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver cdc_subset&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver zaurus&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver hwa-rc&lt;/P&gt;&lt;P&gt;usbmon: debugfs is not available&lt;/P&gt;&lt;P&gt;ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver&lt;/P&gt;&lt;P&gt;fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller&lt;/P&gt;&lt;P&gt;fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1&lt;/P&gt;&lt;P&gt;fsl-ehci fsl-ehci.0: irq 18, io base 0x53f80000&lt;/P&gt;&lt;P&gt;fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00&lt;/P&gt;&lt;P&gt;hub 1-0:1.0: USB hub found&lt;/P&gt;&lt;P&gt;hub 1-0:1.0: 1 port detected&lt;/P&gt;&lt;P&gt;fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller&lt;/P&gt;&lt;P&gt;fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2&lt;/P&gt;&lt;P&gt;fsl-ehci fsl-ehci.1: irq 14, io base 0x53f80200&lt;/P&gt;&lt;P&gt;fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00&lt;/P&gt;&lt;P&gt;hub 2-0:1.0: USB hub found&lt;/P&gt;&lt;P&gt;hub 2-0:1.0: 1 port detected&lt;/P&gt;&lt;P&gt;Initializing USB Mass Storage driver...&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver usb-storage&lt;/P&gt;&lt;P&gt;USB Mass Storage support registered.&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver usbserial&lt;/P&gt;&lt;P&gt;USB Serial support registered for generic&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver usbserial_generic&lt;/P&gt;&lt;P&gt;usbserial: USB Serial Driver core&lt;/P&gt;&lt;P&gt;ARC USBOTG Device Controller driver (1 August 2005)&lt;/P&gt;&lt;P&gt;g_ether gadget: using random self ethernet address&lt;/P&gt;&lt;P&gt;g_ether gadget: using random host ethernet address&lt;/P&gt;&lt;P&gt;usb0: MAC ea:59:85:38:b8:9a&lt;/P&gt;&lt;P&gt;usb0: HOST MAC e6:6a:f9:e8:63:1b&lt;/P&gt;&lt;P&gt;g_ether gadget: Ethernet Gadget, version: Memorial Day 2008&lt;/P&gt;&lt;P&gt;g_ether gadget: g_ether ready&lt;/P&gt;&lt;P&gt;Suspend udc for OTG auto detect&lt;/P&gt;&lt;P&gt;fsl-usb2-udc: bind to driver g_ether &lt;/P&gt;&lt;P&gt;mice: PS/2 mouse device common for all mice&lt;/P&gt;&lt;P&gt;input: gpio-keys as /devices/platform/gpio-keys/input/input0&lt;/P&gt;&lt;P&gt;MXC keypad loaded&lt;/P&gt;&lt;P&gt;input: mxc_power_key as /devices/virtual/input/input1&lt;/P&gt;&lt;P&gt;PMIC powerkey probe&lt;/P&gt;&lt;P&gt;egalax_ts 2-0004: egalax_ts: failed to read firmware version&lt;/P&gt;&lt;P&gt;egalax_ts: probe of 2-0004 failed with error -5&lt;/P&gt;&lt;P&gt;p1003_fwv33 2-0041: couldn't read panel infomation.&lt;/P&gt;&lt;P&gt;p1003_fwv33: probe of 2-0041 failed with error -5&lt;/P&gt;&lt;P&gt;mxc_rtc mxc_rtc.0: rtc core: registered mxc_rtc as rtc0&lt;/P&gt;&lt;P&gt;i2c /dev entries driver&lt;/P&gt;&lt;P&gt;IR NEC protocol handler initialized&lt;/P&gt;&lt;P&gt;IR RC5(x) protocol handler initialized&lt;/P&gt;&lt;P&gt;IR RC6 protocol handler initialized&lt;/P&gt;&lt;P&gt;IR JVC protocol handler initialized&lt;/P&gt;&lt;P&gt;IR Sony protocol handler initialized&lt;/P&gt;&lt;P&gt;Linux video capture interface: v2.00&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver uvcvideo&lt;/P&gt;&lt;P&gt;USB Video Class driver (v0.1.0)&lt;/P&gt;&lt;P&gt;APM Battery Driver&lt;/P&gt;&lt;P&gt;check mma8450 chip ID&lt;/P&gt;&lt;P&gt;mma8450 0-001c: read chip ID 0xfffffffb is not equal to 0xc6!&lt;/P&gt;&lt;P&gt;read chip ID failed&lt;/P&gt;&lt;P&gt;mma8450: probe of 0-001c failed with error -22&lt;/P&gt;&lt;P&gt;add mma8450 i2c driver&lt;/P&gt;&lt;P&gt;MXC WatchDog Driver 2.0&lt;/P&gt;&lt;P&gt;MXC Watchdog # 0 Timer: initial timeout 60 sec&lt;/P&gt;&lt;P&gt;Bluetooth: Virtual HCI driver ver 1.3&lt;/P&gt;&lt;P&gt;Bluetooth: HCI UART driver ver 2.2&lt;/P&gt;&lt;P&gt;Bluetooth: HCIATH3K protocol initialized&lt;/P&gt;&lt;P&gt;Bluetooth: Generic Bluetooth USB driver ver 0.6&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver btusb&lt;/P&gt;&lt;P&gt;PMIC Character device: successfully loaded&lt;/P&gt;&lt;P&gt;PMIC ADC start probe&lt;/P&gt;&lt;P&gt;PMIC ADC successfully probed by VIC&lt;/P&gt;&lt;P&gt;usb 2-1: new high speed USB device using fsl-ehci and address 2&lt;/P&gt;&lt;P&gt;VPU initialized&lt;/P&gt;&lt;P&gt;mxc_asrc registered&lt;/P&gt;&lt;P&gt;gpu mmu enabled&lt;/P&gt;&lt;P&gt;mxsdhci: MXC Secure Digital Host Controller Interface driver&lt;/P&gt;&lt;P&gt;mxsdhci: MXC SDHCI Controller Driver. &lt;/P&gt;&lt;P&gt;mmc0: SDHCI detect irq 0 irq 1 INTERNAL DMA&lt;/P&gt;&lt;P&gt;mxsdhci: MXC SDHCI Controller Driver. &lt;/P&gt;&lt;P&gt;mmc1: SDHCI detect irq 203 irq 3 INTERNAL DMA&lt;/P&gt;&lt;P&gt;usbcore: registered new interface driver usbhid&lt;/P&gt;&lt;P&gt;usbhid: USB HID core driver&lt;/P&gt;&lt;P&gt;Cirrus Logic CS42888 ALSA SoC Codec Driver&lt;/P&gt;&lt;P&gt;sgtl5000-i2c 1-000a: SGTL5000 revision 17&lt;/P&gt;&lt;P&gt;hub 2-1:1.0: USB hub found&lt;/P&gt;&lt;P&gt;hub 2-1:1.0: 5 ports detected&lt;/P&gt;&lt;P&gt;mxc_spdif mxc_spdif.0: MXC SPDIF Audio Transmitter&lt;/P&gt;&lt;P&gt;No device for codec mxc spdif&lt;/P&gt;&lt;P&gt;No device for DAI mxc spdif&lt;/P&gt;&lt;P&gt;No device for DAI imx-ssi-1-0&lt;/P&gt;&lt;P&gt;No device for DAI imx-ssi-1-1&lt;/P&gt;&lt;P&gt;No device for DAI imx-ssi-2-0&lt;/P&gt;&lt;P&gt;No device for DAI imx-ssi-2-1&lt;/P&gt;&lt;P&gt;No device for DAI imx-spdif-dai&lt;/P&gt;&lt;P&gt;DMA Sound Buffer Allocated: Playback UseIram=1 ext_ram=0 buf-&amp;gt;addr=f8016000 buf-&lt;/P&gt;&lt;P&gt;&amp;gt;area=e0856000 size=24576&lt;/P&gt;&lt;P&gt;DMA Sound Buffer Allocated: Capture&amp;nbsp; UseIram=1 ext_ram=1 buf-&amp;gt;addr=cf3f8000 buf-&lt;/P&gt;&lt;P&gt;&amp;gt;area=faafa000 size=24576&lt;/P&gt;&lt;P&gt;asoc: SGTL5000 &amp;lt;-&amp;gt; imx-ssi-2-0 mapping ok&lt;/P&gt;&lt;P&gt;mmc0: new high speed SDHC card at address e624&lt;/P&gt;&lt;P&gt;mmcblk0: mmc0:e624 SU08G 7.40 GiB &lt;/P&gt;&lt;P&gt; mmcblk0: p1&lt;/P&gt;&lt;P&gt;DMA Sound Buffer Allocated: Playback UseIram=1 ext_ram=1 buf-&amp;gt;addr=cf430000 buf-&lt;/P&gt;&lt;P&gt;&amp;gt;area=fab00000 size=24576&lt;/P&gt;&lt;P&gt;asoc: mxc spdif &amp;lt;-&amp;gt; imx-spdif-dai mapping ok&lt;/P&gt;&lt;P&gt;ALSA device list:&lt;/P&gt;&lt;P&gt;&amp;nbsp; #0: imx-3stack (SGTL5000)&lt;/P&gt;&lt;P&gt;&amp;nbsp; #1: imx-3stack-spdif (mxc spdif)&lt;/P&gt;&lt;P&gt;TCP cubic registered&lt;/P&gt;&lt;P&gt;NET: Registered protocol family 17&lt;/P&gt;&lt;P&gt;can: controller area network core (rev 20090105 abi 8)&lt;/P&gt;&lt;P&gt;NET: Registered protocol family 29&lt;/P&gt;&lt;P&gt;can: raw protocol (rev 20090105)&lt;/P&gt;&lt;P&gt;can: broadcast manager protocol (rev 20090105 t)&lt;/P&gt;&lt;P&gt;Bluetooth: L2CAP ver 2.14&lt;/P&gt;&lt;P&gt;Bluetooth: L2CAP socket layer initialized&lt;/P&gt;&lt;P&gt;Bluetooth: SCO (Voice Link) ver 0.6&lt;/P&gt;&lt;P&gt;Bluetooth: SCO socket layer initialized&lt;/P&gt;&lt;P&gt;Bluetooth: RFCOMM TTY layer initialized&lt;/P&gt;&lt;P&gt;Bluetooth: RFCOMM socket layer initialized&lt;/P&gt;&lt;P&gt;Bluetooth: RFCOMM ver 1.11&lt;/P&gt;&lt;P&gt;Bluetooth: BNEP (Ethernet Emulation) ver 1.3&lt;/P&gt;&lt;P&gt;Bluetooth: BNEP filters: protocol multicast&lt;/P&gt;&lt;P&gt;Bluetooth: HIDP (Human Interface Emulation) ver 1.2&lt;/P&gt;&lt;P&gt;VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2&lt;/P&gt;&lt;P&gt;input: mxc_ts as /devices/virtual/input/input2&lt;/P&gt;&lt;P&gt;mxc input touchscreen loaded&lt;/P&gt;&lt;P&gt;mxc_rtc mxc_rtc.0: setting system clock to 1970-01-01 00:00:00 UTC (0)&lt;/P&gt;&lt;P&gt;mc34708_adc : mc34708_adc_read_ts&lt;/P&gt;&lt;P&gt;usb 2-1.1: new high speed USB device using fsl-ehci and address 3&lt;/P&gt;&lt;P&gt;EXT3-fs: barriers not enabled&lt;/P&gt;&lt;P&gt;udc suspend begins&lt;/P&gt;&lt;P&gt;gadget not in device mode, leaving early&lt;/P&gt;&lt;P&gt;mmc1: new high speed SDHC card at address b368&lt;/P&gt;&lt;P&gt;mmcblk1: mmc1:b368 NCard 3.69 GiB (ro)&lt;/P&gt;&lt;P&gt; mmcblk1: p1&lt;/P&gt;&lt;P&gt;smsc95xx v1.0.4&lt;/P&gt;&lt;P&gt;smsc95xx 2-1.1:1.0: usb1: register 'smsc95xx' at usb-fsl-ehci.1-1.1, smsc95xx US&lt;/P&gt;&lt;P&gt;B 2.0 Ethernet, 3e:67:ca:fa:65:92&lt;/P&gt;&lt;P&gt;usb 2-1.4: new high speed USB device using fsl-ehci and address 4&lt;/P&gt;&lt;P&gt;uvcvideo: Found UVC 1.00 device WebCam-HM2055 (058f:5608)&lt;/P&gt;&lt;P&gt;input: WebCam-HM2055 as /devices/platform/fsl-ehci.1/usb2/2-1/2-1.4/2-1.4:1.0/in&lt;/P&gt;&lt;P&gt;put/input3&lt;/P&gt;&lt;P&gt;ehci_fsl_bus_suspend, DR&lt;/P&gt;&lt;P&gt;kjournald starting.&amp;nbsp; Commit interval 5 seconds&lt;/P&gt;&lt;P&gt;EXT3-fs (mmcblk0p1): using internal journal&lt;/P&gt;&lt;P&gt;ext3_orphan_cleanup: deleting unreferenced inode 170921&lt;/P&gt;&lt;P&gt;ext3_orphan_cleanup: deleting unreferenced inode 170272&lt;/P&gt;&lt;P&gt;EXT3-fs (mmcblk0p1): 2 orphan inodes deleted&lt;/P&gt;&lt;P&gt;EXT3-fs (mmcblk0p1): recovery complete&lt;/P&gt;&lt;P&gt;EXT3-fs (mmcblk0p1): mounted filesystem with writeback data mode&lt;/P&gt;&lt;P&gt;VFS: Mounted root (ext3 filesystem) on device 179:1.&lt;/P&gt;&lt;P&gt;Freeing init memory: 148K&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 9&lt;/P&gt;&lt;P&gt;DMFC high resolution has set, will not change&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already disabled 9&lt;/P&gt;&lt;P&gt;mxc_ipu mxc_ipu: Channel already uninitialized 9&lt;/P&gt;&lt;P&gt;DMFC high resolution has set, will not change&lt;/P&gt;&lt;P&gt;ehci_fsl_bus_resume, DR&lt;/P&gt;&lt;P&gt;ehci_fsl_bus_suspend, DR&lt;/P&gt;&lt;P&gt;lucid@lucid-desktop:~$&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Jun 2013 08:10:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232316#M17731</guid>
      <dc:creator>vicliu</dc:creator>
      <dc:date>2013-06-25T08:10:25Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232317#M17732</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,vic,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Did you connect other devices on I2C1 bus except MC34708 ?&lt;/P&gt;&lt;P&gt;Weidong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Jun 2013 09:18:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232317#M17732</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2013-06-27T09:18:02Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232318#M17733</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Weidong,&lt;/P&gt;&lt;P&gt;The I2C1 bus&amp;nbsp; on our board is only connected with one device MC34708. &lt;/P&gt;&lt;P&gt;But I saw the booting log messages, the sgtl5000 seems also having error.&lt;/P&gt;&lt;P&gt;Bus 2 connected with two devices, one is sgtl5000, and another is the aic32.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;sgtl5000_hw_read: read reg error : Reg 0x0e&lt;/P&gt;&lt;P&gt;sgtl5000_write: write reg error : Reg 0x0e = 0x000c&lt;/P&gt;&lt;P&gt;sgtl5000_write: write reg error : Reg 0x02 = 0x0020&lt;/P&gt;&lt;P&gt;sgtl5000_write: write reg error : Reg 0x06 = 0x0130&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Jun 2013 15:03:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232318#M17733</guid>
      <dc:creator>vicliu</dc:creator>
      <dc:date>2013-06-27T15:03:57Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232319#M17734</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,vic,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I don't konw why I2C communication exists errors, if you are in china, please tell me you phone number !&lt;/P&gt;&lt;P&gt;Weidong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Jun 2013 08:14:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232319#M17734</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2013-06-28T08:14:28Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232320#M17735</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello , Weidong,&lt;/P&gt;&lt;P&gt;Thanks for your help.&amp;nbsp; I&amp;nbsp; am in Taiwan. If you use skype, you can add my account "terrience".&amp;nbsp; @@ I think maybe the errors caused by without installing the correct codec?&amp;nbsp;&amp;nbsp; I just finished&amp;nbsp; porting the RTC driver on&amp;nbsp; I2C 3bus. It seems worked.&amp;nbsp;&amp;nbsp;&amp;nbsp; So, I2C&amp;nbsp; work correctly. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Jun 2013 10:56:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232320#M17735</guid>
      <dc:creator>vicliu</dc:creator>
      <dc:date>2013-06-28T10:56:42Z</dc:date>
    </item>
    <item>
      <title>Re: MX53 MC34708 touchscreen</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232321#M17736</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,vic,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Due to level shifter on I2C2 bus, Errors occured during i2c2 communications, When we use GPIO to emulate soft I2C, communications were right , and sgtl5000 could work normally.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Weidong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Jul 2013 02:40:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX53-MC34708-touchscreen/m-p/232321#M17736</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2013-07-04T02:40:31Z</dc:date>
    </item>
  </channel>
</rss>

