UPSTREAM: spi/rockchip: fix endian mode for 16-bit transfers
authorAlexander Kochetkov <al.kochet@gmail.com>
Sun, 6 Mar 2016 10:04:17 +0000 (13:04 +0300)
committerHuang, Tao <huangtao@rock-chips.com>
Thu, 16 Jun 2016 12:40:11 +0000 (20:40 +0800)
16-bit transfers must be in big endian mode on wire.

Change-Id: I21e660de04867871132e4d5b0f2d943a30167aeb
Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from git.kernel.org next/linux-next.git master
 commit 0277e01aebc8895198a4717ccaf7e4fcf39ada78)

drivers/spi/spi-rockchip.c

index 569071d735af814085ae51856256280c9e6d7991..7f121e679a33dd0628734ea5e9834a4b2d9f9c24 100644 (file)
@@ -506,7 +506,8 @@ static void rockchip_spi_config(struct rockchip_spi *rs)
        int rsd = 0;
 
        u32 cr0 = (CR0_BHT_8BIT << CR0_BHT_OFFSET)
-               | (CR0_SSD_ONE << CR0_SSD_OFFSET);
+               | (CR0_SSD_ONE << CR0_SSD_OFFSET)
+               | (CR0_EM_BIG << CR0_EM_OFFSET);
 
        cr0 |= (rs->n_bytes << CR0_DFS_OFFSET);
        cr0 |= ((rs->mode & 0x3) << CR0_SCPH_OFFSET);