rename mmio global variable to igt_global_mmio
cover rename mmio global variable to igt_global_mmio
First reduce to use of the mmio global variable by switching to INREG and OUTREG, and finally rename mmio to igt_global_mmio.
BR,
Jani.
Jani Nikula (10):
lib: add 16 and 8 bit versions of INREG and OUTREG
intel_reg: switch to INREG and OUTREG
intel_backlight: switch to INREG and OUTREG
intel_reg_checker: switch to INREG intel_reg_{read,write}: switch to INREG and OUTREG
intel_watermark: switch to INREG
intel_display_poller: use INREG and OUTREG intel_vga_{read,write}: use INREG and OUTREG tests/gen7_forcewake_mt: use local mmio variable rename global mmio variable to igt_global_mmio
lib/intel_io.h | 6 ++++- lib/intel_mmio.c | 60 ++++++++++++++++++++++++++++++-------------- tests/gen7_forcewake_mt.c | 1 + tools/intel_backlight.c | 20 ++++----------- tools/intel_display_poller.c | 8 +++--- tools/intel_reg.c | 12 ++++----- tools/intel_reg_checker.c | 8 +----- tools/intel_reg_read.c | 5 ++-- tools/intel_reg_snapshot.c | 2 +- tools/intel_reg_write.c | 8 +++--- tools/intel_vga_read.c | 2 +- tools/intel_vga_write.c | 2 +- tools/intel_watermark.c | 2 +- 13 files changed, 71 insertions(+), 65 deletions(-)
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 1/10 lib: add 16 and 8 bit versions of INREG and OUTREG
--- lib/intel_io.h | 4 ++++ lib/intel_mmio.c | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+)
lib/intel_io.h +4 -0
@@ -43,7 +43,11 @@ void intel_register_write(uint32_t reg, uint32_t val);int intel_register_access_needs_fakewake (void );uint32_t INREG (uint32_t reg); +uint16_t INREG16 (uint32_t reg); +uint8_t INREG8 (uint32_t reg);void OUTREG (uint32_t reg,uint32_t val); +void OUTREG16 (uint32_t reg,uint16_t val); +void OUTREG8 (uint32_t reg,uint8_t val);/* sideband access functions from intel_iosf.c */ uint32_t intel_dpio_reg_read (uint32_t reg,int phy);
lib/intel_mmio.c +24 -0
@@ -324,6 +324,18 @@ uint32_t INREG(uint32_t reg)return *(volatile uint32_t *)((volatile char *)mmio + reg); } +/* 16-bit version of INREG */ +uint16_t INREG16 (uint32_t reg) +{ +return *(volatile uint16_t *)((volatile char *)mmio + reg); +} + +/* 8-bit version of INREG */ +uint8_t INREG8 (uint32_t reg) +{ +return *((volatile uint8_t *)mmio + reg); +} +/** * OUTRET: * @reg: register offset
@@ -338,3 +350,15 @@ void OUTREG(uint32_t reg, uint32_t val) { *(volatile uint32_t *)((volatile char *)mmio + reg) = val; } + +/* 16-bit version of OUTREG */ +void OUTREG16 (uint32_t reg,uint16_t val) +{ + *(volatile uint16_t *)((volatile char *)mmio + reg) = val; +} + +/* 8-bit version of OUTREG */ +void OUTREG8 (uint32_t reg,uint8_t val) +{ + *((volatile uint8_t *)mmio + reg) = val; +}
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 2/10 intel_reg: switch to INREG and OUTREG
In reply to Jani NikulaUse INREG and OUTREG instead of using mmio directly.
--- tools/intel_reg.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
tools/intel_reg.c +4 -6
@@ -226,8 +226,7 @@ static int read_register(struct config *config, struct reg *reg, uint32_t *valp)switch (reg->port_desc.port) {case PORT_MMIO : - val = *(volatile uint32_t *)((volatile char *)mmio + - reg->mmio_offset + reg->addr); + val =INREG (reg->mmio_offset + reg->addr);break ;case PORT_PORTIO_VGA :iopl (3 );
@@ -235,7 +234,7 @@ static int read_register(struct config *config, struct reg *reg, uint32_t *valp)iopl (0 );break ;case PORT_MMIO_VGA : - val = *((volatile uint8_t *)mmio + reg->addr); + val =INREG8 (reg->addr);break ;case PORT_BUNIT :case PORT_PUNIT :
@@ -284,8 +283,7 @@ static int write_register(struct config *config, struct reg *reg, uint32_t val)switch (reg->port_desc.port) {case PORT_MMIO : - *(volatile uint32_t *)((volatile char *)mmio + - reg->mmio_offset + reg->addr) = val; +OUTREG (reg->mmio_offset + reg->addr, val);break ;case PORT_PORTIO_VGA :if (val >0xff ) {
@@ -303,7 +301,7 @@ static int write_register(struct config *config, struct reg *reg, uint32_t val) val, reg->port_desc.name);return -1 ; } - *((volatile uint8_t *)mmio + reg->addr) = val; +OUTREG8 (reg->addr, val);break ;case PORT_BUNIT :case PORT_PUNIT :
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 3/10 intel_backlight: switch to INREG and OUTREG
In reply to Jani NikulaUse INREG and OUTREG instead of using mmio directly.
--- tools/intel_backlight.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)
tools/intel_backlight.c +5 -15
@@ -36,24 +36,14 @@/* XXX PCH only today */ -static uint32_t reg_read (uint32_t reg) -{ -return *(volatile uint32_t *)((volatile char *)mmio + reg); -} - -static void reg_write (uint32_t reg,uint32_t val) -{ - *(volatile uint32_t *)((volatile char *)mmio + reg) = val; -} -int main (int argc,char ** argv) {uint32_t current, max;intel_mmio_use_pci_bar (intel_get_pci_device ()); - current =reg_read (BLC_PWM_CPU_CTL ) &BACKLIGHT_DUTY_CYCLE_MASK ; - max =reg_read (BLC_PWM_PCH_CTL2 ) >>16 ; + current =INREG (BLC_PWM_CPU_CTL ) &BACKLIGHT_DUTY_CYCLE_MASK ; + max =INREG (BLC_PWM_PCH_CTL2 ) >>16 ;printf ("current backlight value: %d%%\n" , current *100 / max);
@@ -61,9 +51,9 @@ int main(int argc, char** argv)uint32_t v =atoi (argv[1 ]) * max /100 ;if (v > max) v = max; -reg_write (BLC_PWM_CPU_CTL , - (reg_read (BLC_PWM_CPU_CTL ) &~BACKLIGHT_DUTY_CYCLE_MASK ) | v); - (void )reg_read (BLC_PWM_CPU_CTL ); +OUTREG (BLC_PWM_CPU_CTL , + (INREG (BLC_PWM_CPU_CTL ) &~BACKLIGHT_DUTY_CYCLE_MASK ) | v); + (void )INREG (BLC_PWM_CPU_CTL );printf ("set backlight to %d%%\n" , v *100 / max); }
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 4/10 intel_reg_checker: switch to INREG
In reply to Jani NikulaUse INREG instead of using mmio directly.
--- tools/intel_reg_checker.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)
tools/intel_reg_checker.c +1 -7
@@ -32,16 +32,10 @@static uint32_t devid;static int gen; -static inline uint32_t -read_reg (uint32_t reg) -{ -return *(volatile uint32_t *)((volatile char *)mmio + reg); -} -static uint32_t read_and_print_reg (const char *name,uint32_t reg) { -uint32_t val =read_reg (reg); +uint32_t val =INREG (reg);printf ("%s (0x%x): 0x%08x\n" , name, reg, val);
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 5/10 intel_reg_{read, write}: switch to INREG and OUTREG
In reply to Jani NikulaUse INREG and OUTREG instead of using mmio directly.
--- tools/intel_reg_read.c | 5 ++--- tools/intel_reg_write.c | 8 +++----- 2 files changed, 5 insertions(+), 8 deletions(-)
tools/intel_reg_read.c +2 -3
@@ -51,8 +51,7 @@ static void dump_range(uint32_t start, uint32_t end)int i;for (i = start; i < end; i +=4 ) -printf ("0x%X : 0x%X\n" , i, - *(volatile uint32_t *)((volatile char *)mmio + i)); +printf ("0x%X : 0x%X\n" , i,INREG (i)); }static void usage (char *cmdname)
@@ -130,7 +129,7 @@ int main(int argc, char** argv)dump_range (reg, reg + (dwords *4 ));if (decode_bits) -bit_decode (*(volatile uint32_t *)((volatile char *)mmio + reg)); +bit_decode (INREG (reg)); } }
tools/intel_reg_write.c +3 -5
@@ -35,7 +35,6 @@int main (int argc,char ** argv) {uint32_t reg, value; -volatile uint32_t *ptr;if (argc <3 ) {printf ("Usage: %s addr value\n" , argv[0 ]);
@@ -47,11 +46,10 @@ int main(int argc, char** argv)intel_register_access_init (intel_get_pci_device (),0 );sscanf (argv[1 ],"0x%x" , ®);sscanf (argv[2 ],"0x%x" , &value); - ptr = (volatile uint32_t *)((volatile char *)mmio + reg); -printf ("Value before: 0x%X\n" , *ptr); - *ptr = value; -printf ("Value after: 0x%X\n" , *ptr); +printf ("Value before: 0x%X\n" ,INREG (reg)); +OUTREG (reg, value); +printf ("Value after: 0x%X\n" ,INREG (reg));intel_register_access_fini ();return 0 ;
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 6/10 intel_watermark: switch to INREG
In reply to Jani NikulaUse INREG instead of using mmio directly.
--- tools/intel_watermark.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/intel_watermark.c +1 -1
@@ -38,7 +38,7 @@ static uint32_t devid;static uint32_t read_reg (uint32_t addr) { -return *(volatile uint32_t *)((volatile char *)mmio + display_base + addr); +return INREG (display_base + addr); }struct gmch_wm {
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 7/10 intel_display_poller: use INREG and OUTREG
In reply to Jani NikulaUse INREG and OUTREG instead of using mmio directly.
--- tools/intel_display_poller.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
tools/intel_display_poller.c +4 -4
@@ -67,22 +67,22 @@ static void sighandler(int x)static uint16_t read_reg_16 (uint32_t reg) { -return *(volatile uint16_t *)((volatile char *)mmio + vlv_offset + reg); +return INREG16 (vlv_offset + reg); }static uint32_t read_reg (uint32_t reg) { -return *(volatile uint32_t *)((volatile char *)mmio + vlv_offset + reg); +return INREG (vlv_offset + reg); }static void write_reg_16 (uint32_t reg,uint16_t val) { - *(volatile uint16_t *)((volatile char *)mmio + vlv_offset + reg) = val; +OUTREG16 (vlv_offset + reg, val); }static void write_reg (uint32_t reg,uint32_t val) { - *(volatile uint32_t *)((volatile char *)mmio + vlv_offset + reg) = val; +OUTREG (vlv_offset + reg, val); }static int pipe_to_plane (uint32_t devid,int pipe)
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 8/10 intel_vga_{read, write}: use INREG and OUTREG
In reply to Jani NikulaUse INREG and OUTREG instead of using mmio directly.
--- tools/intel_vga_read.c | 2 +- tools/intel_vga_write.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
tools/intel_vga_read.c +1 -1
@@ -37,7 +37,7 @@static uint8_t read_reg (uint32_t reg,bool use_mmio) {if (use_mmio) -return *((volatile uint8_t *)mmio + reg); +return INREG8 (reg);else return inb (reg); }
tools/intel_vga_write.c +1 -1
@@ -37,7 +37,7 @@static void write_reg (uint32_t reg,uint8_t val,bool use_mmio) {if (use_mmio) - *((volatile uint8_t *)mmio + reg) = val; +OUTREG8 (reg, val);else outb (val, reg); }
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 9/10 tests/gen7_forcewake_mt: use local mmio variable
In reply to Jani Nikulaigfx_get_mmio() uses the global mmio variable by accident. Use a local variable instead.
The intention is to rename the global variable later on, so shadowing it here does not matter.
--- tests/gen7_forcewake_mt.c | 1 + 1 file changed, 1 insertion(+)
tests/gen7_forcewake_mt.c +1 -0
@@ -88,6 +88,7 @@ static struct pci_device *__igfx_get(void)static void *igfx_get_mmio (void ) {struct pci_device *pci =__igfx_get (); +void *mmio =NULL ;int error;igt_skip_on (pci ==NULL );
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 10/10 rename global mmio variable to igt_global_mmio
In reply to Jani NikulaGlobal variable names should reflect the fact that they are indeed global, and at the very least they should not be as short as just "mmio". Rename mmio to igt_global_mmio.
--- lib/intel_io.h | 2 +- lib/intel_mmio.c | 44 +++++++++++++++++++++----------------------- tools/intel_reg.c | 2 +- tools/intel_reg_snapshot.c | 2 +- 4 files changed, 24 insertions(+), 26 deletions(-)
lib/intel_io.h +1 -1
@@ -32,7 +32,7 @@#include <pciaccess.h> /* register access helpers from intel_mmio.c */ -extern void *mmio; +extern void *igt_global_mmio;void intel_mmio_use_pci_bar (struct pci_device *pci_dev);void intel_mmio_use_dump_file (char *file);
lib/intel_mmio.c +21 -23
139 lines not on this page · raw message
tools/intel_reg.c +1 -1
@@ -491,7 +491,7 @@ static int intel_reg_snapshot(struct config *config, int argc, char *argv[])intel_mmio_use_pci_bar (config->pci_dev);/* XXX: error handling */ -write (1 , mmio, config->pci_dev->regions[mmio_bar].size); +write (1 , igt_global_mmio, config->pci_dev->regions[mmio_bar].size);if (config->verbosity >0 ) printf("use this with --mmio=FILE --devid=0x%04X\n",
tools/intel_reg_snapshot.c +1 -1
@@ -45,7 +45,7 @@ int main(int argc, char** argv)else mmio_bar =0 ; - ret =write (1 , mmio, pci_dev->regions[mmio_bar].size); + ret =write (1 , igt_global_mmio, pci_dev->regions[mmio_bar].size);assert (ret >0 );return 0 ;
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [PATCH i-g-t 01/10] lib: add 16 and 8 bit versions of INREG and OUTREG
In reply to Jani NikulaQuoted 27 lines · Jani Nikula
Signed-off-by Jani Nikula <[email protected]>--- lib/intel_io.h | 4 ++++ lib/intel_mmio.c | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+)lib/intel_io.h +4
-0@@ -43,7 +43,11 @@ void intel_register_write(uint32_t reg, uint32_t val);int intel_register_access_needs_fakewake (void );uint32_t INREG (uint32_t reg); +uint16_t INREG16 (uint32_t reg); +uint8_t INREG8 (uint32_t reg);void OUTREG (uint32_t reg,uint32_t val); +void OUTREG16 (uint32_t reg,uint16_t val); +void OUTREG8 (uint32_t reg,uint8_t val);/* sideband access functions from intel_iosf.c */ uint32_t intel_dpio_reg_read (uint32_t reg,int phy);lib/intel_mmio.c +0
-0
lib/intel_mmio.c uint32_t INREG(uint32_t reg) · line 327
Quoted 4 lines
lib/intel_mmio.c +1
-0@@ -324,6 +324,18 @@ uint32_t INREG(uint32_t reg)return *(volatile uint32_t *)((volatile char *)mmio + reg); } +/* 16-bit version of INREG */
gtkdoc is missing here for these new functions. And while at it please also do the s/OUTRET/OUTREG/ type ;-)
Otherise entire series looks really nifty and has my Ack.
Cheers, Daniel
Quoted 37 lines
lib/intel_mmio.c +23
-0+uint16_t INREG16 (uint32_t reg) +{ +return *(volatile uint16_t *)((volatile char *)mmio + reg); +} + +/* 8-bit version of INREG */ +uint8_t INREG8 (uint32_t reg) +{ +return *((volatile uint8_t *)mmio + reg); +} +/** * OUTRET: * @reg: register offset @@ -338,3 +350,15 @@ void OUTREG(uint32_t reg, uint32_t val) { *(volatile uint32_t *)((volatile char *)mmio + reg) = val; } + +/* 16-bit version of OUTREG */ +void OUTREG16 (uint32_t reg,uint16_t val) +{ + *(volatile uint16_t *)((volatile char *)mmio + reg) = val; +} + +/* 8-bit version of OUTREG */ +void OUTREG8 (uint32_t reg,uint8_t val) +{ + *((volatile uint8_t *)mmio + reg) = val; +}Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 7 lines
Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [PATCH i-g-t 01/10] lib: add 16 and 8 bit versions of INREG and OUTREG
Quoted 31 lines · Daniel Vetter
Quoted 30 lines · Jani Nikula
Signed-off-by Jani Nikula <[email protected]>--- lib/intel_io.h | 4 ++++ lib/intel_mmio.c | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+)lib/intel_io.h +4
-0@@ -43,7 +43,11 @@ void intel_register_write(uint32_t reg, uint32_t val);int intel_register_access_needs_fakewake (void );uint32_t INREG (uint32_t reg); +uint16_t INREG16 (uint32_t reg); +uint8_t INREG8 (uint32_t reg);void OUTREG (uint32_t reg,uint32_t val); +void OUTREG16 (uint32_t reg,uint16_t val); +void OUTREG8 (uint32_t reg,uint8_t val);/* sideband access functions from intel_iosf.c */ uint32_t intel_dpio_reg_read (uint32_t reg,int phy);lib/intel_mmio.c +0
-0@@ -324,6 +324,18 @@ uint32_t INREG(uint32_t reg)return *(volatile uint32_t *)((volatile char *)mmio + reg); }
Quoted 6 lines
lib/intel_mmio.c uint32_t INREG(uint32_t reg) · line 327
Quoted 1 line
lib/intel_mmio.c +1
-0+/* 16-bit version of INREG */ gtkdoc is missing here for these new functions. And while at it please also do the s/OUTRET/OUTREG/ type ;-)
Otherise entire series looks really nifty and has my Ack.
Fixed and pushed the series.
Jani.
Quoted 45 lines
Cheers, Daniel
Quoted 37 lines
lib/intel_mmio.c +23
-0+uint16_t INREG16 (uint32_t reg) +{ +return *(volatile uint16_t *)((volatile char *)mmio + reg); +} + +/* 8-bit version of INREG */ +uint8_t INREG8 (uint32_t reg) +{ +return *((volatile uint8_t *)mmio + reg); +} +/** * OUTRET: * @reg: register offset @@ -338,3 +350,15 @@ void OUTREG(uint32_t reg, uint32_t val) { *(volatile uint32_t *)((volatile char *)mmio + reg) = val; } + +/* 16-bit version of OUTREG */ +void OUTREG16 (uint32_t reg,uint16_t val) +{ + *(volatile uint16_t *)((volatile char *)mmio + reg) = val; +} + +/* 8-bit version of OUTREG */ +void OUTREG8 (uint32_t reg,uint8_t val) +{ + *((volatile uint8_t *)mmio + reg) = val; +}Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfxSignature · 3 lines
Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
Signature · 5 lines
Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx