Commit c427bc0a3a3ab39680ce591774b4766ee5d4f46e

Authored by 김태훈
Exists in master and in 2 other branches fhd, fhd-demo

Merge branch 'master' of 192.168.10.12:falinux/1611_0007_prime_oven

README.md
... ... @@ -45,7 +45,9 @@
45 45 * 부트로더 디렉토리로 이동한다.
46 46  
47 47 $ cd bootloader/u-boot_2015_04
48   - $ source ../../env-4.9.4.env # (이미 실행하였다면 하지 않아도 된다)
  48 + $ cd ../../
  49 + $ source env-4.9.4.env # (이미 실행하였다면 하지 않아도 된다)
  50 + $ cd bootloader/u-boot_2015_04
49 51  
50 52 * u-boot 환경 파일
51 53  
... ... @@ -72,7 +74,10 @@
72 74 * 커널 디렉토리로 이동한다.
73 75  
74 76 $ cd kernel/linux-imx6_3.14.28
75   - $ source ../../env-4.9.4.env # (이미 실행하였다면 하지 않아도 된다)
  77 + $ cd ../../
  78 + $ source env-4.9.4.env # (이미 실행하였다면 하지 않아도 된다)
  79 + $ cd kernel/linux-imx6_3.14.28
  80 +
76 81  
77 82 * kernel 환경 파일
78 83  
... ... @@ -101,6 +106,10 @@
101 106 * buildroot 디렉토리 buildroot 로 이동한다.
102 107  
103 108 $ cd buildroot/buildroot-2016.08.1
  109 + $ cd ../../
  110 + $ source env-4.9.4.env # (이미 실행하였다면 하지 않아도 된다)
  111 + $ cd buildroot/buildroot-2016.08.1
  112 +
104 113  
105 114 * 컴파일은 make.sh 를 사용한다.
106 115  
... ... @@ -165,13 +174,12 @@
165 174 ## [파티션]
166 175 ---------------------------
167 176  
168   - start size desc
169   - ---------- ---------- ------------------
170   - 00-MB 64-MB reserved area
171   - 64-MB 64-MB partition#0, FAT32 : BOOT0
172   - 128-MB 64-MB partition#1, FAT32 : BOOT1
173   - 192-MB 128-MB partition#2, ext4 : APP
174   - 320-MB all partition#3, ext4 : DATA
  177 + start size desc
  178 + ---------- ---------- ------------------
  179 + 00-MB 64-MB reserved area
  180 + 64-MB 192-MB partition#0, ext4 : BOOT0
  181 + 256-MB 2048-MB partition#1, ext4 : APP
  182 + 2304-MB all partition#2, ext4 : DATA
175 183  
176 184 ------------------------------------------
177 185 00-MB 64-MB reserved area
... ...
buildroot/buildroot-2016.08.1/board/falinux/prime_oven/rootfs_overlay/root/.falinux/mk-mmc-part.sh
... ... @@ -5,34 +5,35 @@ BDEV=/dev/mmcblk0
5 5 PART1=p1
6 6 PART2=p2
7 7 PART3=p3
8   -PART4=p4
9 8  
10 9 umount ${BDEV}${PART1}
11 10 umount ${BDEV}${PART2}
12 11 umount ${BDEV}${PART3}
13   -umount ${BDEV}${PART4}
14 12  
15 13 echo "==== make partitions ==============================="
16   -fdisk -S1 -H1 ${BDEV} << EOF
  14 +## start stop desc
  15 +## ---------- ---------- ------------------
  16 +## 00-MB 64-MB reserved area
  17 +## 64-MB 192-MB partition#0, ext4 : BOOT0
  18 +## 256-MB 2048-MB partition#1, ext4 : APP
  19 +## 2304-MB all partition#2, ext4 : DATA
  20 +##
  21 +fdisk ${BDEV} << EOF
17 22 o
18 23 n
19 24 p
20 25 1
21   -131072
22   -196607
  26 +2048
  27 +8191
23 28 n
24 29 p
25 30 2
26   -196608
27   -262143
  31 +8192
  32 +73727
28 33 n
29 34 p
30 35 3
31   -262144
32   -524287
33   -n
34   -p
35   -524288
  36 +73728
36 37  
37 38 t
38 39 1
... ... @@ -46,8 +47,7 @@ EOF
46 47 ## format partitions
47 48 echo "==== format partitions ============================="
48 49  
49   -mkfs.fat ${BDEV}${PART1} -n BOOT0
50   -mkfs.fat ${BDEV}${PART2} -n BOOT1
51   -mkfs.ext4 -F ${BDEV}${PART3} -L APP
52   -mkfs.ext4 -F ${BDEV}${PART4} -L DATA
  50 +mkfs.ext4 -F ${BDEV}${PART1} -L BOOT0
  51 +mkfs.ext4 -F ${BDEV}${PART2} -L APP
  52 +mkfs.ext4 -F ${BDEV}${PART3} -L DATA
53 53  
... ...
buildroot/buildroot-2016.08.1/board/falinux/prime_oven/rootfs_overlay/root/.prime_oven/.buildroot_version
1   -2017. 02. 23. (목) 20:51:04 KST
  1 +2017. 03. 06. (월) 19:15:41 KST
... ...
buildroot/buildroot-2016.08.1/configs/imx6s_prime_oven_qt5_defconfig
... ... @@ -0,0 +1,77 @@
  1 +BR2_arm=y
  2 +BR2_cortex_a9=y
  3 +BR2_ARM_ENABLE_NEON=y
  4 +BR2_ARM_ENABLE_VFP=y
  5 +BR2_ARM_FPU_NEON=y
  6 +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches"
  7 +BR2_TOOLCHAIN_EXTERNAL=y
  8 +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
  9 +BR2_TOOLCHAIN_EXTERNAL_PATH="$(BR_TOOLCHAIN_PATH)/usr"
  10 +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="$(BR_TOOLCHAIN_PREFIX)"
  11 +BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y
  12 +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14=y
  13 +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
  14 +BR2_TOOLCHAIN_EXTERNAL_CXX=y
  15 +BR2_TARGET_GENERIC_HOSTNAME="imx6s"
  16 +BR2_TARGET_GENERIC_ISSUE="Welcome to falinux"
  17 +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
  18 +BR2_TARGET_GENERIC_ROOT_PASSWD="root"
  19 +BR2_SYSTEM_BIN_SH_BASH=y
  20 +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0"
  21 +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
  22 +BR2_PACKAGE_BUSYBOX_WATCHDOG=y
  23 +BR2_PACKAGE_ALSA_UTILS=y
  24 +BR2_PACKAGE_ALSA_UTILS_AMIXER=y
  25 +BR2_PACKAGE_ALSA_UTILS_APLAY=y
  26 +BR2_PACKAGE_DOSFSTOOLS=y
  27 +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
  28 +BR2_PACKAGE_E2TOOLS=y
  29 +BR2_PACKAGE_MMC_UTILS=y
  30 +BR2_PACKAGE_FBSET=y
  31 +BR2_PACKAGE_FB_TEST_APP=y
  32 +BR2_PACKAGE_FBV=y
  33 +BR2_PACKAGE_QT5=y
  34 +BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
  35 +BR2_PACKAGE_QT5BASE_CONCURRENT=y
  36 +BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
  37 +BR2_PACKAGE_QT5BASE_WIDGETS=y
  38 +BR2_PACKAGE_QT5BASE_DEFAULT_QPA="linuxfb"
  39 +BR2_PACKAGE_QT5BASE_FONTCONFIG=y
  40 +BR2_PACKAGE_QT5BASE_GIF=y
  41 +BR2_PACKAGE_QT5BASE_JPEG=y
  42 +BR2_PACKAGE_QT5BASE_PNG=y
  43 +BR2_PACKAGE_QT5BASE_ICU=y
  44 +BR2_PACKAGE_QT5BASE_TSLIB=y
  45 +BR2_PACKAGE_QT5MULTIMEDIA=y
  46 +BR2_PACKAGE_QJSON=y
  47 +BR2_PACKAGE_FREESCALE_IMX=y
  48 +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y
  49 +BR2_PACKAGE_IMX_GPU_VIV=y
  50 +BR2_PACKAGE_I2C_TOOLS=y
  51 +BR2_PACKAGE_MEMTESTER=y
  52 +BR2_PACKAGE_LIBIMXVPUAPI=y
  53 +BR2_PACKAGE_LIBGLIB2=y
  54 +BR2_PACKAGE_ETHTOOL=y
  55 +BR2_PACKAGE_IPERF=y
  56 +BR2_PACKAGE_IW=y
  57 +BR2_PACKAGE_LRZSZ=y
  58 +BR2_PACKAGE_OPENSSH=y
  59 +BR2_PACKAGE_WGET=y
  60 +BR2_PACKAGE_WHOIS=y
  61 +BR2_PACKAGE_WIRELESS_TOOLS=y
  62 +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
  63 +BR2_PACKAGE_WPA_SUPPLICANT=y
  64 +BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
  65 +BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
  66 +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
  67 +BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
  68 +BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
  69 +BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
  70 +BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
  71 +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
  72 +BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
  73 +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
  74 +BR2_TARGET_ROOTFS_EXT2=y
  75 +BR2_TARGET_ROOTFS_EXT2_BLOCKS=131072
  76 +BR2_TARGET_ROOTFS_EXT2_GZIP=y
  77 +# BR2_TARGET_ROOTFS_TAR is not set
... ...
buildroot/buildroot-2016.08.1/configs/imx6s_prime_oven_qt5_gst_defconfig
... ... @@ -1,58 +0,0 @@
1   -BR2_arm=y
2   -BR2_cortex_a9=y
3   -BR2_ARM_ENABLE_NEON=y
4   -BR2_ARM_ENABLE_VFP=y
5   -BR2_ARM_FPU_NEON=y
6   -BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches"
7   -BR2_TOOLCHAIN_EXTERNAL=y
8   -BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
9   -BR2_TOOLCHAIN_EXTERNAL_PATH="$(BR_TOOLCHAIN_PATH)/usr"
10   -BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="$(BR_TOOLCHAIN_PREFIX)"
11   -BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y
12   -BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14=y
13   -BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
14   -BR2_TOOLCHAIN_EXTERNAL_CXX=y
15   -BR2_TARGET_GENERIC_HOSTNAME="imx6s"
16   -BR2_TARGET_GENERIC_ISSUE="Welcome to falinux"
17   -BR2_TARGET_GENERIC_ROOT_PASSWD="root"
18   -BR2_SYSTEM_BIN_SH_BASH=y
19   -BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0"
20   -BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
21   -BR2_PACKAGE_GSTREAMER1=y
22   -BR2_PACKAGE_GST1_PLUGINS_GOOD=y
23   -BR2_PACKAGE_GST1_PLUGINS_GOOD_JPEG=y
24   -BR2_PACKAGE_GST1_PLUGINS_GOOD_PNG=y
25   -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ALPHA=y
26   -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLV=y
27   -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
28   -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
29   -BR2_PACKAGE_GST1_IMX=y
30   -BR2_PACKAGE_GST1_LIBAV=y
31   -BR2_PACKAGE_GDB=y
32   -BR2_PACKAGE_DOSFSTOOLS=y
33   -BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
34   -BR2_PACKAGE_E2TOOLS=y
35   -BR2_PACKAGE_QT5=y
36   -BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
37   -BR2_PACKAGE_QT5BASE_EXAMPLES=y
38   -BR2_PACKAGE_QT5BASE_WIDGETS=y
39   -BR2_PACKAGE_QT5BASE_FONTCONFIG=y
40   -BR2_PACKAGE_QT5BASE_GIF=y
41   -BR2_PACKAGE_QT5BASE_JPEG=y
42   -BR2_PACKAGE_QT5BASE_PNG=y
43   -BR2_PACKAGE_QT5MULTIMEDIA=y
44   -BR2_PACKAGE_FREESCALE_IMX=y
45   -BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y
46   -BR2_PACKAGE_FIRMWARE_IMX=y
47   -BR2_PACKAGE_I2C_TOOLS=y
48   -BR2_PACKAGE_ALSA_LIB=y
49   -BR2_PACKAGE_TSLIB=y
50   -BR2_PACKAGE_ETHTOOL=y
51   -BR2_PACKAGE_IPERF3=y
52   -BR2_PACKAGE_LRZSZ=y
53   -BR2_PACKAGE_OPENSSH=y
54   -BR2_PACKAGE_WGET=y
55   -BR2_TARGET_ROOTFS_EXT2=y
56   -BR2_TARGET_ROOTFS_EXT2_BLOCKS=131072
57   -BR2_TARGET_ROOTFS_EXT2_GZIP=y
58   -# BR2_TARGET_ROOTFS_TAR is not set
buildroot/buildroot-2016.08.1/make.sh
... ... @@ -18,8 +18,8 @@ TOOLCHAIN_DEFCONFIG_FILE=${TOOLCHAIN_DEFCONFIG_FILE/-/_}
18 18 QT4_GST_DEFCONFIG_FILE=${FA_CHIPSET}_${FA_PRODUCT}_qt4_gst_defconfig
19 19 QT4_GST_DEFCONFIG_FILE=${QT4_GST_DEFCONFIG_FILE/-/_}
20 20  
21   -QT5_GST_DEFCONFIG_FILE=${FA_CHIPSET}_${FA_PRODUCT}_qt5_gst_defconfig
22   -QT5_GST_DEFCONFIG_FILE=${QT4_GST_DEFCONFIG_FILE/-/_}
  21 +QT5_DEFCONFIG_FILE=${FA_CHIPSET}_${FA_PRODUCT}_qt5_defconfig
  22 +QT5_DEFCONFIG_FILE=${QT4_GST_DEFCONFIG_FILE/-/_}
23 23  
24 24  
25 25 OUTPUT_DIR=../output-buildroot-2016.08.1
... ... @@ -35,7 +35,7 @@ case $1 in
35 35 echo " defconfig : reload config"
36 36 echo " toolchain : apply config file for toolchain"
37 37 echo " qt4_gst : apply config file for QT4/Gstreamer"
38   - echo " qt5_gst : apply config file for QT5/Gstreamer"
  38 + echo " qt5 : apply config file for QT5"
39 39 echo " image : generate ramdisk image file"
40 40 echo " clean-target : clean target directory"
41 41 echo " distclean : delete all non-source files (.config)"
... ... @@ -53,9 +53,9 @@ case $1 in
53 53 echo CONFIG: ${QT4_GST_DEFCONFIG_FILE}
54 54 make O=${OUTPUT_DIR} ${QT4_GST_DEFCONFIG_FILE}
55 55 ;;
56   - qt5_gst)
57   - echo CONFIG: ${QT5_GST_DEFCONFIG_FILE}
58   - make O=${OUTPUT_DIR} ${QT5_GST_DEFCONFIG_FILE}
  56 + qt5)
  57 + echo CONFIG: ${QT5_DEFCONFIG_FILE}
  58 + make O=${OUTPUT_DIR} ${QT5_DEFCONFIG_FILE}
59 59 ;;
60 60 defconfig)
61 61 echo CONFIG: ${DEFCONFIG_FILE}
... ...
buildroot/buildroot-2016.08.1/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.hash
1   -sha256 8f79ce562d8ac1efb0a2af403b405541f98c55ae1631a18a3d7fad3224dfb44b imx-gpu-viv-5.0.11.p8.4-hfp.bin
  1 +#sha256 8f79ce562d8ac1efb0a2af403b405541f98c55ae1631a18a3d7fad3224dfb44b imx-gpu-viv-5.0.11.p8.4-hfp.bin
  2 +sha256 0591b495cd1c2547ae007d405b90729e2fb90603a5728b39d1a99cb4e1cf1eb4 imx-gpu-viv-5.0.11.p4.5-hfp.bin
  3 +
... ...
buildroot/buildroot-2016.08.1/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk
... ... @@ -4,7 +4,9 @@
4 4 #
5 5 ################################################################################
6 6  
7   -IMX_GPU_VIV_VERSION = 5.0.11.p8.4-hfp
  7 +#IMX_GPU_VIV_VERSION = 5.0.11.p8.4-hfp
  8 +IMX_GPU_VIV_VERSION = 5.0.11.p4.5-hfp
  9 +
8 10 IMX_GPU_VIV_SITE = $(FREESCALE_IMX_SITE)
9 11 IMX_GPU_VIV_SOURCE = imx-gpu-viv-$(IMX_GPU_VIV_VERSION).bin
10 12  
... ...
buildroot/buildroot-2016.08.1/package/qt5/qt5base/0008-linuxfb-rotate.patch
... ... @@ -1,102 +0,0 @@
1   -diff --git a/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp b/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp
2   ---- a/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp 2017-03-06 15:43:16.205457343 +0900
3   -+++ b/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp 2017-03-06 13:38:20.857076470 +0900
4   -@@ -280,7 +280,7 @@
5   - }
6   -
7   - QLinuxFbScreen::QLinuxFbScreen(const QStringList &args)
8   -- : mArgs(args), mFbFd(-1), mTtyFd(-1), mBlitter(0)
9   -+ : mArgs(args), mFbFd(-1), mTtyFd(-1), mBlitter(0), mRotation(0)
10   - {
11   - mMmap.data = 0;
12   - }
13   -@@ -306,6 +306,7 @@
14   - QRegularExpression mmSizeRx(QLatin1String("mmsize=(\\d+)x(\\d+)"));
15   - QRegularExpression sizeRx(QLatin1String("size=(\\d+)x(\\d+)"));
16   - QRegularExpression offsetRx(QLatin1String("offset=(\\d+)x(\\d+)"));
17   -+ QRegularExpression rotationRx(QLatin1String("rotation=(0|90|180|270)"));
18   -
19   - QString fbDevice, ttyDevice;
20   - QSize userMmSize;
21   -@@ -327,6 +328,8 @@
22   - ttyDevice = match.captured(1);
23   - else if (arg.contains(fbRx, &match))
24   - fbDevice = match.captured(1);
25   -+ else if (arg.contains(rotationRx, &match))
26   -+ mRotation = match.captured(1).toInt();
27   - }
28   -
29   - if (fbDevice.isEmpty()) {
30   -@@ -365,9 +368,17 @@
31   - mDepth = determineDepth(vinfo);
32   - mBytesPerLine = finfo.line_length;
33   - QRect geometry = determineGeometry(vinfo, userGeometry);
34   -+ QRect originalGeometry = geometry;
35   -+ if( mRotation == 90 || mRotation == 270 )
36   -+ {
37   -+ int tmp = geometry.width();
38   -+ geometry.setWidth(geometry.height());
39   -+ geometry.setHeight(tmp);
40   -+ }
41   -+
42   - mGeometry = QRect(QPoint(0, 0), geometry.size());
43   - mFormat = determineFormat(vinfo, mDepth);
44   -- mPhysicalSize = determinePhysicalSize(vinfo, userMmSize, geometry.size());
45   -+ mPhysicalSize = determinePhysicalSize(vinfo, userMmSize, originalGeometry.size());
46   -
47   - // mmap the framebuffer
48   - mMmap.size = finfo.smem_len;
49   -@@ -377,11 +388,11 @@
50   - return false;
51   - }
52   -
53   -- mMmap.offset = geometry.y() * mBytesPerLine + geometry.x() * mDepth / 8;
54   -+ mMmap.offset = originalGeometry.y() * mBytesPerLine + originalGeometry.x() * mDepth / 8;
55   - mMmap.data = data + mMmap.offset;
56   -
57   - QFbScreen::initializeCompositor();
58   -- mFbScreenImage = QImage(mMmap.data, geometry.width(), geometry.height(), mBytesPerLine, mFormat);
59   -+ mFbScreenImage = QImage(mMmap.data, originalGeometry.width(), originalGeometry.height(), mBytesPerLine, mFormat);
60   -
61   - mCursor = new QFbCursor(this);
62   -
63   -@@ -409,8 +420,27 @@
64   - mBlitter->setCompositionMode(QPainter::CompositionMode_Source);
65   -
66   - for (int i = 0; i < rects.size(); ++i)
67   -+ {
68   -+ if( mRotation == 90 || mRotation == 270 )
69   -+ {
70   -+ mBlitter->translate(mGeometry.height()/2, mGeometry.width()/2);
71   -+ }
72   -+ else if( mRotation == 180 )
73   -+ {
74   -+ mBlitter->translate(mGeometry.width()/2, mGeometry.height()/2);
75   -+ }
76   -+
77   -+ if( mRotation != 0 )
78   -+ {
79   -+ mBlitter->rotate(mRotation);
80   -+ mBlitter->translate(-mGeometry.width()/2, -mGeometry.height()/2);
81   -+ }
82   -+
83   - mBlitter->drawImage(rects[i], *mScreenImage, rects[i]);
84   -
85   -+ mBlitter->resetTransform();
86   -+ }
87   -+
88   - return touched;
89   - }
90   -
91   -diff --git a/src/plugins/platforms/linuxfb/qlinuxfbscreen.h b/src/plugins/platforms/linuxfb/qlinuxfbscreen.h
92   ---- a/src/plugins/platforms/linuxfb/qlinuxfbscreen.h 2016-05-26 00:46:17.000000000 +0900
93   -+++ b/src/plugins/platforms/linuxfb/qlinuxfbscreen.h 2017-03-06 13:38:20.857076470 +0900
94   -@@ -58,6 +58,7 @@
95   - QStringList mArgs;
96   - int mFbFd;
97   - int mTtyFd;
98   -+ int mRotation;
99   -
100   - QImage mFbScreenImage;
101   - int mBytesPerLine;
102   -
buildroot/buildroot-2016.08.1/package/qt5/qt5base/0008-linuxfb-rotation.patch
... ... @@ -0,0 +1,102 @@
  1 +diff --git a/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp b/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp
  2 +--- a/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp 2017-03-06 15:43:16.205457343 +0900
  3 ++++ b/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp 2017-03-06 13:38:20.857076470 +0900
  4 +@@ -280,7 +280,7 @@
  5 + }
  6 +
  7 + QLinuxFbScreen::QLinuxFbScreen(const QStringList &args)
  8 +- : mArgs(args), mFbFd(-1), mTtyFd(-1), mBlitter(0)
  9 ++ : mArgs(args), mFbFd(-1), mTtyFd(-1), mBlitter(0), mRotation(0)
  10 + {
  11 + mMmap.data = 0;
  12 + }
  13 +@@ -306,6 +306,7 @@
  14 + QRegularExpression mmSizeRx(QLatin1String("mmsize=(\\d+)x(\\d+)"));
  15 + QRegularExpression sizeRx(QLatin1String("size=(\\d+)x(\\d+)"));
  16 + QRegularExpression offsetRx(QLatin1String("offset=(\\d+)x(\\d+)"));
  17 ++ QRegularExpression rotationRx(QLatin1String("rotation=(0|90|180|270)"));
  18 +
  19 + QString fbDevice, ttyDevice;
  20 + QSize userMmSize;
  21 +@@ -327,6 +328,8 @@
  22 + ttyDevice = match.captured(1);
  23 + else if (arg.contains(fbRx, &match))
  24 + fbDevice = match.captured(1);
  25 ++ else if (arg.contains(rotationRx, &match))
  26 ++ mRotation = match.captured(1).toInt();
  27 + }
  28 +
  29 + if (fbDevice.isEmpty()) {
  30 +@@ -365,9 +368,17 @@
  31 + mDepth = determineDepth(vinfo);
  32 + mBytesPerLine = finfo.line_length;
  33 + QRect geometry = determineGeometry(vinfo, userGeometry);
  34 ++ QRect originalGeometry = geometry;
  35 ++ if( mRotation == 90 || mRotation == 270 )
  36 ++ {
  37 ++ int tmp = geometry.width();
  38 ++ geometry.setWidth(geometry.height());
  39 ++ geometry.setHeight(tmp);
  40 ++ }
  41 ++
  42 + mGeometry = QRect(QPoint(0, 0), geometry.size());
  43 + mFormat = determineFormat(vinfo, mDepth);
  44 +- mPhysicalSize = determinePhysicalSize(vinfo, userMmSize, geometry.size());
  45 ++ mPhysicalSize = determinePhysicalSize(vinfo, userMmSize, originalGeometry.size());
  46 +
  47 + // mmap the framebuffer
  48 + mMmap.size = finfo.smem_len;
  49 +@@ -377,11 +388,11 @@
  50 + return false;
  51 + }
  52 +
  53 +- mMmap.offset = geometry.y() * mBytesPerLine + geometry.x() * mDepth / 8;
  54 ++ mMmap.offset = originalGeometry.y() * mBytesPerLine + originalGeometry.x() * mDepth / 8;
  55 + mMmap.data = data + mMmap.offset;
  56 +
  57 + QFbScreen::initializeCompositor();
  58 +- mFbScreenImage = QImage(mMmap.data, geometry.width(), geometry.height(), mBytesPerLine, mFormat);
  59 ++ mFbScreenImage = QImage(mMmap.data, originalGeometry.width(), originalGeometry.height(), mBytesPerLine, mFormat);
  60 +
  61 + mCursor = new QFbCursor(this);
  62 +
  63 +@@ -409,8 +420,27 @@
  64 + mBlitter->setCompositionMode(QPainter::CompositionMode_Source);
  65 +
  66 + for (int i = 0; i < rects.size(); ++i)
  67 ++ {
  68 ++ if( mRotation == 90 || mRotation == 270 )
  69 ++ {
  70 ++ mBlitter->translate(mGeometry.height()/2, mGeometry.width()/2);
  71 ++ }
  72 ++ else if( mRotation == 180 )
  73 ++ {
  74 ++ mBlitter->translate(mGeometry.width()/2, mGeometry.height()/2);
  75 ++ }
  76 ++
  77 ++ if( mRotation != 0 )
  78 ++ {
  79 ++ mBlitter->rotate(mRotation);
  80 ++ mBlitter->translate(-mGeometry.width()/2, -mGeometry.height()/2);
  81 ++ }
  82 ++
  83 + mBlitter->drawImage(rects[i], *mScreenImage, rects[i]);
  84 +
  85 ++ mBlitter->resetTransform();
  86 ++ }
  87 ++
  88 + return touched;
  89 + }
  90 +
  91 +diff --git a/src/plugins/platforms/linuxfb/qlinuxfbscreen.h b/src/plugins/platforms/linuxfb/qlinuxfbscreen.h
  92 +--- a/src/plugins/platforms/linuxfb/qlinuxfbscreen.h 2016-05-26 00:46:17.000000000 +0900
  93 ++++ b/src/plugins/platforms/linuxfb/qlinuxfbscreen.h 2017-03-06 13:38:20.857076470 +0900
  94 +@@ -58,6 +58,7 @@
  95 + QStringList mArgs;
  96 + int mFbFd;
  97 + int mTtyFd;
  98 ++ int mRotation;
  99 +
  100 + QImage mFbScreenImage;
  101 + int mBytesPerLine;
  102 +
... ...
env-4.9.4.env
... ... @@ -12,3 +12,5 @@ export ARCH=arm
12 12  
13 13 export PATH=${BR_TOOLCHAIN_PATH}/usr/bin:$PATH
14 14 export WORK_LD_LIBRARY_PATH=${BR_TOOLCHAIN_PATH}/usr/lib
  15 +
  16 +export BR_KERNEL_PATH=${WORK_TOP_PATH}/kernel/linux-imx6_3.14.28
... ...
kernel/linux-imx6_3.14.28/drivers/mtd/spi-nor/spi-nor.c
... ... @@ -472,6 +472,10 @@ const struct spi_device_id spi_nor_ids[] = {
472 472 { "mr25h256", CAT25_INFO( 32 * 1024, 1, 256, 2, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
473 473 { "mr25h10", CAT25_INFO(128 * 1024, 1, 256, 3, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
474 474  
  475 + /* Fujitsu */
  476 + { "mb85rs16", INFO(0x047f01, 0, 2 * 1024, 1, SPI_NOR_NO_ERASE) },
  477 + { "mb85rs1mt", INFO(0x047f27, 0, 128 * 1024, 1, SPI_NOR_NO_ERASE) },
  478 +
475 479 /* GigaDevice */
476 480 { "gd25q32", INFO(0xc84016, 0, 64 * 1024, 64, SECT_4K) },
477 481 { "gd25q64", INFO(0xc84017, 0, 64 * 1024, 128, SECT_4K) },
... ...