2018-01-09 18:38:55 -07:00
// SPDX-License-Identifier: GPL-2.0
2016-06-17 18:06:36 -06:00
/*
* media_device_open . c - Media Controller Device Open Test
*
* Copyright ( c ) 2016 Shuah Khan < shuahkh @ osg . samsung . com >
* Copyright ( c ) 2016 Samsung Electronics Co . , Ltd .
*
*/
/*
* This file adds a test for Media Controller API .
* This test should be run as root and should not be
* included in the Kselftest run . This test should be
* run when hardware and driver that makes use Media
* Controller API are present in the system .
*
* This test opens user specified Media Device and calls
* MEDIA_IOC_DEVICE_INFO ioctl , closes the file , and exits .
*
* Usage :
* sudo . / media_device_open - d / dev / mediaX
*
* Run this test is a loop and run bind / unbind on the driver .
*/
# include <stdio.h>
# include <unistd.h>
# include <stdlib.h>
# include <errno.h>
# include <string.h>
# include <fcntl.h>
# include <sys/ioctl.h>
# include <sys/stat.h>
# include <linux/media.h>
2018-05-04 12:06:46 -06:00
# include "../kselftest.h"
2016-06-17 18:06:36 -06:00
int main ( int argc , char * * argv )
{
int opt ;
char media_device [ 256 ] ;
int count = 0 ;
struct media_device_info mdi ;
int ret ;
int fd ;
if ( argc < 2 ) {
printf ( " Usage: %s [-d </dev/mediaX>] \n " , argv [ 0 ] ) ;
exit ( - 1 ) ;
}
/* Process arguments */
while ( ( opt = getopt ( argc , argv , " d: " ) ) ! = - 1 ) {
switch ( opt ) {
case ' d ' :
strncpy ( media_device , optarg , sizeof ( media_device ) - 1 ) ;
media_device [ sizeof ( media_device ) - 1 ] = ' \0 ' ;
break ;
default :
printf ( " Usage: %s [-d </dev/mediaX>] \n " , argv [ 0 ] ) ;
exit ( - 1 ) ;
}
}
2018-05-04 12:06:46 -06:00
if ( getuid ( ) ! = 0 )
ksft_exit_skip ( " Please run the test as root - Exiting. \n " ) ;
2016-06-17 18:06:36 -06:00
/* Open Media device and keep it open */
fd = open ( media_device , O_RDWR ) ;
if ( fd = = - 1 ) {
printf ( " Media Device open errno %s \n " , strerror ( errno ) ) ;
exit ( - 1 ) ;
}
ret = ioctl ( fd , MEDIA_IOC_DEVICE_INFO , & mdi ) ;
if ( ret < 0 )
printf ( " Media Device Info errno %s \n " , strerror ( errno ) ) ;
else
printf ( " Media device model %s driver %s \n " ,
mdi . model , mdi . driver ) ;
}