drivers/gpu/drm/openchrome/openchrome_crtc_hw.h | 4 drivers/gpu/drm/openchrome/openchrome_display.c | 152 ------------------------ drivers/gpu/drm/openchrome/openchrome_drv.h | 74 +++++------ drivers/gpu/drm/openchrome/openchrome_hdmi.c | 2 drivers/gpu/drm/openchrome/openchrome_i2c.c | 10 + 5 files changed, 49 insertions(+), 193 deletions(-)
New commits: commit 754ff111cefa893bf1cf5c8a95d01d93304291b9 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jan 21 16:42:23 2022 -0600 drm/openchrome: Version bumped to 3.4.14 Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index e83fe737fffd..59102310051e 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -60,10 +60,10 @@ #define DRIVER_MAJOR 3 #define DRIVER_MINOR 4 -#define DRIVER_PATCHLEVEL 13 +#define DRIVER_PATCHLEVEL 14 #define DRIVER_NAME "openchrome" #define DRIVER_DESC "OpenChrome DRM for VIA Technologies Chrome IGP" -#define DRIVER_DATE "20220114" +#define DRIVER_DATE "20220121" #define DRIVER_AUTHOR "OpenChrome Project" commit 154e213f070d3014149c7f476b8dd3e56de4c0cd Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jan 21 16:38:03 2022 -0600 drm/openchrome: Remove via_init_td_timing_regs() Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_display.c b/drivers/gpu/drm/openchrome/openchrome_display.c index 298cd0f6a680..7309881dffe5 100644 --- a/drivers/gpu/drm/openchrome/openchrome_display.c +++ b/drivers/gpu/drm/openchrome/openchrome_display.c @@ -121,37 +121,6 @@ via_init_td_timing_regs(struct drm_device *dev) } } -static void -via_display_init(struct drm_device *dev) -{ - struct pci_dev *pdev = to_pci_dev(dev->dev); - struct openchrome_drm_private *dev_private = dev->dev_private; - u8 index = 0x3D, value; - - /* Check if spread spectrum is enabled */ - if (pdev->device == PCI_DEVICE_ID_VIA_VX900_VGA) - index = 0x2C; - - value = vga_rseq(VGABASE, 0x1E); - if (value & BIT(3)) { - value = vga_rseq(VGABASE, index); - vga_wseq(VGABASE, index, value & 0xFE); - - value = vga_rseq(VGABASE, 0x1E); - vga_wseq(VGABASE, 0x1E, value & 0xF7); - - dev_private->spread_spectrum = true; - } else - dev_private->spread_spectrum = false; - - /* Init TD timing register (power sequence) */ - via_init_td_timing_regs(dev); - - /* I/O address bit to be 1. Enable access */ - /* to frame buffer at A0000-BFFFFh */ - svga_wmisc_mask(VGABASE, BIT(0), BIT(0)); -} - int via_modeset_init(struct drm_device *dev) { @@ -166,7 +135,8 @@ via_modeset_init(struct drm_device *dev) dev_private->number_fp = 0; dev_private->number_dvi = 0; - via_display_init(dev); + /* Init TD timing register (power sequence) */ + via_init_td_timing_regs(dev); via_i2c_reg_init(dev_private); ret = via_i2c_init(dev); commit feb32a29ae0e2834b2d08a58de0910dbcebc6141 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jan 21 16:38:01 2022 -0600 drm/openchrome: Remove via_init_crtc_regs() Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_display.c b/drivers/gpu/drm/openchrome/openchrome_display.c index dd0af1922a58..298cd0f6a680 100644 --- a/drivers/gpu/drm/openchrome/openchrome_display.c +++ b/drivers/gpu/drm/openchrome/openchrome_display.c @@ -121,45 +121,6 @@ via_init_td_timing_regs(struct drm_device *dev) } } -static void -via_init_crtc_regs(struct drm_device *dev) -{ - struct pci_dev *pdev = to_pci_dev(dev->dev); - struct openchrome_drm_private *dev_private = dev->dev_private; - - via_unlock_crtc(VGABASE, pdev->device); - - /* always set to 1 */ - svga_wcrt_mask(VGABASE, 0x03, BIT(7), BIT(7)); - /* bits 0 to 7 of line compare */ - vga_wcrt(VGABASE, 0x18, 0xFF); - /* bit 8 of line compare */ - svga_wcrt_mask(VGABASE, 0x07, BIT(4), BIT(4)); - /* bit 9 of line compare */ - svga_wcrt_mask(VGABASE, 0x09, BIT(6), BIT(6)); - /* bit 10 of line compare */ - svga_wcrt_mask(VGABASE, 0x35, BIT(4), BIT(4)); - /* adjust hsync by one character - value 011 */ - svga_wcrt_mask(VGABASE, 0x33, 0x06, 0x07); - /* extend mode always set to e3h */ - vga_wcrt(VGABASE, 0x17, 0xE3); - /* extend mode always set to 0h */ - vga_wcrt(VGABASE, 0x08, 0x00); - /* extend mode always set to 0h */ - vga_wcrt(VGABASE, 0x14, 0x00); - - /* If K8M800, enable Prefetch Mode. */ - if ((pdev->device == PCI_DEVICE_ID_VIA_K8M800) || - (pdev->device == PCI_DEVICE_ID_VIA_K8M890)) - svga_wcrt_mask(VGABASE, 0x33, 0x00, BIT(3)); - - if ((pdev->device == PCI_DEVICE_ID_VIA_CLE266) && - (dev_private->revision == CLE266_REVISION_AX)) - svga_wseq_mask(VGABASE, 0x1A, BIT(1), BIT(1)); - - via_lock_crtc(VGABASE); -} - static void via_display_init(struct drm_device *dev) { @@ -183,9 +144,6 @@ via_display_init(struct drm_device *dev) } else dev_private->spread_spectrum = false; - /* Load fixed CRTC timing registers */ - via_init_crtc_regs(dev); - /* Init TD timing register (power sequence) */ via_init_td_timing_regs(dev); commit cf092ea3d3bb5012f103bd92f575b0045e8de63a Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jan 21 16:37:58 2022 -0600 drm/openchrome: Remove via_set_sync_polarity() Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_display.c b/drivers/gpu/drm/openchrome/openchrome_display.c index 32d814882c1b..dd0af1922a58 100644 --- a/drivers/gpu/drm/openchrome/openchrome_display.c +++ b/drivers/gpu/drm/openchrome/openchrome_display.c @@ -28,50 +28,6 @@ #include "openchrome_drv.h" -void -via_set_sync_polarity(struct drm_encoder *encoder, struct drm_display_mode *mode, - struct drm_display_mode *adjusted_mode) -{ - struct via_encoder *enc = container_of(encoder, struct via_encoder, base); - struct openchrome_drm_private *dev_private = - encoder->dev->dev_private; - u8 syncreg = 0; - - if (adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC) - syncreg |= BIT(6); - if (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC) - syncreg |= BIT(5); - - switch (enc->di_port) { - case VIA_DI_PORT_DVP0: - svga_wcrt_mask(VGABASE, 0x96, syncreg, BIT(6) | BIT(5)); - break; - - case VIA_DI_PORT_DVP1: - svga_wcrt_mask(VGABASE, 0x9B, syncreg, BIT(6) | BIT(5)); - break; - - case VIA_DI_PORT_DFPH: - svga_wcrt_mask(VGABASE, 0x97, syncreg, BIT(6) | BIT(5)); - break; - - case VIA_DI_PORT_DFPL: - svga_wcrt_mask(VGABASE, 0x99, syncreg, BIT(6) | BIT(5)); - break; - - /* For TTL Type LCD */ - case (VIA_DI_PORT_DFPL + VIA_DI_PORT_DVP1): - svga_wcrt_mask(VGABASE, 0x99, syncreg, BIT(6) | BIT(5)); - svga_wcrt_mask(VGABASE, 0x9B, syncreg, BIT(6) | BIT(5)); - break; - - case VIA_DI_PORT_NONE: - default: - DRM_ERROR("No DIPort.\n"); - break; - } -} - void via_encoder_cleanup(struct drm_encoder *encoder) { struct via_encoder *enc = container_of(encoder, struct via_encoder, base); diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index 8b1bca2f411b..e83fe737fffd 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -452,9 +452,6 @@ int openchrome_crtc_init(struct openchrome_drm_private *dev_private, uint32_t index); /* encoders */ -void via_set_sync_polarity(struct drm_encoder *encoder, - struct drm_display_mode *mode, - struct drm_display_mode *adjusted_mode); void via_encoder_cleanup(struct drm_encoder *encoder); /* connectors */ diff --git a/drivers/gpu/drm/openchrome/openchrome_hdmi.c b/drivers/gpu/drm/openchrome/openchrome_hdmi.c index 5332a564426c..b437addc9583 100644 --- a/drivers/gpu/drm/openchrome/openchrome_hdmi.c +++ b/drivers/gpu/drm/openchrome/openchrome_hdmi.c @@ -381,8 +381,6 @@ via_hdmi_enc_mode_set(struct drm_encoder *encoder, break; } } - - via_set_sync_polarity(encoder, mode, adjusted_mode); } static const struct drm_encoder_helper_funcs via_hdmi_enc_helper_funcs = { commit 5551a758f3fea6f142b486846c4754dbdbe697ce Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jan 21 16:37:56 2022 -0600 drm/openchrome: Remove via_hwcursor_init() Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_display.c b/drivers/gpu/drm/openchrome/openchrome_display.c index afbd6708171a..32d814882c1b 100644 --- a/drivers/gpu/drm/openchrome/openchrome_display.c +++ b/drivers/gpu/drm/openchrome/openchrome_display.c @@ -165,26 +165,6 @@ via_init_td_timing_regs(struct drm_device *dev) } } -static void -via_hwcursor_init(struct openchrome_drm_private *dev_private) -{ - /* set 0 as transparent color key */ - VIA_WRITE(PRIM_HI_TRANSCOLOR, 0); - VIA_WRITE(PRIM_HI_FIFO, 0x0D000D0F); - VIA_WRITE(PRIM_HI_INVTCOLOR, 0X00FFFFFF); - VIA_WRITE(V327_HI_INVTCOLOR, 0X00FFFFFF); - - /* set 0 as transparent color key */ - VIA_WRITE(HI_TRANSPARENT_COLOR, 0); - VIA_WRITE(HI_INVTCOLOR, 0X00FFFFFF); - VIA_WRITE(ALPHA_V3_PREFIFO_CONTROL, 0xE0000); - VIA_WRITE(ALPHA_V3_FIFO_CONTROL, 0xE0F0000); - - /* Turn both cursors off. */ - VIA_WRITE(PRIM_HI_CTRL, VIA_READ(PRIM_HI_CTRL) & 0xFFFFFFFA); - VIA_WRITE(HI_CONTROL, VIA_READ(HI_CONTROL) & 0xFFFFFFFA); -} - static void via_init_crtc_regs(struct drm_device *dev) { @@ -281,8 +261,6 @@ via_modeset_init(struct drm_device *dev) goto exit; } - via_hwcursor_init(dev_private); - for (i = 0; i < OPENCHROME_MAX_CRTC; i++) { ret = openchrome_crtc_init(dev_private, i); if (ret) { commit b673621bfef9932921b6ee33e0f499533c02faed Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jan 21 16:37:10 2022 -0600 drm/openchrome: Move via_i2c_reg_init() into openchrome_i2c.c Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_display.c b/drivers/gpu/drm/openchrome/openchrome_display.c index 8dd0725c3fda..afbd6708171a 100644 --- a/drivers/gpu/drm/openchrome/openchrome_display.c +++ b/drivers/gpu/drm/openchrome/openchrome_display.c @@ -165,16 +165,6 @@ via_init_td_timing_regs(struct drm_device *dev) } } -static void via_i2c_reg_init(struct openchrome_drm_private *dev_private) -{ - svga_wseq_mask(VGABASE, 0x31, 0x30, 0x30); - svga_wseq_mask(VGABASE, 0x26, 0x30, 0x30); - vga_wseq(VGABASE, 0x2C, 0xc2); - vga_wseq(VGABASE, 0x3D, 0xc0); - svga_wseq_mask(VGABASE, 0x2C, 0x30, 0x30); - svga_wseq_mask(VGABASE, 0x3D, 0x30, 0x30); -} - static void via_hwcursor_init(struct openchrome_drm_private *dev_private) { diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index 0c209f54cc45..8b1bca2f411b 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -431,6 +431,7 @@ void via_i2c_readbytes(struct i2c_adapter *adapter, void via_i2c_writebytes(struct i2c_adapter *adapter, u8 slave_addr, char offset, u8 *data, unsigned int size); +void via_i2c_reg_init(struct openchrome_drm_private *dev_private); int via_i2c_init(struct drm_device *dev); void via_i2c_exit(void); diff --git a/drivers/gpu/drm/openchrome/openchrome_i2c.c b/drivers/gpu/drm/openchrome/openchrome_i2c.c index 48ec7af8b154..e82bebaf5344 100644 --- a/drivers/gpu/drm/openchrome/openchrome_i2c.c +++ b/drivers/gpu/drm/openchrome/openchrome_i2c.c @@ -180,6 +180,16 @@ via_i2c_writebytes(struct i2c_adapter *adapter, kfree(out_buf); } +void via_i2c_reg_init(struct openchrome_drm_private *dev_private) +{ + svga_wseq_mask(VGABASE, 0x31, 0x30, 0x30); + svga_wseq_mask(VGABASE, 0x26, 0x30, 0x30); + vga_wseq(VGABASE, 0x2C, 0xc2); + vga_wseq(VGABASE, 0x3D, 0xc0); + svga_wseq_mask(VGABASE, 0x2C, 0x30, 0x30); + svga_wseq_mask(VGABASE, 0x3D, 0x30, 0x30); +} + int via_i2c_init(struct drm_device *dev) { int types[] = { SERIAL, SERIAL, GPIO, GPIO, GPIO }; commit 4d927172a06901810c13899b4a6da730b6dce4d5 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jan 21 16:28:21 2022 -0600 drm/openchrome: Remove extern keyword from non-static functions Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_crtc_hw.h b/drivers/gpu/drm/openchrome/openchrome_crtc_hw.h index 9f186f81d918..b38a726c63e3 100644 --- a/drivers/gpu/drm/openchrome/openchrome_crtc_hw.h +++ b/drivers/gpu/drm/openchrome/openchrome_crtc_hw.h @@ -1048,8 +1048,8 @@ via_tmds_set_display_source(void __iomem *regs, u8 displaySource) } -extern void load_register_tables(void __iomem *regbase, struct vga_registers *regs); -extern void load_value_to_registers(void __iomem *regbase, struct vga_registers *regs, +void load_register_tables(void __iomem *regbase, struct vga_registers *regs); +void load_value_to_registers(void __iomem *regbase, struct vga_registers *regs, unsigned int value); #endif /* __CRTC_HW_H__ */ diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index db75e013fe4f..0c209f54cc45 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -369,10 +369,8 @@ extern int openchrome_driver_num_ioctls; extern struct ttm_device_funcs openchrome_bo_driver; int openchrome_vram_detect(struct openchrome_drm_private *dev_private); -extern int openchrome_vram_init( - struct openchrome_drm_private *dev_private); -extern void openchrome_vram_fini( - struct openchrome_drm_private *dev_private); +int openchrome_vram_init(struct openchrome_drm_private *dev_private); +void openchrome_vram_fini(struct openchrome_drm_private *dev_private); int openchrome_mmio_init(struct openchrome_drm_private *dev_private); void openchrome_mmio_fini(struct openchrome_drm_private *dev_private); void openchrome_graphics_unlock( @@ -422,60 +420,60 @@ extern const uint32_t openchrome_cursor_formats[]; extern const unsigned int openchrome_cursor_formats_size; /* display */ -extern int via_modeset_init(struct drm_device *dev); -extern void via_modeset_fini(struct drm_device *dev); +int via_modeset_init(struct drm_device *dev); +void via_modeset_fini(struct drm_device *dev); /* i2c */ -extern struct i2c_adapter *via_find_ddc_bus(int port); -extern void via_i2c_readbytes(struct i2c_adapter *adapter, +struct i2c_adapter *via_find_ddc_bus(int port); +void via_i2c_readbytes(struct i2c_adapter *adapter, u8 slave_addr, char offset, u8 *buffer, unsigned int size); -extern void via_i2c_writebytes(struct i2c_adapter *adapter, +void via_i2c_writebytes(struct i2c_adapter *adapter, u8 slave_addr, char offset, u8 *data, unsigned int size); -extern int via_i2c_init(struct drm_device *dev); -extern void via_i2c_exit(void); +int via_i2c_init(struct drm_device *dev); +void via_i2c_exit(void); /* clock */ -extern u32 via_get_clk_value(struct drm_device *dev, u32 clk); -extern void via_set_vclock(struct drm_crtc *crtc, u32 clk); +u32 via_get_clk_value(struct drm_device *dev, u32 clk); +void via_set_vclock(struct drm_crtc *crtc, u32 clk); /* framebuffers */ void openchrome_mode_config_init( struct openchrome_drm_private *dev_private); -extern int openchrome_fb_init(struct drm_device *dev); -extern void openchrome_fb_fini(struct drm_device *dev); +int openchrome_fb_init(struct drm_device *dev); +void openchrome_fb_fini(struct drm_device *dev); /* crtc */ -extern void via_load_crtc_pixel_timing(struct drm_crtc *crtc, +void via_load_crtc_pixel_timing(struct drm_crtc *crtc, struct drm_display_mode *mode); int openchrome_crtc_init(struct openchrome_drm_private *dev_private, uint32_t index); /* encoders */ -extern void via_set_sync_polarity(struct drm_encoder *encoder, +void via_set_sync_polarity(struct drm_encoder *encoder, struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode); -extern void via_encoder_cleanup(struct drm_encoder *encoder); +void via_encoder_cleanup(struct drm_encoder *encoder); /* connectors */ -extern int via_connector_mode_valid(struct drm_connector *connector, +int via_connector_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode); -extern void via_connector_destroy(struct drm_connector *connector); - -extern void via_analog_probe(struct drm_device *dev); -extern bool openchrome_vt1632_probe(struct i2c_adapter *i2c_bus); -extern bool openchrome_sii164_probe(struct i2c_adapter *i2c_bus); -extern void openchrome_ext_dvi_probe(struct drm_device *dev); -extern void via_tmds_probe(struct drm_device *dev); -extern void via_fp_probe(struct drm_device *dev); - -extern void via_hdmi_init(struct drm_device *dev, u32 di_port); -extern void via_analog_init(struct drm_device *dev); -extern void openchrome_vt1632_init(struct drm_device *dev); -extern void openchrome_sii164_init(struct drm_device *dev); -extern void openchrome_ext_dvi_init(struct drm_device *dev); -extern void via_tmds_init(struct drm_device *dev); -extern void via_fp_init(struct drm_device *dev); +void via_connector_destroy(struct drm_connector *connector); + +void via_analog_probe(struct drm_device *dev); +bool openchrome_vt1632_probe(struct i2c_adapter *i2c_bus); +bool openchrome_sii164_probe(struct i2c_adapter *i2c_bus); +void openchrome_ext_dvi_probe(struct drm_device *dev); +void via_tmds_probe(struct drm_device *dev); +void via_fp_probe(struct drm_device *dev); + +void via_hdmi_init(struct drm_device *dev, u32 di_port); +void via_analog_init(struct drm_device *dev); +void openchrome_vt1632_init(struct drm_device *dev); +void openchrome_sii164_init(struct drm_device *dev); +void openchrome_ext_dvi_init(struct drm_device *dev); +void via_tmds_init(struct drm_device *dev); +void via_fp_init(struct drm_device *dev); #endif /* _OPENCHROME_DRV_H */