2010/2/17 Rafał Miłecki <[email protected]>:
> Ported from DDX
>
> Signed-off-by: Rafał Miłecki <[email protected]>
> ---
> drivers/gpu/drm/radeon/r300.c | 5 ++++-
> drivers/gpu/drm/radeon/radeon.h | 14 ++++++++++++++
> drivers/gpu/drm/radeon/radeon_asic.h | 4 ++--
> drivers/gpu/drm/radeon/radeon_pm.c | 2 ++
> 4 files changed, 22 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c
> index 654aca1..cd92880 100644
> --- a/drivers/gpu/drm/radeon/r300.c
> +++ b/drivers/gpu/drm/radeon/r300.c
> @@ -593,7 +593,10 @@ int rv370_get_pcie_lanes(struct radeon_device *rdev)
>
> /* FIXME wait for idle */
>
> - link_width_cntl = RREG32_PCIE(RADEON_PCIE_LC_LINK_WIDTH_CNTL);
> + if (rdev->family < CHIP_R600)
> + link_width_cntl = RREG32_PCIE(RADEON_PCIE_LC_LINK_WIDTH_CNTL);
> + else
> + link_width_cntl =
> RREG32_PCIE_P(RADEON_PCIE_LC_LINK_WIDTH_CNTL);
>
> switch ((link_width_cntl & RADEON_PCIE_LC_LINK_WIDTH_RD_MASK) >>
> RADEON_PCIE_LC_LINK_WIDTH_RD_SHIFT) {
> case RADEON_PCIE_LC_LINK_WIDTH_X0:
> diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
> index b533411..db98924 100644
> --- a/drivers/gpu/drm/radeon/radeon.h
> +++ b/drivers/gpu/drm/radeon/radeon.h
> @@ -1009,6 +1009,8 @@ static inline void r100_mm_wreg(struct radeon_device
> *rdev, uint32_t reg, uint32
> #define WREG32_MC(reg, v) rdev->mc_wreg(rdev, (reg), (v))
> #define RREG32_PCIE(reg) rv370_pcie_rreg(rdev, (reg))
> #define WREG32_PCIE(reg, v) rv370_pcie_wreg(rdev, (reg), (v))
> +#define RREG32_PCIE_P(reg) r600_pcie_port_rreg(rdev, (reg))
> +#define WREG32_PCIE_P(reg, v) r600_pcie_port_wreg(rdev, (reg), (v))
> #define WREG32_P(reg, val, mask) \
> do { \
> uint32_t tmp_ = RREG32(reg); \
> @@ -1043,6 +1045,18 @@ static inline void rv370_pcie_wreg(struct
> radeon_device *rdev, uint32_t reg, uin
> WREG32(RADEON_PCIE_DATA, (v));
> }
>
> +static inline uint32_t r600_pcie_port_rreg(struct radeon_device *rdev,
> uint32_t reg)
> +{
> + WREG32(R600_PCIE_PORT_INDEX, ((reg) & rdev->pcie_reg_mask));
> + return RREG32(R600_PCIE_PORT_DATA);
> +}
> +
> +static inline void r600_pcie_port_wreg(struct radeon_device *rdev, uint32_t
> reg, uint32_t v)
> +{
> + WREG32(R600_PCIE_PORT_INDEX, ((reg) & rdev->pcie_reg_mask));
> + WREG32(R600_PCIE_PORT_DATA, (v));
> +}
> +
These already exist in r600.c:
r600_pciep_rreg
r600_pciep_wreg
Alex
> void r100_pll_errata_after_index(struct radeon_device *rdev);
>
>
> diff --git a/drivers/gpu/drm/radeon/radeon_asic.h
> b/drivers/gpu/drm/radeon/radeon_asic.h
> index 4b0cb67..735d594 100644
> --- a/drivers/gpu/drm/radeon/radeon_asic.h
> +++ b/drivers/gpu/drm/radeon/radeon_asic.h
> @@ -547,7 +547,7 @@ static struct radeon_asic r600_asic = {
> .set_engine_clock = &radeon_atom_set_engine_clock,
> .get_memory_clock = &radeon_atom_get_memory_clock,
> .set_memory_clock = &radeon_atom_set_memory_clock,
> - .get_pcie_lanes = NULL,
> + .get_pcie_lanes = &rv370_get_pcie_lanes,
> .set_pcie_lanes = NULL,
> .set_clock_gating = NULL,
> .set_surface_reg = r600_set_surface_reg,
> @@ -593,7 +593,7 @@ static struct radeon_asic rv770_asic = {
> .set_engine_clock = &radeon_atom_set_engine_clock,
> .get_memory_clock = &radeon_atom_get_memory_clock,
> .set_memory_clock = &radeon_atom_set_memory_clock,
> - .get_pcie_lanes = NULL,
> + .get_pcie_lanes = &rv370_get_pcie_lanes,
> .set_pcie_lanes = NULL,
> .set_clock_gating = &radeon_atom_set_clock_gating,
> .set_surface_reg = r600_set_surface_reg,
> diff --git a/drivers/gpu/drm/radeon/radeon_pm.c
> b/drivers/gpu/drm/radeon/radeon_pm.c
> index 8426aff..3b00202 100644
> --- a/drivers/gpu/drm/radeon/radeon_pm.c
> +++ b/drivers/gpu/drm/radeon/radeon_pm.c
> @@ -441,6 +441,8 @@ static int radeon_debugfs_pm_info(struct seq_file *m,
> void *data)
> seq_printf(m, "default memory clock: %u0 kHz\n",
> rdev->clock.default_mclk);
> if (rdev->asic->get_memory_clock)
> seq_printf(m, "current memory clock: %u0 kHz\n",
> radeon_get_memory_clock(rdev));
> + if (rdev->asic->get_pcie_lanes)
> + seq_printf(m, "PCIE lanes: %d\n",
> radeon_get_pcie_lanes(rdev));
>
> return 0;
> }
> --
> 1.6.4.2
>
>
> ------------------------------------------------------------------------------
> Download Intel® Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> --
> _______________________________________________
> Dri-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/dri-devel
>
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
--
_______________________________________________
Dri-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dri-devel