init.qcom.usb.rc: Add uvc declarations under a trigger in rc
Sepolicy permissions for creating directory and creating
symlinks from the sh file are revoked which is why when
trying to create those will lead to avc denials.
avc: denied { write } for comm="init.qcom.usb.s" name="uvc.0"
dev="configfs" ino=123302
scontext=u:r:vendor_qti_init_shell:s0
tcontext=u:object_r:configfs:s0 tclass=dir permissive=0
avc: denied { write } for comm="ln" name="header"
dev="configfs" ino=55623
scontext=u:r:vendor_qti_init_shell:s0
tcontext=u:object_r:configfs:s0 tclass=dir permissive=0
Fix that by moving the create and write operations to rc file
since it had the necessary permissions for the same.
Change-Id: I054f0e558498abecac5d0ebd79bb97deef91f7ae
Signed-off-by: Udipto Goswami <quic_ugoswami@quicinc.com>
diff --git a/etc/init.qcom.usb.rc b/etc/init.qcom.usb.rc
index 98cdf67..ce1b1c4 100644
--- a/etc/init.qcom.usb.rc
+++ b/etc/init.qcom.usb.rc
@@ -1804,3 +1804,48 @@
write /sys/kernel/debug/pmic-votable/USB_ICL/force_val 0
write /config/usb_gadget/g1/configs/b.1/MaxPower 0
write /sys/module/eud/parameters/enable 0
+
+on property:vendor.usb.uvc.function.init=1
+ write /config/usb_gadget/g1/functions/uvc.0/streaming_maxpacket 3072
+ write /config/usb_gadget/g1/functions/uvc.0/streaming_maxburst 1
+ mkdir /config/usb_gadget/g1/functions/uvc.0/control/header/h
+ symlink /config/usb_gadget/g1/functions/uvc.0/control/header/h /config/usb_gadget/g1/functions/uvc.0/control/class/fs/h
+ symlink /config/usb_gadget/g1/functions/uvc.0/control/header/h /config/usb_gadget/g1/functions/uvc.0/control/class/ss/h
+ mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u
+ mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/360p
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/360p/dwFrameInterval "666666\n1000000\n5000000\n"
+ mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/wWidth 1280
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/wHeight 720
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/dwMinBitRate 29491200
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/dwMaxBitRate 29491200
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/dwMaxVideoFrameBufferSize 1843200
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/dwDefaultFrameInterval 5000000
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/dwFrameInterval "5000000\n"
+ mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m
+ mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwFrameInterval "666666\n1000000\n5000000\n"
+ mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wWidth 1280
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wHeight 720
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMinBitRate 29491200
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxBitRate 29491200
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize 1843200
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwDefaultFrameInterval 5000000
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwFrameInterval "5000000\n"
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmaControls 0x04
+ mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/h264/h
+ mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/h264/h/960p
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/h264/h/960p/wWidth 1920
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/h264/h/960p/wHeight 960
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/h264/h/960p/bLevelIDC 40
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/h264/h/960p/dwFrameInterval "333667\n"
+ mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/h264/h/1920p
+ write /config/usb_gadget/g1/functions/uvc.0/streaming/h264/h/1920p/dwFrameInterval "333667\n"
+ mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/header/h
+ symlink /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/u
+ symlink /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/m
+ symlink /config/usb_gadget/g1/functions/uvc.0/streaming/h264/h /config/usb_gadget/g1/functions/uvc.0/streaming/header/h
+ symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/fs/h
+ symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/hs/h
+ symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/ss/h
diff --git a/etc/init.qcom.usb.sh b/etc/init.qcom.usb.sh
index a5ceb48..0121f1b 100644
--- a/etc/init.qcom.usb.sh
+++ b/etc/init.qcom.usb.sh
@@ -186,54 +186,5 @@
# Initialize UVC conifguration.
#
if [ -d /config/usb_gadget/g1/functions/uvc.0 ]; then
- cd /config/usb_gadget/g1/functions/uvc.0
-
- echo 3072 > streaming_maxpacket
- echo 1 > streaming_maxburst
- mkdir control/header/h
- ln -s control/header/h control/class/fs/
- ln -s control/header/h control/class/ss
-
- mkdir -p streaming/uncompressed/u/360p
- echo "666666\n1000000\n5000000\n" > streaming/uncompressed/u/360p/dwFrameInterval
-
- mkdir -p streaming/uncompressed/u/720p
- echo 1280 > streaming/uncompressed/u/720p/wWidth
- echo 720 > streaming/uncompressed/u/720p/wWidth
- echo 29491200 > streaming/uncompressed/u/720p/dwMinBitRate
- echo 29491200 > streaming/uncompressed/u/720p/dwMaxBitRate
- echo 1843200 > streaming/uncompressed/u/720p/dwMaxVideoFrameBufferSize
- echo 5000000 > streaming/uncompressed/u/720p/dwDefaultFrameInterval
- echo "5000000\n" > streaming/uncompressed/u/720p/dwFrameInterval
-
- mkdir -p streaming/mjpeg/m/360p
- echo "666666\n1000000\n5000000\n" > streaming/mjpeg/m/360p/dwFrameInterval
-
- mkdir -p streaming/mjpeg/m/720p
- echo 1280 > streaming/mjpeg/m/720p/wWidth
- echo 720 > streaming/mjpeg/m/720p/wWidth
- echo 29491200 > streaming/mjpeg/m/720p/dwMinBitRate
- echo 29491200 > streaming/mjpeg/m/720p/dwMaxBitRate
- echo 1843200 > streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize
- echo 5000000 > streaming/mjpeg/m/720p/dwDefaultFrameInterval
- echo "5000000\n" > streaming/mjpeg/m/720p/dwFrameInterval
-
- echo 0x04 > /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmaControls
-
- mkdir -p streaming/h264/h/960p
- echo 1920 > streaming/h264/h/960p/wWidth
- echo 960 > streaming/h264/h/960p/wWidth
- echo 40 > streaming/h264/h/960p/bLevelIDC
- echo "333667\n" > streaming/h264/h/960p/dwFrameInterval
-
- mkdir -p streaming/h264/h/1920p
- echo "333667\n" > streaming/h264/h/1920p/dwFrameInterval
-
- mkdir streaming/header/h
- ln -s streaming/uncompressed/u streaming/header/h
- ln -s streaming/mjpeg/m streaming/header/h
- ln -s streaming/h264/h streaming/header/h
- ln -s streaming/header/h streaming/class/fs/
- ln -s streaming/header/h streaming/class/hs/
- ln -s streaming/header/h streaming/class/ss/
+ setprop vendor.usb.uvc.function.init 1
fi