1. 17 9月, 2013 1 次提交
    • S
      ARM: imx: initialize clk_init_data.flags for clk-fixup-mux · bdb1b5f2
      Shawn Guo 提交于
      The clk_init_data.flags of clk-fixup-mux is left there without
      initialization.  It may hold some random data and cause clock framework
      interpret the clock in an unexpected way.  At least on imx6sl, the
      following division by zero error with sched_clock is seen because of it.
      
      Division by zero in kernel.
      CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.11.0-rc3+ #19
      Backtrace:
      [<80011af0>] (dump_backtrace+0x0/0x10c) from [<80011c90>] (show_stack+0x18/0x1c)
       r6:3b9aca00 r5:00000020 r4:00000000 r3:00000000
      [<80011c78>] (show_stack+0x0/0x1c) from [<8055e02c>] (dump_stack+0x78/0x94)
      [<8055dfb4>] (dump_stack+0x0/0x94) from [<80011924>] (__div0+0x18/0x20)
       r4:00000000 r3:00000000
      [<8001190c>] (__div0+0x0/0x20) from [<8026c408>] (Ldiv0_64+0x8/0x18)
      [<8006330c>] (clocks_calc_mult_shift+0x0/0xf8) from [<8072f604>] (setup_sched_clock+0x88/0x1f0)
      [<8072f57c>] (setup_sched_clock+0x0/0x1f0) from [<8071ad48>] (mxc_timer_init+0xe8/0x17c)
      [<8071ac60>] (mxc_timer_init+0x0/0x17c) from [<807290b0>] (imx6sl_clocks_init+0x1db8/0x1dc0)
       r8:807a9ca4 r7:00000000 r6:80777564 r5:8100c1f4 r4:c0820000
      [<807272f8>] (imx6sl_clocks_init+0x0/0x1dc0) from [<807420ac>] (of_clk_init+0x40/0x6c)
      [<8074206c>] (of_clk_init+0x0/0x6c) from [<807290cc>] (imx6sl_timer_init+0x14/0x18)
       r5:807a8e80 r4:ffffffff
      [<807290b8>] (imx6sl_timer_init+0x0/0x18) from [<80716e1c>] (time_init+0x24/0x34)
      [<80716df8>] (time_init+0x0/0x34) from [<80713738>] (start_kernel+0x1b0/0x310)
      [<80713588>] (start_kernel+0x0/0x310) from [<80008074>] (0x80008074)
       r7:80770b08 r6:80754cd4 r5:8076c8c4 r4:10c53c7d
      sched_clock: 32 bits at 0 Hz, resolution 0ns, wraps every 0ms
      
      Fix the bug by initializing init.flags as zero.
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      bdb1b5f2
  2. 16 8月, 2013 1 次提交
    • L
      ARM: imx: add common clock support for fixup mux · a49e6c4b
      Liu Ying 提交于
      One register may have several fields to control some clocks. It
      is possible that the read/write values of some fields may map to
      different real functional values, so writing to the other fields
      in the same register may break a working clock tree. A real case
      is the aclk_podf field in the register 'CCM Serial Clock Multiplexer
      Register 1' of i.MX6Q/SDL SoC. This patch introduces a fixup hook
      for multiplexer clock which is called before writing a value to
      clock registers to support this kind of multiplexer clocks.
      Signed-off-by: NLiu Ying <Ying.Liu@freescale.com>
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      a49e6c4b