spi:do spin_unlock before msg callback function, fix xpt_2046 bug as follow:
[ 344.540000] BUG: spinlock lockup on CPU#0, swapper/0,
cd417880
[ 344.540000] [<
c044e0bc>] (unwind_backtrace+0x0/0xdc) from [<
c06f2a4c>] (dump_stack+0x18/0x1c)
[ 344.540000] [<
c06f2a4c>] (dump_stack+0x18/0x1c) from [<
c055a1a4>] (_raw_spin_lock+0x128/0x168)
[ 344.540000] [<
c055a1a4>] (_raw_spin_lock+0x128/0x168) from [<
c06f5fec>] (_spin_lock_irqsave+0x5c/0x68)
[ 344.540000] [<
c06f5fec>] (_spin_lock_irqsave+0x5c/0x68) from [<
c05b4b50>] (rk2818_spi_quick_transfer+0x30/0xb0)
[ 344.540000] [<
c05b4b50>] (rk2818_spi_quick_transfer+0x30/0xb0) from [<
c05b21d8>] (spi_async+0xa4/0xb0)
[ 344.540000] [<
c05b21d8>] (spi_async+0xa4/0xb0) from [<
c05fa42c>] (xpt2046_rx_val+0xd4/0x110)
[ 344.540000] [<
c05fa42c>] (xpt2046_rx_val+0xd4/0x110) from [<
c05b3470>] (msg_giveback+0x6c/0x70)
[ 344.540000] [<
c05b3470>] (msg_giveback+0x6c/0x70) from [<
c05b46a0>] (rk2818_pump_messages+0x568/0x598)
[ 344.540000] [<
c05b46a0>] (rk2818_pump_messages+0x568/0x598) from [<
c05b4bbc>] (rk2818_spi_quick_transfer+0x9c/0xb0)
[ 344.540000] [<
c05b4bbc>] (rk2818_spi_quick_transfer+0x9c/0xb0) from [<
c05b21d8>] (spi_async+0xa4/0xb0)
[ 344.540000] [<
c05b21d8>] (spi_async+0xa4/0xb0) from [<
c05fa548>] (xpt2046_timer+0xe0/0x120)
[ 344.540000] [<
c05fa548>] (xpt2046_timer+0xe0/0x120) from [<
c047cc24>] (__run_hrtimer+0x90/0xec)
[ 344.540000] [<
c047cc24>] (__run_hrtimer+0x90/0xec) from [<
c047cf64>] (hrtimer_interrupt+0x198/0x218)
[ 344.540000] [<
c047cf64>] (hrtimer_interrupt+0x198/0x218) from [<
c04527c4>] (rk2818_timer_clockevent_interrupt+0x28/0x34)
[ 344.540000] [<
c04527c4>] (rk2818_timer_clockevent_interrupt+0x28/0x34) from [<
c049ba0c>] (handle_IRQ_event+0x2c/0xfc)
[ 344.540000] [<
c049ba0c>] (handle_IRQ_event+0x2c/0xfc) from [<
c049d908>] (handle_level_irq+0xbc/0x130)
[ 344.540000] [<
c049d908>] (handle_level_irq+0xbc/0x130) from [<
c0448070>] (asm_do_IRQ+0x70/0x8c)
[ 344.540000] [<
c0448070>] (asm_do_IRQ+0x70/0x8c) from [<
c0448ac8>] (__irq_svc+0x48/0xc0)