summaryrefslogtreecommitdiff
path: root/drivers/crypto/tegra-aes.c
AgeCommit message (Collapse)Author
2012-07-06crypto: tegra-aes: synchronize dma buffer accessSanjay Singh Rawat
- Using the dma sync apis to keep coherency. bug 984039 Change-Id: I9e389d2679f05c519ae4a51462247b7efeae01ca Signed-off-by: Sanjay Singh Rawat <srawat@nvidia.com> Reviewed-on: http://git-master/r/111612 Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com> Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
2012-07-03crypto: tegra-aes: correct key table buffer sizeSanjay Singh Rawat
- Correcting the size of the dma buffer allocated for the key table. Change-Id: I34c0d0554710219021cb534e61a558cf217ccc19 Signed-off-by: Sanjay Singh Rawat <srawat@nvidia.com> Reviewed-on: http://git-master/r/111577 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
2012-04-16crypto: tegra-aes: schedule single work handlerAmit Kamath
Multiple queue were getting scheduled leading to race condition. Bug 955259 Change-Id: I7dd8d0d15b17552c3a611449642439ae21fa4b5d Signed-off-by: Amit Kamath <akamath@nvidia.com> Reviewed-on: http://git-master/r/93097 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Gerrit_Virtual_Submit Reviewed-by: Nitin Kumbhar <nkumbhar@nvidia.com> Reviewed-by: Sanjay Singh Rawat <srawat@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
2012-03-26crypto: tegra-aes: save key during key callSanjay Singh Rawat
Save the key in hardware when the key setting call comes. Currently it is set at later time. Bug 917607 Change-Id: Ibdacb07c16c161eeba00eda6716884518e40c40a Signed-off-by: Sanjay Singh Rawat <srawat@nvidia.com> Reviewed-on: http://git-master/r/90072 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
2012-03-07crypto: tegra-aes: fix "syntax error" in licenseMarc Dietrich
Should have been "GPL v2", not "GPLv2". Signed-off-by: Marc Dietrich <marvin24@gmx.de> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org> Change-Id: I7b4669c023c48e1080de7f87ed7166dc9b47884a Reviewed-on: http://git-master/r/88101 Reviewed-by: Scott Williams <scwilliams@nvidia.com> Reviewed-by: Stephen Warren <swarren@nvidia.com> Tested-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
2012-01-20crypto: tegra-aes: get hardware ownership before copying keyVarun Wadekar
Bug 917607 Change-Id: I049ca03efe7953dc6a6c03eaa4acce85e15662d1 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/76154 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Sanjay Singh Rawat <srawat@nvidia.com>
2012-01-20crypto: tegra-aes: remove aes_lock usageVarun Wadekar
Bug 917607 Change-Id: I6036b12456d3b5fb22f479a9e0eefd500cb6c059 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/76153 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Sanjay Singh Rawat <srawat@nvidia.com>
2012-01-20crypto: tegra-aes: rng: check if bsea is busy before using itVarun Wadekar
Bug 917607 Change-Id: I7497411932b6ba8c155026f1662063e87c21eb40 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/74012 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Sanjay Singh Rawat <srawat@nvidia.com>
2011-12-15crypto: tegra-aes: store keys in individual requestsVarun Wadekar
store the keys in the individual request context structure, since there is no other way to manage keys across different crypto operations. also retry requests thrice in case of errors Reviewed-on: http://git-master/r/40008 (cherry picked from commit 5437e3230679fbc6e342f7e6787e3cc1692e5df6) Change-Id: Iba23e20371661c8732995d13774cf3dbba6e24b4 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-11-30crypto: tegra-aes: replace dev_err and add NULL checkingJubeom Kim
Changed dev_err to pr_err because 'dd' can be NULL. Added NULL checking before clock disable of engine->pclk Reviewed-on: http://git-master/r/37857 (cherry picked from commit 851ffd0a30cbe67a5033a9792825b319f0bcd7ed) Original-Change-Id: If5a2bbd550f3dc038b42d8a185647d02df9cb593 Reviewed-on: http://git-master/r/38446 Tested-by: Jubeom Kim <jubeomk@nvidia.com> Reviewed-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: R57fa4ce4a2e95d80813448ad5234fb9bdf74faf1
2011-11-30crypto: tegra-aes: validate clk_get return valuesVarun Wadekar
instead of checking for NULL, IS_ERR() should be used to check the validity of a clock handle Reviewed-on: http://git-master/r/#change,35619 (cherry picked from commit cfb16f57d0a846dba4cd5d6a87c05dcb8efd188d) Change-Id: If844a166deabc7e67c9af69e4d05f59757773895 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/36218 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: R9a6137402ee132e6b4c1a38ab5d51a3acb035a28
2011-11-30crypto: tegra-aes: code refactorVarun Wadekar
- reset intr_status if error occur while encrypt/decrypt - rename iram variables to _phys and _virt - use bsea for rng - remove unwanted macros from the header file Bug 833165 Reviewed-on: http://git-master/r/#change,34552 (cherry picked from commit 4f2f0431fe196829c8ec61ab10ed5cb2ea6b5038) Original-Change-Id: I76f221bde1e5fdb331b9b75f826c822bd3246e14 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/35194 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: Ra044f128c66a8591c9d6ed29725c167334efd05d
2011-11-30crypto: tegra-aes: performance optimisationsVarun Wadekar
* set bsea sclk to ulong_max * use unbounded work queues with 1 max_active work item on each of them * clear INTR_STATUS per operation * free nvmap handle after using it Bug 803932 Reviewed-on: http://git-master/r/#change,30196 (cherry picked from commit b0f6c074aab8a9f3bddec4a204b618180df630db) Original-Change-Id: Ica9d702db9a247110d0639c64ab65672f02d7451 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/31936 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: R5a51f9a8f7133a7e08f6544bbee581e30b46c6b5
2011-11-30crypto: tegra-aes: dual core supportSanjay Singh Rawat
* add bsea engine support for encryption and decryption * add arbitration semaphore id for bsea Bug 803932 Original change: http://git-master/r/#change,29672 (cherry picked from commit 0008cdb0f38d0cd0c074671fc067c4321f340b06) Original-Change-Id: I59fcaab29c47a8b42e7470b30486851cfe90848f Signed-off-by: Sanjay Singh Rawat <srawat@nvidia.com> Reviewed-on: http://git-master/r/30190 Tested-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: R6f1bf287860a24d0a535e49f516581b31092d182
2011-11-30ARM: tegra: Use proper type for physical addressesScott Williams
Original-Change-Id: I158d2be97c795313e7e74ce9fb4ec0bdc7d95496 Reviewed-on: http://git-master/r/27559 Tested-by: Scott Williams <scwilliams@nvidia.com> Reviewed-by: Hiro Sugawara <hsugawara@nvidia.com> Reviewed-by: Jin Qian <jqian@nvidia.com> Reviewed-by: Kaz Fukuoka <kfukuoka@nvidia.com> Reviewed-by: Scott Williams <scwilliams@nvidia.com> Original-Change-Id: I0ff198daa548ed2837f7fb1794013bf0adf7e5a1 Rebase-Id: R46eb4226a3d37331db92f05d1a6e1c8e45f682a2
2011-11-30Update copyrightsScott Williams
Original-Change-Id: I2ffeaf6f8dfeb279b40ca6f69f6c9157401a746a Rebase-Id: Rb4bacf7db8c96e1865380466ef7eca71d72d08bc
2011-11-30crypto: tegra-aes: add support for aes-ofb modepuneet saxena
Bug 787628 Original-Change-Id: I73c3b8f0b3e69f1c4bc13bdaea84b19b14eb73d1 Signed-off-by: Puneet Saxena <puneets@nvidia.com> Reviewed-on: http://git-master/r/28003 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: Rdf987e66c66135392489bd73ca16429d4d05d636
2011-11-30crypto: tegra-aes: reclaim key slot in cra_exitVarun Wadekar
clients call the algorithm's close api, which results in the algo's cra_exit getting called, when they are done using the hardware. we need to free the key slot which was being used by the client when its cra_exit is called. Original-Change-Id: Ib42d445f5068c4ea1ef6b3edbbc547fe9eeef583 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/24673 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: R8676bc01e6930c3164f8cc22d96023e0aeb44a3e
2011-11-30crypto: tegra-aes: enable/disable irq per requestVarun Wadekar
Original-Change-Id: I7d8fe24ab5aa914fc2753f256eec261fcbf746bc Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/22594 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: Re4de8ecdfd6507cad5e0196882326d00f5ae79e0
2011-11-30Revert "Revert "crypto: tegra-aes: performance improvements""Varun Wadekar
This reverts commit 8bc4f710e981d53a9bd161c6c054241231e09149. Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Original-Change-Id: I0497afd3ec54e7b835de37e9941b2418e3dad4e3 Reviewed-on: http://git-master/r/22963 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: Rf393b9a6102e4550c44bc538ccc541879890f924
2011-11-30Revert "crypto: tegra-aes: performance improvements"Varun Colbert
This reverts commit a8dbfda58a6980976de60ba46f22a5f0b2ecab5f. Original-Change-Id: I70407c45cc5605ad9924a5a1145e18371dc9d2ef Reviewed-on: http://git-master/r/22554 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: Rdfc2a43ce9137e1a7ff81b78868c2e48f91f1b02
2011-11-30crypto: tegra-aes: performance improvementsVarun Wadekar
- set the key only at the start of encrypt/decrypt operations - avoid using mutex in handle_req, since it is already serialised - sanity checks while setting the iv Original-Change-Id: I026e138f59d661cd705db6820bed63e5e15f02c5 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/22162 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: R11bd949802ebf158b87b8705aab5271c27da844b
2011-11-30crypto: tegra-aes: do not track ssk slotVarun Wadekar
ssk slot is write-locked so the driver should not track in its free slot pool. Original-Change-Id: Ibf04a949a2894ef2c41851e7e92c13901c873bf2 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/22161 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: R7ae05f50294e8a7f0241296aee53cda57aa36a5f
2011-11-30crypto: tegra-aes: set vde clock to max in _probeVarun Wadekar
Original-Change-Id: I41ba8dfc193b346eda522eadfb0f9035f4d838f8 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/22160 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: R8351adfba377ede436f101194551e8091aa5528b
2011-11-30crypto: tegra-aes: perf: remove unnecessary polling and memsetVarun Wadekar
Change-Id: I69731fcd50933ccea73542d046c3c5d86d03fcd9 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-11-30crypto: tegra-aes: Hack to disable HW AES for dm-cryptKen Sumrall
The hardware aes engine is required for key management for HDCP, but since it's performance is bad, we don't want it enabled for dm-crypt. This hack changes the cra_name field so dm-crypt won't find a match, but leaves the cra_driver_name field unchanged to the device file interface will still find it. Signed-off-by: Ken Sumrall <ksumrall@android.com>
2011-11-30crypto: tegra-aes: improve encrypt/decrypt performanceVarun Wadekar
- enable/disable clocks only once per request - create a thread for handling the driver's work queue - always set vde clocks to the max before processing a request Change-Id: I935e5523e9e913c93705cc694f8a475d212c15ce Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-11-30crypto: tegra-aes: call INIT_COMPLETION before setting the transferVarun Wadekar
Change-Id: I368a9bf8aa1c311532e54d18a813b556576b8da1 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-11-30crypto: tegra-aes: do not reset bsev/vde per operationVarun Wadekar
avp does not use the crypto engine inside the vde block, so it is ok if we do not reset the entire block before any crypto operation. this would save more than 100us per crypto operation. Change-Id: I4e6f4940c5b6e95498b6f7a62498fbf956e25254 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-11-30crytpo: tegra-aes: make aes_handle_req aynschronousVarun Wadekar
the encrypt/decrypt callbacks have to return with -EINPROGRESS error code and the request complete callback needs to be called from handle_req for aynchronous block ciphers. use work queue to make the driver asynchronous. Change-Id: I0dec1185c31e5de7ba039c39d6bd87c8b3487b2a Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-11-30crypto: tegra-aes: reduce ivsize to 16 bytes and priority to 100Varun Wadekar
Change-Id: I6f5a7107d1140cf67f6029111cb4df312ac1183c Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-11-30crypto: tegra-aes: initialise bsev/vde clocks per operationVarun Wadekar
Change-Id: Iaddea9ba9d3bee9c987776f37225dee483684274 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-11-30crypto: tegra-aes: Disable clock at end of probeColin Cross
Change-Id: Ie5b98b705a7ec70782df5dc0aec69438b699661c Signed-off-by: Colin Cross <ccross@android.com>
2011-11-30crypto: driver for tegra AES hardwareVarun Wadekar
driver supports ecb/cbc/ansi_x9.31rng modes, 128, 192 and 256-bit key sizes and encrypt/decrypt using ssk. Change-Id: I63e03ead5b53adc5e44cf5b60f9f700dea2a2e61 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>