I had the same issue. In my case I moved fsl_otp to be a module so it's error message could be read conveniently. The error I saw in dmesg after modprobing the fsl_otp module was this:
Error: Driver 'imx-ocotp' is already registered, aborting...
If you grep for imx-ocotp on the kernel source you should find two instances:
The second instance is in a function named imx_add_otp(), which has a wrapping #define, imx6q_add_otp() in case of the i.MX6.
I put a call for this function where the call for other components are made (imx6q_add_*) inside arch/arm/mach-mx6/board-mx6q_arm2.c (you may use a different board-mx6q_ file, depending on the hardware you use).
This fixed the issue, now fsl_otp runs and opens the /sys/fsl_otp dir.