Accessing driver functions under linux kernel modules for BMI160

I would like to configure BMI160 on my wp76 mangOH red board to generate interrupt for free fall detection. How can I access the functions provided be the driver : , under bmi160_core.c, within my app to do it?
Should I create a .api including the functions within bmi160_core.c to access the functions within my app?

Does this help?

I remember I can send the signal() message to legato application on WP77 FW9.1.
You can see my code:
wakeup_by_kernel_driver.rar (207.5 KB)

It proves that the legato application can be waken up by sending a signal from kernel driver during sleep mode.
Below are the procedures:

  1. Please note that we need to set GPIO42 to be usable in linux application:
    +WIOCFG: 42,16,0,0,1,0,0


  1. compile kernel driver “gpio_interrupt” and run by “insmod /tmp/helloworld.ko”

  2. run legato application hello2

  3. run the following command to find out the pid of hello2
    ps aux | grep hello2
    root 1899 0.0 0.5 2932 996 ? S 05:37 0:00 hello2

  4. echo 1899 > /sys/module/helloworld/parameters/TargetPID

  5. type “logread -f &” to see the legato debug message in UART console.

  6. toogle GPIO42 to high. (GPIO42 is connected to MangoH Red IOT expender board , pin 24.)

  7. The legato debug message shows that the cnt value now is 1

  8. remove the USB cable so that module will go to sleep mode (no more response on UART console now)

  9. toogle GPIO42 to low.

  10. connect USB cable and now the module wakes up.

  11. toogle GPIO42 to high again. The legato debug message shows that the cnt value now is 3 which means that the legato application hello2 actually wakes up once during sleep mode.