summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-12-14drm/bridge/sii8620: do not stop MHL output when TMDS input is stoppedAndrzej Hajda
Stopping output causes full re-detection of the sink and slows down the process. Change-Id: I2089437635a6df5ba2a75a45a31b7431c365a861 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: make local functions staticsAndrzej Hajda
These functions are not exported. Change-Id: If0660466cf41f2e7c281970f05402429537fb3e2 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: set gen2 write burst before sending MSC commandAndrzej Hajda
Write burst should be enabled for MHL_INT_RC_FEAT_REQ and disabled for other commands. The patch moves functions up and adds delay setting for MHL3 burst mode. Change-Id: Id554364c9156eac720672363fd5437b029efbd26 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: abstract out sink detection codeAndrzej Hajda
MHL1 and MHL3 have different initialization paths. To make both protocols happy sink detection is put into continuation after link mode enablement. Change-Id: I739fd47dce782b151e9a498364ed42de9223996b Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: fix initialization sequence for MHL2 receiversAndrzej Hajda
MHL2 receiver require disabling transmitter on initialization. Change-Id: I85fa2c3c7a8dc2ed39d8b012a7d017a7fd55addd Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: fix MSC message removalAndrzej Hajda
Messages queue can be cleaned up by message callbacks, to avoid premature removal of current message it should be removed from the queue before calling these callbacks. Change-Id: Ie95c291d27a1be52291cc2cd1b7dead8f24560b4 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: fix CBUS bring-up sequenceAndrzej Hajda
In case of MHL3 CBUS is bring-up already in sii8620_got_ecbus_speed. Change-Id: I4abafa944113528eb6cc71799a35f4215aeac428 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: fix peer device capabilities read codeAndrzej Hajda
Peer capabilities should be read differently depending on protocol version. Change-Id: I3344af6068da07ccc7842a6e8affc63ee31a33a0 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: respond to feature requestsAndrzej Hajda
MHL3 protocol requires device to respond to feature request from peer. This minimal answer fulfills the requirement and allows to continue negotiation. Change-Id: Ifa2ed4d4db2cd29e50eef8144eef3eeb16aa2d72 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: add support for burst eMSC transmissionsAndrzej Hajda
Burst transmissions are used in MHL3 mode negotiation. Change-Id: Iec7261a46c9743ef95fae0e8e921aeee11cf0cc4 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/mhl: add write burst related definitionsAndrzej Hajda
Burst transmissions are used in MHL3 mode. Change-Id: If59f1aa3e8bd53c5075de2b2284fa5cbadb2cc6c Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: initial support for eCBUS-S modeAndrzej Hajda
The Single-ended eCBUS Mode (eCBUS-S) mode provides 60 Mb/s full-duplex bidirectional traffic for three channels: - CBUS data (CBUS1 channel), - High-bandwidth MHL data (eMSC channel), - tunneling data (T-CBUS channel). It is required to fully support MHL3 dongles. Change-Id: I64f78981126cc30033b2b4330df042feccd6ffe0 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: add continuations to messagesAndrzej Hajda
Due to asynchronous nature of MHL flow of execution is dispersed. Logical continuation of some actions happens after response of peer, i.e in interrupt handler. To simplify coding continuation mechanism has been added - it is now possible to provide continuation callback, which will be called after peer responds to given action. Change-Id: I93a9d25912e17787dd9856b65d1fc75b2644b940 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: add reading device capability registersAndrzej Hajda
This functionality is necessary to implement MHL3 modes. Change-Id: I267d27815527403ace25470f620cb4e5600a2520 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: simplify MHL3 mode settingAndrzej Hajda
It is not necessary to set REG_COC_CTL0, REG_MHL_COC_CTL1 registers. Change-Id: Id363df66baffe0be9f96e61597bc04a16bf42aad Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: limit supported modes to MHL1/2 modesAndrzej Hajda
MHL3 modes are unstable on MHL3 dongle working in compatibility mode. The patch denies them until full MHL3 mode is supported. Change-Id: I0e18ce16e6194c346dde8a67a864feb452cf7b12 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/exynos/hdmi: fix VSI infoframe registersAndrzej Hajda
VSI infoframe registers address space is non-contiguous, so infoframe write should be split into two chunks. Change-Id: I40b4598dd64ec205d85a6f99828e2f22ae568918 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm: exynos: Remove unreachable codeSylwester Nawrocki
This patch reworks function arguments testing to avoid unreachable code as pointed out with an SVACE warning: * UNREACHABLE_CODE: This statement in the source code might be unreachable during program execution. [unreachable] unreachable at drivers/gpu/drm/exynos/exynos_drm_ipp.c:1442 [The condition property == 0 is always false because at this program point the variable property is always not equal to 0] The condition property == 0 is always false because at this program point the variable property is always not equal to 0 at drivers/gpu/drm/exynos/exynos_drm_ipp.c:1441 * UNREACHABLE_CODE: This statement in the source code might be unreachable during program execution. [unreachable] unreachable at drivers/gpu/drm/exynos/exynos_drm_ipp.c:1569 [The condition event_work == 0 is always false because at this program point the variable event_work is always not equal to 0] The condition event_work == 0 is always false because at this program point the variable event_work is always not equal to 0 at drivers/gpu/drm/exynos/exynos_drm_ipp.c:1568 Change-Id: I2a9426685c87047bf5ec3ee88b6cce4d1d7d6158 Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
2016-12-14drm/exynos: fix error handling in exynos_drm_subdrv_openArnd Bergmann
gcc-6 warns about a pointless loop in exynos_drm_subdrv_open: drivers/gpu/drm/exynos/exynos_drm_core.c: In function 'exynos_drm_subdrv_open': drivers/gpu/drm/exynos/exynos_drm_core.c:104:199: error: self-comparison always evaluates to false [-Werror=tautological-compare] list_for_each_entry_reverse(subdrv, &subdrv->list, list) { Here, the list_for_each_entry_reverse immediately terminates because the subdrv pointer is compared to itself as the loop end condition. If we were to take the current subdrv pointer as the start of the list (as we would do if list_for_each_entry_reverse() was not a macro), we would iterate backwards over the &exynos_drm_subdrv_list anchor, which would be even worse. Instead, we need to use list_for_each_entry_continue_reverse() to go back over each subdrv that was successfully opened until the first entry. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Inki Dae <inki.dae@samsung.com> [Backport from mainline to fix build warning with gcc6] Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com> Change-Id: Iee4b9078f0bd521507716521a339b37ea5dd8776
2016-12-14drm/exynos/hdmi: Don't print error on deferral due to regulatorsJavier Martinez Canillas
The regulators may not be available just because their driver's probe function was just not executed and so the regulators not registered. So, in this case the Exynos HDMI driver should not print logs since a -EPROBE_DEFER is not really an error and that will just pollute the kernel log and confuse users. This patch prevents the following misleading messages to be printed: [ 1.443638] [drm:hdmi_probe] *ERROR* failed to get regulators [ 1.449326] [drm:hdmi_probe] *ERROR* hdmi_resources_init failed Change-Id: Ib23cf62b86f9aacb6e23b64b7716a77d96da83f8 Reported-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14gpu: drm: exynos_hdmi: Remove duplicate initialization of regulator bulk ↵Andrzej Hajda
consumer The helper, devm_regulator_bulk_get() initializes the consumer as NULL, so this code can be ignored. Change-Id: Ib23cf62b86f9aacb6e23b64b7716a77d96da87f8 Signed-off-by: Milo Kim <woogyom.kim@gmail.com> Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14gpu: drm: exynos_hdmi: Move PHY logic into single functionAndrzej Hajda
Paring DT properties and getting PHY IO (memory mapped or I2C) in one function. Change-Id: Ibc94c66df85a81a8f5239b5d4f334686b6ae863d Signed-off-by: Milo Kim <woogyom.kim@gmail.com> Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14gpu: drm: exynos_hdmi: Move DDC logic into single functionAndrzej Hajda
Paring DT properties and getting the I2C adapter in one function. Change-Id: I1df1b6294f61013110bcddb223a3b35fb5c17169 Signed-off-by: Milo Kim <woogyom.kim@gmail.com> Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: improve infoframe configurationAndrzej Hajda
Use core helpers to generate infoframes and add VSI frame generation for UHD modes. Change-Id: Ibea33cff20c6c4fa6b07a8e206770708a36fe53f Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/exynos/hdmi: always set PHY_POWER_OFF_EN bitAndrzej Hajda
The bit is present in all variants (its default value only differs). The patch makes the code in-sync with mainline. Change-Id: I6a2a8fcf9d7f8a5616f64eafec7722a4bf1675fa Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/exynos/hdmi: remove unused fieldAndrzej Hajda
The patch removes unused hdmi_context field. Change-Id: Id8836961b6dca7c2a09f7d4a99c3455c96057eb6 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: use array specifier for HDMI-PHY configurationsAndrzej Hajda
HDMI-PHY configurations are stored as array pointer and count pair, we can re-use existing helpers to simplify their initialization. Change-Id: Ie387a23428711edc5c027661ac0b1c623c19c468 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: synchronize sysreg code with mainlineAndrzej Hajda
There are no other users of sysreg besides 5433. The code can be simplified. The patch synchronizes the code with mainline. Change-Id: Ie6996e69388b2ea5afece292b56317d60caa91b0 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/exynos/hdmi: improve clock routinesAndrzej Hajda
The patch: - adds unwind code to hdmi_clk_enable_gates, - simplifies code, - moves routines up, to match mainline. Change-Id: I79055471688400b6f449c87d210ae698166acb68 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/exynos/hdmi: constify global variablesAndrzej Hajda
These variables should not be modified. Change-Id: I9cef5d79465e24d3bc1d825afb94cccc09ff1756 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: convert to gpiod APIAndrzej Hajda
The patch converts API to gpiod and moves initialization code to hdmi_resources_init. Change-Id: I5136395b16f3f50defa81be6406d137f3c103e35 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: fix edid memory leakAndrzej Hajda
edid returned by drm_get_edid should be freed. The patch fixes it. Change-Id: Ied8d60b6a1e12409037defb04be4bcf0c906690d Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Reviewed-by: Joonyoung Shim <jy0922.shim@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: remove registry dumpAndrzej Hajda
HDMI registry dump unnecessary spoils console and is not very helpful. Change-Id: I6155d370fa69e3da620c28c86bf41d17a398c6c3 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: use optional regulator_get for hdmi-enAndrzej Hajda
hdmi-en is an optional regulator so it should be better handled by devm_regulator_get_optional call. Change-Id: I2cbb12c54c43b10ebac76a00a5ef954c2ae627f6 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: use constant size array for regulatorsAndrzej Hajda
Driver always uses the same number of regulators, so there is no point in dynamic allocation. Change-Id: I8227ea4e341c55f1932f1e88e1138bb50271a749 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: remove deprecated hdmi_resources structureAndrzej Hajda
hdmi_resources structure was filled by old platform data code and is not necessary anymore. The patch removes it at groups together resource related fields in hdmi_context. The patch is back-ported from mainline. Change-Id: Iab2209a9177749ce526569e32c6695d4b09272dc Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/exynos/hdmi: improve HDMI/ACR related codeAndrzej Hajda
Simple formula can be used to calculate CTS and N coefficients. Additionaly ACR registers have different offsets for different versions of IP. Change-Id: I41be0b432da51651c007428fce7c7c4870ef1cb6 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: use mappings for registers with IP dependent addressAndrzej Hajda
Some registers resides at different offsets depending on device version. This patch adds infrastructure for mapping such registers to proper address based on hdmi_type. It adds also mappings to some registers. Change-Id: Ic345e1a4cb398aebea62b50fd86a44f30b5fd1e5 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: stop duplicating drv_data fieldsAndrzej Hajda
The patch removes duplicated drv_data fields and simplifies drv_data matching. Change-Id: I78abbd6dfee0d05c7095ae176fc8e080e233fd64 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/exynos/hdmi: refactor struct str_array_specAndrzej Hajda
The patch constifies array and renames symbols to be in sync with mainline. Change-Id: Ife8aa1b6adde978dbf71fc7c57bd18e01f50fdd7 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/exynos/hdmi: stop programming registers with default valuesAndrzej Hajda
There is no point in rewriting default values, as the IP is reset anyway. Change-Id: I9c0856d48be83a36ed4a8741e86715353acbf2d0 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: move hdmi_start to hdmi_mode_applyAndrzej Hajda
hdmi_start is called for both variants. Change-Id: I6da89cf21599a760c793121f3ae637eca7cc77ff Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/exynos/hdmi: remove hdmi_v14_conf structAndrzej Hajda
The patch removes intermediate struct for HDMIv14 register configuration, instead registry values are calculated on the fly. Change-Id: Ib440e0ab375f4eafdc5e6d3e06fcf64ce212ad84 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Reviewed-by: Joonyoung Shim <jy0922.shim@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: remove hdmi_v13_conf structAndrzej Hajda
The patch removes intermediate struct for HDMIv13 register configuration, instead registry values are calculated on the fly. Change-Id: I4a47b99afda16f9fc928ff3f91359be67c4dc55f Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Reviewed-by: Joonyoung Shim <jy0922.shim@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: remove redundant configuration fieldsAndrzej Hajda
The patch removes redundant fields from hdmi_conf_regs. Their values can be calculated from current_mode. This patch is the first step to remove whole hdmi_conf_regs structure. Change-Id: Id40fe15302b2546410f68323e92d136eb93b990a Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Reviewed-by: Joonyoung Shim <jy0922.shim@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14drm/exynos/hdmi: add 297MHz pixel clock supportAndrzej Hajda
297MHz is used by UHD modes. Change-Id: I2040adcc3f132dbf1d510309527a9e1574008961 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: synchronize headers with mainlineAndrzej Hajda
This patch does not provide functional change. Its main role is to synchronize header files with mainline. Change-Id: Ia6f338cc3ec1d50728a9e0e946211451f40e7420 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: rename files according to mainlineAndrzej Hajda
The patch synchronizes file names with mainline. Change-Id: I6aa491f2d7858f90055e7ea9bce00e8bb7db50e2 Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: coding style fixesAndrzej Hajda
The patch does not provide functional change beside code style fixing and synchronizing driver with mainline. Change-Id: I5dc303ead4af81883c5199e9eaef7e73733a599b Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
2016-12-14drm/bridge/sii8620: use lower-case for i2c_device_idAndrzej Hajda
Linux I2C device use lower-case for identification. Change-Id: I7a86fef880c5c969897658a710c05ead37b74f2b Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>