Lines Matching defs:bus

10 /* The message bus to/from the firmware is a ring buffer in PCI address
15 struct tmComResBusInfo *b = &dev->bus;
44 struct tmComResBusInfo *b = &dev->bus;
46 dprintk(DBGLVL_BUS, "Dumping the bus structure:\n");
69 /* Intensionally throw a BUG() if the state of the message bus looks corrupt */
72 struct tmComResBusInfo *b = &dev->bus;
88 saa_debug = 0xffff; /* Ensure we get the bus dump */
90 saa_debug = 1024; /* Ensure we get the bus dump */
110 * Places a command or a response on the bus. The implementation does not
112 * bus depending on the bus information given in the struct tmComResBusInfo
113 * structure. If the command or response does not fit into the bus ring
123 struct tmComResBusInfo *bus = &dev->bus;
138 if (msg->size > dev->bus.m_wMaxReqSize) {
139 printk(KERN_ERR "%s() Exceeded dev->bus.m_wMaxReqSize\n",
149 /* Lock the bus from any other access */
150 mutex_lock(&bus->lock);
155 curr_srp = saa7164_readl(bus->m_dwSetReadPos);
156 curr_swp = saa7164_readl(bus->m_dwSetWritePos);
164 free_write_space = (curr_srp + bus->m_dwSizeSetRing) - curr_swp;
175 /* Process the msg and write the content onto the bus */
179 printk(KERN_ERR "%s() bus timeout\n", __func__);
189 curr_srp = saa7164_readl(bus->m_dwSetReadPos);
197 free_write_space = (curr_srp + bus->m_dwSizeSetRing) -
206 dprintk(DBGLVL_BUS, "%s() bus->m_dwSizeSetRing = %x\n", __func__,
207 bus->m_dwSizeSetRing);
222 if (new_swp > bus->m_dwSizeSetRing) {
225 new_swp -= bus->m_dwSizeSetRing;
227 space_rem = bus->m_dwSizeSetRing - curr_swp;
239 memcpy_toio(bus->m_pdwSetRing + curr_swp, msg, space_rem);
240 memcpy_toio(bus->m_pdwSetRing, (u8 *)msg + space_rem,
243 memcpy_toio(bus->m_pdwSetRing + sizeof(*msg) - space_rem,
250 memcpy_toio(bus->m_pdwSetRing + curr_swp, msg, sizeof(*msg));
251 memcpy_toio(bus->m_pdwSetRing, buf, size);
255 memcpy_toio(bus->m_pdwSetRing + curr_swp, msg, sizeof(*msg));
257 memcpy_toio(bus->m_pdwSetRing + curr_swp +
260 memcpy_toio(bus->m_pdwSetRing, (u8 *)buf +
267 } /* (new_swp > bus->m_dwSizeSetRing) */
272 memcpy_toio(bus->m_pdwSetRing + curr_swp, msg, sizeof(*msg));
273 memcpy_toio(bus->m_pdwSetRing + curr_swp + sizeof(*msg), buf,
279 /* Update the bus write position */
280 saa7164_writel(bus->m_dwSetWritePos, new_swp);
290 mutex_unlock(&bus->lock);
296 * Receive a command or a response from the bus. The implementation does not
298 * depending on the bus information given in the struct tmComResBusInfo
308 struct tmComResBusInfo *bus = &dev->bus;
319 if (msg->size > dev->bus.m_wMaxReqSize) {
320 printk(KERN_ERR "%s() Exceeded dev->bus.m_wMaxReqSize\n",
332 mutex_lock(&bus->lock);
334 /* Peek the bus to see if a msg exists, if it's not what we're expecting
335 * then return cleanly else read the message from the bus.
337 curr_gwp = saa7164_readl(bus->m_dwGetWritePos);
338 curr_grp = saa7164_readl(bus->m_dwGetReadPos);
354 write_distance = curr_gwp + bus->m_dwSizeGetRing - curr_grp;
364 if (new_grp > bus->m_dwSizeGetRing) {
367 new_grp -= bus->m_dwSizeGetRing;
368 space_rem = bus->m_dwSizeGetRing - curr_grp;
370 memcpy_fromio(&msg_tmp, bus->m_pdwGetRing + curr_grp, space_rem);
371 memcpy_fromio((u8 *)&msg_tmp + space_rem, bus->m_pdwGetRing,
376 memcpy_fromio(&msg_tmp, bus->m_pdwGetRing + curr_grp, bytes_to_read);
402 /* Get the actual command and response from the bus */
413 write_distance = curr_gwp + bus->m_dwSizeGetRing - curr_grp;
416 printk(KERN_ERR "%s() Invalid bus state, missing msg or mangled ring, faulty H/W / bad code?\n",
424 if (new_grp > bus->m_dwSizeGetRing) {
427 new_grp -= bus->m_dwSizeGetRing;
428 space_rem = bus->m_dwSizeGetRing - curr_grp;
432 memcpy_fromio(buf, bus->m_pdwGetRing + sizeof(*msg) -
437 memcpy_fromio(buf, bus->m_pdwGetRing, buf_size);
441 memcpy_fromio(buf, bus->m_pdwGetRing + curr_grp +
444 bus->m_pdwGetRing, bytes_to_read -
453 memcpy_fromio(buf, bus->m_pdwGetRing + curr_grp + sizeof(*msg),
458 saa7164_writel(bus->m_dwGetReadPos, new_grp);
463 mutex_unlock(&bus->lock);