/* * Copies the given data to the given offset in card memory, reversing the word order of each 32-bit dword. * This can be used to swap left/right channels in an audio stream, for example. This function will truncate * length to a multiple of four. */ void tl880_memcpy_swahw32(struct tl880_dev *tl880dev, void *src, u32 addr, size_t length) /* {{{ */ { u32 i; u32 *src32 = src; static int printme = 1; if(CHECK_NULL(tl880dev) || CHECK_NULL(src)) { return; } if(addr > tl880dev->memlen) { return; } if(addr + length > tl880dev->memlen) { length = tl880dev->memlen - addr; } if(debug > 1) { printk(KERN_DEBUG "tl880: memcpy_swahw32 to 0x%07x length 0x%06lx\n", addr, length); } for(i = addr; i < addr + length; i += 4) { if(printme) { printk(KERN_DEBUG "writing 0x%08x to 0x%07x\n", src32[i/4], i); } tl880_write_memory(tl880dev, i, swahw32(src32[i / 4])); } printme = 0; } /* }}} */
/* * Crude but fast random-number generator. Uses a linear congruential * generator, with occasional help from cpu_clock(). */ static unsigned long rcu_random(struct rcu_random_state *rrsp) { if (--rrsp->rrs_count < 0) { rrsp->rrs_state += (unsigned long)local_clock(); rrsp->rrs_count = RCU_RANDOM_REFRESH; } rrsp->rrs_state = rrsp->rrs_state * RCU_RANDOM_MULT + RCU_RANDOM_ADD; return swahw32(rrsp->rrs_state); }
/* * Crude but fast random-number generator. Uses a linear congruential * generator, with occasional help from cpu_clock(). */ static unsigned long rcu_random(struct rcu_random_state *rrsp) { if (--rrsp->rrs_count < 0) { rrsp->rrs_state += (unsigned long)cpu_clock(raw_smp_processor_id()); rrsp->rrs_count = RCU_RANDOM_REFRESH; } rrsp->rrs_state = rrsp->rrs_state * RCU_RANDOM_MULT + RCU_RANDOM_ADD; return swahw32(rrsp->rrs_state); }