diff options
-rw-r--r-- | arch/arm/configs/mxs_defconfig | 19 | ||||
-rw-r--r-- | arch/arm/mach-mxs/mach-mxs.c | 62 | ||||
-rw-r--r-- | arch/arm/mach-mxs/pm.c | 1 |
3 files changed, 44 insertions, 38 deletions
diff --git a/arch/arm/configs/mxs_defconfig b/arch/arm/configs/mxs_defconfig index 1d6d8fb7f4a1..4555c025629a 100644 --- a/arch/arm/configs/mxs_defconfig +++ b/arch/arm/configs/mxs_defconfig | |||
@@ -1,4 +1,3 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_SYSVIPC=y | 1 | CONFIG_SYSVIPC=y |
3 | CONFIG_NO_HZ=y | 2 | CONFIG_NO_HZ=y |
4 | CONFIG_HIGH_RES_TIMERS=y | 3 | CONFIG_HIGH_RES_TIMERS=y |
@@ -27,7 +26,6 @@ CONFIG_ARCH_MXS=y | |||
27 | # CONFIG_ARM_THUMB is not set | 26 | # CONFIG_ARM_THUMB is not set |
28 | CONFIG_PREEMPT_VOLUNTARY=y | 27 | CONFIG_PREEMPT_VOLUNTARY=y |
29 | CONFIG_AEABI=y | 28 | CONFIG_AEABI=y |
30 | CONFIG_AUTO_ZRELADDR=y | ||
31 | CONFIG_FPE_NWFPE=y | 29 | CONFIG_FPE_NWFPE=y |
32 | CONFIG_NET=y | 30 | CONFIG_NET=y |
33 | CONFIG_PACKET=y | 31 | CONFIG_PACKET=y |
@@ -43,8 +41,6 @@ CONFIG_SYN_COOKIES=y | |||
43 | # CONFIG_INET_DIAG is not set | 41 | # CONFIG_INET_DIAG is not set |
44 | # CONFIG_IPV6 is not set | 42 | # CONFIG_IPV6 is not set |
45 | CONFIG_CAN=m | 43 | CONFIG_CAN=m |
46 | CONFIG_CAN_RAW=m | ||
47 | CONFIG_CAN_BCM=m | ||
48 | CONFIG_CAN_FLEXCAN=m | 44 | CONFIG_CAN_FLEXCAN=m |
49 | # CONFIG_WIRELESS is not set | 45 | # CONFIG_WIRELESS is not set |
50 | CONFIG_DEVTMPFS=y | 46 | CONFIG_DEVTMPFS=y |
@@ -52,7 +48,6 @@ CONFIG_DEVTMPFS_MOUNT=y | |||
52 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 48 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
53 | CONFIG_MTD=y | 49 | CONFIG_MTD=y |
54 | CONFIG_MTD_CMDLINE_PARTS=y | 50 | CONFIG_MTD_CMDLINE_PARTS=y |
55 | CONFIG_MTD_CHAR=y | ||
56 | CONFIG_MTD_BLOCK=y | 51 | CONFIG_MTD_BLOCK=y |
57 | CONFIG_MTD_DATAFLASH=y | 52 | CONFIG_MTD_DATAFLASH=y |
58 | CONFIG_MTD_M25P80=y | 53 | CONFIG_MTD_M25P80=y |
@@ -67,12 +62,12 @@ CONFIG_SCSI=y | |||
67 | CONFIG_BLK_DEV_SD=y | 62 | CONFIG_BLK_DEV_SD=y |
68 | CONFIG_NETDEVICES=y | 63 | CONFIG_NETDEVICES=y |
69 | CONFIG_ENC28J60=y | 64 | CONFIG_ENC28J60=y |
70 | CONFIG_USB_USBNET=y | ||
71 | CONFIG_USB_NET_SMSC95XX=y | ||
72 | CONFIG_SMSC_PHY=y | 65 | CONFIG_SMSC_PHY=y |
73 | CONFIG_ICPLUS_PHY=y | 66 | CONFIG_ICPLUS_PHY=y |
74 | CONFIG_REALTEK_PHY=y | 67 | CONFIG_REALTEK_PHY=y |
75 | CONFIG_MICREL_PHY=y | 68 | CONFIG_MICREL_PHY=y |
69 | CONFIG_USB_USBNET=y | ||
70 | CONFIG_USB_NET_SMSC95XX=y | ||
76 | # CONFIG_WLAN is not set | 71 | # CONFIG_WLAN is not set |
77 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | 72 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set |
78 | CONFIG_INPUT_EVDEV=y | 73 | CONFIG_INPUT_EVDEV=y |
@@ -110,7 +105,6 @@ CONFIG_LCD_CLASS_DEVICE=y | |||
110 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | 105 | CONFIG_BACKLIGHT_CLASS_DEVICE=y |
111 | CONFIG_BACKLIGHT_PWM=y | 106 | CONFIG_BACKLIGHT_PWM=y |
112 | CONFIG_FRAMEBUFFER_CONSOLE=y | 107 | CONFIG_FRAMEBUFFER_CONSOLE=y |
113 | CONFIG_FONTS=y | ||
114 | CONFIG_LOGO=y | 108 | CONFIG_LOGO=y |
115 | CONFIG_SOUND=y | 109 | CONFIG_SOUND=y |
116 | CONFIG_SND=y | 110 | CONFIG_SND=y |
@@ -119,9 +113,9 @@ CONFIG_SND_MXS_SOC=y | |||
119 | CONFIG_SND_SOC_MXS_SGTL5000=y | 113 | CONFIG_SND_SOC_MXS_SGTL5000=y |
120 | CONFIG_USB=y | 114 | CONFIG_USB=y |
121 | CONFIG_USB_EHCI_HCD=y | 115 | CONFIG_USB_EHCI_HCD=y |
116 | CONFIG_USB_STORAGE=y | ||
122 | CONFIG_USB_CHIPIDEA=y | 117 | CONFIG_USB_CHIPIDEA=y |
123 | CONFIG_USB_CHIPIDEA_HOST=y | 118 | CONFIG_USB_CHIPIDEA_HOST=y |
124 | CONFIG_USB_STORAGE=y | ||
125 | CONFIG_USB_PHY=y | 119 | CONFIG_USB_PHY=y |
126 | CONFIG_USB_MXS_PHY=y | 120 | CONFIG_USB_MXS_PHY=y |
127 | CONFIG_MMC=y | 121 | CONFIG_MMC=y |
@@ -143,9 +137,9 @@ CONFIG_DMADEVICES=y | |||
143 | CONFIG_MXS_DMA=y | 137 | CONFIG_MXS_DMA=y |
144 | CONFIG_STAGING=y | 138 | CONFIG_STAGING=y |
145 | CONFIG_MXS_LRADC=y | 139 | CONFIG_MXS_LRADC=y |
146 | CONFIG_IIO_SYSFS_TRIGGER=y | ||
147 | CONFIG_COMMON_CLK_DEBUG=y | 140 | CONFIG_COMMON_CLK_DEBUG=y |
148 | CONFIG_IIO=y | 141 | CONFIG_IIO=y |
142 | CONFIG_IIO_SYSFS_TRIGGER=y | ||
149 | CONFIG_PWM=y | 143 | CONFIG_PWM=y |
150 | CONFIG_PWM_MXS=y | 144 | CONFIG_PWM_MXS=y |
151 | CONFIG_EXT2_FS=y | 145 | CONFIG_EXT2_FS=y |
@@ -173,14 +167,14 @@ CONFIG_NLS_CODEPAGE_850=y | |||
173 | CONFIG_NLS_ISO8859_1=y | 167 | CONFIG_NLS_ISO8859_1=y |
174 | CONFIG_NLS_ISO8859_15=y | 168 | CONFIG_NLS_ISO8859_15=y |
175 | CONFIG_PRINTK_TIME=y | 169 | CONFIG_PRINTK_TIME=y |
170 | CONFIG_DEBUG_INFO=y | ||
176 | CONFIG_FRAME_WARN=2048 | 171 | CONFIG_FRAME_WARN=2048 |
177 | CONFIG_MAGIC_SYSRQ=y | ||
178 | CONFIG_UNUSED_SYMBOLS=y | 172 | CONFIG_UNUSED_SYMBOLS=y |
173 | CONFIG_MAGIC_SYSRQ=y | ||
179 | CONFIG_DEBUG_KERNEL=y | 174 | CONFIG_DEBUG_KERNEL=y |
180 | CONFIG_LOCKUP_DETECTOR=y | 175 | CONFIG_LOCKUP_DETECTOR=y |
181 | CONFIG_TIMER_STATS=y | 176 | CONFIG_TIMER_STATS=y |
182 | CONFIG_PROVE_LOCKING=y | 177 | CONFIG_PROVE_LOCKING=y |
183 | CONFIG_DEBUG_INFO=y | ||
184 | CONFIG_BLK_DEV_IO_TRACE=y | 178 | CONFIG_BLK_DEV_IO_TRACE=y |
185 | CONFIG_STRICT_DEVMEM=y | 179 | CONFIG_STRICT_DEVMEM=y |
186 | CONFIG_DEBUG_USER=y | 180 | CONFIG_DEBUG_USER=y |
@@ -188,3 +182,4 @@ CONFIG_DEBUG_USER=y | |||
188 | # CONFIG_CRYPTO_HW is not set | 182 | # CONFIG_CRYPTO_HW is not set |
189 | CONFIG_CRC_ITU_T=m | 183 | CONFIG_CRC_ITU_T=m |
190 | CONFIG_CRC7=m | 184 | CONFIG_CRC7=m |
185 | CONFIG_FONTS=y | ||
diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c index 4ce27b536dc9..98f6e2adb53e 100644 --- a/arch/arm/mach-mxs/mach-mxs.c +++ b/arch/arm/mach-mxs/mach-mxs.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/clk/mxs.h> | 14 | #include <linux/clk/mxs.h> |
15 | #include <linux/clkdev.h> | 15 | #include <linux/clkdev.h> |
16 | #include <linux/clocksource.h> | 16 | #include <linux/clocksource.h> |
17 | #include <linux/clk-provider.h> | ||
17 | #include <linux/delay.h> | 18 | #include <linux/delay.h> |
18 | #include <linux/err.h> | 19 | #include <linux/err.h> |
19 | #include <linux/gpio.h> | 20 | #include <linux/gpio.h> |
@@ -61,6 +62,8 @@ | |||
61 | static u32 chipid; | 62 | static u32 chipid; |
62 | static u32 socid; | 63 | static u32 socid; |
63 | 64 | ||
65 | static void __iomem *reset_addr; | ||
66 | |||
64 | static inline void __mxs_setl(u32 mask, void __iomem *reg) | 67 | static inline void __mxs_setl(u32 mask, void __iomem *reg) |
65 | { | 68 | { |
66 | __raw_writel(mask, reg + MXS_SET_ADDR); | 69 | __raw_writel(mask, reg + MXS_SET_ADDR); |
@@ -393,12 +396,33 @@ static const char __init *mxs_get_revision(void) | |||
393 | u32 rev = mxs_get_cpu_rev(); | 396 | u32 rev = mxs_get_cpu_rev(); |
394 | 397 | ||
395 | if (rev != MXS_CHIP_REV_UNKNOWN) | 398 | if (rev != MXS_CHIP_REV_UNKNOWN) |
396 | return kasprintf(GFP_KERNEL, "TO%d.%d", (rev >> 4) & 0xf, | 399 | return kasprintf(GFP_KERNEL, "%d.%d", (rev >> 4) & 0xf, |
397 | rev & 0xf); | 400 | rev & 0xf); |
398 | else | 401 | else |
399 | return kasprintf(GFP_KERNEL, "%s", "Unknown"); | 402 | return kasprintf(GFP_KERNEL, "%s", "Unknown"); |
400 | } | 403 | } |
401 | 404 | ||
405 | #define MX23_CLKCTRL_RESET_OFFSET 0x120 | ||
406 | #define MX28_CLKCTRL_RESET_OFFSET 0x1e0 | ||
407 | |||
408 | static int __init mxs_restart_init(void) | ||
409 | { | ||
410 | struct device_node *np; | ||
411 | |||
412 | np = of_find_compatible_node(NULL, NULL, "fsl,clkctrl"); | ||
413 | reset_addr = of_iomap(np, 0); | ||
414 | if (!reset_addr) | ||
415 | return -ENODEV; | ||
416 | |||
417 | if (of_device_is_compatible(np, "fsl,imx23-clkctrl")) | ||
418 | reset_addr += MX23_CLKCTRL_RESET_OFFSET; | ||
419 | else | ||
420 | reset_addr += MX28_CLKCTRL_RESET_OFFSET; | ||
421 | of_node_put(np); | ||
422 | |||
423 | return 0; | ||
424 | } | ||
425 | |||
402 | static void __init mxs_machine_init(void) | 426 | static void __init mxs_machine_init(void) |
403 | { | 427 | { |
404 | struct device_node *root; | 428 | struct device_node *root; |
@@ -433,21 +457,18 @@ static void __init mxs_machine_init(void) | |||
433 | imx28_evk_init(); | 457 | imx28_evk_init(); |
434 | else if (of_machine_is_compatible("bluegiga,apx4devkit")) | 458 | else if (of_machine_is_compatible("bluegiga,apx4devkit")) |
435 | apx4devkit_init(); | 459 | apx4devkit_init(); |
436 | else if (of_machine_is_compatible("crystalfontz,cfa10037") || | 460 | else if (of_machine_is_compatible("crystalfontz,cfa10036")) |
437 | of_machine_is_compatible("crystalfontz,cfa10049") || | ||
438 | of_machine_is_compatible("crystalfontz,cfa10055") || | ||
439 | of_machine_is_compatible("crystalfontz,cfa10057")) | ||
440 | crystalfontz_init(); | 461 | crystalfontz_init(); |
441 | 462 | ||
442 | of_platform_populate(NULL, of_default_bus_match_table, | 463 | of_platform_populate(NULL, of_default_bus_match_table, |
443 | NULL, parent); | 464 | NULL, parent); |
444 | 465 | ||
466 | mxs_restart_init(); | ||
467 | |||
445 | if (of_machine_is_compatible("karo,tx28")) | 468 | if (of_machine_is_compatible("karo,tx28")) |
446 | tx28_post_init(); | 469 | tx28_post_init(); |
447 | } | 470 | } |
448 | 471 | ||
449 | #define MX23_CLKCTRL_RESET_OFFSET 0x120 | ||
450 | #define MX28_CLKCTRL_RESET_OFFSET 0x1e0 | ||
451 | #define MXS_CLKCTRL_RESET_CHIP (1 << 1) | 472 | #define MXS_CLKCTRL_RESET_CHIP (1 << 1) |
452 | 473 | ||
453 | /* | 474 | /* |
@@ -455,28 +476,16 @@ static void __init mxs_machine_init(void) | |||
455 | */ | 476 | */ |
456 | static void mxs_restart(enum reboot_mode mode, const char *cmd) | 477 | static void mxs_restart(enum reboot_mode mode, const char *cmd) |
457 | { | 478 | { |
458 | struct device_node *np; | 479 | if (reset_addr) { |
459 | void __iomem *reset_addr; | 480 | /* reset the chip */ |
481 | __mxs_setl(MXS_CLKCTRL_RESET_CHIP, reset_addr); | ||
460 | 482 | ||
461 | np = of_find_compatible_node(NULL, NULL, "fsl,clkctrl"); | 483 | pr_err("Failed to assert the chip reset\n"); |
462 | reset_addr = of_iomap(np, 0); | ||
463 | if (!reset_addr) | ||
464 | goto soft; | ||
465 | 484 | ||
466 | if (of_device_is_compatible(np, "fsl,imx23-clkctrl")) | 485 | /* Delay to allow the serial port to show the message */ |
467 | reset_addr += MX23_CLKCTRL_RESET_OFFSET; | 486 | mdelay(50); |
468 | else | 487 | } |
469 | reset_addr += MX28_CLKCTRL_RESET_OFFSET; | ||
470 | |||
471 | /* reset the chip */ | ||
472 | __mxs_setl(MXS_CLKCTRL_RESET_CHIP, reset_addr); | ||
473 | |||
474 | pr_err("Failed to assert the chip reset\n"); | ||
475 | |||
476 | /* Delay to allow the serial port to show the message */ | ||
477 | mdelay(50); | ||
478 | 488 | ||
479 | soft: | ||
480 | /* We'll take a jump through zero as a poor second */ | 489 | /* We'll take a jump through zero as a poor second */ |
481 | soft_restart(0); | 490 | soft_restart(0); |
482 | } | 491 | } |
@@ -487,6 +496,7 @@ static void __init mxs_timer_init(void) | |||
487 | mx23_clocks_init(); | 496 | mx23_clocks_init(); |
488 | else | 497 | else |
489 | mx28_clocks_init(); | 498 | mx28_clocks_init(); |
499 | of_clk_init(NULL); | ||
490 | clocksource_of_init(); | 500 | clocksource_of_init(); |
491 | } | 501 | } |
492 | 502 | ||
diff --git a/arch/arm/mach-mxs/pm.c b/arch/arm/mach-mxs/pm.c index b2494d2db2c4..0170e99fd70f 100644 --- a/arch/arm/mach-mxs/pm.c +++ b/arch/arm/mach-mxs/pm.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/suspend.h> | 16 | #include <linux/suspend.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include "pm.h" | ||
18 | 19 | ||
19 | static int mxs_suspend_enter(suspend_state_t state) | 20 | static int mxs_suspend_enter(suspend_state_t state) |
20 | { | 21 | { |