> -----Original Message----- > From: Kumar Gala [mailto:[EMAIL PROTECTED] > Sent: Thursday, February 08, 2007 1:58 PM > To: Li Yang-r58472 > Cc: Tabi Timur-B04825; netdev@vger.kernel.org; [EMAIL PROTECTED] > Subject: Re: [PATCH 1/4] ucc_geth: Change private immrbar_virt_to_phys to generic > iopa > > > On Feb 7, 2007, at 11:52 PM, Li Yang-r58472 wrote: > > >> -----Original Message----- > >> From: Timur Tabi [mailto:[EMAIL PROTECTED] > >> Sent: Thursday, February 08, 2007 1:03 AM > >> To: Kumar Gala > >> Cc: Li Yang-r58472; netdev@vger.kernel.org; [EMAIL PROTECTED] > >> Subject: Re: [PATCH 1/4] ucc_geth: Change private > >> immrbar_virt_to_phys > > to generic > >> iopa > >> > >> Kumar Gala wrote: > >> > >>> If its been mapped with ioremap() you know the physical address > > already > >>> so why do you need iopa(). > >> > >> That's what the original function immrbar_virt_to_phys() does. We're > > trying to > >> get rid of it, because we thought is redundant with iopa(). > >> > >> static inline unsigned long immrbar_virt_to_phys(volatile void * > > address) > >> { > >> if ( ((u32)address >= (u32)qe_immr) && > >> ((u32)address < ((u32)qe_immr + QE_IMMAP_SIZE)) > > ) > >> return (unsigned long)(address - (u32)qe_immr + > >> (u32)get_qe_base()); > >> return (unsigned long)virt_to_phys(address); > >> } > >> > >> get_qe_base() does a search of the OF tree the first time it's > >> called. > >> > >> Here's the code that calls immrbar_virt_to_phys(): > >> > >> out_be32(&ugeth->p_send_q_mem_reg->sqqd[i].bd_ring_base, > >> (u32) immrbar_virt_to_phys(ugeth-> > >> p_tx_bd_ring[i])); > >> > >> > >> Would it be better to replace this code with something like this: > >> > >> out_be32(&ugeth->p_send_q_mem_reg->sqqd[i].bd_ring_base, > >> get_qe_base() + ((void *) ugeth->p_tx_bd_ring[i] - (void *) > > qe_immr)); > > > > No, we don't know if the BD ring is in MURAM or main memory as it is > > configurable. iopa() is best choice to handle both case, IMHO. > > Does MURAM behave differently than normal memory?
MURAM is a mmio region so it don't share the characteristic of main memory that phy_addr = virt_addr - PAGE_OFFSET. While they can both be mapped through page table using iopa(). - Leo - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html