Home | History | Annotate | Line # | Download | only in i915
      1  1.3  riastrad /*	$NetBSD: intel_sideband.h,v 1.3 2021/12/19 11:38:04 riastradh Exp $	*/
      2  1.1  riastrad 
      3  1.1  riastrad /* SPDX-License-Identifier: MIT */
      4  1.1  riastrad 
      5  1.1  riastrad #ifndef _INTEL_SIDEBAND_H_
      6  1.1  riastrad #define _INTEL_SIDEBAND_H_
      7  1.1  riastrad 
      8  1.1  riastrad #include <linux/bitops.h>
      9  1.1  riastrad #include <linux/types.h>
     10  1.1  riastrad 
     11  1.3  riastrad #include <sys/file.h>
     12  1.3  riastrad #define	pipe	pipe_drmhack	/* see intel_display.h */
     13  1.3  riastrad 
     14  1.1  riastrad struct drm_i915_private;
     15  1.1  riastrad enum pipe;
     16  1.1  riastrad 
     17  1.1  riastrad enum intel_sbi_destination {
     18  1.1  riastrad 	SBI_ICLK,
     19  1.1  riastrad 	SBI_MPHY,
     20  1.1  riastrad };
     21  1.1  riastrad 
     22  1.1  riastrad enum {
     23  1.1  riastrad 	VLV_IOSF_SB_BUNIT,
     24  1.1  riastrad 	VLV_IOSF_SB_CCK,
     25  1.1  riastrad 	VLV_IOSF_SB_CCU,
     26  1.1  riastrad 	VLV_IOSF_SB_DPIO,
     27  1.1  riastrad 	VLV_IOSF_SB_FLISDSI,
     28  1.1  riastrad 	VLV_IOSF_SB_GPIO,
     29  1.1  riastrad 	VLV_IOSF_SB_NC,
     30  1.1  riastrad 	VLV_IOSF_SB_PUNIT,
     31  1.1  riastrad };
     32  1.1  riastrad 
     33  1.1  riastrad void vlv_iosf_sb_get(struct drm_i915_private *i915, unsigned long ports);
     34  1.1  riastrad u32 vlv_iosf_sb_read(struct drm_i915_private *i915, u8 port, u32 reg);
     35  1.1  riastrad void vlv_iosf_sb_write(struct drm_i915_private *i915,
     36  1.1  riastrad 		       u8 port, u32 reg, u32 val);
     37  1.1  riastrad void vlv_iosf_sb_put(struct drm_i915_private *i915, unsigned long ports);
     38  1.1  riastrad 
     39  1.1  riastrad static inline void vlv_bunit_get(struct drm_i915_private *i915)
     40  1.1  riastrad {
     41  1.1  riastrad 	vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_BUNIT));
     42  1.1  riastrad }
     43  1.1  riastrad 
     44  1.1  riastrad u32 vlv_bunit_read(struct drm_i915_private *i915, u32 reg);
     45  1.1  riastrad void vlv_bunit_write(struct drm_i915_private *i915, u32 reg, u32 val);
     46  1.1  riastrad 
     47  1.1  riastrad static inline void vlv_bunit_put(struct drm_i915_private *i915)
     48  1.1  riastrad {
     49  1.1  riastrad 	vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_BUNIT));
     50  1.1  riastrad }
     51  1.1  riastrad 
     52  1.1  riastrad static inline void vlv_cck_get(struct drm_i915_private *i915)
     53  1.1  riastrad {
     54  1.1  riastrad 	vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_CCK));
     55  1.1  riastrad }
     56  1.1  riastrad 
     57  1.1  riastrad u32 vlv_cck_read(struct drm_i915_private *i915, u32 reg);
     58  1.1  riastrad void vlv_cck_write(struct drm_i915_private *i915, u32 reg, u32 val);
     59  1.1  riastrad 
     60  1.1  riastrad static inline void vlv_cck_put(struct drm_i915_private *i915)
     61  1.1  riastrad {
     62  1.1  riastrad 	vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_CCK));
     63  1.1  riastrad }
     64  1.1  riastrad 
     65  1.1  riastrad static inline void vlv_ccu_get(struct drm_i915_private *i915)
     66  1.1  riastrad {
     67  1.1  riastrad 	vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_CCU));
     68  1.1  riastrad }
     69  1.1  riastrad 
     70  1.1  riastrad u32 vlv_ccu_read(struct drm_i915_private *i915, u32 reg);
     71  1.1  riastrad void vlv_ccu_write(struct drm_i915_private *i915, u32 reg, u32 val);
     72  1.1  riastrad 
     73  1.1  riastrad static inline void vlv_ccu_put(struct drm_i915_private *i915)
     74  1.1  riastrad {
     75  1.1  riastrad 	vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_CCU));
     76  1.1  riastrad }
     77  1.1  riastrad 
     78  1.1  riastrad static inline void vlv_dpio_get(struct drm_i915_private *i915)
     79  1.1  riastrad {
     80  1.1  riastrad 	vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_DPIO));
     81  1.1  riastrad }
     82  1.1  riastrad 
     83  1.1  riastrad u32 vlv_dpio_read(struct drm_i915_private *i915, enum pipe pipe, int reg);
     84  1.1  riastrad void vlv_dpio_write(struct drm_i915_private *i915,
     85  1.1  riastrad 		    enum pipe pipe, int reg, u32 val);
     86  1.1  riastrad 
     87  1.1  riastrad static inline void vlv_dpio_put(struct drm_i915_private *i915)
     88  1.1  riastrad {
     89  1.1  riastrad 	vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_DPIO));
     90  1.1  riastrad }
     91  1.1  riastrad 
     92  1.1  riastrad static inline void vlv_flisdsi_get(struct drm_i915_private *i915)
     93  1.1  riastrad {
     94  1.1  riastrad 	vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_FLISDSI));
     95  1.1  riastrad }
     96  1.1  riastrad 
     97  1.1  riastrad u32 vlv_flisdsi_read(struct drm_i915_private *i915, u32 reg);
     98  1.1  riastrad void vlv_flisdsi_write(struct drm_i915_private *i915, u32 reg, u32 val);
     99  1.1  riastrad 
    100  1.1  riastrad static inline void vlv_flisdsi_put(struct drm_i915_private *i915)
    101  1.1  riastrad {
    102  1.1  riastrad 	vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_FLISDSI));
    103  1.1  riastrad }
    104  1.1  riastrad 
    105  1.1  riastrad static inline void vlv_nc_get(struct drm_i915_private *i915)
    106  1.1  riastrad {
    107  1.1  riastrad 	vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_NC));
    108  1.1  riastrad }
    109  1.1  riastrad 
    110  1.1  riastrad u32 vlv_nc_read(struct drm_i915_private *i915, u8 addr);
    111  1.1  riastrad 
    112  1.1  riastrad static inline void vlv_nc_put(struct drm_i915_private *i915)
    113  1.1  riastrad {
    114  1.1  riastrad 	vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_NC));
    115  1.1  riastrad }
    116  1.1  riastrad 
    117  1.1  riastrad static inline void vlv_punit_get(struct drm_i915_private *i915)
    118  1.1  riastrad {
    119  1.1  riastrad 	vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_PUNIT));
    120  1.1  riastrad }
    121  1.1  riastrad 
    122  1.1  riastrad u32 vlv_punit_read(struct drm_i915_private *i915, u32 addr);
    123  1.1  riastrad int vlv_punit_write(struct drm_i915_private *i915, u32 addr, u32 val);
    124  1.1  riastrad 
    125  1.1  riastrad static inline void vlv_punit_put(struct drm_i915_private *i915)
    126  1.1  riastrad {
    127  1.1  riastrad 	vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_PUNIT));
    128  1.1  riastrad }
    129  1.1  riastrad 
    130  1.1  riastrad u32 intel_sbi_read(struct drm_i915_private *i915, u16 reg,
    131  1.1  riastrad 		   enum intel_sbi_destination destination);
    132  1.1  riastrad void intel_sbi_write(struct drm_i915_private *i915, u16 reg, u32 value,
    133  1.1  riastrad 		     enum intel_sbi_destination destination);
    134  1.1  riastrad 
    135  1.1  riastrad int sandybridge_pcode_read(struct drm_i915_private *i915, u32 mbox,
    136  1.1  riastrad 			   u32 *val, u32 *val1);
    137  1.1  riastrad int sandybridge_pcode_write_timeout(struct drm_i915_private *i915, u32 mbox,
    138  1.1  riastrad 				    u32 val, int fast_timeout_us,
    139  1.1  riastrad 				    int slow_timeout_ms);
    140  1.1  riastrad #define sandybridge_pcode_write(i915, mbox, val)	\
    141  1.1  riastrad 	sandybridge_pcode_write_timeout(i915, mbox, val, 500, 0)
    142  1.1  riastrad 
    143  1.1  riastrad int skl_pcode_request(struct drm_i915_private *i915, u32 mbox, u32 request,
    144  1.1  riastrad 		      u32 reply_mask, u32 reply, int timeout_base_ms);
    145  1.1  riastrad 
    146  1.1  riastrad #endif /* _INTEL_SIDEBAND_H */
    147