Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'mxs-dt-3.8' of git://git.linaro.org/people/shawnguo/linux-2.6 into next/dt

From Shawn Guo <shawn.guo@linaro.org>:
It's mxs device tree changes for 3.8. The majority is device tree
source updates. One timer improvement and one defconfig update are
also included there.

* tag 'mxs-dt-3.8' of git://git.linaro.org/people/shawnguo/linux-2.6:
ARM: mxs_defconfig: Improve USB related support
ARM: mxs: apf28dev: Add I2C and SPI support
ARM: mxs: Setup scheduler clock
ARM: dts: mxs: Add hog pins to Crystalfontz boards
ARM: dts: cfa10036: Use pinctrl for power led
ARM: mxs: apf28dev: Add LCD and backlight support
ARM: mxs: apf28dev: Add pinctrl and gpios
ARM: dts: mxs: Add 16 bits LCD screen muxing options for I.MX28
ARM: dts: cfa10049: Add the DH2228FV DAC to the DTS
ARM: mxs: Add support for the Armadeus Systems APF28Dev docking board
ARM: mx28: Skip OCOTP FEC MAC setup if in DT
ARM: dts: mxs: Add PWM3 muxing options for i.MX28
ARM: mxs: Add support for the Armadeus Systems APF28 module
ARM: dts: cfa10049: Add FEC to the CFA-10049 expansion board
ARM: dts: imx23-olinuxino: Use pinctrl for gpio-led
ARM: dts: imx23-olinuxino: Remove unneeded "default-on"
ARM: dts: imx28-evk: Use pinctrl for gpio-led

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+424 -4
+2
arch/arm/boot/dts/Makefile
··· 56 56 dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \ 57 57 imx23-olinuxino.dtb \ 58 58 imx23-stmp378x_devb.dtb \ 59 + imx28-apf28.dtb \ 60 + imx28-apf28dev.dtb \ 59 61 imx28-apx4devkit.dtb \ 60 62 imx28-cfa10036.dtb \ 61 63 imx28-cfa10049.dtb \
+12 -2
arch/arm/boot/dts/imx23-olinuxino.dts
··· 40 40 reg = <0>; 41 41 fsl,pinmux-ids = < 42 42 0x2013 /* MX23_PAD_SSP1_DETECT__GPIO_2_1 */ 43 + >; 44 + fsl,drive-strength = <0>; 45 + fsl,voltage = <1>; 46 + fsl,pull-up = <0>; 47 + }; 48 + 49 + led_pin_gpio0_17: led_gpio0_17@0 { 50 + reg = <0>; 51 + fsl,pinmux-ids = < 43 52 0x0113 /* MX23_PAD_GPMI_ALE__GPIO_0_17 */ 44 53 >; 45 54 fsl,drive-strength = <0>; ··· 100 91 101 92 leds { 102 93 compatible = "gpio-leds"; 94 + pinctrl-names = "default"; 95 + pinctrl-0 = <&led_pin_gpio0_17>; 103 96 104 97 user { 105 98 label = "green"; 106 - gpios = <&gpio2 1 0>; 107 - linux,default-trigger = "default-on"; 99 + gpios = <&gpio2 1 1>; 108 100 }; 109 101 }; 110 102 };
+85
arch/arm/boot/dts/imx28-apf28.dts
··· 1 + /* 2 + * Copyright 2012 Armadeus Systems - <support@armadeus.com> 3 + * 4 + * The code contained herein is licensed under the GNU General Public 5 + * License. You may obtain a copy of the GNU General Public License 6 + * Version 2 or later at the following locations: 7 + * 8 + * http://www.opensource.org/licenses/gpl-license.html 9 + * http://www.gnu.org/copyleft/gpl.html 10 + */ 11 + 12 + /dts-v1/; 13 + /include/ "imx28.dtsi" 14 + 15 + / { 16 + model = "Armadeus Systems APF28 module"; 17 + compatible = "armadeus,imx28-apf28", "fsl,imx28"; 18 + 19 + memory { 20 + reg = <0x40000000 0x08000000>; 21 + }; 22 + 23 + apb@80000000 { 24 + apbh@80000000 { 25 + gpmi-nand@8000c000 { 26 + pinctrl-names = "default"; 27 + pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>; 28 + status = "okay"; 29 + 30 + partition@0 { 31 + label = "u-boot"; 32 + reg = <0x0 0x300000>; 33 + }; 34 + 35 + partition@300000 { 36 + label = "env"; 37 + reg = <0x300000 0x80000>; 38 + }; 39 + 40 + partition@380000 { 41 + label = "env2"; 42 + reg = <0x380000 0x80000>; 43 + }; 44 + 45 + partition@400000 { 46 + label = "dtb"; 47 + reg = <0x400000 0x80000>; 48 + }; 49 + 50 + partition@480000 { 51 + label = "splash"; 52 + reg = <0x480000 0x80000>; 53 + }; 54 + 55 + partition@500000 { 56 + label = "kernel"; 57 + reg = <0x500000 0x800000>; 58 + }; 59 + 60 + partition@d00000 { 61 + label = "rootfs"; 62 + reg = <0xd00000 0xf300000>; 63 + }; 64 + }; 65 + }; 66 + 67 + apbx@80040000 { 68 + duart: serial@80074000 { 69 + pinctrl-names = "default"; 70 + pinctrl-0 = <&duart_pins_a>; 71 + status = "okay"; 72 + }; 73 + }; 74 + }; 75 + 76 + ahb@80080000 { 77 + mac0: ethernet@800f0000 { 78 + phy-mode = "rmii"; 79 + pinctrl-names = "default"; 80 + pinctrl-0 = <&mac0_pins_a>; 81 + phy-reset-gpios = <&gpio4 13 0>; 82 + status = "okay"; 83 + }; 84 + }; 85 + };
+154
arch/arm/boot/dts/imx28-apf28dev.dts
··· 1 + /* 2 + * Copyright 2012 Armadeus Systems - <support@armadeus.com> 3 + * 4 + * The code contained herein is licensed under the GNU General Public 5 + * License. You may obtain a copy of the GNU General Public License 6 + * Version 2 or later at the following locations: 7 + * 8 + * http://www.opensource.org/licenses/gpl-license.html 9 + * http://www.gnu.org/copyleft/gpl.html 10 + */ 11 + 12 + /* APF28Dev is a docking board for the APF28 SOM */ 13 + /include/ "imx28-apf28.dts" 14 + 15 + / { 16 + model = "Armadeus Systems APF28Dev docking/development board"; 17 + compatible = "armadeus,imx28-apf28dev", "armadeus,imx28-apf28", "fsl,imx28"; 18 + 19 + apb@80000000 { 20 + apbh@80000000 { 21 + ssp0: ssp@80010000 { 22 + compatible = "fsl,imx28-mmc"; 23 + pinctrl-names = "default"; 24 + pinctrl-0 = <&mmc0_4bit_pins_a 25 + &mmc0_cd_cfg &mmc0_sck_cfg>; 26 + bus-width = <4>; 27 + status = "okay"; 28 + }; 29 + 30 + ssp2: ssp@80014000 { 31 + compatible = "fsl,imx28-spi"; 32 + pinctrl-names = "default"; 33 + pinctrl-0 = <&spi2_pins_a>; 34 + status = "okay"; 35 + }; 36 + 37 + pinctrl@80018000 { 38 + pinctrl-names = "default"; 39 + pinctrl-0 = <&hog_pins_apf28dev>; 40 + 41 + hog_pins_apf28dev: hog@0 { 42 + reg = <0>; 43 + fsl,pinmux-ids = < 44 + 0x1103 /* MX28_PAD_LCD_D16__GPIO_1_16 */ 45 + 0x1113 /* MX28_PAD_LCD_D17__GPIO_1_17 */ 46 + 0x1123 /* MX28_PAD_LCD_D18__GPIO_1_18 */ 47 + 0x1133 /* MX28_PAD_LCD_D19__GPIO_1_19 */ 48 + 0x1143 /* MX28_PAD_LCD_D20__GPIO_1_20 */ 49 + 0x1153 /* MX28_PAD_LCD_D21__GPIO_1_21 */ 50 + 0x1163 /* MX28_PAD_LCD_D22__GPIO_1_22 */ 51 + >; 52 + fsl,drive-strength = <0>; 53 + fsl,voltage = <1>; 54 + fsl,pull-up = <0>; 55 + }; 56 + 57 + lcdif_pins_apf28dev: lcdif-apf28dev@0 { 58 + reg = <0>; 59 + fsl,pinmux-ids = < 60 + 0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */ 61 + 0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */ 62 + 0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */ 63 + 0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */ 64 + >; 65 + fsl,drive-strength = <0>; 66 + fsl,voltage = <1>; 67 + fsl,pull-up = <0>; 68 + }; 69 + }; 70 + 71 + lcdif@80030000 { 72 + pinctrl-names = "default"; 73 + pinctrl-0 = <&lcdif_16bit_pins_a 74 + &lcdif_pins_apf28dev>; 75 + status = "okay"; 76 + }; 77 + }; 78 + 79 + apbx@80040000 { 80 + lradc@80050000 { 81 + status = "okay"; 82 + }; 83 + 84 + i2c0: i2c@80058000 { 85 + pinctrl-names = "default"; 86 + pinctrl-0 = <&i2c0_pins_a>; 87 + status = "okay"; 88 + }; 89 + 90 + pwm: pwm@80064000 { 91 + pinctrl-names = "default"; 92 + pinctrl-0 = <&pwm3_pins_a &pwm4_pins_a>; 93 + status = "okay"; 94 + }; 95 + 96 + usbphy0: usbphy@8007c000 { 97 + status = "okay"; 98 + }; 99 + 100 + usbphy1: usbphy@8007e000 { 101 + status = "okay"; 102 + }; 103 + }; 104 + }; 105 + 106 + ahb@80080000 { 107 + usb0: usb@80080000 { 108 + vbus-supply = <&reg_usb0_vbus>; 109 + status = "okay"; 110 + }; 111 + 112 + usb1: usb@80090000 { 113 + status = "okay"; 114 + }; 115 + 116 + mac1: ethernet@800f4000 { 117 + phy-mode = "rmii"; 118 + pinctrl-names = "default"; 119 + pinctrl-0 = <&mac1_pins_a>; 120 + phy-reset-gpios = <&gpio0 23 0>; 121 + status = "okay"; 122 + }; 123 + }; 124 + 125 + regulators { 126 + compatible = "simple-bus"; 127 + 128 + reg_usb0_vbus: usb0_vbus { 129 + compatible = "regulator-fixed"; 130 + regulator-name = "usb0_vbus"; 131 + regulator-min-microvolt = <5000000>; 132 + regulator-max-microvolt = <5000000>; 133 + gpio = <&gpio1 23 1>; 134 + }; 135 + }; 136 + 137 + leds { 138 + compatible = "gpio-leds"; 139 + 140 + user { 141 + label = "Heartbeat"; 142 + gpios = <&gpio0 21 0>; 143 + linux,default-trigger = "heartbeat"; 144 + }; 145 + }; 146 + 147 + backlight { 148 + compatible = "pwm-backlight"; 149 + 150 + pwms = <&pwm 3 191000>; 151 + brightness-levels = <0 4 8 16 32 64 128 255>; 152 + default-brightness-level = <6>; 153 + }; 154 + };
+27
arch/arm/boot/dts/imx28-cfa10036.dts
··· 22 22 23 23 apb@80000000 { 24 24 apbh@80000000 { 25 + pinctrl@80018000 { 26 + pinctrl-names = "default"; 27 + pinctrl-0 = <&hog_pins_cfa10036>; 28 + 29 + hog_pins_cfa10036: hog-10036@0 { 30 + reg = <0>; 31 + fsl,pinmux-ids = < 32 + 0x2073 /* MX28_PAD_SSP0_D7__GPIO_2_7 */ 33 + >; 34 + fsl,drive-strength = <0>; 35 + fsl,voltage = <1>; 36 + fsl,pull-up = <0>; 37 + }; 38 + 39 + led_pins_cfa10036: leds-10036@0 { 40 + reg = <0>; 41 + fsl,pinmux-ids = < 42 + 0x3043 /* MX28_PAD_AUART1_RX__GPIO_3_4 */ 43 + >; 44 + fsl,drive-strength = <0>; 45 + fsl,voltage = <1>; 46 + fsl,pull-up = <0>; 47 + }; 48 + }; 49 + 25 50 ssp0: ssp@80010000 { 26 51 compatible = "fsl,imx28-mmc"; 27 52 pinctrl-names = "default"; ··· 68 43 69 44 leds { 70 45 compatible = "gpio-leds"; 46 + pinctrl-names = "default"; 47 + pinctrl-0 = <&led_pins_cfa10036>; 71 48 72 49 power { 73 50 gpios = <&gpio3 4 1>;
+33
arch/arm/boot/dts/imx28-cfa10049.dts
··· 22 22 apb@80000000 { 23 23 apbh@80000000 { 24 24 pinctrl@80018000 { 25 + pinctrl-names = "default", "default"; 26 + pinctrl-1 = <&hog_pins_cfa10049>; 27 + 28 + hog_pins_cfa10049: hog-10049@0 { 29 + reg = <0>; 30 + fsl,pinmux-ids = < 31 + 0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */ 32 + 0x1163 /* MX28_PAD_LCD_D22__GPIO_1_22 */ 33 + 0x1173 /* MX28_PAD_LCD_D22__GPIO_1_23 */ 34 + 0x2153 /* MX28_PAD_SSP2_D5__GPIO_2_21 */ 35 + >; 36 + fsl,drive-strength = <0>; 37 + fsl,voltage = <1>; 38 + fsl,pull-up = <0>; 39 + }; 40 + 25 41 spi3_pins_cfa10049: spi3-cfa10049@0 { 26 42 reg = <0>; 27 43 fsl,pinmux-ids = < ··· 45 29 0x01c1 /* MX28_PAD_GPMI_RESETN__SSP3_CMD */ 46 30 0x0111 /* MX28_PAD_GPMI_CE1N__SSP3_D3 */ 47 31 0x01a2 /* MX28_PAD_GPMI_ALE__SSP3_D4 */ 32 + 0x01b2 /* MX28_PAD_GPMI_CLE__SSP3_D5 */ 48 33 >; 49 34 fsl,drive-strength = <1>; 50 35 fsl,voltage = <1>; ··· 77 60 spi-max-frequency = <100000>; 78 61 }; 79 62 63 + dac0: dh2228@2 { 64 + compatible = "rohm,dh2228fv"; 65 + reg = <2>; 66 + spi-max-frequency = <100000>; 67 + }; 80 68 }; 81 69 }; 82 70 ··· 116 94 regulator-min-microvolt = <5000000>; 117 95 regulator-max-microvolt = <5000000>; 118 96 gpio = <&gpio0 7 1>; 97 + }; 98 + }; 99 + 100 + ahb@80080000 { 101 + mac0: ethernet@800f0000 { 102 + phy-mode = "rmii"; 103 + pinctrl-names = "default"; 104 + pinctrl-0 = <&mac0_pins_a>; 105 + phy-reset-gpios = <&gpio2 21 0>; 106 + phy-reset-duration = <100>; 107 + status = "okay"; 119 108 }; 120 109 }; 121 110 };
+12 -1
arch/arm/boot/dts/imx28-evk.dts
··· 76 76 0x20c3 /* MX28_PAD_SSP1_SCK__GPIO_2_12 */ 77 77 0x31c3 /* MX28_PAD_PWM3__GPIO_3_28 */ 78 78 0x31e3 /* MX28_PAD_LCD_RESET__GPIO_3_30 */ 79 - 0x3053 /* MX28_PAD_AUART1_TX__GPIO_3_5 */ 80 79 0x3083 /* MX28_PAD_AUART2_RX__GPIO_3_8 */ 81 80 0x3093 /* MX28_PAD_AUART2_TX__GPIO_3_9 */ 81 + >; 82 + fsl,drive-strength = <0>; 83 + fsl,voltage = <1>; 84 + fsl,pull-up = <0>; 85 + }; 86 + 87 + led_pin_gpio3_5: led_gpio3_5@0 { 88 + reg = <0>; 89 + fsl,pinmux-ids = < 90 + 0x3053 /* MX28_PAD_AUART1_TX__GPIO_3_5 */ 82 91 >; 83 92 fsl,drive-strength = <0>; 84 93 fsl,voltage = <1>; ··· 297 288 298 289 leds { 299 290 compatible = "gpio-leds"; 291 + pinctrl-names = "default"; 292 + pinctrl-0 = <&led_pin_gpio3_5>; 300 293 301 294 user { 302 295 label = "Heartbeat";
+35
arch/arm/boot/dts/imx28.dtsi
··· 492 492 fsl,pull-up = <0>; 493 493 }; 494 494 495 + pwm3_pins_a: pwm3@0 { 496 + reg = <0>; 497 + fsl,pinmux-ids = < 498 + 0x31c0 /* MX28_PAD_PWM3__PWM_3 */ 499 + >; 500 + fsl,drive-strength = <0>; 501 + fsl,voltage = <1>; 502 + fsl,pull-up = <0>; 503 + }; 504 + 495 505 pwm4_pins_a: pwm4@0 { 496 506 reg = <0>; 497 507 fsl,pinmux-ids = < ··· 539 529 0x1150 /* MX28_PAD_LCD_D21__LCD_D21 */ 540 530 0x1160 /* MX28_PAD_LCD_D22__LCD_D22 */ 541 531 0x1170 /* MX28_PAD_LCD_D23__LCD_D23 */ 532 + >; 533 + fsl,drive-strength = <0>; 534 + fsl,voltage = <1>; 535 + fsl,pull-up = <0>; 536 + }; 537 + 538 + lcdif_16bit_pins_a: lcdif-16bit@0 { 539 + reg = <0>; 540 + fsl,pinmux-ids = < 541 + 0x1000 /* MX28_PAD_LCD_D00__LCD_D0 */ 542 + 0x1010 /* MX28_PAD_LCD_D01__LCD_D1 */ 543 + 0x1020 /* MX28_PAD_LCD_D02__LCD_D2 */ 544 + 0x1030 /* MX28_PAD_LCD_D03__LCD_D3 */ 545 + 0x1040 /* MX28_PAD_LCD_D04__LCD_D4 */ 546 + 0x1050 /* MX28_PAD_LCD_D05__LCD_D5 */ 547 + 0x1060 /* MX28_PAD_LCD_D06__LCD_D6 */ 548 + 0x1070 /* MX28_PAD_LCD_D07__LCD_D7 */ 549 + 0x1080 /* MX28_PAD_LCD_D08__LCD_D8 */ 550 + 0x1090 /* MX28_PAD_LCD_D09__LCD_D9 */ 551 + 0x10a0 /* MX28_PAD_LCD_D10__LCD_D10 */ 552 + 0x10b0 /* MX28_PAD_LCD_D11__LCD_D11 */ 553 + 0x10c0 /* MX28_PAD_LCD_D12__LCD_D12 */ 554 + 0x10d0 /* MX28_PAD_LCD_D13__LCD_D13 */ 555 + 0x10e0 /* MX28_PAD_LCD_D14__LCD_D14 */ 556 + 0x10f0 /* MX28_PAD_LCD_D15__LCD_D15 */ 542 557 >; 543 558 fsl,drive-strength = <0>; 544 559 fsl,voltage = <1>;
+6
arch/arm/configs/mxs_defconfig
··· 61 61 CONFIG_NETDEVICES=y 62 62 CONFIG_NET_ETHERNET=y 63 63 CONFIG_ENC28J60=y 64 + CONFIG_USB_USBNET=y 65 + CONFIG_USB_NET_SMSC95XX=y 64 66 # CONFIG_NETDEV_1000 is not set 65 67 # CONFIG_NETDEV_10000 is not set 66 68 # CONFIG_WLAN is not set ··· 160 158 CONFIG_NFS_V3_ACL=y 161 159 CONFIG_NFS_V4=y 162 160 CONFIG_ROOT_NFS=y 161 + CONFIG_NLS_CODEPAGE_437=y 162 + CONFIG_NLS_CODEPAGE_850=y 163 + CONFIG_NLS_ISO8859_1=y 164 + CONFIG_NLS_ISO8859_15=y 163 165 CONFIG_PRINTK_TIME=y 164 166 CONFIG_FRAME_WARN=2048 165 167 CONFIG_MAGIC_SYSRQ=y
+49
arch/arm/mach-mxs/mach-mxs.c
··· 100 100 }, 101 101 }; 102 102 103 + static struct fb_videomode apf28dev_video_modes[] = { 104 + { 105 + .name = "LW700", 106 + .refresh = 60, 107 + .xres = 800, 108 + .yres = 480, 109 + .pixclock = 30303, /* picosecond */ 110 + .left_margin = 96, 111 + .right_margin = 96, /* at least 3 & 1 */ 112 + .upper_margin = 0x14, 113 + .lower_margin = 0x15, 114 + .hsync_len = 64, 115 + .vsync_len = 4, 116 + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT | 117 + FB_SYNC_DATA_ENABLE_HIGH_ACT | 118 + FB_SYNC_DOTCLK_FAILING_ACT, 119 + }, 120 + }; 121 + 103 122 static struct mxsfb_platform_data mxsfb_pdata __initdata; 104 123 105 124 /* ··· 179 160 enum mac_oui { 180 161 OUI_FSL, 181 162 OUI_DENX, 163 + OUI_CRYSTALFONTZ, 182 164 }; 183 165 184 166 static void __init update_fec_mac_prop(enum mac_oui oui) ··· 195 175 np = of_find_compatible_node(from, NULL, "fsl,imx28-fec"); 196 176 if (!np) 197 177 return; 178 + 198 179 from = np; 180 + 181 + if (of_get_property(np, "local-mac-address", NULL)) 182 + continue; 199 183 200 184 newmac = kzalloc(sizeof(*newmac) + 6, GFP_KERNEL); 201 185 if (!newmac) ··· 228 204 macaddr[0] = 0xc0; 229 205 macaddr[1] = 0xe5; 230 206 macaddr[2] = 0x4e; 207 + break; 208 + case OUI_CRYSTALFONTZ: 209 + macaddr[0] = 0x58; 210 + macaddr[1] = 0xb9; 211 + macaddr[2] = 0xe1; 231 212 break; 232 213 } 233 214 val = ocotp[i]; ··· 384 355 pinctrl_put(pctl); 385 356 } 386 357 358 + static void __init cfa10049_init(void) 359 + { 360 + enable_clk_enet_out(); 361 + update_fec_mac_prop(OUI_CRYSTALFONTZ); 362 + } 363 + 364 + static void __init apf28_init(void) 365 + { 366 + enable_clk_enet_out(); 367 + 368 + mxsfb_pdata.mode_list = apf28dev_video_modes; 369 + mxsfb_pdata.mode_count = ARRAY_SIZE(apf28dev_video_modes); 370 + mxsfb_pdata.default_bpp = 16; 371 + mxsfb_pdata.ld_intf_width = STMLCDIF_16BIT; 372 + } 373 + 387 374 static void __init mxs_machine_init(void) 388 375 { 389 376 if (of_machine_is_compatible("fsl,imx28-evk")) ··· 410 365 m28evk_init(); 411 366 else if (of_machine_is_compatible("bluegiga,apx4devkit")) 412 367 apx4devkit_init(); 368 + else if (of_machine_is_compatible("crystalfontz,cfa10049")) 369 + cfa10049_init(); 370 + else if (of_machine_is_compatible("armadeus,imx28-apf28")) 371 + apf28_init(); 413 372 414 373 of_platform_populate(NULL, of_default_bus_match_table, 415 374 mxs_auxdata_lookup, NULL);
+9 -1
arch/arm/mach-mxs/timer.c
··· 29 29 #include <linux/of_irq.h> 30 30 31 31 #include <asm/mach/time.h> 32 + #include <asm/sched_clock.h> 32 33 #include <mach/mxs.h> 33 34 #include <mach/common.h> 34 35 ··· 234 233 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 235 234 }; 236 235 236 + static u32 notrace mxs_read_sched_clock_v2(void) 237 + { 238 + return ~readl_relaxed(mxs_timrot_base + HW_TIMROT_RUNNING_COUNTn(1)); 239 + } 240 + 237 241 static int __init mxs_clocksource_init(struct clk *timer_clk) 238 242 { 239 243 unsigned int c = clk_get_rate(timer_clk); 240 244 241 245 if (timrot_is_v1()) 242 246 clocksource_register_hz(&clocksource_mxs, c); 243 - else 247 + else { 244 248 clocksource_mmio_init(mxs_timrot_base + HW_TIMROT_RUNNING_COUNTn(1), 245 249 "mxs_timer", c, 200, 32, clocksource_mmio_readl_down); 250 + setup_sched_clock(mxs_read_sched_clock_v2, 32, c); 251 + } 246 252 247 253 return 0; 248 254 }