Hi, On Mon, Dec 15, 2014 at 01:29:28PM -0800, David Daney wrote: > On 12/15/2014 01:24 PM, Aaro Koskinen wrote: > >On Mon, Dec 15, 2014 at 09:03:20PM +0300, Aleksey Makarov wrote: > >> if (current_cpu_type() == CPU_CAVIUM_OCTEON2) { > >> union cvmx_mio_rst_boot rst_boot; > >>+ > >> rst_boot.u64 = cvmx_read_csr(CVMX_MIO_RST_BOOT); > >> rdiv = rst_boot.s.c_mul; /* CPU clock */ > >> sdiv = rst_boot.s.pnr_mul; /* I/O clock */ > >> f = (0x8000000000000000ull / sdiv) * 2; > >>+ } else if (current_cpu_type() == CPU_CAVIUM_OCTEON3) { > >>+ union cvmx_rst_boot rst_boot; > >>+ > >>+ rst_boot.u64 = cvmx_read_csr(CVMX_RST_BOOT); > >>+ rdiv = rst_boot.s.c_mul; /* CPU clock */ > >>+ sdiv = rst_boot.s.pnr_mul; /* I/O clock */ > >>+ f = (0x8000000000000000ull / sdiv) * 2; > >> } > > > >The f = ... part could be moved outside the if blocks to avoid copy paste. > > > > No, If you look at the rest of the file, you will find that there are checks > in the form: > > if (f != 0) ... > > There is a reason that we leave f with its default value of zero in some of > the cases. Right, sorry, I overlooked the fact that both of those if conditions can be false. A.