29 Oct, 2018
40 commits
-
This patch adds a check for the buffer size that is not empty before
the dma_unmap function call.Signed-off-by: Aymen Sghaier
-
Move to debug level rather than error level the RNG init traces while
increasing entropy delays.Signed-off-by: Aymen Sghaier
-
In case index == 00001000, the resulting index used to access
ctrlpriv->jr[] was 15 instead of the expected value of 0.Signed-off-by: Franck LENORMAND
-
While crypto manager tests some descriptors are malformed due to
pointer size not coherent with CAAM specific dma address sizeSigned-off-by: Aymen Sghaier
-
During caamhash tests the error "swiotlb buffer is full" occurred.
This was due to dma mapping without unmapping later.
This patch adds the unmap call to avoid the loss of dma memory.Signed-off-by: Aymen Sghaier
Signed-off-by: Franck LENORMAND -
This patch perform following modifications:
- Send and receive SM command regrouped in 1 function
- Verify that the JR device to use is valid
- Modification of the error handling in the probeSigned-off-by: Franck LENORMAND
-
Signed-off-by: Silvano di Ninno
Reviewed-by: Franck Lenormand -
- For i.MX 6 and 7 check if the Secure Firmware (OPTEE) is present.
If present don't do the RNG instantation in the CAAM driverReviewed-by: Silvano Di Ninno
Signed-off-by: Cedric Neveux -
Fix the following warnings in CAAM SM:
drivers/crypto/caam/sm_store.c: In function 'blacken_key_jobdesc':
drivers/crypto/caam/sm_store.c:141:19: warning: cast from pointer
to integer of different size [-Wpointer-to-int-cast]
tmpdesc[idx++] = (u32)key;
^
drivers/crypto/caam/sm_store.c:153:19: warning: cast from pointer
to integer of different size [-Wpointer-to-int-cast]
tmpdesc[idx++] = (u32)key;
^
drivers/crypto/caam/sm_store.c: In function 'blob_encap_jobdesc':
drivers/crypto/caam/sm_store.c:274:19: warning: cast from pointer
to integer of different size [-Wpointer-to-int-cast]
tmpdesc[idx++] = (u32)secretbuf;
^
drivers/crypto/caam/sm_store.c: In function 'blob_decap_jobdesc':
drivers/crypto/caam/sm_store.c:390:19: warning: cast from pointer
to integer of different size [-Wpointer-to-int-cast]
tmpdesc[idx++] = (u32)outbuf;
^
drivers/crypto/caam/sm_store.c: In function 'slot_get_base':
drivers/crypto/caam/sm_store.c:569:9: warning: cast from pointer
to integer of different size [-Wpointer-to-int-cast]
return (u32)(ksdata->base_address);
^
drivers/crypto/caam/sm_store.c: In function 'sm_keystore_slot_load':
drivers/crypto/caam/sm_store.c:789:6:
warning: unused variable 'i' [-Wunused-variable]
u32 i;Signed-off-by: Franck LENORMAND
-
Remove hard coded value for base physical address.
Use device tree to get this value.i.MX8 with seco is still not address since CAAM uses a private bus
to access secure memorySigned-off-by: Silvano di Ninno
-
I.MX linux only works with device tree support
No need to keep code without CONFIG_OFSigned-off-by: Silvano di Ninno
-
The iMX8 QX and QM have SECO/SCU enabled and the access
to SM registers is different as long as the addresses of
the pages.Signed-off-by: Franck LENORMAND
-
The Secure Memory is a hardware memory whose address was retrieved using
of_iomap, hence the memory manipulation shall use the set of functions:
memset_io/memcpy_fromio/memcpy_toio in order to works correctly.Not using these functions can result in kernel panic.
Signed-off-by: Franck LENORMAND
-
The computation of the base address of the physical and virtual
need to be the same depending on the architecture.The addresses are computed using a pointer on u8 so the additions
always works as expected.Signed-off-by: Franck LENORMAND
-
Seen on i.MX8QXP board by reboot test, that Kernel oops occurs
due to failing RNG instantiation with default entropy delay.
The fix is to disable all job rings if RNG failed to prevent
Kernel crash. And print an error message saying that this is
a known limitation on REV A0 SoC.Signed-off-by: Aymen Sghaier
-
Seen on i.MX8MQ EVK board revision B0 that the RNG instantiation
fail with default entropy delay. Retry process is fixed here to
be able to instantiate RNG successfully.Reviewed-by: Silvano Di Ninno
Signed-off-by: Aymen Sghaier -
This error occurred on MX8M-EVK while initializing the first job ring.
If the job ring was used before Kernel level, then connecting it to the
irq handler could generate error due to its (unknown) previous state.
This patch calls the hardware reset function before connecting the irq
handler.Signed-off-by: Aymen Sghaier
-
Signed-off-by: Franck LENORMAND
-
Correct Copyright
Signed-off-by: Peng Fan
-
After CAAM JR1 has been moved to SECO,
imx-sc-firmware commit 36ff24f36b56 ("Move CAAM JR1 to SECO FW."),
Linux no longer boots and rises a kernel panic at "caam_probe".
So the CAAM JR1 should be disabled in the device-tree.Tested-by: Daniel Baluta
Reviewed-by: Silvano Di Ninno
Signed-off-by: Aymen Sghaier -
The DMA configuration of the CAAM for imx8 boards is not strictly
related to the architecture of the kernel.Signed-off-by: Franck LENORMAND
-
The organization of functions of the CAAM driver changed
between 4.9 and 4.14 so this arrangement allow to see
more clearly the changes later in the tree.Signed-off-by: Franck LENORMAND
-
Enable CAAM driver for i.MX8 family:
- Use a Job ring for RNG instantiation rather than DECO, even
for i.MX6/7 families.
- Use of aliased CAAM registers instead of original registers in page 0
since page 0 is no more accessible in i.MX8 family except mScale.Signed-off-by: Aymen Sghaier
-
Move the code related to RNG instanciation to another file
to ease comprehension.Signed-off-by: Franck LENORMAND
-
Signed-off-by: Franck LENORMAND
-
* Add caam_aclk clock root dependency, imx7d caam
ip module needs caam_aclk and caam_ipg clock signals
to operate add additional clock signal.Signed-off-by: Adrian Alonso
Signed-off-by: Dan Douglass
[Octavian: since the clk API skips NULL args use a single disable label]
Signed-off-by: Octavian PurdilaConflicts:
drivers/crypto/caam/ctrl.c -
There are only 3 CAAM clocks that are required for i.mx6ul. Adding
logic to enable only the required clocks based on the device tree
compatibility node.Signed-off-by: Dan Douglass
Conflicts:
drivers/crypto/caam/ctrl.c -
The charger led definition ported from imx_4.9.y use the same gpio with
another definition introduced by upstream commit 702bfbef1c98 ("ARM:
dts: imx6qdl-sabresd.dtsi: Add red led")Fix by explicitly overwriting the upstream definition with ours.
Fixes: 491c8dc6801e ("MLK-11703-6: ARM: imx6: Add charging led support on Sabresd board")
Fixes: 4aada993e5be ("MLK-11703-7: ARM: dts: imx6qdl-sabresd: add retain-state-suspended property in dts")This commit could be squashed in the above on next rebase.
Signed-off-by: Leonard Crestez
Acked-by: Anson Huang -
add busfreq support on i.MX8MM. when system is running at low bus or
audio bus mode, the dram & bus clock will be reduced to a lower rate:
NOC: 150MHZ, AXI: 24MHz, AXI 20MHZ, DRAM core clock: 25MHz.when system is running at high bus mode, all the bus clock and dram
clock will be restore to the highest one.Signed-off-by: Bai Ping
Reviewed-by: Anson Huang -
Add busfreq node support on i.MX8MM. busfreq support is enabled by
default, but it need to be disabled on DDR4 validation board at present.Signed-off-by: Bai Ping
Reviewed-by: Anson Huang
(cherry picked from commit 6d5307eb88a6f5bfdb7123fd9165681cd5a31c7d) -
On i.MX8MM, it has an dram_alt clock source that can be used when
DDRC clock rate is lower than 667MHz, so add this clock.Signed-off-by: Bai Ping
Reviewed-by: Anson Huang
(cherry picked from commit 303867c769e3c0758b9ee8fcf31d8cc3c632a80d) -
If DCSS is suspended, the clocks are disabled. Dumping the registers,
with the following command:cat /sys/kernel/debug/imx-dcss/dump_registers
will hang the system, because of DTG.
This patch makes sure clocks are enabled before dumping the registers
and will immediately release them afterwards.Signed-off-by: Laurentiu Palcu
-
This patch fixes a warning message that's seen during 4.14 compilation.
CC drivers/gpu/drm/imx/dcss/dcss-plane.o
drivers/gpu/drm/imx/dcss/dcss-plane.c: In function ‘dcss_plane_atomic_set_base’:
drivers/gpu/drm/imx/dcss/dcss-plane.c:347:4: warning: ‘caddr’ may be used uninitialized in this function [-Wmaybe-uninitialized]
dcss_dec400d_addr_set(dcss_plane->dcss, p1_ba, caddr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~The warning appeared because of a logic error in code that was
introduced by the following commit:commit a46e1cd7df28 ("MGS-3560 [#imx-913] Enable DRM compression for
mscale board")The above commit moved a piece of code, that was located under
switch-case branch, under a do-while() loop and converted all the
returns to breaks. However, a break makes the code exit the while loop
and will continue executing the code under the case branch. Hence, caddr
may be used whithout being initialized.Signed-off-by: Laurentiu Palcu
CC: Yong Gan -
This patch fixes a NULL pointer dereference error that can happen
randomly, in certain conditions. The reason for the oops were assignments
that were done before checking that the actual pointer was valid...Additionally, add a crtc check when duplicating the state.
Signed-off-by: Laurentiu Palcu
-
When the sdma engine is suspended firmware might get lost and need to be
reloaded. Right now fw_loaded is set to false in suspend code and SDMA
is disabled until FW is reloaded on resume.However when entering standby mode the firmware is not lost, the resume
code detects this situation and skips reloading firmware and restoring
contexts. Unfortunately this incorrectly leaves fw_loaded set to false
so SDMA is unusable after a standby.Fix by setting fw_loaded to false at the start of sdma_resume instead
of the end of sdma_suspend. This is the point at which we know that
firmware was lost and needs reloading.Fixes: c5e50134e7b1 ("MLK-18315-1 dma: imx-sdma: add fw_loaded check")
Signed-off-by: Leonard Crestez
Acked-by: Fugang Duan -
Rename fence interfaces to dma_fence to match with the upstream
commit, f54d1867005c ("dma-buf: Rename struct fence to dma_fence"),
changes.
Fix compile issue sync_timeline_create is not defined.Change-Id: I0f89a089f11131070f96a5ddc922938f4b28615f
Signed-off-by: zhang sanshan -
- warning: ‘retries’ may be used uninitialized in this function
- WARNING: vmlinux.o(.data+0x5d2d8): Section mismatch in reference from the
variable imx_pcie_driver to the function .init.text:imx_pcie_probe()The variable imx_pcie_driver references the function __init imx_pcie_probe()
If the reference is valid then annotate the variable with
__init* or __refdata (see linux/init.h) or name the variable:
*_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_consoleSigned-off-by: Jason Liu
Signed-off-by: Richard Zhu -
Select CONFIG_GPIO_SYSFS by default for i.MX arm64
platforms.Signed-off-by: Anson Huang
Reviewed-by: Bai Ping -
Add LCDIF PLL resource and clocks, and power domain for it.
Add Pixel link clocks and set it from bypass path.
Muxes were added so that the slices can choose the bypass input
(lcd_pxl_bypass_div and elcdif_pll_div).clk summary example:
lcd_pxl_bypass_div 2 2 24000000
lcd_pxl_sel 1 1 24000000
lcd_pxl_div 1 1 24000000
lcd_pxl_clk 1 1 24000000
elcdif_pll_div 1 1 792000000
elcdif_pll 2 2 792000000
lcd_sel 1 1 792000000
lcd_div 1 1 79200000
lcd_clk 1 1 79200000Signed-off-by: Adriana Reus
-
In system resume phase, the runtime resume will be called
after noirq resume, and the GPIO could be operated between
the noirq resume phase and the runtime resume phase, current
implementation of noirq suspend/resume shares same save
regs array with runtime suspend/resume, the GPIO operation
will be overwritten by runtime resume using old save regs
array, so adding independent gpio save regs for noirq
suspend/resume ONLY, and use noirq suspend/resume callback
instead of sharing runtime suspend/resume callback.Signed-off-by: Anson Huang
Reviewed-by: Richard Zhu