Why am I getting call to undefined function after splitting module functions to two files?
files[] only works for class/interface autoloading, it won't include arbitrary PHP files. The docs say


  Drupal now supports a dynamic-loading code registry. To support it, all modules must now declare any code files containing class or interface declarations in the .info file


You can get around it by adding a line like this to the top of your .module file:

require_once DRUPAL_ROOT . '/sites/all/modules/my_module/my_module.admin.inc';