PD#SWPL-26142
Problem:
vdin is compressed in 1080 & 4k output, but ppmgr does
not support compressed format.
Solution:
If rotation is required, ppmgr informs vdin to output yuv.
Verify:
ab301
Change-Id: Ifebda530dad1c1a57a0415389543d48a8d4fbef2
Signed-off-by: renjiang.han <renjiang.han@amlogic.com>
PD#SWPL-18297
Problem:
The picture shows abnormality after ppmgr.
Solution:
The picture format is not rotated.
Verify:
on U212
Change-Id: I259554c2f7cb3a5eeb4e90c1c3e135d5005a6f01
Signed-off-by: renjiang.han <renjiang.han@amlogic.com>
PD#SWPL-36752
Problem:
Support the stride in physical address configuration
Solution:
add this support
Verify:
verified on g12b
Change-Id: Ic85384af6b67687e9f437319f6bc397c6e39a0cc
Signed-off-by: Cao Jian <jian.cao@amlogic.com>
PD#SWPL-31258
Problem:
Kernel RO data is too large, about 4.5mb on 32bit and 5.9mb on
64bit kernel
Solution:
1, replace __FILE__ definition, using relative path instead of
absolute path. This can help to save about 50KB memory. For example:
[ 36.820945@0] WARNING: CPU: 0 PID: 4817 at /mnt/fileroot/tao.zeng/p-android/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
common/drivers/amlogic/memory_ext/page_trace.c:973
~~~~~~ absolute path
pagetrace_write+0x10/0x18
[ 42.792868@1] WARNING: CPU: 1 PID: 4864 at drivers/amlogic/
memory_ext/page_trace.c:973 pagetrace_write+0x10/0x18
2, replace __FUNC__ definition. using kallsyms interface to print function
instead of build in const string. This change can save about 100KB rodata.
Verify:
x301
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
Change-Id: I65e4e9eb61a2226002557759833e4e16ed37b92e
PD#SWPL-31258
Problem:
Kernel RO data is too large, about 4.5mb on 32bit and 5.9mb on
64bit kernel
Solution:
1, optimize kallsyms compress code. This can help to increase
about 18% of compress ratio and save about 200 ~ 500KB under
different config.
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
Change-Id: I4c058fbb22d89bc50c81fa3266ee0f7613f076f2
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
PD#SWPL-5301
Problem:
Sometimes we need to catch who allcated/free cma pools
Solution:
Add more functions in pagetrace
Verify:
x301
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
Change-Id: I06c114441fc20c8fbde853be9ecb0fc96fd00111
PD#SWPL-16990
Problem:
Lost RAM will be over 200MB when playing 4K.
Solution:
Add cma pages in /proc/meminfo and give a information
for android layer to count them.
Verify:
x301
Change-Id: I99d1ded53ed351a5cb0d24f0e03850a55ef0d272
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
PD#SWPL-31258
Problem:
Kernel RO data is too large, about 4.5mb on 32bit and 5.9mb on
64bit kernel
Solution:
1, remove CONFIG_KALLSYMS_ALL in module.c, which can help to save
about 200KB module memory during runtime compared from /proc/pagetrce:
3068, c020edd8, module_alloc -- before
2776, c020edd8, module_alloc -- after
Verify:
x301
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
Change-Id: I15acee0df76f74a04c10d8f290d10fc35d51a283
PD#SWPL-31258
Problem:
Kernel RO data is too large, about 4.5mb on 32bit and 5.9mb on
64bit kernel
Solution:
1, remove CONFIG_KALLSYMS_ALL in scripts, which can help to save
about 1MB ro data in code size.
Verify:
x301
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
Change-Id: Ie0387da46c6b789cb4f8c5d7e2128238e3986da0
PD#SWPL-31258
Problem:
Kernel RO data is too large, about 4.5mb on 32bit and 5.9mb on
64bit kernel
Solution:
1, remove all # lines in .config when generate /proc/config.gz, which can
save about 20KB ro-memory.
Verify:
x301
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
Change-Id: I80b85b006ddec3bbcfb9c8921eb59577af49ad0d
PD#SWPL-31258
[ Upstream commit 4d217a5adc ]
The newly added 'rodata_enabled' global variable is protected by
the wrong #ifdef, leading to a link error when CONFIG_DEBUG_SET_MODULE_RONX
is turned on:
kernel/module.o: In function `disable_ro_nx':
module.c:(.text.unlikely.disable_ro_nx+0x88): undefined reference to `rodata_enabled'
kernel/module.o: In function `module_disable_ro':
module.c:(.text.module_disable_ro+0x8c): undefined reference to `rodata_enabled'
kernel/module.o: In function `module_enable_ro':
module.c:(.text.module_enable_ro+0xb0): undefined reference to `rodata_enabled'
CONFIG_SET_MODULE_RONX does not exist, so use the correct one instead.
Fixes: 39290b389e ("module: extend 'rodata=off' boot cmdline parameter to module mappings")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jessica Yu <jeyu@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Change-Id: I3ed114cc957edca46684dc14bc47e133cd1725de
PD#SWPL-29848
Problem:
on platforms which GDC are not supported
if create_gdc_work_queue is invoked
a crash occurs
Solution:
add a probed flag to avoid crash
add a interface is_gdc_supported to query
Verify:
g12b/tm2
Change-Id: I65b88294822d8a2c7429d375039fee962b9612aa
Signed-off-by: Cao Jian <jian.cao@amlogic.com>
PD#SWPL-15157
Problem:
GDC Driver Support physical address configuration
Solution:
add this support
Verify:
verified on g12b
Change-Id: I8aee517a13bb2a65c021279cc3b54bd9861fc20c
Signed-off-by: Cao Jian <jian.cao@amlogic.com>
PD#SWPL-34731
Problem:
the ACR packet is not enabled with very low probability
Solution:
double confirm the ACR packet is enabled
simultaneously with audio sample packet
Verify:
AC214
Signed-off-by: hang cheng <hang.cheng@amlogic.com>
Change-Id: Ie7a142a739f8928b34dd1904176786f8664d6f18
PD#SWPL-35488
Problem:
rotate to exit with garbage.
Solution:
after unreg is over, the buffer of ppmgr is released.
Verify:
on X301
Change-Id: I40cd59db0dee442fde034ccfb1c3f1afe86eb3ff
Signed-off-by: renjiang.han <renjiang.han@amlogic.com>
Signed-off-by: chunlong.cao <chunlong.cao@amlogic.com>
PD#SWPL-34685
Problem:
for dual logo, if viu1 interface(such as hdmi) is unplugged when booting
the viu2 display device will be used for viu1 after booting
Solution:
use viu2 logo output size for viu1 mode switch
Verify:
on sm1
Change-Id: I90819039fe46edc33d93d0114bdadb4c0de97b1e
Signed-off-by: Cao Jian <jian.cao@amlogic.com>
PD#SWPL-31520
Problem:
Because interpolate threshold setting is too small, this will lead to
failure of using the interpolate calculation method to look up right
audio pts.
Solution:
Increase the threshold of the apts interpolate value
Verify:
U212
Change-Id: I30d4ad7085f4774d932acf557784ffbb85169afb
Signed-off-by: maolin.zhou <maolin.zhou@amlogic.com>
PD#SWPL-32340
Problem:
osd display abnormal when layer is premult_en and rgbx
Solution:
osd not divide when format RGBX
Verify:
u215
Change-Id: Icac55eddd3b5ca47350a585a377d2a54e3e5b0b1
Signed-off-by: Pengcheng Chen <pengcheng.chen@amlogic.com>
PD#SWPL-25446
Problem:
In the empty capmap processing, create the bitmap errorly.
Solution:
In the empty capmap processing, modify the code about the bitmap.
Verify:
Verify on the board of U212
Change-Id: I26d4d07692557c8d6b0df0c984282f81e13ab6c4
Signed-off-by: Zhengrong Zhu <zhengrong.zhu@amlogic.com>
PD#SWPL-23446
Problem:
The HDMI ATC Lab requires to support 1080i mode for DVI case
Solution:
Add 1080i mode for DVI case
Verify:
G12
Change-Id: I9285a9669176793e55a6f0fe8007702b4c2f239f
Signed-off-by: Zongdong Jiao <zongdong.jiao@amlogic.com>
PD#SWPL-22926
Problem:
hdcp_tx22 may still work at the beginning of plugout, and reset
DDC glitch filter may hold SDA as low
Solution:
Remove DDC glitch filter in plugout
Verify:
sm1
Change-Id: Ifdc760f8246ee38ab2525835be5d29fd37cdfc7c
Signed-off-by: Zongdong Jiao <zongdong.jiao@amlogic.com>
Signed-off-by: chunlong.cao <chunlong.cao@amlogic.com>
PD#SWPL-25274
Problem:
The TV and mbox may power up simutanously. If the uboot output
4k 4.5G or 6G signal, it also send the SCDC/DIV40, but TV may
discard DIV40 during itself bootup. And next TV will generate
the HPD, but mbox may discard this HPD during the probe stage.
So TV may display nothing, while mbox still output normally.
Solution:
Resend scdc/div40 in probe stage
Verify:
G12
Change-Id: I3276889541596b42acc6d0e05a48953a4e9a63b1
Signed-off-by: Zongdong Jiao <zongdong.jiao@amlogic.com>
PD#SWPL-24787
Problem:
For some type's chip, there is no 4k output, and there
will no need the hdcp22
Solution:
Add hdcp limitation
Verify:
805x/y
Change-Id: I36bf7b89d614a738bfca2d5c50a14d2355063792
Signed-off-by: Zongdong Jiao <zongdong.jiao@amlogic.com>
PD#SWPL-27983
Problem:
code size of kernel is too large
Solution:
remove unused but default enabled configs for refernce-board
merge from:a3242b3096d5b9423105e2695723244e7edee433
Verify:
ac214
Change-Id: I9b66178acf67971c0144c4b7141d676866d7b65a
Signed-off-by: changqing.gao <changqing.gao@amlogic.com>
Signed-off-by: chunlong.cao <chunlong.cao@amlogic.com>
PD#SWPL-30974
Problem:
don't need to save the value of
the Clock register after a calibration failure
Solution:
save clock register
Verify:
txl
Change-Id: I79799967ee3417600df960492a94f868427effb2
Signed-off-by: long.yu <long.yu@amlogic.com>
- mesong12b have a_uart_pins pinctrl set that separate mux with cts. So
if you want to remove cts and rts from pinctrl, have to redefined or
make new one. this patch add new pinctrl to use only rx and tx pin of
uart a.
Signed-off-by: Luke Go <sangch.go@gmail.com>
Change-Id: Id18893a943b9937855317cbe1adac3a78261d4f6
Use touchscreen_properties structure instead of implementing all
properties by our own. It allows us to reuse generic code for parsing
device-tree properties (which was implemented manually in the driver for
now). Additionally, it allows us to report events using generic
touchscreen_report_pos(), which automatically handles inverted and
swapped axes.
This fixes the issue with the custom code incorrectly handling case where
ts->inverted_x and ts->swapped_x_y were true, but ts->inverted_y was
false. Assuming we have 720x1280 touch panel, ts->abs_x_max == 1279 and
ts->abs_y_max == 719 (because we inverted that in goodix_read_config()).
Now let's assume that we received event from (0:0) position (in touch
panel original coordinates). In function goodix_ts_report_touch() we
calculate input_x as 1279, but after swapping input_y takes that value
(which is more that maximum 719 value reported during initialization).
Note that since touchscreen coordinates are 0-indexed, we now report
touchscreen range as (0:size-1).
Developed and tested on custom DT-based device with gt1151 touch
panel.
Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
[dtor: fix endianness annotation reported by sparse, handle errors when
initializing MT slots]
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Change-Id: I3fdd49b7357ca94111fde041c295a4a548ba109b
Support was added based on Goodix GitHub repo [1]. There are two major
differences between gt1151 and currently supported devices (gt9x):
* CONFIG_DATA register has 0x8050 address instead of 0x8047,
* config data checksum has 16-bit width instead of 8-bit.
Also update goodix_i2c_test() function, so it reads ID register (which
has the same address for all devices) instead of CONFIG_DATA (because
its address is known only after reading ID of the device).
[1] https://github.com/goodix/gt1x_driver_generic
Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Change-Id: I12f2f9e745c2f14ff45b3f967fbf91e629230989
The Goodix panel triggers an interrupt on touch events. However, its
registers will contain the valid values a short time after the
interrupt, and not when it's raised. At that moment, the 'buffer status'
bit is set.
Previously, if the 'buffer status' bit was not set when the registers
were read, the data was discarded and no input event was emitted,
causing "finger down" or "finger up" events to be missed sometimes.
This went unnoticed until v4.9, as the DesignWare I2C driver commonly
used with this driver had enough latency for that bug to never trigger
until commit 2702ea7dbe ("i2c: designware: wait for disable/enable only
if necessary").
Now, in the IRQ handler we will poll (with a timeout) the 'buffer status'
bit and process the data of the panel as soon as this bit gets set.
Note that the Goodix panel will send a few spurious interrupts after the
'finger up' event, in which the 'buffer status' bit will never be set.
Cc: Bastien Nocera <hadess@hadess.net>
Cc: russianneuromancer@ya.ru
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
[hdegoede@redhat.com: Change poll loop to use jiffies,
add comment about typical poll time]
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
[dtor: rearranged control flow a bit to avoid explicit goto and double
check]
Reviewed-by: Bastien Nocera <hadess@hadess.net>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Change-Id: I3fa771b0b07cf811b157cb76e1c1deba6bf4e4ea
On some x86 tablets with a Goodix touchscreen, the Windows logo on the
front is a capacitive home button. Touching this button results in a touch
with bit 4 of the first byte set, while only the lower 4 bits (0-3) are
used to indicate the number of touches.
Report a KEY_LEFTMETA press when this happens.
Note that the hardware might support more than one button, in which
case the "id" byte of coor_data would identify the button in question.
This is not implemented as we don't have access to hardware with
multiple buttons.
Signed-off-by: Sergei A. Trusov <sergei.a.trusov@ya.ru>
Acked-by: Bastien Nocera <hadess@hadess.net>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Change-Id: I30f0248bca9de921d25b19bf823698ab6dc3eb3f