[igt-dev] [PATCH i-g-t 06/14] tools/intel_display_poller: Add async flip test mode

Ville Syrjälä ville.syrjala at linux.intel.com
Fri Oct 8 13:50:44 UTC 2021


On Mon, May 17, 2021 at 12:28:00PM +0530, Karthik B S wrote:
> On 3/2/2021 2:07 AM, Navare, Manasi D wrote:
> > From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> >
> > Test various things using mmio async flips. These are present since
> > g4x, except g4x does not seem to have a working flipdone interrupt.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > ---
> >   lib/intel_reg.h              |  3 ++
> >   tools/intel_display_poller.c | 83 +++++++++++++++++++++++++++---------
> >   2 files changed, 66 insertions(+), 20 deletions(-)
> >
> > diff --git a/lib/intel_reg.h b/lib/intel_reg.h
> > index ac1fc6cb..7b543109 100644
> > --- a/lib/intel_reg.h
> > +++ b/lib/intel_reg.h
> > @@ -2330,6 +2330,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> >   
> >   #define PIPEEDPCONF		0x7F008
> >   
> > +#define DSPAADDR_VLV		0x7017C /* vlv/chv */
> > +#define DSPBADDR_VLV		0x7117C /* vlv/chv */
> > +#define DSPCADDR_CHV		0x7417C /* chv */
> >   #define DSPACNTR		0x70180
> >   #define DSPBCNTR		0x71180
> >   #define DSPCCNTR		0x72180
> > diff --git a/tools/intel_display_poller.c b/tools/intel_display_poller.c
> > index be237221..d6a77d35 100644
> > --- a/tools/intel_display_poller.c
> > +++ b/tools/intel_display_poller.c
> > @@ -144,16 +144,35 @@ static uint32_t dspoffset_reg(uint32_t devid, int pipe)
> >   		return PIPE_REG(plane, DSPABASE);
> >   }
> >   
> > -static uint32_t dspsurf_reg(uint32_t devid, int pipe)
> > +static uint32_t dspsurf_reg(uint32_t devid, int pipe, bool async)
> >   {
> >   	int plane = pipe_to_plane(devid, pipe);
> >   
> > +	if (async && (IS_VALLEYVIEW(devid) || IS_CHERRYVIEW(devid)))
> > +		return PIPE_REG(plane, DSPAADDR_VLV);
> > +
> 
> Hi,
> 
> Would this be correct when we try async flip on Pipe C on CHV? It would 
> return 0x7217C whereas the required return is 0x7417C? Please correct me 
> if I'm missing something here.

Sorry, forgot to reply to this. This handled through pipe_offset[].

#define PIPE_REG(pipe, reg_a) (pipe_offset[(pipe)] + (reg_a))
...
if (IS_CHERRYVIEW(devid))
	pipe_offset[2] = 0x4000;

-- 
Ville Syrjälä
Intel


More information about the igt-dev mailing list