- 29 11月, 2016 1 次提交
-
-
由 Rob Clark 提交于
For a5xx the gpu is 64b so we need to change iova to 64b everywhere. On the display side, iova is still 32b so it can ignore the upper bits. (Although all the armv8 devices have an iommu that can map 64b pa to 32b iova.) Signed-off-by: NRob Clark <robdclark@gmail.com>
-
- 28 11月, 2016 17 次提交
-
-
由 Rob Clark 提交于
Previous value really only made sense on armv7 without LPAE. Everything that supports more than 4g of memory also has iommu's that can map anything. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Archit Taneja 提交于
In add_components_mdp, we parse the endpoints in MDP output ports using the helper for_each_endpoint_of_node(). Our function calls of_node_put() on the endpoint node before we iterate over the next one. This is already done by the helper, and results in trying to decrement the refcount twice. Remove the extra of_node_put calls. This fixes warnings seen when we try to insert the driver as a module on IFC6410. Reported-by: NIlia Mirkin <imirkin@alum.mit.edu> Signed-off-by: NArchit Taneja <architt@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
The mode_config->max_{width,height} is for the maximum size of a fb, not the max scanout limits (of the layer-mixer). It is legal, and in fact common, to create a larger fb, only only scan-out a smaller part of it. For example multi-monitor configurations for x11, or android wallpaper layer (which is created larger than the screen resolution for fast scrolling by just changing the src x/y coordinates). Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
If the dumpstate modparam is enabled, for debugging error irq's, also dump SMP state. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Previously, SMP block allocation was not checked in the plane's atomic_check() fxn, so we could fail allocation SMP block allocation at atomic_update() time. Re-work the block allocation to request blocks during atomic_check(), but not update the hw until committing the atomic update. Since SMP blocks allocated at atomic_check() time, we need to manage the SMP state as part of mdp5_state (global atomic state). This actually ends up significantly simplifying the SMP management, as the SMP module does not need to manage the intermediate state between assigning new blocks before setting flush bits and releasing old blocks after vblank. (The SMP registers and SMP allocation is not double-buffered, so newly allocated blocks need to be updated in kms->prepare_commit() released blocks in kms->complete_commit().) Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
(re)assign the hw pipes to planes based on required caps, and to handle situations where we could not modify an in-use plane (ie. SMP block reallocation). This means all planes advertise the superset of formats and properties. Userspace must (as always) use atomic TEST_ONLY step for atomic updates, as not all planes may be available for use on every frame. The mapping of hwpipe to plane is stored in mdp5_state, so that state updates are atomically committed in the same way that plane/etc state updates are managed. This is needed because the mdp5_plane_state keeps a pointer to the hwpipe, and we don't want global state to become out of sync with the plane state if an atomic update fails, we hit deadlock/ backoff scenario, etc. The use of state_lock keeps multiple parallel updates which both re-assign hwpipes properly serialized. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Add basic state duplication/apply mechanism. Following commits will move actual global hw state into this. The state_lock allows multiple concurrent updates to proceed as long as they don't both try to alter global state. The ww_mutex mechanism will trigger backoff in case of deadlock between multiple threads trying to update state. Signed-off-by: NRob Clark <robdclark@gmail.com> Reviewed-by: NArchit Taneja <architt@codeaurora.org>
-
由 Rob Clark 提交于
This will give the kms backends a slot to stash their own hw specific global state. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Split out the hardware pipe specifics from mdp5_plane. To start, the hw pipes are statically assigned to planes, but next step is to assign the hw pipes during plane->atomic_check() based on requested caps (scaling, YUV, etc). And then hw pipe re-assignment if required if required SMP blocks changes. Signed-off-by: NRob Clark <robdclark@gmail.com> Reviewed-by: NArchit Taneja <architt@codeaurora.org>
-
由 Rob Clark 提交于
It wasn't really doing the right thing if, for example, position or height changed. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Just use plane->name now that it is a thing. In a following patch, once we dynamically assign hw pipes to planes, it won't make sense to name planes the way we do, so this also partly reduces churn in following patch. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
We can do this all from mdp5_plane_complete_commit(), so simplify things a bit and drop mdp5_plane_complete_flip(). Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Plane's (pipes) can be assigned dynamically with atomic, so it doesn't make much sense to name the pipe after it's primary plane. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
These are really plane-id's, not crtc-id's. Only connection to CRTCs is that they are used as primary-planes. Current name is just legacy from when we only supported RGB/primary planes. Lets pick a better name now. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
We can have various combinations of 64b and 32b address space, ie. 64b CPU but 32b display and gpu, or 64b CPU and GPU but 32b display. So best to decouple the device iova's from mmap offset. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
- 27 11月, 2016 5 次提交
-
-
由 Rob Clark 提交于
If fb dimensions are larger than what can be scanned out, but the src dimensions are not, the hw can still handle this. So clip. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Looks like cut/paste error from the other device cfgs (which do support scaling on RGBn pipes). Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
If the bottom-most layer is not fullscreen, we need to use the BASE mixer stage for solid fill (ie. MDP5_CTL_BLEND_OP_FLAG_BORDER_OUT). The blend_setup() code pretty much handled this already, we just had to figure this out in _atomic_check() and assign the stages appropriately. Also fix the case where there are zero enabled planes, where we also need to enable BORDER_OUT. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
- 18 11月, 2016 17 次提交
-
-
由 Colin Ian King 提交于
Trivial fix to spelling mistake "configutation" to "configuration" in dev_err message Signed-off-by: NColin Ian King <colin.king@canonical.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
cec_read() is non-atomic in the presence of other I2C bus transactions to the same device. This presents a problem when we add support for the TDA9950 CEC engine part - both drivers can be trying to access the device. Avoid the inherent problems by switching to i2c_transfer() instead, which allows us to perform more than one bus transaction atomically. As this means we will be using I2C transactions rather than SMBUS, we have to check that the host supports I2C functionality. Tested-by: NBrian Starkey <brian.starkey@arm.com> Reviewed-by: NBrian Starkey <brian.starkey@arm.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
Some TDA998x contain several different I2C devices - there is the HDMI encoder, and there is a TDA9950 CEC engine. These two share the same interrupt signal. In order to allow a driver for the CEC engine to work, we need to be able to share the interrupt with the CEC driver, so convert the handler and registration to allow this to happen. Tested-by: NBrian Starkey <brian.starkey@arm.com> Reviewed-by: NBrian Starkey <brian.starkey@arm.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
Disabling the pre-filter block of the TDA998x saves 40mW and the colour conversion block saves 15mW. As we always disable these two blocks, we can power these sections of the chip down to save 55mW of unnecessary power consumption. Tested-by: NBrian Starkey <brian.starkey@arm.com> Reviewed-by: NBrian Starkey <brian.starkey@arm.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
Rather than storing the DPMS mode (which will always be on or off) use a boolean to store this instead. Tested-by: NRobin Murphy <robin.murphy@arm.com> Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
tda998x_audio_get_eld() is needlessly complex - the connector associated with the encoder is always our own priv->connector. Remove this complexity, but ensure that there are no races when copying out the ELD. Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
Group the TDA998x audio functions together rather than split between two different locations in the file, keeping like code together. Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
Separate out the connector initialisation from the rest of the drivers initialisation. Tested-by: NRobin Murphy <robin.murphy@arm.com> Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
Group the TDA998x connector functions and funcs structures together before the encoder support, rather than scattered amongst the rest of the file. This keeps like code together. Tested-by: NRobin Murphy <robin.murphy@arm.com> Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
The naming of tda998x_encoder_set_config() is a left-over from when TDA998x was a slave encoder. Since this is part of the initialisation, drop the _encoder from the name, and move it near tda998x_bind(). Tested-by: NRobin Murphy <robin.murphy@arm.com> Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
Correct two references to tda998x_connector_get_modes() which were incorrectly referring to tda998x_encoder_get_modes(). Tested-by: NRobin Murphy <robin.murphy@arm.com> Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
Check for audio support by the attached sink by consulting the EDID prior to enabling audio over the TMDS link. We must consult the EDID after calling drm_helper_probe_single_connector_modes(), as this can use an override EDID, or load a replacement EDID. Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
The CEA 861B specification indicates the situations when we are able to send each infoframe based on the version of the EDID's CEA extension. Update the tda998x driver to follow the CEA specification wrt sending of infoframes. Since we only support the generation of AVI version 2, this limits us to CEA extension version 3, so we treat CEA extension version 2 as CEA 861 (no infoframes, no audio.) Tested-by: NRobin Murphy <robin.murphy@arm.com> Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
Avoid a race between programming audio and an in-progress mode set. A mode set is complex, and disables the ability to send infoframes to the sink, and is disruptive to audio - we have to mute the audio FIFO while doing a mode set. If an attempt is made to start up the audio side, we will undo the audio FIFO mute before the mode set has completed. Move the lock so that we prevent audio interfering with an in-progress mode set. Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
Avoid a racy access to the mode clock by storing the current mode clock during a mode set under the audio mutex. This allows us to access it from the audio path in a safe way. Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
As priv->audio_params can now be changed at run time, we need to be more careful about how we deal with a mode set. We must take the audio lock while checking if there's a valid audio configuration. However, it's slightly worse than that - during mode set, we mute the audio, and it must not be unmuted until we have finished the mode set. It is possible that the audio side may start while a mode set is in progress, so take the audio_mutex lock around the whole mode setting procedure. Tested-by: NJon Medhurst <tixy@linaro.org> Acked-by: NJon Medhurst <tixy@linaro.org> Tested-by: NJyri Sarha <jsarha@ti.com> Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-
由 Russell King 提交于
We will need the audio mutex initialised in all cases, so lets move this to be early, rather than only being initialised for the DT case. Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
-