It contains mxs soc changes for 3.12.
- Run savedefconfig on mxs_defconfig to clean it up - Fix on mxs_restart() routine for interrupt context calling - A few other random updates and cleanups -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQEcBAABAgAGBQJSEIhdAAoJEFBXWFqHsHzObxIH/01oTAU3W66NS6sS587KFlqD x9SBjFuPqskU41+JumSHD/bi+N969jO4sEBSDg0VG5yM5GM7r0QAlsucNsyrSMqb k+Kt2K/dGAVTmvUuHZoT+dgwzPdwRD1Vr1ROpxHFEt9JKhZ6wUR3tTuLEYMmIf9a hGweLqQO3Xtv1jCuFvaqsGsxbnkE9fP9LLreaMnd4/bDnsIYgCgKt1hd5hOFawzx zvjXC3c0HqSAuB6fISRVPMII640MgNFp3s+UWB8ImMtiL7sdGTwIPq+/viSlgG5C iWuaYRgbqqbUZyOn6epEZI304pYy0d7eo6J7wcnnNhGwdrUqyaCV7hLMrs7v9S0= =JFhU -----END PGP SIGNATURE----- Merge tag 'mxs-soc-3.12' of git://git.linaro.org/people/shawnguo/linux-2.6 into next/soc From Shawn Guo: It contains mxs soc changes for 3.12. - Run savedefconfig on mxs_defconfig to clean it up - Fix on mxs_restart() routine for interrupt context calling - A few other random updates and cleanups * tag 'mxs-soc-3.12' of git://git.linaro.org/people/shawnguo/linux-2.6: ARM: mxs: pm: Include "pm.h" ARM: mxs: Simplify detection of CrystalFontz boards ARM: mach-mxs: Remove "TO" string from revision field ARM: mxs: Fix BUG() when invoking mxs_restart() from interrupt context ARM: mxs: Allow DT clock providers ARM: mxs_defconfig: Cleanup mxs_defconfig
This commit is contained in:
commit
d519049cb1
|
@ -1,4 +1,3 @@
|
||||||
CONFIG_EXPERIMENTAL=y
|
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
CONFIG_NO_HZ=y
|
CONFIG_NO_HZ=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
|
@ -27,7 +26,6 @@ CONFIG_ARCH_MXS=y
|
||||||
# CONFIG_ARM_THUMB is not set
|
# CONFIG_ARM_THUMB is not set
|
||||||
CONFIG_PREEMPT_VOLUNTARY=y
|
CONFIG_PREEMPT_VOLUNTARY=y
|
||||||
CONFIG_AEABI=y
|
CONFIG_AEABI=y
|
||||||
CONFIG_AUTO_ZRELADDR=y
|
|
||||||
CONFIG_FPE_NWFPE=y
|
CONFIG_FPE_NWFPE=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
|
@ -43,8 +41,6 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_DIAG is not set
|
# CONFIG_INET_DIAG is not set
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
CONFIG_CAN=m
|
CONFIG_CAN=m
|
||||||
CONFIG_CAN_RAW=m
|
|
||||||
CONFIG_CAN_BCM=m
|
|
||||||
CONFIG_CAN_FLEXCAN=m
|
CONFIG_CAN_FLEXCAN=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -52,7 +48,6 @@ CONFIG_DEVTMPFS_MOUNT=y
|
||||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_CHAR=y
|
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_DATAFLASH=y
|
CONFIG_MTD_DATAFLASH=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
|
@ -67,12 +62,12 @@ CONFIG_SCSI=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_ENC28J60=y
|
CONFIG_ENC28J60=y
|
||||||
CONFIG_USB_USBNET=y
|
|
||||||
CONFIG_USB_NET_SMSC95XX=y
|
|
||||||
CONFIG_SMSC_PHY=y
|
CONFIG_SMSC_PHY=y
|
||||||
CONFIG_ICPLUS_PHY=y
|
CONFIG_ICPLUS_PHY=y
|
||||||
CONFIG_REALTEK_PHY=y
|
CONFIG_REALTEK_PHY=y
|
||||||
CONFIG_MICREL_PHY=y
|
CONFIG_MICREL_PHY=y
|
||||||
|
CONFIG_USB_USBNET=y
|
||||||
|
CONFIG_USB_NET_SMSC95XX=y
|
||||||
# CONFIG_WLAN is not set
|
# CONFIG_WLAN is not set
|
||||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||||
CONFIG_INPUT_EVDEV=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
|
@ -110,7 +105,6 @@ CONFIG_LCD_CLASS_DEVICE=y
|
||||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||||
CONFIG_BACKLIGHT_PWM=y
|
CONFIG_BACKLIGHT_PWM=y
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
CONFIG_FONTS=y
|
|
||||||
CONFIG_LOGO=y
|
CONFIG_LOGO=y
|
||||||
CONFIG_SOUND=y
|
CONFIG_SOUND=y
|
||||||
CONFIG_SND=y
|
CONFIG_SND=y
|
||||||
|
@ -119,9 +113,9 @@ CONFIG_SND_MXS_SOC=y
|
||||||
CONFIG_SND_SOC_MXS_SGTL5000=y
|
CONFIG_SND_SOC_MXS_SGTL5000=y
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
CONFIG_USB_EHCI_HCD=y
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
CONFIG_USB_STORAGE=y
|
||||||
CONFIG_USB_CHIPIDEA=y
|
CONFIG_USB_CHIPIDEA=y
|
||||||
CONFIG_USB_CHIPIDEA_HOST=y
|
CONFIG_USB_CHIPIDEA_HOST=y
|
||||||
CONFIG_USB_STORAGE=y
|
|
||||||
CONFIG_USB_PHY=y
|
CONFIG_USB_PHY=y
|
||||||
CONFIG_USB_MXS_PHY=y
|
CONFIG_USB_MXS_PHY=y
|
||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
||||||
|
@ -143,9 +137,9 @@ CONFIG_DMADEVICES=y
|
||||||
CONFIG_MXS_DMA=y
|
CONFIG_MXS_DMA=y
|
||||||
CONFIG_STAGING=y
|
CONFIG_STAGING=y
|
||||||
CONFIG_MXS_LRADC=y
|
CONFIG_MXS_LRADC=y
|
||||||
CONFIG_IIO_SYSFS_TRIGGER=y
|
|
||||||
CONFIG_COMMON_CLK_DEBUG=y
|
CONFIG_COMMON_CLK_DEBUG=y
|
||||||
CONFIG_IIO=y
|
CONFIG_IIO=y
|
||||||
|
CONFIG_IIO_SYSFS_TRIGGER=y
|
||||||
CONFIG_PWM=y
|
CONFIG_PWM=y
|
||||||
CONFIG_PWM_MXS=y
|
CONFIG_PWM_MXS=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
|
@ -173,14 +167,14 @@ CONFIG_NLS_CODEPAGE_850=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
CONFIG_NLS_ISO8859_15=y
|
CONFIG_NLS_ISO8859_15=y
|
||||||
CONFIG_PRINTK_TIME=y
|
CONFIG_PRINTK_TIME=y
|
||||||
|
CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_FRAME_WARN=2048
|
CONFIG_FRAME_WARN=2048
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
|
||||||
CONFIG_UNUSED_SYMBOLS=y
|
CONFIG_UNUSED_SYMBOLS=y
|
||||||
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_LOCKUP_DETECTOR=y
|
CONFIG_LOCKUP_DETECTOR=y
|
||||||
CONFIG_TIMER_STATS=y
|
CONFIG_TIMER_STATS=y
|
||||||
CONFIG_PROVE_LOCKING=y
|
CONFIG_PROVE_LOCKING=y
|
||||||
CONFIG_DEBUG_INFO=y
|
|
||||||
CONFIG_BLK_DEV_IO_TRACE=y
|
CONFIG_BLK_DEV_IO_TRACE=y
|
||||||
CONFIG_STRICT_DEVMEM=y
|
CONFIG_STRICT_DEVMEM=y
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_DEBUG_USER=y
|
||||||
|
@ -188,3 +182,4 @@ CONFIG_DEBUG_USER=y
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
CONFIG_CRC_ITU_T=m
|
CONFIG_CRC_ITU_T=m
|
||||||
CONFIG_CRC7=m
|
CONFIG_CRC7=m
|
||||||
|
CONFIG_FONTS=y
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include <linux/clk/mxs.h>
|
#include <linux/clk/mxs.h>
|
||||||
#include <linux/clkdev.h>
|
#include <linux/clkdev.h>
|
||||||
#include <linux/clocksource.h>
|
#include <linux/clocksource.h>
|
||||||
|
#include <linux/clk-provider.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
|
@ -61,6 +62,8 @@
|
||||||
static u32 chipid;
|
static u32 chipid;
|
||||||
static u32 socid;
|
static u32 socid;
|
||||||
|
|
||||||
|
static void __iomem *reset_addr;
|
||||||
|
|
||||||
static inline void __mxs_setl(u32 mask, void __iomem *reg)
|
static inline void __mxs_setl(u32 mask, void __iomem *reg)
|
||||||
{
|
{
|
||||||
__raw_writel(mask, reg + MXS_SET_ADDR);
|
__raw_writel(mask, reg + MXS_SET_ADDR);
|
||||||
|
@ -393,12 +396,33 @@ static const char __init *mxs_get_revision(void)
|
||||||
u32 rev = mxs_get_cpu_rev();
|
u32 rev = mxs_get_cpu_rev();
|
||||||
|
|
||||||
if (rev != MXS_CHIP_REV_UNKNOWN)
|
if (rev != MXS_CHIP_REV_UNKNOWN)
|
||||||
return kasprintf(GFP_KERNEL, "TO%d.%d", (rev >> 4) & 0xf,
|
return kasprintf(GFP_KERNEL, "%d.%d", (rev >> 4) & 0xf,
|
||||||
rev & 0xf);
|
rev & 0xf);
|
||||||
else
|
else
|
||||||
return kasprintf(GFP_KERNEL, "%s", "Unknown");
|
return kasprintf(GFP_KERNEL, "%s", "Unknown");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MX23_CLKCTRL_RESET_OFFSET 0x120
|
||||||
|
#define MX28_CLKCTRL_RESET_OFFSET 0x1e0
|
||||||
|
|
||||||
|
static int __init mxs_restart_init(void)
|
||||||
|
{
|
||||||
|
struct device_node *np;
|
||||||
|
|
||||||
|
np = of_find_compatible_node(NULL, NULL, "fsl,clkctrl");
|
||||||
|
reset_addr = of_iomap(np, 0);
|
||||||
|
if (!reset_addr)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
if (of_device_is_compatible(np, "fsl,imx23-clkctrl"))
|
||||||
|
reset_addr += MX23_CLKCTRL_RESET_OFFSET;
|
||||||
|
else
|
||||||
|
reset_addr += MX28_CLKCTRL_RESET_OFFSET;
|
||||||
|
of_node_put(np);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void __init mxs_machine_init(void)
|
static void __init mxs_machine_init(void)
|
||||||
{
|
{
|
||||||
struct device_node *root;
|
struct device_node *root;
|
||||||
|
@ -433,21 +457,18 @@ static void __init mxs_machine_init(void)
|
||||||
imx28_evk_init();
|
imx28_evk_init();
|
||||||
else if (of_machine_is_compatible("bluegiga,apx4devkit"))
|
else if (of_machine_is_compatible("bluegiga,apx4devkit"))
|
||||||
apx4devkit_init();
|
apx4devkit_init();
|
||||||
else if (of_machine_is_compatible("crystalfontz,cfa10037") ||
|
else if (of_machine_is_compatible("crystalfontz,cfa10036"))
|
||||||
of_machine_is_compatible("crystalfontz,cfa10049") ||
|
|
||||||
of_machine_is_compatible("crystalfontz,cfa10055") ||
|
|
||||||
of_machine_is_compatible("crystalfontz,cfa10057"))
|
|
||||||
crystalfontz_init();
|
crystalfontz_init();
|
||||||
|
|
||||||
of_platform_populate(NULL, of_default_bus_match_table,
|
of_platform_populate(NULL, of_default_bus_match_table,
|
||||||
NULL, parent);
|
NULL, parent);
|
||||||
|
|
||||||
|
mxs_restart_init();
|
||||||
|
|
||||||
if (of_machine_is_compatible("karo,tx28"))
|
if (of_machine_is_compatible("karo,tx28"))
|
||||||
tx28_post_init();
|
tx28_post_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MX23_CLKCTRL_RESET_OFFSET 0x120
|
|
||||||
#define MX28_CLKCTRL_RESET_OFFSET 0x1e0
|
|
||||||
#define MXS_CLKCTRL_RESET_CHIP (1 << 1)
|
#define MXS_CLKCTRL_RESET_CHIP (1 << 1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -455,28 +476,16 @@ static void __init mxs_machine_init(void)
|
||||||
*/
|
*/
|
||||||
static void mxs_restart(enum reboot_mode mode, const char *cmd)
|
static void mxs_restart(enum reboot_mode mode, const char *cmd)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
if (reset_addr) {
|
||||||
void __iomem *reset_addr;
|
/* reset the chip */
|
||||||
|
__mxs_setl(MXS_CLKCTRL_RESET_CHIP, reset_addr);
|
||||||
|
|
||||||
np = of_find_compatible_node(NULL, NULL, "fsl,clkctrl");
|
pr_err("Failed to assert the chip reset\n");
|
||||||
reset_addr = of_iomap(np, 0);
|
|
||||||
if (!reset_addr)
|
|
||||||
goto soft;
|
|
||||||
|
|
||||||
if (of_device_is_compatible(np, "fsl,imx23-clkctrl"))
|
/* Delay to allow the serial port to show the message */
|
||||||
reset_addr += MX23_CLKCTRL_RESET_OFFSET;
|
mdelay(50);
|
||||||
else
|
}
|
||||||
reset_addr += MX28_CLKCTRL_RESET_OFFSET;
|
|
||||||
|
|
||||||
/* reset the chip */
|
|
||||||
__mxs_setl(MXS_CLKCTRL_RESET_CHIP, reset_addr);
|
|
||||||
|
|
||||||
pr_err("Failed to assert the chip reset\n");
|
|
||||||
|
|
||||||
/* Delay to allow the serial port to show the message */
|
|
||||||
mdelay(50);
|
|
||||||
|
|
||||||
soft:
|
|
||||||
/* We'll take a jump through zero as a poor second */
|
/* We'll take a jump through zero as a poor second */
|
||||||
soft_restart(0);
|
soft_restart(0);
|
||||||
}
|
}
|
||||||
|
@ -487,6 +496,7 @@ static void __init mxs_timer_init(void)
|
||||||
mx23_clocks_init();
|
mx23_clocks_init();
|
||||||
else
|
else
|
||||||
mx28_clocks_init();
|
mx28_clocks_init();
|
||||||
|
of_clk_init(NULL);
|
||||||
clocksource_of_init();
|
clocksource_of_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include "pm.h"
|
||||||
|
|
||||||
static int mxs_suspend_enter(suspend_state_t state)
|
static int mxs_suspend_enter(suspend_state_t state)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue