diff options
Diffstat (limited to 'drivers/char/xilinx_hwicap/fifo_icap.c')
-rw-r--r-- | drivers/char/xilinx_hwicap/fifo_icap.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/drivers/char/xilinx_hwicap/fifo_icap.c b/drivers/char/xilinx_hwicap/fifo_icap.c index 6f45dbd47125..776b50528478 100644 --- a/drivers/char/xilinx_hwicap/fifo_icap.c +++ b/drivers/char/xilinx_hwicap/fifo_icap.c | |||
@@ -78,13 +78,6 @@ | |||
78 | #define XHI_CR_READ_MASK 0x00000002 /* Read from ICAP to FIFO */ | 78 | #define XHI_CR_READ_MASK 0x00000002 /* Read from ICAP to FIFO */ |
79 | #define XHI_CR_WRITE_MASK 0x00000001 /* Write from FIFO to ICAP */ | 79 | #define XHI_CR_WRITE_MASK 0x00000001 /* Write from FIFO to ICAP */ |
80 | 80 | ||
81 | /* Status Register (SR) */ | ||
82 | #define XHI_SR_CFGERR_N_MASK 0x00000100 /* Config Error Mask */ | ||
83 | #define XHI_SR_DALIGN_MASK 0x00000080 /* Data Alignment Mask */ | ||
84 | #define XHI_SR_RIP_MASK 0x00000040 /* Read back Mask */ | ||
85 | #define XHI_SR_IN_ABORT_N_MASK 0x00000020 /* Select Map Abort Mask */ | ||
86 | #define XHI_SR_DONE_MASK 0x00000001 /* Done bit Mask */ | ||
87 | |||
88 | 81 | ||
89 | #define XHI_WFO_MAX_VACANCY 1024 /* Max Write FIFO Vacancy, in words */ | 82 | #define XHI_WFO_MAX_VACANCY 1024 /* Max Write FIFO Vacancy, in words */ |
90 | #define XHI_RFO_MAX_OCCUPANCY 256 /* Max Read FIFO Occupancy, in words */ | 83 | #define XHI_RFO_MAX_OCCUPANCY 256 /* Max Read FIFO Occupancy, in words */ |
@@ -152,13 +145,35 @@ static inline void fifo_icap_start_readback(struct hwicap_drvdata *drvdata) | |||
152 | } | 145 | } |
153 | 146 | ||
154 | /** | 147 | /** |
148 | * fifo_icap_get_status - Get the contents of the status register. | ||
149 | * @drvdata: a pointer to the drvdata. | ||
150 | * | ||
151 | * The status register contains the ICAP status and the done bit. | ||
152 | * | ||
153 | * D8 - cfgerr | ||
154 | * D7 - dalign | ||
155 | * D6 - rip | ||
156 | * D5 - in_abort_l | ||
157 | * D4 - Always 1 | ||
158 | * D3 - Always 1 | ||
159 | * D2 - Always 1 | ||
160 | * D1 - Always 1 | ||
161 | * D0 - Done bit | ||
162 | **/ | ||
163 | u32 fifo_icap_get_status(struct hwicap_drvdata *drvdata) | ||
164 | { | ||
165 | u32 status = in_be32(drvdata->base_address + XHI_SR_OFFSET); | ||
166 | dev_dbg(drvdata->dev, "Getting status = %x\n", status); | ||
167 | return status; | ||
168 | } | ||
169 | |||
170 | /** | ||
155 | * fifo_icap_busy - Return true if the ICAP is still processing a transaction. | 171 | * fifo_icap_busy - Return true if the ICAP is still processing a transaction. |
156 | * @drvdata: a pointer to the drvdata. | 172 | * @drvdata: a pointer to the drvdata. |
157 | **/ | 173 | **/ |
158 | static inline u32 fifo_icap_busy(struct hwicap_drvdata *drvdata) | 174 | static inline u32 fifo_icap_busy(struct hwicap_drvdata *drvdata) |
159 | { | 175 | { |
160 | u32 status = in_be32(drvdata->base_address + XHI_SR_OFFSET); | 176 | u32 status = in_be32(drvdata->base_address + XHI_SR_OFFSET); |
161 | dev_dbg(drvdata->dev, "Getting status = %x\n", status); | ||
162 | return (status & XHI_SR_DONE_MASK) ? 0 : 1; | 177 | return (status & XHI_SR_DONE_MASK) ? 0 : 1; |
163 | } | 178 | } |
164 | 179 | ||