Hello Nathan,

On 2019/1/30 5:46, Nathan Chancellor wrote:
On arm little endian allyesconfig:

   ld.lld: error: undefined symbol: __aeabi_uldivmod
   >>> referenced by meson_nand.c
   >>> mtd/nand/raw/meson_nand.o:(meson_nfc_setup_data_interface) in archive 
drivers/built-in.a

The dividend tBERS_max is u64, meaning we need to use DIV_ROUND_UP_ULL
(which wraps do_div) to prevent the compiler from emitting
__aebi_uldivmod.


ok. thanks for your time.

Fixes: 2d570b34b41a ("mtd: rawnand: meson: add support for Amlogic NAND flash 
controller")
Signed-off-by: Nathan Chancellor <natechancel...@gmail.com>
---
  drivers/mtd/nand/raw/meson_nand.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/nand/raw/meson_nand.c 
b/drivers/mtd/nand/raw/meson_nand.c
index e858d58d97b0..6f12a96195d1 100644
--- a/drivers/mtd/nand/raw/meson_nand.c
+++ b/drivers/mtd/nand/raw/meson_nand.c
@@ -1116,8 +1116,8 @@ int meson_nfc_setup_data_interface(struct nand_chip 
*nand, int csline,
                                       div * NFC_CLK_CYCLE);
        meson_chip->tadl = DIV_ROUND_UP(PSEC_TO_NSEC(timings->tADL_min),
                                        div * NFC_CLK_CYCLE);
-       tbers_clocks = DIV_ROUND_UP(PSEC_TO_NSEC(timings->tBERS_max),
-                                   div * NFC_CLK_CYCLE);
+       tbers_clocks = DIV_ROUND_UP_ULL(PSEC_TO_NSEC(timings->tBERS_max),
+                                       div * NFC_CLK_CYCLE);
ok.
        meson_chip->tbers_max = ilog2(tbers_clocks);
        if (!is_power_of_2(tbers_clocks))
                meson_chip->tbers_max++;

Reply via email to