Searched refs:gspca_dev (Results 1 - 75 of 75) sorted by relevance

/linux-4.4.14/drivers/media/usb/gspca/
H A Dxirlink_cit.c55 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
71 static void sd_stop0(struct gspca_dev *gspca_dev);
680 static int cit_write_reg(struct gspca_dev *gspca_dev, u16 value, u16 index) cit_write_reg() argument
682 struct usb_device *udev = gspca_dev->dev; cit_write_reg()
695 static int cit_read_reg(struct gspca_dev *gspca_dev, u16 index, int verbose) cit_read_reg() argument
697 struct usb_device *udev = gspca_dev->dev; cit_read_reg()
698 __u8 *buf = gspca_dev->usb_buf; cit_read_reg()
725 static void cit_send_FF_04_02(struct gspca_dev *gspca_dev) cit_send_FF_04_02() argument
727 cit_write_reg(gspca_dev, 0x00FF, 0x0127); cit_send_FF_04_02()
728 cit_write_reg(gspca_dev, 0x0004, 0x0124); cit_send_FF_04_02()
729 cit_write_reg(gspca_dev, 0x0002, 0x0124); cit_send_FF_04_02()
732 static void cit_send_00_04_06(struct gspca_dev *gspca_dev) cit_send_00_04_06() argument
734 cit_write_reg(gspca_dev, 0x0000, 0x0127); cit_send_00_04_06()
735 cit_write_reg(gspca_dev, 0x0004, 0x0124); cit_send_00_04_06()
736 cit_write_reg(gspca_dev, 0x0006, 0x0124); cit_send_00_04_06()
739 static void cit_send_x_00(struct gspca_dev *gspca_dev, unsigned short x) cit_send_x_00() argument
741 cit_write_reg(gspca_dev, x, 0x0127); cit_send_x_00()
742 cit_write_reg(gspca_dev, 0x0000, 0x0124); cit_send_x_00()
745 static void cit_send_x_00_05(struct gspca_dev *gspca_dev, unsigned short x) cit_send_x_00_05() argument
747 cit_send_x_00(gspca_dev, x); cit_send_x_00_05()
748 cit_write_reg(gspca_dev, 0x0005, 0x0124); cit_send_x_00_05()
751 static void cit_send_x_00_05_02(struct gspca_dev *gspca_dev, unsigned short x) cit_send_x_00_05_02() argument
753 cit_write_reg(gspca_dev, x, 0x0127); cit_send_x_00_05_02()
754 cit_write_reg(gspca_dev, 0x0000, 0x0124); cit_send_x_00_05_02()
755 cit_write_reg(gspca_dev, 0x0005, 0x0124); cit_send_x_00_05_02()
756 cit_write_reg(gspca_dev, 0x0002, 0x0124); cit_send_x_00_05_02()
759 static void cit_send_x_01_00_05(struct gspca_dev *gspca_dev, u16 x) cit_send_x_01_00_05() argument
761 cit_write_reg(gspca_dev, x, 0x0127); cit_send_x_01_00_05()
762 cit_write_reg(gspca_dev, 0x0001, 0x0124); cit_send_x_01_00_05()
763 cit_write_reg(gspca_dev, 0x0000, 0x0124); cit_send_x_01_00_05()
764 cit_write_reg(gspca_dev, 0x0005, 0x0124); cit_send_x_01_00_05()
767 static void cit_send_x_00_05_02_01(struct gspca_dev *gspca_dev, u16 x) cit_send_x_00_05_02_01() argument
769 cit_write_reg(gspca_dev, x, 0x0127); cit_send_x_00_05_02_01()
770 cit_write_reg(gspca_dev, 0x0000, 0x0124); cit_send_x_00_05_02_01()
771 cit_write_reg(gspca_dev, 0x0005, 0x0124); cit_send_x_00_05_02_01()
772 cit_write_reg(gspca_dev, 0x0002, 0x0124); cit_send_x_00_05_02_01()
773 cit_write_reg(gspca_dev, 0x0001, 0x0124); cit_send_x_00_05_02_01()
776 static void cit_send_x_00_05_02_08_01(struct gspca_dev *gspca_dev, u16 x) cit_send_x_00_05_02_08_01() argument
778 cit_write_reg(gspca_dev, x, 0x0127); cit_send_x_00_05_02_08_01()
779 cit_write_reg(gspca_dev, 0x0000, 0x0124); cit_send_x_00_05_02_08_01()
780 cit_write_reg(gspca_dev, 0x0005, 0x0124); cit_send_x_00_05_02_08_01()
781 cit_write_reg(gspca_dev, 0x0002, 0x0124); cit_send_x_00_05_02_08_01()
782 cit_write_reg(gspca_dev, 0x0008, 0x0124); cit_send_x_00_05_02_08_01()
783 cit_write_reg(gspca_dev, 0x0001, 0x0124); cit_send_x_00_05_02_08_01()
786 static void cit_Packet_Format1(struct gspca_dev *gspca_dev, u16 fkey, u16 val) cit_Packet_Format1() argument
788 cit_send_x_01_00_05(gspca_dev, 0x0088); cit_Packet_Format1()
789 cit_send_x_00_05(gspca_dev, fkey); cit_Packet_Format1()
790 cit_send_x_00_05_02_08_01(gspca_dev, val); cit_Packet_Format1()
791 cit_send_x_00_05(gspca_dev, 0x0088); cit_Packet_Format1()
792 cit_send_x_00_05_02_01(gspca_dev, fkey); cit_Packet_Format1()
793 cit_send_x_00_05(gspca_dev, 0x0089); cit_Packet_Format1()
794 cit_send_x_00(gspca_dev, fkey); cit_Packet_Format1()
795 cit_send_00_04_06(gspca_dev); cit_Packet_Format1()
796 cit_read_reg(gspca_dev, 0x0126, 0); cit_Packet_Format1()
797 cit_send_FF_04_02(gspca_dev); cit_Packet_Format1()
800 static void cit_PacketFormat2(struct gspca_dev *gspca_dev, u16 fkey, u16 val) cit_PacketFormat2() argument
802 cit_send_x_01_00_05(gspca_dev, 0x0088); cit_PacketFormat2()
803 cit_send_x_00_05(gspca_dev, fkey); cit_PacketFormat2()
804 cit_send_x_00_05_02(gspca_dev, val); cit_PacketFormat2()
807 static void cit_model2_Packet2(struct gspca_dev *gspca_dev) cit_model2_Packet2() argument
809 cit_write_reg(gspca_dev, 0x00ff, 0x012d); cit_model2_Packet2()
810 cit_write_reg(gspca_dev, 0xfea3, 0x0124); cit_model2_Packet2()
813 static void cit_model2_Packet1(struct gspca_dev *gspca_dev, u16 v1, u16 v2) cit_model2_Packet1() argument
815 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_model2_Packet1()
816 cit_write_reg(gspca_dev, 0x00ff, 0x012e); cit_model2_Packet1()
817 cit_write_reg(gspca_dev, v1, 0x012f); cit_model2_Packet1()
818 cit_write_reg(gspca_dev, 0x00ff, 0x0130); cit_model2_Packet1()
819 cit_write_reg(gspca_dev, 0xc719, 0x0124); cit_model2_Packet1()
820 cit_write_reg(gspca_dev, v2, 0x0127); cit_model2_Packet1()
822 cit_model2_Packet2(gspca_dev); cit_model2_Packet1()
834 static void cit_model3_Packet1(struct gspca_dev *gspca_dev, u16 v1, u16 v2) cit_model3_Packet1() argument
836 cit_write_reg(gspca_dev, 0x0078, 0x012d); cit_model3_Packet1()
837 cit_write_reg(gspca_dev, v1, 0x012f); cit_model3_Packet1()
838 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_model3_Packet1()
839 cit_write_reg(gspca_dev, v2, 0x0127); cit_model3_Packet1()
840 cit_write_reg(gspca_dev, 0xfea8, 0x0124); cit_model3_Packet1()
843 static void cit_model4_Packet1(struct gspca_dev *gspca_dev, u16 v1, u16 v2) cit_model4_Packet1() argument
845 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_model4_Packet1()
846 cit_write_reg(gspca_dev, v1, 0x012f); cit_model4_Packet1()
847 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_model4_Packet1()
848 cit_write_reg(gspca_dev, v2, 0x0127); cit_model4_Packet1()
849 cit_write_reg(gspca_dev, 0xfea8, 0x0124); cit_model4_Packet1()
852 static void cit_model4_BrightnessPacket(struct gspca_dev *gspca_dev, u16 val) cit_model4_BrightnessPacket() argument
854 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_model4_BrightnessPacket()
855 cit_write_reg(gspca_dev, 0x0026, 0x012f); cit_model4_BrightnessPacket()
856 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_model4_BrightnessPacket()
857 cit_write_reg(gspca_dev, val, 0x0127); cit_model4_BrightnessPacket()
858 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_model4_BrightnessPacket()
859 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_model4_BrightnessPacket()
860 cit_write_reg(gspca_dev, 0x0038, 0x012d); cit_model4_BrightnessPacket()
861 cit_write_reg(gspca_dev, 0x0004, 0x012f); cit_model4_BrightnessPacket()
862 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_model4_BrightnessPacket()
863 cit_write_reg(gspca_dev, 0xfffa, 0x0124); cit_model4_BrightnessPacket()
867 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
870 struct sd *sd = (struct sd *) gspca_dev; sd_config()
877 cam = &gspca_dev->cam; sd_config()
915 static int cit_init_model0(struct gspca_dev *gspca_dev) cit_init_model0() argument
917 cit_write_reg(gspca_dev, 0x0000, 0x0100); /* turn on led */ cit_init_model0()
918 cit_write_reg(gspca_dev, 0x0001, 0x0112); /* turn on autogain ? */ cit_init_model0()
919 cit_write_reg(gspca_dev, 0x0000, 0x0400); cit_init_model0()
920 cit_write_reg(gspca_dev, 0x0001, 0x0400); cit_init_model0()
921 cit_write_reg(gspca_dev, 0x0000, 0x0420); cit_init_model0()
922 cit_write_reg(gspca_dev, 0x0001, 0x0420); cit_init_model0()
923 cit_write_reg(gspca_dev, 0x000d, 0x0409); cit_init_model0()
924 cit_write_reg(gspca_dev, 0x0002, 0x040a); cit_init_model0()
925 cit_write_reg(gspca_dev, 0x0018, 0x0405); cit_init_model0()
926 cit_write_reg(gspca_dev, 0x0008, 0x0435); cit_init_model0()
927 cit_write_reg(gspca_dev, 0x0026, 0x040b); cit_init_model0()
928 cit_write_reg(gspca_dev, 0x0007, 0x0437); cit_init_model0()
929 cit_write_reg(gspca_dev, 0x0015, 0x042f); cit_init_model0()
930 cit_write_reg(gspca_dev, 0x002b, 0x0439); cit_init_model0()
931 cit_write_reg(gspca_dev, 0x0026, 0x043a); cit_init_model0()
932 cit_write_reg(gspca_dev, 0x0008, 0x0438); cit_init_model0()
933 cit_write_reg(gspca_dev, 0x001e, 0x042b); cit_init_model0()
934 cit_write_reg(gspca_dev, 0x0041, 0x042c); cit_init_model0()
939 static int cit_init_ibm_netcam_pro(struct gspca_dev *gspca_dev) cit_init_ibm_netcam_pro() argument
941 cit_read_reg(gspca_dev, 0x128, 1); cit_init_ibm_netcam_pro()
942 cit_write_reg(gspca_dev, 0x0003, 0x0133); cit_init_ibm_netcam_pro()
943 cit_write_reg(gspca_dev, 0x0000, 0x0117); cit_init_ibm_netcam_pro()
944 cit_write_reg(gspca_dev, 0x0008, 0x0123); cit_init_ibm_netcam_pro()
945 cit_write_reg(gspca_dev, 0x0000, 0x0100); cit_init_ibm_netcam_pro()
946 cit_read_reg(gspca_dev, 0x0116, 0); cit_init_ibm_netcam_pro()
947 cit_write_reg(gspca_dev, 0x0060, 0x0116); cit_init_ibm_netcam_pro()
948 cit_write_reg(gspca_dev, 0x0002, 0x0112); cit_init_ibm_netcam_pro()
949 cit_write_reg(gspca_dev, 0x0000, 0x0133); cit_init_ibm_netcam_pro()
950 cit_write_reg(gspca_dev, 0x0000, 0x0123); cit_init_ibm_netcam_pro()
951 cit_write_reg(gspca_dev, 0x0001, 0x0117); cit_init_ibm_netcam_pro()
952 cit_write_reg(gspca_dev, 0x0040, 0x0108); cit_init_ibm_netcam_pro()
953 cit_write_reg(gspca_dev, 0x0019, 0x012c); cit_init_ibm_netcam_pro()
954 cit_write_reg(gspca_dev, 0x0060, 0x0116); cit_init_ibm_netcam_pro()
955 cit_write_reg(gspca_dev, 0x0002, 0x0115); cit_init_ibm_netcam_pro()
956 cit_write_reg(gspca_dev, 0x000b, 0x0115); cit_init_ibm_netcam_pro()
958 cit_write_reg(gspca_dev, 0x0078, 0x012d); cit_init_ibm_netcam_pro()
959 cit_write_reg(gspca_dev, 0x0001, 0x012f); cit_init_ibm_netcam_pro()
960 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_init_ibm_netcam_pro()
961 cit_write_reg(gspca_dev, 0x0079, 0x012d); cit_init_ibm_netcam_pro()
962 cit_write_reg(gspca_dev, 0x00ff, 0x0130); cit_init_ibm_netcam_pro()
963 cit_write_reg(gspca_dev, 0xcd41, 0x0124); cit_init_ibm_netcam_pro()
964 cit_write_reg(gspca_dev, 0xfffa, 0x0124); cit_init_ibm_netcam_pro()
965 cit_read_reg(gspca_dev, 0x0126, 1); cit_init_ibm_netcam_pro()
967 cit_model3_Packet1(gspca_dev, 0x0000, 0x0000); cit_init_ibm_netcam_pro()
968 cit_model3_Packet1(gspca_dev, 0x0000, 0x0001); cit_init_ibm_netcam_pro()
969 cit_model3_Packet1(gspca_dev, 0x000b, 0x0000); cit_init_ibm_netcam_pro()
970 cit_model3_Packet1(gspca_dev, 0x000c, 0x0008); cit_init_ibm_netcam_pro()
971 cit_model3_Packet1(gspca_dev, 0x000d, 0x003a); cit_init_ibm_netcam_pro()
972 cit_model3_Packet1(gspca_dev, 0x000e, 0x0060); cit_init_ibm_netcam_pro()
973 cit_model3_Packet1(gspca_dev, 0x000f, 0x0060); cit_init_ibm_netcam_pro()
974 cit_model3_Packet1(gspca_dev, 0x0010, 0x0008); cit_init_ibm_netcam_pro()
975 cit_model3_Packet1(gspca_dev, 0x0011, 0x0004); cit_init_ibm_netcam_pro()
976 cit_model3_Packet1(gspca_dev, 0x0012, 0x0028); cit_init_ibm_netcam_pro()
977 cit_model3_Packet1(gspca_dev, 0x0013, 0x0002); cit_init_ibm_netcam_pro()
978 cit_model3_Packet1(gspca_dev, 0x0014, 0x0000); cit_init_ibm_netcam_pro()
979 cit_model3_Packet1(gspca_dev, 0x0015, 0x00fb); cit_init_ibm_netcam_pro()
980 cit_model3_Packet1(gspca_dev, 0x0016, 0x0002); cit_init_ibm_netcam_pro()
981 cit_model3_Packet1(gspca_dev, 0x0017, 0x0037); cit_init_ibm_netcam_pro()
982 cit_model3_Packet1(gspca_dev, 0x0018, 0x0036); cit_init_ibm_netcam_pro()
983 cit_model3_Packet1(gspca_dev, 0x001e, 0x0000); cit_init_ibm_netcam_pro()
984 cit_model3_Packet1(gspca_dev, 0x001f, 0x0008); cit_init_ibm_netcam_pro()
985 cit_model3_Packet1(gspca_dev, 0x0020, 0x00c1); cit_init_ibm_netcam_pro()
986 cit_model3_Packet1(gspca_dev, 0x0021, 0x0034); cit_init_ibm_netcam_pro()
987 cit_model3_Packet1(gspca_dev, 0x0022, 0x0034); cit_init_ibm_netcam_pro()
988 cit_model3_Packet1(gspca_dev, 0x0025, 0x0002); cit_init_ibm_netcam_pro()
989 cit_model3_Packet1(gspca_dev, 0x0028, 0x0022); cit_init_ibm_netcam_pro()
990 cit_model3_Packet1(gspca_dev, 0x0029, 0x000a); cit_init_ibm_netcam_pro()
991 cit_model3_Packet1(gspca_dev, 0x002b, 0x0000); cit_init_ibm_netcam_pro()
992 cit_model3_Packet1(gspca_dev, 0x002c, 0x0000); cit_init_ibm_netcam_pro()
993 cit_model3_Packet1(gspca_dev, 0x002d, 0x00ff); cit_init_ibm_netcam_pro()
994 cit_model3_Packet1(gspca_dev, 0x002e, 0x00ff); cit_init_ibm_netcam_pro()
995 cit_model3_Packet1(gspca_dev, 0x002f, 0x00ff); cit_init_ibm_netcam_pro()
996 cit_model3_Packet1(gspca_dev, 0x0030, 0x00ff); cit_init_ibm_netcam_pro()
997 cit_model3_Packet1(gspca_dev, 0x0031, 0x00ff); cit_init_ibm_netcam_pro()
998 cit_model3_Packet1(gspca_dev, 0x0032, 0x0007); cit_init_ibm_netcam_pro()
999 cit_model3_Packet1(gspca_dev, 0x0033, 0x0005); cit_init_ibm_netcam_pro()
1000 cit_model3_Packet1(gspca_dev, 0x0037, 0x0040); cit_init_ibm_netcam_pro()
1001 cit_model3_Packet1(gspca_dev, 0x0039, 0x0000); cit_init_ibm_netcam_pro()
1002 cit_model3_Packet1(gspca_dev, 0x003a, 0x0000); cit_init_ibm_netcam_pro()
1003 cit_model3_Packet1(gspca_dev, 0x003b, 0x0001); cit_init_ibm_netcam_pro()
1004 cit_model3_Packet1(gspca_dev, 0x003c, 0x0000); cit_init_ibm_netcam_pro()
1005 cit_model3_Packet1(gspca_dev, 0x0040, 0x000c); cit_init_ibm_netcam_pro()
1006 cit_model3_Packet1(gspca_dev, 0x0041, 0x00fb); cit_init_ibm_netcam_pro()
1007 cit_model3_Packet1(gspca_dev, 0x0042, 0x0002); cit_init_ibm_netcam_pro()
1008 cit_model3_Packet1(gspca_dev, 0x0043, 0x0000); cit_init_ibm_netcam_pro()
1009 cit_model3_Packet1(gspca_dev, 0x0045, 0x0000); cit_init_ibm_netcam_pro()
1010 cit_model3_Packet1(gspca_dev, 0x0046, 0x0000); cit_init_ibm_netcam_pro()
1011 cit_model3_Packet1(gspca_dev, 0x0047, 0x0000); cit_init_ibm_netcam_pro()
1012 cit_model3_Packet1(gspca_dev, 0x0048, 0x0000); cit_init_ibm_netcam_pro()
1013 cit_model3_Packet1(gspca_dev, 0x0049, 0x0000); cit_init_ibm_netcam_pro()
1014 cit_model3_Packet1(gspca_dev, 0x004a, 0x00ff); cit_init_ibm_netcam_pro()
1015 cit_model3_Packet1(gspca_dev, 0x004b, 0x00ff); cit_init_ibm_netcam_pro()
1016 cit_model3_Packet1(gspca_dev, 0x004c, 0x00ff); cit_init_ibm_netcam_pro()
1017 cit_model3_Packet1(gspca_dev, 0x004f, 0x0000); cit_init_ibm_netcam_pro()
1018 cit_model3_Packet1(gspca_dev, 0x0050, 0x0000); cit_init_ibm_netcam_pro()
1019 cit_model3_Packet1(gspca_dev, 0x0051, 0x0002); cit_init_ibm_netcam_pro()
1020 cit_model3_Packet1(gspca_dev, 0x0055, 0x0000); cit_init_ibm_netcam_pro()
1021 cit_model3_Packet1(gspca_dev, 0x0056, 0x0000); cit_init_ibm_netcam_pro()
1022 cit_model3_Packet1(gspca_dev, 0x0057, 0x0000); cit_init_ibm_netcam_pro()
1023 cit_model3_Packet1(gspca_dev, 0x0058, 0x0002); cit_init_ibm_netcam_pro()
1024 cit_model3_Packet1(gspca_dev, 0x0059, 0x0000); cit_init_ibm_netcam_pro()
1025 cit_model3_Packet1(gspca_dev, 0x005c, 0x0016); cit_init_ibm_netcam_pro()
1026 cit_model3_Packet1(gspca_dev, 0x005d, 0x0022); cit_init_ibm_netcam_pro()
1027 cit_model3_Packet1(gspca_dev, 0x005e, 0x003c); cit_init_ibm_netcam_pro()
1028 cit_model3_Packet1(gspca_dev, 0x005f, 0x0050); cit_init_ibm_netcam_pro()
1029 cit_model3_Packet1(gspca_dev, 0x0060, 0x0044); cit_init_ibm_netcam_pro()
1030 cit_model3_Packet1(gspca_dev, 0x0061, 0x0005); cit_init_ibm_netcam_pro()
1031 cit_model3_Packet1(gspca_dev, 0x006a, 0x007e); cit_init_ibm_netcam_pro()
1032 cit_model3_Packet1(gspca_dev, 0x006f, 0x0000); cit_init_ibm_netcam_pro()
1033 cit_model3_Packet1(gspca_dev, 0x0072, 0x001b); cit_init_ibm_netcam_pro()
1034 cit_model3_Packet1(gspca_dev, 0x0073, 0x0005); cit_init_ibm_netcam_pro()
1035 cit_model3_Packet1(gspca_dev, 0x0074, 0x000a); cit_init_ibm_netcam_pro()
1036 cit_model3_Packet1(gspca_dev, 0x0075, 0x001b); cit_init_ibm_netcam_pro()
1037 cit_model3_Packet1(gspca_dev, 0x0076, 0x002a); cit_init_ibm_netcam_pro()
1038 cit_model3_Packet1(gspca_dev, 0x0077, 0x003c); cit_init_ibm_netcam_pro()
1039 cit_model3_Packet1(gspca_dev, 0x0078, 0x0050); cit_init_ibm_netcam_pro()
1040 cit_model3_Packet1(gspca_dev, 0x007b, 0x0000); cit_init_ibm_netcam_pro()
1041 cit_model3_Packet1(gspca_dev, 0x007c, 0x0011); cit_init_ibm_netcam_pro()
1042 cit_model3_Packet1(gspca_dev, 0x007d, 0x0024); cit_init_ibm_netcam_pro()
1043 cit_model3_Packet1(gspca_dev, 0x007e, 0x0043); cit_init_ibm_netcam_pro()
1044 cit_model3_Packet1(gspca_dev, 0x007f, 0x005a); cit_init_ibm_netcam_pro()
1045 cit_model3_Packet1(gspca_dev, 0x0084, 0x0020); cit_init_ibm_netcam_pro()
1046 cit_model3_Packet1(gspca_dev, 0x0085, 0x0033); cit_init_ibm_netcam_pro()
1047 cit_model3_Packet1(gspca_dev, 0x0086, 0x000a); cit_init_ibm_netcam_pro()
1048 cit_model3_Packet1(gspca_dev, 0x0087, 0x0030); cit_init_ibm_netcam_pro()
1049 cit_model3_Packet1(gspca_dev, 0x0088, 0x0070); cit_init_ibm_netcam_pro()
1050 cit_model3_Packet1(gspca_dev, 0x008b, 0x0008); cit_init_ibm_netcam_pro()
1051 cit_model3_Packet1(gspca_dev, 0x008f, 0x0000); cit_init_ibm_netcam_pro()
1052 cit_model3_Packet1(gspca_dev, 0x0090, 0x0006); cit_init_ibm_netcam_pro()
1053 cit_model3_Packet1(gspca_dev, 0x0091, 0x0028); cit_init_ibm_netcam_pro()
1054 cit_model3_Packet1(gspca_dev, 0x0092, 0x005a); cit_init_ibm_netcam_pro()
1055 cit_model3_Packet1(gspca_dev, 0x0093, 0x0082); cit_init_ibm_netcam_pro()
1056 cit_model3_Packet1(gspca_dev, 0x0096, 0x0014); cit_init_ibm_netcam_pro()
1057 cit_model3_Packet1(gspca_dev, 0x0097, 0x0020); cit_init_ibm_netcam_pro()
1058 cit_model3_Packet1(gspca_dev, 0x0098, 0x0000); cit_init_ibm_netcam_pro()
1059 cit_model3_Packet1(gspca_dev, 0x00b0, 0x0046); cit_init_ibm_netcam_pro()
1060 cit_model3_Packet1(gspca_dev, 0x00b1, 0x0000); cit_init_ibm_netcam_pro()
1061 cit_model3_Packet1(gspca_dev, 0x00b2, 0x0000); cit_init_ibm_netcam_pro()
1062 cit_model3_Packet1(gspca_dev, 0x00b3, 0x0004); cit_init_ibm_netcam_pro()
1063 cit_model3_Packet1(gspca_dev, 0x00b4, 0x0007); cit_init_ibm_netcam_pro()
1064 cit_model3_Packet1(gspca_dev, 0x00b6, 0x0002); cit_init_ibm_netcam_pro()
1065 cit_model3_Packet1(gspca_dev, 0x00b7, 0x0004); cit_init_ibm_netcam_pro()
1066 cit_model3_Packet1(gspca_dev, 0x00bb, 0x0000); cit_init_ibm_netcam_pro()
1067 cit_model3_Packet1(gspca_dev, 0x00bc, 0x0001); cit_init_ibm_netcam_pro()
1068 cit_model3_Packet1(gspca_dev, 0x00bd, 0x0000); cit_init_ibm_netcam_pro()
1069 cit_model3_Packet1(gspca_dev, 0x00bf, 0x0000); cit_init_ibm_netcam_pro()
1070 cit_model3_Packet1(gspca_dev, 0x00c0, 0x00c8); cit_init_ibm_netcam_pro()
1071 cit_model3_Packet1(gspca_dev, 0x00c1, 0x0014); cit_init_ibm_netcam_pro()
1072 cit_model3_Packet1(gspca_dev, 0x00c2, 0x0001); cit_init_ibm_netcam_pro()
1073 cit_model3_Packet1(gspca_dev, 0x00c3, 0x0000); cit_init_ibm_netcam_pro()
1074 cit_model3_Packet1(gspca_dev, 0x00c4, 0x0004); cit_init_ibm_netcam_pro()
1075 cit_model3_Packet1(gspca_dev, 0x00cb, 0x00bf); cit_init_ibm_netcam_pro()
1076 cit_model3_Packet1(gspca_dev, 0x00cc, 0x00bf); cit_init_ibm_netcam_pro()
1077 cit_model3_Packet1(gspca_dev, 0x00cd, 0x00bf); cit_init_ibm_netcam_pro()
1078 cit_model3_Packet1(gspca_dev, 0x00ce, 0x0000); cit_init_ibm_netcam_pro()
1079 cit_model3_Packet1(gspca_dev, 0x00cf, 0x0020); cit_init_ibm_netcam_pro()
1080 cit_model3_Packet1(gspca_dev, 0x00d0, 0x0040); cit_init_ibm_netcam_pro()
1081 cit_model3_Packet1(gspca_dev, 0x00d1, 0x00bf); cit_init_ibm_netcam_pro()
1082 cit_model3_Packet1(gspca_dev, 0x00d1, 0x00bf); cit_init_ibm_netcam_pro()
1083 cit_model3_Packet1(gspca_dev, 0x00d2, 0x00bf); cit_init_ibm_netcam_pro()
1084 cit_model3_Packet1(gspca_dev, 0x00d3, 0x00bf); cit_init_ibm_netcam_pro()
1085 cit_model3_Packet1(gspca_dev, 0x00ea, 0x0008); cit_init_ibm_netcam_pro()
1086 cit_model3_Packet1(gspca_dev, 0x00eb, 0x0000); cit_init_ibm_netcam_pro()
1087 cit_model3_Packet1(gspca_dev, 0x00ec, 0x00e8); cit_init_ibm_netcam_pro()
1088 cit_model3_Packet1(gspca_dev, 0x00ed, 0x0001); cit_init_ibm_netcam_pro()
1089 cit_model3_Packet1(gspca_dev, 0x00ef, 0x0022); cit_init_ibm_netcam_pro()
1090 cit_model3_Packet1(gspca_dev, 0x00f0, 0x0000); cit_init_ibm_netcam_pro()
1091 cit_model3_Packet1(gspca_dev, 0x00f2, 0x0028); cit_init_ibm_netcam_pro()
1092 cit_model3_Packet1(gspca_dev, 0x00f4, 0x0002); cit_init_ibm_netcam_pro()
1093 cit_model3_Packet1(gspca_dev, 0x00f5, 0x0000); cit_init_ibm_netcam_pro()
1094 cit_model3_Packet1(gspca_dev, 0x00fa, 0x0000); cit_init_ibm_netcam_pro()
1095 cit_model3_Packet1(gspca_dev, 0x00fb, 0x0001); cit_init_ibm_netcam_pro()
1096 cit_model3_Packet1(gspca_dev, 0x00fc, 0x0000); cit_init_ibm_netcam_pro()
1097 cit_model3_Packet1(gspca_dev, 0x00fd, 0x0000); cit_init_ibm_netcam_pro()
1098 cit_model3_Packet1(gspca_dev, 0x00fe, 0x0000); cit_init_ibm_netcam_pro()
1099 cit_model3_Packet1(gspca_dev, 0x00ff, 0x0000); cit_init_ibm_netcam_pro()
1101 cit_model3_Packet1(gspca_dev, 0x00be, 0x0003); cit_init_ibm_netcam_pro()
1102 cit_model3_Packet1(gspca_dev, 0x00c8, 0x0000); cit_init_ibm_netcam_pro()
1103 cit_model3_Packet1(gspca_dev, 0x00c9, 0x0020); cit_init_ibm_netcam_pro()
1104 cit_model3_Packet1(gspca_dev, 0x00ca, 0x0040); cit_init_ibm_netcam_pro()
1105 cit_model3_Packet1(gspca_dev, 0x0053, 0x0001); cit_init_ibm_netcam_pro()
1106 cit_model3_Packet1(gspca_dev, 0x0082, 0x000e); cit_init_ibm_netcam_pro()
1107 cit_model3_Packet1(gspca_dev, 0x0083, 0x0020); cit_init_ibm_netcam_pro()
1108 cit_model3_Packet1(gspca_dev, 0x0034, 0x003c); cit_init_ibm_netcam_pro()
1109 cit_model3_Packet1(gspca_dev, 0x006e, 0x0055); cit_init_ibm_netcam_pro()
1110 cit_model3_Packet1(gspca_dev, 0x0062, 0x0005); cit_init_ibm_netcam_pro()
1111 cit_model3_Packet1(gspca_dev, 0x0063, 0x0008); cit_init_ibm_netcam_pro()
1112 cit_model3_Packet1(gspca_dev, 0x0066, 0x000a); cit_init_ibm_netcam_pro()
1113 cit_model3_Packet1(gspca_dev, 0x0067, 0x0006); cit_init_ibm_netcam_pro()
1114 cit_model3_Packet1(gspca_dev, 0x006b, 0x0010); cit_init_ibm_netcam_pro()
1115 cit_model3_Packet1(gspca_dev, 0x005a, 0x0001); cit_init_ibm_netcam_pro()
1116 cit_model3_Packet1(gspca_dev, 0x005b, 0x000a); cit_init_ibm_netcam_pro()
1117 cit_model3_Packet1(gspca_dev, 0x0023, 0x0006); cit_init_ibm_netcam_pro()
1118 cit_model3_Packet1(gspca_dev, 0x0026, 0x0004); cit_init_ibm_netcam_pro()
1119 cit_model3_Packet1(gspca_dev, 0x0036, 0x0069); cit_init_ibm_netcam_pro()
1120 cit_model3_Packet1(gspca_dev, 0x0038, 0x0064); cit_init_ibm_netcam_pro()
1121 cit_model3_Packet1(gspca_dev, 0x003d, 0x0003); cit_init_ibm_netcam_pro()
1122 cit_model3_Packet1(gspca_dev, 0x003e, 0x0001); cit_init_ibm_netcam_pro()
1123 cit_model3_Packet1(gspca_dev, 0x00b8, 0x0014); cit_init_ibm_netcam_pro()
1124 cit_model3_Packet1(gspca_dev, 0x00b9, 0x0014); cit_init_ibm_netcam_pro()
1125 cit_model3_Packet1(gspca_dev, 0x00e6, 0x0004); cit_init_ibm_netcam_pro()
1126 cit_model3_Packet1(gspca_dev, 0x00e8, 0x0001); cit_init_ibm_netcam_pro()
1132 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
1134 struct sd *sd = (struct sd *) gspca_dev; sd_init()
1138 cit_init_model0(gspca_dev); sd_init()
1139 sd_stop0(gspca_dev); sd_init()
1147 cit_init_ibm_netcam_pro(gspca_dev); sd_init()
1148 sd_stop0(gspca_dev); sd_init()
1154 static int cit_set_brightness(struct gspca_dev *gspca_dev, s32 val) cit_set_brightness() argument
1156 struct sd *sd = (struct sd *) gspca_dev; cit_set_brightness()
1166 cit_Packet_Format1(gspca_dev, 0x0031, val); cit_set_brightness()
1167 cit_Packet_Format1(gspca_dev, 0x0032, val); cit_set_brightness()
1168 cit_Packet_Format1(gspca_dev, 0x0033, val); cit_set_brightness()
1174 cit_model2_Packet1(gspca_dev, 0x001a, i); cit_set_brightness()
1181 cit_model3_Packet1(gspca_dev, 0x0036, i); cit_set_brightness()
1187 cit_model4_BrightnessPacket(gspca_dev, i); cit_set_brightness()
1194 static int cit_set_contrast(struct gspca_dev *gspca_dev, s32 val) cit_set_contrast() argument
1196 struct sd *sd = (struct sd *) gspca_dev; cit_set_contrast()
1203 cit_write_reg(gspca_dev, i, 0x0422); cit_set_contrast()
1206 cit_write_reg(gspca_dev, i, 0x0423); cit_set_contrast()
1209 cit_write_reg(gspca_dev, i, 0x0424); cit_set_contrast()
1212 cit_write_reg(gspca_dev, i, 0x0425); cit_set_contrast()
1224 cit_Packet_Format1(gspca_dev, 0x0014, new_contrast); cit_set_contrast()
1225 cit_send_FF_04_02(gspca_dev); cit_set_contrast()
1245 cit_model3_Packet1(gspca_dev, 0x0067, cv[i].cv1); cit_set_contrast()
1246 cit_model3_Packet1(gspca_dev, 0x005b, cv[i].cv2); cit_set_contrast()
1247 cit_model3_Packet1(gspca_dev, 0x005c, cv[i].cv3); cit_set_contrast()
1251 cit_model3_Packet1(gspca_dev, 0x005b, val + 1); cit_set_contrast()
1257 static int cit_set_hue(struct gspca_dev *gspca_dev, s32 val) cit_set_hue() argument
1259 struct sd *sd = (struct sd *) gspca_dev; cit_set_hue()
1268 cit_model2_Packet1(gspca_dev, 0x0024, val); cit_set_hue()
1269 /* cit_model2_Packet1(gspca_dev, 0x0020, sat); */ cit_set_hue()
1277 cit_model3_Packet1(gspca_dev, 0x007e, i); cit_set_hue()
1295 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_set_hue()
1296 cit_write_reg(gspca_dev, 0x001e, 0x012f); cit_set_hue()
1297 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_set_hue()
1298 cit_write_reg(gspca_dev, 160, 0x0127); /* Green gain */ cit_set_hue()
1299 cit_write_reg(gspca_dev, 160, 0x012e); /* Red gain */ cit_set_hue()
1300 cit_write_reg(gspca_dev, 160, 0x0130); /* Blue gain */ cit_set_hue()
1301 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_set_hue()
1302 cit_write_reg(gspca_dev, val, 0x012d); /* Hue */ cit_set_hue()
1303 cit_write_reg(gspca_dev, 0xf545, 0x0124); cit_set_hue()
1309 static int cit_set_sharpness(struct gspca_dev *gspca_dev, s32 val) cit_set_sharpness() argument
1311 struct sd *sd = (struct sd *) gspca_dev; cit_set_sharpness()
1326 cit_PacketFormat2(gspca_dev, 0x0013, sa[val]); cit_set_sharpness()
1349 cit_model3_Packet1(gspca_dev, 0x0060, sv[val].sv1); cit_set_sharpness()
1350 cit_model3_Packet1(gspca_dev, 0x0061, sv[val].sv2); cit_set_sharpness()
1351 cit_model3_Packet1(gspca_dev, 0x0062, sv[val].sv3); cit_set_sharpness()
1352 cit_model3_Packet1(gspca_dev, 0x0063, sv[val].sv4); cit_set_sharpness()
1377 static void cit_set_lighting(struct gspca_dev *gspca_dev, s32 val) cit_set_lighting() argument
1379 struct sd *sd = (struct sd *) gspca_dev; cit_set_lighting()
1391 cit_Packet_Format1(gspca_dev, 0x0027, val); cit_set_lighting()
1397 static void cit_set_hflip(struct gspca_dev *gspca_dev, s32 val) cit_set_hflip() argument
1399 struct sd *sd = (struct sd *) gspca_dev; cit_set_hflip()
1404 cit_write_reg(gspca_dev, 0x0020, 0x0115); cit_set_hflip()
1406 cit_write_reg(gspca_dev, 0x0040, 0x0115); cit_set_hflip()
1417 static int cit_restart_stream(struct gspca_dev *gspca_dev) cit_restart_stream() argument
1419 struct sd *sd = (struct sd *) gspca_dev; cit_restart_stream()
1424 cit_write_reg(gspca_dev, 0x0001, 0x0114); cit_restart_stream()
1428 cit_write_reg(gspca_dev, 0x00c0, 0x010c); /* Go! */ cit_restart_stream()
1429 usb_clear_halt(gspca_dev->dev, gspca_dev->urb[0]->pipe); cit_restart_stream()
1433 cit_write_reg(gspca_dev, 0x0001, 0x0114); cit_restart_stream()
1434 cit_write_reg(gspca_dev, 0x00c0, 0x010c); /* Go! */ cit_restart_stream()
1435 usb_clear_halt(gspca_dev->dev, gspca_dev->urb[0]->pipe); cit_restart_stream()
1437 cit_write_reg(gspca_dev, 0x0001, 0x0113); cit_restart_stream()
1446 static int cit_get_packet_size(struct gspca_dev *gspca_dev) cit_get_packet_size() argument
1451 intf = usb_ifnum_to_if(gspca_dev->dev, gspca_dev->iface); cit_get_packet_size()
1452 alt = usb_altnum_to_altsetting(intf, gspca_dev->alt); cit_get_packet_size()
1462 static int cit_get_clock_div(struct gspca_dev *gspca_dev) cit_get_clock_div() argument
1468 packet_size = cit_get_packet_size(gspca_dev); cit_get_clock_div()
1474 gspca_dev->pixfmt.width * gspca_dev->pixfmt.height * cit_get_clock_div()
1480 packet_size, gspca_dev->pixfmt.width, gspca_dev->pixfmt.height, cit_get_clock_div()
1486 static int cit_start_model0(struct gspca_dev *gspca_dev) cit_start_model0() argument
1491 clock_div = cit_get_clock_div(gspca_dev); cit_start_model0()
1495 cit_write_reg(gspca_dev, 0x0000, 0x0100); /* turn on led */ cit_start_model0()
1496 cit_write_reg(gspca_dev, 0x0003, 0x0438); cit_start_model0()
1497 cit_write_reg(gspca_dev, 0x001e, 0x042b); cit_start_model0()
1498 cit_write_reg(gspca_dev, 0x0041, 0x042c); cit_start_model0()
1499 cit_write_reg(gspca_dev, 0x0008, 0x0436); cit_start_model0()
1500 cit_write_reg(gspca_dev, 0x0024, 0x0403); cit_start_model0()
1501 cit_write_reg(gspca_dev, 0x002c, 0x0404); cit_start_model0()
1502 cit_write_reg(gspca_dev, 0x0002, 0x0426); cit_start_model0()
1503 cit_write_reg(gspca_dev, 0x0014, 0x0427); cit_start_model0()
1505 switch (gspca_dev->pixfmt.width) { cit_start_model0()
1507 cit_write_reg(gspca_dev, 0x0004, 0x010b); cit_start_model0()
1508 cit_write_reg(gspca_dev, 0x0001, 0x010a); cit_start_model0()
1509 cit_write_reg(gspca_dev, 0x0010, 0x0102); cit_start_model0()
1510 cit_write_reg(gspca_dev, 0x00a0, 0x0103); cit_start_model0()
1511 cit_write_reg(gspca_dev, 0x0000, 0x0104); cit_start_model0()
1512 cit_write_reg(gspca_dev, 0x0078, 0x0105); cit_start_model0()
1516 cit_write_reg(gspca_dev, 0x0006, 0x010b); cit_start_model0()
1517 cit_write_reg(gspca_dev, 0x0000, 0x010a); cit_start_model0()
1518 cit_write_reg(gspca_dev, 0x0005, 0x0102); cit_start_model0()
1519 cit_write_reg(gspca_dev, 0x00b0, 0x0103); cit_start_model0()
1520 cit_write_reg(gspca_dev, 0x0000, 0x0104); cit_start_model0()
1521 cit_write_reg(gspca_dev, 0x0090, 0x0105); cit_start_model0()
1525 cit_write_reg(gspca_dev, 0x0008, 0x010b); cit_start_model0()
1526 cit_write_reg(gspca_dev, 0x0004, 0x010a); cit_start_model0()
1527 cit_write_reg(gspca_dev, 0x0005, 0x0102); cit_start_model0()
1528 cit_write_reg(gspca_dev, 0x00a0, 0x0103); cit_start_model0()
1529 cit_write_reg(gspca_dev, 0x0010, 0x0104); cit_start_model0()
1530 cit_write_reg(gspca_dev, 0x0078, 0x0105); cit_start_model0()
1534 cit_write_reg(gspca_dev, compression, 0x0109); cit_start_model0()
1535 cit_write_reg(gspca_dev, clock_div, 0x0111); cit_start_model0()
1540 static int cit_start_model1(struct gspca_dev *gspca_dev) cit_start_model1() argument
1542 struct sd *sd = (struct sd *) gspca_dev; cit_start_model1()
1545 clock_div = cit_get_clock_div(gspca_dev); cit_start_model1()
1549 cit_read_reg(gspca_dev, 0x0128, 1); cit_start_model1()
1550 cit_read_reg(gspca_dev, 0x0100, 0); cit_start_model1()
1551 cit_write_reg(gspca_dev, 0x01, 0x0100); /* LED On */ cit_start_model1()
1552 cit_read_reg(gspca_dev, 0x0100, 0); cit_start_model1()
1553 cit_write_reg(gspca_dev, 0x81, 0x0100); /* LED Off */ cit_start_model1()
1554 cit_read_reg(gspca_dev, 0x0100, 0); cit_start_model1()
1555 cit_write_reg(gspca_dev, 0x01, 0x0100); /* LED On */ cit_start_model1()
1556 cit_write_reg(gspca_dev, 0x01, 0x0108); cit_start_model1()
1558 cit_write_reg(gspca_dev, 0x03, 0x0112); cit_start_model1()
1559 cit_read_reg(gspca_dev, 0x0115, 0); cit_start_model1()
1560 cit_write_reg(gspca_dev, 0x06, 0x0115); cit_start_model1()
1561 cit_read_reg(gspca_dev, 0x0116, 0); cit_start_model1()
1562 cit_write_reg(gspca_dev, 0x44, 0x0116); cit_start_model1()
1563 cit_read_reg(gspca_dev, 0x0116, 0); cit_start_model1()
1564 cit_write_reg(gspca_dev, 0x40, 0x0116); cit_start_model1()
1565 cit_read_reg(gspca_dev, 0x0115, 0); cit_start_model1()
1566 cit_write_reg(gspca_dev, 0x0e, 0x0115); cit_start_model1()
1567 cit_write_reg(gspca_dev, 0x19, 0x012c); cit_start_model1()
1569 cit_Packet_Format1(gspca_dev, 0x00, 0x1e); cit_start_model1()
1570 cit_Packet_Format1(gspca_dev, 0x39, 0x0d); cit_start_model1()
1571 cit_Packet_Format1(gspca_dev, 0x39, 0x09); cit_start_model1()
1572 cit_Packet_Format1(gspca_dev, 0x3b, 0x00); cit_start_model1()
1573 cit_Packet_Format1(gspca_dev, 0x28, 0x22); cit_start_model1()
1574 cit_Packet_Format1(gspca_dev, 0x27, 0x00); cit_start_model1()
1575 cit_Packet_Format1(gspca_dev, 0x2b, 0x1f); cit_start_model1()
1576 cit_Packet_Format1(gspca_dev, 0x39, 0x08); cit_start_model1()
1579 cit_Packet_Format1(gspca_dev, 0x2c, 0x00); cit_start_model1()
1582 cit_Packet_Format1(gspca_dev, 0x30, 0x14); cit_start_model1()
1584 cit_PacketFormat2(gspca_dev, 0x39, 0x02); cit_start_model1()
1585 cit_PacketFormat2(gspca_dev, 0x01, 0xe1); cit_start_model1()
1586 cit_PacketFormat2(gspca_dev, 0x02, 0xcd); cit_start_model1()
1587 cit_PacketFormat2(gspca_dev, 0x03, 0xcd); cit_start_model1()
1588 cit_PacketFormat2(gspca_dev, 0x04, 0xfa); cit_start_model1()
1589 cit_PacketFormat2(gspca_dev, 0x3f, 0xff); cit_start_model1()
1590 cit_PacketFormat2(gspca_dev, 0x39, 0x00); cit_start_model1()
1592 cit_PacketFormat2(gspca_dev, 0x39, 0x02); cit_start_model1()
1593 cit_PacketFormat2(gspca_dev, 0x0a, 0x37); cit_start_model1()
1594 cit_PacketFormat2(gspca_dev, 0x0b, 0xb8); cit_start_model1()
1595 cit_PacketFormat2(gspca_dev, 0x0c, 0xf3); cit_start_model1()
1596 cit_PacketFormat2(gspca_dev, 0x0d, 0xe3); cit_start_model1()
1597 cit_PacketFormat2(gspca_dev, 0x0e, 0x0d); cit_start_model1()
1598 cit_PacketFormat2(gspca_dev, 0x0f, 0xf2); cit_start_model1()
1599 cit_PacketFormat2(gspca_dev, 0x10, 0xd5); cit_start_model1()
1600 cit_PacketFormat2(gspca_dev, 0x11, 0xba); cit_start_model1()
1601 cit_PacketFormat2(gspca_dev, 0x12, 0x53); cit_start_model1()
1602 cit_PacketFormat2(gspca_dev, 0x3f, 0xff); cit_start_model1()
1603 cit_PacketFormat2(gspca_dev, 0x39, 0x00); cit_start_model1()
1605 cit_PacketFormat2(gspca_dev, 0x39, 0x02); cit_start_model1()
1606 cit_PacketFormat2(gspca_dev, 0x16, 0x00); cit_start_model1()
1607 cit_PacketFormat2(gspca_dev, 0x17, 0x28); cit_start_model1()
1608 cit_PacketFormat2(gspca_dev, 0x18, 0x7d); cit_start_model1()
1609 cit_PacketFormat2(gspca_dev, 0x19, 0xbe); cit_start_model1()
1610 cit_PacketFormat2(gspca_dev, 0x3f, 0xff); cit_start_model1()
1611 cit_PacketFormat2(gspca_dev, 0x39, 0x00); cit_start_model1()
1614 cit_Packet_Format1(gspca_dev, 0x00, 0x18); cit_start_model1()
1616 cit_Packet_Format1(gspca_dev, 0x13, 0x18); cit_start_model1()
1618 cit_Packet_Format1(gspca_dev, 0x14, 0x06); cit_start_model1()
1625 cit_Packet_Format1(gspca_dev, 0x31, 0x37); cit_start_model1()
1627 cit_Packet_Format1(gspca_dev, 0x32, 0x46); cit_start_model1()
1629 cit_Packet_Format1(gspca_dev, 0x33, 0x55); cit_start_model1()
1632 cit_Packet_Format1(gspca_dev, 0x2e, 0x04); cit_start_model1()
1634 cit_Packet_Format1(gspca_dev, 0x2d, 0x04); cit_start_model1()
1636 cit_Packet_Format1(gspca_dev, 0x29, 0x80); cit_start_model1()
1637 cit_Packet_Format1(gspca_dev, 0x2c, 0x01); cit_start_model1()
1638 cit_Packet_Format1(gspca_dev, 0x30, 0x17); cit_start_model1()
1639 cit_Packet_Format1(gspca_dev, 0x39, 0x08); cit_start_model1()
1641 cit_Packet_Format1(gspca_dev, 0x34, 0x00); cit_start_model1()
1643 cit_write_reg(gspca_dev, 0x00, 0x0101); cit_start_model1()
1644 cit_write_reg(gspca_dev, 0x00, 0x010a); cit_start_model1()
1646 switch (gspca_dev->pixfmt.width) { cit_start_model1()
1648 cit_write_reg(gspca_dev, 0x80, 0x0103); cit_start_model1()
1649 cit_write_reg(gspca_dev, 0x60, 0x0105); cit_start_model1()
1650 cit_write_reg(gspca_dev, 0x0c, 0x010b); cit_start_model1()
1651 cit_write_reg(gspca_dev, 0x04, 0x011b); /* Same everywhere */ cit_start_model1()
1652 cit_write_reg(gspca_dev, 0x0b, 0x011d); cit_start_model1()
1653 cit_write_reg(gspca_dev, 0x00, 0x011e); /* Same everywhere */ cit_start_model1()
1654 cit_write_reg(gspca_dev, 0x00, 0x0129); cit_start_model1()
1657 cit_write_reg(gspca_dev, 0xb0, 0x0103); cit_start_model1()
1658 cit_write_reg(gspca_dev, 0x8f, 0x0105); cit_start_model1()
1659 cit_write_reg(gspca_dev, 0x06, 0x010b); cit_start_model1()
1660 cit_write_reg(gspca_dev, 0x04, 0x011b); /* Same everywhere */ cit_start_model1()
1661 cit_write_reg(gspca_dev, 0x0d, 0x011d); cit_start_model1()
1662 cit_write_reg(gspca_dev, 0x00, 0x011e); /* Same everywhere */ cit_start_model1()
1663 cit_write_reg(gspca_dev, 0x03, 0x0129); cit_start_model1()
1666 cit_write_reg(gspca_dev, 0xb0, 0x0103); cit_start_model1()
1667 cit_write_reg(gspca_dev, 0x90, 0x0105); cit_start_model1()
1668 cit_write_reg(gspca_dev, 0x02, 0x010b); cit_start_model1()
1669 cit_write_reg(gspca_dev, 0x04, 0x011b); /* Same everywhere */ cit_start_model1()
1670 cit_write_reg(gspca_dev, 0x05, 0x011d); cit_start_model1()
1671 cit_write_reg(gspca_dev, 0x00, 0x011e); /* Same everywhere */ cit_start_model1()
1672 cit_write_reg(gspca_dev, 0x00, 0x0129); cit_start_model1()
1676 cit_write_reg(gspca_dev, 0xff, 0x012b); cit_start_model1()
1683 cit_Packet_Format1(gspca_dev, 0x31, 0xc3); cit_start_model1()
1685 cit_Packet_Format1(gspca_dev, 0x32, 0xd2); cit_start_model1()
1687 cit_Packet_Format1(gspca_dev, 0x33, 0xe1); cit_start_model1()
1691 cit_Packet_Format1(gspca_dev, 0x14, 0x0a); cit_start_model1()
1695 cit_PacketFormat2(gspca_dev, 0x13, 0x1a); cit_start_model1()
1698 cit_Packet_Format1(gspca_dev, 0x0027, cit_start_model1()
1703 switch (gspca_dev->pixfmt.width) { cit_start_model1()
1705 cit_Packet_Format1(gspca_dev, 0x2b, 0x1e); cit_start_model1()
1706 cit_write_reg(gspca_dev, 0xc9, 0x0119); /* Same everywhere */ cit_start_model1()
1707 cit_write_reg(gspca_dev, 0x80, 0x0109); /* Same everywhere */ cit_start_model1()
1708 cit_write_reg(gspca_dev, 0x36, 0x0102); cit_start_model1()
1709 cit_write_reg(gspca_dev, 0x1a, 0x0104); cit_start_model1()
1710 cit_write_reg(gspca_dev, 0x04, 0x011a); /* Same everywhere */ cit_start_model1()
1711 cit_write_reg(gspca_dev, 0x2b, 0x011c); cit_start_model1()
1712 cit_write_reg(gspca_dev, 0x23, 0x012a); /* Same everywhere */ cit_start_model1()
1715 cit_Packet_Format1(gspca_dev, 0x2b, 0x1e); cit_start_model1()
1716 cit_write_reg(gspca_dev, 0xc9, 0x0119); /* Same everywhere */ cit_start_model1()
1717 cit_write_reg(gspca_dev, 0x80, 0x0109); /* Same everywhere */ cit_start_model1()
1718 cit_write_reg(gspca_dev, 0x04, 0x0102); cit_start_model1()
1719 cit_write_reg(gspca_dev, 0x02, 0x0104); cit_start_model1()
1720 cit_write_reg(gspca_dev, 0x04, 0x011a); /* Same everywhere */ cit_start_model1()
1721 cit_write_reg(gspca_dev, 0x2b, 0x011c); cit_start_model1()
1722 cit_write_reg(gspca_dev, 0x23, 0x012a); /* Same everywhere */ cit_start_model1()
1725 cit_Packet_Format1(gspca_dev, 0x2b, 0x1f); cit_start_model1()
1726 cit_write_reg(gspca_dev, 0xc9, 0x0119); /* Same everywhere */ cit_start_model1()
1727 cit_write_reg(gspca_dev, 0x80, 0x0109); /* Same everywhere */ cit_start_model1()
1728 cit_write_reg(gspca_dev, 0x08, 0x0102); cit_start_model1()
1729 cit_write_reg(gspca_dev, 0x01, 0x0104); cit_start_model1()
1730 cit_write_reg(gspca_dev, 0x04, 0x011a); /* Same everywhere */ cit_start_model1()
1731 cit_write_reg(gspca_dev, 0x2f, 0x011c); cit_start_model1()
1732 cit_write_reg(gspca_dev, 0x23, 0x012a); /* Same everywhere */ cit_start_model1()
1736 cit_write_reg(gspca_dev, 0x01, 0x0100); /* LED On */ cit_start_model1()
1737 cit_write_reg(gspca_dev, clock_div, 0x0111); cit_start_model1()
1742 static int cit_start_model2(struct gspca_dev *gspca_dev) cit_start_model2() argument
1744 struct sd *sd = (struct sd *) gspca_dev; cit_start_model2()
1747 cit_write_reg(gspca_dev, 0x0000, 0x0100); /* LED on */ cit_start_model2()
1748 cit_read_reg(gspca_dev, 0x0116, 0); cit_start_model2()
1749 cit_write_reg(gspca_dev, 0x0060, 0x0116); cit_start_model2()
1750 cit_write_reg(gspca_dev, 0x0002, 0x0112); cit_start_model2()
1751 cit_write_reg(gspca_dev, 0x00bc, 0x012c); cit_start_model2()
1752 cit_write_reg(gspca_dev, 0x0008, 0x012b); cit_start_model2()
1753 cit_write_reg(gspca_dev, 0x0000, 0x0108); cit_start_model2()
1754 cit_write_reg(gspca_dev, 0x0001, 0x0133); cit_start_model2()
1755 cit_write_reg(gspca_dev, 0x0001, 0x0102); cit_start_model2()
1756 switch (gspca_dev->pixfmt.width) { cit_start_model2()
1758 cit_write_reg(gspca_dev, 0x002c, 0x0103); /* All except 320x240 */ cit_start_model2()
1759 cit_write_reg(gspca_dev, 0x0000, 0x0104); /* Same */ cit_start_model2()
1760 cit_write_reg(gspca_dev, 0x0024, 0x0105); /* 176x144, 352x288 */ cit_start_model2()
1761 cit_write_reg(gspca_dev, 0x00b9, 0x010a); /* Unique to this mode */ cit_start_model2()
1762 cit_write_reg(gspca_dev, 0x0038, 0x0119); /* Unique to this mode */ cit_start_model2()
1768 cit_write_reg(gspca_dev, 0x0028, 0x0103); /* Unique to this mode */ cit_start_model2()
1769 cit_write_reg(gspca_dev, 0x0000, 0x0104); /* Same */ cit_start_model2()
1770 cit_write_reg(gspca_dev, 0x001e, 0x0105); /* 320x240, 352x240 */ cit_start_model2()
1771 cit_write_reg(gspca_dev, 0x0039, 0x010a); /* All except 176x144 */ cit_start_model2()
1772 cit_write_reg(gspca_dev, 0x0070, 0x0119); /* All except 176x144 */ cit_start_model2()
1777 cit_write_reg(gspca_dev, 0x002c, 0x0103); /* All except 320x240 */ cit_start_model2()
1778 cit_write_reg(gspca_dev, 0x0000, 0x0104); /* Same */ cit_start_model2()
1779 cit_write_reg(gspca_dev, 0x001e, 0x0105); /* 320x240, 352x240 */ cit_start_model2()
1780 cit_write_reg(gspca_dev, 0x0039, 0x010a); /* All except 176x144 */ cit_start_model2()
1781 cit_write_reg(gspca_dev, 0x0070, 0x0119); /* All except 176x144 */ cit_start_model2()
1786 cit_write_reg(gspca_dev, 0x002c, 0x0103); /* All except 320x240 */ cit_start_model2()
1787 cit_write_reg(gspca_dev, 0x0000, 0x0104); /* Same */ cit_start_model2()
1788 cit_write_reg(gspca_dev, 0x0024, 0x0105); /* 176x144, 352x288 */ cit_start_model2()
1789 cit_write_reg(gspca_dev, 0x0039, 0x010a); /* All except 176x144 */ cit_start_model2()
1790 cit_write_reg(gspca_dev, 0x0070, 0x0119); /* All except 176x144 */ cit_start_model2()
1795 cit_write_reg(gspca_dev, 0x0000, 0x0100); /* LED on */ cit_start_model2()
1797 switch (gspca_dev->pixfmt.width) { cit_start_model2()
1799 cit_write_reg(gspca_dev, 0x0050, 0x0111); cit_start_model2()
1800 cit_write_reg(gspca_dev, 0x00d0, 0x0111); cit_start_model2()
1804 cit_write_reg(gspca_dev, 0x0040, 0x0111); cit_start_model2()
1805 cit_write_reg(gspca_dev, 0x00c0, 0x0111); cit_start_model2()
1808 cit_write_reg(gspca_dev, 0x009b, 0x010f); cit_start_model2()
1809 cit_write_reg(gspca_dev, 0x00bb, 0x010f); cit_start_model2()
1824 cit_model2_Packet1(gspca_dev, 0x000a, 0x005c); cit_start_model2()
1825 cit_model2_Packet1(gspca_dev, 0x0004, 0x0000); cit_start_model2()
1826 cit_model2_Packet1(gspca_dev, 0x0006, 0x00fb); cit_start_model2()
1827 cit_model2_Packet1(gspca_dev, 0x0008, 0x0000); cit_start_model2()
1828 cit_model2_Packet1(gspca_dev, 0x000c, 0x0009); cit_start_model2()
1829 cit_model2_Packet1(gspca_dev, 0x0012, 0x000a); cit_start_model2()
1830 cit_model2_Packet1(gspca_dev, 0x002a, 0x0000); cit_start_model2()
1831 cit_model2_Packet1(gspca_dev, 0x002c, 0x0000); cit_start_model2()
1832 cit_model2_Packet1(gspca_dev, 0x002e, 0x0008); cit_start_model2()
1839 cit_model2_Packet1(gspca_dev, 0x0030, 0x0000); cit_start_model2()
1845 switch (gspca_dev->pixfmt.width) { cit_start_model2()
1847 cit_model2_Packet1(gspca_dev, 0x0014, 0x0002); cit_start_model2()
1848 cit_model2_Packet1(gspca_dev, 0x0016, 0x0002); /* Horizontal shift */ cit_start_model2()
1849 cit_model2_Packet1(gspca_dev, 0x0018, 0x004a); /* Another hardware setting */ cit_start_model2()
1853 cit_model2_Packet1(gspca_dev, 0x0014, 0x0009); cit_start_model2()
1854 cit_model2_Packet1(gspca_dev, 0x0016, 0x0005); /* Horizontal shift */ cit_start_model2()
1855 cit_model2_Packet1(gspca_dev, 0x0018, 0x0044); /* Another hardware setting */ cit_start_model2()
1861 cit_model2_Packet1(gspca_dev, 0x0014, 0x0009); /* Windows sets this to 8 */ cit_start_model2()
1862 cit_model2_Packet1(gspca_dev, 0x0016, 0x0003); /* Horizontal shift */ cit_start_model2()
1863 cit_model2_Packet1(gspca_dev, 0x0018, 0x0044); /* Windows sets this to 0x0045 */ cit_start_model2()
1868 cit_model2_Packet1(gspca_dev, 0x0014, 0x0003); cit_start_model2()
1869 cit_model2_Packet1(gspca_dev, 0x0016, 0x0002); /* Horizontal shift */ cit_start_model2()
1870 cit_model2_Packet1(gspca_dev, 0x0018, 0x004a); /* Another hardware setting */ cit_start_model2()
1878 cit_model2_Packet1(gspca_dev, 0x001a, 0x005a); cit_start_model2()
1898 cit_model2_Packet1(gspca_dev, 0x001c, clock_div); cit_start_model2()
1906 switch (gspca_dev->pixfmt.width) { cit_start_model2()
1908 cit_model2_Packet1(gspca_dev, 0x0026, 0x00c2); cit_start_model2()
1911 cit_model2_Packet1(gspca_dev, 0x0026, 0x0044); cit_start_model2()
1915 cit_model2_Packet1(gspca_dev, 0x0026, 0x0046); cit_start_model2()
1919 cit_model2_Packet1(gspca_dev, 0x0026, 0x0048); cit_start_model2()
1923 cit_model2_Packet1(gspca_dev, 0x0028, v4l2_ctrl_g_ctrl(sd->lighting)); cit_start_model2()
1928 cit_model2_Packet1(gspca_dev, 0x001e, 0x002f); cit_start_model2()
1930 cit_model2_Packet1(gspca_dev, 0x0020, 0x0034); cit_start_model2()
1932 cit_model2_Packet1(gspca_dev, 0x0022, 0x00a0); cit_start_model2()
1935 cit_model2_Packet1(gspca_dev, 0x0030, 0x0004); cit_start_model2()
1940 static int cit_start_model3(struct gspca_dev *gspca_dev) cit_start_model3() argument
1947 cit_read_reg(gspca_dev, 0x128, 1); cit_start_model3()
1949 cit_write_reg(gspca_dev, 0x0000, 0x0100); cit_start_model3()
1950 cit_read_reg(gspca_dev, 0x0116, 0); cit_start_model3()
1951 cit_write_reg(gspca_dev, 0x0060, 0x0116); cit_start_model3()
1952 cit_write_reg(gspca_dev, 0x0002, 0x0112); cit_start_model3()
1953 cit_write_reg(gspca_dev, 0x0000, 0x0123); cit_start_model3()
1954 cit_write_reg(gspca_dev, 0x0001, 0x0117); cit_start_model3()
1955 cit_write_reg(gspca_dev, 0x0040, 0x0108); cit_start_model3()
1956 cit_write_reg(gspca_dev, 0x0019, 0x012c); cit_start_model3()
1957 cit_write_reg(gspca_dev, 0x0060, 0x0116); cit_start_model3()
1958 cit_write_reg(gspca_dev, 0x0002, 0x0115); cit_start_model3()
1959 cit_write_reg(gspca_dev, 0x0003, 0x0115); cit_start_model3()
1960 cit_read_reg(gspca_dev, 0x0115, 0); cit_start_model3()
1961 cit_write_reg(gspca_dev, 0x000b, 0x0115); cit_start_model3()
1966 cit_write_reg(gspca_dev, 0x0078, 0x012d); cit_start_model3()
1967 cit_write_reg(gspca_dev, 0x0001, 0x012f); cit_start_model3()
1968 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model3()
1969 cit_write_reg(gspca_dev, 0x0079, 0x012d); cit_start_model3()
1970 cit_write_reg(gspca_dev, 0x00ff, 0x0130); cit_start_model3()
1971 cit_write_reg(gspca_dev, 0xcd41, 0x0124); cit_start_model3()
1972 cit_write_reg(gspca_dev, 0xfffa, 0x0124); cit_start_model3()
1973 cit_read_reg(gspca_dev, 0x0126, 1); cit_start_model3()
1976 cit_model3_Packet1(gspca_dev, 0x000a, 0x0040); cit_start_model3()
1977 cit_model3_Packet1(gspca_dev, 0x000b, 0x00f6); cit_start_model3()
1978 cit_model3_Packet1(gspca_dev, 0x000c, 0x0002); cit_start_model3()
1979 cit_model3_Packet1(gspca_dev, 0x000d, 0x0020); cit_start_model3()
1980 cit_model3_Packet1(gspca_dev, 0x000e, 0x0033); cit_start_model3()
1981 cit_model3_Packet1(gspca_dev, 0x000f, 0x0007); cit_start_model3()
1982 cit_model3_Packet1(gspca_dev, 0x0010, 0x0000); cit_start_model3()
1983 cit_model3_Packet1(gspca_dev, 0x0011, 0x0070); cit_start_model3()
1984 cit_model3_Packet1(gspca_dev, 0x0012, 0x0030); cit_start_model3()
1985 cit_model3_Packet1(gspca_dev, 0x0013, 0x0000); cit_start_model3()
1986 cit_model3_Packet1(gspca_dev, 0x0014, 0x0001); cit_start_model3()
1987 cit_model3_Packet1(gspca_dev, 0x0015, 0x0001); cit_start_model3()
1988 cit_model3_Packet1(gspca_dev, 0x0016, 0x0001); cit_start_model3()
1989 cit_model3_Packet1(gspca_dev, 0x0017, 0x0001); cit_start_model3()
1990 cit_model3_Packet1(gspca_dev, 0x0018, 0x0000); cit_start_model3()
1991 cit_model3_Packet1(gspca_dev, 0x001e, 0x00c3); cit_start_model3()
1992 cit_model3_Packet1(gspca_dev, 0x0020, 0x0000); cit_start_model3()
1993 cit_model3_Packet1(gspca_dev, 0x0028, 0x0010); cit_start_model3()
1994 cit_model3_Packet1(gspca_dev, 0x0029, 0x0054); cit_start_model3()
1995 cit_model3_Packet1(gspca_dev, 0x002a, 0x0013); cit_start_model3()
1996 cit_model3_Packet1(gspca_dev, 0x002b, 0x0007); cit_start_model3()
1997 cit_model3_Packet1(gspca_dev, 0x002d, 0x0028); cit_start_model3()
1998 cit_model3_Packet1(gspca_dev, 0x002e, 0x0000); cit_start_model3()
1999 cit_model3_Packet1(gspca_dev, 0x0031, 0x0000); cit_start_model3()
2000 cit_model3_Packet1(gspca_dev, 0x0032, 0x0000); cit_start_model3()
2001 cit_model3_Packet1(gspca_dev, 0x0033, 0x0000); cit_start_model3()
2002 cit_model3_Packet1(gspca_dev, 0x0034, 0x0000); cit_start_model3()
2003 cit_model3_Packet1(gspca_dev, 0x0035, 0x0038); cit_start_model3()
2004 cit_model3_Packet1(gspca_dev, 0x003a, 0x0001); cit_start_model3()
2005 cit_model3_Packet1(gspca_dev, 0x003c, 0x001e); cit_start_model3()
2006 cit_model3_Packet1(gspca_dev, 0x003f, 0x000a); cit_start_model3()
2007 cit_model3_Packet1(gspca_dev, 0x0041, 0x0000); cit_start_model3()
2008 cit_model3_Packet1(gspca_dev, 0x0046, 0x003f); cit_start_model3()
2009 cit_model3_Packet1(gspca_dev, 0x0047, 0x0000); cit_start_model3()
2010 cit_model3_Packet1(gspca_dev, 0x0050, 0x0005); cit_start_model3()
2011 cit_model3_Packet1(gspca_dev, 0x0052, 0x001a); cit_start_model3()
2012 cit_model3_Packet1(gspca_dev, 0x0053, 0x0003); cit_start_model3()
2013 cit_model3_Packet1(gspca_dev, 0x005a, 0x006b); cit_start_model3()
2014 cit_model3_Packet1(gspca_dev, 0x005d, 0x001e); cit_start_model3()
2015 cit_model3_Packet1(gspca_dev, 0x005e, 0x0030); cit_start_model3()
2016 cit_model3_Packet1(gspca_dev, 0x005f, 0x0041); cit_start_model3()
2017 cit_model3_Packet1(gspca_dev, 0x0064, 0x0008); cit_start_model3()
2018 cit_model3_Packet1(gspca_dev, 0x0065, 0x0015); cit_start_model3()
2019 cit_model3_Packet1(gspca_dev, 0x0068, 0x000f); cit_start_model3()
2020 cit_model3_Packet1(gspca_dev, 0x0079, 0x0000); cit_start_model3()
2021 cit_model3_Packet1(gspca_dev, 0x007a, 0x0000); cit_start_model3()
2022 cit_model3_Packet1(gspca_dev, 0x007c, 0x003f); cit_start_model3()
2023 cit_model3_Packet1(gspca_dev, 0x0082, 0x000f); cit_start_model3()
2024 cit_model3_Packet1(gspca_dev, 0x0085, 0x0000); cit_start_model3()
2025 cit_model3_Packet1(gspca_dev, 0x0099, 0x0000); cit_start_model3()
2026 cit_model3_Packet1(gspca_dev, 0x009b, 0x0023); cit_start_model3()
2027 cit_model3_Packet1(gspca_dev, 0x009c, 0x0022); cit_start_model3()
2028 cit_model3_Packet1(gspca_dev, 0x009d, 0x0096); cit_start_model3()
2029 cit_model3_Packet1(gspca_dev, 0x009e, 0x0096); cit_start_model3()
2030 cit_model3_Packet1(gspca_dev, 0x009f, 0x000a); cit_start_model3()
2032 switch (gspca_dev->pixfmt.width) { cit_start_model3()
2034 cit_write_reg(gspca_dev, 0x0000, 0x0101); /* Same on 160x120, 320x240 */ cit_start_model3()
2035 cit_write_reg(gspca_dev, 0x00a0, 0x0103); /* Same on 160x120, 320x240 */ cit_start_model3()
2036 cit_write_reg(gspca_dev, 0x0078, 0x0105); /* Same on 160x120, 320x240 */ cit_start_model3()
2037 cit_write_reg(gspca_dev, 0x0000, 0x010a); /* Same */ cit_start_model3()
2038 cit_write_reg(gspca_dev, 0x0024, 0x010b); /* Differs everywhere */ cit_start_model3()
2039 cit_write_reg(gspca_dev, 0x00a9, 0x0119); cit_start_model3()
2040 cit_write_reg(gspca_dev, 0x0016, 0x011b); cit_start_model3()
2041 cit_write_reg(gspca_dev, 0x0002, 0x011d); /* Same on 160x120, 320x240 */ cit_start_model3()
2042 cit_write_reg(gspca_dev, 0x0003, 0x011e); /* Same on 160x120, 640x480 */ cit_start_model3()
2043 cit_write_reg(gspca_dev, 0x0000, 0x0129); /* Same */ cit_start_model3()
2044 cit_write_reg(gspca_dev, 0x00fc, 0x012b); /* Same */ cit_start_model3()
2045 cit_write_reg(gspca_dev, 0x0018, 0x0102); cit_start_model3()
2046 cit_write_reg(gspca_dev, 0x0004, 0x0104); cit_start_model3()
2047 cit_write_reg(gspca_dev, 0x0004, 0x011a); cit_start_model3()
2048 cit_write_reg(gspca_dev, 0x0028, 0x011c); cit_start_model3()
2049 cit_write_reg(gspca_dev, 0x0022, 0x012a); /* Same */ cit_start_model3()
2050 cit_write_reg(gspca_dev, 0x0000, 0x0118); cit_start_model3()
2051 cit_write_reg(gspca_dev, 0x0000, 0x0132); cit_start_model3()
2052 cit_model3_Packet1(gspca_dev, 0x0021, 0x0001); /* Same */ cit_start_model3()
2053 cit_write_reg(gspca_dev, compression, 0x0109); cit_start_model3()
2057 cit_write_reg(gspca_dev, 0x0000, 0x0101); /* Same on 160x120, 320x240 */ cit_start_model3()
2058 cit_write_reg(gspca_dev, 0x00a0, 0x0103); /* Same on 160x120, 320x240 */ cit_start_model3()
2059 cit_write_reg(gspca_dev, 0x0078, 0x0105); /* Same on 160x120, 320x240 */ cit_start_model3()
2060 cit_write_reg(gspca_dev, 0x0000, 0x010a); /* Same */ cit_start_model3()
2061 cit_write_reg(gspca_dev, 0x0028, 0x010b); /* Differs everywhere */ cit_start_model3()
2062 cit_write_reg(gspca_dev, 0x0002, 0x011d); /* Same */ cit_start_model3()
2063 cit_write_reg(gspca_dev, 0x0000, 0x011e); cit_start_model3()
2064 cit_write_reg(gspca_dev, 0x0000, 0x0129); /* Same */ cit_start_model3()
2065 cit_write_reg(gspca_dev, 0x00fc, 0x012b); /* Same */ cit_start_model3()
2067 cit_write_reg(gspca_dev, 0x0022, 0x012a); /* Same */ cit_start_model3()
2068 cit_model3_Packet1(gspca_dev, 0x0021, 0x0001); /* Same */ cit_start_model3()
2069 cit_write_reg(gspca_dev, compression, 0x0109); cit_start_model3()
2070 cit_write_reg(gspca_dev, 0x00d9, 0x0119); cit_start_model3()
2071 cit_write_reg(gspca_dev, 0x0006, 0x011b); cit_start_model3()
2072 cit_write_reg(gspca_dev, 0x0021, 0x0102); /* Same on 320x240, 640x480 */ cit_start_model3()
2073 cit_write_reg(gspca_dev, 0x0010, 0x0104); cit_start_model3()
2074 cit_write_reg(gspca_dev, 0x0004, 0x011a); cit_start_model3()
2075 cit_write_reg(gspca_dev, 0x003f, 0x011c); cit_start_model3()
2076 cit_write_reg(gspca_dev, 0x001c, 0x0118); cit_start_model3()
2077 cit_write_reg(gspca_dev, 0x0000, 0x0132); cit_start_model3()
2081 cit_write_reg(gspca_dev, 0x00f0, 0x0105); cit_start_model3()
2082 cit_write_reg(gspca_dev, 0x0000, 0x010a); /* Same */ cit_start_model3()
2083 cit_write_reg(gspca_dev, 0x0038, 0x010b); /* Differs everywhere */ cit_start_model3()
2084 cit_write_reg(gspca_dev, 0x00d9, 0x0119); /* Same on 320x240, 640x480 */ cit_start_model3()
2085 cit_write_reg(gspca_dev, 0x0006, 0x011b); /* Same on 320x240, 640x480 */ cit_start_model3()
2086 cit_write_reg(gspca_dev, 0x0004, 0x011d); /* NC */ cit_start_model3()
2087 cit_write_reg(gspca_dev, 0x0003, 0x011e); /* Same on 160x120, 640x480 */ cit_start_model3()
2088 cit_write_reg(gspca_dev, 0x0000, 0x0129); /* Same */ cit_start_model3()
2089 cit_write_reg(gspca_dev, 0x00fc, 0x012b); /* Same */ cit_start_model3()
2090 cit_write_reg(gspca_dev, 0x0021, 0x0102); /* Same on 320x240, 640x480 */ cit_start_model3()
2091 cit_write_reg(gspca_dev, 0x0016, 0x0104); /* NC */ cit_start_model3()
2092 cit_write_reg(gspca_dev, 0x0004, 0x011a); /* Same on 320x240, 640x480 */ cit_start_model3()
2093 cit_write_reg(gspca_dev, 0x003f, 0x011c); /* Same on 320x240, 640x480 */ cit_start_model3()
2094 cit_write_reg(gspca_dev, 0x0022, 0x012a); /* Same */ cit_start_model3()
2095 cit_write_reg(gspca_dev, 0x001c, 0x0118); /* Same on 320x240, 640x480 */ cit_start_model3()
2096 cit_model3_Packet1(gspca_dev, 0x0021, 0x0001); /* Same */ cit_start_model3()
2097 cit_write_reg(gspca_dev, compression, 0x0109); cit_start_model3()
2098 cit_write_reg(gspca_dev, 0x0040, 0x0101); cit_start_model3()
2099 cit_write_reg(gspca_dev, 0x0040, 0x0103); cit_start_model3()
2100 cit_write_reg(gspca_dev, 0x0000, 0x0132); /* Same on 320x240, 640x480 */ cit_start_model3()
2105 cit_model3_Packet1(gspca_dev, 0x007e, 0x000e); /* Hue */ cit_start_model3()
2106 cit_model3_Packet1(gspca_dev, 0x0036, 0x0011); /* Brightness */ cit_start_model3()
2107 cit_model3_Packet1(gspca_dev, 0x0060, 0x0002); /* Sharpness */ cit_start_model3()
2108 cit_model3_Packet1(gspca_dev, 0x0061, 0x0004); /* Sharpness */ cit_start_model3()
2109 cit_model3_Packet1(gspca_dev, 0x0062, 0x0005); /* Sharpness */ cit_start_model3()
2110 cit_model3_Packet1(gspca_dev, 0x0063, 0x0014); /* Sharpness */ cit_start_model3()
2111 cit_model3_Packet1(gspca_dev, 0x0096, 0x00a0); /* Red sharpness */ cit_start_model3()
2112 cit_model3_Packet1(gspca_dev, 0x0097, 0x0096); /* Blue sharpness */ cit_start_model3()
2113 cit_model3_Packet1(gspca_dev, 0x0067, 0x0001); /* Contrast */ cit_start_model3()
2114 cit_model3_Packet1(gspca_dev, 0x005b, 0x000c); /* Contrast */ cit_start_model3()
2115 cit_model3_Packet1(gspca_dev, 0x005c, 0x0016); /* Contrast */ cit_start_model3()
2116 cit_model3_Packet1(gspca_dev, 0x0098, 0x000b); cit_start_model3()
2117 cit_model3_Packet1(gspca_dev, 0x002c, 0x0003); /* Was 1, broke 640x480 */ cit_start_model3()
2118 cit_model3_Packet1(gspca_dev, 0x002f, 0x002a); cit_start_model3()
2119 cit_model3_Packet1(gspca_dev, 0x0030, 0x0029); cit_start_model3()
2120 cit_model3_Packet1(gspca_dev, 0x0037, 0x0002); cit_start_model3()
2121 cit_model3_Packet1(gspca_dev, 0x0038, 0x0059); cit_start_model3()
2122 cit_model3_Packet1(gspca_dev, 0x003d, 0x002e); cit_start_model3()
2123 cit_model3_Packet1(gspca_dev, 0x003e, 0x0028); cit_start_model3()
2124 cit_model3_Packet1(gspca_dev, 0x0078, 0x0005); cit_start_model3()
2125 cit_model3_Packet1(gspca_dev, 0x007b, 0x0011); cit_start_model3()
2126 cit_model3_Packet1(gspca_dev, 0x007d, 0x004b); cit_start_model3()
2127 cit_model3_Packet1(gspca_dev, 0x007f, 0x0022); cit_start_model3()
2128 cit_model3_Packet1(gspca_dev, 0x0080, 0x000c); cit_start_model3()
2129 cit_model3_Packet1(gspca_dev, 0x0081, 0x000b); cit_start_model3()
2130 cit_model3_Packet1(gspca_dev, 0x0083, 0x00fd); cit_start_model3()
2131 cit_model3_Packet1(gspca_dev, 0x0086, 0x000b); cit_start_model3()
2132 cit_model3_Packet1(gspca_dev, 0x0087, 0x000b); cit_start_model3()
2133 cit_model3_Packet1(gspca_dev, 0x007e, 0x000e); cit_start_model3()
2134 cit_model3_Packet1(gspca_dev, 0x0096, 0x00a0); /* Red sharpness */ cit_start_model3()
2135 cit_model3_Packet1(gspca_dev, 0x0097, 0x0096); /* Blue sharpness */ cit_start_model3()
2136 cit_model3_Packet1(gspca_dev, 0x0098, 0x000b); cit_start_model3()
2141 cit_write_reg(gspca_dev, clock_div, 0x0111); /* Clock Divider */ cit_start_model3()
2143 switch (gspca_dev->pixfmt.width) { cit_start_model3()
2145 cit_model3_Packet1(gspca_dev, 0x001f, 0x0000); /* Same */ cit_start_model3()
2146 cit_model3_Packet1(gspca_dev, 0x0039, 0x001f); /* Same */ cit_start_model3()
2147 cit_model3_Packet1(gspca_dev, 0x003b, 0x003c); /* Same */ cit_start_model3()
2148 cit_model3_Packet1(gspca_dev, 0x0040, 0x000a); cit_start_model3()
2149 cit_model3_Packet1(gspca_dev, 0x0051, 0x000a); cit_start_model3()
2152 cit_model3_Packet1(gspca_dev, 0x001f, 0x0000); /* Same */ cit_start_model3()
2153 cit_model3_Packet1(gspca_dev, 0x0039, 0x001f); /* Same */ cit_start_model3()
2154 cit_model3_Packet1(gspca_dev, 0x003b, 0x003c); /* Same */ cit_start_model3()
2155 cit_model3_Packet1(gspca_dev, 0x0040, 0x0008); cit_start_model3()
2156 cit_model3_Packet1(gspca_dev, 0x0051, 0x000b); cit_start_model3()
2159 cit_model3_Packet1(gspca_dev, 0x001f, 0x0002); /* !Same */ cit_start_model3()
2160 cit_model3_Packet1(gspca_dev, 0x0039, 0x003e); /* !Same */ cit_start_model3()
2161 cit_model3_Packet1(gspca_dev, 0x0040, 0x0008); cit_start_model3()
2162 cit_model3_Packet1(gspca_dev, 0x0051, 0x000a); cit_start_model3()
2170 cit_read_reg(gspca_dev, rca_initdata[i][2], 0); cit_start_model3()
2172 cit_write_reg(gspca_dev, rca_initdata[i][1], cit_start_model3()
2180 static int cit_start_model4(struct gspca_dev *gspca_dev) cit_start_model4() argument
2182 struct sd *sd = (struct sd *) gspca_dev; cit_start_model4()
2184 cit_write_reg(gspca_dev, 0x0000, 0x0100); cit_start_model4()
2185 cit_write_reg(gspca_dev, 0x00c0, 0x0111); cit_start_model4()
2186 cit_write_reg(gspca_dev, 0x00bc, 0x012c); cit_start_model4()
2187 cit_write_reg(gspca_dev, 0x0080, 0x012b); cit_start_model4()
2188 cit_write_reg(gspca_dev, 0x0000, 0x0108); cit_start_model4()
2189 cit_write_reg(gspca_dev, 0x0001, 0x0133); cit_start_model4()
2190 cit_write_reg(gspca_dev, 0x009b, 0x010f); cit_start_model4()
2191 cit_write_reg(gspca_dev, 0x00bb, 0x010f); cit_start_model4()
2192 cit_model4_Packet1(gspca_dev, 0x0038, 0x0000); cit_start_model4()
2193 cit_model4_Packet1(gspca_dev, 0x000a, 0x005c); cit_start_model4()
2195 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2196 cit_write_reg(gspca_dev, 0x0004, 0x012f); cit_start_model4()
2197 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2198 cit_write_reg(gspca_dev, 0x0000, 0x0127); cit_start_model4()
2199 cit_write_reg(gspca_dev, 0x00fb, 0x012e); cit_start_model4()
2200 cit_write_reg(gspca_dev, 0x0000, 0x0130); cit_start_model4()
2201 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2202 cit_write_reg(gspca_dev, 0x00aa, 0x012f); cit_start_model4()
2203 cit_write_reg(gspca_dev, 0xd055, 0x0124); cit_start_model4()
2204 cit_write_reg(gspca_dev, 0x000c, 0x0127); cit_start_model4()
2205 cit_write_reg(gspca_dev, 0x0009, 0x012e); cit_start_model4()
2206 cit_write_reg(gspca_dev, 0xaa28, 0x0124); cit_start_model4()
2208 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2209 cit_write_reg(gspca_dev, 0x0012, 0x012f); cit_start_model4()
2210 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2211 cit_write_reg(gspca_dev, 0x0008, 0x0127); cit_start_model4()
2212 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2213 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2214 cit_write_reg(gspca_dev, 0x002a, 0x012d); cit_start_model4()
2215 cit_write_reg(gspca_dev, 0x0000, 0x012f); cit_start_model4()
2216 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2217 cit_write_reg(gspca_dev, 0xfffa, 0x0124); cit_start_model4()
2218 cit_model4_Packet1(gspca_dev, 0x0034, 0x0000); cit_start_model4()
2220 switch (gspca_dev->pixfmt.width) { cit_start_model4()
2222 cit_write_reg(gspca_dev, 0x0070, 0x0119); cit_start_model4()
2223 cit_write_reg(gspca_dev, 0x00d0, 0x0111); cit_start_model4()
2224 cit_write_reg(gspca_dev, 0x0039, 0x010a); cit_start_model4()
2225 cit_write_reg(gspca_dev, 0x0001, 0x0102); cit_start_model4()
2226 cit_write_reg(gspca_dev, 0x0028, 0x0103); cit_start_model4()
2227 cit_write_reg(gspca_dev, 0x0000, 0x0104); cit_start_model4()
2228 cit_write_reg(gspca_dev, 0x001e, 0x0105); cit_start_model4()
2229 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2230 cit_write_reg(gspca_dev, 0x0016, 0x012f); cit_start_model4()
2231 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2232 cit_write_reg(gspca_dev, 0x000a, 0x0127); cit_start_model4()
2233 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2234 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2235 cit_write_reg(gspca_dev, 0x0014, 0x012d); cit_start_model4()
2236 cit_write_reg(gspca_dev, 0x0008, 0x012f); cit_start_model4()
2237 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2238 cit_write_reg(gspca_dev, 0x00aa, 0x012e); cit_start_model4()
2239 cit_write_reg(gspca_dev, 0x001a, 0x0130); cit_start_model4()
2240 cit_write_reg(gspca_dev, 0x8a0a, 0x0124); cit_start_model4()
2241 cit_write_reg(gspca_dev, 0x005a, 0x012d); cit_start_model4()
2242 cit_write_reg(gspca_dev, 0x9545, 0x0124); cit_start_model4()
2243 cit_write_reg(gspca_dev, 0x00aa, 0x0127); cit_start_model4()
2244 cit_write_reg(gspca_dev, 0x0018, 0x012e); cit_start_model4()
2245 cit_write_reg(gspca_dev, 0x0043, 0x0130); cit_start_model4()
2246 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2247 cit_write_reg(gspca_dev, 0x00aa, 0x012f); cit_start_model4()
2248 cit_write_reg(gspca_dev, 0xd055, 0x0124); cit_start_model4()
2249 cit_write_reg(gspca_dev, 0x001c, 0x0127); cit_start_model4()
2250 cit_write_reg(gspca_dev, 0x00eb, 0x012e); cit_start_model4()
2251 cit_write_reg(gspca_dev, 0xaa28, 0x0124); cit_start_model4()
2252 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2253 cit_write_reg(gspca_dev, 0x0032, 0x012f); cit_start_model4()
2254 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2255 cit_write_reg(gspca_dev, 0x0000, 0x0127); cit_start_model4()
2256 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2257 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2258 cit_write_reg(gspca_dev, 0x0036, 0x012d); cit_start_model4()
2259 cit_write_reg(gspca_dev, 0x0008, 0x012f); cit_start_model4()
2260 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2261 cit_write_reg(gspca_dev, 0xfffa, 0x0124); cit_start_model4()
2262 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2263 cit_write_reg(gspca_dev, 0x001e, 0x012f); cit_start_model4()
2264 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2265 cit_write_reg(gspca_dev, 0x0017, 0x0127); cit_start_model4()
2266 cit_write_reg(gspca_dev, 0x0013, 0x012e); cit_start_model4()
2267 cit_write_reg(gspca_dev, 0x0031, 0x0130); cit_start_model4()
2268 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2269 cit_write_reg(gspca_dev, 0x0017, 0x012d); cit_start_model4()
2270 cit_write_reg(gspca_dev, 0x0078, 0x012f); cit_start_model4()
2271 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2272 cit_write_reg(gspca_dev, 0x0000, 0x0127); cit_start_model4()
2273 cit_write_reg(gspca_dev, 0xfea8, 0x0124); cit_start_model4()
2277 cit_write_reg(gspca_dev, 0x0038, 0x0119); cit_start_model4()
2278 cit_write_reg(gspca_dev, 0x00d0, 0x0111); cit_start_model4()
2279 cit_write_reg(gspca_dev, 0x00b9, 0x010a); cit_start_model4()
2280 cit_write_reg(gspca_dev, 0x0001, 0x0102); cit_start_model4()
2281 cit_write_reg(gspca_dev, 0x0028, 0x0103); cit_start_model4()
2282 cit_write_reg(gspca_dev, 0x0000, 0x0104); cit_start_model4()
2283 cit_write_reg(gspca_dev, 0x001e, 0x0105); cit_start_model4()
2284 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2285 cit_write_reg(gspca_dev, 0x0016, 0x012f); cit_start_model4()
2286 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2287 cit_write_reg(gspca_dev, 0x000b, 0x0127); cit_start_model4()
2288 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2289 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2290 cit_write_reg(gspca_dev, 0x0014, 0x012d); cit_start_model4()
2291 cit_write_reg(gspca_dev, 0x0008, 0x012f); cit_start_model4()
2292 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2293 cit_write_reg(gspca_dev, 0x00aa, 0x012e); cit_start_model4()
2294 cit_write_reg(gspca_dev, 0x001a, 0x0130); cit_start_model4()
2295 cit_write_reg(gspca_dev, 0x8a0a, 0x0124); cit_start_model4()
2296 cit_write_reg(gspca_dev, 0x005a, 0x012d); cit_start_model4()
2297 cit_write_reg(gspca_dev, 0x9545, 0x0124); cit_start_model4()
2298 cit_write_reg(gspca_dev, 0x00aa, 0x0127); cit_start_model4()
2299 cit_write_reg(gspca_dev, 0x0018, 0x012e); cit_start_model4()
2300 cit_write_reg(gspca_dev, 0x0043, 0x0130); cit_start_model4()
2301 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2302 cit_write_reg(gspca_dev, 0x00aa, 0x012f); cit_start_model4()
2303 cit_write_reg(gspca_dev, 0xd055, 0x0124); cit_start_model4()
2304 cit_write_reg(gspca_dev, 0x001c, 0x0127); cit_start_model4()
2305 cit_write_reg(gspca_dev, 0x00c7, 0x012e); cit_start_model4()
2306 cit_write_reg(gspca_dev, 0xaa28, 0x0124); cit_start_model4()
2307 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2308 cit_write_reg(gspca_dev, 0x0032, 0x012f); cit_start_model4()
2309 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2310 cit_write_reg(gspca_dev, 0x0025, 0x0127); cit_start_model4()
2311 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2312 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2313 cit_write_reg(gspca_dev, 0x0036, 0x012d); cit_start_model4()
2314 cit_write_reg(gspca_dev, 0x0008, 0x012f); cit_start_model4()
2315 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2316 cit_write_reg(gspca_dev, 0xfffa, 0x0124); cit_start_model4()
2317 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2318 cit_write_reg(gspca_dev, 0x001e, 0x012f); cit_start_model4()
2319 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2320 cit_write_reg(gspca_dev, 0x0048, 0x0127); cit_start_model4()
2321 cit_write_reg(gspca_dev, 0x0035, 0x012e); cit_start_model4()
2322 cit_write_reg(gspca_dev, 0x00d0, 0x0130); cit_start_model4()
2323 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2324 cit_write_reg(gspca_dev, 0x0048, 0x012d); cit_start_model4()
2325 cit_write_reg(gspca_dev, 0x0090, 0x012f); cit_start_model4()
2326 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2327 cit_write_reg(gspca_dev, 0x0001, 0x0127); cit_start_model4()
2328 cit_write_reg(gspca_dev, 0xfea8, 0x0124); cit_start_model4()
2332 cit_write_reg(gspca_dev, 0x0038, 0x0119); cit_start_model4()
2333 cit_write_reg(gspca_dev, 0x00d0, 0x0111); cit_start_model4()
2334 cit_write_reg(gspca_dev, 0x00b9, 0x010a); cit_start_model4()
2335 cit_write_reg(gspca_dev, 0x0001, 0x0102); cit_start_model4()
2336 cit_write_reg(gspca_dev, 0x002c, 0x0103); cit_start_model4()
2337 cit_write_reg(gspca_dev, 0x0000, 0x0104); cit_start_model4()
2338 cit_write_reg(gspca_dev, 0x0024, 0x0105); cit_start_model4()
2339 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2340 cit_write_reg(gspca_dev, 0x0016, 0x012f); cit_start_model4()
2341 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2342 cit_write_reg(gspca_dev, 0x0007, 0x0127); cit_start_model4()
2343 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2344 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2345 cit_write_reg(gspca_dev, 0x0014, 0x012d); cit_start_model4()
2346 cit_write_reg(gspca_dev, 0x0001, 0x012f); cit_start_model4()
2347 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2348 cit_write_reg(gspca_dev, 0x00aa, 0x012e); cit_start_model4()
2349 cit_write_reg(gspca_dev, 0x001a, 0x0130); cit_start_model4()
2350 cit_write_reg(gspca_dev, 0x8a0a, 0x0124); cit_start_model4()
2351 cit_write_reg(gspca_dev, 0x005e, 0x012d); cit_start_model4()
2352 cit_write_reg(gspca_dev, 0x9545, 0x0124); cit_start_model4()
2353 cit_write_reg(gspca_dev, 0x00aa, 0x0127); cit_start_model4()
2354 cit_write_reg(gspca_dev, 0x0018, 0x012e); cit_start_model4()
2355 cit_write_reg(gspca_dev, 0x0049, 0x0130); cit_start_model4()
2356 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2357 cit_write_reg(gspca_dev, 0x00aa, 0x012f); cit_start_model4()
2358 cit_write_reg(gspca_dev, 0xd055, 0x0124); cit_start_model4()
2359 cit_write_reg(gspca_dev, 0x001c, 0x0127); cit_start_model4()
2360 cit_write_reg(gspca_dev, 0x00c7, 0x012e); cit_start_model4()
2361 cit_write_reg(gspca_dev, 0xaa28, 0x0124); cit_start_model4()
2362 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2363 cit_write_reg(gspca_dev, 0x0032, 0x012f); cit_start_model4()
2364 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2365 cit_write_reg(gspca_dev, 0x0028, 0x0127); cit_start_model4()
2366 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2367 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2368 cit_write_reg(gspca_dev, 0x0036, 0x012d); cit_start_model4()
2369 cit_write_reg(gspca_dev, 0x0008, 0x012f); cit_start_model4()
2370 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2371 cit_write_reg(gspca_dev, 0xfffa, 0x0124); cit_start_model4()
2372 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2373 cit_write_reg(gspca_dev, 0x001e, 0x012f); cit_start_model4()
2374 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2375 cit_write_reg(gspca_dev, 0x0010, 0x0127); cit_start_model4()
2376 cit_write_reg(gspca_dev, 0x0013, 0x012e); cit_start_model4()
2377 cit_write_reg(gspca_dev, 0x002a, 0x0130); cit_start_model4()
2378 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2379 cit_write_reg(gspca_dev, 0x0010, 0x012d); cit_start_model4()
2380 cit_write_reg(gspca_dev, 0x006d, 0x012f); cit_start_model4()
2381 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2382 cit_write_reg(gspca_dev, 0x0001, 0x0127); cit_start_model4()
2383 cit_write_reg(gspca_dev, 0xfea8, 0x0124); cit_start_model4()
2389 cit_write_reg(gspca_dev, 0x0070, 0x0119); cit_start_model4()
2390 cit_write_reg(gspca_dev, 0x00d0, 0x0111); cit_start_model4()
2391 cit_write_reg(gspca_dev, 0x0039, 0x010a); cit_start_model4()
2392 cit_write_reg(gspca_dev, 0x0001, 0x0102); cit_start_model4()
2393 cit_write_reg(gspca_dev, 0x0028, 0x0103); cit_start_model4()
2394 cit_write_reg(gspca_dev, 0x0000, 0x0104); cit_start_model4()
2395 cit_write_reg(gspca_dev, 0x001e, 0x0105); cit_start_model4()
2396 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2397 cit_write_reg(gspca_dev, 0x0016, 0x012f); cit_start_model4()
2398 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2399 cit_write_reg(gspca_dev, 0x000a, 0x0127); cit_start_model4()
2400 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2401 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2402 cit_write_reg(gspca_dev, 0x0014, 0x012d); cit_start_model4()
2403 cit_write_reg(gspca_dev, 0x0008, 0x012f); cit_start_model4()
2404 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2405 cit_write_reg(gspca_dev, 0x00aa, 0x012e); cit_start_model4()
2406 cit_write_reg(gspca_dev, 0x001a, 0x0130); cit_start_model4()
2407 cit_write_reg(gspca_dev, 0x8a0a, 0x0124); cit_start_model4()
2408 cit_write_reg(gspca_dev, 0x005a, 0x012d); cit_start_model4()
2409 cit_write_reg(gspca_dev, 0x9545, 0x0124); cit_start_model4()
2410 cit_write_reg(gspca_dev, 0x00aa, 0x0127); cit_start_model4()
2411 cit_write_reg(gspca_dev, 0x0018, 0x012e); cit_start_model4()
2412 cit_write_reg(gspca_dev, 0x0043, 0x0130); cit_start_model4()
2413 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2414 cit_write_reg(gspca_dev, 0x00aa, 0x012f); cit_start_model4()
2415 cit_write_reg(gspca_dev, 0xd055, 0x0124); cit_start_model4()
2416 cit_write_reg(gspca_dev, 0x001c, 0x0127); cit_start_model4()
2417 cit_write_reg(gspca_dev, 0x00eb, 0x012e); cit_start_model4()
2418 cit_write_reg(gspca_dev, 0xaa28, 0x0124); cit_start_model4()
2419 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2420 cit_write_reg(gspca_dev, 0x0032, 0x012f); cit_start_model4()
2421 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2422 cit_write_reg(gspca_dev, 0x0000, 0x0127); cit_start_model4()
2423 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2424 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2425 cit_write_reg(gspca_dev, 0x0036, 0x012d); cit_start_model4()
2426 cit_write_reg(gspca_dev, 0x0008, 0x012f); cit_start_model4()
2427 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2428 cit_write_reg(gspca_dev, 0xfffa, 0x0124); cit_start_model4()
2429 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2430 cit_write_reg(gspca_dev, 0x001e, 0x012f); cit_start_model4()
2431 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2432 cit_write_reg(gspca_dev, 0x0017, 0x0127); cit_start_model4()
2433 cit_write_reg(gspca_dev, 0x0013, 0x012e); cit_start_model4()
2434 cit_write_reg(gspca_dev, 0x0031, 0x0130); cit_start_model4()
2435 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2436 cit_write_reg(gspca_dev, 0x0017, 0x012d); cit_start_model4()
2437 cit_write_reg(gspca_dev, 0x0078, 0x012f); cit_start_model4()
2438 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2439 cit_write_reg(gspca_dev, 0x0000, 0x0127); cit_start_model4()
2440 cit_write_reg(gspca_dev, 0xfea8, 0x0124); cit_start_model4()
2444 cit_write_reg(gspca_dev, 0x0070, 0x0119); cit_start_model4()
2445 cit_write_reg(gspca_dev, 0x00c0, 0x0111); cit_start_model4()
2446 cit_write_reg(gspca_dev, 0x0039, 0x010a); cit_start_model4()
2447 cit_write_reg(gspca_dev, 0x0001, 0x0102); cit_start_model4()
2448 cit_write_reg(gspca_dev, 0x002c, 0x0103); cit_start_model4()
2449 cit_write_reg(gspca_dev, 0x0000, 0x0104); cit_start_model4()
2450 cit_write_reg(gspca_dev, 0x0024, 0x0105); cit_start_model4()
2451 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2452 cit_write_reg(gspca_dev, 0x0016, 0x012f); cit_start_model4()
2453 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2454 cit_write_reg(gspca_dev, 0x0006, 0x0127); cit_start_model4()
2455 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2456 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2457 cit_write_reg(gspca_dev, 0x0014, 0x012d); cit_start_model4()
2458 cit_write_reg(gspca_dev, 0x0002, 0x012f); cit_start_model4()
2459 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2460 cit_write_reg(gspca_dev, 0x00aa, 0x012e); cit_start_model4()
2461 cit_write_reg(gspca_dev, 0x001a, 0x0130); cit_start_model4()
2462 cit_write_reg(gspca_dev, 0x8a0a, 0x0124); cit_start_model4()
2463 cit_write_reg(gspca_dev, 0x005e, 0x012d); cit_start_model4()
2464 cit_write_reg(gspca_dev, 0x9545, 0x0124); cit_start_model4()
2465 cit_write_reg(gspca_dev, 0x00aa, 0x0127); cit_start_model4()
2466 cit_write_reg(gspca_dev, 0x0018, 0x012e); cit_start_model4()
2467 cit_write_reg(gspca_dev, 0x0049, 0x0130); cit_start_model4()
2468 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2469 cit_write_reg(gspca_dev, 0x00aa, 0x012f); cit_start_model4()
2470 cit_write_reg(gspca_dev, 0xd055, 0x0124); cit_start_model4()
2471 cit_write_reg(gspca_dev, 0x001c, 0x0127); cit_start_model4()
2472 cit_write_reg(gspca_dev, 0x00cf, 0x012e); cit_start_model4()
2473 cit_write_reg(gspca_dev, 0xaa28, 0x0124); cit_start_model4()
2474 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2475 cit_write_reg(gspca_dev, 0x0032, 0x012f); cit_start_model4()
2476 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2477 cit_write_reg(gspca_dev, 0x0000, 0x0127); cit_start_model4()
2478 cit_write_reg(gspca_dev, 0x00aa, 0x0130); cit_start_model4()
2479 cit_write_reg(gspca_dev, 0x82a8, 0x0124); cit_start_model4()
2480 cit_write_reg(gspca_dev, 0x0036, 0x012d); cit_start_model4()
2481 cit_write_reg(gspca_dev, 0x0008, 0x012f); cit_start_model4()
2482 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2483 cit_write_reg(gspca_dev, 0xfffa, 0x0124); cit_start_model4()
2484 cit_write_reg(gspca_dev, 0x00aa, 0x012d); cit_start_model4()
2485 cit_write_reg(gspca_dev, 0x001e, 0x012f); cit_start_model4()
2486 cit_write_reg(gspca_dev, 0xd141, 0x0124); cit_start_model4()
2487 cit_write_reg(gspca_dev, 0x0010, 0x0127); cit_start_model4()
2488 cit_write_reg(gspca_dev, 0x0013, 0x012e); cit_start_model4()
2489 cit_write_reg(gspca_dev, 0x0025, 0x0130); cit_start_model4()
2490 cit_write_reg(gspca_dev, 0x8a28, 0x0124); cit_start_model4()
2491 cit_write_reg(gspca_dev, 0x0010, 0x012d); cit_start_model4()
2492 cit_write_reg(gspca_dev, 0x0048, 0x012f); cit_start_model4()
2493 cit_write_reg(gspca_dev, 0xd145, 0x0124); cit_start_model4()
2494 cit_write_reg(gspca_dev, 0x0000, 0x0127); cit_start_model4()
2495 cit_write_reg(gspca_dev, 0xfea8, 0x0124); cit_start_model4()
2500 cit_model4_Packet1(gspca_dev, 0x0038, 0x0004); cit_start_model4()
2505 static int cit_start_ibm_netcam_pro(struct gspca_dev *gspca_dev) cit_start_ibm_netcam_pro() argument
2510 clock_div = cit_get_clock_div(gspca_dev); cit_start_ibm_netcam_pro()
2514 cit_write_reg(gspca_dev, 0x0003, 0x0133); cit_start_ibm_netcam_pro()
2515 cit_write_reg(gspca_dev, 0x0000, 0x0117); cit_start_ibm_netcam_pro()
2516 cit_write_reg(gspca_dev, 0x0008, 0x0123); cit_start_ibm_netcam_pro()
2517 cit_write_reg(gspca_dev, 0x0000, 0x0100); cit_start_ibm_netcam_pro()
2518 cit_write_reg(gspca_dev, 0x0060, 0x0116); cit_start_ibm_netcam_pro()
2519 /* cit_write_reg(gspca_dev, 0x0002, 0x0112); see sd_stop0 */ cit_start_ibm_netcam_pro()
2520 cit_write_reg(gspca_dev, 0x0000, 0x0133); cit_start_ibm_netcam_pro()
2521 cit_write_reg(gspca_dev, 0x0000, 0x0123); cit_start_ibm_netcam_pro()
2522 cit_write_reg(gspca_dev, 0x0001, 0x0117); cit_start_ibm_netcam_pro()
2523 cit_write_reg(gspca_dev, 0x0040, 0x0108); cit_start_ibm_netcam_pro()
2524 cit_write_reg(gspca_dev, 0x0019, 0x012c); cit_start_ibm_netcam_pro()
2525 cit_write_reg(gspca_dev, 0x0060, 0x0116); cit_start_ibm_netcam_pro()
2526 /* cit_write_reg(gspca_dev, 0x000b, 0x0115); see sd_stop0 */ cit_start_ibm_netcam_pro()
2528 cit_model3_Packet1(gspca_dev, 0x0049, 0x0000); cit_start_ibm_netcam_pro()
2530 cit_write_reg(gspca_dev, 0x0000, 0x0101); /* Same on 160x120, 320x240 */ cit_start_ibm_netcam_pro()
2531 cit_write_reg(gspca_dev, 0x003a, 0x0102); /* Hstart */ cit_start_ibm_netcam_pro()
2532 cit_write_reg(gspca_dev, 0x00a0, 0x0103); /* Same on 160x120, 320x240 */ cit_start_ibm_netcam_pro()
2533 cit_write_reg(gspca_dev, 0x0078, 0x0105); /* Same on 160x120, 320x240 */ cit_start_ibm_netcam_pro()
2534 cit_write_reg(gspca_dev, 0x0000, 0x010a); /* Same */ cit_start_ibm_netcam_pro()
2535 cit_write_reg(gspca_dev, 0x0002, 0x011d); /* Same on 160x120, 320x240 */ cit_start_ibm_netcam_pro()
2536 cit_write_reg(gspca_dev, 0x0000, 0x0129); /* Same */ cit_start_ibm_netcam_pro()
2537 cit_write_reg(gspca_dev, 0x00fc, 0x012b); /* Same */ cit_start_ibm_netcam_pro()
2538 cit_write_reg(gspca_dev, 0x0022, 0x012a); /* Same */ cit_start_ibm_netcam_pro()
2540 switch (gspca_dev->pixfmt.width) { cit_start_ibm_netcam_pro()
2542 cit_write_reg(gspca_dev, 0x0024, 0x010b); cit_start_ibm_netcam_pro()
2543 cit_write_reg(gspca_dev, 0x0089, 0x0119); cit_start_ibm_netcam_pro()
2544 cit_write_reg(gspca_dev, 0x000a, 0x011b); cit_start_ibm_netcam_pro()
2545 cit_write_reg(gspca_dev, 0x0003, 0x011e); cit_start_ibm_netcam_pro()
2546 cit_write_reg(gspca_dev, 0x0007, 0x0104); cit_start_ibm_netcam_pro()
2547 cit_write_reg(gspca_dev, 0x0009, 0x011a); cit_start_ibm_netcam_pro()
2548 cit_write_reg(gspca_dev, 0x008b, 0x011c); cit_start_ibm_netcam_pro()
2549 cit_write_reg(gspca_dev, 0x0008, 0x0118); cit_start_ibm_netcam_pro()
2550 cit_write_reg(gspca_dev, 0x0000, 0x0132); cit_start_ibm_netcam_pro()
2553 cit_write_reg(gspca_dev, 0x0028, 0x010b); cit_start_ibm_netcam_pro()
2554 cit_write_reg(gspca_dev, 0x00d9, 0x0119); cit_start_ibm_netcam_pro()
2555 cit_write_reg(gspca_dev, 0x0006, 0x011b); cit_start_ibm_netcam_pro()
2556 cit_write_reg(gspca_dev, 0x0000, 0x011e); cit_start_ibm_netcam_pro()
2557 cit_write_reg(gspca_dev, 0x000e, 0x0104); cit_start_ibm_netcam_pro()
2558 cit_write_reg(gspca_dev, 0x0004, 0x011a); cit_start_ibm_netcam_pro()
2559 cit_write_reg(gspca_dev, 0x003f, 0x011c); cit_start_ibm_netcam_pro()
2560 cit_write_reg(gspca_dev, 0x000c, 0x0118); cit_start_ibm_netcam_pro()
2561 cit_write_reg(gspca_dev, 0x0000, 0x0132); cit_start_ibm_netcam_pro()
2565 cit_model3_Packet1(gspca_dev, 0x0019, 0x0031); cit_start_ibm_netcam_pro()
2566 cit_model3_Packet1(gspca_dev, 0x001a, 0x0003); cit_start_ibm_netcam_pro()
2567 cit_model3_Packet1(gspca_dev, 0x001b, 0x0038); cit_start_ibm_netcam_pro()
2568 cit_model3_Packet1(gspca_dev, 0x001c, 0x0000); cit_start_ibm_netcam_pro()
2569 cit_model3_Packet1(gspca_dev, 0x0024, 0x0001); cit_start_ibm_netcam_pro()
2570 cit_model3_Packet1(gspca_dev, 0x0027, 0x0001); cit_start_ibm_netcam_pro()
2571 cit_model3_Packet1(gspca_dev, 0x002a, 0x0004); cit_start_ibm_netcam_pro()
2572 cit_model3_Packet1(gspca_dev, 0x0035, 0x000b); cit_start_ibm_netcam_pro()
2573 cit_model3_Packet1(gspca_dev, 0x003f, 0x0001); cit_start_ibm_netcam_pro()
2574 cit_model3_Packet1(gspca_dev, 0x0044, 0x0000); cit_start_ibm_netcam_pro()
2575 cit_model3_Packet1(gspca_dev, 0x0054, 0x0000); cit_start_ibm_netcam_pro()
2576 cit_model3_Packet1(gspca_dev, 0x00c4, 0x0000); cit_start_ibm_netcam_pro()
2577 cit_model3_Packet1(gspca_dev, 0x00e7, 0x0001); cit_start_ibm_netcam_pro()
2578 cit_model3_Packet1(gspca_dev, 0x00e9, 0x0001); cit_start_ibm_netcam_pro()
2579 cit_model3_Packet1(gspca_dev, 0x00ee, 0x0000); cit_start_ibm_netcam_pro()
2580 cit_model3_Packet1(gspca_dev, 0x00f3, 0x00c0); cit_start_ibm_netcam_pro()
2582 cit_write_reg(gspca_dev, compression, 0x0109); cit_start_ibm_netcam_pro()
2583 cit_write_reg(gspca_dev, clock_div, 0x0111); cit_start_ibm_netcam_pro()
2589 cit_read_reg(gspca_dev, rca_initdata[i][2], 0); cit_start_ibm_netcam_pro()
2591 cit_write_reg(gspca_dev, rca_initdata[i][1], cit_start_ibm_netcam_pro()
2600 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
2602 struct sd *sd = (struct sd *) gspca_dev; sd_start()
2605 packet_size = cit_get_packet_size(gspca_dev); sd_start()
2611 cit_start_model0(gspca_dev); sd_start()
2614 cit_start_model1(gspca_dev); sd_start()
2617 cit_start_model2(gspca_dev); sd_start()
2620 cit_start_model3(gspca_dev); sd_start()
2623 cit_start_model4(gspca_dev); sd_start()
2626 cit_start_ibm_netcam_pro(gspca_dev); sd_start()
2631 cit_write_reg(gspca_dev, packet_size >> 8, 0x0106); sd_start()
2632 cit_write_reg(gspca_dev, packet_size & 0xff, 0x0107); sd_start()
2634 cit_restart_stream(gspca_dev); sd_start()
2639 static int sd_isoc_init(struct gspca_dev *gspca_dev) sd_isoc_init() argument
2644 switch (gspca_dev->pixfmt.width) { sd_isoc_init()
2657 alt = &gspca_dev->dev->actconfig->intf_cache[0]->altsetting[1]; sd_isoc_init()
2663 static int sd_isoc_nego(struct gspca_dev *gspca_dev) sd_isoc_nego() argument
2668 switch (gspca_dev->pixfmt.width) { sd_isoc_nego()
2680 alt = &gspca_dev->dev->actconfig->intf_cache[0]->altsetting[1]; sd_isoc_nego()
2690 ret = usb_set_interface(gspca_dev->dev, gspca_dev->iface, 1); sd_isoc_nego()
2697 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
2699 cit_write_reg(gspca_dev, 0x0000, 0x010c); sd_stopN()
2702 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
2704 struct sd *sd = (struct sd *) gspca_dev; sd_stop0()
2706 if (!gspca_dev->present) sd_stop0()
2714 /* cit_write_reg(gspca_dev, 0x0000, 0x0112); */ sd_stop0()
2715 cit_write_reg(gspca_dev, 0x00c0, 0x0100); /* LED Off */ sd_stop0()
2718 cit_send_FF_04_02(gspca_dev); sd_stop0()
2719 cit_read_reg(gspca_dev, 0x0100, 0); sd_stop0()
2720 cit_write_reg(gspca_dev, 0x81, 0x0100); /* LED Off */ sd_stop0()
2726 cit_model2_Packet1(gspca_dev, 0x0030, 0x0004); sd_stop0()
2728 cit_write_reg(gspca_dev, 0x0080, 0x0100); /* LED Off */ sd_stop0()
2729 cit_write_reg(gspca_dev, 0x0020, 0x0111); sd_stop0()
2730 cit_write_reg(gspca_dev, 0x00a0, 0x0111); sd_stop0()
2732 cit_model2_Packet1(gspca_dev, 0x0030, 0x0002); sd_stop0()
2734 cit_write_reg(gspca_dev, 0x0020, 0x0111); sd_stop0()
2735 cit_write_reg(gspca_dev, 0x0000, 0x0112); sd_stop0()
2738 cit_write_reg(gspca_dev, 0x0006, 0x012c); sd_stop0()
2739 cit_model3_Packet1(gspca_dev, 0x0046, 0x0000); sd_stop0()
2740 cit_read_reg(gspca_dev, 0x0116, 0); sd_stop0()
2741 cit_write_reg(gspca_dev, 0x0064, 0x0116); sd_stop0()
2742 cit_read_reg(gspca_dev, 0x0115, 0); sd_stop0()
2743 cit_write_reg(gspca_dev, 0x0003, 0x0115); sd_stop0()
2744 cit_write_reg(gspca_dev, 0x0008, 0x0123); sd_stop0()
2745 cit_write_reg(gspca_dev, 0x0000, 0x0117); sd_stop0()
2746 cit_write_reg(gspca_dev, 0x0000, 0x0112); sd_stop0()
2747 cit_write_reg(gspca_dev, 0x0080, 0x0100); sd_stop0()
2750 cit_model3_Packet1(gspca_dev, 0x0049, 0x00ff); sd_stop0()
2751 cit_write_reg(gspca_dev, 0x0006, 0x012c); sd_stop0()
2752 cit_write_reg(gspca_dev, 0x0000, 0x0116); sd_stop0()
2756 /* cit_write_reg(gspca_dev, 0x0006, 0x0115); */ sd_stop0()
2757 cit_write_reg(gspca_dev, 0x0008, 0x0123); sd_stop0()
2758 cit_write_reg(gspca_dev, 0x0000, 0x0117); sd_stop0()
2759 cit_write_reg(gspca_dev, 0x0003, 0x0133); sd_stop0()
2760 cit_write_reg(gspca_dev, 0x0000, 0x0111); sd_stop0()
2763 /* cit_write_reg(gspca_dev, 0x0000, 0x0112); */ sd_stop0()
2764 cit_write_reg(gspca_dev, 0x00c0, 0x0100); sd_stop0()
2771 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_stop0()
2772 input_sync(gspca_dev->input_dev); sd_stop0()
2778 static u8 *cit_find_sof(struct gspca_dev *gspca_dev, u8 *data, int len) cit_find_sof() argument
2780 struct sd *sd = (struct sd *) gspca_dev; cit_find_sof()
2789 switch (gspca_dev->pixfmt.width) { cit_find_sof()
2893 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
2896 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
2899 sof = cit_find_sof(gspca_dev, data, len); sd_pkt_scan()
2909 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
2911 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); sd_pkt_scan()
2916 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
2920 static void cit_check_button(struct gspca_dev *gspca_dev) cit_check_button() argument
2923 struct sd *sd = (struct sd *)gspca_dev; cit_check_button()
2934 cit_read_reg(gspca_dev, 0x0113, 0); cit_check_button()
2935 new_button_state = !gspca_dev->usb_buf[0]; cit_check_button()
2941 cit_write_reg(gspca_dev, 0x01, 0x0113); cit_check_button()
2944 input_report_key(gspca_dev->input_dev, KEY_CAMERA, cit_check_button()
2946 input_sync(gspca_dev->input_dev); cit_check_button()
2954 struct gspca_dev *gspca_dev = sd_s_ctrl() local
2955 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
2956 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
2958 gspca_dev->usb_err = 0; sd_s_ctrl()
2960 if (!gspca_dev->streaming) sd_s_ctrl()
2964 sd_stopN(gspca_dev); sd_s_ctrl()
2967 cit_set_brightness(gspca_dev, ctrl->val); sd_s_ctrl()
2970 cit_set_contrast(gspca_dev, ctrl->val); sd_s_ctrl()
2973 cit_set_hue(gspca_dev, ctrl->val); sd_s_ctrl()
2976 cit_set_hflip(gspca_dev, ctrl->val); sd_s_ctrl()
2979 cit_set_sharpness(gspca_dev, ctrl->val); sd_s_ctrl()
2982 cit_set_lighting(gspca_dev, ctrl->val); sd_s_ctrl()
2986 cit_restart_stream(gspca_dev); sd_s_ctrl()
2987 return gspca_dev->usb_err; sd_s_ctrl()
2994 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
2996 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
2997 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
3029 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dstk014.c36 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
54 static u8 reg_r(struct gspca_dev *gspca_dev, reg_r() argument
57 struct usb_device *dev = gspca_dev->dev; reg_r()
60 if (gspca_dev->usb_err < 0) reg_r()
67 gspca_dev->usb_buf, 1, reg_r()
71 gspca_dev->usb_err = ret; reg_r()
74 return gspca_dev->usb_buf[0]; reg_r()
78 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
81 struct usb_device *dev = gspca_dev->dev; reg_w()
84 if (gspca_dev->usb_err < 0) reg_w()
96 gspca_dev->usb_err = ret; reg_w()
101 static void rcv_val(struct gspca_dev *gspca_dev, rcv_val() argument
104 struct usb_device *dev = gspca_dev->dev; rcv_val()
107 reg_w(gspca_dev, 0x634, (ads >> 16) & 0xff); rcv_val()
108 reg_w(gspca_dev, 0x635, (ads >> 8) & 0xff); rcv_val()
109 reg_w(gspca_dev, 0x636, ads & 0xff); rcv_val()
110 reg_w(gspca_dev, 0x637, 0); rcv_val()
111 reg_w(gspca_dev, 0x638, 4); /* len & 0xff */ rcv_val()
112 reg_w(gspca_dev, 0x639, 0); /* len >> 8 */ rcv_val()
113 reg_w(gspca_dev, 0x63a, 0); rcv_val()
114 reg_w(gspca_dev, 0x63b, 0); rcv_val()
115 reg_w(gspca_dev, 0x630, 5); rcv_val()
116 if (gspca_dev->usb_err < 0) rcv_val()
120 gspca_dev->usb_buf, rcv_val()
126 gspca_dev->usb_err = ret; rcv_val()
131 static void snd_val(struct gspca_dev *gspca_dev, snd_val() argument
135 struct usb_device *dev = gspca_dev->dev; snd_val()
140 reg_r(gspca_dev, 0x0704); snd_val()
141 seq = reg_r(gspca_dev, 0x0705); snd_val()
142 reg_r(gspca_dev, 0x0650); snd_val()
143 reg_w(gspca_dev, 0x654, seq); snd_val()
145 reg_w(gspca_dev, 0x654, (ads >> 16) & 0xff); snd_val()
147 reg_w(gspca_dev, 0x655, (ads >> 8) & 0xff); snd_val()
148 reg_w(gspca_dev, 0x656, ads & 0xff); snd_val()
149 reg_w(gspca_dev, 0x657, 0); snd_val()
150 reg_w(gspca_dev, 0x658, 0x04); /* size */ snd_val()
151 reg_w(gspca_dev, 0x659, 0); snd_val()
152 reg_w(gspca_dev, 0x65a, 0); snd_val()
153 reg_w(gspca_dev, 0x65b, 0); snd_val()
154 reg_w(gspca_dev, 0x650, 5); snd_val()
155 if (gspca_dev->usb_err < 0) snd_val()
157 gspca_dev->usb_buf[0] = val >> 24; snd_val()
158 gspca_dev->usb_buf[1] = val >> 16; snd_val()
159 gspca_dev->usb_buf[2] = val >> 8; snd_val()
160 gspca_dev->usb_buf[3] = val; snd_val()
163 gspca_dev->usb_buf, snd_val()
169 gspca_dev->usb_err = ret; snd_val()
174 reg_w(gspca_dev, 0x705, seq); snd_val()
180 static void set_par(struct gspca_dev *gspca_dev, set_par() argument
183 snd_val(gspca_dev, 0x003f08, parval); set_par()
186 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
192 set_par(gspca_dev, parval); setbrightness()
195 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
201 set_par(gspca_dev, parval); setcontrast()
204 static void setcolors(struct gspca_dev *gspca_dev, s32 val) setcolors() argument
210 set_par(gspca_dev, parval); setcolors()
213 static void setlightfreq(struct gspca_dev *gspca_dev, s32 val) setlightfreq() argument
215 set_par(gspca_dev, val == 1 setlightfreq()
221 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
224 gspca_dev->cam.cam_mode = vga_mode; sd_config()
225 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); sd_config()
230 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
235 usb_set_interface(gspca_dev->dev, gspca_dev->iface, 1); sd_init()
236 ret = reg_r(gspca_dev, 0x0740); sd_init()
237 if (gspca_dev->usb_err >= 0) { sd_init()
240 gspca_dev->usb_err = -EIO; sd_init()
243 return gspca_dev->usb_err; sd_init()
247 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
249 struct sd *sd = (struct sd *) gspca_dev; sd_start()
253 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, sd_start()
254 gspca_dev->pixfmt.width, sd_start()
259 usb_set_interface(gspca_dev->dev, gspca_dev->iface, 1); sd_start()
261 set_par(gspca_dev, 0x10000000); sd_start()
262 set_par(gspca_dev, 0x00000000); sd_start()
263 set_par(gspca_dev, 0x8002e001); sd_start()
264 set_par(gspca_dev, 0x14000000); sd_start()
265 if (gspca_dev->pixfmt.width > 320) sd_start()
269 set_par(gspca_dev, value); sd_start()
270 ret = usb_set_interface(gspca_dev->dev, sd_start()
271 gspca_dev->iface, sd_start()
272 gspca_dev->alt); sd_start()
275 gspca_dev->iface, gspca_dev->alt); sd_start()
276 gspca_dev->usb_err = ret; sd_start()
279 reg_r(gspca_dev, 0x0630); sd_start()
280 rcv_val(gspca_dev, 0x000020); /* << (value ff ff ff ff) */ sd_start()
281 reg_r(gspca_dev, 0x0650); sd_start()
282 snd_val(gspca_dev, 0x000020, 0xffffffff); sd_start()
283 reg_w(gspca_dev, 0x0620, 0); sd_start()
284 reg_w(gspca_dev, 0x0630, 0); sd_start()
285 reg_w(gspca_dev, 0x0640, 0); sd_start()
286 reg_w(gspca_dev, 0x0650, 0); sd_start()
287 reg_w(gspca_dev, 0x0660, 0); sd_start()
288 set_par(gspca_dev, 0x09800000); /* Red ? */ sd_start()
289 set_par(gspca_dev, 0x0a800000); /* Green ? */ sd_start()
290 set_par(gspca_dev, 0x0b800000); /* Blue ? */ sd_start()
291 set_par(gspca_dev, 0x0d030000); /* Gamma ? */ sd_start()
294 set_par(gspca_dev, 0x01000000); sd_start()
295 set_par(gspca_dev, 0x01000000); sd_start()
296 if (gspca_dev->usb_err >= 0) sd_start()
298 gspca_dev->alt); sd_start()
300 return gspca_dev->usb_err; sd_start()
303 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
305 struct usb_device *dev = gspca_dev->dev; sd_stopN()
307 set_par(gspca_dev, 0x02000000); sd_stopN()
308 set_par(gspca_dev, 0x02000000); sd_stopN()
309 usb_set_interface(dev, gspca_dev->iface, 1); sd_stopN()
310 reg_r(gspca_dev, 0x0630); sd_stopN()
311 rcv_val(gspca_dev, 0x000020); /* << (value ff ff ff ff) */ sd_stopN()
312 reg_r(gspca_dev, 0x0650); sd_stopN()
313 snd_val(gspca_dev, 0x000020, 0xffffffff); sd_stopN()
314 reg_w(gspca_dev, 0x0620, 0); sd_stopN()
315 reg_w(gspca_dev, 0x0630, 0); sd_stopN()
316 reg_w(gspca_dev, 0x0640, 0); sd_stopN()
317 reg_w(gspca_dev, 0x0650, 0); sd_stopN()
318 reg_w(gspca_dev, 0x0660, 0); sd_stopN()
322 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
326 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
339 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
343 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
351 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
356 struct gspca_dev *gspca_dev = sd_s_ctrl() local
357 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
359 gspca_dev->usb_err = 0; sd_s_ctrl()
361 if (!gspca_dev->streaming) sd_s_ctrl()
366 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
369 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
372 setcolors(gspca_dev, ctrl->val); sd_s_ctrl()
375 setlightfreq(gspca_dev, ctrl->val); sd_s_ctrl()
378 return gspca_dev->usb_err; sd_s_ctrl()
385 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
387 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
389 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Detoms.c33 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
159 /* read 'len' bytes to gspca_dev->usb_buf */ reg_r()
160 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
164 struct usb_device *dev = gspca_dev->dev; reg_r()
176 index, gspca_dev->usb_buf, len, 500); reg_r()
178 index, gspca_dev->usb_buf[0]); reg_r()
181 static void reg_w_val(struct gspca_dev *gspca_dev, reg_w_val() argument
185 struct usb_device *dev = gspca_dev->dev; reg_w_val()
187 gspca_dev->usb_buf[0] = val; reg_w_val()
193 index, gspca_dev->usb_buf, 1, 500); reg_w_val()
196 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
201 struct usb_device *dev = gspca_dev->dev; reg_w()
209 memcpy(gspca_dev->usb_buf, buffer, len); reg_w()
214 0, index, gspca_dev->usb_buf, len, 500); reg_w()
217 static int i2c_w(struct gspca_dev *gspca_dev, i2c_w() argument
226 reg_w_val(gspca_dev, ET_I2C_BASE, 0x40); i2c_w()
230 reg_w_val(gspca_dev, ET_I2C_COUNT, ptchcount); i2c_w()
232 reg_w_val(gspca_dev, ET_I2C_REG, reg); i2c_w()
234 reg_w_val(gspca_dev, ET_I2C_DATA0 + len, buffer[len]); i2c_w()
238 static int i2c_r(struct gspca_dev *gspca_dev, i2c_r() argument
242 reg_w_val(gspca_dev, ET_I2C_BASE, 0x40); i2c_r()
245 reg_w_val(gspca_dev, ET_I2C_COUNT, 0x11); i2c_r()
246 reg_w_val(gspca_dev, ET_I2C_REG, reg); /* set the register base */ i2c_r()
247 reg_w_val(gspca_dev, ET_I2C_PREFETCH, 0x02); /* prefetch */ i2c_r()
248 reg_w_val(gspca_dev, ET_I2C_PREFETCH, 0x00); i2c_r()
249 reg_r(gspca_dev, ET_I2C_DATA0, 1); /* read one byte */ i2c_r()
253 static int Et_WaitStatus(struct gspca_dev *gspca_dev) Et_WaitStatus() argument
258 reg_r(gspca_dev, ET_ClCK, 1); Et_WaitStatus()
259 if (gspca_dev->usb_buf[0] != 0) Et_WaitStatus()
265 static int et_video(struct gspca_dev *gspca_dev, et_video() argument
270 reg_w_val(gspca_dev, ET_GPIO_OUT, et_video()
273 ret = Et_WaitStatus(gspca_dev); et_video()
279 static void Et_init2(struct gspca_dev *gspca_dev) Et_init2() argument
285 reg_w_val(gspca_dev, ET_GPIO_DIR_CTRL, 0x2f); Et_init2()
286 reg_w_val(gspca_dev, ET_GPIO_OUT, 0x10); Et_init2()
287 reg_r(gspca_dev, ET_GPIO_IN, 1); Et_init2()
288 reg_w_val(gspca_dev, ET_ClCK, 0x14); /* 0x14 // 0x16 enabled pattern */ Et_init2()
289 reg_w_val(gspca_dev, ET_CTRL, 0x1b); Et_init2()
292 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) Et_init2()
296 reg_w_val(gspca_dev, ET_COMP, value); Et_init2()
297 reg_w_val(gspca_dev, ET_MAXQt, 0x1f); Et_init2()
298 reg_w_val(gspca_dev, ET_MINQt, 0x04); Et_init2()
300 reg_w_val(gspca_dev, ET_REG1d, 0xff); Et_init2()
301 reg_w_val(gspca_dev, ET_REG1e, 0xff); Et_init2()
302 reg_w_val(gspca_dev, ET_REG1f, 0xff); Et_init2()
303 reg_w_val(gspca_dev, ET_REG20, 0x35); Et_init2()
304 reg_w_val(gspca_dev, ET_REG21, 0x01); Et_init2()
305 reg_w_val(gspca_dev, ET_REG22, 0x00); Et_init2()
306 reg_w_val(gspca_dev, ET_REG23, 0xff); Et_init2()
307 reg_w_val(gspca_dev, ET_REG24, 0xff); Et_init2()
308 reg_w_val(gspca_dev, ET_REG25, 0x0f); Et_init2()
310 reg_w_val(gspca_dev, 0x30, 0x11); /* 0x30 */ Et_init2()
311 reg_w_val(gspca_dev, 0x31, 0x40); Et_init2()
312 reg_w_val(gspca_dev, 0x32, 0x00); Et_init2()
313 reg_w_val(gspca_dev, ET_O_RED, 0x00); /* 0x34 */ Et_init2()
314 reg_w_val(gspca_dev, ET_O_GREEN1, 0x00); Et_init2()
315 reg_w_val(gspca_dev, ET_O_BLUE, 0x00); Et_init2()
316 reg_w_val(gspca_dev, ET_O_GREEN2, 0x00); Et_init2()
318 reg_w_val(gspca_dev, ET_G_RED, 0x80); /* 0x4d */ Et_init2()
319 reg_w_val(gspca_dev, ET_G_GREEN1, 0x80); Et_init2()
320 reg_w_val(gspca_dev, ET_G_BLUE, 0x80); Et_init2()
321 reg_w_val(gspca_dev, ET_G_GREEN2, 0x80); Et_init2()
322 reg_w_val(gspca_dev, ET_G_GR_H, 0x00); Et_init2()
323 reg_w_val(gspca_dev, ET_G_GB_H, 0x00); /* 0x52 */ Et_init2()
325 reg_w_val(gspca_dev, 0x61, 0x80); /* use cmc_out */ Et_init2()
326 reg_w_val(gspca_dev, 0x62, 0x02); Et_init2()
327 reg_w_val(gspca_dev, 0x63, 0x03); Et_init2()
328 reg_w_val(gspca_dev, 0x64, 0x14); Et_init2()
329 reg_w_val(gspca_dev, 0x65, 0x0e); Et_init2()
330 reg_w_val(gspca_dev, 0x66, 0x02); Et_init2()
331 reg_w_val(gspca_dev, 0x67, 0x02); Et_init2()
334 reg_w_val(gspca_dev, ET_SYNCHRO, 0x8f); /* 0x68 */ Et_init2()
335 reg_w_val(gspca_dev, ET_STARTX, 0x69); /* 0x6a //0x69 */ Et_init2()
336 reg_w_val(gspca_dev, ET_STARTY, 0x0d); /* 0x0d //0x0c */ Et_init2()
337 reg_w_val(gspca_dev, ET_WIDTH_LOW, 0x80); Et_init2()
338 reg_w_val(gspca_dev, ET_HEIGTH_LOW, 0xe0); Et_init2()
339 reg_w_val(gspca_dev, ET_W_H_HEIGTH, 0x60); /* 6d */ Et_init2()
340 reg_w_val(gspca_dev, ET_REG6e, 0x86); Et_init2()
341 reg_w_val(gspca_dev, ET_REG6f, 0x01); Et_init2()
342 reg_w_val(gspca_dev, ET_REG70, 0x26); Et_init2()
343 reg_w_val(gspca_dev, ET_REG71, 0x7a); Et_init2()
344 reg_w_val(gspca_dev, ET_REG72, 0x01); Et_init2()
346 reg_w_val(gspca_dev, ET_REG73, 0x00); Et_init2()
347 reg_w_val(gspca_dev, ET_REG74, 0x18); /* 0x28 */ Et_init2()
348 reg_w_val(gspca_dev, ET_REG75, 0x0f); /* 0x01 */ Et_init2()
350 reg_w_val(gspca_dev, 0x8a, 0x20); Et_init2()
351 reg_w_val(gspca_dev, 0x8d, 0x0f); Et_init2()
352 reg_w_val(gspca_dev, 0x8e, 0x08); Et_init2()
354 reg_w_val(gspca_dev, 0x03, 0x08); Et_init2()
355 reg_w_val(gspca_dev, ET_PXL_CLK, 0x03); Et_init2()
356 reg_w_val(gspca_dev, 0x81, 0xff); Et_init2()
357 reg_w_val(gspca_dev, 0x80, 0x00); Et_init2()
358 reg_w_val(gspca_dev, 0x81, 0xff); Et_init2()
359 reg_w_val(gspca_dev, 0x80, 0x20); Et_init2()
360 reg_w_val(gspca_dev, 0x03, 0x01); Et_init2()
361 reg_w_val(gspca_dev, 0x03, 0x00); Et_init2()
362 reg_w_val(gspca_dev, 0x03, 0x08); Et_init2()
365 /* reg_r(gspca_dev, ET_I2C_BASE, 1); Et_init2()
368 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) Et_init2()
377 reg_w_val(gspca_dev, ET_PXL_CLK, value); Et_init2()
379 reg_w(gspca_dev, 0x62, FormLine, 6); Et_init2()
382 reg_w_val(gspca_dev, 0x81, 0x47); /* 0x47; */ Et_init2()
383 reg_w_val(gspca_dev, 0x80, 0x40); /* 0x40; */ Et_init2()
388 reg_w_val(gspca_dev, 0x81, 0x30); /* 0x20; - set brightness */ Et_init2()
389 reg_w_val(gspca_dev, 0x80, 0x20); /* 0x20; */ Et_init2()
392 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
397 reg_w_val(gspca_dev, ET_O_RED + i, val); setbrightness()
400 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
405 reg_w(gspca_dev, ET_G_RED, RGBG, 6); setcontrast()
408 static void setcolors(struct gspca_dev *gspca_dev, s32 val) setcolors() argument
410 struct sd *sd = (struct sd *) gspca_dev; setcolors()
420 i2c_w(gspca_dev, PAS106_REG13, &i2cflags, 1, 3); setcolors()
421 i2c_w(gspca_dev, PAS106_REG9, I2cc, sizeof I2cc, 1); setcolors()
427 static s32 getcolors(struct gspca_dev *gspca_dev) getcolors() argument
429 struct sd *sd = (struct sd *) gspca_dev; getcolors()
432 /* i2c_r(gspca_dev, PAS106_REG9); * blue */ getcolors()
433 i2c_r(gspca_dev, PAS106_REG9 + 3); /* red */ getcolors()
434 return gspca_dev->usb_buf[0] & 0x0f; getcolors()
439 static void setautogain(struct gspca_dev *gspca_dev) setautogain() argument
441 struct sd *sd = (struct sd *) gspca_dev; setautogain()
449 static void Et_init1(struct gspca_dev *gspca_dev) Et_init1() argument
459 reg_w_val(gspca_dev, ET_GPIO_DIR_CTRL, 7); Et_init1()
460 reg_r(gspca_dev, ET_GPIO_IN, 1); Et_init1()
461 reg_w_val(gspca_dev, ET_RESET_ALL, 1); Et_init1()
462 reg_w_val(gspca_dev, ET_RESET_ALL, 0); Et_init1()
463 reg_w_val(gspca_dev, ET_ClCK, 0x10); Et_init1()
464 reg_w_val(gspca_dev, ET_CTRL, 0x19); Et_init1()
466 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) Et_init1()
471 gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv, Et_init1()
473 reg_w_val(gspca_dev, ET_COMP, value); Et_init1()
474 reg_w_val(gspca_dev, ET_MAXQt, 0x1d); Et_init1()
475 reg_w_val(gspca_dev, ET_MINQt, 0x02); Et_init1()
477 reg_w_val(gspca_dev, ET_REG1d, 0xff); Et_init1()
478 reg_w_val(gspca_dev, ET_REG1e, 0xff); Et_init1()
479 reg_w_val(gspca_dev, ET_REG1f, 0xff); Et_init1()
480 reg_w_val(gspca_dev, ET_REG20, 0x35); Et_init1()
481 reg_w_val(gspca_dev, ET_REG21, 0x01); Et_init1()
482 reg_w_val(gspca_dev, ET_REG22, 0x00); Et_init1()
483 reg_w_val(gspca_dev, ET_REG23, 0xf7); Et_init1()
484 reg_w_val(gspca_dev, ET_REG24, 0xff); Et_init1()
485 reg_w_val(gspca_dev, ET_REG25, 0x07); Et_init1()
487 reg_w_val(gspca_dev, ET_G_RED, 0x80); Et_init1()
488 reg_w_val(gspca_dev, ET_G_GREEN1, 0x80); Et_init1()
489 reg_w_val(gspca_dev, ET_G_BLUE, 0x80); Et_init1()
490 reg_w_val(gspca_dev, ET_G_GREEN2, 0x80); Et_init1()
491 reg_w_val(gspca_dev, ET_G_GR_H, 0x00); Et_init1()
492 reg_w_val(gspca_dev, ET_G_GB_H, 0x00); Et_init1()
494 reg_w_val(gspca_dev, ET_SYNCHRO, 0xf0); Et_init1()
495 reg_w_val(gspca_dev, ET_STARTX, 0x56); /* 0x56 */ Et_init1()
496 reg_w_val(gspca_dev, ET_STARTY, 0x05); /* 0x04 */ Et_init1()
497 reg_w_val(gspca_dev, ET_WIDTH_LOW, 0x60); Et_init1()
498 reg_w_val(gspca_dev, ET_HEIGTH_LOW, 0x20); Et_init1()
499 reg_w_val(gspca_dev, ET_W_H_HEIGTH, 0x50); Et_init1()
500 reg_w_val(gspca_dev, ET_REG6e, 0x86); Et_init1()
501 reg_w_val(gspca_dev, ET_REG6f, 0x01); Et_init1()
502 reg_w_val(gspca_dev, ET_REG70, 0x86); Et_init1()
503 reg_w_val(gspca_dev, ET_REG71, 0x14); Et_init1()
504 reg_w_val(gspca_dev, ET_REG72, 0x00); Et_init1()
506 reg_w_val(gspca_dev, ET_REG73, 0x00); Et_init1()
507 reg_w_val(gspca_dev, ET_REG74, 0x00); Et_init1()
508 reg_w_val(gspca_dev, ET_REG75, 0x0a); Et_init1()
509 reg_w_val(gspca_dev, ET_I2C_CLK, 0x04); Et_init1()
510 reg_w_val(gspca_dev, ET_PXL_CLK, 0x01); Et_init1()
512 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) { Et_init1()
514 i2c_w(gspca_dev, PAS106_REG2, I2c0, sizeof I2c0, 1); Et_init1()
515 i2c_w(gspca_dev, PAS106_REG9, I2c2, sizeof I2c2, 1); Et_init1()
517 i2c_w(gspca_dev, PAS106_REG2, &value, 1, 1); Et_init1()
518 i2c_w(gspca_dev, PAS106_REG3, I2c3, sizeof I2c3, 1); Et_init1()
521 i2c_w(gspca_dev, PAS106_REG0e, &value, 1, 1); Et_init1()
525 i2c_w(gspca_dev, PAS106_REG2, I2c0, sizeof I2c0, 1); Et_init1()
526 i2c_w(gspca_dev, PAS106_REG9, I2c2, sizeof I2c2, 1); Et_init1()
528 i2c_w(gspca_dev, PAS106_REG2, &value, 1, 1); Et_init1()
529 i2c_w(gspca_dev, PAS106_REG3, I2c3, sizeof I2c3, 1); Et_init1()
532 i2c_w(gspca_dev, PAS106_REG0e, &value, 1, 1); Et_init1()
535 i2c_w(gspca_dev, PAS106_REG0f, &value, 1, 1); Et_init1()
541 /* i2c_w(gspca_dev, PAS106_REG5, &value, 1, 1); */ Et_init1()
543 i2c_w(gspca_dev, PAS106_REG7, I2c4, sizeof I2c4, 1); Et_init1()
545 reg_w(gspca_dev, ET_G_RED, GainRGBG, 6); Et_init1()
546 setcolors(gspca_dev, getcolors(gspca_dev)); Et_init1()
550 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
553 struct sd *sd = (struct sd *) gspca_dev; sd_config()
556 cam = &gspca_dev->cam; sd_config()
570 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
572 struct sd *sd = (struct sd *) gspca_dev; sd_init()
575 Et_init1(gspca_dev); sd_init()
577 Et_init2(gspca_dev); sd_init()
578 reg_w_val(gspca_dev, ET_RESET_ALL, 0x08); sd_init()
579 et_video(gspca_dev, 0); /* video off */ sd_init()
584 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
586 struct sd *sd = (struct sd *) gspca_dev; sd_start()
589 Et_init1(gspca_dev); sd_start()
591 Et_init2(gspca_dev); sd_start()
593 setautogain(gspca_dev); sd_start()
595 reg_w_val(gspca_dev, ET_RESET_ALL, 0x08); sd_start()
596 et_video(gspca_dev, 1); /* video on */ sd_start()
600 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
602 et_video(gspca_dev, 0); /* video off */ sd_stopN()
605 static __u8 Et_getgainG(struct gspca_dev *gspca_dev) Et_getgainG() argument
607 struct sd *sd = (struct sd *) gspca_dev; Et_getgainG()
610 i2c_r(gspca_dev, PAS106_REG0e); Et_getgainG()
611 PDEBUG(D_CONF, "Etoms gain G %d", gspca_dev->usb_buf[0]); Et_getgainG()
612 return gspca_dev->usb_buf[0]; Et_getgainG()
617 static void Et_setgainG(struct gspca_dev *gspca_dev, __u8 gain) Et_setgainG() argument
619 struct sd *sd = (struct sd *) gspca_dev; Et_setgainG()
624 i2c_w(gspca_dev, PAS106_REG13, &i2cflags, 1, 3); Et_setgainG()
625 i2c_w(gspca_dev, PAS106_REG0e, &gain, 1, 1); Et_setgainG()
634 static void do_autogain(struct gspca_dev *gspca_dev) do_autogain() argument
636 struct sd *sd = (struct sd *) gspca_dev; do_autogain()
650 Gbright = Et_getgainG(gspca_dev); do_autogain()
651 reg_r(gspca_dev, ET_LUMA_CENTER, 4); do_autogain()
652 g = (gspca_dev->usb_buf[0] + gspca_dev->usb_buf[3]) >> 1; do_autogain()
653 r = gspca_dev->usb_buf[1]; do_autogain()
654 b = gspca_dev->usb_buf[2]; do_autogain()
664 Et_setgainG(gspca_dev, (__u8) Gbright); do_autogain()
671 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
686 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
687 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
692 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
694 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
700 struct gspca_dev *gspca_dev = sd_s_ctrl() local
701 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
702 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
704 gspca_dev->usb_err = 0; sd_s_ctrl()
706 if (!gspca_dev->streaming) sd_s_ctrl()
711 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
714 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
717 setcolors(gspca_dev, ctrl->val); sd_s_ctrl()
721 setautogain(gspca_dev); sd_s_ctrl()
724 return gspca_dev->usb_err; sd_s_ctrl()
731 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
733 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
734 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
736 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dspca1528.c34 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
62 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
70 struct usb_device *dev = gspca_dev->dev; reg_r()
73 if (gspca_dev->usb_err < 0) reg_r()
80 gspca_dev->usb_buf, len, reg_r()
83 gspca_dev->usb_buf[0]); reg_r()
86 gspca_dev->usb_err = ret; reg_r()
90 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
95 struct usb_device *dev = gspca_dev->dev; reg_w()
98 if (gspca_dev->usb_err < 0) reg_w()
108 gspca_dev->usb_err = ret; reg_w()
112 static void reg_wb(struct gspca_dev *gspca_dev, reg_wb() argument
118 struct usb_device *dev = gspca_dev->dev; reg_wb()
121 if (gspca_dev->usb_err < 0) reg_wb()
124 gspca_dev->usb_buf[0] = byte; reg_wb()
129 gspca_dev->usb_buf, 1, 500); reg_wb()
132 gspca_dev->usb_err = ret; reg_wb()
136 static void wait_status_0(struct gspca_dev *gspca_dev) wait_status_0() argument
143 reg_r(gspca_dev, 0x21, 0x0000, 1); wait_status_0()
144 if (gspca_dev->usb_buf[0] == 0) wait_status_0()
150 gspca_dev->usb_err = -ETIME; wait_status_0()
153 static void wait_status_1(struct gspca_dev *gspca_dev) wait_status_1() argument
159 reg_r(gspca_dev, 0x21, 0x0001, 1); wait_status_1()
161 if (gspca_dev->usb_buf[0] == 1) { wait_status_1()
162 reg_wb(gspca_dev, 0x21, 0x0000, 0x0001, 0x00); wait_status_1()
163 reg_r(gspca_dev, 0x21, 0x0001, 1); wait_status_1()
168 gspca_dev->usb_err = -ETIME; wait_status_1()
171 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
173 reg_wb(gspca_dev, 0xc0, 0x0000, 0x00c0, val); setbrightness()
176 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
178 reg_wb(gspca_dev, 0xc1, 0x0000, 0x00c1, val); setcontrast()
181 static void sethue(struct gspca_dev *gspca_dev, s32 val) sethue() argument
183 reg_wb(gspca_dev, 0xc2, 0x0000, 0x0000, val); sethue()
186 static void setcolor(struct gspca_dev *gspca_dev, s32 val) setcolor() argument
188 reg_wb(gspca_dev, 0xc3, 0x0000, 0x00c3, val); setcolor()
191 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) setsharpness() argument
193 reg_wb(gspca_dev, 0xc4, 0x0000, 0x00c4, val); setsharpness()
197 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
200 gspca_dev->cam.cam_mode = vga_mode; sd_config()
201 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); sd_config()
202 gspca_dev->cam.npkt = 128; /* number of packets per ISOC message */ sd_config()
209 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
211 reg_w(gspca_dev, 0x00, 0x0001, 0x2067); sd_init()
212 reg_w(gspca_dev, 0x00, 0x00d0, 0x206b); sd_init()
213 reg_w(gspca_dev, 0x00, 0x0000, 0x206c); sd_init()
214 reg_w(gspca_dev, 0x00, 0x0001, 0x2069); sd_init()
216 reg_w(gspca_dev, 0x00, 0x00c0, 0x206b); sd_init()
217 reg_w(gspca_dev, 0x00, 0x0000, 0x206c); sd_init()
218 reg_w(gspca_dev, 0x00, 0x0001, 0x2069); sd_init()
220 reg_r(gspca_dev, 0x20, 0x0000, 1); sd_init()
221 reg_r(gspca_dev, 0x20, 0x0000, 5); sd_init()
222 reg_r(gspca_dev, 0x23, 0x0000, 64); sd_init()
223 PDEBUG(D_PROBE, "%s%s", &gspca_dev->usb_buf[0x1c], sd_init()
224 &gspca_dev->usb_buf[0x30]); sd_init()
225 reg_r(gspca_dev, 0x23, 0x0001, 64); sd_init()
226 return gspca_dev->usb_err; sd_init()
230 static int sd_isoc_init(struct gspca_dev *gspca_dev) sd_isoc_init() argument
234 reg_r(gspca_dev, 0x00, 0x2520, 1); sd_isoc_init()
235 wait_status_0(gspca_dev); sd_isoc_init()
236 reg_w(gspca_dev, 0xc5, 0x0003, 0x0000); sd_isoc_init()
237 wait_status_1(gspca_dev); sd_isoc_init()
239 wait_status_0(gspca_dev); sd_isoc_init()
240 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_isoc_init()
241 reg_wb(gspca_dev, 0x25, 0x0000, 0x0004, mode); sd_isoc_init()
242 reg_r(gspca_dev, 0x25, 0x0004, 1); sd_isoc_init()
243 reg_wb(gspca_dev, 0x27, 0x0000, 0x0000, 0x06); /* 420 */ sd_isoc_init()
244 reg_r(gspca_dev, 0x27, 0x0000, 1); sd_isoc_init()
247 gspca_dev->alt = 4; * use alternate setting 3 */ sd_isoc_init()
249 return gspca_dev->usb_err; sd_isoc_init()
253 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
255 struct sd *sd = (struct sd *) gspca_dev; sd_start()
258 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, sd_start()
259 gspca_dev->pixfmt.width, sd_start()
265 reg_r(gspca_dev, 0x00, 0x2520, 1); sd_start()
269 wait_status_0(gspca_dev); sd_start()
270 reg_w(gspca_dev, 0x31, 0x0000, 0x0004); /* start request */ sd_start()
271 wait_status_1(gspca_dev); sd_start()
272 wait_status_0(gspca_dev); sd_start()
276 return gspca_dev->usb_err; sd_start()
279 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
282 wait_status_0(gspca_dev); sd_stopN()
283 reg_w(gspca_dev, 0x31, 0x0000, 0x0000); /* stop request */ sd_stopN()
284 wait_status_1(gspca_dev); sd_stopN()
285 wait_status_0(gspca_dev); sd_stopN()
289 static void add_packet(struct gspca_dev *gspca_dev, add_packet() argument
298 gspca_frame_add(gspca_dev, INTER_PACKET, add_packet()
306 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); add_packet()
309 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
313 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
327 add_packet(gspca_dev, data + 2, len - 2); sd_pkt_scan()
328 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
334 if (gspca_dev->last_packet_type == LAST_PACKET) sd_pkt_scan()
335 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
337 add_packet(gspca_dev, data + 2, len - 2); sd_pkt_scan()
341 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
346 struct gspca_dev *gspca_dev = sd_s_ctrl() local
347 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
349 gspca_dev->usb_err = 0; sd_s_ctrl()
351 if (!gspca_dev->streaming) sd_s_ctrl()
356 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
359 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
362 sethue(gspca_dev, ctrl->val); sd_s_ctrl()
365 setcolor(gspca_dev, ctrl->val); sd_s_ctrl()
368 setsharpness(gspca_dev, ctrl->val); sd_s_ctrl()
371 return gspca_dev->usb_err; sd_s_ctrl()
378 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
380 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
382 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dtv8532.c31 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
119 static void reg_w1(struct gspca_dev *gspca_dev, reg_w1() argument
122 gspca_dev->usb_buf[0] = value; reg_w1()
123 usb_control_msg(gspca_dev->dev, reg_w1()
124 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w1()
128 index, gspca_dev->usb_buf, 1, 500); reg_w1()
132 static void reg_w2(struct gspca_dev *gspca_dev, reg_w2() argument
135 gspca_dev->usb_buf[0] = value; reg_w2()
136 gspca_dev->usb_buf[1] = value >> 8; reg_w2()
137 usb_control_msg(gspca_dev->dev, reg_w2()
138 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w2()
142 index, gspca_dev->usb_buf, 2, 500); reg_w2()
145 static void tv_8532WriteEEprom(struct gspca_dev *gspca_dev) tv_8532WriteEEprom() argument
149 reg_w1(gspca_dev, R01_TIMING_CONTROL_LOW, CMD_EEprom_Open); tv_8532WriteEEprom()
151 reg_w1(gspca_dev, R03_TABLE_ADDR, i); tv_8532WriteEEprom()
152 reg_w1(gspca_dev, R04_WTRAM_DATA_L, eeprom_data[i][2]); tv_8532WriteEEprom()
153 reg_w1(gspca_dev, R05_WTRAM_DATA_M, eeprom_data[i][1]); tv_8532WriteEEprom()
154 reg_w1(gspca_dev, R06_WTRAM_DATA_H, eeprom_data[i][0]); tv_8532WriteEEprom()
155 reg_w1(gspca_dev, R08_RAM_WRITE_ACTION, 0); tv_8532WriteEEprom()
157 reg_w1(gspca_dev, R07_TABLE_LEN, i); tv_8532WriteEEprom()
158 reg_w1(gspca_dev, R01_TIMING_CONTROL_LOW, CMD_EEprom_Close); tv_8532WriteEEprom()
162 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
167 cam = &gspca_dev->cam; sd_config()
174 static void tv_8532_setReg(struct gspca_dev *gspca_dev) tv_8532_setReg() argument
176 reg_w1(gspca_dev, R3B_Test3, 0x0a); /* Test0Sel = 10 */ tv_8532_setReg()
178 reg_w1(gspca_dev, R0E_AD_HEIGHTL, 0x90); tv_8532_setReg()
179 reg_w1(gspca_dev, R0F_AD_HEIGHTH, 0x01); tv_8532_setReg()
180 reg_w2(gspca_dev, R1C_AD_EXPOSE_TIMEL, 0x018f); tv_8532_setReg()
181 reg_w1(gspca_dev, R10_AD_COL_BEGINL, 0x44); tv_8532_setReg()
183 reg_w1(gspca_dev, R11_AD_COL_BEGINH, 0x00); tv_8532_setReg()
185 reg_w1(gspca_dev, R14_AD_ROW_BEGINL, 0x0a); tv_8532_setReg()
187 reg_w1(gspca_dev, R94_AD_BITCONTROL, 0x02); tv_8532_setReg()
188 reg_w1(gspca_dev, R91_AD_SLOPEREG, 0x00); tv_8532_setReg()
189 reg_w1(gspca_dev, R00_PART_CONTROL, LATENT_CHANGE | EXPO_CHANGE); tv_8532_setReg()
194 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
196 tv_8532WriteEEprom(gspca_dev); sd_init()
201 static void setexposure(struct gspca_dev *gspca_dev, s32 val) setexposure() argument
203 reg_w2(gspca_dev, R1C_AD_EXPOSE_TIMEL, val); setexposure()
204 reg_w1(gspca_dev, R00_PART_CONTROL, LATENT_CHANGE | EXPO_CHANGE); setexposure()
208 static void setgain(struct gspca_dev *gspca_dev, s32 val) setgain() argument
210 reg_w2(gspca_dev, R20_GAIN_G1L, val); setgain()
211 reg_w2(gspca_dev, R22_GAIN_RL, val); setgain()
212 reg_w2(gspca_dev, R24_GAIN_BL, val); setgain()
213 reg_w2(gspca_dev, R26_GAIN_G2L, val); setgain()
217 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
219 struct sd *sd = (struct sd *) gspca_dev; sd_start()
221 reg_w1(gspca_dev, R0C_AD_WIDTHL, 0xe8); /* 0x20; 0x0c */ sd_start()
222 reg_w1(gspca_dev, R0D_AD_WIDTHH, 0x03); sd_start()
225 reg_w1(gspca_dev, R28_QUANT, 0x90); sd_start()
227 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) { sd_start()
229 reg_w1(gspca_dev, R29_LINE, 0x41); sd_start()
233 reg_w1(gspca_dev, R29_LINE, 0x81); sd_start()
237 reg_w1(gspca_dev, R2C_POLARITY, 0x10); /* slow clock */ sd_start()
238 reg_w1(gspca_dev, R2D_POINT, 0x14); sd_start()
239 reg_w1(gspca_dev, R2E_POINTH, 0x01); sd_start()
240 reg_w1(gspca_dev, R2F_POINTB, 0x12); sd_start()
241 reg_w1(gspca_dev, R30_POINTBH, 0x01); sd_start()
243 tv_8532_setReg(gspca_dev); sd_start()
246 reg_w1(gspca_dev, R31_UPD, 0x01); /* update registers */ sd_start()
248 reg_w1(gspca_dev, R31_UPD, 0x00); /* end update */ sd_start()
250 gspca_dev->empty_packet = 0; /* check the empty packets */ sd_start()
256 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
258 reg_w1(gspca_dev, R3B_Test3, 0x0b); /* Test0Sel = 11 = GPIO */ sd_stopN()
261 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
265 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
269 if (gspca_dev->empty_packet) { sd_pkt_scan()
270 gspca_dev->empty_packet = 0; sd_pkt_scan()
271 sd->packet = gspca_dev->pixfmt.height / 2; sd_pkt_scan()
286 gspca_frame_add(gspca_dev, packet_type0, sd_pkt_scan()
287 data + 2, gspca_dev->pixfmt.width); sd_pkt_scan()
288 gspca_frame_add(gspca_dev, packet_type1, sd_pkt_scan()
289 data + gspca_dev->pixfmt.width + 5, sd_pkt_scan()
290 gspca_dev->pixfmt.width); sd_pkt_scan()
295 struct gspca_dev *gspca_dev = sd_s_ctrl() local
296 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
298 gspca_dev->usb_err = 0; sd_s_ctrl()
300 if (!gspca_dev->streaming) sd_s_ctrl()
305 setexposure(gspca_dev, ctrl->val); sd_s_ctrl()
308 setgain(gspca_dev, ctrl->val); sd_s_ctrl()
311 return gspca_dev->usb_err; sd_s_ctrl()
318 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
320 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
322 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dspca506.c34 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
76 /* read 'len' bytes to gspca_dev->usb_buf */ reg_r()
77 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
82 usb_control_msg(gspca_dev->dev, reg_r()
83 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r()
87 index, gspca_dev->usb_buf, length, reg_r()
104 static void spca506_Initi2c(struct gspca_dev *gspca_dev) spca506_Initi2c() argument
106 reg_w(gspca_dev->dev, 0x07, SAA7113_I2C_BASE_WRITE, 0x0004); spca506_Initi2c()
109 static void spca506_WriteI2c(struct gspca_dev *gspca_dev, __u16 valeur, spca506_WriteI2c() argument
114 reg_w(gspca_dev->dev, 0x07, reg, 0x0001); spca506_WriteI2c()
115 reg_w(gspca_dev->dev, 0x07, valeur, 0x0000); spca506_WriteI2c()
117 reg_r(gspca_dev, 0x07, 0x0003, 2); spca506_WriteI2c()
118 if ((gspca_dev->usb_buf[0] | gspca_dev->usb_buf[1]) == 0x00) spca506_WriteI2c()
123 static void spca506_SetNormeInput(struct gspca_dev *gspca_dev, spca506_SetNormeInput() argument
127 struct sd *sd = (struct sd *) gspca_dev; spca506_SetNormeInput()
134 spca506_Initi2c(gspca_dev); spca506_SetNormeInput()
145 reg_w(gspca_dev->dev, 0x08, videomask, 0x0000); spca506_SetNormeInput()
146 spca506_WriteI2c(gspca_dev, (0xc0 | (channel & 0x0F)), 0x02); spca506_SetNormeInput()
149 spca506_WriteI2c(gspca_dev, 0x33, 0x0e); spca506_SetNormeInput()
152 spca506_WriteI2c(gspca_dev, 0x53, 0x0e); spca506_SetNormeInput()
155 spca506_WriteI2c(gspca_dev, 0x03, 0x0e); spca506_SetNormeInput()
164 static void spca506_GetNormeInput(struct gspca_dev *gspca_dev, spca506_GetNormeInput() argument
167 struct sd *sd = (struct sd *) gspca_dev; spca506_GetNormeInput()
176 static void spca506_Setsize(struct gspca_dev *gspca_dev, __u16 code, spca506_Setsize() argument
179 struct usb_device *dev = gspca_dev->dev; spca506_Setsize()
208 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
213 cam = &gspca_dev->cam; sd_config()
220 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
222 struct usb_device *dev = gspca_dev->dev; sd_init()
230 spca506_SetNormeInput(gspca_dev, 0, 0); sd_init()
256 spca506_Initi2c(gspca_dev); sd_init()
257 spca506_WriteI2c(gspca_dev, 0x08, 0x01); sd_init()
258 spca506_WriteI2c(gspca_dev, 0xc0, 0x02); sd_init()
260 spca506_WriteI2c(gspca_dev, 0x33, 0x03); sd_init()
261 spca506_WriteI2c(gspca_dev, 0x00, 0x04); sd_init()
262 spca506_WriteI2c(gspca_dev, 0x00, 0x05); sd_init()
263 spca506_WriteI2c(gspca_dev, 0x0d, 0x06); sd_init()
264 spca506_WriteI2c(gspca_dev, 0xf0, 0x07); sd_init()
265 spca506_WriteI2c(gspca_dev, 0x98, 0x08); sd_init()
266 spca506_WriteI2c(gspca_dev, 0x03, 0x09); sd_init()
267 spca506_WriteI2c(gspca_dev, 0x80, 0x0a); sd_init()
268 spca506_WriteI2c(gspca_dev, 0x47, 0x0b); sd_init()
269 spca506_WriteI2c(gspca_dev, 0x48, 0x0c); sd_init()
270 spca506_WriteI2c(gspca_dev, 0x00, 0x0d); sd_init()
271 spca506_WriteI2c(gspca_dev, 0x03, 0x0e); /* Chroma Pal adjust */ sd_init()
272 spca506_WriteI2c(gspca_dev, 0x2a, 0x0f); sd_init()
273 spca506_WriteI2c(gspca_dev, 0x00, 0x10); sd_init()
274 spca506_WriteI2c(gspca_dev, 0x0c, 0x11); sd_init()
275 spca506_WriteI2c(gspca_dev, 0xb8, 0x12); sd_init()
276 spca506_WriteI2c(gspca_dev, 0x01, 0x13); sd_init()
277 spca506_WriteI2c(gspca_dev, 0x00, 0x14); sd_init()
278 spca506_WriteI2c(gspca_dev, 0x00, 0x15); sd_init()
279 spca506_WriteI2c(gspca_dev, 0x00, 0x16); sd_init()
280 spca506_WriteI2c(gspca_dev, 0x00, 0x17); sd_init()
281 spca506_WriteI2c(gspca_dev, 0x00, 0x18); sd_init()
282 spca506_WriteI2c(gspca_dev, 0x00, 0x19); sd_init()
283 spca506_WriteI2c(gspca_dev, 0x00, 0x1a); sd_init()
284 spca506_WriteI2c(gspca_dev, 0x00, 0x1b); sd_init()
285 spca506_WriteI2c(gspca_dev, 0x00, 0x1c); sd_init()
286 spca506_WriteI2c(gspca_dev, 0x00, 0x1d); sd_init()
287 spca506_WriteI2c(gspca_dev, 0x00, 0x1e); sd_init()
288 spca506_WriteI2c(gspca_dev, 0xa1, 0x1f); sd_init()
289 spca506_WriteI2c(gspca_dev, 0x02, 0x40); sd_init()
290 spca506_WriteI2c(gspca_dev, 0xff, 0x41); sd_init()
291 spca506_WriteI2c(gspca_dev, 0xff, 0x42); sd_init()
292 spca506_WriteI2c(gspca_dev, 0xff, 0x43); sd_init()
293 spca506_WriteI2c(gspca_dev, 0xff, 0x44); sd_init()
294 spca506_WriteI2c(gspca_dev, 0xff, 0x45); sd_init()
295 spca506_WriteI2c(gspca_dev, 0xff, 0x46); sd_init()
296 spca506_WriteI2c(gspca_dev, 0xff, 0x47); sd_init()
297 spca506_WriteI2c(gspca_dev, 0xff, 0x48); sd_init()
298 spca506_WriteI2c(gspca_dev, 0xff, 0x49); sd_init()
299 spca506_WriteI2c(gspca_dev, 0xff, 0x4a); sd_init()
300 spca506_WriteI2c(gspca_dev, 0xff, 0x4b); sd_init()
301 spca506_WriteI2c(gspca_dev, 0xff, 0x4c); sd_init()
302 spca506_WriteI2c(gspca_dev, 0xff, 0x4d); sd_init()
303 spca506_WriteI2c(gspca_dev, 0xff, 0x4e); sd_init()
304 spca506_WriteI2c(gspca_dev, 0xff, 0x4f); sd_init()
305 spca506_WriteI2c(gspca_dev, 0xff, 0x50); sd_init()
306 spca506_WriteI2c(gspca_dev, 0xff, 0x51); sd_init()
307 spca506_WriteI2c(gspca_dev, 0xff, 0x52); sd_init()
308 spca506_WriteI2c(gspca_dev, 0xff, 0x53); sd_init()
309 spca506_WriteI2c(gspca_dev, 0xff, 0x54); sd_init()
310 spca506_WriteI2c(gspca_dev, 0xff, 0x55); sd_init()
311 spca506_WriteI2c(gspca_dev, 0xff, 0x56); sd_init()
312 spca506_WriteI2c(gspca_dev, 0xff, 0x57); sd_init()
313 spca506_WriteI2c(gspca_dev, 0x00, 0x58); sd_init()
314 spca506_WriteI2c(gspca_dev, 0x54, 0x59); sd_init()
315 spca506_WriteI2c(gspca_dev, 0x07, 0x5a); sd_init()
316 spca506_WriteI2c(gspca_dev, 0x83, 0x5b); sd_init()
317 spca506_WriteI2c(gspca_dev, 0x00, 0x5c); sd_init()
318 spca506_WriteI2c(gspca_dev, 0x00, 0x5d); sd_init()
319 spca506_WriteI2c(gspca_dev, 0x00, 0x5e); sd_init()
320 spca506_WriteI2c(gspca_dev, 0x00, 0x5f); sd_init()
321 spca506_WriteI2c(gspca_dev, 0x00, 0x60); sd_init()
322 spca506_WriteI2c(gspca_dev, 0x05, 0x61); sd_init()
323 spca506_WriteI2c(gspca_dev, 0x9f, 0x62); sd_init()
328 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
330 struct usb_device *dev = gspca_dev->dev; sd_start()
344 spca506_Initi2c(gspca_dev); sd_start()
345 spca506_WriteI2c(gspca_dev, 0x08, 0x01); /* Increment Delay */ sd_start()
346 /* spca506_WriteI2c(gspca_dev, 0xc0, 0x02); * Analog Input Control 1 */ sd_start()
347 spca506_WriteI2c(gspca_dev, 0x33, 0x03); sd_start()
349 spca506_WriteI2c(gspca_dev, 0x00, 0x04); sd_start()
351 spca506_WriteI2c(gspca_dev, 0x00, 0x05); sd_start()
353 spca506_WriteI2c(gspca_dev, 0x0d, 0x06); sd_start()
355 spca506_WriteI2c(gspca_dev, 0xf0, 0x07); sd_start()
358 spca506_WriteI2c(gspca_dev, 0x98, 0x08); /* Sync Control */ sd_start()
360 spca506_WriteI2c(gspca_dev, 0x03, 0x09); /* Luminance Control */ sd_start()
361 spca506_WriteI2c(gspca_dev, 0x80, 0x0a); sd_start()
363 spca506_WriteI2c(gspca_dev, 0x47, 0x0b); /* Luminance Contrast */ sd_start()
364 spca506_WriteI2c(gspca_dev, 0x48, 0x0c); sd_start()
366 spca506_WriteI2c(gspca_dev, 0x00, 0x0d); sd_start()
368 spca506_WriteI2c(gspca_dev, 0x2a, 0x0f); sd_start()
371 spca506_WriteI2c(gspca_dev, 0x00, 0x10); sd_start()
373 spca506_WriteI2c(gspca_dev, 0x0c, 0x11); /* Output Control 1 */ sd_start()
374 spca506_WriteI2c(gspca_dev, 0xb8, 0x12); /* Output Control 2 */ sd_start()
375 spca506_WriteI2c(gspca_dev, 0x01, 0x13); /* Output Control 3 */ sd_start()
376 spca506_WriteI2c(gspca_dev, 0x00, 0x14); /* reserved */ sd_start()
377 spca506_WriteI2c(gspca_dev, 0x00, 0x15); /* VGATE START */ sd_start()
378 spca506_WriteI2c(gspca_dev, 0x00, 0x16); /* VGATE STOP */ sd_start()
379 spca506_WriteI2c(gspca_dev, 0x00, 0x17); /* VGATE Control (MSB) */ sd_start()
380 spca506_WriteI2c(gspca_dev, 0x00, 0x18); sd_start()
381 spca506_WriteI2c(gspca_dev, 0x00, 0x19); sd_start()
382 spca506_WriteI2c(gspca_dev, 0x00, 0x1a); sd_start()
383 spca506_WriteI2c(gspca_dev, 0x00, 0x1b); sd_start()
384 spca506_WriteI2c(gspca_dev, 0x00, 0x1c); sd_start()
385 spca506_WriteI2c(gspca_dev, 0x00, 0x1d); sd_start()
386 spca506_WriteI2c(gspca_dev, 0x00, 0x1e); sd_start()
387 spca506_WriteI2c(gspca_dev, 0xa1, 0x1f); sd_start()
388 spca506_WriteI2c(gspca_dev, 0x02, 0x40); sd_start()
389 spca506_WriteI2c(gspca_dev, 0xff, 0x41); sd_start()
390 spca506_WriteI2c(gspca_dev, 0xff, 0x42); sd_start()
391 spca506_WriteI2c(gspca_dev, 0xff, 0x43); sd_start()
392 spca506_WriteI2c(gspca_dev, 0xff, 0x44); sd_start()
393 spca506_WriteI2c(gspca_dev, 0xff, 0x45); sd_start()
394 spca506_WriteI2c(gspca_dev, 0xff, 0x46); sd_start()
395 spca506_WriteI2c(gspca_dev, 0xff, 0x47); sd_start()
396 spca506_WriteI2c(gspca_dev, 0xff, 0x48); sd_start()
397 spca506_WriteI2c(gspca_dev, 0xff, 0x49); sd_start()
398 spca506_WriteI2c(gspca_dev, 0xff, 0x4a); sd_start()
399 spca506_WriteI2c(gspca_dev, 0xff, 0x4b); sd_start()
400 spca506_WriteI2c(gspca_dev, 0xff, 0x4c); sd_start()
401 spca506_WriteI2c(gspca_dev, 0xff, 0x4d); sd_start()
402 spca506_WriteI2c(gspca_dev, 0xff, 0x4e); sd_start()
403 spca506_WriteI2c(gspca_dev, 0xff, 0x4f); sd_start()
404 spca506_WriteI2c(gspca_dev, 0xff, 0x50); sd_start()
405 spca506_WriteI2c(gspca_dev, 0xff, 0x51); sd_start()
406 spca506_WriteI2c(gspca_dev, 0xff, 0x52); sd_start()
407 spca506_WriteI2c(gspca_dev, 0xff, 0x53); sd_start()
408 spca506_WriteI2c(gspca_dev, 0xff, 0x54); sd_start()
409 spca506_WriteI2c(gspca_dev, 0xff, 0x55); sd_start()
410 spca506_WriteI2c(gspca_dev, 0xff, 0x56); sd_start()
411 spca506_WriteI2c(gspca_dev, 0xff, 0x57); sd_start()
412 spca506_WriteI2c(gspca_dev, 0x00, 0x58); sd_start()
413 spca506_WriteI2c(gspca_dev, 0x54, 0x59); sd_start()
414 spca506_WriteI2c(gspca_dev, 0x07, 0x5a); sd_start()
415 spca506_WriteI2c(gspca_dev, 0x83, 0x5b); sd_start()
416 spca506_WriteI2c(gspca_dev, 0x00, 0x5c); sd_start()
417 spca506_WriteI2c(gspca_dev, 0x00, 0x5d); sd_start()
418 spca506_WriteI2c(gspca_dev, 0x00, 0x5e); sd_start()
419 spca506_WriteI2c(gspca_dev, 0x00, 0x5f); sd_start()
420 spca506_WriteI2c(gspca_dev, 0x00, 0x60); sd_start()
421 spca506_WriteI2c(gspca_dev, 0x05, 0x61); sd_start()
422 spca506_WriteI2c(gspca_dev, 0x9f, 0x62); sd_start()
428 switch (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) { sd_start()
430 spca506_Setsize(gspca_dev, 0, 0x10, 0x10); sd_start()
433 spca506_Setsize(gspca_dev, 1, 0x1a, 0x1a); sd_start()
436 spca506_Setsize(gspca_dev, 2, 0x1c, 0x1c); sd_start()
439 spca506_Setsize(gspca_dev, 4, 0x34, 0x34); sd_start()
443 spca506_Setsize(gspca_dev, 5, 0x40, 0x40); sd_start()
451 reg_r(gspca_dev, 0x04, 0x0001, 2); sd_start()
453 spca506_GetNormeInput(gspca_dev, &norme, &channel); sd_start()
454 spca506_SetNormeInput(gspca_dev, norme, channel); sd_start()
458 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
460 struct usb_device *dev = gspca_dev->dev; sd_stopN()
467 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
473 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
476 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
479 /* gspca_dev->last_packet_type = DISCARD_PACKET; */ sd_pkt_scan()
484 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
489 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
491 spca506_Initi2c(gspca_dev); setbrightness()
492 spca506_WriteI2c(gspca_dev, val, SAA7113_bright); setbrightness()
493 spca506_WriteI2c(gspca_dev, 0x01, 0x09); setbrightness()
496 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
498 spca506_Initi2c(gspca_dev); setcontrast()
499 spca506_WriteI2c(gspca_dev, val, SAA7113_contrast); setcontrast()
500 spca506_WriteI2c(gspca_dev, 0x01, 0x09); setcontrast()
503 static void setcolors(struct gspca_dev *gspca_dev, s32 val) setcolors() argument
505 spca506_Initi2c(gspca_dev); setcolors()
506 spca506_WriteI2c(gspca_dev, val, SAA7113_saturation); setcolors()
507 spca506_WriteI2c(gspca_dev, 0x01, 0x09); setcolors()
510 static void sethue(struct gspca_dev *gspca_dev, s32 val) sethue() argument
512 spca506_Initi2c(gspca_dev); sethue()
513 spca506_WriteI2c(gspca_dev, val, SAA7113_hue); sethue()
514 spca506_WriteI2c(gspca_dev, 0x01, 0x09); sethue()
519 struct gspca_dev *gspca_dev = sd_s_ctrl() local
520 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
522 gspca_dev->usb_err = 0; sd_s_ctrl()
524 if (!gspca_dev->streaming) sd_s_ctrl()
529 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
532 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
535 setcolors(gspca_dev, ctrl->val); sd_s_ctrl()
538 sethue(gspca_dev, ctrl->val); sd_s_ctrl()
541 return gspca_dev->usb_err; sd_s_ctrl()
548 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
550 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
552 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dmars.c37 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
51 static void setbrightness(struct gspca_dev *gspca_dev, s32 val);
52 static void setcolors(struct gspca_dev *gspca_dev, s32 val);
53 static void setgamma(struct gspca_dev *gspca_dev, s32 val);
54 static void setsharpness(struct gspca_dev *gspca_dev, s32 val);
80 /* write <len> bytes from gspca_dev->usb_buf */ reg_w()
81 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
86 if (gspca_dev->usb_err < 0) reg_w()
89 ret = usb_bulk_msg(gspca_dev->dev, reg_w()
90 usb_sndbulkpipe(gspca_dev->dev, 4), reg_w()
91 gspca_dev->usb_buf, reg_w()
97 gspca_dev->usb_buf[0], ret); reg_w()
98 gspca_dev->usb_err = ret; reg_w()
102 static void mi_w(struct gspca_dev *gspca_dev, mi_w() argument
106 gspca_dev->usb_buf[0] = 0x1f; mi_w()
107 gspca_dev->usb_buf[1] = 0; /* control byte */ mi_w()
108 gspca_dev->usb_buf[2] = addr; mi_w()
109 gspca_dev->usb_buf[3] = value; mi_w()
111 reg_w(gspca_dev, 4); mi_w()
114 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
116 gspca_dev->usb_buf[0] = 0x61; setbrightness()
117 gspca_dev->usb_buf[1] = val; setbrightness()
118 reg_w(gspca_dev, 2); setbrightness()
121 static void setcolors(struct gspca_dev *gspca_dev, s32 val) setcolors() argument
123 gspca_dev->usb_buf[0] = 0x5f; setcolors()
124 gspca_dev->usb_buf[1] = val << 3; setcolors()
125 gspca_dev->usb_buf[2] = ((val >> 2) & 0xf8) | 0x04; setcolors()
126 reg_w(gspca_dev, 3); setcolors()
129 static void setgamma(struct gspca_dev *gspca_dev, s32 val) setgamma() argument
131 gspca_dev->usb_buf[0] = 0x06; setgamma()
132 gspca_dev->usb_buf[1] = val * 0x40; setgamma()
133 reg_w(gspca_dev, 2); setgamma()
136 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) setsharpness() argument
138 gspca_dev->usb_buf[0] = 0x67; setsharpness()
139 gspca_dev->usb_buf[1] = val * 4 + 3; setsharpness()
140 reg_w(gspca_dev, 2); setsharpness()
143 static void setilluminators(struct gspca_dev *gspca_dev, bool top, bool bottom) setilluminators() argument
146 gspca_dev->usb_buf[0] = 0x22; setilluminators()
148 gspca_dev->usb_buf[1] = 0x76; setilluminators()
150 gspca_dev->usb_buf[1] = 0x7a; setilluminators()
152 gspca_dev->usb_buf[1] = 0x7e; setilluminators()
153 reg_w(gspca_dev, 2); setilluminators()
158 struct gspca_dev *gspca_dev = mars_s_ctrl() local
159 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); mars_s_ctrl()
160 struct sd *sd = (struct sd *)gspca_dev; mars_s_ctrl()
162 gspca_dev->usb_err = 0; mars_s_ctrl()
172 if (!gspca_dev->streaming) mars_s_ctrl()
177 setbrightness(gspca_dev, ctrl->val); mars_s_ctrl()
180 setcolors(gspca_dev, ctrl->val); mars_s_ctrl()
183 setgamma(gspca_dev, ctrl->val); mars_s_ctrl()
186 setilluminators(gspca_dev, sd->illum_top->val, mars_s_ctrl()
190 setsharpness(gspca_dev, ctrl->val); mars_s_ctrl()
195 return gspca_dev->usb_err; mars_s_ctrl()
203 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
205 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
206 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
208 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
233 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
238 cam = &gspca_dev->cam; sd_config()
245 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
250 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
252 struct sd *sd = (struct sd *) gspca_dev; sd_start()
257 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, sd_start()
258 gspca_dev->pixfmt.width, sd_start()
262 data = gspca_dev->usb_buf; sd_start()
266 reg_w(gspca_dev, 2); sd_start()
274 data[3] = gspca_dev->pixfmt.width / 8; /* h_size , reg 2 */ sd_start()
275 data[4] = gspca_dev->pixfmt.height / 8; /* v_size , reg 3 */ sd_start()
288 reg_w(gspca_dev, 11); sd_start()
293 reg_w(gspca_dev, 2); sd_start()
296 /* if (gspca_dev->width == 1280) */ sd_start()
302 reg_w(gspca_dev, 2); sd_start()
316 reg_w(gspca_dev, 6); sd_start()
322 reg_w(gspca_dev, 3); sd_start()
328 reg_w(gspca_dev, 4); sd_start()
332 reg_w(gspca_dev, 2); sd_start()
337 mi_w(gspca_dev, i + 1, mi_data[i]); sd_start()
341 reg_w(gspca_dev, 2); sd_start()
343 setilluminators(gspca_dev, v4l2_ctrl_g_ctrl(sd->illum_top), sd_start()
346 return gspca_dev->usb_err; sd_start()
349 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
351 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
355 setilluminators(gspca_dev, false, false); sd_stopN()
359 gspca_dev->usb_buf[0] = 1; sd_stopN()
360 gspca_dev->usb_buf[1] = 0; sd_stopN()
361 reg_w(gspca_dev, 2); sd_stopN()
364 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
368 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
372 /* gspca_dev->last_packet_type = DISCARD_PACKET; */ sd_pkt_scan()
387 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
391 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
399 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
H A Dgspca.c66 static void PDEBUG_MODE(struct gspca_dev *gspca_dev, int debug, char *txt, PDEBUG_MODE() argument
121 struct gspca_dev *gspca_dev = (struct gspca_dev *) urb->context; int_irq() local
127 if (gspca_dev->sd_desc->int_pkt_scan(gspca_dev, int_irq()
155 static int gspca_input_connect(struct gspca_dev *dev) gspca_input_connect()
192 static int alloc_and_submit_int_urb(struct gspca_dev *gspca_dev, alloc_and_submit_int_urb() argument
208 dev = gspca_dev->dev; alloc_and_submit_int_urb()
225 int_irq, (void *)gspca_dev, interval); alloc_and_submit_int_urb()
232 gspca_dev->int_urb = urb; alloc_and_submit_int_urb()
246 static void gspca_input_create_urb(struct gspca_dev *gspca_dev) gspca_input_create_urb() argument
253 if (gspca_dev->sd_desc->int_pkt_scan) { gspca_input_create_urb()
254 intf = usb_ifnum_to_if(gspca_dev->dev, gspca_dev->iface); gspca_input_create_urb()
261 alloc_and_submit_int_urb(gspca_dev, ep); gspca_input_create_urb()
268 static void gspca_input_destroy_urb(struct gspca_dev *gspca_dev) gspca_input_destroy_urb() argument
272 urb = gspca_dev->int_urb; gspca_input_destroy_urb()
274 gspca_dev->int_urb = NULL; gspca_input_destroy_urb()
276 usb_free_coherent(gspca_dev->dev, gspca_input_destroy_urb()
284 static inline void gspca_input_destroy_urb(struct gspca_dev *gspca_dev) gspca_input_destroy_urb() argument
288 static inline void gspca_input_create_urb(struct gspca_dev *gspca_dev) gspca_input_create_urb() argument
292 static inline int gspca_input_connect(struct gspca_dev *dev) gspca_input_connect()
301 static void fill_frame(struct gspca_dev *gspca_dev, fill_frame() argument
312 if (gspca_dev->frozen) fill_frame()
319 pkt_scan = gspca_dev->sd_desc->pkt_scan; fill_frame()
328 gspca_dev->last_packet_type = DISCARD_PACKET; fill_frame()
332 if (gspca_dev->empty_packet == 0) fill_frame()
333 gspca_dev->empty_packet = 1; fill_frame()
342 pkt_scan(gspca_dev, data, len); fill_frame()
359 struct gspca_dev *gspca_dev = (struct gspca_dev *) urb->context; isoc_irq() local
362 if (!gspca_dev->streaming) isoc_irq()
364 fill_frame(gspca_dev, urb); isoc_irq()
372 struct gspca_dev *gspca_dev = (struct gspca_dev *) urb->context; bulk_irq() local
376 if (!gspca_dev->streaming) bulk_irq()
385 if (gspca_dev->frozen) bulk_irq()
394 gspca_dev->sd_desc->pkt_scan(gspca_dev, bulk_irq()
400 if (gspca_dev->cam.bulk_nurbs != 0) { bulk_irq()
418 void gspca_frame_add(struct gspca_dev *gspca_dev, gspca_frame_add() argument
429 i = atomic_read(&gspca_dev->fr_i); gspca_frame_add()
432 if (i == atomic_read(&gspca_dev->fr_q)) { gspca_frame_add()
433 gspca_dev->last_packet_type = DISCARD_PACKET; gspca_frame_add()
434 gspca_dev->sequence++; gspca_frame_add()
437 j = gspca_dev->fr_queue[i]; gspca_frame_add()
438 frame = &gspca_dev->frame[j]; gspca_frame_add()
440 frame->v4l2_buf.sequence = gspca_dev->sequence++; gspca_frame_add()
441 gspca_dev->image = frame->data; gspca_frame_add()
442 gspca_dev->image_len = 0; gspca_frame_add()
444 switch (gspca_dev->last_packet_type) { gspca_frame_add()
447 gspca_dev->last_packet_type = packet_type; gspca_frame_add()
448 gspca_dev->image = NULL; gspca_frame_add()
449 gspca_dev->image_len = 0; gspca_frame_add()
459 if (gspca_dev->image_len + len > gspca_dev->frsz) { gspca_frame_add()
461 gspca_dev->image_len + len, gspca_frame_add()
462 gspca_dev->frsz); gspca_frame_add()
466 if (gspca_dev->image == NULL) { gspca_frame_add()
471 memcpy(gspca_dev->image + gspca_dev->image_len, gspca_frame_add()
473 gspca_dev->image_len += len; gspca_frame_add()
476 gspca_dev->last_packet_type = packet_type; gspca_frame_add()
482 i = atomic_read(&gspca_dev->fr_i); gspca_frame_add()
483 j = gspca_dev->fr_queue[i]; gspca_frame_add()
484 frame = &gspca_dev->frame[j]; gspca_frame_add()
485 frame->v4l2_buf.bytesused = gspca_dev->image_len; gspca_frame_add()
490 atomic_set(&gspca_dev->fr_i, i); gspca_frame_add()
491 wake_up_interruptible(&gspca_dev->wq); /* event = new frame */ gspca_frame_add()
494 gspca_dev->image = NULL; gspca_frame_add()
495 gspca_dev->image_len = 0; gspca_frame_add()
500 static int frame_alloc(struct gspca_dev *gspca_dev, struct file *file, frame_alloc() argument
507 frsz = gspca_dev->pixfmt.sizeimage; frame_alloc()
512 gspca_dev->frbuf = vmalloc_32(frsz * count); frame_alloc()
513 if (!gspca_dev->frbuf) { frame_alloc()
517 gspca_dev->capt_file = file; frame_alloc()
518 gspca_dev->memory = memory; frame_alloc()
519 gspca_dev->frsz = frsz; frame_alloc()
520 gspca_dev->nframes = count; frame_alloc()
522 frame = &gspca_dev->frame[i]; frame_alloc()
530 frame->data = gspca_dev->frbuf + i * frsz; frame_alloc()
533 atomic_set(&gspca_dev->fr_q, 0); frame_alloc()
534 atomic_set(&gspca_dev->fr_i, 0); frame_alloc()
535 gspca_dev->fr_o = 0; frame_alloc()
539 static void frame_free(struct gspca_dev *gspca_dev) frame_free() argument
544 if (gspca_dev->frbuf != NULL) { frame_free()
545 vfree(gspca_dev->frbuf); frame_free()
546 gspca_dev->frbuf = NULL; frame_free()
547 for (i = 0; i < gspca_dev->nframes; i++) frame_free()
548 gspca_dev->frame[i].data = NULL; frame_free()
550 gspca_dev->nframes = 0; frame_free()
551 gspca_dev->frsz = 0; frame_free()
552 gspca_dev->capt_file = NULL; frame_free()
553 gspca_dev->memory = GSPCA_MEMORY_NO; frame_free()
556 static void destroy_urbs(struct gspca_dev *gspca_dev) destroy_urbs() argument
563 urb = gspca_dev->urb[i]; destroy_urbs()
567 gspca_dev->urb[i] = NULL; destroy_urbs()
569 usb_free_coherent(gspca_dev->dev, destroy_urbs()
577 static int gspca_set_alt0(struct gspca_dev *gspca_dev) gspca_set_alt0() argument
581 if (gspca_dev->alt == 0) gspca_set_alt0()
583 ret = usb_set_interface(gspca_dev->dev, gspca_dev->iface, 0); gspca_set_alt0()
590 static void gspca_stream_off(struct gspca_dev *gspca_dev) gspca_stream_off() argument
592 gspca_dev->streaming = 0; gspca_stream_off()
593 gspca_dev->usb_err = 0; gspca_stream_off()
594 if (gspca_dev->sd_desc->stopN) gspca_stream_off()
595 gspca_dev->sd_desc->stopN(gspca_dev); gspca_stream_off()
596 destroy_urbs(gspca_dev); gspca_stream_off()
597 gspca_input_destroy_urb(gspca_dev); gspca_stream_off()
598 gspca_set_alt0(gspca_dev); gspca_stream_off()
599 gspca_input_create_urb(gspca_dev); gspca_stream_off()
600 if (gspca_dev->sd_desc->stop0) gspca_stream_off()
601 gspca_dev->sd_desc->stop0(gspca_dev); gspca_stream_off()
630 static u32 which_bandwidth(struct gspca_dev *gspca_dev) which_bandwidth() argument
635 bandwidth = gspca_dev->pixfmt.sizeimage; which_bandwidth()
638 if (!gspca_dev->cam.needs_full_bandwidth && which_bandwidth()
639 bandwidth < gspca_dev->pixfmt.width * which_bandwidth()
640 gspca_dev->pixfmt.height) which_bandwidth()
644 if (gspca_dev->sd_desc->get_streamparm) { which_bandwidth()
647 gspca_dev->sd_desc->get_streamparm(gspca_dev, &parm); which_bandwidth()
654 if (gspca_dev->pixfmt.width >= 640 which_bandwidth()
655 && gspca_dev->dev->speed == USB_SPEED_FULL) which_bandwidth()
676 static int build_isoc_ep_tb(struct gspca_dev *gspca_dev, build_isoc_ep_tb() argument
697 gspca_dev->xfer_ep); build_isoc_ep_tb()
707 if (gspca_dev->dev->speed == USB_SPEED_HIGH build_isoc_ep_tb()
708 || gspca_dev->dev->speed == USB_SPEED_SUPER) build_isoc_ep_tb()
736 if (gspca_dev->audio && build_isoc_ep_tb()
737 gspca_dev->dev->speed == USB_SPEED_FULL && build_isoc_ep_tb()
746 bandwidth = which_bandwidth(gspca_dev); build_isoc_ep_tb()
760 static int create_urbs(struct gspca_dev *gspca_dev, create_urbs() argument
769 if (!gspca_dev->cam.bulk) { /* isoc */ create_urbs()
772 if (gspca_dev->pkt_size == 0) create_urbs()
775 psize = gspca_dev->pkt_size; create_urbs()
776 npkt = gspca_dev->cam.npkt; create_urbs()
786 bsize = gspca_dev->cam.bulk_size; create_urbs()
790 if (gspca_dev->cam.bulk_nurbs != 0) create_urbs()
791 nurbs = gspca_dev->cam.bulk_nurbs; create_urbs()
802 gspca_dev->urb[n] = urb; create_urbs()
803 urb->transfer_buffer = usb_alloc_coherent(gspca_dev->dev, create_urbs()
812 urb->dev = gspca_dev->dev; create_urbs()
813 urb->context = gspca_dev; create_urbs()
816 urb->pipe = usb_rcvisocpipe(gspca_dev->dev, create_urbs()
828 urb->pipe = usb_rcvbulkpipe(gspca_dev->dev, create_urbs()
840 static int gspca_init_transfer(struct gspca_dev *gspca_dev) gspca_init_transfer() argument
849 gspca_dev->image = NULL; gspca_init_transfer()
850 gspca_dev->image_len = 0; gspca_init_transfer()
851 gspca_dev->last_packet_type = DISCARD_PACKET; gspca_init_transfer()
852 gspca_dev->sequence = 0; gspca_init_transfer()
854 gspca_dev->usb_err = 0; gspca_init_transfer()
857 intf = usb_ifnum_to_if(gspca_dev->dev, gspca_dev->iface); gspca_init_transfer()
858 gspca_dev->alt = gspca_dev->cam.bulk ? intf->num_altsetting : 0; gspca_init_transfer()
859 if (gspca_dev->sd_desc->isoc_init) { gspca_init_transfer()
860 ret = gspca_dev->sd_desc->isoc_init(gspca_dev); gspca_init_transfer()
864 xfer = gspca_dev->cam.bulk ? USB_ENDPOINT_XFER_BULK gspca_init_transfer()
868 if (gspca_dev->alt != 0) { gspca_init_transfer()
869 gspca_dev->alt--; /* (previous version compatibility) */ gspca_init_transfer()
870 ep = alt_xfer(&intf->altsetting[gspca_dev->alt], xfer, gspca_init_transfer()
871 gspca_dev->xfer_ep); gspca_init_transfer()
873 pr_err("bad altsetting %d\n", gspca_dev->alt); gspca_init_transfer()
876 ep_tb[0].alt = gspca_dev->alt; gspca_init_transfer()
881 alt_idx = build_isoc_ep_tb(gspca_dev, intf, ep_tb); gspca_init_transfer()
890 gspca_input_destroy_urb(gspca_dev); gspca_init_transfer()
892 gspca_dev->alt = ep_tb[--alt_idx].alt; gspca_init_transfer()
895 if (alt != gspca_dev->alt) { gspca_init_transfer()
896 alt = gspca_dev->alt; gspca_init_transfer()
898 ret = usb_set_interface(gspca_dev->dev, gspca_init_transfer()
899 gspca_dev->iface, gspca_init_transfer()
909 if (!gspca_dev->cam.no_urb_create) { gspca_init_transfer()
911 ret = create_urbs(gspca_dev, gspca_init_transfer()
913 gspca_dev->xfer_ep)); gspca_init_transfer()
915 destroy_urbs(gspca_dev); gspca_init_transfer()
921 if (gspca_dev->cam.bulk) gspca_init_transfer()
922 usb_clear_halt(gspca_dev->dev, gspca_init_transfer()
923 gspca_dev->urb[0]->pipe); gspca_init_transfer()
926 ret = gspca_dev->sd_desc->start(gspca_dev); gspca_init_transfer()
928 destroy_urbs(gspca_dev); gspca_init_transfer()
931 gspca_dev->streaming = 1; gspca_init_transfer()
932 v4l2_ctrl_handler_setup(gspca_dev->vdev.ctrl_handler); gspca_init_transfer()
935 if (gspca_dev->cam.bulk && gspca_dev->cam.bulk_nurbs == 0) gspca_init_transfer()
940 urb = gspca_dev->urb[n]; gspca_init_transfer()
952 gspca_stream_off(gspca_dev); gspca_init_transfer()
955 gspca_dev->alt, ret); gspca_init_transfer()
964 if (gspca_dev->sd_desc->isoc_nego) { gspca_init_transfer()
965 ret = gspca_dev->sd_desc->isoc_nego(gspca_dev); gspca_init_transfer()
974 gspca_dev->alt = ep_tb[--alt_idx].alt; gspca_init_transfer()
978 gspca_input_create_urb(gspca_dev); gspca_init_transfer()
982 static void gspca_set_default_mode(struct gspca_dev *gspca_dev) gspca_set_default_mode() argument
986 i = gspca_dev->cam.nmodes - 1; /* take the highest mode */ gspca_set_default_mode()
987 gspca_dev->curr_mode = i; gspca_set_default_mode()
988 gspca_dev->pixfmt = gspca_dev->cam.cam_mode[i]; gspca_set_default_mode()
991 v4l2_ctrl_handler_setup(gspca_dev->vdev.ctrl_handler); gspca_set_default_mode()
994 static int wxh_to_mode(struct gspca_dev *gspca_dev, wxh_to_mode() argument
999 for (i = gspca_dev->cam.nmodes; --i > 0; ) { wxh_to_mode()
1000 if (width >= gspca_dev->cam.cam_mode[i].width wxh_to_mode()
1001 && height >= gspca_dev->cam.cam_mode[i].height) wxh_to_mode()
1010 static int gspca_get_mode(struct gspca_dev *gspca_dev, gspca_get_mode() argument
1017 while ((modeU < gspca_dev->cam.nmodes) || modeD >= 0) { gspca_get_mode()
1019 if (gspca_dev->cam.cam_mode[modeD].pixelformat gspca_get_mode()
1023 if (++modeU < gspca_dev->cam.nmodes) { gspca_get_mode()
1024 if (gspca_dev->cam.cam_mode[modeU].pixelformat gspca_get_mode()
1036 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_g_chip_info() local
1038 gspca_dev->usb_err = 0; vidioc_g_chip_info()
1039 if (gspca_dev->sd_desc->get_chip_info) vidioc_g_chip_info()
1040 return gspca_dev->sd_desc->get_chip_info(gspca_dev, chip); vidioc_g_chip_info()
1047 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_g_register() local
1049 gspca_dev->usb_err = 0; vidioc_g_register()
1050 return gspca_dev->sd_desc->get_register(gspca_dev, reg); vidioc_g_register()
1056 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_s_register() local
1058 gspca_dev->usb_err = 0; vidioc_s_register()
1059 return gspca_dev->sd_desc->set_register(gspca_dev, reg); vidioc_s_register()
1066 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_enum_fmt_vid_cap() local
1073 for (i = gspca_dev->cam.nmodes; --i >= 0; ) { vidioc_enum_fmt_vid_cap()
1074 fmt_tb[index] = gspca_dev->cam.cam_mode[i].pixelformat; vidioc_enum_fmt_vid_cap()
1093 if (gspca_dev->cam.cam_mode[i].sizeimage < vidioc_enum_fmt_vid_cap()
1094 gspca_dev->cam.cam_mode[i].width * vidioc_enum_fmt_vid_cap()
1095 gspca_dev->cam.cam_mode[i].height) vidioc_enum_fmt_vid_cap()
1108 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_g_fmt_vid_cap() local
1110 fmt->fmt.pix = gspca_dev->pixfmt; vidioc_g_fmt_vid_cap()
1117 static int try_fmt_vid_cap(struct gspca_dev *gspca_dev, try_fmt_vid_cap() argument
1125 PDEBUG_MODE(gspca_dev, D_CONF, "try fmt cap", try_fmt_vid_cap()
1129 mode = wxh_to_mode(gspca_dev, w, h); try_fmt_vid_cap()
1132 if (gspca_dev->cam.cam_mode[mode].pixelformat try_fmt_vid_cap()
1136 mode2 = gspca_get_mode(gspca_dev, mode, try_fmt_vid_cap()
1141 fmt->fmt.pix = gspca_dev->cam.cam_mode[mode]; try_fmt_vid_cap()
1142 if (gspca_dev->sd_desc->try_fmt) { try_fmt_vid_cap()
1146 gspca_dev->sd_desc->try_fmt(gspca_dev, fmt); try_fmt_vid_cap()
1158 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_try_fmt_vid_cap() local
1161 ret = try_fmt_vid_cap(gspca_dev, fmt); vidioc_try_fmt_vid_cap()
1170 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_s_fmt_vid_cap() local
1173 if (mutex_lock_interruptible(&gspca_dev->queue_lock)) vidioc_s_fmt_vid_cap()
1176 ret = try_fmt_vid_cap(gspca_dev, fmt); vidioc_s_fmt_vid_cap()
1180 if (gspca_dev->nframes != 0 vidioc_s_fmt_vid_cap()
1181 && fmt->fmt.pix.sizeimage > gspca_dev->frsz) { vidioc_s_fmt_vid_cap()
1186 if (gspca_dev->streaming) { vidioc_s_fmt_vid_cap()
1190 gspca_dev->curr_mode = ret; vidioc_s_fmt_vid_cap()
1191 if (gspca_dev->sd_desc->try_fmt) vidioc_s_fmt_vid_cap()
1193 gspca_dev->pixfmt = fmt->fmt.pix; vidioc_s_fmt_vid_cap()
1195 gspca_dev->pixfmt = gspca_dev->cam.cam_mode[ret]; vidioc_s_fmt_vid_cap()
1199 mutex_unlock(&gspca_dev->queue_lock); vidioc_s_fmt_vid_cap()
1206 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_enum_framesizes() local
1210 if (gspca_dev->sd_desc->enum_framesizes) vidioc_enum_framesizes()
1211 return gspca_dev->sd_desc->enum_framesizes(gspca_dev, fsize); vidioc_enum_framesizes()
1213 for (i = 0; i < gspca_dev->cam.nmodes; i++) { vidioc_enum_framesizes()
1215 gspca_dev->cam.cam_mode[i].pixelformat) vidioc_enum_framesizes()
1221 gspca_dev->cam.cam_mode[i].width; vidioc_enum_framesizes()
1223 gspca_dev->cam.cam_mode[i].height; vidioc_enum_framesizes()
1235 struct gspca_dev *gspca_dev = video_drvdata(filp); vidioc_enum_frameintervals() local
1236 int mode = wxh_to_mode(gspca_dev, fival->width, fival->height); vidioc_enum_frameintervals()
1239 if (gspca_dev->cam.mode_framerates == NULL || vidioc_enum_frameintervals()
1240 gspca_dev->cam.mode_framerates[mode].nrates == 0) vidioc_enum_frameintervals()
1244 gspca_dev->cam.cam_mode[mode].pixelformat) vidioc_enum_frameintervals()
1247 for (i = 0; i < gspca_dev->cam.mode_framerates[mode].nrates; i++) { vidioc_enum_frameintervals()
1252 gspca_dev->cam.mode_framerates[mode].rates[i]; vidioc_enum_frameintervals()
1262 struct gspca_dev *gspca_dev = gspca_release() local
1263 container_of(v4l2_device, struct gspca_dev, v4l2_dev); gspca_release()
1265 v4l2_ctrl_handler_free(gspca_dev->vdev.ctrl_handler); gspca_release()
1266 v4l2_device_unregister(&gspca_dev->v4l2_dev); gspca_release()
1267 kfree(gspca_dev->usb_buf); gspca_release()
1268 kfree(gspca_dev); gspca_release()
1273 struct gspca_dev *gspca_dev = video_drvdata(file); dev_open() local
1279 if (!try_module_get(gspca_dev->module)) dev_open()
1284 module_put(gspca_dev->module); dev_open()
1290 struct gspca_dev *gspca_dev = video_drvdata(file); dev_close() local
1295 if (mutex_lock_interruptible(&gspca_dev->usb_lock)) dev_close()
1298 if (mutex_lock_interruptible(&gspca_dev->queue_lock)) { dev_close()
1299 mutex_unlock(&gspca_dev->usb_lock); dev_close()
1304 if (gspca_dev->capt_file == file) { dev_close()
1305 if (gspca_dev->streaming) dev_close()
1306 gspca_stream_off(gspca_dev); dev_close()
1307 frame_free(gspca_dev); dev_close()
1309 module_put(gspca_dev->module); dev_close()
1310 mutex_unlock(&gspca_dev->queue_lock); dev_close()
1311 mutex_unlock(&gspca_dev->usb_lock); dev_close()
1321 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_querycap() local
1323 strlcpy((char *) cap->driver, gspca_dev->sd_desc->name, vidioc_querycap()
1325 if (gspca_dev->dev->product != NULL) { vidioc_querycap()
1326 strlcpy((char *) cap->card, gspca_dev->dev->product, vidioc_querycap()
1331 le16_to_cpu(gspca_dev->dev->descriptor.idVendor), vidioc_querycap()
1332 le16_to_cpu(gspca_dev->dev->descriptor.idProduct)); vidioc_querycap()
1334 usb_make_path(gspca_dev->dev, (char *) cap->bus_info, vidioc_querycap()
1346 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_enum_input() local
1351 input->status = gspca_dev->cam.input_flags; vidioc_enum_input()
1352 strlcpy(input->name, gspca_dev->sd_desc->name, vidioc_enum_input()
1373 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_reqbufs() local
1385 if (mutex_lock_interruptible(&gspca_dev->queue_lock)) vidioc_reqbufs()
1388 if (gspca_dev->memory != GSPCA_MEMORY_NO vidioc_reqbufs()
1389 && gspca_dev->memory != GSPCA_MEMORY_READ vidioc_reqbufs()
1390 && gspca_dev->memory != rb->memory) { vidioc_reqbufs()
1396 if (gspca_dev->capt_file != NULL vidioc_reqbufs()
1397 && gspca_dev->capt_file != file) { vidioc_reqbufs()
1403 for (i = 0; i < gspca_dev->nframes; i++) { vidioc_reqbufs()
1404 if (gspca_dev->frame[i].vma_use_count) { vidioc_reqbufs()
1411 streaming = gspca_dev->streaming; vidioc_reqbufs()
1413 gspca_stream_off(gspca_dev); vidioc_reqbufs()
1417 if (gspca_dev->memory == GSPCA_MEMORY_READ) vidioc_reqbufs()
1422 if (gspca_dev->nframes != 0) vidioc_reqbufs()
1423 frame_free(gspca_dev); vidioc_reqbufs()
1426 ret = frame_alloc(gspca_dev, file, rb->memory, rb->count); vidioc_reqbufs()
1428 rb->count = gspca_dev->nframes; vidioc_reqbufs()
1430 ret = gspca_init_transfer(gspca_dev); vidioc_reqbufs()
1433 mutex_unlock(&gspca_dev->queue_lock); vidioc_reqbufs()
1441 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_querybuf() local
1444 if (v4l2_buf->index >= gspca_dev->nframes) vidioc_querybuf()
1447 frame = &gspca_dev->frame[v4l2_buf->index]; vidioc_querybuf()
1455 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_streamon() local
1460 if (mutex_lock_interruptible(&gspca_dev->queue_lock)) vidioc_streamon()
1464 if (gspca_dev->capt_file != file) { vidioc_streamon()
1469 if (gspca_dev->nframes == 0 vidioc_streamon()
1470 || !(gspca_dev->frame[0].v4l2_buf.flags & V4L2_BUF_FLAG_QUEUED)) { vidioc_streamon()
1474 if (!gspca_dev->streaming) { vidioc_streamon()
1475 ret = gspca_init_transfer(gspca_dev); vidioc_streamon()
1479 PDEBUG_MODE(gspca_dev, D_STREAM, "stream on OK", vidioc_streamon()
1480 gspca_dev->pixfmt.pixelformat, vidioc_streamon()
1481 gspca_dev->pixfmt.width, gspca_dev->pixfmt.height); vidioc_streamon()
1484 mutex_unlock(&gspca_dev->queue_lock); vidioc_streamon()
1491 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_streamoff() local
1497 if (mutex_lock_interruptible(&gspca_dev->queue_lock)) vidioc_streamoff()
1500 if (!gspca_dev->streaming) { vidioc_streamoff()
1506 if (gspca_dev->capt_file != file) { vidioc_streamoff()
1512 gspca_stream_off(gspca_dev); vidioc_streamoff()
1514 wake_up_interruptible(&gspca_dev->wq); vidioc_streamoff()
1517 for (i = 0; i < gspca_dev->nframes; i++) vidioc_streamoff()
1518 gspca_dev->frame[i].v4l2_buf.flags &= ~BUF_ALL_FLAGS; vidioc_streamoff()
1519 atomic_set(&gspca_dev->fr_q, 0); vidioc_streamoff()
1520 atomic_set(&gspca_dev->fr_i, 0); vidioc_streamoff()
1521 gspca_dev->fr_o = 0; vidioc_streamoff()
1524 mutex_unlock(&gspca_dev->queue_lock); vidioc_streamoff()
1531 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_g_jpegcomp() local
1533 gspca_dev->usb_err = 0; vidioc_g_jpegcomp()
1534 return gspca_dev->sd_desc->get_jcomp(gspca_dev, jpegcomp); vidioc_g_jpegcomp()
1540 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_s_jpegcomp() local
1542 gspca_dev->usb_err = 0; vidioc_s_jpegcomp()
1543 return gspca_dev->sd_desc->set_jcomp(gspca_dev, jpegcomp); vidioc_s_jpegcomp()
1549 struct gspca_dev *gspca_dev = video_drvdata(filp); vidioc_g_parm() local
1551 parm->parm.capture.readbuffers = gspca_dev->nbufread; vidioc_g_parm()
1553 if (gspca_dev->sd_desc->get_streamparm) { vidioc_g_parm()
1554 gspca_dev->usb_err = 0; vidioc_g_parm()
1555 gspca_dev->sd_desc->get_streamparm(gspca_dev, parm); vidioc_g_parm()
1556 return gspca_dev->usb_err; vidioc_g_parm()
1564 struct gspca_dev *gspca_dev = video_drvdata(filp); vidioc_s_parm() local
1569 parm->parm.capture.readbuffers = gspca_dev->nbufread; vidioc_s_parm()
1571 gspca_dev->nbufread = n; vidioc_s_parm()
1573 if (gspca_dev->sd_desc->set_streamparm) { vidioc_s_parm()
1574 gspca_dev->usb_err = 0; vidioc_s_parm()
1575 gspca_dev->sd_desc->set_streamparm(gspca_dev, parm); vidioc_s_parm()
1576 return gspca_dev->usb_err; vidioc_s_parm()
1584 struct gspca_dev *gspca_dev = video_drvdata(file); dev_mmap() local
1594 if (mutex_lock_interruptible(&gspca_dev->queue_lock)) dev_mmap()
1596 if (gspca_dev->capt_file != file) { dev_mmap()
1602 for (i = 0; i < gspca_dev->nframes; ++i) { dev_mmap()
1603 if (gspca_dev->frame[i].v4l2_buf.memory != V4L2_MEMORY_MMAP) { dev_mmap()
1607 if ((gspca_dev->frame[i].v4l2_buf.m.offset >> PAGE_SHIFT) dev_mmap()
1609 frame = &gspca_dev->frame[i]; dev_mmap()
1646 mutex_unlock(&gspca_dev->queue_lock); dev_mmap()
1650 static int frame_ready_nolock(struct gspca_dev *gspca_dev, struct file *file, frame_ready_nolock() argument
1653 if (!gspca_dev->present) frame_ready_nolock()
1655 if (gspca_dev->capt_file != file || gspca_dev->memory != memory || frame_ready_nolock()
1656 !gspca_dev->streaming) frame_ready_nolock()
1660 return gspca_dev->fr_o != atomic_read(&gspca_dev->fr_i); frame_ready_nolock()
1663 static int frame_ready(struct gspca_dev *gspca_dev, struct file *file, frame_ready() argument
1668 if (mutex_lock_interruptible(&gspca_dev->queue_lock)) frame_ready()
1670 ret = frame_ready_nolock(gspca_dev, file, memory); frame_ready()
1671 mutex_unlock(&gspca_dev->queue_lock); frame_ready()
1683 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_dqbuf() local
1689 if (mutex_lock_interruptible(&gspca_dev->queue_lock)) vidioc_dqbuf()
1693 ret = frame_ready_nolock(gspca_dev, file, v4l2_buf->memory); vidioc_dqbuf()
1699 mutex_unlock(&gspca_dev->queue_lock); vidioc_dqbuf()
1705 ret = wait_event_interruptible_timeout(gspca_dev->wq, vidioc_dqbuf()
1706 frame_ready(gspca_dev, file, v4l2_buf->memory), vidioc_dqbuf()
1713 if (mutex_lock_interruptible(&gspca_dev->queue_lock)) vidioc_dqbuf()
1717 i = gspca_dev->fr_o; vidioc_dqbuf()
1718 j = gspca_dev->fr_queue[i]; vidioc_dqbuf()
1719 frame = &gspca_dev->frame[j]; vidioc_dqbuf()
1721 gspca_dev->fr_o = (i + 1) % GSPCA_MAX_FRAMES; vidioc_dqbuf()
1728 if (gspca_dev->memory == V4L2_MEMORY_USERPTR) { vidioc_dqbuf()
1737 mutex_unlock(&gspca_dev->queue_lock); vidioc_dqbuf()
1739 if (ret == 0 && gspca_dev->sd_desc->dq_callback) { vidioc_dqbuf()
1740 mutex_lock(&gspca_dev->usb_lock); vidioc_dqbuf()
1741 gspca_dev->usb_err = 0; vidioc_dqbuf()
1742 if (gspca_dev->present) vidioc_dqbuf()
1743 gspca_dev->sd_desc->dq_callback(gspca_dev); vidioc_dqbuf()
1744 mutex_unlock(&gspca_dev->usb_lock); vidioc_dqbuf()
1759 struct gspca_dev *gspca_dev = video_drvdata(file); vidioc_qbuf() local
1765 if (mutex_lock_interruptible(&gspca_dev->queue_lock)) vidioc_qbuf()
1769 if ((unsigned) index >= gspca_dev->nframes) { vidioc_qbuf()
1771 "qbuf idx %d >= %d", index, gspca_dev->nframes); vidioc_qbuf()
1775 if (v4l2_buf->memory != gspca_dev->memory) { vidioc_qbuf()
1781 frame = &gspca_dev->frame[index]; vidioc_qbuf()
1796 i = atomic_read(&gspca_dev->fr_q); vidioc_qbuf()
1797 gspca_dev->fr_queue[i] = index; vidioc_qbuf()
1798 atomic_set(&gspca_dev->fr_q, (i + 1) % GSPCA_MAX_FRAMES); vidioc_qbuf()
1804 mutex_unlock(&gspca_dev->queue_lock); vidioc_qbuf()
1811 static int read_alloc(struct gspca_dev *gspca_dev, read_alloc() argument
1819 if (mutex_lock_interruptible(&gspca_dev->usb_lock)) read_alloc()
1822 if (gspca_dev->nframes == 0) { read_alloc()
1826 rb.count = gspca_dev->nbufread; read_alloc()
1829 ret = vidioc_reqbufs(file, gspca_dev, &rb); read_alloc()
1837 for (i = 0; i < gspca_dev->nbufread; i++) { read_alloc()
1839 ret = vidioc_qbuf(file, gspca_dev, &v4l2_buf); read_alloc()
1848 ret = vidioc_streamon(file, gspca_dev, V4L2_BUF_TYPE_VIDEO_CAPTURE); read_alloc()
1852 mutex_unlock(&gspca_dev->usb_lock); read_alloc()
1858 struct gspca_dev *gspca_dev = video_drvdata(file); dev_poll() local
1869 if (gspca_dev->memory == GSPCA_MEMORY_NO) { dev_poll()
1870 if (read_alloc(gspca_dev, file) != 0) { dev_poll()
1876 poll_wait(file, &gspca_dev->wq, wait); dev_poll()
1879 if (mutex_lock_interruptible(&gspca_dev->queue_lock) != 0) { dev_poll()
1883 if (gspca_dev->fr_o != atomic_read(&gspca_dev->fr_i)) dev_poll()
1885 mutex_unlock(&gspca_dev->queue_lock); dev_poll()
1889 if (!gspca_dev->present) dev_poll()
1898 struct gspca_dev *gspca_dev = video_drvdata(file); dev_read() local
1905 if (gspca_dev->memory == GSPCA_MEMORY_NO) { /* first time ? */ dev_read()
1906 ret = read_alloc(gspca_dev, file); dev_read()
1919 ret = vidioc_dqbuf(file, gspca_dev, &v4l2_buf); dev_read()
1927 frame = &gspca_dev->frame[v4l2_buf.index]; dev_read()
1932 ret = vidioc_qbuf(file, gspca_dev, &v4l2_buf); dev_read()
1951 ret2 = vidioc_qbuf(file, gspca_dev, &v4l2_buf); dev_read()
2016 struct gspca_dev *gspca_dev; gspca_dev_probe2() local
2024 if (dev_size < sizeof *gspca_dev) gspca_dev_probe2()
2025 dev_size = sizeof *gspca_dev; gspca_dev_probe2()
2026 gspca_dev = kzalloc(dev_size, GFP_KERNEL); gspca_dev_probe2()
2027 if (!gspca_dev) { gspca_dev_probe2()
2031 gspca_dev->usb_buf = kmalloc(USB_BUF_SZ, GFP_KERNEL); gspca_dev_probe2()
2032 if (!gspca_dev->usb_buf) { gspca_dev_probe2()
2037 gspca_dev->dev = dev; gspca_dev_probe2()
2038 gspca_dev->iface = intf->cur_altsetting->desc.bInterfaceNumber; gspca_dev_probe2()
2039 gspca_dev->xfer_ep = -1; gspca_dev_probe2()
2052 gspca_dev->audio = 1; gspca_dev_probe2()
2058 gspca_dev->v4l2_dev.release = gspca_release; gspca_dev_probe2()
2059 ret = v4l2_device_register(&intf->dev, &gspca_dev->v4l2_dev); gspca_dev_probe2()
2062 gspca_dev->sd_desc = sd_desc; gspca_dev_probe2()
2063 gspca_dev->nbufread = 2; gspca_dev_probe2()
2064 gspca_dev->empty_packet = -1; /* don't check the empty packets */ gspca_dev_probe2()
2065 gspca_dev->vdev = gspca_template; gspca_dev_probe2()
2066 gspca_dev->vdev.v4l2_dev = &gspca_dev->v4l2_dev; gspca_dev_probe2()
2067 video_set_drvdata(&gspca_dev->vdev, gspca_dev); gspca_dev_probe2()
2068 gspca_dev->module = module; gspca_dev_probe2()
2069 gspca_dev->present = 1; gspca_dev_probe2()
2071 mutex_init(&gspca_dev->usb_lock); gspca_dev_probe2()
2072 gspca_dev->vdev.lock = &gspca_dev->usb_lock; gspca_dev_probe2()
2073 mutex_init(&gspca_dev->queue_lock); gspca_dev_probe2()
2074 init_waitqueue_head(&gspca_dev->wq); gspca_dev_probe2()
2077 ret = sd_desc->config(gspca_dev, id); gspca_dev_probe2()
2080 ret = sd_desc->init(gspca_dev); gspca_dev_probe2()
2084 ret = sd_desc->init_controls(gspca_dev); gspca_dev_probe2()
2087 gspca_set_default_mode(gspca_dev); gspca_dev_probe2()
2089 ret = gspca_input_connect(gspca_dev); gspca_dev_probe2()
2098 v4l2_disable_ioctl_locking(&gspca_dev->vdev, VIDIOC_DQBUF); gspca_dev_probe2()
2099 v4l2_disable_ioctl_locking(&gspca_dev->vdev, VIDIOC_QBUF); gspca_dev_probe2()
2100 v4l2_disable_ioctl_locking(&gspca_dev->vdev, VIDIOC_QUERYBUF); gspca_dev_probe2()
2102 if (!gspca_dev->sd_desc->get_register) gspca_dev_probe2()
2103 v4l2_disable_ioctl(&gspca_dev->vdev, VIDIOC_DBG_G_REGISTER); gspca_dev_probe2()
2104 if (!gspca_dev->sd_desc->set_register) gspca_dev_probe2()
2105 v4l2_disable_ioctl(&gspca_dev->vdev, VIDIOC_DBG_S_REGISTER); gspca_dev_probe2()
2107 if (!gspca_dev->sd_desc->get_jcomp) gspca_dev_probe2()
2108 v4l2_disable_ioctl(&gspca_dev->vdev, VIDIOC_G_JPEGCOMP); gspca_dev_probe2()
2109 if (!gspca_dev->sd_desc->set_jcomp) gspca_dev_probe2()
2110 v4l2_disable_ioctl(&gspca_dev->vdev, VIDIOC_S_JPEGCOMP); gspca_dev_probe2()
2113 ret = video_register_device(&gspca_dev->vdev, gspca_dev_probe2()
2121 usb_set_intfdata(intf, gspca_dev); gspca_dev_probe2()
2122 PDEBUG(D_PROBE, "%s created", video_device_node_name(&gspca_dev->vdev)); gspca_dev_probe2()
2124 gspca_input_create_urb(gspca_dev); gspca_dev_probe2()
2129 if (gspca_dev->input_dev) gspca_dev_probe2()
2130 input_unregister_device(gspca_dev->input_dev); gspca_dev_probe2()
2132 v4l2_ctrl_handler_free(gspca_dev->vdev.ctrl_handler); gspca_dev_probe2()
2133 kfree(gspca_dev->usb_buf); gspca_dev_probe2()
2134 kfree(gspca_dev); gspca_dev_probe2()
2172 struct gspca_dev *gspca_dev = usb_get_intfdata(intf); gspca_disconnect() local
2178 video_device_node_name(&gspca_dev->vdev)); gspca_disconnect()
2180 mutex_lock(&gspca_dev->usb_lock); gspca_disconnect()
2182 gspca_dev->present = 0; gspca_disconnect()
2183 destroy_urbs(gspca_dev); gspca_disconnect()
2186 gspca_input_destroy_urb(gspca_dev); gspca_disconnect()
2187 input_dev = gspca_dev->input_dev; gspca_disconnect()
2189 gspca_dev->input_dev = NULL; gspca_disconnect()
2194 if (gspca_dev->sd_desc->stop0 && gspca_dev->streaming) gspca_disconnect()
2195 gspca_dev->sd_desc->stop0(gspca_dev); gspca_disconnect()
2196 gspca_dev->streaming = 0; gspca_disconnect()
2197 gspca_dev->dev = NULL; gspca_disconnect()
2198 wake_up_interruptible(&gspca_dev->wq); gspca_disconnect()
2200 v4l2_device_disconnect(&gspca_dev->v4l2_dev); gspca_disconnect()
2201 video_unregister_device(&gspca_dev->vdev); gspca_disconnect()
2203 mutex_unlock(&gspca_dev->usb_lock); gspca_disconnect()
2206 v4l2_device_put(&gspca_dev->v4l2_dev); gspca_disconnect()
2213 struct gspca_dev *gspca_dev = usb_get_intfdata(intf); gspca_suspend() local
2215 gspca_input_destroy_urb(gspca_dev); gspca_suspend()
2217 if (!gspca_dev->streaming) gspca_suspend()
2220 mutex_lock(&gspca_dev->usb_lock); gspca_suspend()
2221 gspca_dev->frozen = 1; /* avoid urb error messages */ gspca_suspend()
2222 gspca_dev->usb_err = 0; gspca_suspend()
2223 if (gspca_dev->sd_desc->stopN) gspca_suspend()
2224 gspca_dev->sd_desc->stopN(gspca_dev); gspca_suspend()
2225 destroy_urbs(gspca_dev); gspca_suspend()
2226 gspca_set_alt0(gspca_dev); gspca_suspend()
2227 if (gspca_dev->sd_desc->stop0) gspca_suspend()
2228 gspca_dev->sd_desc->stop0(gspca_dev); gspca_suspend()
2229 mutex_unlock(&gspca_dev->usb_lock); gspca_suspend()
2237 struct gspca_dev *gspca_dev = usb_get_intfdata(intf); gspca_resume() local
2240 mutex_lock(&gspca_dev->usb_lock); gspca_resume()
2241 gspca_dev->frozen = 0; gspca_resume()
2242 gspca_dev->usb_err = 0; gspca_resume()
2243 gspca_dev->sd_desc->init(gspca_dev); gspca_resume()
2249 streaming = gspca_dev->streaming; gspca_resume()
2250 gspca_dev->streaming = 0; gspca_resume()
2252 ret = gspca_init_transfer(gspca_dev); gspca_resume()
2254 gspca_input_create_urb(gspca_dev); gspca_resume()
2255 mutex_unlock(&gspca_dev->usb_lock); gspca_resume()
H A Dstv0680.c42 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
49 static int stv_sndctrl(struct gspca_dev *gspca_dev, int set, u8 req, u16 val, stv_sndctrl() argument
59 pipe = usb_rcvctrlpipe(gspca_dev->dev, 0); stv_sndctrl()
63 pipe = usb_sndctrlpipe(gspca_dev->dev, 0); stv_sndctrl()
67 pipe = usb_rcvctrlpipe(gspca_dev->dev, 0); stv_sndctrl()
71 pipe = usb_sndctrlpipe(gspca_dev->dev, 0); stv_sndctrl()
75 ret = usb_control_msg(gspca_dev->dev, pipe, stv_sndctrl()
77 val, 0, gspca_dev->usb_buf, size, 500); stv_sndctrl()
86 static int stv0680_handle_error(struct gspca_dev *gspca_dev, int ret) stv0680_handle_error() argument
88 stv_sndctrl(gspca_dev, 0, 0x80, 0, 0x02); /* Get Last Error */ stv0680_handle_error()
90 gspca_dev->usb_buf[0], gspca_dev->usb_buf[1]); stv0680_handle_error()
94 static int stv0680_get_video_mode(struct gspca_dev *gspca_dev) stv0680_get_video_mode() argument
97 memset(gspca_dev->usb_buf, 0, 8); stv0680_get_video_mode()
98 gspca_dev->usb_buf[0] = 0x0f; stv0680_get_video_mode()
100 if (stv_sndctrl(gspca_dev, 0, 0x87, 0, 0x08) != 0x08) { stv0680_get_video_mode()
102 return stv0680_handle_error(gspca_dev, -EIO); stv0680_get_video_mode()
105 return gspca_dev->usb_buf[0]; /* 01 = VGA, 03 = QVGA, 00 = CIF */ stv0680_get_video_mode()
108 static int stv0680_set_video_mode(struct gspca_dev *gspca_dev, u8 mode) stv0680_set_video_mode() argument
110 struct sd *sd = (struct sd *) gspca_dev; stv0680_set_video_mode()
115 memset(gspca_dev->usb_buf, 0, 8); stv0680_set_video_mode()
116 gspca_dev->usb_buf[0] = mode; stv0680_set_video_mode()
118 if (stv_sndctrl(gspca_dev, 3, 0x07, 0x0100, 0x08) != 0x08) { stv0680_set_video_mode()
120 return stv0680_handle_error(gspca_dev, -EIO); stv0680_set_video_mode()
124 if (stv0680_get_video_mode(gspca_dev) != mode) { stv0680_set_video_mode()
135 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
139 struct sd *sd = (struct sd *) gspca_dev; sd_config()
140 struct cam *cam = &gspca_dev->cam; sd_config()
147 if (stv_sndctrl(gspca_dev, 0, 0x88, 0x5678, 0x02) != 0x02 || sd_config()
148 gspca_dev->usb_buf[0] != 0x56 || gspca_dev->usb_buf[1] != 0x78) { sd_config()
150 return stv0680_handle_error(gspca_dev, -ENODEV); sd_config()
154 if (stv_sndctrl(gspca_dev, 2, 0x06, 0x0200, 0x09) != 0x09) sd_config()
155 return stv0680_handle_error(gspca_dev, -ENODEV); sd_config()
157 if (stv_sndctrl(gspca_dev, 2, 0x06, 0x0200, 0x22) != 0x22 || sd_config()
158 gspca_dev->usb_buf[7] != 0xa0 || gspca_dev->usb_buf[8] != 0x23) { sd_config()
160 return stv0680_handle_error(gspca_dev, -ENODEV); sd_config()
162 if (stv_sndctrl(gspca_dev, 0, 0x8a, 0, 0x02) != 0x02) sd_config()
163 return stv0680_handle_error(gspca_dev, -ENODEV); sd_config()
164 if (stv_sndctrl(gspca_dev, 0, 0x8b, 0, 0x24) != 0x24) sd_config()
165 return stv0680_handle_error(gspca_dev, -ENODEV); sd_config()
166 if (stv_sndctrl(gspca_dev, 0, 0x85, 0, 0x10) != 0x10) sd_config()
167 return stv0680_handle_error(gspca_dev, -ENODEV); sd_config()
169 if (!(gspca_dev->usb_buf[7] & 0x09)) { sd_config()
173 if (gspca_dev->usb_buf[7] & 0x01) sd_config()
175 if (gspca_dev->usb_buf[7] & 0x02) sd_config()
177 if (gspca_dev->usb_buf[7] & 0x04) sd_config()
179 if (gspca_dev->usb_buf[7] & 0x08) sd_config()
182 if (gspca_dev->usb_buf[7] & 0x01) sd_config()
189 gspca_dev->usb_buf[0], gspca_dev->usb_buf[1]); sd_config()
191 gspca_dev->usb_buf[2], gspca_dev->usb_buf[3]); sd_config()
193 (gspca_dev->usb_buf[4]*16) + (gspca_dev->usb_buf[5]>>4)); sd_config()
196 ret = stv0680_get_video_mode(gspca_dev); sd_config()
201 ret = stv0680_set_video_mode(gspca_dev, sd->video_mode); sd_config()
206 if (stv_sndctrl(gspca_dev, 0, 0x8f, 0, 0x10) != 0x10) sd_config()
207 return stv0680_handle_error(gspca_dev, -EIO); sd_config()
211 cam->bulk_size = (gspca_dev->usb_buf[0] << 24) | sd_config()
212 (gspca_dev->usb_buf[1] << 16) | sd_config()
213 (gspca_dev->usb_buf[2] << 8) | sd_config()
214 (gspca_dev->usb_buf[3]); sd_config()
215 sd->mode.width = (gspca_dev->usb_buf[4] << 8) | sd_config()
216 (gspca_dev->usb_buf[5]); /* 322, 356, 644 */ sd_config()
217 sd->mode.height = (gspca_dev->usb_buf[6] << 8) | sd_config()
218 (gspca_dev->usb_buf[7]); /* 242, 292, 484 */ sd_config()
225 /* origGain = gspca_dev->usb_buf[12]; */ sd_config()
231 ret = stv0680_set_video_mode(gspca_dev, sd->orig_mode); sd_config()
235 if (stv_sndctrl(gspca_dev, 2, 0x06, 0x0100, 0x12) != 0x12 || sd_config()
236 gspca_dev->usb_buf[8] != 0x53 || gspca_dev->usb_buf[9] != 0x05) { sd_config()
238 return stv0680_handle_error(gspca_dev, -EIO); sd_config()
245 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
251 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
254 struct sd *sd = (struct sd *) gspca_dev; sd_start()
256 ret = stv0680_set_video_mode(gspca_dev, sd->video_mode); sd_start()
260 if (stv_sndctrl(gspca_dev, 0, 0x85, 0, 0x10) != 0x10) sd_start()
261 return stv0680_handle_error(gspca_dev, -EIO); sd_start()
267 if (stv_sndctrl(gspca_dev, 1, 0x09, sd->video_mode << 8, 0x0) != 0x0) sd_start()
268 return stv0680_handle_error(gspca_dev, -EIO); sd_start()
273 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
276 if (stv_sndctrl(gspca_dev, 1, 0x04, 0x0000, 0x0) != 0x0) sd_stopN()
277 stv0680_handle_error(gspca_dev, -EIO); sd_stopN()
280 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
282 struct sd *sd = (struct sd *) gspca_dev; sd_stop0()
284 if (!sd->gspca_dev.present) sd_stop0()
287 stv0680_set_video_mode(gspca_dev, sd->orig_mode); sd_stop0()
290 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
294 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
301 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
308 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
311 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
H A Dstk1135.c38 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
59 static u8 reg_r(struct gspca_dev *gspca_dev, u16 index) reg_r() argument
61 struct usb_device *dev = gspca_dev->dev; reg_r()
64 if (gspca_dev->usb_err < 0) reg_r()
71 gspca_dev->usb_buf, 1, reg_r()
74 PDEBUG(D_USBI, "reg_r 0x%x=0x%02x", index, gspca_dev->usb_buf[0]); reg_r()
77 gspca_dev->usb_err = ret; reg_r()
81 return gspca_dev->usb_buf[0]; reg_r()
85 static void reg_w(struct gspca_dev *gspca_dev, u16 index, u8 val) reg_w() argument
88 struct usb_device *dev = gspca_dev->dev; reg_w()
90 if (gspca_dev->usb_err < 0) reg_w()
103 gspca_dev->usb_err = ret; reg_w()
107 static void reg_w_mask(struct gspca_dev *gspca_dev, u16 index, u8 val, u8 mask) reg_w_mask() argument
109 val = (reg_r(gspca_dev, index) & ~mask) | (val & mask); reg_w_mask()
110 reg_w(gspca_dev, index, val); reg_w_mask()
114 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
117 gspca_dev->cam.cam_mode = stk1135_modes; sd_config()
118 gspca_dev->cam.nmodes = ARRAY_SIZE(stk1135_modes); sd_config()
122 static int stk1135_serial_wait_ready(struct gspca_dev *gspca_dev) stk1135_serial_wait_ready() argument
128 val = reg_r(gspca_dev, STK1135_REG_SICTL + 1); stk1135_serial_wait_ready()
139 static u8 sensor_read_8(struct gspca_dev *gspca_dev, u8 addr) sensor_read_8() argument
141 reg_w(gspca_dev, STK1135_REG_SBUSR, addr); sensor_read_8()
143 reg_w(gspca_dev, STK1135_REG_SICTL, 0x20); sensor_read_8()
145 if (stk1135_serial_wait_ready(gspca_dev)) { sensor_read_8()
150 return reg_r(gspca_dev, STK1135_REG_SBUSR + 1); sensor_read_8()
153 static u16 sensor_read_16(struct gspca_dev *gspca_dev, u8 addr) sensor_read_16() argument
155 return (sensor_read_8(gspca_dev, addr) << 8) | sensor_read_16()
156 sensor_read_8(gspca_dev, 0xf1); sensor_read_16()
159 static void sensor_write_8(struct gspca_dev *gspca_dev, u8 addr, u8 data) sensor_write_8() argument
162 reg_w(gspca_dev, STK1135_REG_SBUSW, addr); sensor_write_8()
163 reg_w(gspca_dev, STK1135_REG_SBUSW + 1, data); sensor_write_8()
165 reg_w(gspca_dev, STK1135_REG_SICTL, 0x01); sensor_write_8()
167 if (stk1135_serial_wait_ready(gspca_dev)) { sensor_write_8()
173 static void sensor_write_16(struct gspca_dev *gspca_dev, u8 addr, u16 data) sensor_write_16() argument
175 sensor_write_8(gspca_dev, addr, data >> 8); sensor_write_16()
176 sensor_write_8(gspca_dev, 0xf1, data & 0xff); sensor_write_16()
179 static void sensor_set_page(struct gspca_dev *gspca_dev, u8 page) sensor_set_page() argument
181 struct sd *sd = (struct sd *) gspca_dev; sensor_set_page()
184 sensor_write_16(gspca_dev, 0xf0, page); sensor_set_page()
189 static u16 sensor_read(struct gspca_dev *gspca_dev, u16 reg) sensor_read() argument
191 sensor_set_page(gspca_dev, reg >> 8); sensor_read()
192 return sensor_read_16(gspca_dev, reg & 0xff); sensor_read()
195 static void sensor_write(struct gspca_dev *gspca_dev, u16 reg, u16 val) sensor_write() argument
197 sensor_set_page(gspca_dev, reg >> 8); sensor_write()
198 sensor_write_16(gspca_dev, reg & 0xff, val); sensor_write()
201 static void sensor_write_mask(struct gspca_dev *gspca_dev, sensor_write_mask() argument
204 val = (sensor_read(gspca_dev, reg) & ~mask) | (val & mask); sensor_write_mask()
205 sensor_write(gspca_dev, reg, val); sensor_write_mask()
214 static void stk1135_configure_mt9m112(struct gspca_dev *gspca_dev) stk1135_configure_mt9m112() argument
316 sensor_write(gspca_dev, cfg[i].reg, cfg[i].val); stk1135_configure_mt9m112()
319 width = gspca_dev->pixfmt.width; stk1135_configure_mt9m112()
320 height = gspca_dev->pixfmt.height; stk1135_configure_mt9m112()
322 sensor_write(gspca_dev, 0x1a7, width); stk1135_configure_mt9m112()
323 sensor_write(gspca_dev, 0x1aa, height); stk1135_configure_mt9m112()
325 sensor_write(gspca_dev, 0x0c8, 0x0000); stk1135_configure_mt9m112()
327 sensor_write(gspca_dev, 0x2c8, 0x0000); stk1135_configure_mt9m112()
329 sensor_write(gspca_dev, 0x1a1, width); stk1135_configure_mt9m112()
330 sensor_write(gspca_dev, 0x1a4, height); stk1135_configure_mt9m112()
332 sensor_write(gspca_dev, 0x0c8, 0x0008); stk1135_configure_mt9m112()
334 sensor_write(gspca_dev, 0x2c8, 0x040b); stk1135_configure_mt9m112()
338 static void stk1135_configure_clock(struct gspca_dev *gspca_dev) stk1135_configure_clock() argument
341 reg_w(gspca_dev, STK1135_REG_TMGEN, 0x12); stk1135_configure_clock()
344 reg_w(gspca_dev, STK1135_REG_TCP1 + 0, 0x41); stk1135_configure_clock()
345 reg_w(gspca_dev, STK1135_REG_TCP1 + 1, 0x00); stk1135_configure_clock()
346 reg_w(gspca_dev, STK1135_REG_TCP1 + 2, 0x00); stk1135_configure_clock()
347 reg_w(gspca_dev, STK1135_REG_TCP1 + 3, 0x00); stk1135_configure_clock()
350 reg_w(gspca_dev, STK1135_REG_SENSO + 0, 0x10); stk1135_configure_clock()
352 reg_w(gspca_dev, STK1135_REG_SENSO + 1, 0x00); stk1135_configure_clock()
354 reg_w(gspca_dev, STK1135_REG_SENSO + 3, 0x07); stk1135_configure_clock()
356 reg_w(gspca_dev, STK1135_REG_PLLFD, 0x06); stk1135_configure_clock()
358 reg_w(gspca_dev, STK1135_REG_TMGEN, 0x80); stk1135_configure_clock()
360 reg_w(gspca_dev, STK1135_REG_SENSO + 2, 0x04); stk1135_configure_clock()
363 reg_w(gspca_dev, STK1135_REG_SICTL + 2, 0x1f); stk1135_configure_clock()
369 static void stk1135_camera_disable(struct gspca_dev *gspca_dev) stk1135_camera_disable() argument
372 reg_w(gspca_dev, STK1135_REG_CIEPO + 2, 0x00); stk1135_camera_disable()
373 reg_w(gspca_dev, STK1135_REG_CIEPO + 3, 0x00); stk1135_camera_disable()
375 reg_w_mask(gspca_dev, STK1135_REG_SCTRL, 0x00, 0x80); stk1135_camera_disable()
378 sensor_write_mask(gspca_dev, 0x00d, 0x0004, 0x000c); stk1135_camera_disable()
381 reg_w_mask(gspca_dev, STK1135_REG_SENSO + 2, 0x00, 0x01); stk1135_camera_disable()
383 reg_w(gspca_dev, STK1135_REG_TMGEN, 0x00); stk1135_camera_disable()
385 reg_w(gspca_dev, STK1135_REG_SENSO + 1, 0x20); stk1135_camera_disable()
387 reg_w(gspca_dev, STK1135_REG_SENSO, 0x00); stk1135_camera_disable()
390 reg_w(gspca_dev, STK1135_REG_GCTRL, 0x49); stk1135_camera_disable()
394 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
398 struct sd *sd = (struct sd *) gspca_dev; sd_init()
401 reg_w(gspca_dev, STK1135_REG_GCTRL + 2, 0x78); sd_init()
403 reg_w(gspca_dev, STK1135_REG_GCTRL, (1 << 5)); sd_init()
405 reg_w(gspca_dev, STK1135_REG_GCTRL + 3, 0x80); sd_init()
407 reg_w(gspca_dev, STK1135_REG_ICTRL + 1, 0x00); sd_init()
408 reg_w(gspca_dev, STK1135_REG_ICTRL + 3, 0x03); sd_init()
410 reg_w(gspca_dev, STK1135_REG_RMCTL + 1, 0x00); sd_init()
411 reg_w(gspca_dev, STK1135_REG_RMCTL + 3, 0x02); sd_init()
414 reg_w(gspca_dev, STK1135_REG_SICTL, 0x80); sd_init()
415 reg_w(gspca_dev, STK1135_REG_SICTL, 0x00); sd_init()
417 reg_w(gspca_dev, STK1135_REG_SICTL + 3, 0xba); sd_init()
419 reg_w(gspca_dev, STK1135_REG_ASIC + 3, 0x00); sd_init()
421 stk1135_configure_clock(gspca_dev); sd_init()
425 sensor_id = sensor_read(gspca_dev, 0x000); sd_init()
436 stk1135_camera_disable(gspca_dev); sd_init()
438 return gspca_dev->usb_err; sd_init()
442 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
444 struct sd *sd = (struct sd *) gspca_dev; sd_start()
448 reg_w(gspca_dev, STK1135_REG_GCTRL, (1 << 5)); sd_start()
450 stk1135_configure_clock(gspca_dev); sd_start()
453 reg_w(gspca_dev, STK1135_REG_CISPO + 0, 0x00); sd_start()
454 reg_w(gspca_dev, STK1135_REG_CISPO + 1, 0x00); sd_start()
455 reg_w(gspca_dev, STK1135_REG_CISPO + 2, 0x00); sd_start()
456 reg_w(gspca_dev, STK1135_REG_CISPO + 3, 0x00); sd_start()
459 width = gspca_dev->pixfmt.width; sd_start()
460 height = gspca_dev->pixfmt.height; sd_start()
461 reg_w(gspca_dev, STK1135_REG_CIEPO + 0, width & 0xff); sd_start()
462 reg_w(gspca_dev, STK1135_REG_CIEPO + 1, width >> 8); sd_start()
463 reg_w(gspca_dev, STK1135_REG_CIEPO + 2, height & 0xff); sd_start()
464 reg_w(gspca_dev, STK1135_REG_CIEPO + 3, height >> 8); sd_start()
467 reg_w(gspca_dev, STK1135_REG_SCTRL, 0x20); sd_start()
469 stk1135_configure_mt9m112(gspca_dev); sd_start()
472 reg_w_mask(gspca_dev, STK1135_REG_SCTRL, 0x80, 0x80); sd_start()
474 if (gspca_dev->usb_err >= 0) sd_start()
476 gspca_dev->alt); sd_start()
480 return gspca_dev->usb_err; sd_start()
483 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
485 struct usb_device *dev = gspca_dev->dev; sd_stopN()
487 usb_set_interface(dev, gspca_dev->iface, 0); sd_stopN()
489 stk1135_camera_disable(gspca_dev); sd_stopN()
494 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
498 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
525 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
538 gspca_frame_add(gspca_dev, LAST_PACKET, data, 0); sd_pkt_scan()
541 gspca_frame_add(gspca_dev, pkt_type, data + skip, len - skip); sd_pkt_scan()
544 static void sethflip(struct gspca_dev *gspca_dev, s32 val) sethflip() argument
546 struct sd *sd = (struct sd *) gspca_dev; sethflip()
550 sensor_write_mask(gspca_dev, 0x020, val ? 0x0002 : 0x0000 , 0x0002); sethflip()
553 static void setvflip(struct gspca_dev *gspca_dev, s32 val) setvflip() argument
555 struct sd *sd = (struct sd *) gspca_dev; setvflip()
559 sensor_write_mask(gspca_dev, 0x020, val ? 0x0001 : 0x0000 , 0x0001); setvflip()
562 static void stk1135_dq_callback(struct gspca_dev *gspca_dev) stk1135_dq_callback() argument
564 struct sd *sd = (struct sd *) gspca_dev; stk1135_dq_callback()
568 sethflip(gspca_dev, v4l2_ctrl_g_ctrl(sd->hflip)); stk1135_dq_callback()
569 setvflip(gspca_dev, v4l2_ctrl_g_ctrl(sd->vflip)); stk1135_dq_callback()
575 struct gspca_dev *gspca_dev = sd_s_ctrl() local
576 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
578 gspca_dev->usb_err = 0; sd_s_ctrl()
580 if (!gspca_dev->streaming) sd_s_ctrl()
585 sethflip(gspca_dev, ctrl->val); sd_s_ctrl()
588 setvflip(gspca_dev, ctrl->val); sd_s_ctrl()
592 return gspca_dev->usb_err; sd_s_ctrl()
599 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
601 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
602 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
604 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
618 static void stk1135_try_fmt(struct gspca_dev *gspca_dev, struct v4l2_format *fmt) stk1135_try_fmt() argument
630 static int stk1135_enum_framesizes(struct gspca_dev *gspca_dev, stk1135_enum_framesizes() argument
H A Dkonica.c50 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
90 static void reg_w(struct gspca_dev *gspca_dev, u16 value, u16 index) reg_w() argument
92 struct usb_device *dev = gspca_dev->dev; reg_w()
95 if (gspca_dev->usb_err < 0) reg_w()
108 gspca_dev->usb_err = ret; reg_w()
112 static void reg_r(struct gspca_dev *gspca_dev, u16 value, u16 index) reg_r() argument
114 struct usb_device *dev = gspca_dev->dev; reg_r()
117 if (gspca_dev->usb_err < 0) reg_r()
124 gspca_dev->usb_buf, reg_r()
129 gspca_dev->usb_err = ret; reg_r()
133 static void konica_stream_on(struct gspca_dev *gspca_dev) konica_stream_on() argument
135 reg_w(gspca_dev, 1, 0x0b); konica_stream_on()
138 static void konica_stream_off(struct gspca_dev *gspca_dev) konica_stream_off() argument
140 reg_w(gspca_dev, 0, 0x0b); konica_stream_off()
144 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
147 gspca_dev->cam.cam_mode = vga_mode; sd_config()
148 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); sd_config()
149 gspca_dev->cam.no_urb_create = 1; sd_config()
155 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
166 reg_r(gspca_dev, 0, 0x10); sd_init()
167 if (gspca_dev->usb_buf[0] == 3) sd_init()
171 reg_w(gspca_dev, 0, 0x0d); sd_init()
173 return gspca_dev->usb_err; sd_init()
176 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
178 struct sd *sd = (struct sd *) gspca_dev; sd_start()
184 intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface); sd_start()
185 alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt); sd_start()
193 n = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_start()
194 reg_w(gspca_dev, n, 0x08); sd_start()
196 konica_stream_on(gspca_dev); sd_start()
198 if (gspca_dev->usb_err) sd_start()
199 return gspca_dev->usb_err; sd_start()
215 gspca_dev->urb[n] = urb; sd_start()
216 urb->transfer_buffer = usb_alloc_coherent(gspca_dev->dev, sd_start()
225 urb->dev = gspca_dev->dev; sd_start()
226 urb->context = gspca_dev; sd_start()
228 urb->pipe = usb_rcvisocpipe(gspca_dev->dev, sd_start()
244 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
246 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
248 konica_stream_off(gspca_dev); sd_stopN()
253 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_stopN()
254 input_sync(gspca_dev->input_dev); sd_stopN()
263 struct gspca_dev *gspca_dev = (struct gspca_dev *) urb->context; sd_isoc_irq() local
264 struct sd *sd = (struct sd *) gspca_dev; sd_isoc_irq()
270 if (!gspca_dev->streaming) sd_isoc_irq()
277 if (gspca_dev->frozen) sd_isoc_irq()
315 gspca_dev->last_packet_type = DISCARD_PACKET; sd_isoc_irq()
322 gspca_dev->last_packet_type = DISCARD_PACKET; sd_isoc_irq()
342 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_isoc_irq()
343 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); sd_isoc_irq()
348 input_report_key(gspca_dev->input_dev, sd_isoc_irq()
351 input_sync(gspca_dev->input_dev); sd_isoc_irq()
358 gspca_frame_add(gspca_dev, INTER_PACKET, data, sd_isoc_irq()
375 struct gspca_dev *gspca_dev = sd_s_ctrl() local
376 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
378 gspca_dev->usb_err = 0; sd_s_ctrl()
380 if (!gspca_dev->streaming) sd_s_ctrl()
385 konica_stream_off(gspca_dev); sd_s_ctrl()
386 reg_w(gspca_dev, ctrl->val, BRIGHTNESS_REG); sd_s_ctrl()
387 konica_stream_on(gspca_dev); sd_s_ctrl()
390 konica_stream_off(gspca_dev); sd_s_ctrl()
391 reg_w(gspca_dev, ctrl->val, CONTRAST_REG); sd_s_ctrl()
392 konica_stream_on(gspca_dev); sd_s_ctrl()
395 konica_stream_off(gspca_dev); sd_s_ctrl()
396 reg_w(gspca_dev, ctrl->val, SATURATION_REG); sd_s_ctrl()
397 konica_stream_on(gspca_dev); sd_s_ctrl()
400 konica_stream_off(gspca_dev); sd_s_ctrl()
401 reg_w(gspca_dev, ctrl->val, WHITEBAL_REG); sd_s_ctrl()
402 konica_stream_on(gspca_dev); sd_s_ctrl()
405 konica_stream_off(gspca_dev); sd_s_ctrl()
406 reg_w(gspca_dev, ctrl->val, SHARPNESS_REG); sd_s_ctrl()
407 konica_stream_on(gspca_dev); sd_s_ctrl()
410 return gspca_dev->usb_err; sd_s_ctrl()
417 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
419 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
421 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dautogain_functions.c28 struct gspca_dev *gspca_dev, gspca_expo_autogain()
38 if (v4l2_ctrl_g_ctrl(gspca_dev->autogain) == 0) gspca_expo_autogain()
41 orig_gain = gain = v4l2_ctrl_g_ctrl(gspca_dev->gain); gspca_expo_autogain()
42 orig_exposure = exposure = v4l2_ctrl_g_ctrl(gspca_dev->exposure); gspca_expo_autogain()
57 else if (gain > gspca_dev->gain->default_value) gspca_expo_autogain()
59 else if (exposure > gspca_dev->exposure->minimum) gspca_expo_autogain()
61 else if (gain > gspca_dev->gain->minimum) gspca_expo_autogain()
66 if (gain < gspca_dev->gain->default_value) gspca_expo_autogain()
72 else if (exposure < gspca_dev->exposure->maximum) gspca_expo_autogain()
74 else if (gain < gspca_dev->gain->maximum) gspca_expo_autogain()
82 v4l2_ctrl_s_ctrl(gspca_dev->gain, gain); gspca_expo_autogain()
86 v4l2_ctrl_s_ctrl(gspca_dev->exposure, exposure); gspca_expo_autogain()
110 struct gspca_dev *gspca_dev, gspca_coarse_grained_expo_autogain()
118 if (v4l2_ctrl_g_ctrl(gspca_dev->autogain) == 0) gspca_coarse_grained_expo_autogain()
121 orig_gain = gain = v4l2_ctrl_g_ctrl(gspca_dev->gain); gspca_coarse_grained_expo_autogain()
122 orig_exposure = exposure = v4l2_ctrl_g_ctrl(gspca_dev->exposure); gspca_coarse_grained_expo_autogain()
124 gain_low = (s32)(gspca_dev->gain->maximum - gspca_dev->gain->minimum) / gspca_coarse_grained_expo_autogain()
125 5 * 2 + gspca_dev->gain->minimum; gspca_coarse_grained_expo_autogain()
126 gain_high = (s32)(gspca_dev->gain->maximum - gspca_dev->gain->minimum) / gspca_coarse_grained_expo_autogain()
127 5 * 4 + gspca_dev->gain->minimum; gspca_coarse_grained_expo_autogain()
137 exposure < gspca_dev->exposure->maximum) { gspca_coarse_grained_expo_autogain()
139 gspca_dev->exp_too_low_cnt++; gspca_coarse_grained_expo_autogain()
140 gspca_dev->exp_too_high_cnt = 0; gspca_coarse_grained_expo_autogain()
142 exposure > gspca_dev->exposure->minimum) { gspca_coarse_grained_expo_autogain()
144 gspca_dev->exp_too_high_cnt++; gspca_coarse_grained_expo_autogain()
145 gspca_dev->exp_too_low_cnt = 0; gspca_coarse_grained_expo_autogain()
148 if (gain > gspca_dev->gain->maximum) gspca_coarse_grained_expo_autogain()
149 gain = gspca_dev->gain->maximum; gspca_coarse_grained_expo_autogain()
150 else if (gain < gspca_dev->gain->minimum) gspca_coarse_grained_expo_autogain()
151 gain = gspca_dev->gain->minimum; gspca_coarse_grained_expo_autogain()
152 gspca_dev->exp_too_high_cnt = 0; gspca_coarse_grained_expo_autogain()
153 gspca_dev->exp_too_low_cnt = 0; gspca_coarse_grained_expo_autogain()
156 if (gspca_dev->exp_too_high_cnt > 3) { gspca_coarse_grained_expo_autogain()
158 gspca_dev->exp_too_high_cnt = 0; gspca_coarse_grained_expo_autogain()
159 } else if (gspca_dev->exp_too_low_cnt > 3) { gspca_coarse_grained_expo_autogain()
161 gspca_dev->exp_too_low_cnt = 0; gspca_coarse_grained_expo_autogain()
165 v4l2_ctrl_s_ctrl(gspca_dev->gain, gain); gspca_coarse_grained_expo_autogain()
169 v4l2_ctrl_s_ctrl(gspca_dev->exposure, exposure); gspca_coarse_grained_expo_autogain()
27 gspca_expo_autogain( struct gspca_dev *gspca_dev, int avg_lum, int desired_avg_lum, int deadzone, int gain_knee, int exposure_knee) gspca_expo_autogain() argument
109 gspca_coarse_grained_expo_autogain( struct gspca_dev *gspca_dev, int avg_lum, int desired_avg_lum, int deadzone) gspca_coarse_grained_expo_autogain() argument
H A Dov534.c61 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
94 static int sd_start(struct gspca_dev *gspca_dev);
95 static void sd_stopN(struct gspca_dev *gspca_dev);
610 static void ov534_reg_write(struct gspca_dev *gspca_dev, u16 reg, u8 val) ov534_reg_write() argument
612 struct usb_device *udev = gspca_dev->dev; ov534_reg_write()
615 if (gspca_dev->usb_err < 0) ov534_reg_write()
619 gspca_dev->usb_buf[0] = val; ov534_reg_write()
624 0x00, reg, gspca_dev->usb_buf, 1, CTRL_TIMEOUT); ov534_reg_write()
627 gspca_dev->usb_err = ret; ov534_reg_write()
631 static u8 ov534_reg_read(struct gspca_dev *gspca_dev, u16 reg) ov534_reg_read() argument
633 struct usb_device *udev = gspca_dev->dev; ov534_reg_read()
636 if (gspca_dev->usb_err < 0) ov534_reg_read()
642 0x00, reg, gspca_dev->usb_buf, 1, CTRL_TIMEOUT); ov534_reg_read()
643 PDEBUG(D_USBI, "GET 01 0000 %04x %02x", reg, gspca_dev->usb_buf[0]); ov534_reg_read()
646 gspca_dev->usb_err = ret; ov534_reg_read()
648 return gspca_dev->usb_buf[0]; ov534_reg_read()
653 static void ov534_set_led(struct gspca_dev *gspca_dev, int status) ov534_set_led() argument
659 data = ov534_reg_read(gspca_dev, 0x21); ov534_set_led()
661 ov534_reg_write(gspca_dev, 0x21, data); ov534_set_led()
663 data = ov534_reg_read(gspca_dev, 0x23); ov534_set_led()
669 ov534_reg_write(gspca_dev, 0x23, data); ov534_set_led()
672 data = ov534_reg_read(gspca_dev, 0x21); ov534_set_led()
674 ov534_reg_write(gspca_dev, 0x21, data); ov534_set_led()
678 static int sccb_check_status(struct gspca_dev *gspca_dev) sccb_check_status() argument
685 data = ov534_reg_read(gspca_dev, OV534_REG_STATUS); sccb_check_status()
702 static void sccb_reg_write(struct gspca_dev *gspca_dev, u8 reg, u8 val) sccb_reg_write() argument
705 ov534_reg_write(gspca_dev, OV534_REG_SUBADDR, reg); sccb_reg_write()
706 ov534_reg_write(gspca_dev, OV534_REG_WRITE, val); sccb_reg_write()
707 ov534_reg_write(gspca_dev, OV534_REG_OPERATION, OV534_OP_WRITE_3); sccb_reg_write()
709 if (!sccb_check_status(gspca_dev)) { sccb_reg_write()
711 gspca_dev->usb_err = -EIO; sccb_reg_write()
715 static u8 sccb_reg_read(struct gspca_dev *gspca_dev, u16 reg) sccb_reg_read() argument
717 ov534_reg_write(gspca_dev, OV534_REG_SUBADDR, reg); sccb_reg_read()
718 ov534_reg_write(gspca_dev, OV534_REG_OPERATION, OV534_OP_WRITE_2); sccb_reg_read()
719 if (!sccb_check_status(gspca_dev)) sccb_reg_read()
722 ov534_reg_write(gspca_dev, OV534_REG_OPERATION, OV534_OP_READ_2); sccb_reg_read()
723 if (!sccb_check_status(gspca_dev)) sccb_reg_read()
726 return ov534_reg_read(gspca_dev, OV534_REG_READ); sccb_reg_read()
730 static void reg_w_array(struct gspca_dev *gspca_dev, reg_w_array() argument
734 ov534_reg_write(gspca_dev, (*data)[0], (*data)[1]); reg_w_array()
740 static void sccb_w_array(struct gspca_dev *gspca_dev, sccb_w_array() argument
745 sccb_reg_write(gspca_dev, (*data)[0], (*data)[1]); sccb_w_array()
747 sccb_reg_read(gspca_dev, (*data)[1]); sccb_w_array()
748 sccb_reg_write(gspca_dev, 0xff, 0x00); sccb_w_array()
755 static void set_frame_rate(struct gspca_dev *gspca_dev) set_frame_rate() argument
757 struct sd *sd = (struct sd *) gspca_dev; set_frame_rate()
789 if (gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv == 0) { set_frame_rate()
802 sccb_reg_write(gspca_dev, 0x11, r->r11); set_frame_rate()
803 sccb_reg_write(gspca_dev, 0x0d, r->r0d); set_frame_rate()
804 ov534_reg_write(gspca_dev, 0xe5, r->re5); set_frame_rate()
809 static void sethue(struct gspca_dev *gspca_dev, s32 val) sethue() argument
811 struct sd *sd = (struct sd *) gspca_dev; sethue()
831 sccb_reg_write(gspca_dev, 0xab, sethue()
832 sccb_reg_read(gspca_dev, 0xab) | 0x2); sethue()
835 sccb_reg_write(gspca_dev, 0xab, sethue()
836 sccb_reg_read(gspca_dev, 0xab) & ~0x2); sethue()
839 sccb_reg_write(gspca_dev, 0xa9, (u8)huecos); sethue()
840 sccb_reg_write(gspca_dev, 0xaa, (u8)huesin); sethue()
844 static void setsaturation(struct gspca_dev *gspca_dev, s32 val) setsaturation() argument
846 struct sd *sd = (struct sd *) gspca_dev; setsaturation()
861 sccb_reg_write(gspca_dev, 0x4f + i, color_tb[val][i]); setsaturation()
863 sccb_reg_write(gspca_dev, 0xa7, val); /* U saturation */ setsaturation()
864 sccb_reg_write(gspca_dev, 0xa8, val); /* V saturation */ setsaturation()
868 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
870 struct sd *sd = (struct sd *) gspca_dev; setbrightness()
875 sccb_reg_write(gspca_dev, 0x55, val); /* bright */ setbrightness()
877 sccb_reg_write(gspca_dev, 0x9b, val); setbrightness()
881 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
883 struct sd *sd = (struct sd *) gspca_dev; setcontrast()
886 sccb_reg_write(gspca_dev, 0x56, val); /* contras */ setcontrast()
888 sccb_reg_write(gspca_dev, 0x9c, val); setcontrast()
891 static void setgain(struct gspca_dev *gspca_dev, s32 val) setgain() argument
911 sccb_reg_write(gspca_dev, 0x00, val); setgain()
914 static s32 getgain(struct gspca_dev *gspca_dev) getgain() argument
916 return sccb_reg_read(gspca_dev, 0x00); getgain()
919 static void setexposure(struct gspca_dev *gspca_dev, s32 val) setexposure() argument
921 struct sd *sd = (struct sd *) gspca_dev; setexposure()
926 sccb_reg_write(gspca_dev, 0x10, val); /* aech */ setexposure()
935 sccb_reg_write(gspca_dev, 0x08, val >> 7); setexposure()
936 sccb_reg_write(gspca_dev, 0x10, val << 1); setexposure()
940 static s32 getexposure(struct gspca_dev *gspca_dev) getexposure() argument
942 struct sd *sd = (struct sd *) gspca_dev; getexposure()
946 return sccb_reg_read(gspca_dev, 0x10); /* aech */ getexposure()
948 u8 hi = sccb_reg_read(gspca_dev, 0x08); getexposure()
949 u8 lo = sccb_reg_read(gspca_dev, 0x10); getexposure()
954 static void setagc(struct gspca_dev *gspca_dev, s32 val) setagc() argument
957 sccb_reg_write(gspca_dev, 0x13, setagc()
958 sccb_reg_read(gspca_dev, 0x13) | 0x04); setagc()
959 sccb_reg_write(gspca_dev, 0x64, setagc()
960 sccb_reg_read(gspca_dev, 0x64) | 0x03); setagc()
962 sccb_reg_write(gspca_dev, 0x13, setagc()
963 sccb_reg_read(gspca_dev, 0x13) & ~0x04); setagc()
964 sccb_reg_write(gspca_dev, 0x64, setagc()
965 sccb_reg_read(gspca_dev, 0x64) & ~0x03); setagc()
969 static void setawb(struct gspca_dev *gspca_dev, s32 val) setawb() argument
971 struct sd *sd = (struct sd *) gspca_dev; setawb()
974 sccb_reg_write(gspca_dev, 0x13, setawb()
975 sccb_reg_read(gspca_dev, 0x13) | 0x02); setawb()
977 sccb_reg_write(gspca_dev, 0x63, setawb()
978 sccb_reg_read(gspca_dev, 0x63) | 0xc0); setawb()
980 sccb_reg_write(gspca_dev, 0x13, setawb()
981 sccb_reg_read(gspca_dev, 0x13) & ~0x02); setawb()
983 sccb_reg_write(gspca_dev, 0x63, setawb()
984 sccb_reg_read(gspca_dev, 0x63) & ~0xc0); setawb()
988 static void setaec(struct gspca_dev *gspca_dev, s32 val) setaec() argument
990 struct sd *sd = (struct sd *) gspca_dev; setaec()
998 sccb_reg_write(gspca_dev, 0x13, setaec()
999 sccb_reg_read(gspca_dev, 0x13) | data); setaec()
1002 sccb_reg_write(gspca_dev, 0x13, setaec()
1003 sccb_reg_read(gspca_dev, 0x13) & ~data); setaec()
1008 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) setsharpness() argument
1010 sccb_reg_write(gspca_dev, 0x91, val); /* Auto de-noise threshold */ setsharpness()
1011 sccb_reg_write(gspca_dev, 0x8e, val); /* De-noise threshold */ setsharpness()
1014 static void sethvflip(struct gspca_dev *gspca_dev, s32 hflip, s32 vflip) sethvflip() argument
1016 struct sd *sd = (struct sd *) gspca_dev; sethvflip()
1020 val = sccb_reg_read(gspca_dev, 0x1e); /* mvfp */ sethvflip()
1026 sccb_reg_write(gspca_dev, 0x1e, val); sethvflip()
1028 val = sccb_reg_read(gspca_dev, 0x0c); sethvflip()
1034 sccb_reg_write(gspca_dev, 0x0c, val); sethvflip()
1038 static void setlightfreq(struct gspca_dev *gspca_dev, s32 val) setlightfreq() argument
1040 struct sd *sd = (struct sd *) gspca_dev; setlightfreq()
1044 sccb_reg_write(gspca_dev, 0x2a, 0x00); setlightfreq()
1048 sccb_reg_write(gspca_dev, 0x2b, val); setlightfreq()
1053 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
1056 struct sd *sd = (struct sd *) gspca_dev; sd_config()
1059 cam = &gspca_dev->cam; sd_config()
1072 struct gspca_dev *gspca_dev = &sd->gspca_dev; ov534_g_volatile_ctrl() local
1076 gspca_dev->usb_err = 0; ov534_g_volatile_ctrl()
1077 if (ctrl->val && sd->gain && gspca_dev->streaming) ov534_g_volatile_ctrl()
1078 sd->gain->val = getgain(gspca_dev); ov534_g_volatile_ctrl()
1079 return gspca_dev->usb_err; ov534_g_volatile_ctrl()
1082 gspca_dev->usb_err = 0; ov534_g_volatile_ctrl()
1084 gspca_dev->streaming) ov534_g_volatile_ctrl()
1085 sd->exposure->val = getexposure(gspca_dev); ov534_g_volatile_ctrl()
1086 return gspca_dev->usb_err; ov534_g_volatile_ctrl()
1094 struct gspca_dev *gspca_dev = &sd->gspca_dev; ov534_s_ctrl() local
1096 gspca_dev->usb_err = 0; ov534_s_ctrl()
1097 if (!gspca_dev->streaming) ov534_s_ctrl()
1102 sethue(gspca_dev, ctrl->val); ov534_s_ctrl()
1105 setsaturation(gspca_dev, ctrl->val); ov534_s_ctrl()
1108 setbrightness(gspca_dev, ctrl->val); ov534_s_ctrl()
1111 setcontrast(gspca_dev, ctrl->val); ov534_s_ctrl()
1115 setagc(gspca_dev, ctrl->val); ov534_s_ctrl()
1116 if (!gspca_dev->usb_err && !ctrl->val && sd->gain) ov534_s_ctrl()
1117 setgain(gspca_dev, sd->gain->val); ov534_s_ctrl()
1120 setawb(gspca_dev, ctrl->val); ov534_s_ctrl()
1124 setaec(gspca_dev, ctrl->val); ov534_s_ctrl()
1125 if (!gspca_dev->usb_err && ctrl->val == V4L2_EXPOSURE_MANUAL && ov534_s_ctrl()
1127 setexposure(gspca_dev, sd->exposure->val); ov534_s_ctrl()
1130 setsharpness(gspca_dev, ctrl->val); ov534_s_ctrl()
1133 sethvflip(gspca_dev, ctrl->val, sd->vflip->val); ov534_s_ctrl()
1136 sethvflip(gspca_dev, sd->hflip->val, ctrl->val); ov534_s_ctrl()
1139 setlightfreq(gspca_dev, ctrl->val); ov534_s_ctrl()
1142 return gspca_dev->usb_err; ov534_s_ctrl()
1150 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
1152 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
1196 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
1259 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
1261 struct sd *sd = (struct sd *) gspca_dev; sd_init()
1273 ov534_reg_write(gspca_dev, 0xe7, 0x3a); sd_init()
1274 ov534_reg_write(gspca_dev, 0xe0, 0x08); sd_init()
1278 ov534_reg_write(gspca_dev, OV534_REG_ADDRESS, 0x42); sd_init()
1281 sccb_reg_write(gspca_dev, 0x12, 0x80); sd_init()
1285 sccb_reg_read(gspca_dev, 0x0a); sd_init()
1286 sensor_id = sccb_reg_read(gspca_dev, 0x0a) << 8; sd_init()
1287 sccb_reg_read(gspca_dev, 0x0b); sd_init()
1288 sensor_id |= sccb_reg_read(gspca_dev, 0x0b); sd_init()
1293 gspca_dev->cam.cam_mode = ov767x_mode; sd_init()
1294 gspca_dev->cam.nmodes = ARRAY_SIZE(ov767x_mode); sd_init()
1297 gspca_dev->cam.bulk = 1; sd_init()
1298 gspca_dev->cam.bulk_size = 16384; sd_init()
1299 gspca_dev->cam.bulk_nurbs = 2; sd_init()
1300 gspca_dev->cam.mode_framerates = ov772x_framerates; sd_init()
1304 reg_w_array(gspca_dev, bridge_init[sd->sensor].val, sd_init()
1306 ov534_set_led(gspca_dev, 1); sd_init()
1307 sccb_w_array(gspca_dev, sensor_init[sd->sensor].val, sd_init()
1310 sd_stopN(gspca_dev); sd_init()
1311 /* set_frame_rate(gspca_dev); */ sd_init()
1313 return gspca_dev->usb_err; sd_init()
1316 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
1318 struct sd *sd = (struct sd *) gspca_dev; sd_start()
1343 sccb_reg_write(gspca_dev, 0x1e, 0x04); sd_start()
1346 mode = gspca_dev->curr_mode; /* 0: 320x240, 1: 640x480 */ sd_start()
1347 reg_w_array(gspca_dev, bridge_start[sd->sensor][mode].val, sd_start()
1349 sccb_w_array(gspca_dev, sensor_start[sd->sensor][mode].val, sd_start()
1352 set_frame_rate(gspca_dev); sd_start()
1355 sethue(gspca_dev, v4l2_ctrl_g_ctrl(sd->hue)); sd_start()
1356 setsaturation(gspca_dev, v4l2_ctrl_g_ctrl(sd->saturation)); sd_start()
1358 setagc(gspca_dev, v4l2_ctrl_g_ctrl(sd->autogain)); sd_start()
1359 setawb(gspca_dev, v4l2_ctrl_g_ctrl(sd->autowhitebalance)); sd_start()
1360 setaec(gspca_dev, v4l2_ctrl_g_ctrl(sd->autoexposure)); sd_start()
1362 setgain(gspca_dev, v4l2_ctrl_g_ctrl(sd->gain)); sd_start()
1363 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(sd->exposure)); sd_start()
1364 setbrightness(gspca_dev, v4l2_ctrl_g_ctrl(sd->brightness)); sd_start()
1365 setcontrast(gspca_dev, v4l2_ctrl_g_ctrl(sd->contrast)); sd_start()
1367 setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); sd_start()
1368 sethvflip(gspca_dev, v4l2_ctrl_g_ctrl(sd->hflip), sd_start()
1370 setlightfreq(gspca_dev, v4l2_ctrl_g_ctrl(sd->plfreq)); sd_start()
1372 ov534_set_led(gspca_dev, 1); sd_start()
1373 ov534_reg_write(gspca_dev, 0xe0, 0x00); sd_start()
1374 return gspca_dev->usb_err; sd_start()
1377 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
1379 ov534_reg_write(gspca_dev, 0xe0, 0x09); sd_stopN()
1380 ov534_set_led(gspca_dev, 0); sd_stopN()
1393 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
1396 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
1402 payload_len = gspca_dev->cam.bulk ? 2048 : 2040; sd_pkt_scan()
1434 if (gspca_dev->last_packet_type == INTER_PACKET) sd_pkt_scan()
1435 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
1439 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
1444 if (gspca_dev->pixfmt.pixelformat == V4L2_PIX_FMT_YUYV sd_pkt_scan()
1445 && gspca_dev->image_len + len - 12 != sd_pkt_scan()
1446 gspca_dev->pixfmt.width * sd_pkt_scan()
1447 gspca_dev->pixfmt.height * 2) { sd_pkt_scan()
1451 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
1456 gspca_frame_add(gspca_dev, INTER_PACKET, sd_pkt_scan()
1465 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
1474 static void sd_get_streamparm(struct gspca_dev *gspca_dev, sd_get_streamparm() argument
1479 struct sd *sd = (struct sd *) gspca_dev; sd_get_streamparm()
1487 static void sd_set_streamparm(struct gspca_dev *gspca_dev, sd_set_streamparm() argument
1492 struct sd *sd = (struct sd *) gspca_dev; sd_set_streamparm()
1501 if (gspca_dev->streaming) sd_set_streamparm()
1502 set_frame_rate(gspca_dev); sd_set_streamparm()
H A Dpac7311.c77 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
164 static void reg_w_buf(struct gspca_dev *gspca_dev, reg_w_buf() argument
170 if (gspca_dev->usb_err < 0) reg_w_buf()
172 memcpy(gspca_dev->usb_buf, buffer, len); reg_w_buf()
173 ret = usb_control_msg(gspca_dev->dev, reg_w_buf()
174 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w_buf()
178 index, gspca_dev->usb_buf, len, reg_w_buf()
183 gspca_dev->usb_err = ret; reg_w_buf()
188 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
194 if (gspca_dev->usb_err < 0) reg_w()
196 gspca_dev->usb_buf[0] = value; reg_w()
197 ret = usb_control_msg(gspca_dev->dev, reg_w()
198 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w()
201 0, index, gspca_dev->usb_buf, 1, reg_w()
206 gspca_dev->usb_err = ret; reg_w()
210 static void reg_w_seq(struct gspca_dev *gspca_dev, reg_w_seq() argument
214 reg_w(gspca_dev, seq[0], seq[1]); reg_w_seq()
220 static void reg_w_page(struct gspca_dev *gspca_dev, reg_w_page() argument
226 if (gspca_dev->usb_err < 0) reg_w_page()
231 gspca_dev->usb_buf[0] = page[index]; reg_w_page()
232 ret = usb_control_msg(gspca_dev->dev, reg_w_page()
233 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w_page()
236 0, index, gspca_dev->usb_buf, 1, reg_w_page()
241 gspca_dev->usb_err = ret; reg_w_page()
248 static void reg_w_var(struct gspca_dev *gspca_dev, reg_w_var() argument
261 reg_w_page(gspca_dev, page4, page4_len); reg_w_var()
270 reg_w_buf(gspca_dev, reg_w_var()
275 reg_w_buf(gspca_dev, index, seq, 8); reg_w_var()
286 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
289 struct cam *cam = &gspca_dev->cam; sd_config()
298 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
300 reg_w(gspca_dev, 0xff, 0x04); setcontrast()
301 reg_w(gspca_dev, 0x10, val); setcontrast()
303 reg_w(gspca_dev, 0x11, 0x01); setcontrast()
306 static void setgain(struct gspca_dev *gspca_dev, s32 val) setgain() argument
308 reg_w(gspca_dev, 0xff, 0x04); /* page 4 */ setgain()
309 reg_w(gspca_dev, 0x0e, 0x00); setgain()
310 reg_w(gspca_dev, 0x0f, gspca_dev->gain->maximum - val + 1); setgain()
313 reg_w(gspca_dev, 0x11, 0x01); setgain()
316 static void setexposure(struct gspca_dev *gspca_dev, s32 val) setexposure() argument
318 reg_w(gspca_dev, 0xff, 0x04); /* page 4 */ setexposure()
319 reg_w(gspca_dev, 0x02, val); setexposure()
322 reg_w(gspca_dev, 0x11, 0x01); setexposure()
328 reg_w(gspca_dev, 0xff, 0x01); setexposure()
329 if (gspca_dev->pixfmt.width != 640 && val <= 3) setexposure()
330 reg_w(gspca_dev, 0x08, 0x09); setexposure()
332 reg_w(gspca_dev, 0x08, 0x08); setexposure()
340 if (gspca_dev->pixfmt.width == 640 && val == 2) setexposure()
341 reg_w(gspca_dev, 0x80, 0x01); setexposure()
343 reg_w(gspca_dev, 0x80, 0x1c); setexposure()
346 reg_w(gspca_dev, 0x11, 0x01); setexposure()
349 static void sethvflip(struct gspca_dev *gspca_dev, s32 hflip, s32 vflip) sethvflip() argument
353 reg_w(gspca_dev, 0xff, 0x04); /* page 4 */ sethvflip()
356 reg_w(gspca_dev, 0x21, data); sethvflip()
359 reg_w(gspca_dev, 0x11, 0x01); sethvflip()
363 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
365 reg_w_seq(gspca_dev, init_7311, sizeof(init_7311)/2); sd_init()
366 return gspca_dev->usb_err; sd_init()
371 struct gspca_dev *gspca_dev = sd_s_ctrl() local
372 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
373 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
375 gspca_dev->usb_err = 0; sd_s_ctrl()
382 gspca_dev->exposure->val = PAC7311_EXPOSURE_DEFAULT; sd_s_ctrl()
383 gspca_dev->gain->val = PAC7311_GAIN_DEFAULT; sd_s_ctrl()
387 if (!gspca_dev->streaming) sd_s_ctrl()
392 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
395 if (gspca_dev->exposure->is_new || (ctrl->is_new && ctrl->val)) sd_s_ctrl()
396 setexposure(gspca_dev, gspca_dev->exposure->val); sd_s_ctrl()
397 if (gspca_dev->gain->is_new || (ctrl->is_new && ctrl->val)) sd_s_ctrl()
398 setgain(gspca_dev, gspca_dev->gain->val); sd_s_ctrl()
401 sethvflip(gspca_dev, sd->hflip->val, 1); sd_s_ctrl()
406 return gspca_dev->usb_err; sd_s_ctrl()
414 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
416 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
417 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
419 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
424 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
426 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
429 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
440 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); sd_init_controls()
445 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
447 struct sd *sd = (struct sd *) gspca_dev; sd_start()
451 reg_w_var(gspca_dev, start_7311, sd_start()
453 setcontrast(gspca_dev, v4l2_ctrl_g_ctrl(sd->contrast)); sd_start()
454 setgain(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->gain)); sd_start()
455 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure)); sd_start()
456 sethvflip(gspca_dev, v4l2_ctrl_g_ctrl(sd->hflip), 1); sd_start()
459 switch (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) { sd_start()
461 reg_w(gspca_dev, 0xff, 0x01); sd_start()
462 reg_w(gspca_dev, 0x17, 0x20); sd_start()
463 reg_w(gspca_dev, 0x87, 0x10); sd_start()
466 reg_w(gspca_dev, 0xff, 0x01); sd_start()
467 reg_w(gspca_dev, 0x17, 0x30); sd_start()
468 reg_w(gspca_dev, 0x87, 0x11); sd_start()
471 reg_w(gspca_dev, 0xff, 0x01); sd_start()
472 reg_w(gspca_dev, 0x17, 0x00); sd_start()
473 reg_w(gspca_dev, 0x87, 0x12); sd_start()
482 reg_w(gspca_dev, 0xff, 0x01); sd_start()
483 reg_w(gspca_dev, 0x78, 0x05); sd_start()
485 return gspca_dev->usb_err; sd_start()
488 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
490 reg_w(gspca_dev, 0xff, 0x04); sd_stopN()
491 reg_w(gspca_dev, 0x27, 0x80); sd_stopN()
492 reg_w(gspca_dev, 0x28, 0xca); sd_stopN()
493 reg_w(gspca_dev, 0x29, 0x53); sd_stopN()
494 reg_w(gspca_dev, 0x2a, 0x0e); sd_stopN()
495 reg_w(gspca_dev, 0xff, 0x01); sd_stopN()
496 reg_w(gspca_dev, 0x3e, 0x20); sd_stopN()
497 reg_w(gspca_dev, 0x78, 0x44); /* Bit_0=start stream, Bit_6=LED */ sd_stopN()
498 reg_w(gspca_dev, 0x78, 0x44); /* Bit_0=start stream, Bit_6=LED */ sd_stopN()
499 reg_w(gspca_dev, 0x78, 0x44); /* Bit_0=start stream, Bit_6=LED */ sd_stopN()
502 static void do_autogain(struct gspca_dev *gspca_dev) do_autogain() argument
504 struct sd *sd = (struct sd *) gspca_dev; do_autogain()
516 else if (gspca_coarse_grained_expo_autogain(gspca_dev, avg_lum, do_autogain()
549 static void pac_start_frame(struct gspca_dev *gspca_dev, pac_start_frame() argument
554 gspca_frame_add(gspca_dev, FIRST_PACKET, pac_start_frame()
562 gspca_frame_add(gspca_dev, INTER_PACKET, pac_start_frame()
564 gspca_frame_add(gspca_dev, INTER_PACKET, pac_start_frame()
569 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
573 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
577 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len); sd_pkt_scan()
593 gspca_dev->image_len += n; sd_pkt_scan()
596 gspca_frame_add(gspca_dev, INTER_PACKET, data, n); sd_pkt_scan()
598 image = gspca_dev->image; sd_pkt_scan()
600 && image[gspca_dev->image_len - 2] == 0xff sd_pkt_scan()
601 && image[gspca_dev->image_len - 1] == 0xd9) sd_pkt_scan()
602 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
609 if (gspca_dev->last_packet_type == LAST_PACKET && sd_pkt_scan()
617 pac_start_frame(gspca_dev, sd_pkt_scan()
618 gspca_dev->pixfmt.height, gspca_dev->pixfmt.width); sd_pkt_scan()
620 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
624 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, sd_int_pkt_scan() argument
642 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); sd_int_pkt_scan()
643 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
644 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_int_pkt_scan()
645 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
H A Dse401.c57 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
76 static void se401_write_req(struct gspca_dev *gspca_dev, u16 req, u16 value, se401_write_req() argument
81 if (gspca_dev->usb_err < 0) se401_write_req()
84 err = usb_control_msg(gspca_dev->dev, se401_write_req()
85 usb_sndctrlpipe(gspca_dev->dev, 0), req, se401_write_req()
92 gspca_dev->usb_err = err; se401_write_req()
96 static void se401_read_req(struct gspca_dev *gspca_dev, u16 req, int silent) se401_read_req() argument
100 if (gspca_dev->usb_err < 0) se401_read_req()
105 gspca_dev->usb_err = -ENOBUFS; se401_read_req()
109 err = usb_control_msg(gspca_dev->dev, se401_read_req()
110 usb_rcvctrlpipe(gspca_dev->dev, 0), req, se401_read_req()
112 0, 0, gspca_dev->usb_buf, READ_REQ_SIZE, 1000); se401_read_req()
117 gspca_dev->usb_err = err; se401_read_req()
121 static void se401_set_feature(struct gspca_dev *gspca_dev, se401_set_feature() argument
126 if (gspca_dev->usb_err < 0) se401_set_feature()
129 err = usb_control_msg(gspca_dev->dev, se401_set_feature()
130 usb_sndctrlpipe(gspca_dev->dev, 0), se401_set_feature()
137 gspca_dev->usb_err = err; se401_set_feature()
141 static int se401_get_feature(struct gspca_dev *gspca_dev, u16 selector) se401_get_feature() argument
145 if (gspca_dev->usb_err < 0) se401_get_feature()
146 return gspca_dev->usb_err; se401_get_feature()
150 gspca_dev->usb_err = -ENOBUFS; se401_get_feature()
151 return gspca_dev->usb_err; se401_get_feature()
154 err = usb_control_msg(gspca_dev->dev, se401_get_feature()
155 usb_rcvctrlpipe(gspca_dev->dev, 0), se401_get_feature()
158 0, selector, gspca_dev->usb_buf, 2, 1000); se401_get_feature()
162 gspca_dev->usb_err = err; se401_get_feature()
165 return gspca_dev->usb_buf[0] | (gspca_dev->usb_buf[1] << 8); se401_get_feature()
168 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
171 se401_write_req(gspca_dev, SE401_REQ_SET_BRT, val, 0); setbrightness()
174 static void setgain(struct gspca_dev *gspca_dev, s32 val) setgain() argument
179 se401_set_feature(gspca_dev, HV7131_REG_ARCG, gain); setgain()
181 se401_set_feature(gspca_dev, HV7131_REG_AGCG, gain); setgain()
183 se401_set_feature(gspca_dev, HV7131_REG_ABCG, gain); setgain()
186 static void setexposure(struct gspca_dev *gspca_dev, s32 val, s32 freq) setexposure() argument
188 struct sd *sd = (struct sd *) gspca_dev; setexposure()
209 se401_set_feature(gspca_dev, HV7131_REG_TITL, expose_l); setexposure()
211 se401_set_feature(gspca_dev, HV7131_REG_TITM, expose_m); setexposure()
213 se401_set_feature(gspca_dev, HV7131_REG_TITU, expose_h); setexposure()
216 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
219 struct sd *sd = (struct sd *)gspca_dev; sd_config()
220 struct cam *cam = &gspca_dev->cam; sd_config()
221 u8 *cd = gspca_dev->usb_buf; sd_config()
226 se401_read_req(gspca_dev, SE401_REQ_GET_CAMERA_DESCRIPTOR, 1); sd_config()
227 if (gspca_dev->usb_err) { sd_config()
230 usb_reset_device(gspca_dev->dev); sd_config()
231 gspca_dev->usb_err = 0; sd_config()
232 se401_read_req(gspca_dev, SE401_REQ_GET_CAMERA_DESCRIPTOR, 0); sd_config()
236 se401_write_req(gspca_dev, SE401_REQ_LED_CONTROL, 0, 0); sd_config()
237 if (gspca_dev->usb_err) sd_config()
238 return gspca_dev->usb_err; sd_config()
315 se401_read_req(gspca_dev, SE401_REQ_GET_BRT, 1); sd_config()
316 sd->has_brightness = !!gspca_dev->usb_err; sd_config()
317 gspca_dev->usb_err = 0; sd_config()
323 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
329 static int sd_isoc_init(struct gspca_dev *gspca_dev) sd_isoc_init() argument
331 gspca_dev->alt = 1; /* Ignore the bogus isoc alt settings */ sd_isoc_init()
333 return gspca_dev->usb_err; sd_isoc_init()
337 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
339 struct sd *sd = (struct sd *)gspca_dev; sd_start()
340 int mult = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_start()
343 se401_write_req(gspca_dev, SE401_REQ_CAMERA_POWER, 1, 1); sd_start()
344 if (gspca_dev->usb_err) { sd_start()
347 usb_reset_device(gspca_dev->dev); sd_start()
348 gspca_dev->usb_err = 0; sd_start()
349 se401_write_req(gspca_dev, SE401_REQ_CAMERA_POWER, 1, 0); sd_start()
351 se401_write_req(gspca_dev, SE401_REQ_LED_CONTROL, 1, 0); sd_start()
353 se401_set_feature(gspca_dev, HV7131_REG_MODE_B, 0x05); sd_start()
356 se401_write_req(gspca_dev, SE401_REQ_SET_WIDTH, sd_start()
357 gspca_dev->pixfmt.width * mult, 0); sd_start()
358 se401_write_req(gspca_dev, SE401_REQ_SET_HEIGHT, sd_start()
359 gspca_dev->pixfmt.height * mult, 0); sd_start()
362 * se401_write_req(gspca_dev, SE401_REQ_SET_OUTPUT_MODE, sd_start()
374 se401_set_feature(gspca_dev, SE401_OPERATINGMODE, mode); sd_start()
376 se401_set_feature(gspca_dev, HV7131_REG_ARLV, sd->resetlevel); sd_start()
385 se401_write_req(gspca_dev, SE401_REQ_START_CONTINUOUS_CAPTURE, 0, 0); sd_start()
387 return gspca_dev->usb_err; sd_start()
390 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
392 se401_write_req(gspca_dev, SE401_REQ_STOP_CONTINUOUS_CAPTURE, 0, 0); sd_stopN()
393 se401_write_req(gspca_dev, SE401_REQ_LED_CONTROL, 0, 0); sd_stopN()
394 se401_write_req(gspca_dev, SE401_REQ_CAMERA_POWER, 0, 0); sd_stopN()
397 static void sd_dq_callback(struct gspca_dev *gspca_dev) sd_dq_callback() argument
399 struct sd *sd = (struct sd *)gspca_dev; sd_dq_callback()
405 sd_stopN(gspca_dev); sd_dq_callback()
406 sd_start(gspca_dev); sd_dq_callback()
419 se401_get_feature(gspca_dev, HV7131_REG_HIREFNOH); sd_dq_callback()
420 se401_get_feature(gspca_dev, HV7131_REG_HIREFNOL); sd_dq_callback()
421 se401_get_feature(gspca_dev, HV7131_REG_LOREFNOH); sd_dq_callback()
422 se401_get_feature(gspca_dev, HV7131_REG_LOREFNOL); sd_dq_callback()
423 ahrc = 256*se401_get_feature(gspca_dev, HV7131_REG_HIREFNOH) + sd_dq_callback()
424 se401_get_feature(gspca_dev, HV7131_REG_HIREFNOL); sd_dq_callback()
425 alrc = 256*se401_get_feature(gspca_dev, HV7131_REG_LOREFNOH) + sd_dq_callback()
426 se401_get_feature(gspca_dev, HV7131_REG_LOREFNOL); sd_dq_callback()
452 se401_set_feature(gspca_dev, HV7131_REG_ARLV, sd->resetlevel); sd_dq_callback()
458 static void sd_complete_frame(struct gspca_dev *gspca_dev, u8 *data, int len) sd_complete_frame() argument
460 struct sd *sd = (struct sd *)gspca_dev; sd_complete_frame()
471 gspca_dev->last_packet_type = DISCARD_PACKET; sd_complete_frame()
477 gspca_frame_add(gspca_dev, LAST_PACKET, data, len); sd_complete_frame()
480 static void sd_pkt_scan_janggu(struct gspca_dev *gspca_dev, u8 *data, int len) sd_pkt_scan_janggu() argument
482 struct sd *sd = (struct sd *)gspca_dev; sd_pkt_scan_janggu()
483 int imagesize = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; sd_pkt_scan_janggu()
490 if (gspca_dev->last_packet_type == LAST_PACKET && len == 1024) { sd_pkt_scan_janggu()
491 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan_janggu()
538 gspca_frame_add(gspca_dev, INTER_PACKET, sd->packet, sd_pkt_scan_janggu()
547 sd_complete_frame(gspca_dev, sd->packet, plen); sd_pkt_scan_janggu()
550 gspca_frame_add(gspca_dev, FIRST_PACKET, sd->packet, sd_pkt_scan_janggu()
562 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); sd_pkt_scan_janggu()
563 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan_janggu()
566 static void sd_pkt_scan_bayer(struct gspca_dev *gspca_dev, u8 *data, int len) sd_pkt_scan_bayer() argument
568 struct cam *cam = &gspca_dev->cam; sd_pkt_scan_bayer()
569 int imagesize = cam->cam_mode[gspca_dev->curr_mode].sizeimage; sd_pkt_scan_bayer()
571 if (gspca_dev->image_len == 0) { sd_pkt_scan_bayer()
572 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan_bayer()
576 if (gspca_dev->image_len + len >= imagesize) { sd_pkt_scan_bayer()
577 sd_complete_frame(gspca_dev, data, len); sd_pkt_scan_bayer()
581 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan_bayer()
584 static void sd_pkt_scan(struct gspca_dev *gspca_dev, u8 *data, int len) sd_pkt_scan() argument
586 int mult = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_pkt_scan()
592 sd_pkt_scan_bayer(gspca_dev, data, len); sd_pkt_scan()
594 sd_pkt_scan_janggu(gspca_dev, data, len); sd_pkt_scan()
598 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, u8 *data, int len) sd_int_pkt_scan() argument
600 struct sd *sd = (struct sd *)gspca_dev; sd_int_pkt_scan()
615 input_report_key(gspca_dev->input_dev, KEY_CAMERA, state); sd_int_pkt_scan()
616 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
626 struct gspca_dev *gspca_dev = sd_s_ctrl() local
627 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
628 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
630 gspca_dev->usb_err = 0; sd_s_ctrl()
632 if (!gspca_dev->streaming) sd_s_ctrl()
637 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
640 setgain(gspca_dev, ctrl->val); sd_s_ctrl()
643 setexposure(gspca_dev, ctrl->val, sd->freq->val); sd_s_ctrl()
646 return gspca_dev->usb_err; sd_s_ctrl()
653 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
655 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
656 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
658 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Djeilinj.c59 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
99 static void jlj_write2(struct gspca_dev *gspca_dev, unsigned char *command) jlj_write2() argument
103 if (gspca_dev->usb_err < 0) jlj_write2()
105 memcpy(gspca_dev->usb_buf, command, 2); jlj_write2()
106 retval = usb_bulk_msg(gspca_dev->dev, jlj_write2()
107 usb_sndbulkpipe(gspca_dev->dev, 3), jlj_write2()
108 gspca_dev->usb_buf, 2, NULL, 500); jlj_write2()
111 gspca_dev->usb_buf[0], retval); jlj_write2()
112 gspca_dev->usb_err = retval; jlj_write2()
117 static void jlj_read1(struct gspca_dev *gspca_dev, unsigned char *response) jlj_read1() argument
121 if (gspca_dev->usb_err < 0) jlj_read1()
123 retval = usb_bulk_msg(gspca_dev->dev, jlj_read1()
124 usb_rcvbulkpipe(gspca_dev->dev, 0x84), jlj_read1()
125 gspca_dev->usb_buf, 1, NULL, 500); jlj_read1()
126 *response = gspca_dev->usb_buf[0]; jlj_read1()
129 gspca_dev->usb_buf[0], retval); jlj_read1()
130 gspca_dev->usb_err = retval; jlj_read1()
134 static void setfreq(struct gspca_dev *gspca_dev, s32 val) setfreq() argument
143 jlj_write2(gspca_dev, freq_commands[0]); setfreq()
144 jlj_write2(gspca_dev, freq_commands[1]); setfreq()
147 static void setcamquality(struct gspca_dev *gspca_dev, s32 val) setcamquality() argument
160 jlj_write2(gspca_dev, quality_commands[0]); setcamquality()
161 jlj_write2(gspca_dev, quality_commands[1]); setcamquality()
164 static void setautogain(struct gspca_dev *gspca_dev, s32 val) setautogain() argument
173 jlj_write2(gspca_dev, autogain_commands[0]); setautogain()
174 jlj_write2(gspca_dev, autogain_commands[1]); setautogain()
177 static void setred(struct gspca_dev *gspca_dev, s32 val) setred() argument
186 jlj_write2(gspca_dev, setred_commands[0]); setred()
187 jlj_write2(gspca_dev, setred_commands[1]); setred()
190 static void setgreen(struct gspca_dev *gspca_dev, s32 val) setgreen() argument
199 jlj_write2(gspca_dev, setgreen_commands[0]); setgreen()
200 jlj_write2(gspca_dev, setgreen_commands[1]); setgreen()
203 static void setblue(struct gspca_dev *gspca_dev, s32 val) setblue() argument
212 jlj_write2(gspca_dev, setblue_commands[0]); setblue()
213 jlj_write2(gspca_dev, setblue_commands[1]); setblue()
216 static int jlj_start(struct gspca_dev *gspca_dev) jlj_start() argument
221 struct sd *sd = (struct sd *) gspca_dev; jlj_start()
226 {{0x71, 0x81 - gspca_dev->curr_mode}, 0, 0}, jlj_start()
259 jlj_write2(gspca_dev, start_commands[i].instruction); jlj_start()
263 jlj_read1(gspca_dev, &response); jlj_start()
265 setcamquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); jlj_start()
267 setfreq(gspca_dev, v4l2_ctrl_g_ctrl(sd->freq)); jlj_start()
268 if (gspca_dev->usb_err < 0) jlj_start()
270 return gspca_dev->usb_err; jlj_start()
273 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
276 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
292 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
295 gspca_frame_add(gspca_dev, INTER_PACKET, sd_pkt_scan()
306 gspca_frame_add(gspca_dev, packet_type, sd_pkt_scan()
313 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
317 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
320 struct cam *cam = &gspca_dev->cam; sd_config()
321 struct sd *dev = (struct sd *) gspca_dev; sd_config()
334 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
347 usb_bulk_msg(gspca_dev->dev, sd_stopN()
348 gspca_dev->urb[0]->pipe, sd_stopN()
349 gspca_dev->urb[0]->transfer_buffer, sd_stopN()
355 buf = gspca_dev->urb[0]->transfer_buffer; sd_stopN()
366 jlj_write2(gspca_dev, stop_commands[i]); sd_stopN()
370 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
372 return gspca_dev->usb_err; sd_init()
376 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
378 struct sd *dev = (struct sd *) gspca_dev; sd_start()
381 jpeg_define(dev->jpeg_hdr, gspca_dev->pixfmt.height, sd_start()
382 gspca_dev->pixfmt.width, sd_start()
386 gspca_dev->pixfmt.height, gspca_dev->pixfmt.width); sd_start()
387 jlj_start(gspca_dev); sd_start()
388 return gspca_dev->usb_err; sd_start()
402 struct gspca_dev *gspca_dev = sd_s_ctrl() local
403 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
404 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
406 gspca_dev->usb_err = 0; sd_s_ctrl()
408 if (!gspca_dev->streaming) sd_s_ctrl()
413 setfreq(gspca_dev, ctrl->val); sd_s_ctrl()
416 setred(gspca_dev, ctrl->val); sd_s_ctrl()
419 setgreen(gspca_dev, ctrl->val); sd_s_ctrl()
422 setblue(gspca_dev, ctrl->val); sd_s_ctrl()
425 setautogain(gspca_dev, ctrl->val); sd_s_ctrl()
429 setcamquality(gspca_dev, ctrl->val); sd_s_ctrl()
432 return gspca_dev->usb_err; sd_s_ctrl()
439 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
441 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
442 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
453 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
477 static int sd_set_jcomp(struct gspca_dev *gspca_dev, sd_set_jcomp() argument
480 struct sd *sd = (struct sd *) gspca_dev; sd_set_jcomp()
486 static int sd_get_jcomp(struct gspca_dev *gspca_dev, sd_get_jcomp() argument
489 struct sd *sd = (struct sd *) gspca_dev; sd_get_jcomp()
H A Dsunplus.c37 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
246 /* read <len> bytes to gspca_dev->usb_buf */ reg_r()
247 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
258 if (gspca_dev->usb_err < 0) reg_r()
260 ret = usb_control_msg(gspca_dev->dev, reg_r()
261 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r()
266 len ? gspca_dev->usb_buf : NULL, len, reg_r()
270 gspca_dev->usb_err = ret; reg_r()
275 static void reg_w_1(struct gspca_dev *gspca_dev, reg_w_1() argument
283 if (gspca_dev->usb_err < 0) reg_w_1()
285 gspca_dev->usb_buf[0] = byte; reg_w_1()
286 ret = usb_control_msg(gspca_dev->dev, reg_w_1()
287 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w_1()
291 gspca_dev->usb_buf, 1, reg_w_1()
295 gspca_dev->usb_err = ret; reg_w_1()
300 static void reg_w_riv(struct gspca_dev *gspca_dev, reg_w_riv() argument
303 struct usb_device *dev = gspca_dev->dev; reg_w_riv()
306 if (gspca_dev->usb_err < 0) reg_w_riv()
315 gspca_dev->usb_err = ret; reg_w_riv()
322 static void write_vector(struct gspca_dev *gspca_dev, write_vector() argument
326 reg_w_riv(gspca_dev, data->req, data->idx, data->val); write_vector()
331 static void setup_qtable(struct gspca_dev *gspca_dev, setup_qtable() argument
338 reg_w_riv(gspca_dev, 0x00, 0x2800 + i, qtable[0][i]); setup_qtable()
342 reg_w_riv(gspca_dev, 0x00, 0x2840 + i, qtable[1][i]); setup_qtable()
345 static void spca504_acknowledged_command(struct gspca_dev *gspca_dev, spca504_acknowledged_command() argument
348 reg_w_riv(gspca_dev, req, idx, val); spca504_acknowledged_command()
349 reg_r(gspca_dev, 0x01, 0x0001, 1); spca504_acknowledged_command()
350 PDEBUG(D_FRAM, "before wait 0x%04x", gspca_dev->usb_buf[0]); spca504_acknowledged_command()
351 reg_w_riv(gspca_dev, req, idx, val); spca504_acknowledged_command()
354 reg_r(gspca_dev, 0x01, 0x0001, 1); spca504_acknowledged_command()
355 PDEBUG(D_FRAM, "after wait 0x%04x", gspca_dev->usb_buf[0]); spca504_acknowledged_command()
358 static void spca504_read_info(struct gspca_dev *gspca_dev) spca504_read_info() argument
367 reg_r(gspca_dev, 0, i, 1); spca504_read_info()
368 info[i] = gspca_dev->usb_buf[0]; spca504_read_info()
377 static void spca504A_acknowledged_command(struct gspca_dev *gspca_dev, spca504A_acknowledged_command() argument
383 reg_w_riv(gspca_dev, req, idx, val); spca504A_acknowledged_command()
384 reg_r(gspca_dev, 0x01, 0x0001, 1); spca504A_acknowledged_command()
385 if (gspca_dev->usb_err < 0) spca504A_acknowledged_command()
388 gspca_dev->usb_buf[0], endcode); spca504A_acknowledged_command()
395 /* reg_w_riv(gspca_dev, req, idx, val); */ spca504A_acknowledged_command()
396 reg_r(gspca_dev, 0x01, 0x0001, 1); spca504A_acknowledged_command()
397 status = gspca_dev->usb_buf[0]; spca504A_acknowledged_command()
406 static void spca504B_PollingDataReady(struct gspca_dev *gspca_dev) spca504B_PollingDataReady() argument
411 reg_r(gspca_dev, 0x21, 0, 1); spca504B_PollingDataReady()
412 if ((gspca_dev->usb_buf[0] & 0x01) == 0) spca504B_PollingDataReady()
418 static void spca504B_WaitCmdStatus(struct gspca_dev *gspca_dev) spca504B_WaitCmdStatus() argument
423 reg_r(gspca_dev, 0x21, 1, 1); spca504B_WaitCmdStatus()
424 if (gspca_dev->usb_buf[0] != 0) { spca504B_WaitCmdStatus()
425 reg_w_1(gspca_dev, 0x21, 0, 1, 0); spca504B_WaitCmdStatus()
426 reg_r(gspca_dev, 0x21, 1, 1); spca504B_WaitCmdStatus()
427 spca504B_PollingDataReady(gspca_dev); spca504B_WaitCmdStatus()
434 static void spca50x_GetFirmware(struct gspca_dev *gspca_dev) spca50x_GetFirmware() argument
441 data = gspca_dev->usb_buf; spca50x_GetFirmware()
442 reg_r(gspca_dev, 0x20, 0, 5); spca50x_GetFirmware()
445 reg_r(gspca_dev, 0x23, 0, 64); spca50x_GetFirmware()
446 reg_r(gspca_dev, 0x23, 1, 64); spca50x_GetFirmware()
449 static void spca504B_SetSizeType(struct gspca_dev *gspca_dev) spca504B_SetSizeType() argument
451 struct sd *sd = (struct sd *) gspca_dev; spca504B_SetSizeType()
454 Size = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; spca504B_SetSizeType()
457 reg_w_riv(gspca_dev, 0x31, 0, 0); spca504B_SetSizeType()
458 spca504B_WaitCmdStatus(gspca_dev); spca504B_SetSizeType()
459 spca504B_PollingDataReady(gspca_dev); spca504B_SetSizeType()
460 spca50x_GetFirmware(gspca_dev); spca504B_SetSizeType()
462 reg_w_1(gspca_dev, 0x24, 0, 8, 2); /* type */ spca504B_SetSizeType()
463 reg_r(gspca_dev, 0x24, 8, 1); spca504B_SetSizeType()
465 reg_w_1(gspca_dev, 0x25, 0, 4, Size); spca504B_SetSizeType()
466 reg_r(gspca_dev, 0x25, 4, 1); /* size */ spca504B_SetSizeType()
467 spca504B_PollingDataReady(gspca_dev); spca504B_SetSizeType()
470 reg_w_riv(gspca_dev, 0x31, 0x0004, 0x00); spca504B_SetSizeType()
471 spca504B_WaitCmdStatus(gspca_dev); spca504B_SetSizeType()
472 spca504B_PollingDataReady(gspca_dev); spca504B_SetSizeType()
477 reg_w_1(gspca_dev, 0x25, 0, 4, Size); spca504B_SetSizeType()
478 reg_r(gspca_dev, 0x25, 4, 1); /* size */ spca504B_SetSizeType()
479 reg_w_1(gspca_dev, 0x27, 0, 0, 6); spca504B_SetSizeType()
480 reg_r(gspca_dev, 0x27, 0, 1); /* type */ spca504B_SetSizeType()
481 spca504B_PollingDataReady(gspca_dev); spca504B_SetSizeType()
487 spca504A_acknowledged_command(gspca_dev, spca504B_SetSizeType()
490 spca504A_acknowledged_command(gspca_dev, spca504B_SetSizeType()
493 spca504_acknowledged_command(gspca_dev, 0x08, Size, 0); spca504B_SetSizeType()
498 reg_w_riv(gspca_dev, 0xa0, (0x0500 | (Size & 0x0f)), 0x00); spca504B_SetSizeType()
499 reg_w_riv(gspca_dev, 0x20, 0x01, 0x0500 | (Size & 0x0f)); spca504B_SetSizeType()
504 static void spca504_wait_status(struct gspca_dev *gspca_dev) spca504_wait_status() argument
511 reg_r(gspca_dev, 0x06, 0x00, 1); spca504_wait_status()
512 if (gspca_dev->usb_buf[0] == 0) spca504_wait_status()
518 static void spca504B_setQtable(struct gspca_dev *gspca_dev) spca504B_setQtable() argument
520 reg_w_1(gspca_dev, 0x26, 0, 0, 3); spca504B_setQtable()
521 reg_r(gspca_dev, 0x26, 0, 1); spca504B_setQtable()
522 spca504B_PollingDataReady(gspca_dev); spca504B_setQtable()
525 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
527 struct sd *sd = (struct sd *) gspca_dev; setbrightness()
531 reg_w_riv(gspca_dev, 0x00, reg, val); setbrightness()
534 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
536 struct sd *sd = (struct sd *) gspca_dev; setcontrast()
540 reg_w_riv(gspca_dev, 0x00, reg, val); setcontrast()
543 static void setcolors(struct gspca_dev *gspca_dev, s32 val) setcolors() argument
545 struct sd *sd = (struct sd *) gspca_dev; setcolors()
549 reg_w_riv(gspca_dev, 0x00, reg, val); setcolors()
552 static void init_ctl_reg(struct gspca_dev *gspca_dev) init_ctl_reg() argument
554 struct sd *sd = (struct sd *) gspca_dev; init_ctl_reg()
565 reg_w_riv(gspca_dev, 0, 0x21ad, 0x00); /* hue */ init_ctl_reg()
566 reg_w_riv(gspca_dev, 0, 0x21ac, 0x01); /* sat/hue */ init_ctl_reg()
567 reg_w_riv(gspca_dev, 0, 0x21a3, 0x00); /* gamma */ init_ctl_reg()
570 reg_w_riv(gspca_dev, 0, 0x20f5, 0x40); init_ctl_reg()
571 reg_w_riv(gspca_dev, 0, 0x20f4, 0x01); init_ctl_reg()
572 reg_w_riv(gspca_dev, 0, 0x2089, 0x00); init_ctl_reg()
576 spca504B_PollingDataReady(gspca_dev); init_ctl_reg()
580 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
583 struct sd *sd = (struct sd *) gspca_dev; sd_config()
586 cam = &gspca_dev->cam; sd_config()
595 reg_r(gspca_dev, 0x20, 0, 1); sd_config()
596 switch (gspca_dev->usb_buf[0]) { sd_config()
632 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
634 struct sd *sd = (struct sd *) gspca_dev; sd_init()
638 reg_w_riv(gspca_dev, 0x1d, 0x00, 0); sd_init()
639 reg_w_riv(gspca_dev, 0x00, 0x2306, 0x01); sd_init()
640 reg_w_riv(gspca_dev, 0x00, 0x0d04, 0x00); sd_init()
641 reg_w_riv(gspca_dev, 0x00, 0x2000, 0x00); sd_init()
642 reg_w_riv(gspca_dev, 0x00, 0x2301, 0x13); sd_init()
643 reg_w_riv(gspca_dev, 0x00, 0x2306, 0x00); sd_init()
646 spca504B_PollingDataReady(gspca_dev); sd_init()
647 spca50x_GetFirmware(gspca_dev); sd_init()
650 spca50x_GetFirmware(gspca_dev); sd_init()
651 reg_r(gspca_dev, 0x00, 0x5002, 1); sd_init()
652 reg_w_1(gspca_dev, 0x24, 0, 0, 0); sd_init()
653 reg_r(gspca_dev, 0x24, 0, 1); sd_init()
654 spca504B_PollingDataReady(gspca_dev); sd_init()
655 reg_w_riv(gspca_dev, 0x34, 0, 0); sd_init()
656 spca504B_WaitCmdStatus(gspca_dev); sd_init()
660 reg_w_riv(gspca_dev, 0xe0, 0x0000, 0x0000); sd_init()
661 reg_w_riv(gspca_dev, 0xe0, 0x0000, 0x0001); /* reset */ sd_init()
662 spca504_wait_status(gspca_dev); sd_init()
664 write_vector(gspca_dev, sd_init()
668 write_vector(gspca_dev, spca504_pccam600_open_data, sd_init()
670 setup_qtable(gspca_dev, qtable_creative_pccam); sd_init()
676 spca504_read_info(gspca_dev); sd_init()
679 spca504A_acknowledged_command(gspca_dev, 0x24, sd_init()
682 spca504A_acknowledged_command(gspca_dev, 0x24, sd_init()
685 spca504A_acknowledged_command(gspca_dev, 0x24, sd_init()
689 spca504A_acknowledged_command(gspca_dev, 0x08, sd_init()
693 /* spca504A_acknowledged_command (gspca_dev, 0x08, sd_init()
695 /* spca504A_acknowledged_command (gspca_dev, 0x24, sd_init()
697 reg_w_riv(gspca_dev, 0x00, 0x270c, 0x05); sd_init()
699 reg_w_riv(gspca_dev, 0x00, 0x2310, 0x05); sd_init()
700 spca504A_acknowledged_command(gspca_dev, 0x01, sd_init()
704 reg_w_riv(gspca_dev, 0, 0x2000, 0); sd_init()
705 reg_w_riv(gspca_dev, 0, 0x2883, 1); sd_init()
706 setup_qtable(gspca_dev, qtable_spca504_default); sd_init()
709 return gspca_dev->usb_err; sd_init()
712 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
714 struct sd *sd = (struct sd *) gspca_dev; sd_start()
718 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, sd_start()
719 gspca_dev->pixfmt.width, sd_start()
724 spca504B_setQtable(gspca_dev); sd_start()
725 spca504B_SetSizeType(gspca_dev); sd_start()
735 reg_w_riv(gspca_dev, 0xf0, 0, 0); sd_start()
736 spca504B_WaitCmdStatus(gspca_dev); sd_start()
737 reg_r(gspca_dev, 0xf0, 4, 0); sd_start()
738 spca504B_WaitCmdStatus(gspca_dev); sd_start()
741 reg_w_riv(gspca_dev, 0x31, 0x0004, 0x00); sd_start()
742 spca504B_WaitCmdStatus(gspca_dev); sd_start()
743 spca504B_PollingDataReady(gspca_dev); sd_start()
749 spca504_read_info(gspca_dev); sd_start()
752 spca504A_acknowledged_command(gspca_dev, 0x24, sd_start()
755 spca504A_acknowledged_command(gspca_dev, 0x24, sd_start()
757 spca504A_acknowledged_command(gspca_dev, 0x24, sd_start()
760 spca504_acknowledged_command(gspca_dev, 0x24, 8, 3); sd_start()
761 spca504_read_info(gspca_dev); sd_start()
762 spca504_acknowledged_command(gspca_dev, 0x24, 8, 3); sd_start()
763 spca504_acknowledged_command(gspca_dev, 0x24, 0, 0); sd_start()
765 spca504B_SetSizeType(gspca_dev); sd_start()
766 reg_w_riv(gspca_dev, 0x00, 0x270c, 0x05); sd_start()
768 reg_w_riv(gspca_dev, 0x00, 0x2310, 0x05); sd_start()
772 write_vector(gspca_dev, sd_start()
776 write_vector(gspca_dev, spca504_pccam600_init_data, sd_start()
780 reg_w_riv(gspca_dev, 0x0c, 0x0000, enable); sd_start()
782 reg_w_riv(gspca_dev, 0xb0, 0x0000, enable); sd_start()
786 reg_w_riv(gspca_dev, 0x30, 0x0001, 800); /* ~ 20 fps */ sd_start()
787 reg_w_riv(gspca_dev, 0x30, 0x0002, 1600); sd_start()
788 spca504B_SetSizeType(gspca_dev); sd_start()
791 init_ctl_reg(gspca_dev); sd_start()
792 return gspca_dev->usb_err; sd_start()
795 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
797 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
804 reg_w_riv(gspca_dev, 0x31, 0, 0); sd_stopN()
805 spca504B_WaitCmdStatus(gspca_dev); sd_stopN()
806 spca504B_PollingDataReady(gspca_dev); sd_stopN()
810 reg_w_riv(gspca_dev, 0x00, 0x2000, 0x0000); sd_stopN()
814 /* spca504A_acknowledged_command(gspca_dev, 0x08, sd_stopN()
816 spca504A_acknowledged_command(gspca_dev, 0x24, sd_stopN()
818 spca504A_acknowledged_command(gspca_dev, 0x01, sd_stopN()
821 spca504_acknowledged_command(gspca_dev, 0x24, 0, 0); sd_stopN()
822 reg_w_riv(gspca_dev, 0x01, 0x000f, 0x0000); sd_stopN()
828 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
832 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
841 /* gspca_dev->last_packet_type = DISCARD_PACKET; */ sd_pkt_scan()
872 /* gspca_dev->last_packet_type = DISCARD_PACKET; */ sd_pkt_scan()
888 /* gspca_dev->last_packet_type = DISCARD_PACKET; */ sd_pkt_scan()
898 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
902 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
910 gspca_frame_add(gspca_dev, INTER_PACKET, sd_pkt_scan()
919 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
924 struct gspca_dev *gspca_dev = sd_s_ctrl() local
925 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
926 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
928 gspca_dev->usb_err = 0; sd_s_ctrl()
930 if (!gspca_dev->streaming) sd_s_ctrl()
935 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
938 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
941 setcolors(gspca_dev, ctrl->val); sd_s_ctrl()
947 return gspca_dev->usb_err; sd_s_ctrl()
954 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
956 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
958 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dpac207.c65 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
100 static void pac207_write_regs(struct gspca_dev *gspca_dev, u16 index, pac207_write_regs() argument
103 struct usb_device *udev = gspca_dev->dev; pac207_write_regs()
106 if (gspca_dev->usb_err < 0) pac207_write_regs()
109 memcpy(gspca_dev->usb_buf, buffer, length); pac207_write_regs()
114 gspca_dev->usb_buf, length, PAC207_CTRL_TIMEOUT); pac207_write_regs()
118 gspca_dev->usb_err = err; pac207_write_regs()
122 static void pac207_write_reg(struct gspca_dev *gspca_dev, u16 index, u16 value) pac207_write_reg() argument
124 struct usb_device *udev = gspca_dev->dev; pac207_write_reg()
127 if (gspca_dev->usb_err < 0) pac207_write_reg()
136 gspca_dev->usb_err = err; pac207_write_reg()
140 static int pac207_read_reg(struct gspca_dev *gspca_dev, u16 index) pac207_read_reg() argument
142 struct usb_device *udev = gspca_dev->dev; pac207_read_reg()
145 if (gspca_dev->usb_err < 0) pac207_read_reg()
151 gspca_dev->usb_buf, 1, PAC207_CTRL_TIMEOUT); pac207_read_reg()
155 gspca_dev->usb_err = res; pac207_read_reg()
159 return gspca_dev->usb_buf[0]; pac207_read_reg()
163 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
169 idreg[0] = pac207_read_reg(gspca_dev, 0x0000); sd_config()
170 idreg[1] = pac207_read_reg(gspca_dev, 0x0001); sd_config()
185 cam = &gspca_dev->cam; sd_config()
193 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
202 pac207_write_reg(gspca_dev, 0x41, mode); sd_init()
203 pac207_write_reg(gspca_dev, 0x0f, 0x00); /* Power Control */ sd_init()
205 return gspca_dev->usb_err; sd_init()
208 static void setcontrol(struct gspca_dev *gspca_dev, u16 reg, u16 val) setcontrol() argument
210 pac207_write_reg(gspca_dev, reg, val); setcontrol()
211 pac207_write_reg(gspca_dev, 0x13, 0x01); /* Bit 0, auto clear */ setcontrol()
212 pac207_write_reg(gspca_dev, 0x1c, 0x01); /* not documented */ setcontrol()
217 struct gspca_dev *gspca_dev = sd_s_ctrl() local
218 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
219 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
221 gspca_dev->usb_err = 0; sd_s_ctrl()
228 gspca_dev->exposure->val = PAC207_EXPOSURE_DEFAULT; sd_s_ctrl()
229 gspca_dev->gain->val = PAC207_GAIN_DEFAULT; sd_s_ctrl()
233 if (!gspca_dev->streaming) sd_s_ctrl()
238 setcontrol(gspca_dev, PAC207_BRIGHTNESS_REG, ctrl->val); sd_s_ctrl()
241 if (gspca_dev->exposure->is_new || (ctrl->is_new && ctrl->val)) sd_s_ctrl()
242 setcontrol(gspca_dev, PAC207_EXPOSURE_REG, sd_s_ctrl()
243 gspca_dev->exposure->val); sd_s_ctrl()
244 if (gspca_dev->gain->is_new || (ctrl->is_new && ctrl->val)) sd_s_ctrl()
245 setcontrol(gspca_dev, PAC207_GAIN_REG, sd_s_ctrl()
246 gspca_dev->gain->val); sd_s_ctrl()
251 return gspca_dev->usb_err; sd_s_ctrl()
259 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
261 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
262 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
264 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
271 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
273 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
277 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
285 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); sd_init_controls()
290 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
292 struct sd *sd = (struct sd *) gspca_dev; sd_start()
295 pac207_write_reg(gspca_dev, 0x0f, 0x10); /* Power control (Bit 6-0) */ sd_start()
296 pac207_write_regs(gspca_dev, 0x0002, pac207_sensor_init[0], 8); sd_start()
297 pac207_write_regs(gspca_dev, 0x000a, pac207_sensor_init[1], 8); sd_start()
298 pac207_write_regs(gspca_dev, 0x0012, pac207_sensor_init[2], 8); sd_start()
299 pac207_write_regs(gspca_dev, 0x0042, pac207_sensor_init[3], 8); sd_start()
302 if (gspca_dev->pixfmt.width == 176) sd_start()
303 pac207_write_reg(gspca_dev, 0x4a, 0xff); sd_start()
305 pac207_write_reg(gspca_dev, 0x4a, 0x30); sd_start()
306 pac207_write_reg(gspca_dev, 0x4b, 0x00); /* Sram test value */ sd_start()
307 pac207_write_reg(gspca_dev, 0x08, v4l2_ctrl_g_ctrl(sd->brightness)); sd_start()
310 pac207_write_reg(gspca_dev, 0x0e, sd_start()
311 v4l2_ctrl_g_ctrl(gspca_dev->gain)); sd_start()
312 pac207_write_reg(gspca_dev, 0x02, sd_start()
313 v4l2_ctrl_g_ctrl(gspca_dev->exposure)); /* PXCK = 12MHz /n */ sd_start()
320 if (gspca_dev->pixfmt.width == 176) { /* 176x144 */ sd_start()
326 pac207_write_reg(gspca_dev, 0x41, mode); sd_start()
328 pac207_write_reg(gspca_dev, 0x13, 0x01); /* Bit 0, auto clear */ sd_start()
329 pac207_write_reg(gspca_dev, 0x1c, 0x01); /* not documented */ sd_start()
331 pac207_write_reg(gspca_dev, 0x40, 0x01); /* Start ISO pipe */ sd_start()
336 return gspca_dev->usb_err; sd_start()
339 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
348 pac207_write_reg(gspca_dev, 0x40, 0x00); /* Stop ISO pipe */ sd_stopN()
349 pac207_write_reg(gspca_dev, 0x41, mode); /* Turn off LED */ sd_stopN()
350 pac207_write_reg(gspca_dev, 0x0f, 0x00); /* Power Control */ sd_stopN()
354 static void pac207_do_auto_gain(struct gspca_dev *gspca_dev) pac207_do_auto_gain() argument
356 struct sd *sd = (struct sd *) gspca_dev; pac207_do_auto_gain()
364 else if (gspca_coarse_grained_expo_autogain(gspca_dev, avg_lum, pac207_do_auto_gain()
369 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
373 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
376 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len); sd_pkt_scan()
386 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
389 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); sd_pkt_scan()
413 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
417 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, sd_int_pkt_scan() argument
424 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); sd_int_pkt_scan()
425 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
426 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_int_pkt_scan()
427 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
H A Dspca500.c37 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
317 /* read 'len' bytes to gspca_dev->usb_buf */ reg_r()
318 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
322 usb_control_msg(gspca_dev->dev, reg_r()
323 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r()
327 index, gspca_dev->usb_buf, length, 500); reg_r()
330 static int reg_w(struct gspca_dev *gspca_dev, reg_w() argument
336 ret = usb_control_msg(gspca_dev->dev, reg_w()
337 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w()
347 static int reg_r_12(struct gspca_dev *gspca_dev, reg_r_12() argument
354 gspca_dev->usb_buf[1] = 0; reg_r_12()
355 ret = usb_control_msg(gspca_dev->dev, reg_r_12()
356 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r_12()
361 gspca_dev->usb_buf, length, reg_r_12()
367 return (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0]; reg_r_12()
375 static int reg_r_wait(struct gspca_dev *gspca_dev, reg_r_wait() argument
381 ret = reg_r_12(gspca_dev, reg, index, 1); reg_r_wait()
389 static int write_vector(struct gspca_dev *gspca_dev, write_vector() argument
395 ret = reg_w(gspca_dev, data[i][0], data[i][2], data[i][1]); write_vector()
403 static int spca50x_setup_qtable(struct gspca_dev *gspca_dev, spca50x_setup_qtable() argument
413 err = reg_w(gspca_dev, request, ybase + i, qtable[0][i]); spca50x_setup_qtable()
420 err = reg_w(gspca_dev, request, cbase + i, qtable[1][i]); spca50x_setup_qtable()
427 static void spca500_ping310(struct gspca_dev *gspca_dev) spca500_ping310() argument
429 reg_r(gspca_dev, 0x0d04, 2); spca500_ping310()
431 gspca_dev->usb_buf[0], gspca_dev->usb_buf[1]); spca500_ping310()
434 static void spca500_clksmart310_init(struct gspca_dev *gspca_dev) spca500_clksmart310_init() argument
436 reg_r(gspca_dev, 0x0d05, 2); spca500_clksmart310_init()
438 gspca_dev->usb_buf[0], gspca_dev->usb_buf[1]); spca500_clksmart310_init()
439 reg_w(gspca_dev, 0x00, 0x8167, 0x5a); spca500_clksmart310_init()
440 spca500_ping310(gspca_dev); spca500_clksmart310_init()
442 reg_w(gspca_dev, 0x00, 0x8168, 0x22); spca500_clksmart310_init()
443 reg_w(gspca_dev, 0x00, 0x816a, 0xc0); spca500_clksmart310_init()
444 reg_w(gspca_dev, 0x00, 0x816b, 0x0b); spca500_clksmart310_init()
445 reg_w(gspca_dev, 0x00, 0x8169, 0x25); spca500_clksmart310_init()
446 reg_w(gspca_dev, 0x00, 0x8157, 0x5b); spca500_clksmart310_init()
447 reg_w(gspca_dev, 0x00, 0x8158, 0x5b); spca500_clksmart310_init()
448 reg_w(gspca_dev, 0x00, 0x813f, 0x03); spca500_clksmart310_init()
449 reg_w(gspca_dev, 0x00, 0x8151, 0x4a); spca500_clksmart310_init()
450 reg_w(gspca_dev, 0x00, 0x8153, 0x78); spca500_clksmart310_init()
451 reg_w(gspca_dev, 0x00, 0x0d01, 0x04); spca500_clksmart310_init()
453 reg_w(gspca_dev, 0x00, 0x0d02, 0x01); spca500_clksmart310_init()
454 reg_w(gspca_dev, 0x00, 0x8169, 0x25); spca500_clksmart310_init()
455 reg_w(gspca_dev, 0x00, 0x0d01, 0x02); spca500_clksmart310_init()
458 static void spca500_setmode(struct gspca_dev *gspca_dev, spca500_setmode() argument
464 reg_w(gspca_dev, 0, 0x8001, xmult); spca500_setmode()
467 reg_w(gspca_dev, 0, 0x8002, ymult); spca500_setmode()
470 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; spca500_setmode()
471 reg_w(gspca_dev, 0, 0x8003, mode << 4); spca500_setmode()
474 static int spca500_full_reset(struct gspca_dev *gspca_dev) spca500_full_reset() argument
479 err = reg_w(gspca_dev, 0xe0, 0x0001, 0x0000); spca500_full_reset()
484 err = reg_r_wait(gspca_dev, 0x06, 0x0000, 0x0000); spca500_full_reset()
487 err = reg_w(gspca_dev, 0xe0, 0x0000, 0x0000); spca500_full_reset()
490 err = reg_r_wait(gspca_dev, 0x06, 0, 0); spca500_full_reset()
505 static int spca500_synch310(struct gspca_dev *gspca_dev) spca500_synch310() argument
507 if (usb_set_interface(gspca_dev->dev, gspca_dev->iface, 0) < 0) { spca500_synch310()
511 spca500_ping310(gspca_dev); spca500_synch310()
513 reg_r(gspca_dev, 0x0d00, 1); spca500_synch310()
516 PDEBUG(D_PACK, "ClickSmart310 sync alt: %d", gspca_dev->alt); spca500_synch310()
519 if (usb_set_interface(gspca_dev->dev, spca500_synch310()
520 gspca_dev->iface, spca500_synch310()
521 gspca_dev->alt) < 0) { spca500_synch310()
530 static void spca500_reinit(struct gspca_dev *gspca_dev) spca500_reinit() argument
537 reg_w(gspca_dev, 0x00, 0x0d01, 0x01); spca500_reinit()
538 reg_w(gspca_dev, 0x00, 0x0d03, 0x00); spca500_reinit()
539 reg_w(gspca_dev, 0x00, 0x0d02, 0x01); spca500_reinit()
542 reg_w(gspca_dev, 0x00, 0x850a, 0x0001); spca500_reinit()
544 err = spca50x_setup_qtable(gspca_dev, 0x00, 0x8800, 0x8840, spca500_reinit()
550 reg_w(gspca_dev, 0x00, 0x8880, 2); spca500_reinit()
552 reg_w(gspca_dev, 0x00, 0x800a, 0x00); spca500_reinit()
554 reg_w(gspca_dev, 0x00, 0x820f, 0x01); spca500_reinit()
556 reg_w(gspca_dev, 0x00, 0x870a, 0x04); spca500_reinit()
558 reg_w(gspca_dev, 0, 0x8003, 0x00); spca500_reinit()
560 reg_w(gspca_dev, 0x00, 0x8000, 0x0004); spca500_reinit()
562 if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0) { spca500_reinit()
563 reg_r(gspca_dev, 0x816b, 1); spca500_reinit()
564 Data = gspca_dev->usb_buf[0]; spca500_reinit()
565 reg_w(gspca_dev, 0x00, 0x816b, Data); spca500_reinit()
570 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
573 struct sd *sd = (struct sd *) gspca_dev; sd_config()
576 cam = &gspca_dev->cam; sd_config()
589 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
591 struct sd *sd = (struct sd *) gspca_dev; sd_init()
596 spca500_clksmart310_init(gspca_dev); sd_init()
598 spca500_initialise(gspca_dev); */ sd_init()
603 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
605 struct sd *sd = (struct sd *) gspca_dev; sd_start()
611 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, sd_start()
612 gspca_dev->pixfmt.width, sd_start()
625 reg_r(gspca_dev, 0x8a04, 1); sd_start()
627 gspca_dev->usb_buf[0]); sd_start()
629 gspca_dev->curr_mode, xmult, ymult); sd_start()
634 spca500_setmode(gspca_dev, xmult, ymult); sd_start()
637 reg_w(gspca_dev, 0x00, 0x850a, 0x0001); sd_start()
638 reg_w(gspca_dev, 0x00, 0x8880, 3); sd_start()
639 err = spca50x_setup_qtable(gspca_dev, sd_start()
645 reg_w(gspca_dev, 0x00, 0x870a, 0x04); sd_start()
648 reg_w(gspca_dev, 0x00, 0x8000, 0x0004); sd_start()
650 if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0) sd_start()
653 reg_r(gspca_dev, 0x816b, 1); sd_start()
654 Data = gspca_dev->usb_buf[0]; sd_start()
655 reg_w(gspca_dev, 0x00, 0x816b, Data); sd_start()
657 spca500_synch310(gspca_dev); sd_start()
659 write_vector(gspca_dev, spca500_visual_defaults); sd_start()
660 spca500_setmode(gspca_dev, xmult, ymult); sd_start()
662 err = reg_w(gspca_dev, 0x00, 0x850a, 0x0001); sd_start()
665 reg_w(gspca_dev, 0x00, 0x8880, 3); sd_start()
666 err = spca50x_setup_qtable(gspca_dev, sd_start()
673 reg_w(gspca_dev, 0x00, 0x870a, 0x04); sd_start()
676 reg_w(gspca_dev, 0x00, 0x8000, 0x0004); sd_start()
678 if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0) sd_start()
681 reg_r(gspca_dev, 0x816b, 1); sd_start()
682 Data = gspca_dev->usb_buf[0]; sd_start()
683 reg_w(gspca_dev, 0x00, 0x816b, Data); sd_start()
691 err = spca500_full_reset(gspca_dev); sd_start()
696 err = reg_w(gspca_dev, 0x00, 0x850a, 0x0001); sd_start()
699 reg_w(gspca_dev, 0x00, 0x8880, 3); sd_start()
700 err = spca50x_setup_qtable(gspca_dev, sd_start()
706 spca500_setmode(gspca_dev, xmult, ymult); sd_start()
707 reg_w(gspca_dev, 0x20, 0x0001, 0x0004); sd_start()
710 reg_w(gspca_dev, 0x00, 0x8000, 0x0004); sd_start()
712 if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0) sd_start()
715 reg_r(gspca_dev, 0x816b, 1); sd_start()
716 Data = gspca_dev->usb_buf[0]; sd_start()
717 reg_w(gspca_dev, 0x00, 0x816b, Data); sd_start()
719 /* write_vector(gspca_dev, spca500_visual_defaults); */ sd_start()
724 err = spca500_full_reset(gspca_dev); sd_start()
728 reg_w(gspca_dev, 0x00, 0x850a, 0x0001); sd_start()
729 reg_w(gspca_dev, 0x00, 0x8880, 0); sd_start()
730 err = spca50x_setup_qtable(gspca_dev, sd_start()
735 spca500_setmode(gspca_dev, xmult, ymult); sd_start()
737 reg_w(gspca_dev, 0x20, 0x0001, 0x0004); sd_start()
740 reg_w(gspca_dev, 0x00, 0x8000, 0x0004); sd_start()
742 if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0) sd_start()
745 reg_r(gspca_dev, 0x816b, 1); sd_start()
746 Data = gspca_dev->usb_buf[0]; sd_start()
747 reg_w(gspca_dev, 0x00, 0x816b, Data); sd_start()
749 /* write_vector(gspca_dev, spca500_visual_defaults); */ sd_start()
761 spca500_reinit(gspca_dev); sd_start()
762 reg_w(gspca_dev, 0x00, 0x0d01, 0x01); sd_start()
764 reg_w(gspca_dev, 0x00, 0x850a, 0x0001); sd_start()
766 err = spca50x_setup_qtable(gspca_dev, sd_start()
770 reg_w(gspca_dev, 0x00, 0x8880, 2); sd_start()
773 reg_w(gspca_dev, 0x00, 0x800a, 0x00); sd_start()
775 reg_w(gspca_dev, 0x00, 0x820f, 0x01); sd_start()
777 reg_w(gspca_dev, 0x00, 0x870a, 0x04); sd_start()
779 spca500_setmode(gspca_dev, xmult, ymult); sd_start()
781 reg_w(gspca_dev, 0x00, 0x8000, 0x0004); sd_start()
783 reg_r_wait(gspca_dev, 0, 0x8000, 0x44); sd_start()
785 reg_r(gspca_dev, 0x816b, 1); sd_start()
786 Data = gspca_dev->usb_buf[0]; sd_start()
787 reg_w(gspca_dev, 0x00, 0x816b, Data); sd_start()
791 reg_w(gspca_dev, 0x02, 0x00, 0x00); sd_start()
793 reg_w(gspca_dev, 0x00, 0x850a, 0x0001); sd_start()
795 err = spca50x_setup_qtable(gspca_dev, sd_start()
800 reg_w(gspca_dev, 0x00, 0x8880, 3); sd_start()
801 reg_w(gspca_dev, 0x00, 0x800a, 0x00); sd_start()
803 reg_w(gspca_dev, 0x00, 0x870a, 0x04); sd_start()
805 spca500_setmode(gspca_dev, xmult, ymult); sd_start()
808 reg_w(gspca_dev, 0x00, 0x8000, 0x0004); sd_start()
809 reg_r_wait(gspca_dev, 0, 0x8000, 0x44); sd_start()
811 reg_r(gspca_dev, 0x816b, 1); sd_start()
812 Data = gspca_dev->usb_buf[0]; sd_start()
813 reg_w(gspca_dev, 0x00, 0x816b, Data); sd_start()
814 write_vector(gspca_dev, Clicksmart510_defaults); sd_start()
820 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
822 reg_w(gspca_dev, 0, 0x8003, 0x00); sd_stopN()
825 reg_w(gspca_dev, 0x00, 0x8000, 0x0004); sd_stopN()
826 reg_r(gspca_dev, 0x8000, 1); sd_stopN()
828 gspca_dev->usb_buf[0]); sd_stopN()
831 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
835 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
842 /* gspca_dev->last_packet_type = DISCARD_PACKET; */ sd_pkt_scan()
845 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
849 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
863 gspca_frame_add(gspca_dev, INTER_PACKET, sd_pkt_scan()
872 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
875 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
877 reg_w(gspca_dev, 0x00, 0x8167, setbrightness()
881 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
883 reg_w(gspca_dev, 0x00, 0x8168, val); setcontrast()
886 static void setcolors(struct gspca_dev *gspca_dev, s32 val) setcolors() argument
888 reg_w(gspca_dev, 0x00, 0x8169, val); setcolors()
893 struct gspca_dev *gspca_dev = sd_s_ctrl() local
894 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
896 gspca_dev->usb_err = 0; sd_s_ctrl()
898 if (!gspca_dev->streaming) sd_s_ctrl()
903 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
906 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
909 setcolors(gspca_dev, ctrl->val); sd_s_ctrl()
912 return gspca_dev->usb_err; sd_s_ctrl()
919 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
921 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
923 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dcpia1.c365 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
409 static int cpia_usb_transferCmd(struct gspca_dev *gspca_dev, u8 *command) cpia_usb_transferCmd() argument
418 pipe = usb_rcvctrlpipe(gspca_dev->dev, 0); cpia_usb_transferCmd()
421 pipe = usb_sndctrlpipe(gspca_dev->dev, 0); cpia_usb_transferCmd()
429 ret = usb_control_msg(gspca_dev->dev, pipe, cpia_usb_transferCmd()
434 gspca_dev->usb_buf, databytes, 1000); cpia_usb_transferCmd()
448 static int do_command(struct gspca_dev *gspca_dev, u16 command, do_command() argument
451 struct sd *sd = (struct sd *) gspca_dev; do_command()
483 ret = cpia_usb_transferCmd(gspca_dev, cmd); do_command()
489 sd->params.version.firmwareVersion = gspca_dev->usb_buf[0]; do_command()
490 sd->params.version.firmwareRevision = gspca_dev->usb_buf[1]; do_command()
491 sd->params.version.vcVersion = gspca_dev->usb_buf[2]; do_command()
492 sd->params.version.vcRevision = gspca_dev->usb_buf[3]; do_command()
496 gspca_dev->usb_buf[0] | (gspca_dev->usb_buf[1] << 8); do_command()
498 gspca_dev->usb_buf[2] | (gspca_dev->usb_buf[3] << 8); do_command()
500 gspca_dev->usb_buf[4] | (gspca_dev->usb_buf[5] << 8); do_command()
503 sd->params.status.systemState = gspca_dev->usb_buf[0]; do_command()
504 sd->params.status.grabState = gspca_dev->usb_buf[1]; do_command()
505 sd->params.status.streamState = gspca_dev->usb_buf[2]; do_command()
506 sd->params.status.fatalError = gspca_dev->usb_buf[3]; do_command()
507 sd->params.status.cmdError = gspca_dev->usb_buf[4]; do_command()
508 sd->params.status.debugFlags = gspca_dev->usb_buf[5]; do_command()
509 sd->params.status.vpStatus = gspca_dev->usb_buf[6]; do_command()
510 sd->params.status.errorCode = gspca_dev->usb_buf[7]; do_command()
513 sd->params.vpVersion.vpVersion = gspca_dev->usb_buf[0]; do_command()
514 sd->params.vpVersion.vpRevision = gspca_dev->usb_buf[1]; do_command()
516 gspca_dev->usb_buf[2] | (gspca_dev->usb_buf[3] << 8); do_command()
519 sd->params.colourParams.brightness = gspca_dev->usb_buf[0]; do_command()
520 sd->params.colourParams.contrast = gspca_dev->usb_buf[1]; do_command()
521 sd->params.colourParams.saturation = gspca_dev->usb_buf[2]; do_command()
524 sd->params.colourBalance.redGain = gspca_dev->usb_buf[0]; do_command()
525 sd->params.colourBalance.greenGain = gspca_dev->usb_buf[1]; do_command()
526 sd->params.colourBalance.blueGain = gspca_dev->usb_buf[2]; do_command()
529 sd->params.exposure.gain = gspca_dev->usb_buf[0]; do_command()
530 sd->params.exposure.fineExp = gspca_dev->usb_buf[1]; do_command()
531 sd->params.exposure.coarseExpLo = gspca_dev->usb_buf[2]; do_command()
532 sd->params.exposure.coarseExpHi = gspca_dev->usb_buf[3]; do_command()
533 sd->params.exposure.redComp = gspca_dev->usb_buf[4]; do_command()
534 sd->params.exposure.green1Comp = gspca_dev->usb_buf[5]; do_command()
535 sd->params.exposure.green2Comp = gspca_dev->usb_buf[6]; do_command()
536 sd->params.exposure.blueComp = gspca_dev->usb_buf[7]; do_command()
541 a = ((gspca_dev->usb_buf[1] & 0x02) == 0); do_command()
544 input_report_key(gspca_dev->input_dev, KEY_CAMERA, a); do_command()
545 input_sync(gspca_dev->input_dev); do_command()
551 do_command(gspca_dev, CPIA_COMMAND_WriteMCPort, do_command()
553 do_command(gspca_dev, CPIA_COMMAND_WriteMCPort, do_command()
558 sd->params.qx3.cradled = ((gspca_dev->usb_buf[2] & 0x40) == 0); do_command()
566 static int do_command_extended(struct gspca_dev *gspca_dev, u16 command, do_command_extended() argument
581 gspca_dev->usb_buf[0] = e; do_command_extended()
582 gspca_dev->usb_buf[1] = f; do_command_extended()
583 gspca_dev->usb_buf[2] = g; do_command_extended()
584 gspca_dev->usb_buf[3] = h; do_command_extended()
585 gspca_dev->usb_buf[4] = i; do_command_extended()
586 gspca_dev->usb_buf[5] = j; do_command_extended()
587 gspca_dev->usb_buf[6] = k; do_command_extended()
588 gspca_dev->usb_buf[7] = l; do_command_extended()
590 return cpia_usb_transferCmd(gspca_dev, cmd); do_command_extended()
624 static void reset_camera_params(struct gspca_dev *gspca_dev) reset_camera_params() argument
626 struct sd *sd = (struct sd *) gspca_dev; reset_camera_params()
703 static void printstatus(struct gspca_dev *gspca_dev, struct cam_params *params) printstatus() argument
712 static int goto_low_power(struct gspca_dev *gspca_dev) goto_low_power() argument
714 struct sd *sd = (struct sd *) gspca_dev; goto_low_power()
717 ret = do_command(gspca_dev, CPIA_COMMAND_GotoLoPower, 0, 0, 0, 0); goto_low_power()
721 ret = do_command(gspca_dev, CPIA_COMMAND_GetCameraStatus, 0, 0, 0, 0); goto_low_power()
729 printstatus(gspca_dev, &sd->params); goto_low_power()
738 static int goto_high_power(struct gspca_dev *gspca_dev) goto_high_power() argument
740 struct sd *sd = (struct sd *) gspca_dev; goto_high_power()
743 ret = do_command(gspca_dev, CPIA_COMMAND_GotoHiPower, 0, 0, 0, 0); goto_high_power()
752 ret = do_command(gspca_dev, CPIA_COMMAND_GetCameraStatus, 0, 0, 0, 0); goto_high_power()
759 printstatus(gspca_dev, &sd->params); goto_high_power()
767 static int get_version_information(struct gspca_dev *gspca_dev) get_version_information() argument
772 ret = do_command(gspca_dev, CPIA_COMMAND_GetCPIAVersion, 0, 0, 0, 0); get_version_information()
777 return do_command(gspca_dev, CPIA_COMMAND_GetPnPID, 0, 0, 0, 0); get_version_information()
780 static int save_camera_state(struct gspca_dev *gspca_dev) save_camera_state() argument
784 ret = do_command(gspca_dev, CPIA_COMMAND_GetColourBalance, 0, 0, 0, 0); save_camera_state()
788 return do_command(gspca_dev, CPIA_COMMAND_GetExposure, 0, 0, 0, 0); save_camera_state()
791 static int command_setformat(struct gspca_dev *gspca_dev) command_setformat() argument
793 struct sd *sd = (struct sd *) gspca_dev; command_setformat()
796 ret = do_command(gspca_dev, CPIA_COMMAND_SetFormat, command_setformat()
803 return do_command(gspca_dev, CPIA_COMMAND_SetROI, command_setformat()
808 static int command_setcolourparams(struct gspca_dev *gspca_dev) command_setcolourparams() argument
810 struct sd *sd = (struct sd *) gspca_dev; command_setcolourparams()
811 return do_command(gspca_dev, CPIA_COMMAND_SetColourParams, command_setcolourparams()
817 static int command_setapcor(struct gspca_dev *gspca_dev) command_setapcor() argument
819 struct sd *sd = (struct sd *) gspca_dev; command_setapcor()
820 return do_command(gspca_dev, CPIA_COMMAND_SetApcor, command_setapcor()
827 static int command_setvloffset(struct gspca_dev *gspca_dev) command_setvloffset() argument
829 struct sd *sd = (struct sd *) gspca_dev; command_setvloffset()
830 return do_command(gspca_dev, CPIA_COMMAND_SetVLOffset, command_setvloffset()
837 static int command_setexposure(struct gspca_dev *gspca_dev) command_setexposure() argument
839 struct sd *sd = (struct sd *) gspca_dev; command_setexposure()
842 ret = do_command_extended(gspca_dev, CPIA_COMMAND_SetExposure, command_setexposure()
859 ret = do_command_extended(gspca_dev, CPIA_COMMAND_SetExposure, command_setexposure()
873 static int command_setcolourbalance(struct gspca_dev *gspca_dev) command_setcolourbalance() argument
875 struct sd *sd = (struct sd *) gspca_dev; command_setcolourbalance()
880 ret = do_command(gspca_dev, CPIA_COMMAND_SetColourBalance, command_setcolourbalance()
888 return do_command(gspca_dev, CPIA_COMMAND_SetColourBalance, command_setcolourbalance()
892 return do_command(gspca_dev, CPIA_COMMAND_SetColourBalance, command_setcolourbalance()
896 return do_command(gspca_dev, CPIA_COMMAND_SetColourBalance, command_setcolourbalance()
903 static int command_setcompressiontarget(struct gspca_dev *gspca_dev) command_setcompressiontarget() argument
905 struct sd *sd = (struct sd *) gspca_dev; command_setcompressiontarget()
907 return do_command(gspca_dev, CPIA_COMMAND_SetCompressionTarget, command_setcompressiontarget()
913 static int command_setyuvtresh(struct gspca_dev *gspca_dev) command_setyuvtresh() argument
915 struct sd *sd = (struct sd *) gspca_dev; command_setyuvtresh()
917 return do_command(gspca_dev, CPIA_COMMAND_SetYUVThresh, command_setyuvtresh()
922 static int command_setcompressionparams(struct gspca_dev *gspca_dev) command_setcompressionparams() argument
924 struct sd *sd = (struct sd *) gspca_dev; command_setcompressionparams()
926 return do_command_extended(gspca_dev, command_setcompressionparams()
939 static int command_setcompression(struct gspca_dev *gspca_dev) command_setcompression() argument
941 struct sd *sd = (struct sd *) gspca_dev; command_setcompression()
943 return do_command(gspca_dev, CPIA_COMMAND_SetCompression, command_setcompression()
948 static int command_setsensorfps(struct gspca_dev *gspca_dev) command_setsensorfps() argument
950 struct sd *sd = (struct sd *) gspca_dev; command_setsensorfps()
952 return do_command(gspca_dev, CPIA_COMMAND_SetSensorFPS, command_setsensorfps()
957 static int command_setflickerctrl(struct gspca_dev *gspca_dev) command_setflickerctrl() argument
959 struct sd *sd = (struct sd *) gspca_dev; command_setflickerctrl()
961 return do_command(gspca_dev, CPIA_COMMAND_SetFlickerCtrl, command_setflickerctrl()
968 static int command_setecptiming(struct gspca_dev *gspca_dev) command_setecptiming() argument
970 struct sd *sd = (struct sd *) gspca_dev; command_setecptiming()
972 return do_command(gspca_dev, CPIA_COMMAND_SetECPTiming, command_setecptiming()
976 static int command_pause(struct gspca_dev *gspca_dev) command_pause() argument
978 return do_command(gspca_dev, CPIA_COMMAND_EndStreamCap, 0, 0, 0, 0); command_pause()
981 static int command_resume(struct gspca_dev *gspca_dev) command_resume() argument
983 struct sd *sd = (struct sd *) gspca_dev; command_resume()
985 return do_command(gspca_dev, CPIA_COMMAND_InitStreamCap, command_resume()
989 static int command_setlights(struct gspca_dev *gspca_dev) command_setlights() argument
991 struct sd *sd = (struct sd *) gspca_dev; command_setlights()
997 ret = do_command(gspca_dev, CPIA_COMMAND_WriteVCReg, command_setlights()
1002 return do_command(gspca_dev, CPIA_COMMAND_WriteMCPort, 2, 0, command_setlights()
1006 static int set_flicker(struct gspca_dev *gspca_dev, int on, int apply) set_flicker() argument
1024 struct sd *sd = (struct sd *) gspca_dev; set_flicker()
1118 ret = command_setexposure(gspca_dev); set_flicker()
1122 ret = command_setapcor(gspca_dev); set_flicker()
1126 ret = command_setvloffset(gspca_dev); set_flicker()
1130 ret = command_setflickerctrl(gspca_dev); set_flicker()
1141 static void monitor_exposure(struct gspca_dev *gspca_dev) monitor_exposure() argument
1143 struct sd *sd = (struct sd *) gspca_dev; monitor_exposure()
1159 ret = cpia_usb_transferCmd(gspca_dev, cmd); monitor_exposure()
1164 exp_acc = gspca_dev->usb_buf[0]; monitor_exposure()
1165 bcomp = gspca_dev->usb_buf[1]; monitor_exposure()
1375 command_setexposure(gspca_dev); monitor_exposure()
1378 command_setsensorfps(gspca_dev); monitor_exposure()
1381 command_setflickerctrl(gspca_dev); monitor_exposure()
1392 static void restart_flicker(struct gspca_dev *gspca_dev) restart_flicker() argument
1394 struct sd *sd = (struct sd *) gspca_dev; restart_flicker()
1424 set_flicker(gspca_dev, 1, 1); restart_flicker()
1429 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
1432 struct sd *sd = (struct sd *) gspca_dev; sd_config()
1436 reset_camera_params(gspca_dev); sd_config()
1441 cam = &gspca_dev->cam; sd_config()
1445 goto_low_power(gspca_dev); sd_config()
1448 get_version_information(gspca_dev); sd_config()
1468 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
1470 struct sd *sd = (struct sd *) gspca_dev; sd_start()
1474 if (goto_low_power(gspca_dev)) { sd_start()
1478 printstatus(gspca_dev, &sd->params); sd_start()
1483 ret = goto_high_power(gspca_dev); sd_start()
1487 ret = do_command(gspca_dev, CPIA_COMMAND_DiscardFrame, sd_start()
1492 ret = goto_low_power(gspca_dev); sd_start()
1501 get_version_information(gspca_dev); sd_start()
1508 ret = do_command(gspca_dev, CPIA_COMMAND_ModifyCameraStatus, sd_start()
1514 ret = goto_high_power(gspca_dev); sd_start()
1519 ret = do_command(gspca_dev, CPIA_COMMAND_GetCameraStatus, 0, 0, 0, 0); sd_start()
1531 ret = do_command(gspca_dev, CPIA_COMMAND_GetVPVersion, 0, 0, 0, 0); sd_start()
1538 priv = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_start()
1556 (gspca_dev->pixfmt.width >> 3); sd_start()
1558 (gspca_dev->pixfmt.height >> 2); sd_start()
1561 ret = do_command(gspca_dev, CPIA_COMMAND_SetGrabMode, sd_start()
1567 ret = do_command(gspca_dev, CPIA_COMMAND_SetCompression, sd_start()
1572 ret = command_setcompressiontarget(gspca_dev); sd_start()
1575 ret = command_setcolourparams(gspca_dev); sd_start()
1578 ret = command_setformat(gspca_dev); sd_start()
1581 ret = command_setyuvtresh(gspca_dev); sd_start()
1584 ret = command_setecptiming(gspca_dev); sd_start()
1587 ret = command_setcompressionparams(gspca_dev); sd_start()
1590 ret = command_setexposure(gspca_dev); sd_start()
1593 ret = command_setcolourbalance(gspca_dev); sd_start()
1596 ret = command_setsensorfps(gspca_dev); sd_start()
1599 ret = command_setapcor(gspca_dev); sd_start()
1602 ret = command_setflickerctrl(gspca_dev); sd_start()
1605 ret = command_setvloffset(gspca_dev); sd_start()
1610 ret = command_resume(gspca_dev); sd_start()
1625 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
1627 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
1629 command_pause(gspca_dev); sd_stopN()
1632 save_camera_state(gspca_dev); sd_stopN()
1635 goto_low_power(gspca_dev); sd_stopN()
1638 do_command(gspca_dev, CPIA_COMMAND_GetCameraStatus, 0, 0, 0, 0); sd_stopN()
1646 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_stopN()
1647 input_sync(gspca_dev->input_dev); sd_stopN()
1653 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
1655 struct sd *sd = (struct sd *) gspca_dev; sd_init()
1661 ret = sd_start(gspca_dev); sd_init()
1668 command_setlights(gspca_dev); sd_init()
1670 sd_stopN(gspca_dev); sd_init()
1688 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
1692 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
1710 image = gspca_dev->image; sd_pkt_scan()
1712 gspca_dev->image_len > 4 && sd_pkt_scan()
1713 image[gspca_dev->image_len - 4] == 0xff && sd_pkt_scan()
1714 image[gspca_dev->image_len - 3] == 0xff && sd_pkt_scan()
1715 image[gspca_dev->image_len - 2] == 0xff && sd_pkt_scan()
1716 image[gspca_dev->image_len - 1] == 0xff) sd_pkt_scan()
1717 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
1720 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
1724 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
1727 static void sd_dq_callback(struct gspca_dev *gspca_dev) sd_dq_callback() argument
1729 struct sd *sd = (struct sd *) gspca_dev; sd_dq_callback()
1736 command_setcompression(gspca_dev); sd_dq_callback()
1740 restart_flicker(gspca_dev); sd_dq_callback()
1745 monitor_exposure(gspca_dev); sd_dq_callback()
1748 do_command(gspca_dev, CPIA_COMMAND_GetExposure, 0, 0, 0, 0); sd_dq_callback()
1749 do_command(gspca_dev, CPIA_COMMAND_ReadMCPorts, 0, 0, 0, 0); sd_dq_callback()
1754 struct gspca_dev *gspca_dev = sd_s_ctrl() local
1755 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
1756 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
1758 gspca_dev->usb_err = 0; sd_s_ctrl()
1760 if (!gspca_dev->streaming && ctrl->id != V4L2_CID_POWER_LINE_FREQUENCY) sd_s_ctrl()
1768 gspca_dev->usb_err = command_setcolourparams(gspca_dev); sd_s_ctrl()
1769 if (!gspca_dev->usb_err) sd_s_ctrl()
1770 gspca_dev->usb_err = command_setflickerctrl(gspca_dev); sd_s_ctrl()
1774 gspca_dev->usb_err = command_setcolourparams(gspca_dev); sd_s_ctrl()
1778 gspca_dev->usb_err = command_setcolourparams(gspca_dev); sd_s_ctrl()
1787 gspca_dev->usb_err = set_flicker(gspca_dev, sd_s_ctrl()
1789 gspca_dev->streaming); sd_s_ctrl()
1793 gspca_dev->usb_err = command_setlights(gspca_dev); sd_s_ctrl()
1797 gspca_dev->usb_err = command_setlights(gspca_dev); sd_s_ctrl()
1801 gspca_dev->usb_err = command_setcompressiontarget(gspca_dev); sd_s_ctrl()
1804 return gspca_dev->usb_err; sd_s_ctrl()
1811 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
1813 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
1814 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
1830 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dconex.c38 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
69 /* the read bytes are found in gspca_dev->usb_buf */ reg_r()
70 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
74 struct usb_device *dev = gspca_dev->dev; reg_r()
86 index, gspca_dev->usb_buf, len, reg_r()
89 index, gspca_dev->usb_buf[0]); reg_r()
92 /* the bytes to write are in gspca_dev->usb_buf */ reg_w_val()
93 static void reg_w_val(struct gspca_dev *gspca_dev, reg_w_val() argument
97 struct usb_device *dev = gspca_dev->dev; reg_w_val()
99 gspca_dev->usb_buf[0] = val; reg_w_val()
105 index, gspca_dev->usb_buf, 1, 500); reg_w_val()
108 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
113 struct usb_device *dev = gspca_dev->dev; reg_w()
121 memcpy(gspca_dev->usb_buf, buffer, len); reg_w()
127 index, gspca_dev->usb_buf, len, 500); reg_w()
205 static void cx11646_fw(struct gspca_dev*gspca_dev) cx11646_fw() argument
209 reg_w_val(gspca_dev, 0x006a, 0x02); cx11646_fw()
211 reg_w(gspca_dev, 0x006b, cx11646_fw1[i], 3); cx11646_fw()
214 reg_w_val(gspca_dev, 0x006a, 0x00); cx11646_fw()
243 static void cx_sensor(struct gspca_dev*gspca_dev) cx_sensor() argument
249 reg_w(gspca_dev, 0x0020, reg20, 8); cx_sensor()
250 reg_w(gspca_dev, 0x0028, reg28, 8); cx_sensor()
251 reg_w(gspca_dev, 0x0010, reg10, 2); cx_sensor()
252 reg_w_val(gspca_dev, 0x0092, 0x03); cx_sensor()
254 switch (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) { cx_sensor()
256 reg_w(gspca_dev, 0x0071, reg71a, 4); cx_sensor()
259 reg_w(gspca_dev, 0x0071, reg71b, 4); cx_sensor()
263 reg_w(gspca_dev, 0x0071, reg71c, 4); cx_sensor()
266 reg_w(gspca_dev, 0x0071, reg71d, 4); cx_sensor()
269 reg_w(gspca_dev, 0x007b, reg7b, 6); cx_sensor()
270 reg_w_val(gspca_dev, 0x00f8, 0x00); cx_sensor()
271 reg_w(gspca_dev, 0x0010, reg10, 2); cx_sensor()
272 reg_w_val(gspca_dev, 0x0098, 0x41); cx_sensor()
278 reg_w(gspca_dev, 0x00e5, ptsensor, length); cx_sensor()
280 reg_r(gspca_dev, 0x00e8, 1); cx_sensor()
282 reg_r(gspca_dev, 0x00e8, length); cx_sensor()
285 reg_r(gspca_dev, 0x00e7, 8); cx_sensor()
325 static void cx11646_initsize(struct gspca_dev *gspca_dev) cx11646_initsize() argument
332 switch (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) { cx11646_initsize()
347 reg_w_val(gspca_dev, 0x009a, 0x01); cx11646_initsize()
348 reg_w_val(gspca_dev, 0x0010, 0x10); cx11646_initsize()
349 reg_w(gspca_dev, 0x0012, reg12, 5); cx11646_initsize()
350 reg_w(gspca_dev, 0x0017, reg17, 8); cx11646_initsize()
351 reg_w_val(gspca_dev, 0x00c0, 0x00); cx11646_initsize()
352 reg_w_val(gspca_dev, 0x00c1, 0x04); cx11646_initsize()
353 reg_w_val(gspca_dev, 0x00c2, 0x04); cx11646_initsize()
355 reg_w(gspca_dev, 0x0061, cxinit, 8); cx11646_initsize()
357 reg_w(gspca_dev, 0x00ca, cxinit, 8); cx11646_initsize()
359 reg_w(gspca_dev, 0x00d2, cxinit, 8); cx11646_initsize()
361 reg_w(gspca_dev, 0x00da, cxinit, 6); cx11646_initsize()
363 reg_w(gspca_dev, 0x0041, cxinit, 8); cx11646_initsize()
365 reg_w(gspca_dev, 0x0049, cxinit, 8); cx11646_initsize()
367 reg_w(gspca_dev, 0x0051, cxinit, 2); cx11646_initsize()
369 reg_r(gspca_dev, 0x0010, 1); cx11646_initsize()
594 static void cx11646_jpegInit(struct gspca_dev*gspca_dev) cx11646_jpegInit() argument
599 reg_w_val(gspca_dev, 0x00c0, 0x01); cx11646_jpegInit()
600 reg_w_val(gspca_dev, 0x00c3, 0x00); cx11646_jpegInit()
601 reg_w_val(gspca_dev, 0x00c0, 0x00); cx11646_jpegInit()
602 reg_r(gspca_dev, 0x0001, 1); cx11646_jpegInit()
607 reg_w(gspca_dev, 0x0008, cx_jpeg_init[i], length); cx11646_jpegInit()
609 reg_r(gspca_dev, 0x0002, 1); cx11646_jpegInit()
610 reg_w_val(gspca_dev, 0x0055, 0x14); cx11646_jpegInit()
622 static void cx11646_jpeg(struct gspca_dev*gspca_dev) cx11646_jpeg() argument
629 reg_w_val(gspca_dev, 0x00c0, 0x01); cx11646_jpeg()
630 reg_w_val(gspca_dev, 0x00c3, 0x00); cx11646_jpeg()
631 reg_w_val(gspca_dev, 0x00c0, 0x00); cx11646_jpeg()
632 reg_r(gspca_dev, 0x0001, 1); cx11646_jpeg()
634 switch (gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv) { cx11646_jpeg()
639 reg_w(gspca_dev, 0x0008, cxjpeg_640[i], length); cx11646_jpeg()
647 reg_w(gspca_dev, 0x0008, cxjpeg_352[i], length); cx11646_jpeg()
656 reg_w(gspca_dev, 0x0008, cxjpeg_320[i], length); cx11646_jpeg()
664 reg_w(gspca_dev, 0x0008, cxjpeg_176[i], length); cx11646_jpeg()
670 reg_r(gspca_dev, 0x0002, 1); cx11646_jpeg()
671 reg_w_val(gspca_dev, 0x0055, Reg55); cx11646_jpeg()
672 reg_r(gspca_dev, 0x0002, 1); cx11646_jpeg()
673 reg_w(gspca_dev, 0x0010, reg10, 2); cx11646_jpeg()
674 reg_w_val(gspca_dev, 0x0054, 0x02); cx11646_jpeg()
675 reg_w_val(gspca_dev, 0x0054, 0x01); cx11646_jpeg()
676 reg_w_val(gspca_dev, 0x0000, 0x94); cx11646_jpeg()
677 reg_w_val(gspca_dev, 0x0053, 0xc0); cx11646_jpeg()
678 reg_w_val(gspca_dev, 0x00fc, 0xe1); cx11646_jpeg()
679 reg_w_val(gspca_dev, 0x0000, 0x00); cx11646_jpeg()
683 reg_r(gspca_dev, 0x0002, 1); cx11646_jpeg()
685 if (gspca_dev->usb_buf[0] == 0x00) cx11646_jpeg()
687 reg_w_val(gspca_dev, 0x0053, 0x00); cx11646_jpeg()
692 reg_r(gspca_dev, 0x0001, 1); /* -> 0x18 */ cx11646_jpeg()
697 reg_w(gspca_dev, 0x0008, cxjpeg_qtable[i], length); cx11646_jpeg()
700 reg_r(gspca_dev, 0x0002, 1); /* 0x00 */ cx11646_jpeg()
701 reg_r(gspca_dev, 0x0053, 1); /* 0x00 */ cx11646_jpeg()
702 reg_w_val(gspca_dev, 0x0054, 0x02); cx11646_jpeg()
703 reg_w_val(gspca_dev, 0x0054, 0x01); cx11646_jpeg()
704 reg_w_val(gspca_dev, 0x0000, 0x94); cx11646_jpeg()
705 reg_w_val(gspca_dev, 0x0053, 0xc0); cx11646_jpeg()
707 reg_r(gspca_dev, 0x0038, 1); /* 0x40 */ cx11646_jpeg()
708 reg_r(gspca_dev, 0x0038, 1); /* 0x40 */ cx11646_jpeg()
709 reg_r(gspca_dev, 0x001f, 1); /* 0x38 */ cx11646_jpeg()
710 reg_w(gspca_dev, 0x0012, reg12, 5); cx11646_jpeg()
711 reg_w(gspca_dev, 0x00e5, regE5_8, 8); cx11646_jpeg()
712 reg_r(gspca_dev, 0x00e8, 8); cx11646_jpeg()
713 reg_w(gspca_dev, 0x00e5, regE5a, 4); cx11646_jpeg()
714 reg_r(gspca_dev, 0x00e8, 1); /* 0x00 */ cx11646_jpeg()
715 reg_w_val(gspca_dev, 0x009a, 0x01); cx11646_jpeg()
716 reg_w(gspca_dev, 0x00e5, regE5b, 4); cx11646_jpeg()
717 reg_r(gspca_dev, 0x00e8, 1); /* 0x00 */ cx11646_jpeg()
718 reg_w(gspca_dev, 0x00e5, regE5c, 4); cx11646_jpeg()
719 reg_r(gspca_dev, 0x00e8, 1); /* 0x00 */ cx11646_jpeg()
721 reg_w(gspca_dev, 0x0051, reg51, 2); cx11646_jpeg()
722 reg_w(gspca_dev, 0x0010, reg10, 2); cx11646_jpeg()
723 reg_w_val(gspca_dev, 0x0070, reg70); cx11646_jpeg()
726 static void cx11646_init1(struct gspca_dev *gspca_dev) cx11646_init1() argument
730 reg_w_val(gspca_dev, 0x0010, 0x00); cx11646_init1()
731 reg_w_val(gspca_dev, 0x0053, 0x00); cx11646_init1()
732 reg_w_val(gspca_dev, 0x0052, 0x00); cx11646_init1()
733 reg_w_val(gspca_dev, 0x009b, 0x2f); cx11646_init1()
734 reg_w_val(gspca_dev, 0x009c, 0x10); cx11646_init1()
735 reg_r(gspca_dev, 0x0098, 1); cx11646_init1()
736 reg_w_val(gspca_dev, 0x0098, 0x40); cx11646_init1()
737 reg_r(gspca_dev, 0x0099, 1); cx11646_init1()
738 reg_w_val(gspca_dev, 0x0099, 0x07); cx11646_init1()
739 reg_w_val(gspca_dev, 0x0039, 0x40); cx11646_init1()
740 reg_w_val(gspca_dev, 0x003c, 0xff); cx11646_init1()
741 reg_w_val(gspca_dev, 0x003f, 0x1f); cx11646_init1()
742 reg_w_val(gspca_dev, 0x003d, 0x40); cx11646_init1()
743 /* reg_w_val(gspca_dev, 0x003d, 0x60); */ cx11646_init1()
744 reg_r(gspca_dev, 0x0099, 1); /* ->0x07 */ cx11646_init1()
747 reg_w_val(gspca_dev, 0x00e5, cx_sensor_init[i][0]); cx11646_init1()
748 reg_r(gspca_dev, 0x00e8, 1); /* -> 0x00 */ cx11646_init1()
750 reg_w_val(gspca_dev, 0x00ed, 0x01); cx11646_init1()
751 reg_r(gspca_dev, 0x00ed, 1); /* -> 0x01 */ cx11646_init1()
755 reg_w_val(gspca_dev, 0x00c3, 0x00); cx11646_init1()
759 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
764 cam = &gspca_dev->cam; sd_config()
771 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
773 cx11646_init1(gspca_dev); sd_init()
774 cx11646_initsize(gspca_dev); sd_init()
775 cx11646_fw(gspca_dev); sd_init()
776 cx_sensor(gspca_dev); sd_init()
777 cx11646_jpegInit(gspca_dev); sd_init()
781 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
783 struct sd *sd = (struct sd *) gspca_dev; sd_start()
786 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, sd_start()
787 gspca_dev->pixfmt.width, sd_start()
791 cx11646_initsize(gspca_dev); sd_start()
792 cx11646_fw(gspca_dev); sd_start()
793 cx_sensor(gspca_dev); sd_start()
794 cx11646_jpeg(gspca_dev); sd_start()
799 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
803 if (!gspca_dev->present) sd_stop0()
805 reg_w_val(gspca_dev, 0x0000, 0x00); sd_stop0()
806 reg_r(gspca_dev, 0x0002, 1); sd_stop0()
807 reg_w_val(gspca_dev, 0x0053, 0x00); sd_stop0()
810 /* reg_r(gspca_dev, 0x0002, 1);*/ sd_stop0()
811 reg_r(gspca_dev, 0x0053, 1); sd_stop0()
812 if (gspca_dev->usb_buf[0] == 0) sd_stop0()
815 reg_w_val(gspca_dev, 0x0000, 0x00); sd_stop0()
816 reg_r(gspca_dev, 0x0002, 1); sd_stop0()
818 reg_w_val(gspca_dev, 0x0010, 0x00); sd_stop0()
819 reg_r(gspca_dev, 0x0033, 1); sd_stop0()
820 reg_w_val(gspca_dev, 0x00fc, 0xe0); sd_stop0()
823 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
827 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
832 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
835 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
840 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
843 static void setbrightness(struct gspca_dev *gspca_dev, s32 val, s32 sat) setbrightness() argument
849 reg_w(gspca_dev, 0x00e5, regE5cbx, 8); setbrightness()
850 reg_r(gspca_dev, 0x00e8, 8); setbrightness()
851 reg_w(gspca_dev, 0x00e5, regE5c, 4); setbrightness()
852 reg_r(gspca_dev, 0x00e8, 1); /* 0x00 */ setbrightness()
856 reg_w(gspca_dev, 0x0051, reg51c, 2); setbrightness()
857 reg_w(gspca_dev, 0x0010, reg10, 2); setbrightness()
858 reg_w_val(gspca_dev, 0x0070, reg70); setbrightness()
861 static void setcontrast(struct gspca_dev *gspca_dev, s32 val, s32 sat) setcontrast() argument
868 reg_w(gspca_dev, 0x00e5, regE5acx, 4); setcontrast()
869 reg_r(gspca_dev, 0x00e8, 1); /* 0x00 */ setcontrast()
872 reg_w(gspca_dev, 0x0051, reg51c, 2); setcontrast()
873 reg_w(gspca_dev, 0x0010, reg10, 2); setcontrast()
874 reg_w_val(gspca_dev, 0x0070, reg70); setcontrast()
879 struct gspca_dev *gspca_dev = sd_s_ctrl() local
880 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
881 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
883 gspca_dev->usb_err = 0; sd_s_ctrl()
885 if (!gspca_dev->streaming) sd_s_ctrl()
890 setbrightness(gspca_dev, ctrl->val, sd->sat->cur.val); sd_s_ctrl()
893 setcontrast(gspca_dev, ctrl->val, sd->sat->cur.val); sd_s_ctrl()
896 setbrightness(gspca_dev, sd->brightness->cur.val, ctrl->val); sd_s_ctrl()
897 setcontrast(gspca_dev, sd->contrast->cur.val, ctrl->val); sd_s_ctrl()
900 return gspca_dev->usb_err; sd_s_ctrl()
907 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
909 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
910 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
912 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Djl2005bcd.c43 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
88 static int jl2005c_write2(struct gspca_dev *gspca_dev, unsigned char *command) jl2005c_write2() argument
92 memcpy(gspca_dev->usb_buf, command, 2); jl2005c_write2()
93 retval = usb_bulk_msg(gspca_dev->dev, jl2005c_write2()
94 usb_sndbulkpipe(gspca_dev->dev, 3), jl2005c_write2()
95 gspca_dev->usb_buf, 2, NULL, 500); jl2005c_write2()
98 gspca_dev->usb_buf[0], retval); jl2005c_write2()
103 static int jl2005c_read1(struct gspca_dev *gspca_dev) jl2005c_read1() argument
107 retval = usb_bulk_msg(gspca_dev->dev, jl2005c_read1()
108 usb_rcvbulkpipe(gspca_dev->dev, 0x84), jl2005c_read1()
109 gspca_dev->usb_buf, 1, NULL, 500); jl2005c_read1()
112 gspca_dev->usb_buf[0], retval); jl2005c_read1()
116 /* Response appears in gspca_dev->usb_buf[0] */ jl2005c_read_reg()
117 static int jl2005c_read_reg(struct gspca_dev *gspca_dev, unsigned char reg) jl2005c_read_reg() argument
125 retval = jl2005c_write2(gspca_dev, instruction); jl2005c_read_reg()
128 retval = jl2005c_read1(gspca_dev); jl2005c_read_reg()
133 static int jl2005c_start_new_frame(struct gspca_dev *gspca_dev) jl2005c_start_new_frame() argument
141 retval = jl2005c_write2(gspca_dev, instruction); jl2005c_start_new_frame()
148 retval = jl2005c_read_reg(gspca_dev, 0x7e); jl2005c_start_new_frame()
151 frame_brightness = gspca_dev->usb_buf[0]; jl2005c_start_new_frame()
152 retval = jl2005c_read_reg(gspca_dev, 0x7d); jl2005c_start_new_frame()
157 PDEBUG(D_FRAM, "frame_brightness is 0x%02x", gspca_dev->usb_buf[0]); jl2005c_start_new_frame()
161 static int jl2005c_write_reg(struct gspca_dev *gspca_dev, unsigned char reg, jl2005c_write_reg() argument
170 retval = jl2005c_write2(gspca_dev, instruction); jl2005c_write_reg()
177 static int jl2005c_get_firmware_id(struct gspca_dev *gspca_dev) jl2005c_get_firmware_id() argument
179 struct sd *sd = (struct sd *)gspca_dev; jl2005c_get_firmware_id()
186 retval = jl2005c_read_reg(gspca_dev, regs_to_read[0]); jl2005c_get_firmware_id()
187 PDEBUG(D_PROBE, "response is %02x", gspca_dev->usb_buf[0]); jl2005c_get_firmware_id()
192 retval = jl2005c_read_reg(gspca_dev, regs_to_read[i]); jl2005c_get_firmware_id()
195 sd->firmware_id[i] = gspca_dev->usb_buf[0]; jl2005c_get_firmware_id()
208 (struct gspca_dev *gspca_dev) jl2005c_stream_start_vga_lg()
223 retval = jl2005c_write2(gspca_dev, instruction[i]); jl2005c_stream_start_vga_lg()
231 static int jl2005c_stream_start_vga_small(struct gspca_dev *gspca_dev) jl2005c_stream_start_vga_small() argument
246 retval = jl2005c_write2(gspca_dev, instruction[i]); jl2005c_stream_start_vga_small()
254 static int jl2005c_stream_start_cif_lg(struct gspca_dev *gspca_dev) jl2005c_stream_start_cif_lg() argument
269 retval = jl2005c_write2(gspca_dev, instruction[i]); jl2005c_stream_start_cif_lg()
277 static int jl2005c_stream_start_cif_small(struct gspca_dev *gspca_dev) jl2005c_stream_start_cif_small() argument
292 retval = jl2005c_write2(gspca_dev, instruction[i]); jl2005c_stream_start_cif_small()
301 static int jl2005c_stop(struct gspca_dev *gspca_dev) jl2005c_stop() argument
305 retval = jl2005c_write_reg(gspca_dev, 0x07, 0x00); jl2005c_stop()
313 * threads attempting to use gspca_dev->usb_buf we take the usb_lock when
320 struct gspca_dev *gspca_dev = &dev->gspca_dev; jl2005c_dostream() local
336 while (gspca_dev->present && gspca_dev->streaming) { jl2005c_dostream()
338 if (gspca_dev->frozen) jl2005c_dostream()
343 mutex_lock(&gspca_dev->usb_lock); jl2005c_dostream()
344 ret = jl2005c_start_new_frame(gspca_dev); jl2005c_dostream()
345 mutex_unlock(&gspca_dev->usb_lock); jl2005c_dostream()
348 ret = usb_bulk_msg(gspca_dev->dev, jl2005c_dostream()
349 usb_rcvbulkpipe(gspca_dev->dev, 0x82), jl2005c_dostream()
368 gspca_frame_add(gspca_dev, packet_type, jl2005c_dostream()
372 while (bytes_left > 0 && gspca_dev->present) { jl2005c_dostream()
375 ret = usb_bulk_msg(gspca_dev->dev, jl2005c_dostream()
376 usb_rcvbulkpipe(gspca_dev->dev, 0x82), jl2005c_dostream()
390 gspca_frame_add(gspca_dev, packet_type, jl2005c_dostream()
395 if (gspca_dev->present) { jl2005c_dostream()
396 mutex_lock(&gspca_dev->usb_lock); jl2005c_dostream()
397 jl2005c_stop(gspca_dev); jl2005c_dostream()
398 mutex_unlock(&gspca_dev->usb_lock); jl2005c_dostream()
407 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
411 struct sd *sd = (struct sd *) gspca_dev; sd_config()
413 cam = &gspca_dev->cam; sd_config()
418 jl2005c_get_firmware_id(gspca_dev); sd_config()
447 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
452 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
455 struct sd *sd = (struct sd *) gspca_dev; sd_start()
456 sd->cap_mode = gspca_dev->cam.cam_mode; sd_start()
458 switch (gspca_dev->pixfmt.width) { sd_start()
461 jl2005c_stream_start_vga_lg(gspca_dev); sd_start()
465 jl2005c_stream_start_vga_small(gspca_dev); sd_start()
469 jl2005c_stream_start_cif_lg(gspca_dev); sd_start()
473 jl2005c_stream_start_cif_small(gspca_dev); sd_start()
489 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
491 struct sd *dev = (struct sd *) gspca_dev; sd_stop0()
494 mutex_unlock(&gspca_dev->usb_lock); sd_stop0()
498 mutex_lock(&gspca_dev->usb_lock); sd_stop0()
207 jl2005c_stream_start_vga_lg(struct gspca_dev *gspca_dev) jl2005c_stream_start_vga_lg() argument
H A Dsn9c20x.c70 struct gspca_dev gspca_dev; member in struct:sd
909 static void reg_r(struct gspca_dev *gspca_dev, u16 reg, u16 length) reg_r() argument
911 struct usb_device *dev = gspca_dev->dev; reg_r()
914 if (gspca_dev->usb_err < 0) reg_r()
921 gspca_dev->usb_buf, reg_r()
926 gspca_dev->usb_err = result; reg_r()
930 static void reg_w(struct gspca_dev *gspca_dev, u16 reg, reg_w() argument
933 struct usb_device *dev = gspca_dev->dev; reg_w()
936 if (gspca_dev->usb_err < 0) reg_w()
938 memcpy(gspca_dev->usb_buf, buffer, length); reg_w()
944 gspca_dev->usb_buf, reg_w()
949 gspca_dev->usb_err = result; reg_w()
953 static void reg_w1(struct gspca_dev *gspca_dev, u16 reg, const u8 value) reg_w1() argument
955 reg_w(gspca_dev, reg, &value, 1); reg_w1()
958 static void i2c_w(struct gspca_dev *gspca_dev, const u8 *buffer) i2c_w() argument
962 reg_w(gspca_dev, 0x10c0, buffer, 8); i2c_w()
964 reg_r(gspca_dev, 0x10c0, 1); i2c_w()
965 if (gspca_dev->usb_err < 0) i2c_w()
967 if (gspca_dev->usb_buf[0] & 0x04) { i2c_w()
968 if (gspca_dev->usb_buf[0] & 0x08) { i2c_w()
970 gspca_dev->usb_err = -EIO; i2c_w()
977 /* gspca_dev->usb_err = -EIO; fixme: may occur */ i2c_w()
980 static void i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val) i2c_w1() argument
982 struct sd *sd = (struct sd *) gspca_dev; i2c_w1()
998 i2c_w(gspca_dev, row); i2c_w1()
1001 static void i2c_w1_buf(struct gspca_dev *gspca_dev, i2c_w1_buf() argument
1005 i2c_w1(gspca_dev, buf->reg, buf->val); i2c_w1_buf()
1010 static void i2c_w2(struct gspca_dev *gspca_dev, u8 reg, u16 val) i2c_w2() argument
1012 struct sd *sd = (struct sd *) gspca_dev; i2c_w2()
1028 i2c_w(gspca_dev, row); i2c_w2()
1031 static void i2c_w2_buf(struct gspca_dev *gspca_dev, i2c_w2_buf() argument
1035 i2c_w2(gspca_dev, buf->reg, buf->val); i2c_w2_buf()
1040 static void i2c_r1(struct gspca_dev *gspca_dev, u8 reg, u8 *val) i2c_r1() argument
1042 struct sd *sd = (struct sd *) gspca_dev; i2c_r1()
1053 i2c_w(gspca_dev, row); i2c_r1()
1056 i2c_w(gspca_dev, row); i2c_r1()
1057 reg_r(gspca_dev, 0x10c2, 5); i2c_r1()
1058 *val = gspca_dev->usb_buf[4]; i2c_r1()
1061 static void i2c_r2(struct gspca_dev *gspca_dev, u8 reg, u16 *val) i2c_r2() argument
1063 struct sd *sd = (struct sd *) gspca_dev; i2c_r2()
1074 i2c_w(gspca_dev, row); i2c_r2()
1077 i2c_w(gspca_dev, row); i2c_r2()
1078 reg_r(gspca_dev, 0x10c2, 5); i2c_r2()
1079 *val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; i2c_r2()
1082 static void ov9650_init_sensor(struct gspca_dev *gspca_dev) ov9650_init_sensor() argument
1085 struct sd *sd = (struct sd *) gspca_dev; ov9650_init_sensor()
1087 i2c_r2(gspca_dev, 0x1c, &id); ov9650_init_sensor()
1088 if (gspca_dev->usb_err < 0) ov9650_init_sensor()
1093 gspca_dev->usb_err = -ENODEV; ov9650_init_sensor()
1097 i2c_w1(gspca_dev, 0x12, 0x80); /* sensor reset */ ov9650_init_sensor()
1099 i2c_w1_buf(gspca_dev, ov9650_init, ARRAY_SIZE(ov9650_init)); ov9650_init_sensor()
1100 if (gspca_dev->usb_err < 0) ov9650_init_sensor()
1106 static void ov9655_init_sensor(struct gspca_dev *gspca_dev) ov9655_init_sensor() argument
1108 struct sd *sd = (struct sd *) gspca_dev; ov9655_init_sensor()
1110 i2c_w1(gspca_dev, 0x12, 0x80); /* sensor reset */ ov9655_init_sensor()
1112 i2c_w1_buf(gspca_dev, ov9655_init, ARRAY_SIZE(ov9655_init)); ov9655_init_sensor()
1113 if (gspca_dev->usb_err < 0) ov9655_init_sensor()
1120 static void soi968_init_sensor(struct gspca_dev *gspca_dev) soi968_init_sensor() argument
1122 struct sd *sd = (struct sd *) gspca_dev; soi968_init_sensor()
1124 i2c_w1(gspca_dev, 0x12, 0x80); /* sensor reset */ soi968_init_sensor()
1126 i2c_w1_buf(gspca_dev, soi968_init, ARRAY_SIZE(soi968_init)); soi968_init_sensor()
1127 if (gspca_dev->usb_err < 0) soi968_init_sensor()
1134 static void ov7660_init_sensor(struct gspca_dev *gspca_dev) ov7660_init_sensor() argument
1136 struct sd *sd = (struct sd *) gspca_dev; ov7660_init_sensor()
1138 i2c_w1(gspca_dev, 0x12, 0x80); /* sensor reset */ ov7660_init_sensor()
1140 i2c_w1_buf(gspca_dev, ov7660_init, ARRAY_SIZE(ov7660_init)); ov7660_init_sensor()
1141 if (gspca_dev->usb_err < 0) ov7660_init_sensor()
1147 static void ov7670_init_sensor(struct gspca_dev *gspca_dev) ov7670_init_sensor() argument
1149 struct sd *sd = (struct sd *) gspca_dev; ov7670_init_sensor()
1151 i2c_w1(gspca_dev, 0x12, 0x80); /* sensor reset */ ov7670_init_sensor()
1153 i2c_w1_buf(gspca_dev, ov7670_init, ARRAY_SIZE(ov7670_init)); ov7670_init_sensor()
1154 if (gspca_dev->usb_err < 0) ov7670_init_sensor()
1161 static void mt9v_init_sensor(struct gspca_dev *gspca_dev) mt9v_init_sensor() argument
1163 struct sd *sd = (struct sd *) gspca_dev; mt9v_init_sensor()
1167 i2c_r2(gspca_dev, 0xff, &value); mt9v_init_sensor()
1168 if (gspca_dev->usb_err >= 0 mt9v_init_sensor()
1170 i2c_w2_buf(gspca_dev, mt9v011_init, ARRAY_SIZE(mt9v011_init)); mt9v_init_sensor()
1171 if (gspca_dev->usb_err < 0) { mt9v_init_sensor()
1182 gspca_dev->usb_err = 0; mt9v_init_sensor()
1184 i2c_w2(gspca_dev, 0x01, 0x0004); mt9v_init_sensor()
1185 i2c_r2(gspca_dev, 0xff, &value); mt9v_init_sensor()
1186 if (gspca_dev->usb_err >= 0 mt9v_init_sensor()
1188 i2c_w2_buf(gspca_dev, mt9v111_init, ARRAY_SIZE(mt9v111_init)); mt9v_init_sensor()
1189 if (gspca_dev->usb_err < 0) { mt9v_init_sensor()
1200 gspca_dev->usb_err = 0; mt9v_init_sensor()
1202 i2c_w2(gspca_dev, 0xf0, 0x0000); mt9v_init_sensor()
1203 if (gspca_dev->usb_err < 0) { mt9v_init_sensor()
1204 gspca_dev->usb_err = 0; mt9v_init_sensor()
1206 i2c_w2(gspca_dev, 0xf0, 0x0000); mt9v_init_sensor()
1208 i2c_r2(gspca_dev, 0x00, &value); mt9v_init_sensor()
1209 if (gspca_dev->usb_err >= 0 mt9v_init_sensor()
1211 i2c_w2_buf(gspca_dev, mt9v112_init, ARRAY_SIZE(mt9v112_init)); mt9v_init_sensor()
1212 if (gspca_dev->usb_err < 0) { mt9v_init_sensor()
1223 gspca_dev->usb_err = -ENODEV; mt9v_init_sensor()
1226 static void mt9m112_init_sensor(struct gspca_dev *gspca_dev) mt9m112_init_sensor() argument
1228 struct sd *sd = (struct sd *) gspca_dev; mt9m112_init_sensor()
1230 i2c_w2_buf(gspca_dev, mt9m112_init, ARRAY_SIZE(mt9m112_init)); mt9m112_init_sensor()
1231 if (gspca_dev->usb_err < 0) mt9m112_init_sensor()
1238 static void mt9m111_init_sensor(struct gspca_dev *gspca_dev) mt9m111_init_sensor() argument
1240 struct sd *sd = (struct sd *) gspca_dev; mt9m111_init_sensor()
1242 i2c_w2_buf(gspca_dev, mt9m111_init, ARRAY_SIZE(mt9m111_init)); mt9m111_init_sensor()
1243 if (gspca_dev->usb_err < 0) mt9m111_init_sensor()
1250 static void mt9m001_init_sensor(struct gspca_dev *gspca_dev) mt9m001_init_sensor() argument
1252 struct sd *sd = (struct sd *) gspca_dev; mt9m001_init_sensor()
1255 i2c_r2(gspca_dev, 0x00, &id); mt9m001_init_sensor()
1256 if (gspca_dev->usb_err < 0) mt9m001_init_sensor()
1270 gspca_dev->usb_err = -ENODEV; mt9m001_init_sensor()
1274 i2c_w2_buf(gspca_dev, mt9m001_init, ARRAY_SIZE(mt9m001_init)); mt9m001_init_sensor()
1275 if (gspca_dev->usb_err < 0) mt9m001_init_sensor()
1282 static void hv7131r_init_sensor(struct gspca_dev *gspca_dev) hv7131r_init_sensor() argument
1284 struct sd *sd = (struct sd *) gspca_dev; hv7131r_init_sensor()
1286 i2c_w1_buf(gspca_dev, hv7131r_init, ARRAY_SIZE(hv7131r_init)); hv7131r_init_sensor()
1287 if (gspca_dev->usb_err < 0) hv7131r_init_sensor()
1294 static void set_cmatrix(struct gspca_dev *gspca_dev, set_cmatrix() argument
1330 reg_w(gspca_dev, 0x10e1, cmatrix, 21); set_cmatrix()
1333 static void set_gamma(struct gspca_dev *gspca_dev, s32 val) set_gamma() argument
1356 reg_w(gspca_dev, 0x1190, gamma, 17); set_gamma()
1359 static void set_redblue(struct gspca_dev *gspca_dev, s32 blue, s32 red) set_redblue() argument
1361 reg_w1(gspca_dev, 0x118c, red); set_redblue()
1362 reg_w1(gspca_dev, 0x118f, blue); set_redblue()
1365 static void set_hvflip(struct gspca_dev *gspca_dev, s32 hflip, s32 vflip) set_hvflip() argument
1369 struct sd *sd = (struct sd *) gspca_dev; set_hvflip()
1387 reg_w1(gspca_dev, 0x1182, sd->vstart); set_hvflip()
1388 i2c_w1(gspca_dev, 0x1e, value); set_hvflip()
1391 i2c_r1(gspca_dev, 0x1e, &value); set_hvflip()
1400 i2c_w1(gspca_dev, 0x1e, value); set_hvflip()
1401 i2c_w1(gspca_dev, 0x3a, tslb); set_hvflip()
1405 i2c_r2(gspca_dev, 0x20, &value2); set_hvflip()
1411 i2c_w2(gspca_dev, 0x20, value2); set_hvflip()
1416 i2c_r2(gspca_dev, 0x20, &value2); set_hvflip()
1422 i2c_w2(gspca_dev, 0x20, value2); set_hvflip()
1425 i2c_r1(gspca_dev, 0x01, &value); set_hvflip()
1431 i2c_w1(gspca_dev, 0x01, value); set_hvflip()
1436 static void set_exposure(struct gspca_dev *gspca_dev, s32 expo) set_exposure() argument
1438 struct sd *sd = (struct sd *) gspca_dev; set_exposure()
1443 if (gspca_dev->streaming) set_exposure()
1459 i2c_w(gspca_dev, exp); set_exposure()
1463 i2c_w(gspca_dev, exp); set_exposure()
1489 i2c_w(gspca_dev, exp); set_exposure()
1492 static void set_gain(struct gspca_dev *gspca_dev, s32 g) set_gain() argument
1494 struct sd *sd = (struct sd *) gspca_dev; set_gain()
1498 if (gspca_dev->streaming) set_gain()
1536 i2c_w(gspca_dev, gain); set_gain()
1539 static void set_quality(struct gspca_dev *gspca_dev, s32 val) set_quality() argument
1541 struct sd *sd = (struct sd *) gspca_dev; set_quality()
1544 reg_w1(gspca_dev, 0x1061, 0x01); /* stop transfer */ set_quality()
1545 reg_w1(gspca_dev, 0x10e0, sd->fmt | 0x20); /* write QTAB */ set_quality()
1546 reg_w(gspca_dev, 0x1100, &sd->jpeg_hdr[JPEG_QT0_OFFSET], 64); set_quality()
1547 reg_w(gspca_dev, 0x1140, &sd->jpeg_hdr[JPEG_QT1_OFFSET], 64); set_quality()
1548 reg_w1(gspca_dev, 0x1061, 0x03); /* restart transfer */ set_quality()
1549 reg_w1(gspca_dev, 0x10e0, sd->fmt); set_quality()
1551 reg_w1(gspca_dev, 0x10e0, sd->fmt); set_quality()
1555 static int sd_dbg_g_register(struct gspca_dev *gspca_dev, sd_dbg_g_register() argument
1558 struct sd *sd = (struct sd *) gspca_dev; sd_dbg_g_register()
1565 reg_r(gspca_dev, reg->reg, 1); sd_dbg_g_register()
1566 reg->val = gspca_dev->usb_buf[0]; sd_dbg_g_register()
1567 return gspca_dev->usb_err; sd_dbg_g_register()
1571 i2c_r2(gspca_dev, reg->reg, (u16 *) &reg->val); sd_dbg_g_register()
1574 i2c_r1(gspca_dev, reg->reg, (u8 *) &reg->val); sd_dbg_g_register()
1576 return gspca_dev->usb_err; sd_dbg_g_register()
1581 static int sd_dbg_s_register(struct gspca_dev *gspca_dev, sd_dbg_s_register() argument
1584 struct sd *sd = (struct sd *) gspca_dev; sd_dbg_s_register()
1590 reg_w1(gspca_dev, reg->reg, reg->val); sd_dbg_s_register()
1591 return gspca_dev->usb_err; sd_dbg_s_register()
1595 i2c_w2(gspca_dev, reg->reg, reg->val); sd_dbg_s_register()
1597 i2c_w1(gspca_dev, reg->reg, reg->val); sd_dbg_s_register()
1599 return gspca_dev->usb_err; sd_dbg_s_register()
1604 static int sd_chip_info(struct gspca_dev *gspca_dev, sd_chip_info() argument
1615 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
1618 struct sd *sd = (struct sd *) gspca_dev; sd_config()
1621 cam = &gspca_dev->cam; sd_config()
1661 struct gspca_dev *gspca_dev = sd_s_ctrl() local
1662 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
1663 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
1665 gspca_dev->usb_err = 0; sd_s_ctrl()
1667 if (!gspca_dev->streaming) sd_s_ctrl()
1673 set_cmatrix(gspca_dev, sd->brightness->val, sd_s_ctrl()
1677 set_gamma(gspca_dev, ctrl->val); sd_s_ctrl()
1681 set_redblue(gspca_dev, sd->blue->val, sd->red->val); sd_s_ctrl()
1685 set_hvflip(gspca_dev, sd->hflip->val, sd->vflip->val); sd_s_ctrl()
1689 set_exposure(gspca_dev, ctrl->val); sd_s_ctrl()
1693 set_gain(gspca_dev, ctrl->val); sd_s_ctrl()
1698 set_gain(gspca_dev, sd->gain->val); sd_s_ctrl()
1700 set_exposure(gspca_dev, sd->exposure->val); sd_s_ctrl()
1703 set_quality(gspca_dev, ctrl->val); sd_s_ctrl()
1706 return gspca_dev->usb_err; sd_s_ctrl()
1713 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
1715 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
1716 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
1718 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
1785 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
1787 struct sd *sd = (struct sd *) gspca_dev; sd_init()
1796 reg_w(gspca_dev, bridge_init[i][0], &value, 1); sd_init()
1797 if (gspca_dev->usb_err < 0) { sd_init()
1799 return gspca_dev->usb_err; sd_init()
1804 reg_w1(gspca_dev, 0x1006, 0x00); sd_init()
1806 reg_w1(gspca_dev, 0x1006, 0x20); sd_init()
1808 reg_w(gspca_dev, 0x10c0, i2c_init, 9); sd_init()
1809 if (gspca_dev->usb_err < 0) { sd_init()
1811 return gspca_dev->usb_err; sd_init()
1816 ov9650_init_sensor(gspca_dev); sd_init()
1817 if (gspca_dev->usb_err < 0) sd_init()
1822 ov9655_init_sensor(gspca_dev); sd_init()
1823 if (gspca_dev->usb_err < 0) sd_init()
1828 soi968_init_sensor(gspca_dev); sd_init()
1829 if (gspca_dev->usb_err < 0) sd_init()
1834 ov7660_init_sensor(gspca_dev); sd_init()
1835 if (gspca_dev->usb_err < 0) sd_init()
1840 ov7670_init_sensor(gspca_dev); sd_init()
1841 if (gspca_dev->usb_err < 0) sd_init()
1846 mt9v_init_sensor(gspca_dev); sd_init()
1847 if (gspca_dev->usb_err < 0) sd_init()
1852 mt9m111_init_sensor(gspca_dev); sd_init()
1853 if (gspca_dev->usb_err < 0) sd_init()
1858 mt9m112_init_sensor(gspca_dev); sd_init()
1859 if (gspca_dev->usb_err < 0) sd_init()
1864 mt9m001_init_sensor(gspca_dev); sd_init()
1865 if (gspca_dev->usb_err < 0) sd_init()
1869 hv7131r_init_sensor(gspca_dev); sd_init()
1870 if (gspca_dev->usb_err < 0) sd_init()
1876 gspca_dev->usb_err = -ENODEV; sd_init()
1878 return gspca_dev->usb_err; sd_init()
1881 static void configure_sensor_output(struct gspca_dev *gspca_dev, int mode) configure_sensor_output() argument
1883 struct sd *sd = (struct sd *) gspca_dev; configure_sensor_output()
1889 i2c_w1(gspca_dev, 0x17, 0x1d); configure_sensor_output()
1890 i2c_w1(gspca_dev, 0x18, 0xbd); configure_sensor_output()
1891 i2c_w1(gspca_dev, 0x19, 0x01); configure_sensor_output()
1892 i2c_w1(gspca_dev, 0x1a, 0x81); configure_sensor_output()
1893 i2c_w1(gspca_dev, 0x12, 0x00); configure_sensor_output()
1897 i2c_w1(gspca_dev, 0x17, 0x13); configure_sensor_output()
1898 i2c_w1(gspca_dev, 0x18, 0x63); configure_sensor_output()
1899 i2c_w1(gspca_dev, 0x19, 0x01); configure_sensor_output()
1900 i2c_w1(gspca_dev, 0x1a, 0x79); configure_sensor_output()
1901 i2c_w1(gspca_dev, 0x12, 0x40); configure_sensor_output()
1908 i2c_w1(gspca_dev, 0x17, 0x1b); configure_sensor_output()
1909 i2c_w1(gspca_dev, 0x18, 0xbc); configure_sensor_output()
1910 i2c_w1(gspca_dev, 0x19, 0x01); configure_sensor_output()
1911 i2c_w1(gspca_dev, 0x1a, 0x82); configure_sensor_output()
1912 i2c_r1(gspca_dev, 0x12, &value); configure_sensor_output()
1913 i2c_w1(gspca_dev, 0x12, value & 0x07); configure_sensor_output()
1915 i2c_w1(gspca_dev, 0x17, 0x24); configure_sensor_output()
1916 i2c_w1(gspca_dev, 0x18, 0xc5); configure_sensor_output()
1917 i2c_w1(gspca_dev, 0x19, 0x00); configure_sensor_output()
1918 i2c_w1(gspca_dev, 0x1a, 0x3c); configure_sensor_output()
1919 i2c_r1(gspca_dev, 0x12, &value); configure_sensor_output()
1920 i2c_w1(gspca_dev, 0x12, (value & 0x7) | 0x40); configure_sensor_output()
1926 i2c_w2(gspca_dev, 0xf0, 0x0002); configure_sensor_output()
1927 i2c_w2(gspca_dev, 0xc8, 0x970b); configure_sensor_output()
1928 i2c_w2(gspca_dev, 0xf0, 0x0000); configure_sensor_output()
1930 i2c_w2(gspca_dev, 0xf0, 0x0002); configure_sensor_output()
1931 i2c_w2(gspca_dev, 0xc8, 0x8000); configure_sensor_output()
1932 i2c_w2(gspca_dev, 0xf0, 0x0000); configure_sensor_output()
1938 static int sd_isoc_init(struct gspca_dev *gspca_dev) sd_isoc_init() argument
1941 u32 flags = gspca_dev->cam.cam_mode[(int)gspca_dev->curr_mode].priv; sd_isoc_init()
1949 intf = usb_ifnum_to_if(gspca_dev->dev, gspca_dev->iface); sd_isoc_init()
1955 gspca_dev->alt = intf->num_altsetting; sd_isoc_init()
1959 switch (gspca_dev->pixfmt.width) { sd_isoc_init()
1961 gspca_dev->alt = 2; sd_isoc_init()
1964 gspca_dev->alt = 6; sd_isoc_init()
1967 gspca_dev->alt = 9; sd_isoc_init()
1985 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
1987 struct sd *sd = (struct sd *) gspca_dev; sd_start()
1988 int mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; sd_start()
1989 int width = gspca_dev->pixfmt.width; sd_start()
1990 int height = gspca_dev->pixfmt.height; sd_start()
2024 configure_sensor_output(gspca_dev, mode); sd_start()
2025 reg_w(gspca_dev, 0x1100, &sd->jpeg_hdr[JPEG_QT0_OFFSET], 64); sd_start()
2026 reg_w(gspca_dev, 0x1140, &sd->jpeg_hdr[JPEG_QT1_OFFSET], 64); sd_start()
2027 reg_w(gspca_dev, 0x10fb, CLR_WIN(width, height), 5); sd_start()
2028 reg_w(gspca_dev, 0x1180, HW_WIN(mode, sd->hstart, sd->vstart), 6); sd_start()
2029 reg_w1(gspca_dev, 0x1189, scale); sd_start()
2030 reg_w1(gspca_dev, 0x10e0, fmt); sd_start()
2032 set_cmatrix(gspca_dev, v4l2_ctrl_g_ctrl(sd->brightness), sd_start()
2036 set_gamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); sd_start()
2037 set_redblue(gspca_dev, v4l2_ctrl_g_ctrl(sd->blue), sd_start()
2040 set_gain(gspca_dev, v4l2_ctrl_g_ctrl(sd->gain)); sd_start()
2042 set_exposure(gspca_dev, v4l2_ctrl_g_ctrl(sd->exposure)); sd_start()
2044 set_hvflip(gspca_dev, v4l2_ctrl_g_ctrl(sd->hflip), sd_start()
2047 reg_w1(gspca_dev, 0x1007, 0x20); sd_start()
2048 reg_w1(gspca_dev, 0x1061, 0x03); sd_start()
2058 return gspca_dev->usb_err; sd_start()
2061 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
2063 reg_w1(gspca_dev, 0x1007, 0x00); sd_stopN()
2064 reg_w1(gspca_dev, 0x1061, 0x01); sd_stopN()
2069 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
2071 struct sd *sd = (struct sd *) gspca_dev; sd_stop0()
2074 mutex_unlock(&gspca_dev->usb_lock); sd_stop0()
2076 mutex_lock(&gspca_dev->usb_lock); sd_stop0()
2081 static void do_autoexposure(struct gspca_dev *gspca_dev, u16 avg_lum) do_autoexposure() argument
2083 struct sd *sd = (struct sd *) gspca_dev; do_autoexposure()
2132 static void do_autogain(struct gspca_dev *gspca_dev, u16 avg_lum) do_autogain() argument
2134 struct sd *sd = (struct sd *) gspca_dev; do_autogain()
2143 static void sd_dqcallback(struct gspca_dev *gspca_dev) sd_dqcallback() argument
2145 struct sd *sd = (struct sd *) gspca_dev; sd_dqcallback()
2153 do_autogain(gspca_dev, avg_lum); sd_dqcallback()
2155 do_autoexposure(gspca_dev, avg_lum); sd_dqcallback()
2163 struct gspca_dev *gspca_dev = &sd->gspca_dev; qual_upd() local
2166 /* To protect gspca_dev->usb_buf and gspca_dev->usb_err */ qual_upd()
2167 mutex_lock(&gspca_dev->usb_lock); qual_upd()
2169 gspca_dev->usb_err = 0; qual_upd()
2170 set_quality(gspca_dev, qual); qual_upd()
2171 mutex_unlock(&gspca_dev->usb_lock); qual_upd()
2175 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, sd_int_pkt_scan() argument
2179 struct sd *sd = (struct sd *) gspca_dev; sd_int_pkt_scan()
2182 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); sd_int_pkt_scan()
2183 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
2184 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_int_pkt_scan()
2185 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
2193 static void transfer_check(struct gspca_dev *gspca_dev, transfer_check() argument
2196 struct sd *sd = (struct sd *) gspca_dev; transfer_check()
2203 gspca_dev->last_packet_type = DISCARD_PACKET; transfer_check()
2210 gspca_dev->urb[0]->iso_frame_desc[0].length); transfer_check()
2240 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
2244 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
2280 transfer_check(gspca_dev, data); sd_pkt_scan()
2282 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
2288 if (gspca_dev->last_packet_type == LAST_PACKET) { sd_pkt_scan()
2290 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
2292 gspca_frame_add(gspca_dev, INTER_PACKET, sd_pkt_scan()
2295 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
2304 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
H A Dbenq.c33 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
46 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
49 struct usb_device *dev = gspca_dev->dev; reg_w()
52 if (gspca_dev->usb_err < 0) reg_w()
64 gspca_dev->usb_err = ret; reg_w()
69 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
72 gspca_dev->cam.cam_mode = vga_mode; sd_config()
73 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); sd_config()
74 gspca_dev->cam.no_urb_create = 1; sd_config()
79 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
85 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
102 gspca_dev->urb[n] = urb; sd_start()
103 urb->transfer_buffer = usb_alloc_coherent(gspca_dev->dev, sd_start()
112 urb->dev = gspca_dev->dev; sd_start()
113 urb->context = gspca_dev; sd_start()
115 urb->pipe = usb_rcvisocpipe(gspca_dev->dev, sd_start()
128 return gspca_dev->usb_err; sd_start()
131 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
135 reg_w(gspca_dev, 0x003c, 0x0003); sd_stopN()
136 reg_w(gspca_dev, 0x003c, 0x0004); sd_stopN()
137 reg_w(gspca_dev, 0x003c, 0x0005); sd_stopN()
138 reg_w(gspca_dev, 0x003c, 0x0006); sd_stopN()
139 reg_w(gspca_dev, 0x003c, 0x0007); sd_stopN()
141 intf = usb_ifnum_to_if(gspca_dev->dev, gspca_dev->iface); sd_stopN()
142 usb_set_interface(gspca_dev->dev, gspca_dev->iface, sd_stopN()
146 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
156 struct gspca_dev *gspca_dev = (struct gspca_dev *) urb->context; sd_isoc_irq() local
162 if (!gspca_dev->streaming) sd_isoc_irq()
168 if (gspca_dev->frozen) sd_isoc_irq()
176 if (urb == gspca_dev->urb[0] || urb == gspca_dev->urb[2]) sd_isoc_irq()
180 if (urb == gspca_dev->urb[1]) sd_isoc_irq()
181 urb0 = gspca_dev->urb[0]; sd_isoc_irq()
183 urb0 = gspca_dev->urb[2]; sd_isoc_irq()
192 gspca_dev->last_packet_type = DISCARD_PACKET; sd_isoc_irq()
201 gspca_dev->last_packet_type = DISCARD_PACKET; sd_isoc_irq()
226 gspca_frame_add(gspca_dev, LAST_PACKET, sd_isoc_irq()
228 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_isoc_irq()
231 gspca_frame_add(gspca_dev, INTER_PACKET, sd_isoc_irq()
234 gspca_dev->last_packet_type = DISCARD_PACKET; sd_isoc_irq()
239 gspca_frame_add(gspca_dev, INTER_PACKET, sd_isoc_irq()
H A Dfinepix.c41 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:usb_fpix
63 static int command(struct gspca_dev *gspca_dev, command() argument
71 memcpy(gspca_dev->usb_buf, order_values[order], 12); command()
72 return usb_control_msg(gspca_dev->dev, command()
73 usb_sndctrlpipe(gspca_dev->dev, 0), command()
76 USB_RECIP_INTERFACE, 0, 0, gspca_dev->usb_buf, command()
84 * threads attempting to use gspca_dev->usb_buf we take the usb_lock when
91 struct gspca_dev *gspca_dev = &dev->gspca_dev; dostream() local
92 struct urb *urb = gspca_dev->urb[0]; dostream()
101 while (gspca_dev->present && gspca_dev->streaming) { dostream()
103 if (gspca_dev->frozen) dostream()
108 mutex_lock(&gspca_dev->usb_lock); dostream()
109 ret = command(gspca_dev, 1); dostream()
110 mutex_unlock(&gspca_dev->usb_lock); dostream()
114 if (gspca_dev->frozen) dostream()
117 if (!gspca_dev->present || !gspca_dev->streaming) dostream()
122 ret = usb_bulk_msg(gspca_dev->dev, dostream()
133 if (gspca_dev->frozen) dostream()
136 if (!gspca_dev->present || !gspca_dev->streaming) dostream()
148 gspca_frame_add(gspca_dev, LAST_PACKET, dostream()
154 gspca_frame_add(gspca_dev, dostream()
155 gspca_dev->last_packet_type dostream()
172 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
175 struct usb_fpix *dev = (struct usb_fpix *) gspca_dev; sd_config()
176 struct cam *cam = &gspca_dev->cam; sd_config()
189 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
195 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
197 struct usb_fpix *dev = (struct usb_fpix *) gspca_dev; sd_start()
201 ret = command(gspca_dev, 0); sd_start()
209 ret = usb_bulk_msg(gspca_dev->dev, sd_start()
210 gspca_dev->urb[0]->pipe, sd_start()
211 gspca_dev->urb[0]->transfer_buffer, sd_start()
220 ret = command(gspca_dev, 1); sd_start()
227 usb_clear_halt(gspca_dev->dev, gspca_dev->urb[0]->pipe); sd_start()
238 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
240 struct usb_fpix *dev = (struct usb_fpix *) gspca_dev; sd_stop0()
243 mutex_unlock(&gspca_dev->usb_lock); sd_stop0()
245 mutex_lock(&gspca_dev->usb_lock); sd_stop0()
H A Dspca561.c38 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
288 static void reg_w_val(struct gspca_dev *gspca_dev, __u16 index, __u8 value) reg_w_val() argument
291 struct usb_device *dev = gspca_dev->dev; reg_w_val()
302 static void write_vector(struct gspca_dev *gspca_dev, write_vector() argument
309 reg_w_val(gspca_dev, data[i][1], data[i][0]); write_vector()
314 /* read 'len' bytes to gspca_dev->usb_buf */ reg_r()
315 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
318 usb_control_msg(gspca_dev->dev, reg_r()
319 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r()
323 index, gspca_dev->usb_buf, length, 500); reg_r()
326 /* write 'len' bytes from gspca_dev->usb_buf */ reg_w_buf()
327 static void reg_w_buf(struct gspca_dev *gspca_dev, reg_w_buf() argument
330 usb_control_msg(gspca_dev->dev, reg_w_buf()
331 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w_buf()
335 index, gspca_dev->usb_buf, len, 500); reg_w_buf()
338 static void i2c_write(struct gspca_dev *gspca_dev, __u16 value, __u16 reg) i2c_write() argument
342 reg_w_val(gspca_dev, 0x8801, reg); i2c_write()
343 reg_w_val(gspca_dev, 0x8805, value); i2c_write()
344 reg_w_val(gspca_dev, 0x8800, value >> 8); i2c_write()
346 reg_r(gspca_dev, 0x8803, 1); i2c_write()
347 if (!gspca_dev->usb_buf[0]) i2c_write()
353 static int i2c_read(struct gspca_dev *gspca_dev, __u16 reg, __u8 mode) i2c_read() argument
358 reg_w_val(gspca_dev, 0x8804, 0x92); i2c_read()
359 reg_w_val(gspca_dev, 0x8801, reg); i2c_read()
360 reg_w_val(gspca_dev, 0x8802, mode | 0x01); i2c_read()
362 reg_r(gspca_dev, 0x8803, 1); i2c_read()
363 if (!gspca_dev->usb_buf[0]) { i2c_read()
364 reg_r(gspca_dev, 0x8800, 1); i2c_read()
365 value = gspca_dev->usb_buf[0]; i2c_read()
366 reg_r(gspca_dev, 0x8805, 1); i2c_read()
367 return ((int) value << 8) | gspca_dev->usb_buf[0]; i2c_read()
374 static void sensor_mapwrite(struct gspca_dev *gspca_dev, sensor_mapwrite() argument
378 gspca_dev->usb_buf[0] = (*sensormap)[1]; sensor_mapwrite()
379 gspca_dev->usb_buf[1] = (*sensormap)[1] >> 8; sensor_mapwrite()
380 reg_w_buf(gspca_dev, (*sensormap)[0], 2); sensor_mapwrite()
385 static void write_sensor_72a(struct gspca_dev *gspca_dev, write_sensor_72a() argument
389 i2c_write(gspca_dev, (*sensor)[1], (*sensor)[0]); write_sensor_72a()
394 static void init_161rev12A(struct gspca_dev *gspca_dev) init_161rev12A() argument
396 write_vector(gspca_dev, spca561_161rev12A_data1); init_161rev12A()
397 sensor_mapwrite(gspca_dev, Pb100_1map8300); init_161rev12A()
399 write_vector(gspca_dev, spca561_161rev12A_data2); init_161rev12A()
400 sensor_mapwrite(gspca_dev, Pb100_2map8300); init_161rev12A()
404 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
407 struct sd *sd = (struct sd *) gspca_dev; sd_config()
416 reg_r(gspca_dev, 0x8104, 1); sd_config()
417 data1 = gspca_dev->usb_buf[0]; sd_config()
418 reg_r(gspca_dev, 0x8105, 1); sd_config()
419 data2 = gspca_dev->usb_buf[0]; sd_config()
421 reg_r(gspca_dev, 0x8106, 1); sd_config()
422 data1 = gspca_dev->usb_buf[0]; sd_config()
423 reg_r(gspca_dev, 0x8107, 1); sd_config()
424 data2 = gspca_dev->usb_buf[0]; sd_config()
431 cam = &gspca_dev->cam; sd_config()
447 static int sd_init_12a(struct gspca_dev *gspca_dev) sd_init_12a() argument
450 init_161rev12A(gspca_dev); sd_init_12a()
453 static int sd_init_72a(struct gspca_dev *gspca_dev) sd_init_72a() argument
456 write_vector(gspca_dev, rev72a_reset); sd_init_72a()
458 write_vector(gspca_dev, rev72a_init_data1); sd_init_72a()
459 write_sensor_72a(gspca_dev, rev72a_init_sensor1); sd_init_72a()
460 write_vector(gspca_dev, rev72a_init_data2); sd_init_72a()
461 write_sensor_72a(gspca_dev, rev72a_init_sensor2); sd_init_72a()
462 reg_w_val(gspca_dev, 0x8112, 0x30); sd_init_72a()
466 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
468 struct sd *sd = (struct sd *) gspca_dev; setbrightness()
476 reg_w_val(gspca_dev, reg + 0, val); /* R */ setbrightness()
477 reg_w_val(gspca_dev, reg + 1, val); /* Gr */ setbrightness()
478 reg_w_val(gspca_dev, reg + 2, val); /* B */ setbrightness()
479 reg_w_val(gspca_dev, reg + 3, val); /* Gb */ setbrightness()
482 static void setwhite(struct gspca_dev *gspca_dev, s32 white, s32 contrast) setwhite() argument
484 struct sd *sd = (struct sd *) gspca_dev; setwhite()
497 reg_w_val(gspca_dev, 0x8652, contrast + 0x20); /* Gr */ setwhite()
498 reg_w_val(gspca_dev, 0x8654, contrast + 0x20); /* Gb */ setwhite()
500 reg_w_val(gspca_dev, reg, red); setwhite()
501 reg_w_val(gspca_dev, reg + 2, blue); setwhite()
505 static void setexposure(struct gspca_dev *gspca_dev, s32 val) setexposure() argument
537 gspca_dev->usb_buf[0] = expo; setexposure()
538 gspca_dev->usb_buf[1] = expo >> 8; setexposure()
539 reg_w_buf(gspca_dev, 0x8309, 2); setexposure()
543 static void setgain(struct gspca_dev *gspca_dev, s32 val) setgain() argument
549 gspca_dev->usb_buf[0] = val; setgain()
551 gspca_dev->usb_buf[0] = (val / 2) | 0x40; setgain()
553 gspca_dev->usb_buf[0] = (val / 4) | 0xc0; setgain()
555 gspca_dev->usb_buf[1] = 0; setgain()
556 reg_w_buf(gspca_dev, 0x8335, 2); setgain()
559 static void setautogain(struct gspca_dev *gspca_dev, s32 val) setautogain() argument
561 struct sd *sd = (struct sd *) gspca_dev; setautogain()
569 static int sd_start_12a(struct gspca_dev *gspca_dev) sd_start_12a() argument
575 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; sd_start_12a()
578 reg_w_val(gspca_dev, 0x8500, 0x10 | mode); sd_start_12a()
583 reg_w_val(gspca_dev, 0x8500, mode); sd_start_12a()
586 gspca_dev->usb_buf[0] = 0xaa; sd_start_12a()
587 gspca_dev->usb_buf[1] = 0x00; sd_start_12a()
588 reg_w_buf(gspca_dev, 0x8307, 2); sd_start_12a()
590 reg_w_val(gspca_dev, 0x8700, 0x8a); sd_start_12a()
592 reg_w_val(gspca_dev, 0x8112, 0x1e | 0x20); sd_start_12a()
593 reg_w_val(gspca_dev, 0x850b, 0x03); sd_start_12a()
594 memcpy(gspca_dev->usb_buf, Reg8391, 8); sd_start_12a()
595 reg_w_buf(gspca_dev, 0x8391, 8); sd_start_12a()
596 reg_w_buf(gspca_dev, 0x8390, 8); sd_start_12a()
599 reg_w_val(gspca_dev, 0x8114, 0x00); sd_start_12a()
602 static int sd_start_72a(struct gspca_dev *gspca_dev) sd_start_72a() argument
604 struct sd *sd = (struct sd *) gspca_dev; sd_start_72a()
608 write_vector(gspca_dev, rev72a_reset); sd_start_72a()
610 write_vector(gspca_dev, rev72a_init_data1); sd_start_72a()
611 write_sensor_72a(gspca_dev, rev72a_init_sensor1); sd_start_72a()
613 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; sd_start_72a()
629 reg_w_val(gspca_dev, 0x8700, Clck); /* 0x27 clock */ sd_start_72a()
630 reg_w_val(gspca_dev, 0x8702, 0x81); sd_start_72a()
631 reg_w_val(gspca_dev, 0x8500, mode); /* mode */ sd_start_72a()
632 write_sensor_72a(gspca_dev, rev72a_init_sensor2); sd_start_72a()
633 setwhite(gspca_dev, v4l2_ctrl_g_ctrl(sd->hue), sd_start_72a()
635 /* setbrightness(gspca_dev); * fixme: bad values */ sd_start_72a()
636 setautogain(gspca_dev, v4l2_ctrl_g_ctrl(sd->autogain)); sd_start_72a()
637 reg_w_val(gspca_dev, 0x8112, 0x10 | 0x20); sd_start_72a()
641 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
643 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
646 reg_w_val(gspca_dev, 0x8112, 0x0e); sd_stopN()
648 reg_w_val(gspca_dev, 0x8114, 0x08); sd_stopN()
650 reg_w_val(gspca_dev, 0x8112, 0x20); sd_stopN()
651 /* reg_w_val(gspca_dev, 0x8102, 0x00); ?? */ sd_stopN()
655 static void do_autogain(struct gspca_dev *gspca_dev) do_autogain() argument
657 struct sd *sd = (struct sd *) gspca_dev; do_autogain()
675 reg_r(gspca_dev, 0x8621, 1); do_autogain()
676 Gr = gspca_dev->usb_buf[0]; do_autogain()
677 reg_r(gspca_dev, 0x8622, 1); do_autogain()
678 R = gspca_dev->usb_buf[0]; do_autogain()
679 reg_r(gspca_dev, 0x8623, 1); do_autogain()
680 B = gspca_dev->usb_buf[0]; do_autogain()
681 reg_r(gspca_dev, 0x8624, 1); do_autogain()
682 Gb = gspca_dev->usb_buf[0]; do_autogain()
690 expotimes = i2c_read(gspca_dev, 0x09, 0x10); do_autogain()
696 gainG = i2c_read(gspca_dev, 0x35, 0x10); do_autogain()
710 i2c_write(gspca_dev, gainG, 0x35); do_autogain()
716 i2c_write(gspca_dev, expotimes | pixelclk, 0x09); do_autogain()
722 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
726 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
731 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
736 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
742 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); sd_pkt_scan()
743 input_sync(gspca_dev->input_dev); sd_pkt_scan()
744 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_pkt_scan()
745 input_sync(gspca_dev->input_dev); sd_pkt_scan()
751 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
761 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
767 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
772 struct gspca_dev *gspca_dev = sd_s_ctrl() local
773 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
774 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
776 gspca_dev->usb_err = 0; sd_s_ctrl()
778 if (!gspca_dev->streaming) sd_s_ctrl()
783 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
787 setwhite(gspca_dev, sd->hue->val, ctrl->val); sd_s_ctrl()
791 setwhite(gspca_dev, ctrl->val, 0); sd_s_ctrl()
794 setexposure(gspca_dev, ctrl->val); sd_s_ctrl()
797 setgain(gspca_dev, ctrl->val); sd_s_ctrl()
800 setautogain(gspca_dev, ctrl->val); sd_s_ctrl()
803 return gspca_dev->usb_err; sd_s_ctrl()
810 static int sd_init_controls_12a(struct gspca_dev *gspca_dev) sd_init_controls_12a() argument
812 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls_12a()
814 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls_12a()
832 static int sd_init_controls_72a(struct gspca_dev *gspca_dev) sd_init_controls_72a() argument
834 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls_72a()
835 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls_72a()
837 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls_72a()
H A Dtouptek.c147 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
195 static int val_reply(struct gspca_dev *gspca_dev, const char *reply, int rc) val_reply() argument
212 static void reg_w(struct gspca_dev *gspca_dev, u16 value, u16 index) reg_w() argument
220 rc = usb_control_msg(gspca_dev->dev, usb_rcvctrlpipe(gspca_dev->dev, 0), reg_w()
226 gspca_dev->usb_err = rc; reg_w()
229 if (val_reply(gspca_dev, buff, rc)) { reg_w()
232 gspca_dev->usb_err = -EIO; reg_w()
236 static void reg_w_buf(struct gspca_dev *gspca_dev, reg_w_buf() argument
240 reg_w(gspca_dev, p->value, p->index); reg_w_buf()
245 static void setexposure(struct gspca_dev *gspca_dev, s32 val) setexposure() argument
248 unsigned int w = gspca_dev->pixfmt.width; setexposure()
258 gspca_dev->usb_err = -EINVAL; setexposure()
264 reg_w(gspca_dev, value, REG_COARSE_INTEGRATION_TIME_); setexposure()
265 reg_w(gspca_dev, value, REG_COARSE_INTEGRATION_TIME_); setexposure()
284 static void setggain(struct gspca_dev *gspca_dev, u16 global_gain) setggain() argument
293 reg_w(gspca_dev, normalized, REG_GREEN1_GAIN); setggain()
294 reg_w(gspca_dev, normalized, REG_GREEN2_GAIN); setggain()
297 static void setbgain(struct gspca_dev *gspca_dev, setbgain() argument
313 reg_w(gspca_dev, normalized, REG_BLUE_GAIN); setbgain()
316 static void setrgain(struct gspca_dev *gspca_dev, setrgain() argument
332 reg_w(gspca_dev, normalized, REG_RED_GAIN); setrgain()
335 static void configure_wh(struct gspca_dev *gspca_dev) configure_wh() argument
337 unsigned int w = gspca_dev->pixfmt.width; configure_wh()
350 reg_w_buf(gspca_dev, configure_wh()
361 reg_w_buf(gspca_dev, configure_wh()
372 reg_w_buf(gspca_dev, configure_wh()
376 gspca_dev->usb_err = -EINVAL; configure_wh()
380 reg_w(gspca_dev, 0x0000, REG_SCALING_MODE); configure_wh()
381 reg_w(gspca_dev, 0x0010, REG_SCALE_M); configure_wh()
382 reg_w(gspca_dev, w, REG_X_OUTPUT_SIZE); configure_wh()
383 reg_w(gspca_dev, gspca_dev->pixfmt.height, REG_Y_OUTPUT_SIZE); configure_wh()
386 reg_w(gspca_dev, 0x0384, REG_FRAME_LENGTH_LINES_); configure_wh()
387 reg_w(gspca_dev, 0x0960, REG_LINE_LENGTH_PCK_); configure_wh()
389 reg_w(gspca_dev, 0x0640, REG_FRAME_LENGTH_LINES_); configure_wh()
390 reg_w(gspca_dev, 0x0FA0, REG_LINE_LENGTH_PCK_); configure_wh()
392 reg_w(gspca_dev, 0x0B4B, REG_FRAME_LENGTH_LINES_); configure_wh()
393 reg_w(gspca_dev, 0x1F40, REG_LINE_LENGTH_PCK_); configure_wh()
396 gspca_dev->usb_err = -EINVAL; configure_wh()
402 static void configure_encrypted(struct gspca_dev *gspca_dev) configure_encrypted() argument
428 PDEBUG(D_STREAM, "Encrypted begin, w = %u\n", gspca_dev->pixfmt.width); configure_encrypted()
429 reg_w_buf(gspca_dev, reg_init_begin, ARRAY_SIZE(reg_init_begin)); configure_encrypted()
430 configure_wh(gspca_dev); configure_encrypted()
431 reg_w_buf(gspca_dev, reg_init_end, ARRAY_SIZE(reg_init_end)); configure_encrypted()
432 reg_w(gspca_dev, 0x0100, REG_GROUPED_PARAMETER_HOLD); configure_encrypted()
433 reg_w(gspca_dev, 0x0000, REG_GROUPED_PARAMETER_HOLD); configure_encrypted()
438 static int configure(struct gspca_dev *gspca_dev) configure() argument
458 rc = usb_control_msg(gspca_dev->dev, usb_rcvctrlpipe(gspca_dev->dev, 0), configure()
460 if (val_reply(gspca_dev, buff, rc)) { configure()
475 rc = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), configure()
482 rc = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), configure()
489 rc = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), configure()
499 * rc = usb_control_msg(gspca_dev->dev, configure()
500 * usb_rcvctrlpipe(gspca_dev->dev, 0), configure()
505 gspca_dev->usb_err = 0; configure()
506 configure_encrypted(gspca_dev); configure()
507 if (gspca_dev->usb_err) configure()
508 return gspca_dev->usb_err; configure()
511 rc = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), configure()
522 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
525 gspca_dev->cam.cam_mode = vga_mode; sd_config()
526 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); sd_config()
529 gspca_dev->cam.no_urb_create = 0; sd_config()
530 gspca_dev->cam.bulk_nurbs = 4; sd_config()
532 gspca_dev->cam.bulk_size = BULK_SIZE; sd_config()
534 gspca_dev->cam.bulk = 1; sd_config()
539 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
541 struct sd *sd = (struct sd *) gspca_dev; sd_start()
546 rc = configure(gspca_dev); sd_start()
556 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
560 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
564 if (sd->this_f + len == gspca_dev->pixfmt.sizeimage) { sd_pkt_scan()
565 gspca_frame_add(gspca_dev, LAST_PACKET, data, len); sd_pkt_scan()
567 sd->this_f, gspca_dev->pixfmt.sizeimage, len); sd_pkt_scan()
570 gspca_frame_add(gspca_dev, DISCARD_PACKET, NULL, 0); sd_pkt_scan()
572 sd->this_f, gspca_dev->pixfmt.sizeimage, len); sd_pkt_scan()
577 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
579 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
584 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
591 struct gspca_dev *gspca_dev = sd_s_ctrl() local
592 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
593 struct sd *sd = (struct sd *) gspca_dev; sd_s_ctrl()
595 gspca_dev->usb_err = 0; sd_s_ctrl()
597 if (!gspca_dev->streaming) sd_s_ctrl()
602 setexposure(gspca_dev, ctrl->val); sd_s_ctrl()
605 /* gspca_dev->gain automatically updated */ sd_s_ctrl()
606 setggain(gspca_dev, gspca_dev->gain->val); sd_s_ctrl()
610 setbgain(gspca_dev, sd->blue->val, gspca_dev->gain->val); sd_s_ctrl()
614 setrgain(gspca_dev, sd->red->val, gspca_dev->gain->val); sd_s_ctrl()
617 return gspca_dev->usb_err; sd_s_ctrl()
624 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
626 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
627 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
629 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
632 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
636 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
H A Dvicam.c48 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
82 static int vicam_control_msg(struct gspca_dev *gspca_dev, u8 request, vicam_control_msg() argument
87 ret = usb_control_msg(gspca_dev->dev, vicam_control_msg()
88 usb_sndctrlpipe(gspca_dev->dev, 0), vicam_control_msg()
98 static int vicam_set_camera_power(struct gspca_dev *gspca_dev, int state) vicam_set_camera_power() argument
102 ret = vicam_control_msg(gspca_dev, 0x50, state, 0, NULL, 0); vicam_set_camera_power()
107 ret = vicam_control_msg(gspca_dev, 0x55, 1, 0, NULL, 0); vicam_set_camera_power()
115 static int vicam_read_frame(struct gspca_dev *gspca_dev, u8 *data, int size) vicam_read_frame() argument
118 u8 *req_data = gspca_dev->usb_buf; vicam_read_frame()
119 s32 expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure); vicam_read_frame()
120 s32 gain = v4l2_ctrl_g_ctrl(gspca_dev->gain); vicam_read_frame()
124 if (gspca_dev->pixfmt.width == 256) vicam_read_frame()
126 if (gspca_dev->pixfmt.height <= 122) { vicam_read_frame()
128 unscaled_height = gspca_dev->pixfmt.height * 2; vicam_read_frame()
130 unscaled_height = gspca_dev->pixfmt.height; vicam_read_frame()
155 mutex_lock(&gspca_dev->usb_lock); vicam_read_frame()
156 ret = vicam_control_msg(gspca_dev, 0x51, 0x80, 0, req_data, 16); vicam_read_frame()
157 mutex_unlock(&gspca_dev->usb_lock); vicam_read_frame()
161 ret = usb_bulk_msg(gspca_dev->dev, vicam_read_frame()
162 usb_rcvbulkpipe(gspca_dev->dev, 0x81), vicam_read_frame()
177 * threads attempting to use gspca_dev->usb_buf we take the usb_lock when
184 struct gspca_dev *gspca_dev = &sd->gspca_dev; vicam_dostream() local
188 frame_sz = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].sizeimage + vicam_dostream()
196 while (gspca_dev->present && gspca_dev->streaming) { vicam_dostream()
198 if (gspca_dev->frozen) vicam_dostream()
201 ret = vicam_read_frame(gspca_dev, buffer, frame_sz); vicam_dostream()
210 gspca_frame_add(gspca_dev, FIRST_PACKET, vicam_dostream()
213 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); vicam_dostream()
220 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
223 struct cam *cam = &gspca_dev->cam; sd_config()
224 struct sd *sd = (struct sd *)gspca_dev; sd_config()
238 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
246 &gspca_dev->dev->dev); sd_init()
259 ret = vicam_control_msg(gspca_dev, 0xff, 0, 0, firmware_buf, sd_init()
272 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
274 struct sd *sd = (struct sd *)gspca_dev; sd_start()
277 ret = vicam_set_camera_power(gspca_dev, 1); sd_start()
290 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
292 struct sd *dev = (struct sd *)gspca_dev; sd_stop0()
295 mutex_unlock(&gspca_dev->usb_lock); sd_stop0()
299 mutex_lock(&gspca_dev->usb_lock); sd_stop0()
301 if (gspca_dev->present) sd_stop0()
302 vicam_set_camera_power(gspca_dev, 0); sd_stop0()
305 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
307 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
309 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
311 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, NULL, sd_init_controls()
313 gspca_dev->gain = v4l2_ctrl_new_std(hdl, NULL, sd_init_controls()
H A Dmr97310a.c87 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
106 static void sd_stopN(struct gspca_dev *gspca_dev);
136 /* the bytes to write are in gspca_dev->usb_buf */ mr_write()
137 static int mr_write(struct gspca_dev *gspca_dev, int len) mr_write() argument
141 rc = usb_bulk_msg(gspca_dev->dev, mr_write()
142 usb_sndbulkpipe(gspca_dev->dev, 4), mr_write()
143 gspca_dev->usb_buf, len, NULL, 500); mr_write()
146 gspca_dev->usb_buf[0], rc); mr_write()
150 /* the bytes are read into gspca_dev->usb_buf */ mr_read()
151 static int mr_read(struct gspca_dev *gspca_dev, int len) mr_read() argument
155 rc = usb_bulk_msg(gspca_dev->dev, mr_read()
156 usb_rcvbulkpipe(gspca_dev->dev, 3), mr_read()
157 gspca_dev->usb_buf, len, NULL, 500); mr_read()
160 gspca_dev->usb_buf[0], rc); mr_read()
164 static int sensor_write_reg(struct gspca_dev *gspca_dev, u8 reg, u8 flags, sensor_write_reg() argument
167 gspca_dev->usb_buf[0] = 0x1f; sensor_write_reg()
168 gspca_dev->usb_buf[1] = flags; sensor_write_reg()
169 gspca_dev->usb_buf[2] = reg; sensor_write_reg()
170 memcpy(gspca_dev->usb_buf + 3, data, len); sensor_write_reg()
172 return mr_write(gspca_dev, len + 3); sensor_write_reg()
175 static int sensor_write_regs(struct gspca_dev *gspca_dev, sensor_write_regs() argument
181 rc = sensor_write_reg(gspca_dev, data[i].reg, data[i].flags, sensor_write_regs()
190 static int sensor_write1(struct gspca_dev *gspca_dev, u8 reg, u8 data) sensor_write1() argument
192 struct sd *sd = (struct sd *) gspca_dev; sensor_write1()
198 rc = sensor_write_reg(gspca_dev, reg, 0x01, &buf, 1); sensor_write1()
201 rc = sensor_write_reg(gspca_dev, reg, 0x00, &buf, 1); sensor_write1()
208 rc = sensor_write_reg(gspca_dev, confirm_reg, 0x00, &buf, 1); sensor_write1()
215 static int cam_get_response16(struct gspca_dev *gspca_dev, u8 reg, int verbose) cam_get_response16() argument
219 gspca_dev->usb_buf[0] = reg; cam_get_response16()
220 err_code = mr_write(gspca_dev, 1); cam_get_response16()
224 err_code = mr_read(gspca_dev, 16); cam_get_response16()
230 gspca_dev->usb_buf[0], cam_get_response16()
231 gspca_dev->usb_buf[1], cam_get_response16()
232 gspca_dev->usb_buf[2]); cam_get_response16()
237 static int zero_the_pointer(struct gspca_dev *gspca_dev) zero_the_pointer() argument
239 __u8 *data = gspca_dev->usb_buf; zero_the_pointer()
244 err_code = cam_get_response16(gspca_dev, 0x21, 0); zero_the_pointer()
250 err_code = mr_write(gspca_dev, 2); zero_the_pointer()
254 err_code = cam_get_response16(gspca_dev, 0x21, 0); zero_the_pointer()
260 err_code = mr_write(gspca_dev, 2); zero_the_pointer()
264 err_code = cam_get_response16(gspca_dev, 0x21, 0); zero_the_pointer()
270 err_code = mr_write(gspca_dev, 2); zero_the_pointer()
274 err_code = cam_get_response16(gspca_dev, 0x21, 0); zero_the_pointer()
280 err_code = mr_write(gspca_dev, 2); zero_the_pointer()
285 err_code = cam_get_response16(gspca_dev, 0x21, 0); zero_the_pointer()
298 err_code = mr_write(gspca_dev, 2); zero_the_pointer()
302 err_code = cam_get_response16(gspca_dev, 0x21, 0); zero_the_pointer()
310 err_code = mr_write(gspca_dev, 1); zero_the_pointer()
314 err_code = mr_read(gspca_dev, 16); zero_the_pointer()
321 static int stream_start(struct gspca_dev *gspca_dev) stream_start() argument
323 gspca_dev->usb_buf[0] = 0x01; stream_start()
324 gspca_dev->usb_buf[1] = 0x01; stream_start()
325 return mr_write(gspca_dev, 2); stream_start()
328 static void stream_stop(struct gspca_dev *gspca_dev) stream_stop() argument
330 gspca_dev->usb_buf[0] = 0x01; stream_stop()
331 gspca_dev->usb_buf[1] = 0x00; stream_stop()
332 if (mr_write(gspca_dev, 2) < 0) stream_stop()
336 static void lcd_stop(struct gspca_dev *gspca_dev) lcd_stop() argument
338 gspca_dev->usb_buf[0] = 0x19; lcd_stop()
339 gspca_dev->usb_buf[1] = 0x54; lcd_stop()
340 if (mr_write(gspca_dev, 2) < 0) lcd_stop()
344 static int isoc_enable(struct gspca_dev *gspca_dev) isoc_enable() argument
346 gspca_dev->usb_buf[0] = 0x00; isoc_enable()
347 gspca_dev->usb_buf[1] = 0x4d; /* ISOC transferring enable... */ isoc_enable()
348 return mr_write(gspca_dev, 2); isoc_enable()
352 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
355 struct sd *sd = (struct sd *) gspca_dev; sd_config()
359 cam = &gspca_dev->cam; sd_config()
372 err_code = zero_the_pointer(gspca_dev); sd_config()
376 err_code = stream_start(gspca_dev); sd_config()
381 err_code = cam_get_response16(gspca_dev, 0x07, 1); sd_config()
409 switch (gspca_dev->usb_buf[0]) { sd_config()
418 gspca_dev->usb_buf[1]); sd_config()
431 * Name gspca_dev->usb_buf[] sd->sensor_type sd_config()
448 if (gspca_dev->usb_buf[0] == 0x01) { sd_config()
450 } else if ((gspca_dev->usb_buf[0] != 0x03) && sd_config()
451 (gspca_dev->usb_buf[0] != 0x04)) { sd_config()
453 gspca_dev->usb_buf[0]); sd_config()
458 if ((gspca_dev->usb_buf[0] == 0x03) && sd_config()
459 (gspca_dev->usb_buf[1] == 0x50)) sd_config()
461 if (gspca_dev->usb_buf[0] == 0x04) { sd_config()
463 switch (gspca_dev->usb_buf[1]) { sd_config()
473 gspca_dev->usb_buf[1]); sd_config()
482 sd_stopN(gspca_dev); sd_config()
494 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
499 static int start_cif_cam(struct gspca_dev *gspca_dev) start_cif_cam() argument
501 struct sd *sd = (struct sd *) gspca_dev; start_cif_cam()
502 __u8 *data = gspca_dev->usb_buf; start_cif_cam()
524 switch (gspca_dev->pixfmt.width) { start_cif_cam()
545 err_code = mr_write(gspca_dev, 11); start_cif_cam()
568 err_code = sensor_write_regs(gspca_dev, cif_sensor0_init_data, start_cif_cam()
590 gspca_dev->usb_buf[0] = 0x0a; start_cif_cam()
591 gspca_dev->usb_buf[1] = 0x00; start_cif_cam()
592 err_code = mr_write(gspca_dev, 2); start_cif_cam()
595 err_code = sensor_write_regs(gspca_dev, cif_sensor1_init_data, start_cif_cam()
601 static int start_vga_cam(struct gspca_dev *gspca_dev) start_vga_cam() argument
603 struct sd *sd = (struct sd *) gspca_dev; start_vga_cam()
604 __u8 *data = gspca_dev->usb_buf; start_vga_cam()
621 switch (gspca_dev->pixfmt.width) { start_vga_cam()
655 err_code = mr_write(gspca_dev, 11); start_vga_cam()
668 err_code = sensor_write_regs(gspca_dev, vga_sensor0_init_data, start_vga_cam()
697 err_code = sensor_write_regs(gspca_dev, color_adj, start_vga_cam()
700 err_code = sensor_write_regs(gspca_dev, color_no_adj, start_vga_cam()
706 err_code = sensor_write_regs(gspca_dev, vga_sensor1_init_data, start_vga_cam()
748 err_code = sensor_write_regs(gspca_dev, vga_sensor2_init_data, start_vga_cam()
754 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
756 struct sd *sd = (struct sd *) gspca_dev; sd_start()
765 err_code = zero_the_pointer(gspca_dev); sd_start()
769 err_code = stream_start(gspca_dev); sd_start()
774 err_code = start_cif_cam(gspca_dev); sd_start()
776 err_code = start_vga_cam(gspca_dev); sd_start()
781 return isoc_enable(gspca_dev); sd_start()
784 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
786 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
788 stream_stop(gspca_dev); sd_stopN()
790 zero_the_pointer(gspca_dev); sd_stopN()
792 lcd_stop(gspca_dev); sd_stopN()
795 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
797 struct sd *sd = (struct sd *) gspca_dev; setbrightness()
810 sensor_write1(gspca_dev, sign_reg, 0x00); setbrightness()
812 sensor_write1(gspca_dev, sign_reg, 0x01); setbrightness()
819 sensor_write1(gspca_dev, value_reg, val); setbrightness()
822 static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 min_clockdiv) setexposure() argument
824 struct sd *sd = (struct sd *) gspca_dev; setexposure()
832 sensor_write1(gspca_dev, 3, exposure >> 4); setexposure()
833 sensor_write1(gspca_dev, 4, exposure & 0x0f); setexposure()
837 sensor_write1(gspca_dev, 3, exposure >> 8); setexposure()
838 sensor_write1(gspca_dev, 4, exposure & 0xff); setexposure()
850 if (clockdiv < min_clockdiv && gspca_dev->pixfmt.width >= 320) setexposure()
869 sensor_write_reg(gspca_dev, 0x0e, 0, buf, 2); setexposure()
870 sensor_write1(gspca_dev, 0x02, clockdiv); setexposure()
874 static void setgain(struct gspca_dev *gspca_dev, s32 val) setgain() argument
876 struct sd *sd = (struct sd *) gspca_dev; setgain()
880 sensor_write1(gspca_dev, 0x0e, val); setgain()
883 sensor_write1(gspca_dev, gainreg, val >> 8); setgain()
884 sensor_write1(gspca_dev, gainreg + 1, val & 0xff); setgain()
887 sensor_write1(gspca_dev, 0x10, val); setgain()
890 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
892 sensor_write1(gspca_dev, 0x1c, val); setcontrast()
897 struct gspca_dev *gspca_dev = sd_s_ctrl() local
898 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
899 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
901 gspca_dev->usb_err = 0; sd_s_ctrl()
903 if (!gspca_dev->streaming) sd_s_ctrl()
908 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
911 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
914 setexposure(gspca_dev, sd->exposure->val, sd_s_ctrl()
918 setgain(gspca_dev, ctrl->val); sd_s_ctrl()
921 return gspca_dev->usb_err; sd_s_ctrl()
928 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
930 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
931 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
950 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
1022 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
1026 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
1029 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len); sd_pkt_scan()
1039 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
1042 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
1047 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
H A Dov534_9.c52 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
1119 static void reg_w_i(struct gspca_dev *gspca_dev, u16 reg, u8 val) reg_w_i() argument
1121 struct usb_device *udev = gspca_dev->dev; reg_w_i()
1124 if (gspca_dev->usb_err < 0) reg_w_i()
1126 gspca_dev->usb_buf[0] = val; reg_w_i()
1131 0x00, reg, gspca_dev->usb_buf, 1, CTRL_TIMEOUT); reg_w_i()
1134 gspca_dev->usb_err = ret; reg_w_i()
1138 static void reg_w(struct gspca_dev *gspca_dev, u16 reg, u8 val) reg_w() argument
1141 reg_w_i(gspca_dev, reg, val); reg_w()
1144 static u8 reg_r(struct gspca_dev *gspca_dev, u16 reg) reg_r() argument
1146 struct usb_device *udev = gspca_dev->dev; reg_r()
1149 if (gspca_dev->usb_err < 0) reg_r()
1155 0x00, reg, gspca_dev->usb_buf, 1, CTRL_TIMEOUT); reg_r()
1156 PDEBUG(D_USBI, "reg_r [%04x] -> %02x", reg, gspca_dev->usb_buf[0]); reg_r()
1159 gspca_dev->usb_err = ret; reg_r()
1161 return gspca_dev->usb_buf[0]; reg_r()
1164 static int sccb_check_status(struct gspca_dev *gspca_dev) sccb_check_status() argument
1171 data = reg_r(gspca_dev, OV534_REG_STATUS); sccb_check_status()
1189 static void sccb_write(struct gspca_dev *gspca_dev, u8 reg, u8 val) sccb_write() argument
1192 reg_w_i(gspca_dev, OV534_REG_SUBADDR, reg); sccb_write()
1193 reg_w_i(gspca_dev, OV534_REG_WRITE, val); sccb_write()
1194 reg_w_i(gspca_dev, OV534_REG_OPERATION, OV534_OP_WRITE_3); sccb_write()
1196 if (!sccb_check_status(gspca_dev)) sccb_write()
1200 static u8 sccb_read(struct gspca_dev *gspca_dev, u16 reg) sccb_read() argument
1202 reg_w(gspca_dev, OV534_REG_SUBADDR, reg); sccb_read()
1203 reg_w(gspca_dev, OV534_REG_OPERATION, OV534_OP_WRITE_2); sccb_read()
1204 if (!sccb_check_status(gspca_dev)) sccb_read()
1207 reg_w(gspca_dev, OV534_REG_OPERATION, OV534_OP_READ_2); sccb_read()
1208 if (!sccb_check_status(gspca_dev)) sccb_read()
1211 return reg_r(gspca_dev, OV534_REG_READ); sccb_read()
1215 static void reg_w_array(struct gspca_dev *gspca_dev, reg_w_array() argument
1219 reg_w(gspca_dev, (*data)[0], (*data)[1]); reg_w_array()
1225 static void sccb_w_array(struct gspca_dev *gspca_dev, sccb_w_array() argument
1230 sccb_write(gspca_dev, (*data)[0], (*data)[1]); sccb_w_array()
1232 sccb_read(gspca_dev, (*data)[1]); sccb_w_array()
1233 sccb_write(gspca_dev, 0xff, 0x00); sccb_w_array()
1241 static void set_led(struct gspca_dev *gspca_dev, int status) set_led() argument
1247 data = reg_r(gspca_dev, 0x21); set_led()
1249 reg_w(gspca_dev, 0x21, data); set_led()
1251 data = reg_r(gspca_dev, 0x23); set_led()
1257 reg_w(gspca_dev, 0x23, data); set_led()
1260 data = reg_r(gspca_dev, 0x21); set_led()
1262 reg_w(gspca_dev, 0x21, data); set_led()
1266 static void setbrightness(struct gspca_dev *gspca_dev, s32 brightness) setbrightness() argument
1268 struct sd *sd = (struct sd *) gspca_dev; setbrightness()
1276 sccb_write(gspca_dev, 0x24, val); setbrightness()
1279 sccb_write(gspca_dev, 0x25, val); setbrightness()
1286 sccb_write(gspca_dev, 0x26, val); setbrightness()
1293 sccb_write(gspca_dev, 0x55, /* brtn - brightness adjustment */ setbrightness()
1298 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
1300 sccb_write(gspca_dev, 0x56, /* cnst1 - contrast 1 ctrl coeff */ setcontrast()
1304 static void setautogain(struct gspca_dev *gspca_dev, s32 autogain) setautogain() argument
1309 val = sccb_read(gspca_dev, 0x13); /* com8 */ setautogain()
1310 sccb_write(gspca_dev, 0xff, 0x00); setautogain()
1315 sccb_write(gspca_dev, 0x13, val); setautogain()
1318 static void setexposure(struct gspca_dev *gspca_dev, s32 exposure) setexposure() argument
1323 sccb_write(gspca_dev, 0x10, expo[exposure]); /* aec[9:2] */ setexposure()
1325 val = sccb_read(gspca_dev, 0x13); /* com8 */ setexposure()
1326 sccb_write(gspca_dev, 0xff, 0x00); setexposure()
1327 sccb_write(gspca_dev, 0x13, val); setexposure()
1329 val = sccb_read(gspca_dev, 0xa1); /* aech */ setexposure()
1330 sccb_write(gspca_dev, 0xff, 0x00); setexposure()
1331 sccb_write(gspca_dev, 0xa1, val & 0xe0); /* aec[15:10] = 0 */ setexposure()
1334 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) setsharpness() argument
1337 val = sccb_read(gspca_dev, 0x42); /* com17 */ setsharpness()
1338 sccb_write(gspca_dev, 0xff, 0x00); setsharpness()
1339 sccb_write(gspca_dev, 0x42, val | 0x40); setsharpness()
1345 sccb_write(gspca_dev, 0x3f, /* edge - edge enhance. factor */ setsharpness()
1347 val = sccb_read(gspca_dev, 0x42); /* com17 */ setsharpness()
1348 sccb_write(gspca_dev, 0xff, 0x00); setsharpness()
1349 sccb_write(gspca_dev, 0x42, val & 0xbf); setsharpness()
1352 static void setsatur(struct gspca_dev *gspca_dev, s32 val) setsatur() argument
1366 sccb_write(gspca_dev, 0x4f, val3); /* matrix coeff */ setsatur()
1367 sccb_write(gspca_dev, 0x50, val3); setsatur()
1368 sccb_write(gspca_dev, 0x51, 0x00); setsatur()
1369 sccb_write(gspca_dev, 0x52, val1); setsatur()
1370 sccb_write(gspca_dev, 0x53, val2); setsatur()
1371 sccb_write(gspca_dev, 0x54, val3); setsatur()
1372 sccb_write(gspca_dev, 0x58, 0x1a); /* mtxs - coeff signs */ setsatur()
1374 val1 = sccb_read(gspca_dev, 0x41); /* com16 */ setsatur()
1375 sccb_write(gspca_dev, 0xff, 0x00); setsatur()
1376 sccb_write(gspca_dev, 0x41, val1); setsatur()
1379 static void setlightfreq(struct gspca_dev *gspca_dev, s32 freq) setlightfreq() argument
1383 val = sccb_read(gspca_dev, 0x13); /* com8 */ setlightfreq()
1384 sccb_write(gspca_dev, 0xff, 0x00); setlightfreq()
1386 sccb_write(gspca_dev, 0x13, val & 0xdf); setlightfreq()
1389 sccb_write(gspca_dev, 0x13, val | 0x20); setlightfreq()
1391 val = sccb_read(gspca_dev, 0x42); /* com17 */ setlightfreq()
1392 sccb_write(gspca_dev, 0xff, 0x00); setlightfreq()
1397 sccb_write(gspca_dev, 0x42, val); setlightfreq()
1401 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
1408 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
1410 struct sd *sd = (struct sd *) gspca_dev; sd_init()
1414 reg_w(gspca_dev, 0xe7, 0x3a); sd_init()
1415 reg_w(gspca_dev, 0xe0, 0x08); sd_init()
1419 reg_w(gspca_dev, OV534_REG_ADDRESS, 0x60); sd_init()
1422 sccb_write(gspca_dev, 0x12, 0x80); sd_init()
1426 sccb_read(gspca_dev, 0x0a); sd_init()
1427 sensor_id = sccb_read(gspca_dev, 0x0a) << 8; sd_init()
1428 sccb_read(gspca_dev, 0x0b); sd_init()
1429 sensor_id |= sccb_read(gspca_dev, 0x0b); sd_init()
1436 gspca_dev->cam.cam_mode = ov965x_mode; sd_init()
1437 gspca_dev->cam.nmodes = ARRAY_SIZE(ov965x_mode); sd_init()
1439 reg_w_array(gspca_dev, bridge_init, sd_init()
1441 sccb_w_array(gspca_dev, ov965x_init, sd_init()
1443 reg_w_array(gspca_dev, bridge_init_2, sd_init()
1445 sccb_w_array(gspca_dev, ov965x_init_2, sd_init()
1447 reg_w(gspca_dev, 0xe0, 0x00); sd_init()
1448 reg_w(gspca_dev, 0xe0, 0x01); sd_init()
1449 set_led(gspca_dev, 0); sd_init()
1450 reg_w(gspca_dev, 0xe0, 0x00); sd_init()
1457 gspca_dev->cam.cam_mode = ov971x_mode; sd_init()
1458 gspca_dev->cam.nmodes = ARRAY_SIZE(ov971x_mode); sd_init()
1460 gspca_dev->cam.bulk = 1; sd_init()
1461 gspca_dev->cam.bulk_size = 16384; sd_init()
1462 gspca_dev->cam.bulk_nurbs = 2; sd_init()
1464 sccb_w_array(gspca_dev, ov971x_init, sd_init()
1469 reg_w(gspca_dev, 0x1c, 0x00); sd_init()
1471 reg_w(gspca_dev, 0x1d, 0x00); sd_init()
1477 p = video_device_node_name(&gspca_dev->vdev); sd_init()
1480 reg_w(gspca_dev, 0x56, 0x1f); sd_init()
1482 reg_w(gspca_dev, 0x56, 0x17); sd_init()
1485 gspca_dev->cam.cam_mode = ov562x_mode; sd_init()
1486 gspca_dev->cam.nmodes = ARRAY_SIZE(ov562x_mode); sd_init()
1488 reg_w_array(gspca_dev, ov562x_init, sd_init()
1490 sccb_w_array(gspca_dev, ov562x_init_2, sd_init()
1492 reg_w(gspca_dev, 0xe0, 0x00); sd_init()
1495 gspca_dev->cam.cam_mode = ov361x_mode; sd_init()
1496 gspca_dev->cam.nmodes = ARRAY_SIZE(ov361x_mode); sd_init()
1497 reg_w(gspca_dev, 0xe7, 0x3a); sd_init()
1498 reg_w(gspca_dev, 0xf1, 0x60); sd_init()
1499 sccb_write(gspca_dev, 0x12, 0x80); sd_init()
1505 return gspca_dev->usb_err; sd_init()
1508 static int sd_start_ov361x(struct gspca_dev *gspca_dev) sd_start_ov361x() argument
1510 sccb_write(gspca_dev, 0x12, 0x80); sd_start_ov361x()
1512 switch (gspca_dev->curr_mode % (ov361x_last)) { sd_start_ov361x()
1514 reg_w_array(gspca_dev, ov361x_bridge_start_2048, sd_start_ov361x()
1516 sccb_w_array(gspca_dev, ov361x_start_2048, sd_start_ov361x()
1520 reg_w_array(gspca_dev, ov361x_bridge_start_1600, sd_start_ov361x()
1522 sccb_w_array(gspca_dev, ov361x_start_1600, sd_start_ov361x()
1526 reg_w_array(gspca_dev, ov361x_bridge_start_1024, sd_start_ov361x()
1528 sccb_w_array(gspca_dev, ov361x_start_1024, sd_start_ov361x()
1532 reg_w_array(gspca_dev, ov361x_bridge_start_640, sd_start_ov361x()
1534 sccb_w_array(gspca_dev, ov361x_start_640, sd_start_ov361x()
1538 reg_w_array(gspca_dev, ov361x_bridge_start_320, sd_start_ov361x()
1540 sccb_w_array(gspca_dev, ov361x_start_320, sd_start_ov361x()
1544 reg_w_array(gspca_dev, ov361x_bridge_start_160, sd_start_ov361x()
1546 sccb_w_array(gspca_dev, ov361x_start_160, sd_start_ov361x()
1550 reg_w(gspca_dev, 0xe0, 0x00); /* start transfer */ sd_start_ov361x()
1552 return gspca_dev->usb_err; sd_start_ov361x()
1555 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
1557 struct sd *sd = (struct sd *) gspca_dev; sd_start()
1560 return gspca_dev->usb_err; sd_start()
1562 return gspca_dev->usb_err; sd_start()
1564 return sd_start_ov361x(gspca_dev); sd_start()
1566 switch (gspca_dev->curr_mode) { sd_start()
1568 sccb_w_array(gspca_dev, ov965x_start_1_vga, sd_start()
1570 reg_w_array(gspca_dev, bridge_start_qvga, sd_start()
1572 sccb_w_array(gspca_dev, ov965x_start_2_qvga, sd_start()
1576 sccb_w_array(gspca_dev, ov965x_start_1_vga, sd_start()
1578 reg_w_array(gspca_dev, bridge_start_vga, sd_start()
1580 sccb_w_array(gspca_dev, ov965x_start_2_vga, sd_start()
1584 sccb_w_array(gspca_dev, ov965x_start_1_svga, sd_start()
1586 reg_w_array(gspca_dev, bridge_start_svga, sd_start()
1588 sccb_w_array(gspca_dev, ov965x_start_2_svga, sd_start()
1592 sccb_w_array(gspca_dev, ov965x_start_1_xga, sd_start()
1594 reg_w_array(gspca_dev, bridge_start_xga, sd_start()
1596 sccb_w_array(gspca_dev, ov965x_start_2_svga, sd_start()
1601 sccb_w_array(gspca_dev, ov965x_start_1_sxga, sd_start()
1603 reg_w_array(gspca_dev, bridge_start_sxga, sd_start()
1605 sccb_w_array(gspca_dev, ov965x_start_2_sxga, sd_start()
1610 reg_w(gspca_dev, 0xe0, 0x00); sd_start()
1611 reg_w(gspca_dev, 0xe0, 0x00); sd_start()
1612 set_led(gspca_dev, 1); sd_start()
1613 return gspca_dev->usb_err; sd_start()
1616 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
1618 if (((struct sd *)gspca_dev)->sensor == SENSOR_OV361x) { sd_stopN()
1619 reg_w(gspca_dev, 0xe0, 0x01); /* stop transfer */ sd_stopN()
1620 /* reg_w(gspca_dev, 0x31, 0x09); */ sd_stopN()
1623 reg_w(gspca_dev, 0xe0, 0x01); sd_stopN()
1624 set_led(gspca_dev, 0); sd_stopN()
1625 reg_w(gspca_dev, 0xe0, 0x00); sd_stopN()
1638 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
1641 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
1647 payload_len = gspca_dev->cam.bulk ? 2048 : 2040; sd_pkt_scan()
1679 if (gspca_dev->last_packet_type == INTER_PACKET) sd_pkt_scan()
1680 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
1684 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
1689 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
1694 gspca_frame_add(gspca_dev, INTER_PACKET, sd_pkt_scan()
1703 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
1713 struct gspca_dev *gspca_dev = sd_s_ctrl() local
1714 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
1716 gspca_dev->usb_err = 0; sd_s_ctrl()
1718 if (!gspca_dev->streaming) sd_s_ctrl()
1723 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
1726 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
1729 setsatur(gspca_dev, ctrl->val); sd_s_ctrl()
1732 setlightfreq(gspca_dev, ctrl->val); sd_s_ctrl()
1735 setsharpness(gspca_dev, ctrl->val); sd_s_ctrl()
1739 setautogain(gspca_dev, ctrl->val); sd_s_ctrl()
1740 if (!ctrl->val && gspca_dev->exposure->is_new) sd_s_ctrl()
1741 setexposure(gspca_dev, gspca_dev->exposure->val); sd_s_ctrl()
1744 return gspca_dev->usb_err; sd_s_ctrl()
1751 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
1753 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
1754 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
1760 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
1775 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1777 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1782 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); sd_init_controls()
H A Dpac7302.c114 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
246 static void reg_w_buf(struct gspca_dev *gspca_dev, reg_w_buf() argument
252 if (gspca_dev->usb_err < 0) reg_w_buf()
254 memcpy(gspca_dev->usb_buf, buffer, len); reg_w_buf()
255 ret = usb_control_msg(gspca_dev->dev, reg_w_buf()
256 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w_buf()
260 index, gspca_dev->usb_buf, len, reg_w_buf()
265 gspca_dev->usb_err = ret; reg_w_buf()
270 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
276 if (gspca_dev->usb_err < 0) reg_w()
278 gspca_dev->usb_buf[0] = value; reg_w()
279 ret = usb_control_msg(gspca_dev->dev, reg_w()
280 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w()
283 0, index, gspca_dev->usb_buf, 1, reg_w()
288 gspca_dev->usb_err = ret; reg_w()
292 static void reg_w_seq(struct gspca_dev *gspca_dev, reg_w_seq() argument
296 reg_w(gspca_dev, seq[0], seq[1]); reg_w_seq()
302 static void reg_w_page(struct gspca_dev *gspca_dev, reg_w_page() argument
308 if (gspca_dev->usb_err < 0) reg_w_page()
313 gspca_dev->usb_buf[0] = page[index]; reg_w_page()
314 ret = usb_control_msg(gspca_dev->dev, reg_w_page()
315 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w_page()
318 0, index, gspca_dev->usb_buf, 1, reg_w_page()
323 gspca_dev->usb_err = ret; reg_w_page()
330 static void reg_w_var(struct gspca_dev *gspca_dev, reg_w_var() argument
343 reg_w_page(gspca_dev, page3, page3_len); reg_w_var()
352 reg_w_buf(gspca_dev, reg_w_var()
357 reg_w_buf(gspca_dev, index, seq, 8); reg_w_var()
368 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
371 struct sd *sd = (struct sd *) gspca_dev; sd_config()
374 cam = &gspca_dev->cam; sd_config()
383 static void setbrightcont(struct gspca_dev *gspca_dev) setbrightcont() argument
385 struct sd *sd = (struct sd *) gspca_dev; setbrightcont()
394 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ setbrightcont()
404 reg_w(gspca_dev, 0xa2 + i, v); setbrightcont()
406 reg_w(gspca_dev, 0xdc, 0x01); setbrightcont()
409 static void setcolors(struct gspca_dev *gspca_dev) setcolors() argument
411 struct sd *sd = (struct sd *) gspca_dev; setcolors()
418 reg_w(gspca_dev, 0xff, 0x03); /* page 3 */ setcolors()
419 reg_w(gspca_dev, 0x11, 0x01); setcolors()
420 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ setcolors()
424 reg_w(gspca_dev, 0x0f + 2 * i, (v >> 8) & 0x07); setcolors()
425 reg_w(gspca_dev, 0x0f + 2 * i + 1, v); setcolors()
427 reg_w(gspca_dev, 0xdc, 0x01); setcolors()
430 static void setwhitebalance(struct gspca_dev *gspca_dev) setwhitebalance() argument
432 struct sd *sd = (struct sd *) gspca_dev; setwhitebalance()
434 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ setwhitebalance()
435 reg_w(gspca_dev, 0xc6, sd->white_balance->val); setwhitebalance()
437 reg_w(gspca_dev, 0xdc, 0x01); setwhitebalance()
458 static void setredbalance(struct gspca_dev *gspca_dev) setredbalance() argument
460 struct sd *sd = (struct sd *) gspca_dev; setredbalance()
462 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ setredbalance()
463 reg_w(gspca_dev, 0x01, setredbalance()
466 reg_w(gspca_dev, 0xdc, 0x01); setredbalance()
469 static void setbluebalance(struct gspca_dev *gspca_dev) setbluebalance() argument
471 struct sd *sd = (struct sd *) gspca_dev; setbluebalance()
473 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ setbluebalance()
474 reg_w(gspca_dev, 0x03, setbluebalance()
477 reg_w(gspca_dev, 0xdc, 0x01); setbluebalance()
480 static void setgain(struct gspca_dev *gspca_dev) setgain() argument
484 if (gspca_dev->gain->val < 32) { setgain()
485 reg10 = gspca_dev->gain->val; setgain()
489 reg12 = gspca_dev->gain->val - 31; setgain()
492 reg_w(gspca_dev, 0xff, 0x03); /* page 3 */ setgain()
493 reg_w(gspca_dev, 0x10, reg10); setgain()
494 reg_w(gspca_dev, 0x12, reg12); setgain()
497 reg_w(gspca_dev, 0x11, 0x01); setgain()
500 static void setexposure(struct gspca_dev *gspca_dev) setexposure() argument
510 clockdiv = (90 * gspca_dev->exposure->val + 1999) / 2000; setexposure()
535 exposure = (gspca_dev->exposure->val * 45 * 448) / (1000 * clockdiv); setexposure()
539 reg_w(gspca_dev, 0xff, 0x03); /* page 3 */ setexposure()
540 reg_w(gspca_dev, 0x02, clockdiv); setexposure()
541 reg_w(gspca_dev, 0x0e, exposure & 0xff); setexposure()
542 reg_w(gspca_dev, 0x0f, exposure >> 8); setexposure()
545 reg_w(gspca_dev, 0x11, 0x01); setexposure()
548 static void sethvflip(struct gspca_dev *gspca_dev) sethvflip() argument
550 struct sd *sd = (struct sd *) gspca_dev; sethvflip()
560 reg_w(gspca_dev, 0xff, 0x03); /* page 3 */ sethvflip()
562 reg_w(gspca_dev, 0x21, data); sethvflip()
565 reg_w(gspca_dev, 0x11, 0x01); sethvflip()
568 static void setsharpness(struct gspca_dev *gspca_dev) setsharpness() argument
570 struct sd *sd = (struct sd *) gspca_dev; setsharpness()
572 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ setsharpness()
573 reg_w(gspca_dev, 0xb6, sd->sharpness->val); setsharpness()
575 reg_w(gspca_dev, 0xdc, 0x01); setsharpness()
579 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
581 reg_w_seq(gspca_dev, init_7302, sizeof(init_7302)/2); sd_init()
582 return gspca_dev->usb_err; sd_init()
587 struct gspca_dev *gspca_dev = sd_s_ctrl() local
588 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
589 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
591 gspca_dev->usb_err = 0; sd_s_ctrl()
598 gspca_dev->exposure->val = PAC7302_EXPOSURE_DEFAULT; sd_s_ctrl()
599 gspca_dev->gain->val = PAC7302_GAIN_DEFAULT; sd_s_ctrl()
603 if (!gspca_dev->streaming) sd_s_ctrl()
608 setbrightcont(gspca_dev); sd_s_ctrl()
611 setcolors(gspca_dev); sd_s_ctrl()
614 setwhitebalance(gspca_dev); sd_s_ctrl()
617 setredbalance(gspca_dev); sd_s_ctrl()
620 setbluebalance(gspca_dev); sd_s_ctrl()
623 if (gspca_dev->exposure->is_new || (ctrl->is_new && ctrl->val)) sd_s_ctrl()
624 setexposure(gspca_dev); sd_s_ctrl()
625 if (gspca_dev->gain->is_new || (ctrl->is_new && ctrl->val)) sd_s_ctrl()
626 setgain(gspca_dev); sd_s_ctrl()
629 sethvflip(gspca_dev); sd_s_ctrl()
632 setsharpness(gspca_dev); sd_s_ctrl()
637 return gspca_dev->usb_err; sd_s_ctrl()
645 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
647 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
648 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
650 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
674 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
676 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
679 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
697 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); sd_init_controls()
703 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
705 struct sd *sd = (struct sd *) gspca_dev; sd_start()
707 reg_w_var(gspca_dev, start_7302, sd_start()
715 reg_w(gspca_dev, 0xff, 0x01); sd_start()
716 reg_w(gspca_dev, 0x78, 0x01); sd_start()
718 return gspca_dev->usb_err; sd_start()
721 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
725 reg_w(gspca_dev, 0xff, 0x01); sd_stopN()
726 reg_w(gspca_dev, 0x78, 0x00); sd_stopN()
730 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
732 if (!gspca_dev->present) sd_stop0()
734 reg_w(gspca_dev, 0xff, 0x01); sd_stop0()
735 reg_w(gspca_dev, 0x78, 0x40); sd_stop0()
738 static void do_autogain(struct gspca_dev *gspca_dev) do_autogain() argument
740 struct sd *sd = (struct sd *) gspca_dev; do_autogain()
753 if (gspca_expo_autogain(gspca_dev, avg_lum, desired_lum, do_autogain()
786 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
790 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
794 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len); sd_pkt_scan()
810 gspca_dev->image_len += n; sd_pkt_scan()
813 gspca_frame_add(gspca_dev, INTER_PACKET, data, n); sd_pkt_scan()
816 image = gspca_dev->image; sd_pkt_scan()
818 && image[gspca_dev->image_len - 2] == 0xff sd_pkt_scan()
819 && image[gspca_dev->image_len - 1] == 0xd9) sd_pkt_scan()
820 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
827 if (gspca_dev->last_packet_type == LAST_PACKET && sd_pkt_scan()
834 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
837 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
841 static int sd_dbg_s_register(struct gspca_dev *gspca_dev, sd_dbg_s_register() argument
865 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ sd_dbg_s_register()
866 reg_w(gspca_dev, index, value); sd_dbg_s_register()
868 reg_w(gspca_dev, 0xdc, 0x01); sd_dbg_s_register()
870 return gspca_dev->usb_err; sd_dbg_s_register()
875 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, sd_int_pkt_scan() argument
893 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); sd_int_pkt_scan()
894 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
895 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_int_pkt_scan()
896 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
H A Dkinect.c61 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
133 static int send_cmd(struct gspca_dev *gspca_dev, uint16_t cmd, void *cmdbuf, send_cmd() argument
136 struct sd *sd = (struct sd *) gspca_dev; send_cmd()
137 struct usb_device *udev = gspca_dev->dev; send_cmd()
210 static int write_register(struct gspca_dev *gspca_dev, uint16_t reg, write_register() argument
221 res = send_cmd(gspca_dev, 0x03, cmd, 4, reply, 4); write_register()
232 static int sd_config_video(struct gspca_dev *gspca_dev, sd_config_video() argument
235 struct sd *sd = (struct sd *) gspca_dev; sd_config_video()
242 cam = &gspca_dev->cam; sd_config_video()
247 gspca_dev->xfer_ep = 0x81; sd_config_video()
252 gspca_dev->pkt_size = 960 * 2; sd_config_video()
258 static int sd_config_depth(struct gspca_dev *gspca_dev, sd_config_depth() argument
261 struct sd *sd = (struct sd *) gspca_dev; sd_config_depth()
268 cam = &gspca_dev->cam; sd_config_depth()
273 gspca_dev->xfer_ep = 0x82; sd_config_depth()
279 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
286 static int sd_start_video(struct gspca_dev *gspca_dev) sd_start_video() argument
294 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_start_video()
326 write_register(gspca_dev, 0x105, 0x00); sd_start_video()
329 write_register(gspca_dev, 0x05, 0x00); sd_start_video()
339 write_register(gspca_dev, 0x13, 0x01); sd_start_video()
340 write_register(gspca_dev, 0x14, 0x1e); sd_start_video()
341 write_register(gspca_dev, 0x06, 0x02); sd_start_video()
342 write_register(gspca_dev, 0x06, 0x00); sd_start_video()
345 write_register(gspca_dev, fmt_reg, fmt_val); sd_start_video()
346 write_register(gspca_dev, res_reg, res_val); sd_start_video()
347 write_register(gspca_dev, fps_reg, fps_val); sd_start_video()
350 write_register(gspca_dev, 0x05, mode_val); sd_start_video()
353 write_register(gspca_dev, 0x47, 0x00); sd_start_video()
358 static int sd_start_depth(struct gspca_dev *gspca_dev) sd_start_depth() argument
361 write_register(gspca_dev, 0x105, 0x00); sd_start_depth()
364 write_register(gspca_dev, 0x06, 0x00); sd_start_depth()
366 write_register(gspca_dev, 0x12, 0x02); sd_start_depth()
368 write_register(gspca_dev, 0x13, 0x01); sd_start_depth()
370 write_register(gspca_dev, 0x14, 0x1e); sd_start_depth()
372 write_register(gspca_dev, 0x06, 0x02); sd_start_depth()
374 write_register(gspca_dev, 0x17, 0x00); sd_start_depth()
379 static void sd_stopN_video(struct gspca_dev *gspca_dev) sd_stopN_video() argument
382 write_register(gspca_dev, 0x05, 0x00); sd_stopN_video()
385 static void sd_stopN_depth(struct gspca_dev *gspca_dev) sd_stopN_depth() argument
388 write_register(gspca_dev, 0x06, 0x00); sd_stopN_depth()
391 static void sd_pkt_scan(struct gspca_dev *gspca_dev, u8 *__data, int len) sd_pkt_scan() argument
393 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
413 gspca_frame_add(gspca_dev, FIRST_PACKET, data, datalen); sd_pkt_scan()
416 gspca_frame_add(gspca_dev, INTER_PACKET, data, datalen); sd_pkt_scan()
419 gspca_frame_add(gspca_dev, LAST_PACKET, data, datalen); sd_pkt_scan()
H A Dsq905.c86 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
116 static int sq905_command(struct gspca_dev *gspca_dev, u16 index) sq905_command() argument
120 gspca_dev->usb_buf[0] = '\0'; sq905_command()
121 ret = usb_control_msg(gspca_dev->dev, sq905_command()
122 usb_sndctrlpipe(gspca_dev->dev, 0), sq905_command()
125 SQ905_COMMAND, index, gspca_dev->usb_buf, 1, sq905_command()
132 ret = usb_control_msg(gspca_dev->dev, sq905_command()
133 usb_sndctrlpipe(gspca_dev->dev, 0), sq905_command()
136 SQ905_PING, 0, gspca_dev->usb_buf, 1, sq905_command()
149 static int sq905_ack_frame(struct gspca_dev *gspca_dev) sq905_ack_frame() argument
153 gspca_dev->usb_buf[0] = '\0'; sq905_ack_frame()
154 ret = usb_control_msg(gspca_dev->dev, sq905_ack_frame()
155 usb_sndctrlpipe(gspca_dev->dev, 0), sq905_ack_frame()
158 SQ905_READ_DONE, 0, gspca_dev->usb_buf, 1, sq905_ack_frame()
172 sq905_read_data(struct gspca_dev *gspca_dev, u8 *data, int size, int need_lock) sq905_read_data() argument
177 gspca_dev->usb_buf[0] = '\0'; sq905_read_data()
179 mutex_lock(&gspca_dev->usb_lock); sq905_read_data()
180 ret = usb_control_msg(gspca_dev->dev, sq905_read_data()
181 usb_sndctrlpipe(gspca_dev->dev, 0), sq905_read_data()
184 SQ905_BULK_READ, size, gspca_dev->usb_buf, sq905_read_data()
187 mutex_unlock(&gspca_dev->usb_lock); sq905_read_data()
192 ret = usb_bulk_msg(gspca_dev->dev, sq905_read_data()
193 usb_rcvbulkpipe(gspca_dev->dev, 0x81), sq905_read_data()
208 * threads attempting to use gspca_dev->usb_buf we take the usb_lock when
215 struct gspca_dev *gspca_dev = &dev->gspca_dev; sq905_dostream() local
231 frame_sz = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].sizeimage sq905_dostream()
234 while (gspca_dev->present && gspca_dev->streaming) { sq905_dostream()
236 if (gspca_dev->frozen) sq905_dostream()
244 /* Note we do not check for gspca_dev->streaming here, as sq905_dostream()
248 while (bytes_left > 0 && gspca_dev->present) { sq905_dostream()
251 ret = sq905_read_data(gspca_dev, buffer, data_len, 1); sq905_dostream()
271 gspca_frame_add(gspca_dev, packet_type, sq905_dostream()
277 gspca_frame_add(gspca_dev, LAST_PACKET, sq905_dostream()
280 if (gspca_dev->present) { sq905_dostream()
282 mutex_lock(&gspca_dev->usb_lock); sq905_dostream()
283 ret = sq905_ack_frame(gspca_dev); sq905_dostream()
284 mutex_unlock(&gspca_dev->usb_lock); sq905_dostream()
290 if (gspca_dev->present) { sq905_dostream()
291 mutex_lock(&gspca_dev->usb_lock); sq905_dostream()
292 sq905_command(gspca_dev, SQ905_CLEAR); sq905_dostream()
293 mutex_unlock(&gspca_dev->usb_lock); sq905_dostream()
299 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
302 struct cam *cam = &gspca_dev->cam; sd_config()
303 struct sd *dev = (struct sd *) gspca_dev; sd_config()
316 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
318 struct sd *dev = (struct sd *) gspca_dev; sd_stop0()
321 mutex_unlock(&gspca_dev->usb_lock); sd_stop0()
325 mutex_lock(&gspca_dev->usb_lock); sd_stop0()
329 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
337 ret = sq905_command(gspca_dev, SQ905_CLEAR); sd_init()
340 ret = sq905_command(gspca_dev, SQ905_ID); sd_init()
343 ret = sq905_read_data(gspca_dev, gspca_dev->usb_buf, 4, 0); sd_init()
349 ident = be32_to_cpup((__be32 *)gspca_dev->usb_buf); sd_init()
350 ret = sq905_command(gspca_dev, SQ905_CLEAR); sd_init()
354 gspca_dev->cam.cam_mode = sq905_mode; sd_init()
355 gspca_dev->cam.nmodes = ARRAY_SIZE(sq905_mode); sd_init()
357 gspca_dev->cam.nmodes--; sd_init()
360 gspca_dev->cam.input_flags = V4L2_IN_ST_VFLIP; sd_init()
362 gspca_dev->cam.input_flags = V4L2_IN_ST_VFLIP | sd_init()
368 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
370 struct sd *dev = (struct sd *) gspca_dev; sd_start()
374 switch (gspca_dev->curr_mode) { sd_start()
378 ret = sq905_command(&dev->gspca_dev, SQ905_CAPTURE_HIGH); sd_start()
382 ret = sq905_command(&dev->gspca_dev, SQ905_CAPTURE_MED); sd_start()
386 ret = sq905_command(&dev->gspca_dev, SQ905_CAPTURE_LOW); sd_start()
H A Dt613.c42 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
306 static u8 reg_r(struct gspca_dev *gspca_dev, reg_r() argument
309 usb_control_msg(gspca_dev->dev, reg_r()
310 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r()
315 gspca_dev->usb_buf, 1, 500); reg_r()
316 return gspca_dev->usb_buf[0]; reg_r()
319 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
322 usb_control_msg(gspca_dev->dev, reg_w()
323 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w()
330 static void reg_w_buf(struct gspca_dev *gspca_dev, reg_w_buf() argument
334 memcpy(gspca_dev->usb_buf, buffer, len); reg_w_buf()
335 usb_control_msg(gspca_dev->dev, reg_w_buf()
336 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w_buf()
340 gspca_dev->usb_buf, len, 500); reg_w_buf()
349 usb_control_msg(gspca_dev->dev, reg_w_buf()
350 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w_buf()
360 static void reg_w_ixbuf(struct gspca_dev *gspca_dev, reg_w_ixbuf() argument
368 p = tmpbuf = gspca_dev->usb_buf; reg_w_ixbuf()
381 usb_control_msg(gspca_dev->dev, reg_w_ixbuf()
382 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w_ixbuf()
391 static void om6802_sensor_init(struct gspca_dev *gspca_dev) om6802_sensor_init() argument
415 reg_w_buf(gspca_dev, sensor_reset, sizeof sensor_reset); om6802_sensor_init()
419 byte = reg_r(gspca_dev, 0x0060); om6802_sensor_init()
424 byte = reg_r(gspca_dev, 0x0063); om6802_sensor_init()
435 reg_w(gspca_dev, 0x3c80); om6802_sensor_init()
436 reg_w_buf(gspca_dev, val, sizeof val); om6802_sensor_init()
440 byte = reg_r(gspca_dev, 0x60); om6802_sensor_init()
446 reg_w(gspca_dev, 0x3c80); om6802_sensor_init()
450 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
453 struct cam *cam = &gspca_dev->cam; sd_config()
461 static void setbrightness(struct gspca_dev *gspca_dev, s32 brightness) setbrightness() argument
472 reg_w_buf(gspca_dev, set6, sizeof set6); setbrightness()
475 static void setcontrast(struct gspca_dev *gspca_dev, s32 contrast) setcontrast() argument
484 reg_w(gspca_dev, reg_to_write); setcontrast()
487 static void setcolors(struct gspca_dev *gspca_dev, s32 val) setcolors() argument
492 reg_w(gspca_dev, reg_to_write); setcolors()
495 static void setgamma(struct gspca_dev *gspca_dev, s32 val) setgamma() argument
498 reg_w_ixbuf(gspca_dev, 0x90, setgamma()
502 static void setawb_n_RGB(struct gspca_dev *gspca_dev) setawb_n_RGB() argument
504 struct sd *sd = (struct sd *) gspca_dev; setawb_n_RGB()
530 reg_w_buf(gspca_dev, all_gain_reg, sizeof all_gain_reg); setawb_n_RGB()
533 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) setsharpness() argument
539 reg_w(gspca_dev, reg_to_write); setsharpness()
542 static void setfreq(struct gspca_dev *gspca_dev, s32 val) setfreq() argument
544 struct sd *sd = (struct sd *) gspca_dev; setfreq()
571 reg_w_buf(gspca_dev, freq, sizeof freq); setfreq()
575 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
581 struct sd *sd = (struct sd *) gspca_dev; sd_init()
595 sensor_id = (reg_r(gspca_dev, 0x06) << 8) sd_init()
596 | reg_r(gspca_dev, 0x07); sd_init()
620 reg_w_buf(gspca_dev, n1, sizeof n1); sd_init()
623 reg_w_buf(gspca_dev, sensor_reset, sizeof sensor_reset); sd_init()
624 test_byte = reg_r(gspca_dev, 0x0063); sd_init()
633 reg_w_buf(gspca_dev, n2, sizeof n2); sd_init()
638 test_byte = reg_r(gspca_dev, read_indexs[i]); sd_init()
645 reg_w_buf(gspca_dev, sensor->n3, sizeof sensor->n3); sd_init()
646 reg_w_buf(gspca_dev, sensor->n4, sensor->n4sz); sd_init()
649 test_byte = reg_r(gspca_dev, 0x80); sd_init()
652 reg_w(gspca_dev, 0x6c80); sd_init()
655 reg_w_ixbuf(gspca_dev, 0xd0, sensor->data1, sizeof sensor->data1); sd_init()
656 reg_w_ixbuf(gspca_dev, 0xc7, sensor->data2, sizeof sensor->data2); sd_init()
657 reg_w_ixbuf(gspca_dev, 0xe0, sensor->data3, sizeof sensor->data3); sd_init()
659 reg_w(gspca_dev, (sensor->reg80 << 8) + 0x80); sd_init()
660 reg_w(gspca_dev, (sensor->reg80 << 8) + 0x80); sd_init()
661 reg_w(gspca_dev, (sensor->reg8e << 8) + 0x8e); sd_init()
662 reg_w(gspca_dev, (0x20 << 8) + 0x87); sd_init()
663 reg_w(gspca_dev, (0x20 << 8) + 0x88); sd_init()
664 reg_w(gspca_dev, (0x20 << 8) + 0x89); sd_init()
666 reg_w_buf(gspca_dev, sensor->data5, sizeof sensor->data5); sd_init()
667 reg_w_buf(gspca_dev, sensor->nset8, sizeof sensor->nset8); sd_init()
668 reg_w_buf(gspca_dev, sensor->stream, sizeof sensor->stream); sd_init()
671 test_byte = reg_r(gspca_dev, 0x80); sd_init()
674 reg_w(gspca_dev, 0x6c80); sd_init()
677 reg_w_ixbuf(gspca_dev, 0xd0, sensor->data1, sizeof sensor->data1); sd_init()
678 reg_w_ixbuf(gspca_dev, 0xc7, sensor->data2, sizeof sensor->data2); sd_init()
679 reg_w_ixbuf(gspca_dev, 0xe0, sensor->data3, sizeof sensor->data3); sd_init()
684 static void setmirror(struct gspca_dev *gspca_dev, s32 val) setmirror() argument
692 reg_w_buf(gspca_dev, hflipcmd, sizeof hflipcmd); setmirror()
695 static void seteffect(struct gspca_dev *gspca_dev, s32 val) seteffect() argument
718 reg_w_buf(gspca_dev, effects_table[idx], seteffect()
722 reg_w(gspca_dev, 0x4aa6); seteffect()
724 reg_w(gspca_dev, 0xfaa6); seteffect()
729 static void poll_sensor(struct gspca_dev *gspca_dev) poll_sensor() argument
745 reg_w_buf(gspca_dev, poll1, sizeof poll1); poll_sensor()
746 reg_w_buf(gspca_dev, poll2, sizeof poll2); poll_sensor()
747 reg_w_buf(gspca_dev, noise03, sizeof noise03); poll_sensor()
750 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
752 struct sd *sd = (struct sd *) gspca_dev; sd_start()
759 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_start()
780 om6802_sensor_init(gspca_dev); sd_start()
785 reg_w_buf(gspca_dev, tas5130a_sensor_init[i], sd_start()
791 reg_w(gspca_dev, 0x3c80); sd_start()
793 reg_w_buf(gspca_dev, tas5130a_sensor_init[i], sd_start()
795 reg_w(gspca_dev, 0x3c80); sd_start()
799 setfreq(gspca_dev, v4l2_ctrl_g_ctrl(sd->freq)); sd_start()
800 reg_r(gspca_dev, 0x0012); sd_start()
801 reg_w_buf(gspca_dev, t2, sizeof t2); sd_start()
802 reg_w_ixbuf(gspca_dev, 0xb3, t3, sizeof t3); sd_start()
803 reg_w(gspca_dev, 0x0013); sd_start()
805 reg_w_buf(gspca_dev, sensor->stream, sizeof sensor->stream); sd_start()
806 reg_w_buf(gspca_dev, sensor->stream, sizeof sensor->stream); sd_start()
809 poll_sensor(gspca_dev); sd_start()
814 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
816 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
818 reg_w_buf(gspca_dev, sensor_data[sd->sensor].stream, sd_stopN()
820 reg_w_buf(gspca_dev, sensor_data[sd->sensor].stream, sd_stopN()
824 reg_w(gspca_dev, 0x0309); sd_stopN()
829 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_stopN()
830 input_sync(gspca_dev->input_dev); sd_stopN()
836 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
840 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
848 input_report_key(gspca_dev->input_dev, sd_pkt_scan()
850 input_sync(gspca_dev->input_dev); sd_pkt_scan()
868 gspca_frame_add(gspca_dev, pkt_type, data, len); sd_pkt_scan()
873 struct gspca_dev *gspca_dev = sd_g_volatile_ctrl() local
874 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_g_volatile_ctrl()
875 struct sd *sd = (struct sd *)gspca_dev; sd_g_volatile_ctrl()
878 gspca_dev->usb_err = 0; sd_g_volatile_ctrl()
882 red_gain = reg_r(gspca_dev, 0x0087); sd_g_volatile_ctrl()
888 blue_gain = reg_r(gspca_dev, 0x0088); sd_g_volatile_ctrl()
894 green_gain = reg_r(gspca_dev, 0x0089); sd_g_volatile_ctrl()
910 struct gspca_dev *gspca_dev = sd_s_ctrl() local
911 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
913 gspca_dev->usb_err = 0; sd_s_ctrl()
915 if (!gspca_dev->streaming) sd_s_ctrl()
920 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
923 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
926 setcolors(gspca_dev, ctrl->val); sd_s_ctrl()
929 setgamma(gspca_dev, ctrl->val); sd_s_ctrl()
932 setmirror(gspca_dev, ctrl->val); sd_s_ctrl()
935 setsharpness(gspca_dev, ctrl->val); sd_s_ctrl()
938 setfreq(gspca_dev, ctrl->val); sd_s_ctrl()
941 reg_w(gspca_dev, ctrl->val ? 0xf48e : 0xb48e); sd_s_ctrl()
944 setawb_n_RGB(gspca_dev); sd_s_ctrl()
947 seteffect(gspca_dev, ctrl->val); sd_s_ctrl()
950 return gspca_dev->usb_err; sd_s_ctrl()
958 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
960 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
961 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
963 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dsq930x.c37 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
425 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
430 if (gspca_dev->usb_err < 0) reg_r()
432 ret = usb_control_msg(gspca_dev->dev, reg_r()
433 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r()
436 value, 0, gspca_dev->usb_buf, len, reg_r()
440 gspca_dev->usb_err = ret; reg_r()
444 static void reg_w(struct gspca_dev *gspca_dev, u16 value, u16 index) reg_w() argument
448 if (gspca_dev->usb_err < 0) reg_w()
451 ret = usb_control_msg(gspca_dev->dev, reg_w()
452 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w()
460 gspca_dev->usb_err = ret; reg_w()
464 static void reg_wb(struct gspca_dev *gspca_dev, u16 value, u16 index, reg_wb() argument
469 if (gspca_dev->usb_err < 0) reg_wb()
473 memcpy(gspca_dev->usb_buf, data, len); reg_wb()
474 ret = usb_control_msg(gspca_dev->dev, reg_wb()
475 usb_sndctrlpipe(gspca_dev->dev, 0), reg_wb()
478 value, index, gspca_dev->usb_buf, len, reg_wb()
483 gspca_dev->usb_err = ret; reg_wb()
491 struct gspca_dev *gspca_dev = &sd->gspca_dev; i2c_write() local
497 if (gspca_dev->usb_err < 0) i2c_write()
505 buf = gspca_dev->usb_buf; i2c_write()
518 val, idx, gspca_dev->usb_buf[0], buf[-1]); i2c_write()
519 ret = usb_control_msg(gspca_dev->dev, i2c_write()
520 usb_sndctrlpipe(gspca_dev->dev, 0), i2c_write()
524 gspca_dev->usb_buf, buf - gspca_dev->usb_buf, i2c_write()
528 gspca_dev->usb_err = ret; i2c_write()
532 static void ucbus_write(struct gspca_dev *gspca_dev, ucbus_write() argument
541 if (gspca_dev->usb_err < 0) ucbus_write()
546 gspca_dev->usb_err = -ENOMEM; ucbus_write()
559 buf = gspca_dev->usb_buf; ucbus_write()
566 if (buf != gspca_dev->usb_buf) ucbus_write()
569 gspca_dev->usb_buf[0], buf[-1]); ucbus_write()
573 ret = usb_control_msg(gspca_dev->dev, ucbus_write()
574 usb_sndctrlpipe(gspca_dev->dev, 0), ucbus_write()
578 gspca_dev->usb_buf, buf - gspca_dev->usb_buf, ucbus_write()
582 gspca_dev->usb_err = ret; ucbus_write()
594 struct gspca_dev *gspca_dev = &sd->gspca_dev; gpio_set() local
599 reg_w(gspca_dev, 0x0100 | SQ930_CTRL_GPIO, gpio_set()
607 reg_w(gspca_dev, 0x0300 | SQ930_CTRL_GPIO, gpio_set()
628 ucbus_write(&sd->gspca_dev, &clkfreq_cmd, 1, 1); bridge_init()
633 static void cmos_probe(struct gspca_dev *gspca_dev) cmos_probe() argument
635 struct sd *sd = (struct sd *) gspca_dev; cmos_probe()
648 ucbus_write(&sd->gspca_dev, sensor->cmd, sensor->cmd_len, 8); cmos_probe()
651 reg_r(gspca_dev, (sensor->i2c_addr << 8) | 0x001c, 1); cmos_probe()
653 if (gspca_dev->usb_buf[0] != 0) cmos_probe()
658 gspca_dev->usb_err = -EINVAL; cmos_probe()
667 gspca_dev->usb_err = -EINVAL; cmos_probe()
672 static void mt9v111_init(struct gspca_dev *gspca_dev) mt9v111_init() argument
686 reg_wb(gspca_dev, 0x001b, 0x0000, cmd_001b, sizeof cmd_001b); mt9v111_init()
688 reg_wb(gspca_dev, 0x001b, 0x0000, cmd_011b[i], mt9v111_init()
693 reg_r(gspca_dev, 0x031b, 1); mt9v111_init()
694 if (gspca_dev->usb_buf[0] == 0 mt9v111_init()
695 || gspca_dev->usb_err != 0) mt9v111_init()
699 gspca_dev->usb_err = -ETIME; mt9v111_init()
712 ucbus_write(&sd->gspca_dev, global_init()
724 ucbus_write(&sd->gspca_dev, global_init()
731 ucbus_write(&sd->gspca_dev, global_init()
741 mt9v111_init(&sd->gspca_dev); global_init()
755 ucbus_write(&sd->gspca_dev, cmds, ARRAY_SIZE(cmds), 2); lz24bp_ppl()
758 static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 gain) setexposure() argument
760 struct sd *sd = (struct sd *) gspca_dev; setexposure()
809 reg_wb(gspca_dev, cmd, 0, buf, i); setexposure()
813 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
816 struct sd *sd = (struct sd *) gspca_dev; sd_config()
817 struct cam *cam = &gspca_dev->cam; sd_config()
831 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
833 struct sd *sd = (struct sd *) gspca_dev; sd_init()
839 reg_w(gspca_dev, SQ930_CTRL_RESET, 0x0000); sd_init()
842 reg_r(gspca_dev, SQ930_CTRL_GET_DEV_INFO, 8); sd_init()
843 if (gspca_dev->usb_err < 0) sd_init()
844 return gspca_dev->usb_err; sd_init()
864 PDEBUG(D_PROBE, "info: %*ph", 8, gspca_dev->usb_buf); sd_init()
871 if (gspca_dev->usb_buf[5] == 0xf6) /* if ccd */ sd_init()
874 cmos_probe(gspca_dev); sd_init()
876 if (gspca_dev->usb_err >= 0) { sd_init()
880 return gspca_dev->usb_err; sd_init()
884 static void send_start(struct gspca_dev *gspca_dev) send_start() argument
886 struct sd *sd = (struct sd *) gspca_dev; send_start()
890 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; send_start()
892 reg_wb(gspca_dev, 0x0900 | SQ930_CTRL_CAP_START, send_start()
897 static void send_stop(struct gspca_dev *gspca_dev) send_stop() argument
899 reg_w(gspca_dev, SQ930_CTRL_CAP_STOP, 0); send_stop()
903 static int sd_isoc_init(struct gspca_dev *gspca_dev) sd_isoc_init() argument
905 struct sd *sd = (struct sd *) gspca_dev; sd_isoc_init()
907 gspca_dev->cam.bulk_nurbs = 1; /* there must be one URB only */ sd_isoc_init()
909 gspca_dev->cam.bulk_size = gspca_dev->pixfmt.width * sd_isoc_init()
910 gspca_dev->pixfmt.height + 8; sd_isoc_init()
915 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
917 struct sd *sd = (struct sd *) gspca_dev; sd_start()
926 ucbus_write(gspca_dev, icx098bq_start_0, sd_start()
929 ucbus_write(gspca_dev, icx098bq_start_1, sd_start()
932 ucbus_write(gspca_dev, icx098bq_start_2, sd_start()
938 send_start(gspca_dev); sd_start()
941 reg_w(gspca_dev, SQ930_CTRL_CAP_STOP, 0x0000); sd_start()
945 send_start(gspca_dev); sd_start()
949 ucbus_write(gspca_dev, lz24bp_start_0, sd_start()
953 ucbus_write(gspca_dev, lz24bp_start_1_gen, sd_start()
957 ucbus_write(gspca_dev, lz24bp_start_1_clm, sd_start()
960 ucbus_write(gspca_dev, lz24bp_start_2, sd_start()
963 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_start()
968 ucbus_write(gspca_dev, mi0360_start_0, sd_start()
977 ucbus_write(gspca_dev, mi0360_start_1, sd_start()
986 send_start(gspca_dev); sd_start()
988 send_stop(gspca_dev); sd_start()
995 ucbus_write(gspca_dev, mi0360_start_0, sd_start()
1004 ucbus_write(gspca_dev, mt9v111_start_1, sd_start()
1014 send_start(gspca_dev); sd_start()
1023 return gspca_dev->usb_err; sd_start()
1026 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
1028 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
1032 send_stop(gspca_dev); sd_stopN()
1037 static void sd_dq_callback(struct gspca_dev *gspca_dev) sd_dq_callback() argument
1039 struct sd *sd = (struct sd *) gspca_dev; sd_dq_callback()
1042 if (!sd->do_ctrl || gspca_dev->cam.bulk_nurbs != 0) sd_dq_callback()
1046 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(sd->exposure), sd_dq_callback()
1049 gspca_dev->cam.bulk_nurbs = 1; sd_dq_callback()
1050 ret = usb_submit_urb(gspca_dev->urb[0], GFP_ATOMIC); sd_dq_callback()
1058 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
1062 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
1065 gspca_dev->cam.bulk_nurbs = 0; sd_pkt_scan()
1066 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); sd_pkt_scan()
1067 gspca_frame_add(gspca_dev, INTER_PACKET, data, len - 8); sd_pkt_scan()
1068 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
1073 struct gspca_dev *gspca_dev = sd_s_ctrl() local
1074 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
1075 struct sd *sd = (struct sd *) gspca_dev; sd_s_ctrl()
1077 gspca_dev->usb_err = 0; sd_s_ctrl()
1079 if (!gspca_dev->streaming) sd_s_ctrl()
1084 setexposure(gspca_dev, ctrl->val, sd->gain->val); sd_s_ctrl()
1087 return gspca_dev->usb_err; sd_s_ctrl()
1094 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
1096 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
1097 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
1099 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dsq905c.c63 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
89 static int sq905c_command(struct gspca_dev *gspca_dev, u16 command, u16 index) sq905c_command() argument
93 ret = usb_control_msg(gspca_dev->dev, sq905c_command()
94 usb_sndctrlpipe(gspca_dev->dev, 0), sq905c_command()
107 static int sq905c_read(struct gspca_dev *gspca_dev, u16 command, u16 index, sq905c_read() argument
112 ret = usb_control_msg(gspca_dev->dev, sq905c_read()
113 usb_rcvctrlpipe(gspca_dev->dev, 0), sq905c_read()
116 command, index, gspca_dev->usb_buf, size, sq905c_read()
130 * threads attempting to use gspca_dev->usb_buf we take the usb_lock when
137 struct gspca_dev *gspca_dev = &dev->gspca_dev; sq905c_dostream() local
151 while (gspca_dev->present && gspca_dev->streaming) { sq905c_dostream()
153 if (gspca_dev->frozen) sq905c_dostream()
157 ret = usb_bulk_msg(gspca_dev->dev, sq905c_dostream()
158 usb_rcvbulkpipe(gspca_dev->dev, 0x81), sq905c_dostream()
172 gspca_frame_add(gspca_dev, packet_type, sq905c_dostream()
174 while (bytes_left > 0 && gspca_dev->present) { sq905c_dostream()
177 ret = usb_bulk_msg(gspca_dev->dev, sq905c_dostream()
178 usb_rcvbulkpipe(gspca_dev->dev, 0x81), sq905c_dostream()
191 gspca_frame_add(gspca_dev, packet_type, sq905c_dostream()
196 if (gspca_dev->present) { sq905c_dostream()
197 mutex_lock(&gspca_dev->usb_lock); sq905c_dostream()
198 sq905c_command(gspca_dev, SQ905C_CLEAR, 0); sq905c_dostream()
199 mutex_unlock(&gspca_dev->usb_lock); sq905c_dostream()
205 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
208 struct cam *cam = &gspca_dev->cam; sd_config()
209 struct sd *dev = (struct sd *) gspca_dev; sd_config()
216 ret = sq905c_command(gspca_dev, SQ905C_GET_ID, 0); sd_config()
222 ret = sq905c_read(gspca_dev, 0xf5, 0, 20); sd_config()
230 gspca_dev->usb_buf[3], 6, gspca_dev->usb_buf + 14); sd_config()
234 if (gspca_dev->usb_buf[15] == 0) sd_config()
245 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
247 struct sd *dev = (struct sd *) gspca_dev; sd_stop0()
250 mutex_unlock(&gspca_dev->usb_lock); sd_stop0()
254 mutex_lock(&gspca_dev->usb_lock); sd_stop0()
258 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
263 ret = sq905c_command(gspca_dev, SQ905C_CLEAR, 0); sd_init()
268 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
270 struct sd *dev = (struct sd *) gspca_dev; sd_start()
273 dev->cap_mode = gspca_dev->cam.cam_mode; sd_start()
275 switch (gspca_dev->pixfmt.width) { sd_start()
279 ret = sq905c_command(gspca_dev, SQ905C_CAPTURE_HI, sd_start()
284 ret = sq905c_command(gspca_dev, SQ905C_CAPTURE_MED, sd_start()
H A Dsonixb.c61 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
447 /* get one byte in gspca_dev->usb_buf */ reg_r()
448 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
453 if (gspca_dev->usb_err < 0) reg_r()
456 res = usb_control_msg(gspca_dev->dev, reg_r()
457 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r()
462 gspca_dev->usb_buf, 1, reg_r()
466 dev_err(gspca_dev->v4l2_dev.dev, reg_r()
468 gspca_dev->usb_err = res; reg_r()
472 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
479 if (gspca_dev->usb_err < 0) reg_w()
482 memcpy(gspca_dev->usb_buf, buffer, len); reg_w()
483 res = usb_control_msg(gspca_dev->dev, reg_w()
484 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w()
489 gspca_dev->usb_buf, len, reg_w()
493 dev_err(gspca_dev->v4l2_dev.dev, reg_w()
495 gspca_dev->usb_err = res; reg_w()
499 static void i2c_w(struct gspca_dev *gspca_dev, const u8 *buf) i2c_w() argument
503 if (gspca_dev->usb_err < 0) i2c_w()
507 reg_w(gspca_dev, 0x08, buf, 8); i2c_w()
509 if (gspca_dev->usb_err < 0) i2c_w()
512 reg_r(gspca_dev, 0x08); i2c_w()
513 if (gspca_dev->usb_buf[0] & 0x04) { i2c_w()
514 if (gspca_dev->usb_buf[0] & 0x08) { i2c_w()
515 dev_err(gspca_dev->v4l2_dev.dev, i2c_w()
517 gspca_dev->usb_err = -EIO; i2c_w()
523 dev_err(gspca_dev->v4l2_dev.dev, "i2c write timeout\n"); i2c_w()
524 gspca_dev->usb_err = -EIO; i2c_w()
527 static void i2c_w_vector(struct gspca_dev *gspca_dev, i2c_w_vector() argument
531 if (gspca_dev->usb_err < 0) i2c_w_vector()
533 i2c_w(gspca_dev, *buffer); i2c_w_vector()
541 static void setbrightness(struct gspca_dev *gspca_dev) setbrightness() argument
543 struct sd *sd = (struct sd *) gspca_dev; setbrightness()
554 i2c_w(gspca_dev, i2cOV); setbrightness()
578 i2c_w(gspca_dev, i2cpbright); setbrightness()
579 i2c_w(gspca_dev, i2cpdoit); setbrightness()
587 static void setgain(struct gspca_dev *gspca_dev) setgain() argument
589 struct sd *sd = (struct sd *) gspca_dev; setgain()
590 u8 gain = gspca_dev->gain->val; setgain()
601 i2c_w(gspca_dev, i2c); setgain()
610 i2c_w(gspca_dev, i2c); setgain()
626 i2c_w(gspca_dev, i2c); setgain()
642 i2c_w(gspca_dev, i2c); setgain()
668 i2c_w(gspca_dev, i2cpgain); setgain()
669 i2c_w(gspca_dev, i2cpcolorgain); setgain()
670 i2c_w(gspca_dev, i2cpdoit); setgain()
676 reg_w(gspca_dev, 0x05, buf, 3); setgain()
681 reg_w(gspca_dev, 0x10, buf, 2); setgain()
686 static void setexposure(struct gspca_dev *gspca_dev) setexposure() argument
688 struct sd *sd = (struct sd *) gspca_dev; setexposure()
695 u16 reg = gspca_dev->exposure->val; setexposure()
699 i2c_w(gspca_dev, i2c); setexposure()
707 u8 reg = gspca_dev->exposure->val; setexposure()
710 reg_w(gspca_dev, 0x19, &reg, 1); setexposure()
744 reg11 = (15 * gspca_dev->exposure->val + 999) / 1000; setexposure()
753 if (gspca_dev->pixfmt.width == 640 && reg11 < 4) setexposure()
757 reg10 = (gspca_dev->exposure->val / 2) * reg10_max setexposure()
759 reg10 = (gspca_dev->exposure->val * 15 * reg10_max) setexposure()
766 if (gspca_dev->autogain->val && reg10 < 10) setexposure()
780 i2c_w(gspca_dev, i2c); setexposure()
781 if (gspca_dev->usb_err == 0) setexposure()
804 if (gspca_dev->exposure->val < 200) { setexposure()
805 i2cpexpo[3] = 255 - (gspca_dev->exposure->val * 255) setexposure()
812 framerate_ctrl = (gspca_dev->exposure->val - 200) setexposure()
818 i2c_w(gspca_dev, i2cpframerate); setexposure()
819 i2c_w(gspca_dev, i2cpexpo); setexposure()
820 i2c_w(gspca_dev, i2cpdoit); setexposure()
834 if (gspca_dev->exposure->val < 150) { setexposure()
835 i2cpexpo[3] = 150 - gspca_dev->exposure->val; setexposure()
841 framerate_ctrl = (gspca_dev->exposure->val - 150) setexposure()
847 i2c_w(gspca_dev, i2cpframerate); setexposure()
848 i2c_w(gspca_dev, i2cpexpo); setexposure()
849 i2c_w(gspca_dev, i2cpdoit); setexposure()
857 static void setfreq(struct gspca_dev *gspca_dev) setfreq() argument
859 struct sd *sd = (struct sd *) gspca_dev; setfreq()
879 i2c_w(gspca_dev, i2c); setfreq()
883 static void do_autogain(struct gspca_dev *gspca_dev) do_autogain() argument
885 struct sd *sd = (struct sd *) gspca_dev; do_autogain()
911 if (gspca_dev->exposure->maximum < 500) { do_autogain()
912 if (gspca_coarse_grained_expo_autogain(gspca_dev, avg_lum, do_autogain()
916 int gain_knee = (s32)gspca_dev->gain->maximum * 9 / 10; do_autogain()
917 if (gspca_expo_autogain(gspca_dev, avg_lum, desired_avg_lum, do_autogain()
924 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
927 struct sd *sd = (struct sd *) gspca_dev; sd_config()
930 reg_r(gspca_dev, 0x00); sd_config()
931 if (gspca_dev->usb_buf[0] != 0x10) sd_config()
938 cam = &gspca_dev->cam; sd_config()
952 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
956 reg_w(gspca_dev, 0x01, &stop, 1); sd_init()
958 return gspca_dev->usb_err; sd_init()
963 struct gspca_dev *gspca_dev = sd_s_ctrl() local
964 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
965 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
967 gspca_dev->usb_err = 0; sd_s_ctrl()
974 gspca_dev->gain->val = gspca_dev->gain->default_value; sd_s_ctrl()
975 gspca_dev->exposure->val = gspca_dev->exposure->default_value; sd_s_ctrl()
979 if (!gspca_dev->streaming) sd_s_ctrl()
984 setbrightness(gspca_dev); sd_s_ctrl()
987 if (gspca_dev->exposure->is_new || (ctrl->is_new && ctrl->val)) sd_s_ctrl()
988 setexposure(gspca_dev); sd_s_ctrl()
989 if (gspca_dev->gain->is_new || (ctrl->is_new && ctrl->val)) sd_s_ctrl()
990 setgain(gspca_dev); sd_s_ctrl()
993 setfreq(gspca_dev); sd_s_ctrl()
998 return gspca_dev->usb_err; sd_s_ctrl()
1006 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
1008 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
1009 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
1011 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
1024 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1028 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1032 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1038 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1043 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1046 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1054 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1062 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1068 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1073 if (gspca_dev->exposure) { sd_init_controls()
1074 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1089 if (gspca_dev->autogain) sd_init_controls()
1090 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); sd_init_controls()
1096 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
1098 struct sd *sd = (struct sd *) gspca_dev; sd_start()
1099 struct cam *cam = &gspca_dev->cam; sd_start()
1103 mode = cam->cam_mode[gspca_dev->curr_mode].priv & 0x07; sd_start()
1168 if (cam->cam_mode[gspca_dev->curr_mode].priv & MODE_RAW) sd_start()
1172 if (cam->cam_mode[gspca_dev->curr_mode].priv & MODE_REDUCED_SIF) { sd_start()
1180 reg_w(gspca_dev, 0x01, &regs[0x01], 1); sd_start()
1182 reg_w(gspca_dev, 0x17, &regs[0x17], 1); sd_start()
1184 reg_w(gspca_dev, 0x01, &regs[0x01], sd_start()
1188 i2c_w_vector(gspca_dev, sensor_data[sd->sensor].sensor_init, sd_start()
1198 i2c_w(gspca_dev, i2cpclockdiv); sd_start()
1207 i2c_w(gspca_dev, i2c); sd_start()
1212 reg_w(gspca_dev, 0x15, &regs[0x15], 2); sd_start()
1214 reg_w(gspca_dev, 0x18, &regs[0x18], 1); sd_start()
1216 reg_w(gspca_dev, 0x12, &regs[0x12], 1); sd_start()
1218 reg_w(gspca_dev, 0x13, &regs[0x13], 1); sd_start()
1221 reg_w(gspca_dev, 0x17, &regs[0x17], 1); sd_start()
1223 reg_w(gspca_dev, 0x19, &regs[0x19], 1); sd_start()
1225 reg_w(gspca_dev, 0x1c, &regs[0x1c], 4); sd_start()
1227 reg_w(gspca_dev, 0x01, &regs[0x01], 1); sd_start()
1229 reg_w(gspca_dev, 0x18, &regs[0x18], 2); sd_start()
1234 setgain(gspca_dev); sd_start()
1235 setbrightness(gspca_dev); sd_start()
1236 setexposure(gspca_dev); sd_start()
1237 setfreq(gspca_dev); sd_start()
1241 gspca_dev->exp_too_high_cnt = 0; sd_start()
1242 gspca_dev->exp_too_low_cnt = 0; sd_start()
1244 return gspca_dev->usb_err; sd_start()
1247 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
1249 sd_init(gspca_dev); sd_stopN()
1252 static u8* find_sof(struct gspca_dev *gspca_dev, u8 *data, int len) find_sof() argument
1254 struct sd *sd = (struct sd *) gspca_dev; find_sof()
1320 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
1325 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
1326 struct cam *cam = &gspca_dev->cam; sd_pkt_scan()
1329 sof = find_sof(gspca_dev, data, len); sd_pkt_scan()
1345 if (cam->cam_mode[gspca_dev->curr_mode].priv & MODE_RAW) { sd_pkt_scan()
1349 int size = cam->cam_mode[gspca_dev->curr_mode].sizeimage; sd_pkt_scan()
1351 used = gspca_dev->image_len; sd_pkt_scan()
1356 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
1380 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
1382 gspca_frame_add(gspca_dev, FIRST_PACKET, sof, len_after_sof); sd_pkt_scan()
1387 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, sd_int_pkt_scan() argument
1394 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); sd_int_pkt_scan()
1395 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
1396 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_int_pkt_scan()
1397 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
H A Ddtcs033.c34 static void reg_rw(struct gspca_dev *gspca_dev, reg_rw() argument
38 struct usb_device *udev = gspca_dev->dev; reg_rw()
41 if (gspca_dev->usb_err < 0) reg_rw()
49 gspca_dev->usb_buf, wLength, 500); reg_rw()
52 gspca_dev->usb_err = ret; reg_rw()
59 static int reg_reqs(struct gspca_dev *gspca_dev, reg_reqs() argument
65 while ((i < n_reqs) && (gspca_dev->usb_err >= 0)) { reg_reqs()
69 reg_rw(gspca_dev, preq->bRequestType, preq->bRequest, reg_reqs()
72 if (gspca_dev->usb_err < 0) { reg_reqs()
82 gspca_dev->usb_buf[0], reg_reqs()
83 gspca_dev->usb_buf[1], reg_reqs()
84 gspca_dev->usb_buf[2], reg_reqs()
90 return gspca_dev->usb_err; reg_reqs()
112 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
115 gspca_dev->cam.cam_mode = dtcs033_mode; sd_config()
116 gspca_dev->cam.nmodes = ARRAY_SIZE(dtcs033_mode); sd_config()
118 gspca_dev->cam.bulk = 1; sd_config()
119 gspca_dev->cam.bulk_nurbs = 1; sd_config()
120 gspca_dev->cam.bulk_size = DT_COLS*512; sd_config()
126 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
132 static int dtcs033_start(struct gspca_dev *gspca_dev);
133 static void dtcs033_stopN(struct gspca_dev *gspca_dev);
136 static void dtcs033_pkt_scan(struct gspca_dev *gspca_dev, dtcs033_pkt_scan() argument
142 gspca_dev->last_packet_type = DISCARD_PACKET; dtcs033_pkt_scan()
148 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); dtcs033_pkt_scan()
149 gspca_frame_add(gspca_dev, INTER_PACKET, dtcs033_pkt_scan()
152 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); dtcs033_pkt_scan()
159 static void dtcs033_setexposure(struct gspca_dev *gspca_dev, dtcs033_setexposure() argument
176 reg_rw(gspca_dev, dtcs033_setexposure()
178 if (gspca_dev->usb_err < 0) dtcs033_setexposure()
181 reg_rw(gspca_dev, dtcs033_setexposure()
183 if (gspca_dev->usb_err < 0) dtcs033_setexposure()
189 struct gspca_dev gspca_dev;/* !! must be the first item */ member in struct:sd
200 struct gspca_dev *gspca_dev = sd_s_ctrl() local
202 struct gspca_dev, ctrl_handler); sd_s_ctrl()
203 struct sd *sd = (struct sd *) gspca_dev; sd_s_ctrl()
205 gspca_dev->usb_err = 0; sd_s_ctrl()
207 if (!gspca_dev->streaming) sd_s_ctrl()
212 dtcs033_setexposure(gspca_dev, sd_s_ctrl()
216 dtcs033_setexposure(gspca_dev, sd_s_ctrl()
220 return gspca_dev->usb_err; sd_s_ctrl()
227 static int dtcs033_init_controls(struct gspca_dev *gspca_dev) dtcs033_init_controls() argument
229 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; dtcs033_init_controls()
230 struct sd *sd = (struct sd *) gspca_dev; dtcs033_init_controls()
232 gspca_dev->vdev.ctrl_handler = hdl; dtcs033_init_controls()
430 static int dtcs033_start(struct gspca_dev *gspca_dev) dtcs033_start() argument
432 return reg_reqs(gspca_dev, dtcs033_start_reqs, dtcs033_start()
436 static void dtcs033_stopN(struct gspca_dev *gspca_dev) dtcs033_stopN() argument
438 reg_reqs(gspca_dev, dtcs033_stop_reqs, dtcs033_stopN()
H A Dgspca.h29 v4l2_dbg(level, gspca_debug, &gspca_dev->v4l2_dev, fmt, ##__VA_ARGS__)
32 v4l2_err(&gspca_dev->v4l2_dev, fmt, ##__VA_ARGS__)
66 struct gspca_dev;
70 typedef int (*cam_op) (struct gspca_dev *);
71 typedef void (*cam_v_op) (struct gspca_dev *);
72 typedef int (*cam_cf_op) (struct gspca_dev *, const struct usb_device_id *);
73 typedef int (*cam_get_jpg_op) (struct gspca_dev *,
75 typedef int (*cam_set_jpg_op) (struct gspca_dev *,
77 typedef int (*cam_get_reg_op) (struct gspca_dev *,
79 typedef int (*cam_set_reg_op) (struct gspca_dev *,
81 typedef int (*cam_chip_info_op) (struct gspca_dev *,
83 typedef void (*cam_streamparm_op) (struct gspca_dev *,
85 typedef void (*cam_pkt_op) (struct gspca_dev *gspca_dev,
88 typedef int (*cam_int_pkt_op) (struct gspca_dev *gspca_dev,
91 typedef void (*cam_format_op) (struct gspca_dev *gspca_dev,
93 typedef int (*cam_frmsize_op) (struct gspca_dev *gspca_dev,
125 /* other_input makes the gspca core create gspca_dev->input even when
145 struct gspca_dev { struct
227 void gspca_frame_add(struct gspca_dev *gspca_dev,
235 int gspca_expo_autogain(struct gspca_dev *gspca_dev, int avg_lum,
237 int gspca_coarse_grained_expo_autogain(struct gspca_dev *gspca_dev,
H A Dsn9c2028.c33 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
71 /* the bytes to write are in gspca_dev->usb_buf */ sn9c2028_command()
72 static int sn9c2028_command(struct gspca_dev *gspca_dev, u8 *command) sn9c2028_command() argument
79 memcpy(gspca_dev->usb_buf, command, 6); sn9c2028_command()
80 rc = usb_control_msg(gspca_dev->dev, sn9c2028_command()
81 usb_sndctrlpipe(gspca_dev->dev, 0), sn9c2028_command()
84 2, 0, gspca_dev->usb_buf, 6, 500); sn9c2028_command()
87 gspca_dev->usb_buf[0], rc); sn9c2028_command()
94 static int sn9c2028_read1(struct gspca_dev *gspca_dev) sn9c2028_read1() argument
98 rc = usb_control_msg(gspca_dev->dev, sn9c2028_read1()
99 usb_rcvctrlpipe(gspca_dev->dev, 0), sn9c2028_read1()
102 1, 0, gspca_dev->usb_buf, 1, 500); sn9c2028_read1()
107 PDEBUG(D_USBI, "read1 response %02x", gspca_dev->usb_buf[0]); sn9c2028_read1()
108 return gspca_dev->usb_buf[0]; sn9c2028_read1()
111 static int sn9c2028_read4(struct gspca_dev *gspca_dev, u8 *reading) sn9c2028_read4() argument
114 rc = usb_control_msg(gspca_dev->dev, sn9c2028_read4()
115 usb_rcvctrlpipe(gspca_dev->dev, 0), sn9c2028_read4()
118 4, 0, gspca_dev->usb_buf, 4, 500); sn9c2028_read4()
123 memcpy(reading, gspca_dev->usb_buf, 4); sn9c2028_read4()
129 static int sn9c2028_long_command(struct gspca_dev *gspca_dev, u8 *command) sn9c2028_long_command() argument
134 status = sn9c2028_command(gspca_dev, command); sn9c2028_long_command()
140 status = sn9c2028_read1(gspca_dev); sn9c2028_long_command()
147 status = sn9c2028_read4(gspca_dev, reading); sn9c2028_long_command()
153 status = sn9c2028_read1(gspca_dev); sn9c2028_long_command()
160 static int sn9c2028_short_command(struct gspca_dev *gspca_dev, u8 *command) sn9c2028_short_command() argument
164 err_code = sn9c2028_command(gspca_dev, command); sn9c2028_short_command()
168 err_code = sn9c2028_read1(gspca_dev); sn9c2028_short_command()
176 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
179 struct sd *sd = (struct sd *) gspca_dev; sd_config()
180 struct cam *cam = &gspca_dev->cam; sd_config()
227 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
231 sn9c2028_read1(gspca_dev); sd_init()
232 sn9c2028_read1(gspca_dev); sd_init()
233 status = sn9c2028_read1(gspca_dev); sd_init()
238 static int run_start_commands(struct gspca_dev *gspca_dev, run_start_commands() argument
246 err_code = sn9c2028_long_command(gspca_dev, run_start_commands()
250 err_code = sn9c2028_short_command(gspca_dev, run_start_commands()
254 err_code = sn9c2028_command(gspca_dev, run_start_commands()
264 static void set_gain(struct gspca_dev *gspca_dev, s32 g) set_gain() argument
266 struct sd *sd = (struct sd *) gspca_dev; set_gain()
272 if (!gspca_dev->streaming) set_gain()
278 run_start_commands(gspca_dev, genius_vcam_live_gain_cmds, set_gain()
288 struct gspca_dev *gspca_dev = sd_s_ctrl() local
289 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
290 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
292 gspca_dev->usb_err = 0; sd_s_ctrl()
294 if (!gspca_dev->streaming) sd_s_ctrl()
300 set_gain(gspca_dev, ctrl->val); sd_s_ctrl()
304 set_gain(gspca_dev, sd->gain->val); sd_s_ctrl()
307 return gspca_dev->usb_err; sd_s_ctrl()
315 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
317 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
318 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
320 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
336 static int start_spy_cam(struct gspca_dev *gspca_dev) start_spy_cam() argument
397 return run_start_commands(gspca_dev, spy_start_commands, start_spy_cam()
401 static int start_cif_cam(struct gspca_dev *gspca_dev) start_cif_cam() argument
474 return run_start_commands(gspca_dev, cif_start_commands, start_cif_cam()
478 static int start_ms350_cam(struct gspca_dev *gspca_dev) start_ms350_cam() argument
542 return run_start_commands(gspca_dev, ms350_start_commands, start_ms350_cam()
546 static int start_genius_cam(struct gspca_dev *gspca_dev) start_genius_cam() argument
614 return run_start_commands(gspca_dev, genius_start_commands, start_genius_cam()
618 static int start_genius_videocam_live(struct gspca_dev *gspca_dev) start_genius_videocam_live() argument
621 struct sd *sd = (struct sd *) gspca_dev; start_genius_videocam_live()
720 r = run_start_commands(gspca_dev, genius_vcam_live_start_commands, start_genius_videocam_live()
726 set_gain(gspca_dev, v4l2_ctrl_g_ctrl(sd->gain)); start_genius_videocam_live()
731 static int start_vivitar_cam(struct gspca_dev *gspca_dev) start_vivitar_cam() argument
809 return run_start_commands(gspca_dev, vivitar_start_commands, start_vivitar_cam()
813 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
815 struct sd *sd = (struct sd *) gspca_dev; sd_start()
822 err_code = start_genius_cam(gspca_dev); sd_start()
825 err_code = start_genius_videocam_live(gspca_dev); sd_start()
828 err_code = start_spy_cam(gspca_dev); sd_start()
831 err_code = start_cif_cam(gspca_dev); sd_start()
834 err_code = start_ms350_cam(gspca_dev); sd_start()
837 err_code = start_vivitar_cam(gspca_dev); sd_start()
849 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
854 result = sn9c2028_read1(gspca_dev); sd_stopN()
860 result = sn9c2028_command(gspca_dev, data); sd_stopN()
865 static void do_autogain(struct gspca_dev *gspca_dev, int avg_lum) do_autogain() argument
867 struct sd *sd = (struct sd *) gspca_dev; do_autogain()
888 static void sd_dqcallback(struct gspca_dev *gspca_dev) sd_dqcallback() argument
890 struct sd *sd = (struct sd *) gspca_dev; sd_dqcallback()
895 do_autogain(gspca_dev, sd->avg_lum); sd_dqcallback()
901 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
907 sof = sn9c2028_find_sof(gspca_dev, data, len); sd_pkt_scan()
917 gspca_frame_add(gspca_dev, LAST_PACKET, data, n); sd_pkt_scan()
919 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
924 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
H A Dspca505.c34 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
547 static int reg_write(struct gspca_dev *gspca_dev, reg_write() argument
551 struct usb_device *dev = gspca_dev->dev; reg_write()
566 static int reg_read(struct gspca_dev *gspca_dev, reg_read() argument
572 ret = usb_control_msg(gspca_dev->dev, reg_read()
573 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_read()
578 gspca_dev->usb_buf, 2, reg_read()
582 return (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0]; reg_read()
585 static int write_vector(struct gspca_dev *gspca_dev, write_vector() argument
591 ret = reg_write(gspca_dev, data[i][0], data[i][2], write_vector()
601 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
604 struct sd *sd = (struct sd *) gspca_dev; sd_config()
607 cam = &gspca_dev->cam; sd_config()
619 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
621 struct sd *sd = (struct sd *) gspca_dev; sd_init()
623 if (write_vector(gspca_dev, sd_init()
631 static void setbrightness(struct gspca_dev *gspca_dev, s32 brightness) setbrightness() argument
633 reg_write(gspca_dev, 0x05, 0x00, (255 - brightness) >> 6); setbrightness()
634 reg_write(gspca_dev, 0x05, 0x01, (255 - brightness) << 2); setbrightness()
637 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
639 struct sd *sd = (struct sd *) gspca_dev; sd_start()
651 write_vector(gspca_dev, spca505b_open_data_ccd); sd_start()
653 write_vector(gspca_dev, spca505_open_data_ccd); sd_start()
654 ret = reg_read(gspca_dev, 0x06, 0x16); sd_start()
665 ret = reg_write(gspca_dev, 0x06, 0x16, 0x0a); sd_start()
668 reg_write(gspca_dev, 0x05, 0xc2, 0x12); sd_start()
673 reg_write(gspca_dev, 0x02, 0x00, 0x00); sd_start()
675 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; sd_start()
676 reg_write(gspca_dev, SPCA50X_REG_COMPRESS, 0x00, mode_tb[mode][0]); sd_start()
677 reg_write(gspca_dev, SPCA50X_REG_COMPRESS, 0x06, mode_tb[mode][1]); sd_start()
678 reg_write(gspca_dev, SPCA50X_REG_COMPRESS, 0x07, mode_tb[mode][2]); sd_start()
680 return reg_write(gspca_dev, SPCA50X_REG_USB, sd_start()
685 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
688 reg_write(gspca_dev, 0x02, 0x00, 0x00); sd_stopN()
692 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
694 if (!gspca_dev->present) sd_stop0()
698 reg_write(gspca_dev, 0x03, 0x03, 0x20); sd_stop0()
699 reg_write(gspca_dev, 0x03, 0x01, 0x00); sd_stop0()
700 reg_write(gspca_dev, 0x03, 0x00, 0x01); sd_stop0()
701 reg_write(gspca_dev, 0x05, 0x10, 0x01); sd_stop0()
702 reg_write(gspca_dev, 0x05, 0x11, 0x0f); sd_stop0()
705 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
711 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
714 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
721 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
728 struct gspca_dev *gspca_dev = sd_s_ctrl() local
729 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
731 gspca_dev->usb_err = 0; sd_s_ctrl()
733 if (!gspca_dev->streaming) sd_s_ctrl()
738 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
741 return gspca_dev->usb_err; sd_s_ctrl()
748 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
750 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
752 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dsonixj.c36 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
1154 /* read <len> bytes to gspca_dev->usb_buf */ reg_r()
1155 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
1160 if (gspca_dev->usb_err < 0) reg_r()
1167 ret = usb_control_msg(gspca_dev->dev, reg_r()
1168 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r()
1172 gspca_dev->usb_buf, len, reg_r()
1174 PDEBUG(D_USBI, "reg_r [%02x] -> %02x", value, gspca_dev->usb_buf[0]); reg_r()
1177 gspca_dev->usb_err = ret; reg_r()
1181 static void reg_w1(struct gspca_dev *gspca_dev, reg_w1() argument
1187 if (gspca_dev->usb_err < 0) reg_w1()
1190 gspca_dev->usb_buf[0] = data; reg_w1()
1191 ret = usb_control_msg(gspca_dev->dev, reg_w1()
1192 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w1()
1197 gspca_dev->usb_buf, 1, reg_w1()
1201 gspca_dev->usb_err = ret; reg_w1()
1204 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
1211 if (gspca_dev->usb_err < 0) reg_w()
1221 memcpy(gspca_dev->usb_buf, buffer, len); reg_w()
1222 ret = usb_control_msg(gspca_dev->dev, reg_w()
1223 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w()
1227 gspca_dev->usb_buf, len, reg_w()
1231 gspca_dev->usb_err = ret; reg_w()
1236 static void i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val) i2c_w1() argument
1238 struct sd *sd = (struct sd *) gspca_dev; i2c_w1()
1241 if (gspca_dev->usb_err < 0) i2c_w1()
1248 gspca_dev->usb_buf[0] = 0x80 | (2 << 4); i2c_w1()
1251 gspca_dev->usb_buf[0] = 0x81 | (2 << 4); i2c_w1()
1254 gspca_dev->usb_buf[1] = sd->i2c_addr; i2c_w1()
1255 gspca_dev->usb_buf[2] = reg; i2c_w1()
1256 gspca_dev->usb_buf[3] = val; i2c_w1()
1257 gspca_dev->usb_buf[4] = 0; i2c_w1()
1258 gspca_dev->usb_buf[5] = 0; i2c_w1()
1259 gspca_dev->usb_buf[6] = 0; i2c_w1()
1260 gspca_dev->usb_buf[7] = 0x10; i2c_w1()
1261 ret = usb_control_msg(gspca_dev->dev, i2c_w1()
1262 usb_sndctrlpipe(gspca_dev->dev, 0), i2c_w1()
1267 gspca_dev->usb_buf, 8, i2c_w1()
1272 gspca_dev->usb_err = ret; i2c_w1()
1277 static void i2c_w8(struct gspca_dev *gspca_dev, i2c_w8() argument
1282 if (gspca_dev->usb_err < 0) i2c_w8()
1286 memcpy(gspca_dev->usb_buf, buffer, 8); i2c_w8()
1287 ret = usb_control_msg(gspca_dev->dev, i2c_w8()
1288 usb_sndctrlpipe(gspca_dev->dev, 0), i2c_w8()
1292 gspca_dev->usb_buf, 8, i2c_w8()
1297 gspca_dev->usb_err = ret; i2c_w8()
1301 /* sensor read 'len' (1..5) bytes in gspca_dev->usb_buf */ i2c_r()
1302 static void i2c_r(struct gspca_dev *gspca_dev, u8 reg, int len) i2c_r() argument
1304 struct sd *sd = (struct sd *) gspca_dev; i2c_r()
1324 i2c_w8(gspca_dev, mode); i2c_r()
1328 i2c_w8(gspca_dev, mode); i2c_r()
1330 reg_r(gspca_dev, 0x0a, 5); i2c_r()
1333 static void i2c_w_seq(struct gspca_dev *gspca_dev, i2c_w_seq() argument
1338 i2c_w8(gspca_dev, *data); i2c_w_seq()
1347 static void hv7131r_probe(struct gspca_dev *gspca_dev) hv7131r_probe() argument
1349 i2c_w1(gspca_dev, 0x02, 0); /* sensor wakeup */ hv7131r_probe()
1351 reg_w1(gspca_dev, 0x02, 0x66); /* Gpio on */ hv7131r_probe()
1353 i2c_r(gspca_dev, 0, 5); /* read sensor id */ hv7131r_probe()
1354 if (gspca_dev->usb_buf[0] == 0x02 /* chip ID (02 is R) */ hv7131r_probe()
1355 && gspca_dev->usb_buf[1] == 0x09 hv7131r_probe()
1356 && gspca_dev->usb_buf[2] == 0x01) { hv7131r_probe()
1361 gspca_dev->usb_buf[0], gspca_dev->usb_buf[1], hv7131r_probe()
1362 gspca_dev->usb_buf[2]); hv7131r_probe()
1365 static void mi0360_probe(struct gspca_dev *gspca_dev) mi0360_probe() argument
1367 struct sd *sd = (struct sd *) gspca_dev; mi0360_probe()
1386 reg_w1(gspca_dev, 0x17, 0x62); mi0360_probe()
1387 reg_w1(gspca_dev, 0x01, 0x08); mi0360_probe()
1389 i2c_w8(gspca_dev, probe_tb[i][j]); mi0360_probe()
1391 reg_r(gspca_dev, 0x0a, 5); mi0360_probe()
1392 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; mi0360_probe()
1394 i2c_w8(gspca_dev, probe_tb[i][3]); mi0360_probe()
1395 reg_w1(gspca_dev, 0x01, 0x29); mi0360_probe()
1396 reg_w1(gspca_dev, 0x17, 0x42); mi0360_probe()
1400 if (gspca_dev->usb_err < 0) mi0360_probe()
1420 static void ov7630_probe(struct gspca_dev *gspca_dev) ov7630_probe() argument
1422 struct sd *sd = (struct sd *) gspca_dev; ov7630_probe()
1426 reg_w1(gspca_dev, 0x17, 0x62); ov7630_probe()
1427 reg_w1(gspca_dev, 0x01, 0x08); ov7630_probe()
1429 i2c_r(gspca_dev, 0x0a, 2); ov7630_probe()
1430 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; ov7630_probe()
1431 reg_w1(gspca_dev, 0x01, 0x29); ov7630_probe()
1432 reg_w1(gspca_dev, 0x17, 0x42); ov7630_probe()
1433 if (gspca_dev->usb_err < 0) ov7630_probe()
1438 gspca_dev->cam.input_flags = ov7630_probe()
1446 static void ov7648_probe(struct gspca_dev *gspca_dev) ov7648_probe() argument
1448 struct sd *sd = (struct sd *) gspca_dev; ov7648_probe()
1452 reg_w1(gspca_dev, 0x17, 0x62); ov7648_probe()
1453 reg_w1(gspca_dev, 0x01, 0x08); ov7648_probe()
1455 i2c_r(gspca_dev, 0x0a, 2); ov7648_probe()
1456 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; ov7648_probe()
1457 reg_w1(gspca_dev, 0x01, 0x29); ov7648_probe()
1458 reg_w1(gspca_dev, 0x17, 0x42); ov7648_probe()
1465 reg_w1(gspca_dev, 0x17, 0x62); ov7648_probe()
1466 reg_w1(gspca_dev, 0x01, 0x08); ov7648_probe()
1468 i2c_r(gspca_dev, 0x00, 2); ov7648_probe()
1469 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; ov7648_probe()
1470 reg_w1(gspca_dev, 0x01, 0x29); ov7648_probe()
1471 reg_w1(gspca_dev, 0x17, 0x42); ov7648_probe()
1472 if (gspca_dev->usb_err < 0) ov7648_probe()
1483 static void po2030n_probe(struct gspca_dev *gspca_dev) po2030n_probe() argument
1485 struct sd *sd = (struct sd *) gspca_dev; po2030n_probe()
1489 reg_w1(gspca_dev, 0x17, 0x62); po2030n_probe()
1490 reg_w1(gspca_dev, 0x01, 0x08); po2030n_probe()
1491 reg_w1(gspca_dev, 0x02, 0x22); po2030n_probe()
1493 i2c_r(gspca_dev, 0x00, 1); po2030n_probe()
1494 val = gspca_dev->usb_buf[4]; po2030n_probe()
1495 reg_w1(gspca_dev, 0x01, 0x29); /* reset */ po2030n_probe()
1496 reg_w1(gspca_dev, 0x17, 0x42); po2030n_probe()
1504 reg_w1(gspca_dev, 0x17, 0x62); po2030n_probe()
1505 reg_w1(gspca_dev, 0x01, 0x0a); po2030n_probe()
1507 i2c_r(gspca_dev, 0x00, 2); po2030n_probe()
1508 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; po2030n_probe()
1509 reg_w1(gspca_dev, 0x01, 0x29); po2030n_probe()
1510 reg_w1(gspca_dev, 0x17, 0x42); po2030n_probe()
1511 if (gspca_dev->usb_err < 0) po2030n_probe()
1522 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
1525 struct sd *sd = (struct sd *) gspca_dev; sd_config()
1532 cam = &gspca_dev->cam; sd_config()
1551 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
1553 struct sd *sd = (struct sd *) gspca_dev; sd_init()
1559 reg_w1(gspca_dev, 0xf1, 0x01); sd_init()
1560 reg_r(gspca_dev, 0x00, 1); sd_init()
1561 reg_w1(gspca_dev, 0xf1, 0x00); sd_init()
1562 reg_r(gspca_dev, 0x00, 1); /* get sonix chip id */ sd_init()
1563 regF1 = gspca_dev->usb_buf[0]; sd_init()
1564 if (gspca_dev->usb_err < 0) sd_init()
1565 return gspca_dev->usb_err; sd_init()
1567 if (gspca_dev->audio) sd_init()
1584 mi0360_probe(gspca_dev); sd_init()
1587 ov7630_probe(gspca_dev); sd_init()
1590 ov7648_probe(gspca_dev); sd_init()
1593 po2030n_probe(gspca_dev); sd_init()
1599 reg_w1(gspca_dev, 0x02, regGpio[1]); sd_init()
1602 reg_w(gspca_dev, 0x01, regGpio, 2); sd_init()
1608 reg_w1(gspca_dev, 0xf1, 0x00); sd_init()
1614 return gspca_dev->usb_err; sd_init()
1624 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
1626 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
1627 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
1629 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
1660 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1662 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1671 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
1694 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); sd_init_controls()
1700 static u32 expo_adjust(struct gspca_dev *gspca_dev, expo_adjust() argument
1703 struct sd *sd = (struct sd *) gspca_dev; expo_adjust()
1711 i2c_w1(gspca_dev, 0x68, a); expo_adjust()
1714 i2c_w1(gspca_dev, 0x03, b >> 8); expo_adjust()
1715 i2c_w1(gspca_dev, 0x04, b); expo_adjust()
1725 i2c_w8(gspca_dev, Expodoit); expo_adjust()
1743 i2c_w8(gspca_dev, expoMi); expo_adjust()
1744 i2c_w8(gspca_dev, doit); expo_adjust()
1745 i2c_w8(gspca_dev, sensorgo); expo_adjust()
1761 i2c_w8(gspca_dev, expoMof); expo_adjust()
1764 i2c_w8(gspca_dev, expoMo10); expo_adjust()
1765 i2c_w8(gspca_dev, gainMo); expo_adjust()
1782 i2c_w8(gspca_dev, expo_c1); expo_adjust()
1795 i2c_w8(gspca_dev, gainOm); expo_adjust()
1796 reg_w1(gspca_dev, 0x96, expo >> 5); expo_adjust()
1804 static void setbrightness(struct gspca_dev *gspca_dev) setbrightness() argument
1806 struct sd *sd = (struct sd *) gspca_dev; setbrightness()
1823 sd->exposure = expo_adjust(gspca_dev, expo); setbrightness()
1828 sd->exposure = expo_adjust(gspca_dev, expo); setbrightness()
1832 sd->exposure = expo_adjust(gspca_dev, expo); setbrightness()
1836 sd->exposure = expo_adjust(gspca_dev, expo); setbrightness()
1840 sd->exposure = expo_adjust(gspca_dev, expo); setbrightness()
1844 sd->exposure = expo_adjust(gspca_dev, expo); setbrightness()
1848 reg_w1(gspca_dev, 0x96, k2); /* color matrix Y offset */ setbrightness()
1851 static void setcontrast(struct gspca_dev *gspca_dev) setcontrast() argument
1853 struct sd *sd = (struct sd *) gspca_dev; setcontrast()
1865 reg_w(gspca_dev, 0x84, contrast, sizeof contrast); setcontrast()
1868 static void setcolors(struct gspca_dev *gspca_dev) setcolors() argument
1870 struct sd *sd = (struct sd *) gspca_dev; setcolors()
1893 reg_w(gspca_dev, 0x8a, reg8a, sizeof reg8a); setcolors()
1896 static void setredblue(struct gspca_dev *gspca_dev) setredblue() argument
1898 struct sd *sd = (struct sd *) gspca_dev; setredblue()
1907 i2c_w8(gspca_dev, rg1b); setredblue()
1910 reg_w1(gspca_dev, 0x05, sd->red_bal->val); setredblue()
1911 /* reg_w1(gspca_dev, 0x07, 32); */ setredblue()
1912 reg_w1(gspca_dev, 0x06, sd->blue_bal->val); setredblue()
1915 static void setgamma(struct gspca_dev *gspca_dev) setgamma() argument
1917 struct sd *sd = (struct sd *) gspca_dev; setgamma()
1950 reg_w(gspca_dev, 0x20, gamma, sizeof gamma); setgamma()
1953 static void setexposure(struct gspca_dev *gspca_dev) setexposure() argument
1955 struct sd *sd = (struct sd *) gspca_dev; setexposure()
1961 rexpo[3] = gspca_dev->exposure->val >> 8; setexposure()
1962 i2c_w8(gspca_dev, rexpo); setexposure()
1965 rexpo[3] = gspca_dev->exposure->val; setexposure()
1966 i2c_w8(gspca_dev, rexpo); setexposure()
1970 static void setautogain(struct gspca_dev *gspca_dev) setautogain() argument
1972 struct sd *sd = (struct sd *) gspca_dev; setautogain()
1983 if (gspca_dev->autogain->val) setautogain()
1985 i2c_w1(&sd->gspca_dev, 0x13, comb); setautogain()
1989 if (gspca_dev->autogain->val) setautogain()
1995 static void setgain(struct gspca_dev *gspca_dev) setgain() argument
1997 struct sd *sd = (struct sd *) gspca_dev; setgain()
2003 rgain[3] = gspca_dev->gain->val; setgain()
2004 i2c_w8(gspca_dev, rgain); setgain()
2008 static void sethvflip(struct gspca_dev *gspca_dev) sethvflip() argument
2010 struct sd *sd = (struct sd *) gspca_dev; sethvflip()
2018 i2c_w1(gspca_dev, 0x01, comn); /* sctra */ sethvflip()
2024 i2c_w1(gspca_dev, 0x75, comn); sethvflip()
2030 i2c_w1(gspca_dev, 0x75, comn); sethvflip()
2046 i2c_w1(&sd->gspca_dev, 0x1e, comn); sethvflip()
2051 static void setsharpness(struct gspca_dev *gspca_dev) setsharpness() argument
2053 struct sd *sd = (struct sd *) gspca_dev; setsharpness()
2055 reg_w1(gspca_dev, 0x99, sd->sharpness->val); setsharpness()
2058 static void setillum(struct gspca_dev *gspca_dev) setillum() argument
2060 struct sd *sd = (struct sd *) gspca_dev; setillum()
2064 reg_w1(gspca_dev, 0x02, /* gpio */ setillum()
2068 reg_w1(gspca_dev, 0x02, setillum()
2077 static void setfreq(struct gspca_dev *gspca_dev) setfreq() argument
2079 struct sd *sd = (struct sd *) gspca_dev; setfreq()
2087 i2c_w1(gspca_dev, 0x13, com8 | 0x20); setfreq()
2090 i2c_w1(gspca_dev, 0x13, com8); setfreq()
2091 i2c_w1(gspca_dev, 0x3b, 0x0a); setfreq()
2094 i2c_w1(gspca_dev, 0x13, com8); setfreq()
2095 i2c_w1(gspca_dev, 0x3b, 0x02); setfreq()
2126 i2c_w1(gspca_dev, 0x2a, reg2a); setfreq()
2127 i2c_w1(gspca_dev, 0x2b, reg2b); setfreq()
2128 i2c_w1(gspca_dev, 0x2d, reg2d); setfreq()
2132 static void setjpegqual(struct gspca_dev *gspca_dev) setjpegqual() argument
2134 struct sd *sd = (struct sd *) gspca_dev; setjpegqual()
2140 memcpy(gspca_dev->usb_buf, &sd->jpeg_hdr[JPEG_QT0_OFFSET], 64); setjpegqual()
2141 usb_control_msg(gspca_dev->dev, setjpegqual()
2142 usb_sndctrlpipe(gspca_dev->dev, 0), setjpegqual()
2146 gspca_dev->usb_buf, 64, setjpegqual()
2148 memcpy(gspca_dev->usb_buf, &sd->jpeg_hdr[JPEG_QT1_OFFSET], 64); setjpegqual()
2149 usb_control_msg(gspca_dev->dev, setjpegqual()
2150 usb_sndctrlpipe(gspca_dev->dev, 0), setjpegqual()
2154 gspca_dev->usb_buf, 64, setjpegqual()
2158 reg_w1(gspca_dev, 0x18, sd->reg18); setjpegqual()
2166 struct gspca_dev *gspca_dev = &sd->gspca_dev; qual_upd() local
2168 /* To protect gspca_dev->usb_buf and gspca_dev->usb_err */ qual_upd()
2169 mutex_lock(&gspca_dev->usb_lock); qual_upd()
2171 gspca_dev->usb_err = 0; qual_upd()
2172 setjpegqual(gspca_dev); qual_upd()
2173 mutex_unlock(&gspca_dev->usb_lock); qual_upd()
2177 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
2179 struct sd *sd = (struct sd *) gspca_dev; sd_start()
2207 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, sd_start()
2208 gspca_dev->pixfmt.width, sd_start()
2215 /* reg_w1(gspca_dev, 0xf1, 0x00); */ sd_start()
2219 reg_w1(gspca_dev, 0x01, reg01); sd_start()
2224 if (gspca_dev->audio) sd_start()
2226 reg_w(gspca_dev, 0x01, reg0102, 2); sd_start()
2227 reg_w(gspca_dev, 0x08, &sn9c1xx[8], 2); sd_start()
2228 reg_w(gspca_dev, 0x17, &sn9c1xx[0x17], 5); sd_start()
2242 reg_w(gspca_dev, 0x9a, reg9a, 6); sd_start()
2244 reg_w(gspca_dev, 0xd4, regd4, sizeof regd4); sd_start()
2246 reg_w(gspca_dev, 0x03, &sn9c1xx[3], 0x0f); sd_start()
2255 reg_w1(gspca_dev, 0x02, 0x73); sd_start()
2257 reg_w1(gspca_dev, 0x17, reg17); sd_start()
2258 reg_w1(gspca_dev, 0x01, 0x22); sd_start()
2266 reg_w1(gspca_dev, 0x01, reg01); sd_start()
2268 reg_w1(gspca_dev, 0x17, reg17); sd_start()
2270 reg_w1(gspca_dev, 0x01, reg01); sd_start()
2272 reg_w1(gspca_dev, 0x01, reg01); sd_start()
2276 hv7131r_probe(gspca_dev); /*fixme: is it useful? */ sd_start()
2280 reg_w1(gspca_dev, 0x01, reg01); sd_start()
2281 i2c_w8(gspca_dev, om6802_init0[0]); sd_start()
2282 i2c_w8(gspca_dev, om6802_init0[1]); sd_start()
2284 reg_w1(gspca_dev, 0x02, 0x71); sd_start()
2289 reg_w1(gspca_dev, 0x02, 0x62); sd_start()
2294 i2c_w_seq(gspca_dev, sensor_init[sd->sensor]); sd_start()
2296 reg_w1(gspca_dev, 0x15, sn9c1xx[0x15]); sd_start()
2297 reg_w1(gspca_dev, 0x16, sn9c1xx[0x16]); sd_start()
2298 reg_w1(gspca_dev, 0x12, sn9c1xx[0x12]); sd_start()
2299 reg_w1(gspca_dev, 0x13, sn9c1xx[0x13]); sd_start()
2300 reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]); sd_start()
2302 reg_w1(gspca_dev, 0xd2, 0x3a); /* AE_H_SIZE = 116 */ sd_start()
2303 reg_w1(gspca_dev, 0xd3, 0x30); /* AE_V_SIZE = 96 */ sd_start()
2305 reg_w1(gspca_dev, 0xd2, 0x6a); /* AE_H_SIZE = 212 */ sd_start()
2306 reg_w1(gspca_dev, 0xd3, 0x50); /* AE_V_SIZE = 160 */ sd_start()
2308 reg_w1(gspca_dev, 0xc6, 0x00); sd_start()
2309 reg_w1(gspca_dev, 0xc7, 0x00); sd_start()
2311 reg_w1(gspca_dev, 0xc8, 0x2c); /* AW_H_STOP = 352 */ sd_start()
2312 reg_w1(gspca_dev, 0xc9, 0x24); /* AW_V_STOP = 288 */ sd_start()
2314 reg_w1(gspca_dev, 0xc8, 0x50); /* AW_H_STOP = 640 */ sd_start()
2315 reg_w1(gspca_dev, 0xc9, 0x3c); /* AW_V_STOP = 480 */ sd_start()
2317 reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]); sd_start()
2326 reg_w1(gspca_dev, 0x17, reg17); sd_start()
2328 reg_w1(gspca_dev, 0x05, 0x00); /* red */ sd_start()
2329 reg_w1(gspca_dev, 0x07, 0x00); /* green */ sd_start()
2330 reg_w1(gspca_dev, 0x06, 0x00); /* blue */ sd_start()
2331 reg_w1(gspca_dev, 0x14, sn9c1xx[0x14]); sd_start()
2333 setgamma(gspca_dev); sd_start()
2337 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); sd_start()
2342 reg_w1(gspca_dev, 0x9a, 0x05); sd_start()
2347 reg_w1(gspca_dev, 0x9a, 0x07); sd_start()
2351 reg_w1(gspca_dev, 0x9a, 0x0a); sd_start()
2355 reg_w1(gspca_dev, 0x9a, 0x06); sd_start()
2358 reg_w1(gspca_dev, 0x9a, 0x08); sd_start()
2361 setsharpness(gspca_dev); sd_start()
2363 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); sd_start()
2364 reg_w1(gspca_dev, 0x05, 0x20); /* red */ sd_start()
2365 reg_w1(gspca_dev, 0x07, 0x20); /* green */ sd_start()
2366 reg_w1(gspca_dev, 0x06, 0x20); /* blue */ sd_start()
2369 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_start()
2438 i2c_w_seq(gspca_dev, init); sd_start()
2442 reg_w(gspca_dev, 0xc0, C0, 6); sd_start()
2447 reg_w(gspca_dev, 0xca, CA_adcm1700, 4); sd_start()
2450 reg_w(gspca_dev, 0xca, CA_po2030n, 4); sd_start()
2453 reg_w(gspca_dev, 0xca, CA, 4); sd_start()
2462 reg_w(gspca_dev, 0xce, CE_ov76xx, 4); sd_start()
2465 reg_w(gspca_dev, 0xce, CE_gc0307, 4); sd_start()
2468 reg_w(gspca_dev, 0xce, CE_po2030n, 4); sd_start()
2471 reg_w(gspca_dev, 0xce, CE, 4); sd_start()
2478 reg_w1(gspca_dev, 0x18, sd->reg18); sd_start()
2479 setjpegqual(gspca_dev); sd_start()
2481 reg_w1(gspca_dev, 0x17, reg17); sd_start()
2482 reg_w1(gspca_dev, 0x01, reg01); sd_start()
2490 return gspca_dev->usb_err; sd_start()
2493 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
2495 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
2515 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2517 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2518 /* reg_w1(gspca_dev, 0x02, 0x??); * LED off ? */ sd_stopN()
2522 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2523 i2c_w8(gspca_dev, stophv7131); sd_stopN()
2528 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2529 /* reg_w1(gspca_dev, 0x02, 0x40); * LED off ? */ sd_stopN()
2530 i2c_w8(gspca_dev, stopmi0360); sd_stopN()
2536 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2541 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2542 i2c_w8(gspca_dev, stopov7648); sd_stopN()
2546 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2549 i2c_w8(gspca_dev, stopsoi768); sd_stopN()
2554 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2556 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2557 reg_w1(gspca_dev, 0x17, reg17); sd_stopN()
2559 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2561 reg_w1(gspca_dev, 0x01, reg01); sd_stopN()
2563 /* reg_w1(gspca_dev, 0xf1, 0x01); */ sd_stopN()
2568 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
2570 struct sd *sd = (struct sd *) gspca_dev; sd_stop0()
2573 mutex_unlock(&gspca_dev->usb_lock); sd_stop0()
2575 mutex_lock(&gspca_dev->usb_lock); sd_stop0()
2580 static void do_autogain(struct gspca_dev *gspca_dev) do_autogain() argument
2582 struct sd *sd = (struct sd *) gspca_dev; do_autogain()
2599 gspca_expo_autogain(gspca_dev, delta, luma_mean, luma_delta, do_autogain()
2612 sd->exposure = expo_adjust(gspca_dev, do_autogain()
2620 sd->exposure = expo_adjust(gspca_dev, do_autogain()
2629 sd->exposure = expo_adjust(gspca_dev, do_autogain()
2631 setredblue(gspca_dev); do_autogain()
2641 sd->exposure = expo_adjust(gspca_dev, do_autogain()
2643 setredblue(gspca_dev); do_autogain()
2674 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
2678 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
2741 if (gspca_dev->last_packet_type == LAST_PACKET) sd_pkt_scan()
2742 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
2744 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
2753 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
2758 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
2763 gspca_frame_add(gspca_dev, LAST_PACKET, data, i); sd_pkt_scan()
2771 gspca_dev->urb[0]->iso_frame_desc[0].length); sd_pkt_scan()
2810 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
2812 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
2818 struct gspca_dev *gspca_dev = sd_s_ctrl() local
2819 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
2821 gspca_dev->usb_err = 0; sd_s_ctrl()
2823 if (!gspca_dev->streaming) sd_s_ctrl()
2828 setbrightness(gspca_dev); sd_s_ctrl()
2831 setcontrast(gspca_dev); sd_s_ctrl()
2834 setcolors(gspca_dev); sd_s_ctrl()
2837 setredblue(gspca_dev); sd_s_ctrl()
2840 setgamma(gspca_dev); sd_s_ctrl()
2843 setautogain(gspca_dev); sd_s_ctrl()
2844 setexposure(gspca_dev); sd_s_ctrl()
2845 setgain(gspca_dev); sd_s_ctrl()
2848 sethvflip(gspca_dev); sd_s_ctrl()
2851 setsharpness(gspca_dev); sd_s_ctrl()
2854 setillum(gspca_dev); sd_s_ctrl()
2857 setfreq(gspca_dev); sd_s_ctrl()
2862 return gspca_dev->usb_err; sd_s_ctrl()
2866 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, sd_int_pkt_scan() argument
2873 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); sd_int_pkt_scan()
2874 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
2875 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_int_pkt_scan()
2876 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
H A Dw996Xcf.c72 struct usb_device *udev = sd->gspca_dev.dev; w9968cf_write_fsb()
76 if (sd->gspca_dev.usb_err < 0) w9968cf_write_fsb()
80 memcpy(sd->gspca_dev.usb_buf, data, 6); w9968cf_write_fsb()
84 value, 0x06, sd->gspca_dev.usb_buf, 6, 500); w9968cf_write_fsb()
87 sd->gspca_dev.usb_err = ret; w9968cf_write_fsb()
99 if (sd->gspca_dev.usb_err < 0) w9968cf_write_sb()
104 ret = usb_control_msg(sd->gspca_dev.dev, w9968cf_write_sb()
105 usb_sndctrlpipe(sd->gspca_dev.dev, 0), w9968cf_write_sb()
114 sd->gspca_dev.usb_err = ret; w9968cf_write_sb()
126 if (sd->gspca_dev.usb_err < 0) w9968cf_read_sb()
131 ret = usb_control_msg(sd->gspca_dev.dev, w9968cf_read_sb()
132 usb_rcvctrlpipe(sd->gspca_dev.dev, 0), w9968cf_read_sb()
135 0, 0x01, sd->gspca_dev.usb_buf, 2, 500); w9968cf_read_sb()
137 ret = sd->gspca_dev.usb_buf[0] | w9968cf_read_sb()
138 (sd->gspca_dev.usb_buf[1] << 8); w9968cf_read_sb()
141 sd->gspca_dev.usb_err = ret; w9968cf_read_sb()
235 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; w9968cf_smbus_read_ack() local
245 sd->gspca_dev.usb_err = -EIO; w9968cf_smbus_read_ack()
252 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; w9968cf_i2c_w() local
253 u16* data = (u16 *)sd->gspca_dev.usb_buf; w9968cf_i2c_w()
302 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; w9968cf_i2c_r() local
328 if (sd->gspca_dev.usb_err >= 0) { w9968cf_i2c_r()
433 fw = SC(sd->gspca_dev.pixfmt.width) / max_width; w9968cf_set_crop_window()
434 fh = SC(sd->gspca_dev.pixfmt.height) / max_height; w9968cf_set_crop_window()
436 cw = (fw >= fh) ? max_width : SC(sd->gspca_dev.pixfmt.width) / fh; w9968cf_set_crop_window()
437 ch = (fw >= fh) ? SC(sd->gspca_dev.pixfmt.height) / fw : max_height; w9968cf_set_crop_window()
457 reg_w(sd, 0x14, sd->gspca_dev.pixfmt.width); w9968cf_mode_init_regs()
458 reg_w(sd, 0x15, sd->gspca_dev.pixfmt.height); w9968cf_mode_init_regs()
461 reg_w(sd, 0x30, sd->gspca_dev.pixfmt.width); w9968cf_mode_init_regs()
462 reg_w(sd, 0x31, sd->gspca_dev.pixfmt.height); w9968cf_mode_init_regs()
465 if (w9968cf_vga_mode[sd->gspca_dev.curr_mode].pixelformat == w9968cf_mode_init_regs()
467 reg_w(sd, 0x2c, sd->gspca_dev.pixfmt.width / 2); w9968cf_mode_init_regs()
468 reg_w(sd, 0x2d, sd->gspca_dev.pixfmt.width / 4); w9968cf_mode_init_regs()
470 reg_w(sd, 0x2c, sd->gspca_dev.pixfmt.width); w9968cf_mode_init_regs()
476 val = sd->gspca_dev.pixfmt.width * sd->gspca_dev.pixfmt.height; w9968cf_mode_init_regs()
480 if (w9968cf_vga_mode[sd->gspca_dev.curr_mode].pixelformat == w9968cf_mode_init_regs()
483 jpeg_define(sd->jpeg_hdr, sd->gspca_dev.pixfmt.height, w9968cf_mode_init_regs()
484 sd->gspca_dev.pixfmt.width, 0x22); /* JPEG 420 */ w9968cf_mode_init_regs()
506 if (w9968cf_vga_mode[sd->gspca_dev.curr_mode].pixelformat == w9968cf_mode_init_regs()
521 sd->gspca_dev.empty_packet = 0; w9968cf_mode_init_regs()
539 static void w9968cf_pkt_scan(struct gspca_dev *gspca_dev, w9968cf_pkt_scan() argument
543 struct sd *sd = (struct sd *) gspca_dev; w9968cf_pkt_scan()
545 if (w9968cf_vga_mode[gspca_dev->curr_mode].pixelformat == w9968cf_pkt_scan()
550 gspca_frame_add(gspca_dev, LAST_PACKET, w9968cf_pkt_scan()
552 gspca_frame_add(gspca_dev, FIRST_PACKET, w9968cf_pkt_scan()
561 if (gspca_dev->empty_packet) { w9968cf_pkt_scan()
562 gspca_frame_add(gspca_dev, LAST_PACKET, w9968cf_pkt_scan()
564 gspca_frame_add(gspca_dev, FIRST_PACKET, w9968cf_pkt_scan()
566 gspca_dev->empty_packet = 0; w9968cf_pkt_scan()
569 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); w9968cf_pkt_scan()
H A Dov519.c65 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
2039 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; reg_w() local
2042 if (sd->gspca_dev.usb_err < 0) reg_w()
2056 ret = usb_control_msg(sd->gspca_dev.dev, reg_w()
2057 usb_sndctrlpipe(sd->gspca_dev.dev, 0), reg_w()
2068 sd->gspca_dev.usb_buf[0] = value; reg_w()
2069 ret = usb_control_msg(sd->gspca_dev.dev, reg_w()
2070 usb_sndctrlpipe(sd->gspca_dev.dev, 0), reg_w()
2074 sd->gspca_dev.usb_buf, 1, 500); reg_w()
2078 sd->gspca_dev.usb_err = ret; reg_w()
2087 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; reg_r() local
2091 if (sd->gspca_dev.usb_err < 0) reg_r()
2106 ret = usb_control_msg(sd->gspca_dev.dev, reg_r()
2107 usb_rcvctrlpipe(sd->gspca_dev.dev, 0), reg_r()
2110 0, index, sd->gspca_dev.usb_buf, 1, 500); reg_r()
2113 ret = sd->gspca_dev.usb_buf[0]; reg_r()
2118 sd->gspca_dev.usb_err = ret; reg_r()
2128 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; reg_r8() local
2131 if (sd->gspca_dev.usb_err < 0) reg_r8()
2134 ret = usb_control_msg(sd->gspca_dev.dev, reg_r8()
2135 usb_rcvctrlpipe(sd->gspca_dev.dev, 0), reg_r8()
2138 0, index, sd->gspca_dev.usb_buf, 8, 500); reg_r8()
2141 ret = sd->gspca_dev.usb_buf[0]; reg_r8()
2144 sd->gspca_dev.usb_err = ret; reg_r8()
2182 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov518_reg_w32() local
2185 if (sd->gspca_dev.usb_err < 0) ov518_reg_w32()
2188 *((__le32 *) sd->gspca_dev.usb_buf) = __cpu_to_le32(value); ov518_reg_w32()
2190 ret = usb_control_msg(sd->gspca_dev.dev, ov518_reg_w32()
2191 usb_sndctrlpipe(sd->gspca_dev.dev, 0), ov518_reg_w32()
2195 sd->gspca_dev.usb_buf, n, 500); ov518_reg_w32()
2198 sd->gspca_dev.usb_err = ret; ov518_reg_w32()
2204 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov511_i2c_w() local
2238 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov511_i2c_r() local
2311 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov518_i2c_w() local
2338 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov518_i2c_r() local
2359 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ovfx2_i2c_w() local
2362 if (sd->gspca_dev.usb_err < 0) ovfx2_i2c_w()
2365 ret = usb_control_msg(sd->gspca_dev.dev, ovfx2_i2c_w()
2366 usb_sndctrlpipe(sd->gspca_dev.dev, 0), ovfx2_i2c_w()
2373 sd->gspca_dev.usb_err = ret; ovfx2_i2c_w()
2381 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ovfx2_i2c_r() local
2384 if (sd->gspca_dev.usb_err < 0) ovfx2_i2c_r()
2387 ret = usb_control_msg(sd->gspca_dev.dev, ovfx2_i2c_r()
2388 usb_rcvctrlpipe(sd->gspca_dev.dev, 0), ovfx2_i2c_r()
2391 0, (u16) reg, sd->gspca_dev.usb_buf, 1, 500); ovfx2_i2c_r()
2394 ret = sd->gspca_dev.usb_buf[0]; ovfx2_i2c_r()
2398 sd->gspca_dev.usb_err = ret; ovfx2_i2c_r()
2427 if (sd->gspca_dev.usb_err >= 0) { i2c_w()
2494 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov51x_stop() local
2525 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov51x_restart() local
2565 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; init_ov_sensor() local
2645 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov_hires_configure() local
2692 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov8xx0_configure() local
2714 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov7xx0_configure() local
2799 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov6xx0_configure() local
2865 static void sd_reset_snapshot(struct gspca_dev *gspca_dev) sd_reset_snapshot() argument
2867 struct sd *sd = (struct sd *) gspca_dev; sd_reset_snapshot()
2933 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov51x_upload_quan_tables() local
2970 static void ov511_configure(struct gspca_dev *gspca_dev) ov511_configure() argument
2972 struct sd *sd = (struct sd *) gspca_dev; ov511_configure()
3036 static void ov518_configure(struct gspca_dev *gspca_dev) ov518_configure() argument
3038 struct sd *sd = (struct sd *) gspca_dev; ov518_configure()
3174 write_regvals(sd, bridge_ov7660[sd->gspca_dev.curr_mode], ov519_set_mode()
3176 write_i2c_regvals(sd, sensor_ov7660[sd->gspca_dev.curr_mode], ov519_set_mode()
3222 reg_w(sd, 0xa4, fr_tb[sd->gspca_dev.curr_mode][fr][0]); ov519_set_fr()
3223 reg_w(sd, 0x23, fr_tb[sd->gspca_dev.curr_mode][fr][1]); ov519_set_fr()
3224 clock = fr_tb[sd->gspca_dev.curr_mode][fr][2]; ov519_set_fr()
3230 static void setautogain(struct gspca_dev *gspca_dev, s32 val) setautogain() argument
3232 struct sd *sd = (struct sd *) gspca_dev; setautogain()
3238 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
3241 struct sd *sd = (struct sd *) gspca_dev; sd_config()
3242 struct cam *cam = &gspca_dev->cam; sd_config()
3281 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
3283 struct sd *sd = (struct sd *) gspca_dev; sd_init()
3284 struct cam *cam = &gspca_dev->cam; sd_init()
3289 ov511_configure(gspca_dev); sd_init()
3293 ov518_configure(gspca_dev); sd_init()
3437 sd->gspca_dev.curr_mode = 1; /* 640x480 */ sd_init()
3440 sd_reset_snapshot(gspca_dev); sd_init()
3458 return gspca_dev->usb_err; sd_init()
3465 static int sd_isoc_init(struct gspca_dev *gspca_dev) sd_isoc_init() argument
3467 struct sd *sd = (struct sd *) gspca_dev; sd_isoc_init()
3471 if (gspca_dev->pixfmt.width != 800) sd_isoc_init()
3472 gspca_dev->cam.bulk_size = OVFX2_BULK_SIZE; sd_isoc_init()
3474 gspca_dev->cam.bulk_size = 7 * 4096; sd_isoc_init()
3486 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov511_mode_init_regs() local
3492 intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface); ov511_mode_init_regs()
3493 alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt); ov511_mode_init_regs()
3496 sd->gspca_dev.usb_err = -EIO; ov511_mode_init_regs()
3510 hsegs = (sd->gspca_dev.pixfmt.width >> 3) - 1; ov511_mode_init_regs()
3511 vsegs = (sd->gspca_dev.pixfmt.height >> 3) - 1; ov511_mode_init_regs()
3544 if (sd->gspca_dev.pixfmt.width == 320) ov511_mode_init_regs()
3554 if (sd->gspca_dev.pixfmt.width != 640) { ov511_mode_init_regs()
3587 needed = fps * sd->gspca_dev.pixfmt.width * ov511_mode_init_regs()
3588 sd->gspca_dev.pixfmt.height * 3 / 2; ov511_mode_init_regs()
3612 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov518_mode_init_regs() local
3617 intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface); ov518_mode_init_regs()
3618 alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt); ov518_mode_init_regs()
3621 sd->gspca_dev.usb_err = -EIO; ov518_mode_init_regs()
3650 hsegs = sd->gspca_dev.pixfmt.width / 16; ov518_mode_init_regs()
3651 vsegs = sd->gspca_dev.pixfmt.height / 4; ov518_mode_init_regs()
3691 sd->gspca_dev.pixfmt.width == 640) { ov518_mode_init_regs()
3797 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov519_mode_init_regs() local
3817 reg_w(sd, OV519_R10_H_SIZE, sd->gspca_dev.pixfmt.width >> 4); ov519_mode_init_regs()
3818 reg_w(sd, OV519_R11_V_SIZE, sd->gspca_dev.pixfmt.height >> 3); ov519_mode_init_regs()
3820 sd->gspca_dev.cam.cam_mode[sd->gspca_dev.curr_mode].priv) ov519_mode_init_regs()
3823 sd->gspca_dev.cam.cam_mode[sd->gspca_dev.curr_mode].priv) ov519_mode_init_regs()
3914 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; mode_init_ov_sensor_regs() local
3918 qvga = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv & 1; mode_init_ov_sensor_regs()
3952 xstart = (1040 - gspca_dev->pixfmt.width) / 2 + mode_init_ov_sensor_regs()
3954 ystart = (776 - gspca_dev->pixfmt.height) / 2; mode_init_ov_sensor_regs()
3956 xstart = (2076 - gspca_dev->pixfmt.width) / 2 + mode_init_ov_sensor_regs()
3958 ystart = (1544 - gspca_dev->pixfmt.height) / 2; mode_init_ov_sensor_regs()
3960 xend = xstart + gspca_dev->pixfmt.width; mode_init_ov_sensor_regs()
3961 yend = ystart + gspca_dev->pixfmt.height; mode_init_ov_sensor_regs()
4104 static void sethvflip(struct gspca_dev *gspca_dev, s32 hflip, s32 vflip) sethvflip() argument
4106 struct sd *sd = (struct sd *) gspca_dev; sethvflip()
4108 if (sd->gspca_dev.streaming) sethvflip()
4113 if (sd->gspca_dev.streaming) sethvflip()
4119 struct gspca_dev *gspca_dev; set_ov_sensor_window() local
4138 gspca_dev = &sd->gspca_dev; set_ov_sensor_window()
4139 qvga = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv & 1; set_ov_sensor_window()
4140 crop = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv & 2; set_ov_sensor_window()
4231 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
4233 struct sd *sd = (struct sd *) gspca_dev; sd_start()
4236 sd->sensor_width = sd->gspca_dev.pixfmt.width; sd_start()
4237 sd->sensor_height = sd->gspca_dev.pixfmt.height; sd_start()
4262 sd_reset_snapshot(gspca_dev); sd_start()
4268 return gspca_dev->usb_err; sd_start()
4271 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
4273 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
4279 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
4281 struct sd *sd = (struct sd *) gspca_dev; sd_stop0()
4283 if (!sd->gspca_dev.present) sd_stop0()
4291 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_stop0()
4292 input_sync(gspca_dev->input_dev); sd_stop0()
4300 static void ov51x_handle_button(struct gspca_dev *gspca_dev, u8 state) ov51x_handle_button() argument
4302 struct sd *sd = (struct sd *) gspca_dev; ov51x_handle_button()
4306 input_report_key(gspca_dev->input_dev, KEY_CAMERA, state); ov51x_handle_button()
4307 input_sync(gspca_dev->input_dev); ov51x_handle_button()
4328 static void ov511_pkt_scan(struct gspca_dev *gspca_dev, ov511_pkt_scan() argument
4332 struct sd *sd = (struct sd *) gspca_dev; ov511_pkt_scan()
4349 ov51x_handle_button(gspca_dev, (in[8] >> 2) & 1); ov511_pkt_scan()
4352 if ((in[9] + 1) * 8 != gspca_dev->pixfmt.width || ov511_pkt_scan()
4353 (in[10] + 1) * 8 != gspca_dev->pixfmt.height) { ov511_pkt_scan()
4357 gspca_dev->pixfmt.width, ov511_pkt_scan()
4358 gspca_dev->pixfmt.height); ov511_pkt_scan()
4359 gspca_dev->last_packet_type = DISCARD_PACKET; ov511_pkt_scan()
4363 gspca_frame_add(gspca_dev, LAST_PACKET, in, 11); ov511_pkt_scan()
4367 gspca_frame_add(gspca_dev, FIRST_PACKET, in, 0); ov511_pkt_scan()
4376 gspca_frame_add(gspca_dev, INTER_PACKET, in, len); ov511_pkt_scan()
4379 static void ov518_pkt_scan(struct gspca_dev *gspca_dev, ov518_pkt_scan() argument
4383 struct sd *sd = (struct sd *) gspca_dev; ov518_pkt_scan()
4388 ov51x_handle_button(gspca_dev, (data[6] >> 1) & 1); ov518_pkt_scan()
4389 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); ov518_pkt_scan()
4390 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); ov518_pkt_scan()
4394 if (gspca_dev->last_packet_type == DISCARD_PACKET) ov518_pkt_scan()
4408 gspca_dev->last_packet_type = DISCARD_PACKET; ov518_pkt_scan()
4414 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); ov518_pkt_scan()
4417 static void ov519_pkt_scan(struct gspca_dev *gspca_dev, ov519_pkt_scan() argument
4444 gspca_frame_add(gspca_dev, FIRST_PACKET, ov519_pkt_scan()
4447 gspca_dev->last_packet_type = DISCARD_PACKET; ov519_pkt_scan()
4450 ov51x_handle_button(gspca_dev, data[11] & 1); ov519_pkt_scan()
4452 gspca_dev->last_packet_type = DISCARD_PACKET; ov519_pkt_scan()
4453 gspca_frame_add(gspca_dev, LAST_PACKET, ov519_pkt_scan()
4460 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); ov519_pkt_scan()
4463 static void ovfx2_pkt_scan(struct gspca_dev *gspca_dev, ovfx2_pkt_scan() argument
4467 struct sd *sd = (struct sd *) gspca_dev; ovfx2_pkt_scan()
4469 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); ovfx2_pkt_scan()
4472 if (len < gspca_dev->cam.bulk_size) { ovfx2_pkt_scan()
4477 if (gspca_dev->image_len < ovfx2_pkt_scan()
4478 sd->gspca_dev.pixfmt.width * ovfx2_pkt_scan()
4479 sd->gspca_dev.pixfmt.height) ovfx2_pkt_scan()
4480 gspca_dev->last_packet_type = DISCARD_PACKET; ovfx2_pkt_scan()
4482 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); ovfx2_pkt_scan()
4483 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); ovfx2_pkt_scan()
4487 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
4491 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
4496 ov511_pkt_scan(gspca_dev, data, len); sd_pkt_scan()
4500 ov518_pkt_scan(gspca_dev, data, len); sd_pkt_scan()
4503 ov519_pkt_scan(gspca_dev, data, len); sd_pkt_scan()
4506 ovfx2_pkt_scan(gspca_dev, data, len); sd_pkt_scan()
4509 w9968cf_pkt_scan(gspca_dev, data, len); sd_pkt_scan()
4516 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
4518 struct sd *sd = (struct sd *) gspca_dev; setbrightness()
4563 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
4565 struct sd *sd = (struct sd *) gspca_dev; setcontrast()
4665 static void setexposure(struct gspca_dev *gspca_dev, s32 val) setexposure() argument
4667 struct sd *sd = (struct sd *) gspca_dev; setexposure()
4672 static void setcolors(struct gspca_dev *gspca_dev, s32 val) setcolors() argument
4674 struct sd *sd = (struct sd *) gspca_dev; setcolors()
4721 static void setautobright(struct gspca_dev *gspca_dev, s32 val) setautobright() argument
4723 struct sd *sd = (struct sd *) gspca_dev; setautobright()
4787 static void setfreq(struct gspca_dev *gspca_dev, s32 val) setfreq() argument
4789 struct sd *sd = (struct sd *) gspca_dev; setfreq()
4798 static int sd_get_jcomp(struct gspca_dev *gspca_dev, sd_get_jcomp() argument
4801 struct sd *sd = (struct sd *) gspca_dev; sd_get_jcomp()
4813 static int sd_set_jcomp(struct gspca_dev *gspca_dev, sd_set_jcomp() argument
4816 struct sd *sd = (struct sd *) gspca_dev; sd_set_jcomp()
4827 struct gspca_dev *gspca_dev = sd_g_volatile_ctrl() local
4828 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_g_volatile_ctrl()
4829 struct sd *sd = (struct sd *)gspca_dev; sd_g_volatile_ctrl()
4831 gspca_dev->usb_err = 0; sd_g_volatile_ctrl()
4835 gspca_dev->exposure->val = i2c_r(sd, 0x10); sd_g_volatile_ctrl()
4843 struct gspca_dev *gspca_dev = sd_s_ctrl() local
4844 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
4845 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
4847 gspca_dev->usb_err = 0; sd_s_ctrl()
4849 if (!gspca_dev->streaming) sd_s_ctrl()
4854 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
4857 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
4860 setfreq(gspca_dev, ctrl->val); sd_s_ctrl()
4864 setautobright(gspca_dev, ctrl->val); sd_s_ctrl()
4866 setbrightness(gspca_dev, sd->brightness->val); sd_s_ctrl()
4869 setcolors(gspca_dev, ctrl->val); sd_s_ctrl()
4872 sethvflip(gspca_dev, ctrl->val, sd->vflip->val); sd_s_ctrl()
4876 setautogain(gspca_dev, ctrl->val); sd_s_ctrl()
4877 if (!ctrl->val && gspca_dev->exposure->is_new) sd_s_ctrl()
4878 setexposure(gspca_dev, gspca_dev->exposure->val); sd_s_ctrl()
4883 return gspca_dev->usb_err; sd_s_ctrl()
4891 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
4893 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
4894 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
4896 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
4919 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
4931 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
4953 if (gspca_dev->autogain) sd_init_controls()
4954 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, true); sd_init_controls()
H A Dtopro.c124 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
986 static void reg_w(struct gspca_dev *gspca_dev, u8 index, u8 value) reg_w() argument
988 struct usb_device *dev = gspca_dev->dev; reg_w()
991 if (gspca_dev->usb_err < 0) reg_w()
999 gspca_dev->usb_err = ret; reg_w()
1003 /* the returned value is in gspca_dev->usb_buf */ reg_r()
1004 static void reg_r(struct gspca_dev *gspca_dev, u8 index) reg_r() argument
1006 struct usb_device *dev = gspca_dev->dev; reg_r()
1009 if (gspca_dev->usb_err < 0) reg_r()
1014 0, index, gspca_dev->usb_buf, 1, 500); reg_r()
1017 gspca_dev->usb_err = ret; reg_r()
1021 static void reg_w_buf(struct gspca_dev *gspca_dev, reg_w_buf() argument
1025 reg_w(gspca_dev, p->reg, p->val); reg_w_buf()
1030 static int i2c_w(struct gspca_dev *gspca_dev, u8 index, u8 value) i2c_w() argument
1032 struct sd *sd = (struct sd *) gspca_dev; i2c_w()
1034 reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00); i2c_w()
1035 reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index); i2c_w()
1036 reg_w(gspca_dev, TP6800_R13_SIF_TX_DATA, value); i2c_w()
1037 reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x01); i2c_w()
1041 reg_r(gspca_dev, TP6800_R11_SIF_CONTROL); i2c_w()
1042 if (gspca_dev->usb_buf[0] == 0) i2c_w()
1044 reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00); i2c_w()
1048 static void i2c_w_buf(struct gspca_dev *gspca_dev, i2c_w_buf() argument
1052 i2c_w(gspca_dev, p->reg, p->val); i2c_w_buf()
1057 static int i2c_r(struct gspca_dev *gspca_dev, u8 index, int len) i2c_r() argument
1059 struct sd *sd = (struct sd *) gspca_dev; i2c_r()
1062 reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index); i2c_r()
1063 reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x02); i2c_r()
1065 reg_r(gspca_dev, TP6800_R14_SIF_RX_DATA); i2c_r()
1066 v = gspca_dev->usb_buf[0]; i2c_r()
1070 reg_r(gspca_dev, TP6800_R1B_SIF_RX_DATA2); i2c_r()
1071 v |= (gspca_dev->usb_buf[0] << 8); i2c_r()
1073 reg_r(gspca_dev, TP6800_R11_SIF_CONTROL); i2c_r()
1074 if (gspca_dev->usb_buf[0] == 0) i2c_r()
1076 reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00); i2c_r()
1080 static void bulk_w(struct gspca_dev *gspca_dev, bulk_w() argument
1085 struct usb_device *dev = gspca_dev->dev; bulk_w()
1088 if (gspca_dev->usb_err < 0) bulk_w()
1093 gspca_dev->usb_buf[0] = tag; bulk_w()
1094 memcpy(&gspca_dev->usb_buf[1], data, count); bulk_w()
1097 gspca_dev->usb_buf, count + 1, bulk_w()
1102 gspca_dev->usb_err = ret; bulk_w()
1112 static int probe_6810(struct gspca_dev *gspca_dev) probe_6810() argument
1117 reg_r(gspca_dev, TP6800_R18_GPIO_DATA); probe_6810()
1118 gpio = gspca_dev->usb_buf[0]; probe_6810()
1119 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); probe_6810()
1120 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1121 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); probe_6810()
1122 reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04); /* i2c 16 bits */ probe_6810()
1123 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21); /* ov??? */ probe_6810()
1124 reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x00); probe_6810()
1125 if (i2c_w(gspca_dev, 0x00, 0x00) >= 0) probe_6810()
1128 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1129 reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */ probe_6810()
1130 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x7f); /* (unknown i2c) */ probe_6810()
1131 if (i2c_w(gspca_dev, 0x00, 0x00) >= 0) probe_6810()
1134 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1135 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); probe_6810()
1136 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1137 reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */ probe_6810()
1138 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11); /* tas??? / hv??? */ probe_6810()
1139 ret = i2c_r(gspca_dev, 0x00, 1); probe_6810()
1143 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1144 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); probe_6810()
1145 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1146 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x6e); /* po??? */ probe_6810()
1147 ret = i2c_r(gspca_dev, 0x00, 1); probe_6810()
1151 ret = i2c_r(gspca_dev, 0x01, 1); probe_6810()
1155 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1156 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); probe_6810()
1157 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1158 reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04); /* i2c 16 bits */ probe_6810()
1159 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5d); /* mi/mt??? */ probe_6810()
1160 ret = i2c_r(gspca_dev, 0x00, 2); probe_6810()
1164 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1165 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); probe_6810()
1166 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1167 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5c); /* mi/mt??? */ probe_6810()
1168 ret = i2c_r(gspca_dev, 0x36, 2); probe_6810()
1172 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); probe_6810()
1173 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1174 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); probe_6810()
1175 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x61); /* (unknown i2c) */ probe_6810()
1176 reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x10); probe_6810()
1177 if (i2c_w(gspca_dev, 0xff, 0x00) >= 0) probe_6810()
1180 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1181 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); probe_6810()
1182 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); probe_6810()
1183 reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */ probe_6810()
1184 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); /* cx0342 */ probe_6810()
1185 ret = i2c_r(gspca_dev, 0x00, 1); probe_6810()
1191 static void cx0342_6810_init(struct gspca_dev *gspca_dev) cx0342_6810_init() argument
1243 reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1)); cx0342_6810_init()
1244 reg_w_buf(gspca_dev, tp6810_cx_init_common, cx0342_6810_init()
1246 reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2)); cx0342_6810_init()
1248 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); /* cx0342 I2C addr */ cx0342_6810_init()
1249 i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); cx0342_6810_init()
1250 i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq)); cx0342_6810_init()
1253 static void soi763a_6810_init(struct gspca_dev *gspca_dev) soi763a_6810_init() argument
1398 reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1)); soi763a_6810_init()
1399 reg_w_buf(gspca_dev, tp6810_ov_init_common, soi763a_6810_init()
1401 reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2)); soi763a_6810_init()
1403 i2c_w(gspca_dev, 0x12, 0x80); /* sensor reset */ soi763a_6810_init()
1405 i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); soi763a_6810_init()
1409 static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 gain, setexposure() argument
1412 struct sd *sd = (struct sd *) gspca_dev; setexposure()
1416 i2c_w(gspca_dev, CX0342_EXPO_LINE_L, expo); setexposure()
1417 i2c_w(gspca_dev, CX0342_EXPO_LINE_H, expo >> 8); setexposure()
1419 i2c_w(gspca_dev, CX0342_RAW_GBGAIN_H, setexposure()
1421 i2c_w(gspca_dev, CX0342_RAW_GBGAIN_L, gain); setexposure()
1423 i2c_w(gspca_dev, CX0342_RAW_GRGAIN_H, setexposure()
1425 i2c_w(gspca_dev, CX0342_RAW_GRGAIN_L, gain); setexposure()
1428 i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, setexposure()
1430 i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, blue); setexposure()
1432 i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, setexposure()
1434 i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, red); setexposure()
1436 i2c_w(gspca_dev, CX0342_SYS_CTRL_0, setexposure()
1442 i2c_w(gspca_dev, 0x10, /* AEC_H (exposure time) */ setexposure()
1444 /* i2c_w(gspca_dev, 0x76, 0x02); * AEC_L ([1:0] */ setexposure()
1445 i2c_w(gspca_dev, 0x00, /* gain */ setexposure()
1450 static void set_dqt(struct gspca_dev *gspca_dev, u8 q) set_dqt() argument
1452 struct sd *sd = (struct sd *) gspca_dev; set_dqt()
1467 static void setquality(struct gspca_dev *gspca_dev, s32 q) setquality() argument
1469 struct sd *sd = (struct sd *) gspca_dev; setquality()
1474 reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x00); setquality()
1475 reg_w(gspca_dev, TP6800_R79_QUALITY, 0x04); setquality()
1476 reg_w(gspca_dev, TP6800_R79_QUALITY, q); setquality()
1481 reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x19); setquality()
1501 static void setgamma(struct gspca_dev *gspca_dev, s32 gamma) setgamma() argument
1503 struct sd *sd = (struct sd *) gspca_dev; setgamma()
3824 reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); setgamma()
3826 reg_w(gspca_dev, 0x02, 0x28); setgamma()
3828 bulk_w(gspca_dev, 0x00, gamma_tb[gamma][0], 1024); setgamma()
3829 bulk_w(gspca_dev, 0x01, gamma_tb[gamma][1], 1024); setgamma()
3830 bulk_w(gspca_dev, 0x02, gamma_tb[gamma][2], 1024); setgamma()
3834 reg_w(gspca_dev, 0x02, 0x2b); setgamma()
3835 reg_w(gspca_dev, 0x02, 0x28); setgamma()
3837 reg_w(gspca_dev, TP6800_R55_GAMMA_R, setgamma()
3839 reg_w(gspca_dev, 0x02, 0x2b); setgamma()
3840 reg_w(gspca_dev, 0x02, 0x28); setgamma()
3842 reg_w(gspca_dev, TP6800_R56_GAMMA_G, setgamma()
3844 reg_w(gspca_dev, 0x02, 0x2b); setgamma()
3845 reg_w(gspca_dev, 0x02, 0x28); setgamma()
3847 reg_w(gspca_dev, TP6800_R57_GAMMA_B, setgamma()
3849 reg_w(gspca_dev, 0x02, 0x28); setgamma()
3851 reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03); setgamma()
3855 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) setsharpness() argument
3857 struct sd *sd = (struct sd *) gspca_dev; setsharpness()
3861 if (gspca_dev->pixfmt.width == 640) setsharpness()
3862 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ setsharpness()
3865 reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, val); setsharpness()
3868 reg_w(gspca_dev, 0x59, val); setsharpness()
3872 static void setautogain(struct gspca_dev *gspca_dev, s32 val) setautogain() argument
3874 struct sd *sd = (struct sd *) gspca_dev; setautogain()
3880 static void set_resolution(struct gspca_dev *gspca_dev) set_resolution() argument
3882 struct sd *sd = (struct sd *) gspca_dev; set_resolution()
3884 reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); set_resolution()
3885 if (gspca_dev->pixfmt.width == 320) { set_resolution()
3886 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06); set_resolution()
3888 i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); set_resolution()
3890 reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03); set_resolution()
3891 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */ set_resolution()
3892 reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x0d); set_resolution()
3893 i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0x37); set_resolution()
3894 i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x01); set_resolution()
3896 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x05); set_resolution()
3898 i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); set_resolution()
3900 reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03); set_resolution()
3901 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ set_resolution()
3902 reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x09); set_resolution()
3903 i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0xcf); set_resolution()
3904 i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00); set_resolution()
3906 i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01); set_resolution()
3907 bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342], set_resolution()
3909 setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); set_resolution()
3911 setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); set_resolution()
3915 static int get_fr_idx(struct gspca_dev *gspca_dev) get_fr_idx() argument
3917 struct sd *sd = (struct sd *) gspca_dev; get_fr_idx()
3929 && gspca_dev->pixfmt.width == 640) get_fr_idx()
3940 && gspca_dev->pixfmt.width == 640) get_fr_idx()
3947 static void setframerate(struct gspca_dev *gspca_dev, s32 val) setframerate() argument
3949 struct sd *sd = (struct sd *) gspca_dev; setframerate()
3952 fr_idx = get_fr_idx(gspca_dev); setframerate()
3955 reg_r(gspca_dev, 0x7b); setframerate()
3956 reg_w(gspca_dev, 0x7b, setframerate()
3962 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, fr_idx); setframerate()
3965 i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); setframerate()
3968 static void setrgain(struct gspca_dev *gspca_dev, s32 rgain) setrgain() argument
3970 i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, rgain >> 8); setrgain()
3971 i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, rgain); setrgain()
3972 i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80); setrgain()
3975 static int sd_setgain(struct gspca_dev *gspca_dev) sd_setgain() argument
3977 struct sd *sd = (struct sd *) gspca_dev; sd_setgain()
3978 s32 val = gspca_dev->gain->val; sd_setgain()
3981 s32 old = gspca_dev->gain->cur.val ? sd_setgain()
3982 gspca_dev->gain->cur.val : 1; sd_setgain()
3991 if (gspca_dev->streaming) { sd_setgain()
3993 setexposure(gspca_dev, gspca_dev->exposure->val, sd_setgain()
3994 gspca_dev->gain->val, sd_setgain()
3997 setexposure(gspca_dev, gspca_dev->exposure->val, sd_setgain()
3998 gspca_dev->gain->val, 0, 0); sd_setgain()
4000 return gspca_dev->usb_err; sd_setgain()
4003 static void setbgain(struct gspca_dev *gspca_dev, s32 bgain) setbgain() argument
4005 i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, bgain >> 8); setbgain()
4006 i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, bgain); setbgain()
4007 i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80); setbgain()
4011 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
4014 struct sd *sd = (struct sd *) gspca_dev; sd_config()
4018 gspca_dev->cam.cam_mode = vga_mode; sd_config()
4019 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); sd_config()
4020 gspca_dev->cam.mode_framerates = sd->bridge == BRIDGE_TP6800 ? sd_config()
4028 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
4030 struct sd *sd = (struct sd *) gspca_dev; sd_init()
4048 reg_w_buf(gspca_dev, tp6800_preinit, sd_init()
4051 reg_w_buf(gspca_dev, tp6810_preinit, sd_init()
4054 reg_r(gspca_dev, TP6800_R18_GPIO_DATA); sd_init()
4055 PDEBUG(D_PROBE, "gpio: %02x", gspca_dev->usb_buf[0]); sd_init()
4069 switch (gspca_dev->usb_buf[0] & 0x07) { sd_init()
4080 sensor = probe_6810(gspca_dev); sd_init()
4092 soi763a_6810_init(gspca_dev); sd_init()
4097 cx0342_6810_init(gspca_dev); sd_init()
4101 set_dqt(gspca_dev, 0); sd_init()
4106 static int sd_isoc_init(struct gspca_dev *gspca_dev) sd_isoc_init() argument
4108 struct sd *sd = (struct sd *) gspca_dev; sd_isoc_init()
4138 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); sd_isoc_init()
4139 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87); sd_isoc_init()
4140 i2c_w_buf(gspca_dev, cx_sensor_init, sd_isoc_init()
4142 reg_w_buf(gspca_dev, cx_bridge_init, sd_isoc_init()
4144 bulk_w(gspca_dev, 0x03, color_null, sizeof color_null); sd_isoc_init()
4145 reg_w(gspca_dev, 0x59, 0x40); sd_isoc_init()
4147 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21); sd_isoc_init()
4148 i2c_w_buf(gspca_dev, ov_sensor_init, sd_isoc_init()
4150 reg_r(gspca_dev, 0x7b); sd_isoc_init()
4151 reg_w_buf(gspca_dev, ov_bridge_init, sd_isoc_init()
4154 reg_w(gspca_dev, TP6800_R78_FORMAT, sd_isoc_init()
4155 gspca_dev->curr_mode ? 0x00 : 0x01); sd_isoc_init()
4156 return gspca_dev->usb_err; sd_isoc_init()
4159 static void set_led(struct gspca_dev *gspca_dev, int on) set_led() argument
4163 reg_r(gspca_dev, TP6800_R18_GPIO_DATA); set_led()
4164 data = gspca_dev->usb_buf[0]; set_led()
4169 reg_w(gspca_dev, TP6800_R18_GPIO_DATA, data); set_led()
4172 static void cx0342_6800_start(struct gspca_dev *gspca_dev) cx0342_6800_start() argument
4174 struct sd *sd = (struct sd *) gspca_dev; cx0342_6800_start()
4240 reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init)); cx0342_6800_start()
4241 i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); cx0342_6800_start()
4242 i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq)); cx0342_6800_start()
4243 reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10); cx0342_6800_start()
4244 reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00); cx0342_6800_start()
4245 i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00); cx0342_6800_start()
4246 i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01); cx0342_6800_start()
4248 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), cx0342_6800_start()
4249 v4l2_ctrl_g_ctrl(gspca_dev->gain), cx0342_6800_start()
4253 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), cx0342_6800_start()
4254 v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); cx0342_6800_start()
4255 set_led(gspca_dev, 1); cx0342_6800_start()
4256 set_resolution(gspca_dev); cx0342_6800_start()
4259 static void cx0342_6810_start(struct gspca_dev *gspca_dev) cx0342_6810_start() argument
4261 struct sd *sd = (struct sd *) gspca_dev; cx0342_6810_start()
4327 reg_w(gspca_dev, 0x22, gspca_dev->alt); cx0342_6810_start()
4328 i2c_w_buf(gspca_dev, sensor_init_2, ARRAY_SIZE(sensor_init_2)); cx0342_6810_start()
4329 reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2)); cx0342_6810_start()
4330 reg_w_buf(gspca_dev, tp6810_cx_init_common, cx0342_6810_start()
4332 reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3)); cx0342_6810_start()
4333 if (gspca_dev->curr_mode) { cx0342_6810_start()
4334 reg_w(gspca_dev, 0x4a, 0x7f); cx0342_6810_start()
4335 reg_w(gspca_dev, 0x07, 0x05); cx0342_6810_start()
4336 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ cx0342_6810_start()
4338 reg_w(gspca_dev, 0x4a, 0xff); cx0342_6810_start()
4339 reg_w(gspca_dev, 0x07, 0x85); cx0342_6810_start()
4340 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */ cx0342_6810_start()
4342 setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); cx0342_6810_start()
4343 reg_w_buf(gspca_dev, tp6810_bridge_start, cx0342_6810_start()
4345 setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); cx0342_6810_start()
4346 bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342], cx0342_6810_start()
4348 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87); cx0342_6810_start()
4349 i2c_w_buf(gspca_dev, sensor_init_3, ARRAY_SIZE(sensor_init_3)); cx0342_6810_start()
4350 reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5)); cx0342_6810_start()
4351 i2c_w_buf(gspca_dev, sensor_init_4, ARRAY_SIZE(sensor_init_4)); cx0342_6810_start()
4352 reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5)); cx0342_6810_start()
4353 i2c_w_buf(gspca_dev, sensor_init_5, ARRAY_SIZE(sensor_init_5)); cx0342_6810_start()
4355 set_led(gspca_dev, 1); cx0342_6810_start()
4356 /* setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); */ cx0342_6810_start()
4359 static void soi763a_6800_start(struct gspca_dev *gspca_dev) soi763a_6800_start() argument
4361 struct sd *sd = (struct sd *) gspca_dev; soi763a_6800_start()
4451 reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init)); soi763a_6800_start()
4453 i2c_w(gspca_dev, 0x12, 0x80); /* sensor reset */ soi763a_6800_start()
4456 i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); soi763a_6800_start()
4458 reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10); soi763a_6800_start()
4459 reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00); soi763a_6800_start()
4461 setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); soi763a_6800_start()
4463 bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A], soi763a_6800_start()
4466 set_led(gspca_dev, 1); soi763a_6800_start()
4468 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), soi763a_6800_start()
4469 v4l2_ctrl_g_ctrl(gspca_dev->gain), soi763a_6800_start()
4473 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), soi763a_6800_start()
4474 v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); soi763a_6800_start()
4476 setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); soi763a_6800_start()
4477 setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); soi763a_6800_start()
4480 static void soi763a_6810_start(struct gspca_dev *gspca_dev) soi763a_6810_start() argument
4482 struct sd *sd = (struct sd *) gspca_dev; soi763a_6810_start()
4503 reg_w(gspca_dev, 0x22, gspca_dev->alt); soi763a_6810_start()
4504 bulk_w(gspca_dev, 0x03, color_null, sizeof color_null); soi763a_6810_start()
4505 reg_w(gspca_dev, 0x59, 0x40); soi763a_6810_start()
4507 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), soi763a_6810_start()
4508 v4l2_ctrl_g_ctrl(gspca_dev->gain), soi763a_6810_start()
4512 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), soi763a_6810_start()
4513 v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); soi763a_6810_start()
4514 reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2)); soi763a_6810_start()
4515 reg_w_buf(gspca_dev, tp6810_ov_init_common, soi763a_6810_start()
4517 reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3)); soi763a_6810_start()
4518 if (gspca_dev->curr_mode) { soi763a_6810_start()
4519 reg_w(gspca_dev, 0x4a, 0x7f); soi763a_6810_start()
4520 reg_w(gspca_dev, 0x07, 0x05); soi763a_6810_start()
4521 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ soi763a_6810_start()
4523 reg_w(gspca_dev, 0x4a, 0xff); soi763a_6810_start()
4524 reg_w(gspca_dev, 0x07, 0x85); soi763a_6810_start()
4525 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */ soi763a_6810_start()
4527 setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); soi763a_6810_start()
4528 reg_w_buf(gspca_dev, tp6810_bridge_start, soi763a_6810_start()
4531 if (gspca_dev->curr_mode) { soi763a_6810_start()
4532 reg_w(gspca_dev, 0x4f, 0x00); soi763a_6810_start()
4533 reg_w(gspca_dev, 0x4e, 0x7c); soi763a_6810_start()
4536 reg_w(gspca_dev, 0x00, 0x00); soi763a_6810_start()
4538 setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); soi763a_6810_start()
4539 bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A], soi763a_6810_start()
4541 set_led(gspca_dev, 1); soi763a_6810_start()
4542 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0xf0); soi763a_6810_start()
4544 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), soi763a_6810_start()
4545 v4l2_ctrl_g_ctrl(gspca_dev->gain), soi763a_6810_start()
4549 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), soi763a_6810_start()
4550 v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); soi763a_6810_start()
4551 reg_w_buf(gspca_dev, bridge_init_6, ARRAY_SIZE(bridge_init_6)); soi763a_6810_start()
4555 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
4557 struct sd *sd = (struct sd *) gspca_dev; sd_start()
4559 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, sd_start()
4560 gspca_dev->pixfmt.width); sd_start()
4561 set_dqt(gspca_dev, sd->quality); sd_start()
4564 cx0342_6800_start(gspca_dev); sd_start()
4566 soi763a_6800_start(gspca_dev); sd_start()
4569 cx0342_6810_start(gspca_dev); sd_start()
4571 soi763a_6810_start(gspca_dev); sd_start()
4572 reg_w_buf(gspca_dev, tp6810_late_start, sd_start()
4574 reg_w(gspca_dev, 0x80, 0x03); sd_start()
4575 reg_w(gspca_dev, 0x82, gspca_dev->curr_mode ? 0x0a : 0x0e); sd_start()
4578 setexposure(gspca_dev, sd_start()
4579 v4l2_ctrl_g_ctrl(gspca_dev->exposure), sd_start()
4580 v4l2_ctrl_g_ctrl(gspca_dev->gain), sd_start()
4584 setexposure(gspca_dev, sd_start()
4585 v4l2_ctrl_g_ctrl(gspca_dev->exposure), sd_start()
4586 v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); sd_start()
4588 setquality(gspca_dev, sd_start()
4591 setautogain(gspca_dev, sd_start()
4592 v4l2_ctrl_g_ctrl(gspca_dev->autogain)); sd_start()
4595 setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure)); sd_start()
4597 return gspca_dev->usb_err; sd_start()
4600 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
4602 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
4605 reg_w(gspca_dev, TP6800_R2F_TIMING_CFG, 0x03); sd_stopN()
4606 set_led(gspca_dev, 0); sd_stopN()
4607 reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); sd_stopN()
4610 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
4614 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
4630 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
4637 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
4643 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
4647 set_dqt(gspca_dev, data[6] & 0x0f); sd_pkt_scan()
4648 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
4650 gspca_frame_add(gspca_dev, INTER_PACKET, sd_pkt_scan()
4653 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
4656 gspca_frame_add(gspca_dev, INTER_PACKET, sd_pkt_scan()
4664 gspca_frame_add(gspca_dev, LAST_PACKET, data, 0); sd_pkt_scan()
4671 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
4675 set_dqt(gspca_dev, data[7]); sd_pkt_scan()
4676 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
4678 gspca_frame_add(gspca_dev, INTER_PACKET, sd_pkt_scan()
4682 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
4686 gspca_frame_add(gspca_dev, INTER_PACKET, sd_pkt_scan()
4689 gspca_dev->last_packet_type = DISCARD_PACKET; sd_pkt_scan()
4694 static void sd_dq_callback(struct gspca_dev *gspca_dev) sd_dq_callback() argument
4696 struct sd *sd = (struct sd *) gspca_dev; sd_dq_callback()
4707 reg_w(gspca_dev, 0x7d, 0x00); sd_dq_callback()
4710 reg_w(gspca_dev, 0x27, 0xb0); sd_dq_callback()
4713 reg_w(gspca_dev, 0x0c, 0x01); sd_dq_callback()
4716 ret = usb_bulk_msg(gspca_dev->dev, sd_dq_callback()
4717 usb_rcvbulkpipe(gspca_dev->dev, 0x02), sd_dq_callback()
4718 gspca_dev->usb_buf, sd_dq_callback()
4729 reg_w(gspca_dev, 0x27, 0xd0); sd_dq_callback()
4732 ret = usb_bulk_msg(gspca_dev->dev, sd_dq_callback()
4733 usb_rcvbulkpipe(gspca_dev->dev, 0x02), sd_dq_callback()
4734 gspca_dev->usb_buf, sd_dq_callback()
4742 luma = ((gspca_dev->usb_buf[8] << 8) + gspca_dev->usb_buf[7] + sd_dq_callback()
4743 (gspca_dev->usb_buf[11] << 8) + gspca_dev->usb_buf[10] + sd_dq_callback()
4744 (gspca_dev->usb_buf[14] << 8) + gspca_dev->usb_buf[13] + sd_dq_callback()
4745 (gspca_dev->usb_buf[17] << 8) + gspca_dev->usb_buf[16] + sd_dq_callback()
4746 (gspca_dev->usb_buf[20] << 8) + gspca_dev->usb_buf[19] + sd_dq_callback()
4747 (gspca_dev->usb_buf[23] << 8) + gspca_dev->usb_buf[22] + sd_dq_callback()
4748 (gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] + sd_dq_callback()
4749 (gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28]) sd_dq_callback()
4751 if (gspca_dev->pixfmt.width == 640) sd_dq_callback()
4753 reg_w(gspca_dev, 0x7d, 0x00); sd_dq_callback()
4755 expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure); sd_dq_callback()
4756 ret = gspca_expo_autogain(gspca_dev, luma, sd_dq_callback()
4763 int new_expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure); sd_dq_callback()
4767 setframerate(gspca_dev, new_expo); sd_dq_callback()
4774 static void sd_get_streamparm(struct gspca_dev *gspca_dev, sd_get_streamparm() argument
4777 struct sd *sd = (struct sd *) gspca_dev; sd_get_streamparm()
4784 i = get_fr_idx(gspca_dev); sd_get_streamparm()
4797 static void sd_set_streamparm(struct gspca_dev *gspca_dev, sd_set_streamparm() argument
4800 struct sd *sd = (struct sd *) gspca_dev; sd_set_streamparm()
4810 if (gspca_dev->streaming) sd_set_streamparm()
4811 setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure)); sd_set_streamparm()
4814 i = get_fr_idx(gspca_dev); sd_set_streamparm()
4823 static int sd_set_jcomp(struct gspca_dev *gspca_dev, sd_set_jcomp() argument
4826 struct sd *sd = (struct sd *) gspca_dev; sd_set_jcomp()
4834 static int sd_get_jcomp(struct gspca_dev *gspca_dev, sd_get_jcomp() argument
4837 struct sd *sd = (struct sd *) gspca_dev; sd_get_jcomp()
4850 struct gspca_dev *gspca_dev = sd_s_ctrl() local
4851 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
4852 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
4854 gspca_dev->usb_err = 0; sd_s_ctrl()
4856 if (!gspca_dev->streaming) sd_s_ctrl()
4861 setsharpness(gspca_dev, ctrl->val); sd_s_ctrl()
4864 setgamma(gspca_dev, ctrl->val); sd_s_ctrl()
4867 setbgain(gspca_dev, ctrl->val); sd_s_ctrl()
4870 setrgain(gspca_dev, ctrl->val); sd_s_ctrl()
4873 sd_setgain(gspca_dev); sd_s_ctrl()
4878 sd_setgain(gspca_dev); sd_s_ctrl()
4884 return gspca_dev->usb_err; sd_s_ctrl()
4891 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
4893 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
4894 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
4896 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
4898 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
4907 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
4910 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
4919 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
4930 if (gspca_dev->autogain) sd_init_controls()
4931 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); sd_init_controls()
4933 v4l2_ctrl_cluster(2, &gspca_dev->exposure); sd_init_controls()
H A Dvc032x.c35 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
2902 /* read 'len' bytes in gspca_dev->usb_buf */ reg_r_i()
2903 static void reg_r_i(struct gspca_dev *gspca_dev, reg_r_i() argument
2910 if (gspca_dev->usb_err < 0) reg_r_i()
2912 ret = usb_control_msg(gspca_dev->dev, reg_r_i()
2913 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r_i()
2917 index, gspca_dev->usb_buf, len, reg_r_i()
2921 gspca_dev->usb_err = ret; reg_r_i()
2924 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
2929 reg_r_i(gspca_dev, req, index, len); reg_r()
2930 if (gspca_dev->usb_err < 0) reg_r()
2934 gspca_dev->usb_buf[0]); reg_r()
2937 req, index, 3, gspca_dev->usb_buf); reg_r()
2940 static void reg_w_i(struct gspca_dev *gspca_dev, reg_w_i() argument
2947 if (gspca_dev->usb_err < 0) reg_w_i()
2949 ret = usb_control_msg(gspca_dev->dev, reg_w_i()
2950 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w_i()
2957 gspca_dev->usb_err = ret; reg_w_i()
2960 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
2965 if (gspca_dev->usb_err < 0) reg_w()
2968 reg_w_i(gspca_dev, req, value, index); reg_w()
2971 static u16 read_sensor_register(struct gspca_dev *gspca_dev, read_sensor_register() argument
2977 reg_r(gspca_dev, 0xa1, 0xb33f, 1); read_sensor_register()
2978 if (!(gspca_dev->usb_buf[0] & 0x02)) { read_sensor_register()
2979 pr_err("I2c Bus Busy Wait %02x\n", gspca_dev->usb_buf[0]); read_sensor_register()
2982 reg_w(gspca_dev, 0xa0, address, 0xb33a); read_sensor_register()
2983 reg_w(gspca_dev, 0xa0, 0x02, 0xb339); read_sensor_register()
2986 reg_r(gspca_dev, 0xa1, 0xb33b, 1); read_sensor_register()
2987 if (gspca_dev->usb_buf[0] == 0x00) read_sensor_register()
2992 reg_r(gspca_dev, 0xa1, 0xb33e, 1); read_sensor_register()
2993 ldata = gspca_dev->usb_buf[0]; read_sensor_register()
2994 reg_r(gspca_dev, 0xa1, 0xb33d, 1); read_sensor_register()
2995 mdata = gspca_dev->usb_buf[0]; read_sensor_register()
2996 reg_r(gspca_dev, 0xa1, 0xb33c, 1); read_sensor_register()
2997 hdata = gspca_dev->usb_buf[0]; read_sensor_register()
3001 reg_r(gspca_dev, 0xa1, 0xb334, 1); read_sensor_register()
3002 if (gspca_dev->usb_buf[0] == 0x02) read_sensor_register()
3007 static int vc032x_probe_sensor(struct gspca_dev *gspca_dev) vc032x_probe_sensor() argument
3009 struct sd *sd = (struct sd *) gspca_dev; vc032x_probe_sensor()
3016 reg_w(gspca_dev, 0xa0, 0x01, 0xb301); vc032x_probe_sensor()
3017 reg_w(gspca_dev, 0x89, 0xf0ff, 0xffff); vc032x_probe_sensor()
3021 reg_r(gspca_dev, 0xa1, 0xbfcf, 1); vc032x_probe_sensor()
3023 sd->bridge == BRIDGE_VC0321 ? 1 : 3, gspca_dev->usb_buf[0]); vc032x_probe_sensor()
3032 reg_w(gspca_dev, 0xa0, 0x02, 0xb334); vc032x_probe_sensor()
3033 reg_w(gspca_dev, 0xa0, ptsensor_info->m1, 0xb300); vc032x_probe_sensor()
3034 reg_w(gspca_dev, 0xa0, ptsensor_info->m2, 0xb300); vc032x_probe_sensor()
3035 reg_w(gspca_dev, 0xa0, 0x01, 0xb308); vc032x_probe_sensor()
3036 reg_w(gspca_dev, 0xa0, 0x0c, 0xb309); vc032x_probe_sensor()
3037 reg_w(gspca_dev, 0xa0, ptsensor_info->I2cAdd, 0xb335); vc032x_probe_sensor()
3038 reg_w(gspca_dev, 0xa0, ptsensor_info->op, 0xb301); vc032x_probe_sensor()
3039 value = read_sensor_register(gspca_dev, ptsensor_info->IdAdd); vc032x_probe_sensor()
3041 value = read_sensor_register(gspca_dev, 0x83); vc032x_probe_sensor()
3061 static void i2c_write(struct gspca_dev *gspca_dev, i2c_write() argument
3067 if (gspca_dev->usb_err < 0) i2c_write()
3073 reg_r_i(gspca_dev, 0xa1, 0xb33f, 1); i2c_write()
3074 /*fixme:should check if (!(gspca_dev->usb_buf[0] & 0x02)) error*/ i2c_write()
3075 reg_w_i(gspca_dev, 0xa0, size, 0xb334); i2c_write()
3076 reg_w_i(gspca_dev, 0xa0, reg, 0xb33a); i2c_write()
3077 reg_w_i(gspca_dev, 0xa0, val[0], 0xb336); i2c_write()
3079 reg_w_i(gspca_dev, 0xa0, val[1], 0xb337); i2c_write()
3080 reg_w_i(gspca_dev, 0xa0, 0x01, 0xb339); i2c_write()
3083 reg_r_i(gspca_dev, 0xa1, 0xb33b, 1); i2c_write()
3084 if (gspca_dev->usb_buf[0] == 0) i2c_write()
3092 static void put_tab_to_reg(struct gspca_dev *gspca_dev, put_tab_to_reg() argument
3099 reg_w(gspca_dev, 0xa0, tab[j], ad++); put_tab_to_reg()
3102 static void usb_exchange(struct gspca_dev *gspca_dev, usb_exchange() argument
3112 reg_w(gspca_dev, 0xa0, data[i][2], usb_exchange()
3116 i2c_write(gspca_dev, data[i][1], &data[i][2], 1); usb_exchange()
3119 i2c_write(gspca_dev, data[i][0], &data[i][1], 2); usb_exchange()
3132 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
3135 struct sd *sd = (struct sd *) gspca_dev; sd_config()
3148 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
3150 struct sd *sd = (struct sd *) gspca_dev; sd_init()
3168 sensor = vc032x_probe_sensor(gspca_dev); sd_init()
3210 cam = &gspca_dev->cam; sd_init()
3244 reg_r(gspca_dev, 0x8a, 0, 3); sd_init()
3245 reg_w(gspca_dev, 0x87, 0x00, 0x0f0f); sd_init()
3246 reg_r(gspca_dev, 0x8b, 0, 3); sd_init()
3247 reg_w(gspca_dev, 0x88, 0x00, 0x0202); sd_init()
3249 reg_r(gspca_dev, 0xa1, 0xb300, 1); sd_init()
3250 if (gspca_dev->usb_buf[0] != 0) { sd_init()
3251 reg_w(gspca_dev, 0xa0, 0x26, 0xb300); sd_init()
3252 reg_w(gspca_dev, 0xa0, 0x04, 0xb300); sd_init()
3254 reg_w(gspca_dev, 0xa0, 0x00, 0xb300); sd_init()
3257 return gspca_dev->usb_err; sd_init()
3260 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
3269 i2c_write(gspca_dev, 0x98, &data, 1); setbrightness()
3272 static void setcontrast(struct gspca_dev *gspca_dev, u8 val) setcontrast() argument
3274 i2c_write(gspca_dev, 0x99, &val, 1); setcontrast()
3277 static void setcolors(struct gspca_dev *gspca_dev, u8 val) setcolors() argument
3282 i2c_write(gspca_dev, 0x94, &data, 1); setcolors()
3283 i2c_write(gspca_dev, 0x95, &val, 1); setcolors()
3286 static void sethvflip(struct gspca_dev *gspca_dev, bool hflip, bool vflip) sethvflip() argument
3288 struct sd *sd = (struct sd *) gspca_dev; sethvflip()
3300 i2c_write(gspca_dev, 0xf0, data, 2); sethvflip()
3304 i2c_write(gspca_dev, 0x20, data, 2); sethvflip()
3311 i2c_write(gspca_dev, OV7660_REG_MVFP, data, 1); sethvflip()
3315 i2c_write(gspca_dev, 0x03, data, 1); sethvflip()
3319 i2c_write(gspca_dev, 0x1e, data, 1); sethvflip()
3324 static void setlightfreq(struct gspca_dev *gspca_dev, s32 val) setlightfreq() argument
3326 struct sd *sd = (struct sd *) gspca_dev; setlightfreq()
3332 usb_exchange(gspca_dev, ov7660_freq_tb[val]); setlightfreq()
3335 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) setsharpness() argument
3337 struct sd *sd = (struct sd *) gspca_dev; setsharpness()
3343 i2c_write(gspca_dev, 0x03, &data, 1); setsharpness()
3348 i2c_write(gspca_dev, 0x61, &data, 1); setsharpness()
3355 i2c_write(gspca_dev, 0x59, &data, 1); setsharpness()
3359 static void setgain(struct gspca_dev *gspca_dev, u8 val) setgain() argument
3361 i2c_write(gspca_dev, 0x15, &val, 1); setgain()
3364 static void setexposure(struct gspca_dev *gspca_dev, s32 val) setexposure() argument
3369 i2c_write(gspca_dev, 0x1a, &data, 1); setexposure()
3371 i2c_write(gspca_dev, 0x1b, &data, 1); setexposure()
3374 static void setautogain(struct gspca_dev *gspca_dev, s32 val) setautogain() argument
3378 i2c_write(gspca_dev, 0xd1, &data[val], 1); setautogain()
3381 static void setgamma(struct gspca_dev *gspca_dev) setgamma() argument
3384 usb_exchange(gspca_dev, poxxxx_gamma); setgamma()
3387 static void setbacklight(struct gspca_dev *gspca_dev, s32 val) setbacklight() argument
3393 i2c_write(gspca_dev, 0xaa, &data, 1); setbacklight()
3396 i2c_write(gspca_dev, 0xc4, &data, 1); setbacklight()
3398 i2c_write(gspca_dev, 0xc5, &data, 1); setbacklight()
3401 i2c_write(gspca_dev, 0xc6, &data, 1); setbacklight()
3403 i2c_write(gspca_dev, 0xc7, &data, 1); setbacklight()
3406 i2c_write(gspca_dev, 0xc8, &data, 1); setbacklight()
3408 i2c_write(gspca_dev, 0xc9, &data, 1); setbacklight()
3411 i2c_write(gspca_dev, 0xca, &data, 1); setbacklight()
3413 i2c_write(gspca_dev, 0xcb, &data, 1); setbacklight()
3416 static void setwb(struct gspca_dev *gspca_dev) setwb() argument
3421 i2c_write(gspca_dev, 0x16, &data[0], 1); setwb()
3422 i2c_write(gspca_dev, 0x18, &data[1], 1); setwb()
3425 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
3427 struct sd *sd = (struct sd *) gspca_dev; sd_start()
3440 reg_w(gspca_dev, 0x89, 0xf0ff, 0xffff); sd_start()
3441 reg_w(gspca_dev, 0xa9, 0x8348, 0x000e); sd_start()
3442 reg_w(gspca_dev, 0xa9, 0x0000, 0x001a); sd_start()
3445 /* Assume start use the good resolution from gspca_dev->mode */ sd_start()
3447 reg_w(gspca_dev, 0xa0, 0xff, 0xbfec); sd_start()
3448 reg_w(gspca_dev, 0xa0, 0xff, 0xbfed); sd_start()
3449 reg_w(gspca_dev, 0xa0, 0xff, 0xbfee); sd_start()
3450 reg_w(gspca_dev, 0xa0, 0xff, 0xbfef); sd_start()
3453 if (gspca_dev->cam.cam_mode[gspca_dev->curr_mode].pixelformat sd_start()
3460 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; sd_start()
3524 usb_exchange(gspca_dev, init); sd_start()
3534 usb_exchange(gspca_dev, poxxxx_init_common); sd_start()
3535 setgamma(gspca_dev); sd_start()
3536 usb_exchange(gspca_dev, poxxxx_init_start_3); sd_start()
3541 usb_exchange(gspca_dev, init); sd_start()
3542 reg_r(gspca_dev, 0x8c, 0x0000, 3); sd_start()
3543 reg_w(gspca_dev, 0xa0, sd_start()
3544 gspca_dev->usb_buf[2] & 1 ? 0 : 1, sd_start()
3551 usb_exchange(gspca_dev, init); sd_start()
3553 put_tab_to_reg(gspca_dev, GammaT, 17, 0xb84a); sd_start()
3554 put_tab_to_reg(gspca_dev, GammaT, 17, 0xb85b); sd_start()
3555 put_tab_to_reg(gspca_dev, GammaT, 17, 0xb86c); sd_start()
3556 put_tab_to_reg(gspca_dev, MatrixT, 9, 0xb82c); sd_start()
3561 reg_w(gspca_dev, 0x89, 0x0400, 0x1415); sd_start()
3564 reg_w(gspca_dev, 0x89, 0x058c, 0x0000); sd_start()
3571 reg_w(gspca_dev, 0x87, 0xffff, 0xffff); sd_start()
3572 reg_w(gspca_dev, 0x88, 0xff00, 0xf0f1); sd_start()
3573 reg_w(gspca_dev, 0xa0, 0x0000, 0xbfff); sd_start()
3576 usb_exchange(gspca_dev, poxxxx_init_end_2); sd_start()
3577 setwb(gspca_dev); sd_start()
3579 reg_w(gspca_dev, 0x89, 0xffff, 0xfdff); sd_start()
3582 return gspca_dev->usb_err; sd_start()
3585 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
3587 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
3591 reg_w(gspca_dev, 0x89, 0x058c, 0x00ff); sd_stopN()
3597 reg_w(gspca_dev, 0x89, 0xffff, 0xffff); sd_stopN()
3600 reg_w(gspca_dev, 0xa0, 0x01, 0xb301); sd_stopN()
3601 reg_w(gspca_dev, 0xa0, 0x09, 0xb003); sd_stopN()
3605 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
3607 struct sd *sd = (struct sd *) gspca_dev; sd_stop0()
3609 if (!gspca_dev->present) sd_stop0()
3613 reg_w(gspca_dev, 0x89, 0x058c, 0x00ff); sd_stop0()
3615 reg_w(gspca_dev, 0x89, 0xffff, 0xffff); sd_stop0()
3618 reg_w(gspca_dev, 0xa0, 0x26, 0xb300); sd_stop0()
3619 reg_w(gspca_dev, 0xa0, 0x04, 0xb300); sd_stop0()
3620 reg_w(gspca_dev, 0xa0, 0x00, 0xb300); sd_stop0()
3624 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
3628 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
3633 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
3636 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
3645 l = gspca_dev->image_len; sd_pkt_scan()
3646 size = gspca_dev->frsz; sd_pkt_scan()
3650 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
3655 struct gspca_dev *gspca_dev = sd_s_ctrl() local
3656 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
3657 struct sd *sd = (struct sd *)gspca_dev; sd_s_ctrl()
3659 gspca_dev->usb_err = 0; sd_s_ctrl()
3661 if (!gspca_dev->streaming && ctrl->id != V4L2_CID_POWER_LINE_FREQUENCY) sd_s_ctrl()
3666 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
3669 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
3672 setcolors(gspca_dev, ctrl->val); sd_s_ctrl()
3675 sethvflip(gspca_dev, sd->hflip->val, sd->vflip->val); sd_s_ctrl()
3678 setsharpness(gspca_dev, ctrl->val); sd_s_ctrl()
3681 setautogain(gspca_dev, ctrl->val); sd_s_ctrl()
3684 setgain(gspca_dev, ctrl->val); sd_s_ctrl()
3687 setexposure(gspca_dev, ctrl->val); sd_s_ctrl()
3690 setbacklight(gspca_dev, ctrl->val); sd_s_ctrl()
3693 setlightfreq(gspca_dev, ctrl->val); sd_s_ctrl()
3696 return gspca_dev->usb_err; sd_s_ctrl()
3703 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
3705 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
3706 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
3742 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dspca508.c33 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
1244 static int reg_write(struct gspca_dev *gspca_dev, u16 index, u16 value) reg_write() argument
1247 struct usb_device *dev = gspca_dev->dev; reg_write()
1263 static int reg_read(struct gspca_dev *gspca_dev, reg_read() argument
1268 ret = usb_control_msg(gspca_dev->dev, reg_read()
1269 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_read()
1274 gspca_dev->usb_buf, 1, reg_read()
1277 index, gspca_dev->usb_buf[0]); reg_read()
1282 return gspca_dev->usb_buf[0]; reg_read()
1286 static int ssi_w(struct gspca_dev *gspca_dev, ssi_w() argument
1291 ret = reg_write(gspca_dev, 0x8802, reg >> 8); ssi_w()
1294 ret = reg_write(gspca_dev, 0x8801, reg & 0x00ff); ssi_w()
1298 ret = reg_write(gspca_dev, 0x8805, val & 0x00ff); ssi_w()
1303 ret = reg_write(gspca_dev, 0x8800, val); ssi_w()
1310 ret = reg_read(gspca_dev, 0x8803); ssi_w()
1313 if (gspca_dev->usb_buf[0] == 0) ssi_w()
1316 PERR("ssi_w busy %02x", gspca_dev->usb_buf[0]); ssi_w()
1327 static int write_vector(struct gspca_dev *gspca_dev, write_vector() argument
1337 ret = reg_write(gspca_dev, (*data)[1], write_vector()
1340 ret = ssi_w(gspca_dev, (*data)[1], (*data)[0]); write_vector()
1350 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
1353 struct sd *sd = (struct sd *) gspca_dev; sd_config()
1370 data1 = reg_read(gspca_dev, 0x8104); sd_config()
1371 data2 = reg_read(gspca_dev, 0x8105); sd_config()
1374 data1 = reg_read(gspca_dev, 0x8106); sd_config()
1375 data2 = reg_read(gspca_dev, 0x8107); sd_config()
1378 data1 = reg_read(gspca_dev, 0x8621); sd_config()
1381 cam = &gspca_dev->cam; sd_config()
1388 return write_vector(gspca_dev, init_data); sd_config()
1392 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
1397 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
1401 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_start()
1402 reg_write(gspca_dev, 0x8500, mode); sd_start()
1406 reg_write(gspca_dev, 0x8700, 0x28); /* clock */ sd_start()
1411 reg_write(gspca_dev, 0x8700, 0x23); /* clock */ sd_start()
1414 reg_write(gspca_dev, 0x8112, 0x10 | 0x20); sd_start()
1418 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
1421 reg_write(gspca_dev, 0x8112, 0x20); sd_stopN()
1424 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
1430 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
1433 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
1440 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
1445 static void setbrightness(struct gspca_dev *gspca_dev, s32 brightness) setbrightness() argument
1448 reg_write(gspca_dev, 0x8651, brightness); setbrightness()
1449 reg_write(gspca_dev, 0x8652, brightness); setbrightness()
1450 reg_write(gspca_dev, 0x8653, brightness); setbrightness()
1451 reg_write(gspca_dev, 0x8654, brightness); setbrightness()
1456 struct gspca_dev *gspca_dev = sd_s_ctrl() local
1457 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
1459 gspca_dev->usb_err = 0; sd_s_ctrl()
1461 if (!gspca_dev->streaming) sd_s_ctrl()
1466 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
1469 return gspca_dev->usb_err; sd_s_ctrl()
1476 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
1478 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
1480 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dzc3xx.c40 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
5548 static u8 reg_r(struct gspca_dev *gspca_dev, reg_r() argument
5553 if (gspca_dev->usb_err < 0) reg_r()
5555 ret = usb_control_msg(gspca_dev->dev, reg_r()
5556 usb_rcvctrlpipe(gspca_dev->dev, 0), reg_r()
5560 index, gspca_dev->usb_buf, 1, reg_r()
5564 gspca_dev->usb_err = ret; reg_r()
5567 return gspca_dev->usb_buf[0]; reg_r()
5570 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
5576 if (gspca_dev->usb_err < 0) reg_w()
5578 ret = usb_control_msg(gspca_dev->dev, reg_w()
5579 usb_sndctrlpipe(gspca_dev->dev, 0), reg_w()
5586 gspca_dev->usb_err = ret; reg_w()
5590 static u16 i2c_read(struct gspca_dev *gspca_dev, i2c_read() argument
5596 if (gspca_dev->usb_err < 0) i2c_read()
5598 reg_w(gspca_dev, reg, 0x0092); i2c_read()
5599 reg_w(gspca_dev, 0x02, 0x0090); /* <- read command */ i2c_read()
5601 retbyte = reg_r(gspca_dev, 0x0091); /* read status */ i2c_read()
5604 retval = reg_r(gspca_dev, 0x0095); /* read Lowbyte */ i2c_read()
5605 retval |= reg_r(gspca_dev, 0x0096) << 8; /* read Hightbyte */ i2c_read()
5609 static u8 i2c_write(struct gspca_dev *gspca_dev, i2c_write() argument
5616 if (gspca_dev->usb_err < 0) i2c_write()
5618 reg_w(gspca_dev, reg, 0x92); i2c_write()
5619 reg_w(gspca_dev, valL, 0x93); i2c_write()
5620 reg_w(gspca_dev, valH, 0x94); i2c_write()
5621 reg_w(gspca_dev, 0x01, 0x90); /* <- write command */ i2c_write()
5623 retbyte = reg_r(gspca_dev, 0x0091); /* read status */ i2c_write()
5629 static void usb_exchange(struct gspca_dev *gspca_dev, usb_exchange() argument
5635 reg_w(gspca_dev, action->val, action->idx); usb_exchange()
5638 reg_r(gspca_dev, action->idx); usb_exchange()
5641 i2c_write(gspca_dev, usb_exchange()
5647 i2c_write(gspca_dev, usb_exchange()
5662 static void setmatrix(struct gspca_dev *gspca_dev) setmatrix() argument
5664 struct sd *sd = (struct sd *) gspca_dev; setmatrix()
5709 reg_w(gspca_dev, matrix[i], 0x010a + i); setmatrix()
5712 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) setsharpness() argument
5721 reg_w(gspca_dev, sharpness_tb[val][0], 0x01c6); setsharpness()
5722 reg_r(gspca_dev, 0x01c8); setsharpness()
5723 reg_r(gspca_dev, 0x01c9); setsharpness()
5724 reg_r(gspca_dev, 0x01ca); setsharpness()
5725 reg_w(gspca_dev, sharpness_tb[val][1], 0x01cb); setsharpness()
5728 static void setcontrast(struct gspca_dev *gspca_dev, setcontrast() argument
5768 reg_w(gspca_dev, g, 0x0120 + i); /* gamma */ setcontrast()
5782 reg_w(gspca_dev, gr[i], 0x0130 + i); /* gradient */ setcontrast()
5785 static s32 getexposure(struct gspca_dev *gspca_dev) getexposure() argument
5787 return (i2c_read(gspca_dev, 0x25) << 9) getexposure()
5788 | (i2c_read(gspca_dev, 0x26) << 1) getexposure()
5789 | (i2c_read(gspca_dev, 0x27) >> 7); getexposure()
5792 static void setexposure(struct gspca_dev *gspca_dev, s32 val) setexposure() argument
5794 i2c_write(gspca_dev, 0x25, val >> 9, 0x00); setexposure()
5795 i2c_write(gspca_dev, 0x26, val >> 1, 0x00); setexposure()
5796 i2c_write(gspca_dev, 0x27, val << 7, 0x00); setexposure()
5799 static void setquality(struct gspca_dev *gspca_dev) setquality() argument
5801 struct sd *sd = (struct sd *) gspca_dev; setquality()
5803 reg_w(gspca_dev, sd->reg08, ZC3XX_R008_CLOCKSETTING); setquality()
5812 static void setlightfreq(struct gspca_dev *gspca_dev, s32 val) setlightfreq() argument
5814 struct sd *sd = (struct sd *) gspca_dev; setlightfreq()
5897 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; setlightfreq()
5903 usb_exchange(gspca_dev, zc3_freq); setlightfreq()
5908 reg_w(gspca_dev, 0x85, 0x018d); setlightfreq()
5914 reg_w(gspca_dev, 0x40, 0x0002); setlightfreq()
5916 reg_w(gspca_dev, 0x44, 0x0002); setlightfreq()
5920 reg_w(gspca_dev, 0x00, 0x01a7); setlightfreq()
5925 static void setautogain(struct gspca_dev *gspca_dev, s32 val) setautogain() argument
5927 reg_w(gspca_dev, val ? 0x42 : 0x02, 0x0180); setautogain()
5937 struct gspca_dev *gspca_dev = &sd->gspca_dev; transfer_update() local
5948 /* To protect gspca_dev->usb_buf and gspca_dev->usb_err */ transfer_update()
5949 mutex_lock(&gspca_dev->usb_lock); transfer_update()
5951 if (gspca_dev->frozen) transfer_update()
5954 if (!gspca_dev->present || !gspca_dev->streaming) transfer_update()
5958 gspca_dev->usb_err = 0; transfer_update()
5959 reg11 = reg_r(gspca_dev, 0x0011); transfer_update()
5960 if (gspca_dev->usb_err) transfer_update()
5987 gspca_dev->usb_err = 0; transfer_update()
5988 reg_w(gspca_dev, reg07, 0x0007); transfer_update()
5989 if (gspca_dev->usb_err) transfer_update()
5992 mutex_unlock(&gspca_dev->usb_lock); transfer_update()
5996 mutex_unlock(&gspca_dev->usb_lock); transfer_update()
5999 static void send_unknown(struct gspca_dev *gspca_dev, int sensor) send_unknown() argument
6001 reg_w(gspca_dev, 0x01, 0x0000); /* bridge reset */ send_unknown()
6004 reg_w(gspca_dev, 0x03, 0x003a); send_unknown()
6005 reg_w(gspca_dev, 0x0c, 0x003b); send_unknown()
6006 reg_w(gspca_dev, 0x08, 0x0038); send_unknown()
6015 reg_w(gspca_dev, 0x0d, 0x003a); send_unknown()
6016 reg_w(gspca_dev, 0x02, 0x003b); send_unknown()
6017 reg_w(gspca_dev, 0x00, 0x0038); send_unknown()
6021 reg_w(gspca_dev, 0x03, 0x003b); send_unknown()
6022 reg_w(gspca_dev, 0x0c, 0x003a); send_unknown()
6023 reg_w(gspca_dev, 0x0b, 0x0039); send_unknown()
6025 reg_w(gspca_dev, 0x0b, 0x0038); send_unknown()
6031 static void start_2wr_probe(struct gspca_dev *gspca_dev, int sensor) start_2wr_probe() argument
6033 reg_w(gspca_dev, 0x01, 0x0000); start_2wr_probe()
6034 reg_w(gspca_dev, sensor, 0x0010); start_2wr_probe()
6035 reg_w(gspca_dev, 0x01, 0x0001); start_2wr_probe()
6036 reg_w(gspca_dev, 0x03, 0x0012); start_2wr_probe()
6037 reg_w(gspca_dev, 0x01, 0x0012); start_2wr_probe()
6041 static int sif_probe(struct gspca_dev *gspca_dev) sif_probe() argument
6045 start_2wr_probe(gspca_dev, 0x0f); /* PAS106 */ sif_probe()
6046 reg_w(gspca_dev, 0x08, 0x008d); sif_probe()
6048 checkword = ((i2c_read(gspca_dev, 0x00) & 0x0f) << 4) sif_probe()
6049 | ((i2c_read(gspca_dev, 0x01) & 0xf0) >> 4); sif_probe()
6052 send_unknown(gspca_dev, SENSOR_PAS106); sif_probe()
6058 static int vga_2wr_probe(struct gspca_dev *gspca_dev) vga_2wr_probe() argument
6062 start_2wr_probe(gspca_dev, 0x00); /* HV7131B */ vga_2wr_probe()
6063 i2c_write(gspca_dev, 0x01, 0xaa, 0x00); vga_2wr_probe()
6064 retword = i2c_read(gspca_dev, 0x01); vga_2wr_probe()
6068 start_2wr_probe(gspca_dev, 0x04); /* CS2102 */ vga_2wr_probe()
6069 i2c_write(gspca_dev, 0x01, 0xaa, 0x00); vga_2wr_probe()
6070 retword = i2c_read(gspca_dev, 0x01); vga_2wr_probe()
6074 start_2wr_probe(gspca_dev, 0x06); /* OmniVision */ vga_2wr_probe()
6075 reg_w(gspca_dev, 0x08, 0x008d); vga_2wr_probe()
6076 i2c_write(gspca_dev, 0x11, 0xaa, 0x00); vga_2wr_probe()
6077 retword = i2c_read(gspca_dev, 0x11); vga_2wr_probe()
6084 start_2wr_probe(gspca_dev, 0x08); /* HDCS2020 */ vga_2wr_probe()
6085 i2c_write(gspca_dev, 0x1c, 0x00, 0x00); vga_2wr_probe()
6086 i2c_write(gspca_dev, 0x15, 0xaa, 0x00); vga_2wr_probe()
6087 retword = i2c_read(gspca_dev, 0x15); vga_2wr_probe()
6091 start_2wr_probe(gspca_dev, 0x0a); /* PB0330 */ vga_2wr_probe()
6092 i2c_write(gspca_dev, 0x07, 0xaa, 0xaa); vga_2wr_probe()
6093 retword = i2c_read(gspca_dev, 0x07); vga_2wr_probe()
6096 retword = i2c_read(gspca_dev, 0x03); vga_2wr_probe()
6099 retword = i2c_read(gspca_dev, 0x04); vga_2wr_probe()
6103 start_2wr_probe(gspca_dev, 0x0c); /* ICM105A */ vga_2wr_probe()
6104 i2c_write(gspca_dev, 0x01, 0x11, 0x00); vga_2wr_probe()
6105 retword = i2c_read(gspca_dev, 0x01); vga_2wr_probe()
6109 start_2wr_probe(gspca_dev, 0x0e); /* PAS202BCB */ vga_2wr_probe()
6110 reg_w(gspca_dev, 0x08, 0x008d); vga_2wr_probe()
6111 i2c_write(gspca_dev, 0x03, 0xaa, 0x00); vga_2wr_probe()
6113 retword = i2c_read(gspca_dev, 0x03); vga_2wr_probe()
6115 send_unknown(gspca_dev, SENSOR_PAS202B); vga_2wr_probe()
6119 start_2wr_probe(gspca_dev, 0x02); /* TAS5130C */ vga_2wr_probe()
6120 i2c_write(gspca_dev, 0x01, 0xaa, 0x00); vga_2wr_probe()
6121 retword = i2c_read(gspca_dev, 0x01); vga_2wr_probe()
6125 reg_r(gspca_dev, 0x0010); /* ?? */ vga_2wr_probe()
6126 reg_r(gspca_dev, 0x0010); vga_2wr_probe()
6128 reg_w(gspca_dev, 0x01, 0x0000); vga_2wr_probe()
6129 reg_w(gspca_dev, 0x01, 0x0001); vga_2wr_probe()
6130 reg_w(gspca_dev, 0x06, 0x0010); /* OmniVision */ vga_2wr_probe()
6131 reg_w(gspca_dev, 0xa1, 0x008b); vga_2wr_probe()
6132 reg_w(gspca_dev, 0x08, 0x008d); vga_2wr_probe()
6134 reg_w(gspca_dev, 0x01, 0x0012); vga_2wr_probe()
6135 i2c_write(gspca_dev, 0x12, 0x80, 0x00); /* sensor reset */ vga_2wr_probe()
6136 retword = i2c_read(gspca_dev, 0x0a) << 8; vga_2wr_probe()
6137 retword |= i2c_read(gspca_dev, 0x0b); vga_2wr_probe()
6141 reg_w(gspca_dev, 0x06, 0x0010); vga_2wr_probe()
6166 static int vga_3wr_probe(struct gspca_dev *gspca_dev) vga_3wr_probe() argument
6168 struct sd *sd = (struct sd *) gspca_dev; vga_3wr_probe()
6173 reg_w(gspca_dev, 0x02, 0x0010); vga_3wr_probe()
6174 reg_r(gspca_dev, 0x0010); vga_3wr_probe()
6175 reg_w(gspca_dev, 0x01, 0x0000); vga_3wr_probe()
6176 reg_w(gspca_dev, 0x00, 0x0010); vga_3wr_probe()
6177 reg_w(gspca_dev, 0x01, 0x0001); vga_3wr_probe()
6178 reg_w(gspca_dev, 0x91, 0x008b); vga_3wr_probe()
6179 reg_w(gspca_dev, 0x03, 0x0012); vga_3wr_probe()
6180 reg_w(gspca_dev, 0x01, 0x0012); vga_3wr_probe()
6181 reg_w(gspca_dev, 0x05, 0x0012); vga_3wr_probe()
6182 retword = i2c_read(gspca_dev, 0x14); vga_3wr_probe()
6185 retword = i2c_read(gspca_dev, 0x15); vga_3wr_probe()
6188 retword = i2c_read(gspca_dev, 0x16); vga_3wr_probe()
6192 reg_w(gspca_dev, 0x02, 0x0010); vga_3wr_probe()
6193 retword = reg_r(gspca_dev, 0x000b) << 8; vga_3wr_probe()
6194 retword |= reg_r(gspca_dev, 0x000a); vga_3wr_probe()
6196 reg_r(gspca_dev, 0x0010); vga_3wr_probe()
6202 send_unknown(gspca_dev, SENSOR_PB0330); vga_3wr_probe()
6207 reg_w(gspca_dev, 0x01, 0x0000); /* check PB0330 */ vga_3wr_probe()
6208 reg_w(gspca_dev, 0x01, 0x0001); vga_3wr_probe()
6209 reg_w(gspca_dev, 0xdd, 0x008b); vga_3wr_probe()
6210 reg_w(gspca_dev, 0x0a, 0x0010); vga_3wr_probe()
6211 reg_w(gspca_dev, 0x03, 0x0012); vga_3wr_probe()
6212 reg_w(gspca_dev, 0x01, 0x0012); vga_3wr_probe()
6213 retword = i2c_read(gspca_dev, 0x00); vga_3wr_probe()
6220 reg_w(gspca_dev, 0x01, 0x0000); vga_3wr_probe()
6221 reg_w(gspca_dev, 0x01, 0x0001); vga_3wr_probe()
6222 reg_w(gspca_dev, 0x98, 0x008b); vga_3wr_probe()
6223 reg_w(gspca_dev, 0x01, 0x0010); vga_3wr_probe()
6224 reg_w(gspca_dev, 0x03, 0x0012); vga_3wr_probe()
6226 reg_w(gspca_dev, 0x01, 0x0012); vga_3wr_probe()
6227 retword = i2c_read(gspca_dev, 0x00); vga_3wr_probe()
6233 send_unknown(gspca_dev, SENSOR_GC0305); vga_3wr_probe()
6237 reg_w(gspca_dev, 0x01, 0x0000); /* check OmniVision */ vga_3wr_probe()
6238 reg_w(gspca_dev, 0x01, 0x0001); vga_3wr_probe()
6239 reg_w(gspca_dev, 0xa1, 0x008b); vga_3wr_probe()
6240 reg_w(gspca_dev, 0x08, 0x008d); vga_3wr_probe()
6241 reg_w(gspca_dev, 0x06, 0x0010); vga_3wr_probe()
6242 reg_w(gspca_dev, 0x01, 0x0012); vga_3wr_probe()
6243 reg_w(gspca_dev, 0x05, 0x0012); vga_3wr_probe()
6244 if (i2c_read(gspca_dev, 0x1c) == 0x007f /* OV7610 - manufacturer ID */ vga_3wr_probe()
6245 && i2c_read(gspca_dev, 0x1d) == 0x00a2) { vga_3wr_probe()
6246 send_unknown(gspca_dev, SENSOR_OV7620); vga_3wr_probe()
6250 reg_w(gspca_dev, 0x01, 0x0000); vga_3wr_probe()
6251 reg_w(gspca_dev, 0x00, 0x0002); vga_3wr_probe()
6252 reg_w(gspca_dev, 0x01, 0x0010); vga_3wr_probe()
6253 reg_w(gspca_dev, 0x01, 0x0001); vga_3wr_probe()
6254 reg_w(gspca_dev, 0xee, 0x008b); vga_3wr_probe()
6255 reg_w(gspca_dev, 0x03, 0x0012); vga_3wr_probe()
6256 reg_w(gspca_dev, 0x01, 0x0012); vga_3wr_probe()
6257 reg_w(gspca_dev, 0x05, 0x0012); vga_3wr_probe()
6258 retword = i2c_read(gspca_dev, 0x00) << 8; /* ID 0 */ vga_3wr_probe()
6259 retword |= i2c_read(gspca_dev, 0x01); /* ID 1 */ vga_3wr_probe()
6264 retbyte = i2c_read(gspca_dev, 0x02); /* revision number */ vga_3wr_probe()
6267 send_unknown(gspca_dev, SENSOR_PO2030); vga_3wr_probe()
6271 reg_w(gspca_dev, 0x01, 0x0000); vga_3wr_probe()
6272 reg_w(gspca_dev, 0x0a, 0x0010); vga_3wr_probe()
6273 reg_w(gspca_dev, 0xd3, 0x008b); vga_3wr_probe()
6274 reg_w(gspca_dev, 0x01, 0x0001); vga_3wr_probe()
6275 reg_w(gspca_dev, 0x03, 0x0012); vga_3wr_probe()
6276 reg_w(gspca_dev, 0x01, 0x0012); vga_3wr_probe()
6277 reg_w(gspca_dev, 0x05, 0x0012); vga_3wr_probe()
6278 reg_w(gspca_dev, 0xd3, 0x008b); vga_3wr_probe()
6279 retword = i2c_read(gspca_dev, 0x01); vga_3wr_probe()
6287 static int zcxx_probeSensor(struct gspca_dev *gspca_dev) zcxx_probeSensor() argument
6289 struct sd *sd = (struct sd *) gspca_dev; zcxx_probeSensor()
6299 sensor = sif_probe(gspca_dev); zcxx_probeSensor()
6304 sensor = vga_2wr_probe(gspca_dev); zcxx_probeSensor()
6307 return vga_3wr_probe(gspca_dev); zcxx_probeSensor()
6311 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
6314 struct sd *sd = (struct sd *) gspca_dev; sd_config()
6333 struct gspca_dev *gspca_dev = zcxx_g_volatile_ctrl() local
6334 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); zcxx_g_volatile_ctrl()
6335 struct sd *sd = (struct sd *)gspca_dev; zcxx_g_volatile_ctrl()
6339 gspca_dev->usb_err = 0; zcxx_g_volatile_ctrl()
6340 if (ctrl->val && sd->exposure && gspca_dev->streaming) zcxx_g_volatile_ctrl()
6341 sd->exposure->val = getexposure(gspca_dev); zcxx_g_volatile_ctrl()
6342 return gspca_dev->usb_err; zcxx_g_volatile_ctrl()
6349 struct gspca_dev *gspca_dev = zcxx_s_ctrl() local
6350 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); zcxx_s_ctrl()
6351 struct sd *sd = (struct sd *)gspca_dev; zcxx_s_ctrl()
6354 gspca_dev->usb_err = 0; zcxx_s_ctrl()
6367 if (i >= 2 && gspca_dev->streaming && zcxx_s_ctrl()
6368 !gspca_dev->cam.needs_full_bandwidth) zcxx_s_ctrl()
6375 if (!gspca_dev->streaming) zcxx_s_ctrl()
6381 setcontrast(gspca_dev, sd->gamma->val, zcxx_s_ctrl()
6386 setautogain(gspca_dev, ctrl->val); zcxx_s_ctrl()
6387 if (!gspca_dev->usb_err && !ctrl->val && sd->exposure) zcxx_s_ctrl()
6388 setexposure(gspca_dev, sd->exposure->val); zcxx_s_ctrl()
6391 setlightfreq(gspca_dev, ctrl->val); zcxx_s_ctrl()
6394 setsharpness(gspca_dev, ctrl->val); zcxx_s_ctrl()
6397 setquality(gspca_dev); zcxx_s_ctrl()
6400 return gspca_dev->usb_err; zcxx_s_ctrl()
6408 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
6410 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
6411 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
6434 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
6470 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
6472 struct sd *sd = (struct sd *) gspca_dev; sd_init()
6497 sensor = zcxx_probeSensor(gspca_dev); sd_init()
6520 sensor = i2c_read(gspca_dev, 0x00); sd_init()
6624 reg_w(gspca_dev, 0x02, 0x0010); sd_init()
6625 reg_r(gspca_dev, 0x0010); sd_init()
6628 cam = &gspca_dev->cam; sd_init()
6646 reg_w(gspca_dev, 0x01, 0x0000); sd_init()
6647 return gspca_dev->usb_err; sd_init()
6650 static int sd_pre_start(struct gspca_dev *gspca_dev) sd_pre_start() argument
6652 struct sd *sd = (struct sd *) gspca_dev; sd_pre_start()
6653 gspca_dev->cam.needs_full_bandwidth = (sd->reg08 >= 4) ? 1 : 0; sd_pre_start()
6657 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
6659 struct sd *sd = (struct sd *) gspca_dev; sd_start()
6703 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, sd_start()
6704 gspca_dev->pixfmt.width, sd_start()
6707 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; sd_start()
6710 zcxx_probeSensor(gspca_dev); sd_start()
6713 usb_exchange(gspca_dev, pas106b_Initial_com); sd_start()
6716 usb_exchange(gspca_dev, init_tb[sd->sensor][mode]); sd_start()
6726 reg_r(gspca_dev, 0x0002); /* --> 0x40 */ sd_start()
6727 reg_w(gspca_dev, 0x09, 0x01ad); /* (from win traces) */ sd_start()
6728 reg_w(gspca_dev, 0x15, 0x01ae); sd_start()
6731 reg_w(gspca_dev, 0x0d, 0x003a); sd_start()
6732 reg_w(gspca_dev, 0x02, 0x003b); sd_start()
6733 reg_w(gspca_dev, 0x00, 0x0038); sd_start()
6737 reg_w(gspca_dev, 0x03, 0x003b); sd_start()
6738 reg_w(gspca_dev, 0x0c, 0x003a); sd_start()
6739 reg_w(gspca_dev, 0x0b, 0x0039); sd_start()
6741 reg_w(gspca_dev, 0x50, ZC3XX_R11D_GLOBALGAIN); sd_start()
6745 setmatrix(gspca_dev); sd_start()
6749 reg_r(gspca_dev, 0x0008); sd_start()
6750 reg_w(gspca_dev, 0x00, 0x0008); sd_start()
6756 reg_r(gspca_dev, 0x0008); sd_start()
6759 reg_w(gspca_dev, 0x03, 0x0008); sd_start()
6762 setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); sd_start()
6771 setcontrast(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma), sd_start()
6776 setmatrix(gspca_dev); /* one more time? */ sd_start()
6780 reg_r(gspca_dev, 0x0180); /* from win */ sd_start()
6781 reg_w(gspca_dev, 0x00, 0x0180); sd_start()
6784 setquality(gspca_dev); sd_start()
6786 reg_w(gspca_dev, 0x00, 0x0007); sd_start()
6788 setlightfreq(gspca_dev, v4l2_ctrl_g_ctrl(sd->plfreq)); sd_start()
6792 reg_w(gspca_dev, 0x09, 0x01ad); /* (from win traces) */ sd_start()
6793 reg_w(gspca_dev, 0x15, 0x01ae); sd_start()
6794 reg_w(gspca_dev, 0x02, 0x0180); sd_start()
6796 reg_w(gspca_dev, 0x40, 0x0117); sd_start()
6799 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(sd->exposure)); sd_start()
6800 reg_w(gspca_dev, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN); sd_start()
6804 reg_w(gspca_dev, 0x09, 0x01ad); /* (from win traces) */ sd_start()
6805 reg_w(gspca_dev, 0x15, 0x01ae); sd_start()
6809 /* reg_w(gspca_dev, 0x40, ZC3XX_R117_GGAIN); in win traces */ sd_start()
6810 reg_r(gspca_dev, 0x0180); sd_start()
6813 reg_w(gspca_dev, 0x09, 0x01ad); sd_start()
6814 reg_w(gspca_dev, 0x15, 0x01ae); sd_start()
6815 i2c_read(gspca_dev, 0x13); /*fixme: returns 0xa3 */ sd_start()
6816 i2c_write(gspca_dev, 0x13, 0xa3, 0x00); sd_start()
6818 reg_w(gspca_dev, 0x40, 0x0117); sd_start()
6819 reg_r(gspca_dev, 0x0180); sd_start()
6823 setautogain(gspca_dev, v4l2_ctrl_g_ctrl(sd->autogain)); sd_start()
6825 if (gspca_dev->usb_err < 0) sd_start()
6826 return gspca_dev->usb_err; sd_start()
6837 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
6839 struct sd *sd = (struct sd *) gspca_dev; sd_stop0()
6842 mutex_unlock(&gspca_dev->usb_lock); sd_stop0()
6844 mutex_lock(&gspca_dev->usb_lock); sd_stop0()
6847 if (!gspca_dev->present) sd_stop0()
6849 send_unknown(gspca_dev, sd->sensor); sd_stop0()
6852 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
6856 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
6862 gspca_frame_add(gspca_dev, LAST_PACKET, sd_pkt_scan()
6870 gspca_frame_add(gspca_dev, FIRST_PACKET, sd_pkt_scan()
6882 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
6885 static int sd_set_jcomp(struct gspca_dev *gspca_dev, sd_set_jcomp() argument
6888 struct sd *sd = (struct sd *) gspca_dev; sd_set_jcomp()
6893 static int sd_get_jcomp(struct gspca_dev *gspca_dev, sd_get_jcomp() argument
6896 struct sd *sd = (struct sd *) gspca_dev; sd_get_jcomp()
6906 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, sd_int_pkt_scan() argument
6911 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); sd_int_pkt_scan()
6912 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
6913 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_int_pkt_scan()
6914 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
H A Dsn9c2028.h34 static unsigned char *sn9c2028_find_sof(struct gspca_dev *gspca_dev, sn9c2028_find_sof() argument
37 struct sd *sd = (struct sd *) gspca_dev; sn9c2028_find_sof()
H A Dspca501.c34 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
1759 static int reg_write(struct gspca_dev *gspca_dev, reg_write() argument
1763 struct usb_device *dev = gspca_dev->dev; reg_write()
1778 static int write_vector(struct gspca_dev *gspca_dev, const __u16 data[][3]) write_vector() argument
1783 ret = reg_write(gspca_dev, data[i][0], data[i][2], write_vector()
1795 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) setbrightness() argument
1797 reg_write(gspca_dev, SPCA501_REG_CCDSP, 0x12, val); setbrightness()
1800 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) setcontrast() argument
1802 reg_write(gspca_dev, 0x00, 0x00, (val >> 8) & 0xff); setcontrast()
1803 reg_write(gspca_dev, 0x00, 0x01, val & 0xff); setcontrast()
1806 static void setcolors(struct gspca_dev *gspca_dev, s32 val) setcolors() argument
1808 reg_write(gspca_dev, SPCA501_REG_CCDSP, 0x0c, val); setcolors()
1811 static void setblue_balance(struct gspca_dev *gspca_dev, s32 val) setblue_balance() argument
1813 reg_write(gspca_dev, SPCA501_REG_CCDSP, 0x11, val); setblue_balance()
1816 static void setred_balance(struct gspca_dev *gspca_dev, s32 val) setred_balance() argument
1818 reg_write(gspca_dev, SPCA501_REG_CCDSP, 0x13, val); setred_balance()
1822 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
1825 struct sd *sd = (struct sd *) gspca_dev; sd_config()
1828 cam = &gspca_dev->cam; sd_config()
1837 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
1839 struct sd *sd = (struct sd *) gspca_dev; sd_init()
1845 if (write_vector(gspca_dev, spca501c_arowana_init_data)) sd_init()
1850 if (write_vector(gspca_dev, spca501c_mysterious_open_data)) sd_init()
1855 if (write_vector(gspca_dev, spca501_init_data)) sd_init()
1865 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
1867 struct sd *sd = (struct sd *) gspca_dev; sd_start()
1873 write_vector(gspca_dev, spca501_3com_open_data); sd_start()
1878 write_vector(gspca_dev, spca501c_arowana_open_data); sd_start()
1882 write_vector(gspca_dev, spca501c_mysterious_init_data); sd_start()
1886 write_vector(gspca_dev, spca501_open_data); sd_start()
1890 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; sd_start()
1894 reg_write(gspca_dev, SPCA50X_REG_USB, 0x6, 0x94); sd_start()
1897 reg_write(gspca_dev, SPCA50X_REG_USB, 0x07, 0x004a); sd_start()
1900 reg_write(gspca_dev, SPCA50X_REG_USB, 0x07, 0x104a); sd_start()
1904 reg_write(gspca_dev, SPCA50X_REG_USB, 0x07, 0x204a); sd_start()
1907 reg_write(gspca_dev, SPCA501_REG_CTLRL, 0x01, 0x02); sd_start()
1912 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
1916 reg_write(gspca_dev, SPCA501_REG_CTLRL, 0x01, 0x00); sd_stopN()
1920 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
1922 if (!gspca_dev->present) sd_stop0()
1924 reg_write(gspca_dev, SPCA501_REG_CTLRL, 0x05, 0x00); sd_stop0()
1927 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
1933 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
1936 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); sd_pkt_scan()
1939 /* gspca_dev->last_packet_type = DISCARD_PACKET; */ sd_pkt_scan()
1944 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
1949 struct gspca_dev *gspca_dev = sd_s_ctrl() local
1950 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
1952 gspca_dev->usb_err = 0; sd_s_ctrl()
1954 if (!gspca_dev->streaming) sd_s_ctrl()
1959 setbrightness(gspca_dev, ctrl->val); sd_s_ctrl()
1962 setcontrast(gspca_dev, ctrl->val); sd_s_ctrl()
1965 setcolors(gspca_dev, ctrl->val); sd_s_ctrl()
1968 setblue_balance(gspca_dev, ctrl->val); sd_s_ctrl()
1971 setred_balance(gspca_dev, ctrl->val); sd_s_ctrl()
1974 return gspca_dev->usb_err; sd_s_ctrl()
1981 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
1983 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
1985 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
H A Dnw80x.c37 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
1539 static void reg_w(struct gspca_dev *gspca_dev, reg_w() argument
1544 struct usb_device *dev = gspca_dev->dev; reg_w()
1547 if (gspca_dev->usb_err < 0) reg_w()
1554 memcpy(gspca_dev->usb_buf, data, len); reg_w()
1560 gspca_dev->usb_buf, reg_w()
1565 gspca_dev->usb_err = ret; reg_w()
1570 static void reg_r(struct gspca_dev *gspca_dev, reg_r() argument
1574 struct usb_device *dev = gspca_dev->dev; reg_r()
1577 if (gspca_dev->usb_err < 0) reg_r()
1583 gspca_dev->usb_buf, len, 500); reg_r()
1586 gspca_dev->usb_err = ret; reg_r()
1591 index, gspca_dev->usb_buf[0]); reg_r()
1594 index, gspca_dev->usb_buf[0], reg_r()
1595 gspca_dev->usb_buf[1]); reg_r()
1598 static void i2c_w(struct gspca_dev *gspca_dev, i2c_w() argument
1606 reg_w(gspca_dev, 0x0600, data + 1, len - 1); i2c_w()
1607 reg_w(gspca_dev, 0x0600, data, len); i2c_w()
1610 reg_w(gspca_dev, 0x0502, val, 2); i2c_w()
1612 reg_w(gspca_dev, 0x0501, val, 1); i2c_w()
1615 reg_r(gspca_dev, 0x0505, 1); i2c_w()
1616 if (gspca_dev->usb_err < 0) i2c_w()
1618 if (gspca_dev->usb_buf[0] == 0) i2c_w()
1621 gspca_dev->usb_err = -ETIME; i2c_w()
1624 static void reg_w_buf(struct gspca_dev *gspca_dev, reg_w_buf() argument
1637 reg_w(gspca_dev, reg, cmd, len); reg_w_buf()
1639 i2c_w(gspca_dev, reg, cmd, len); reg_w_buf()
1658 static void setgain(struct gspca_dev *gspca_dev, u8 val) setgain() argument
1660 struct sd *sd = (struct sd *) gspca_dev; setgain()
1665 reg_w(gspca_dev, 0x1026, &val, 1); setgain()
1672 reg_w(gspca_dev, 0x101d, v, 2); /* SIF reg0/1 (AGC) */ setgain()
1677 static void setexposure(struct gspca_dev *gspca_dev, s32 val) setexposure() argument
1679 struct sd *sd = (struct sd *) gspca_dev; setexposure()
1685 reg_w(gspca_dev, 0x1019, v, 1); setexposure()
1693 reg_w(gspca_dev, 0x101b, v, 2); setexposure()
1698 static void setautogain(struct gspca_dev *gspca_dev, s32 val) setautogain() argument
1700 struct sd *sd = (struct sd *) gspca_dev; setautogain()
1709 reg_r(gspca_dev, 0x1004, 1); setautogain()
1710 if (gspca_dev->usb_buf[0] & 0x04) { /* if AE_FULL_FRM */ setautogain()
1711 sd->ae_res = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; setautogain()
1713 reg_r(gspca_dev, 0x1011, 8); setautogain()
1714 w = (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0] setautogain()
1715 - (gspca_dev->usb_buf[3] << 8) - gspca_dev->usb_buf[2]; setautogain()
1716 h = (gspca_dev->usb_buf[5] << 8) + gspca_dev->usb_buf[4] setautogain()
1717 - (gspca_dev->usb_buf[7] << 8) - gspca_dev->usb_buf[6]; setautogain()
1720 sd->ae_res = gspca_dev->pixfmt.width * setautogain()
1721 gspca_dev->pixfmt.height; setautogain()
1725 static int nw802_test_reg(struct gspca_dev *gspca_dev, nw802_test_reg() argument
1730 reg_w(gspca_dev, index, &value, 1); nw802_test_reg()
1733 reg_r(gspca_dev, index, 1); nw802_test_reg()
1735 return gspca_dev->usb_buf[0] == value; nw802_test_reg()
1739 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
1742 struct sd *sd = (struct sd *) gspca_dev; sd_config()
1747 gspca_dev->cam.needs_full_bandwidth = 1; sd_config()
1759 if (!nw802_test_reg(gspca_dev, 0x0500, 0x55)) { sd_config()
1763 } else if (!nw802_test_reg(gspca_dev, 0x109b, 0xaa)) { sd_config()
1768 reg_r(gspca_dev, 0x0403, 1); /* GPIO */ sd_config()
1770 gspca_dev->usb_buf[0]); sd_config()
1771 switch (gspca_dev->usb_buf[0] >> 1) { sd_config()
1789 gspca_dev->usb_err = -ENODEV; sd_config()
1790 return gspca_dev->usb_err; sd_config()
1797 gspca_dev->cam.cam_mode = cif_mode; /* qvga */ sd_config()
1800 gspca_dev->cam.cam_mode = &cif_mode[1]; /* cif */ sd_config()
1803 gspca_dev->cam.nmodes = 1; sd_config()
1805 gspca_dev->cam.cam_mode = vga_mode; sd_config()
1810 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); sd_config()
1813 gspca_dev->cam.nmodes = 1; /* qvga only */ sd_config()
1818 return gspca_dev->usb_err; sd_config()
1822 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
1824 struct sd *sd = (struct sd *) gspca_dev; sd_init()
1830 reg_w_buf(gspca_dev, spacecam_init); sd_init()
1833 reg_w_buf(gspca_dev, nw800_init); sd_init()
1842 reg_w_buf(gspca_dev, proscope_init); sd_init()
1847 return gspca_dev->usb_err; sd_init()
1851 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
1853 struct sd *sd = (struct sd *) gspca_dev; sd_start()
1857 reg_w_buf(gspca_dev, cmd); sd_start()
1860 if (gspca_dev->pixfmt.width == 320) sd_start()
1861 reg_w_buf(gspca_dev, nw801_start_qvga); sd_start()
1863 reg_w_buf(gspca_dev, nw801_start_vga); sd_start()
1864 reg_w_buf(gspca_dev, nw801_start_2); sd_start()
1867 if (gspca_dev->pixfmt.width == 320) sd_start()
1868 reg_w_buf(gspca_dev, kr651_start_qvga); sd_start()
1870 reg_w_buf(gspca_dev, kr651_start_vga); sd_start()
1871 reg_w_buf(gspca_dev, kr651_start_2); sd_start()
1874 if (gspca_dev->pixfmt.width == 320) sd_start()
1875 reg_w_buf(gspca_dev, proscope_start_qvga); sd_start()
1877 reg_w_buf(gspca_dev, proscope_start_vga); sd_start()
1878 reg_w_buf(gspca_dev, proscope_start_2); sd_start()
1884 return gspca_dev->usb_err; sd_start()
1887 static void sd_stopN(struct gspca_dev *gspca_dev) sd_stopN() argument
1889 struct sd *sd = (struct sd *) gspca_dev; sd_stopN()
1895 reg_w(gspca_dev, 0x0406, &value, 1); sd_stopN()
1918 reg_w(gspca_dev, 0x0404, &value, 1); sd_stopN()
1921 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
1934 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
1935 gspca_frame_add(gspca_dev, FIRST_PACKET, data + 8, len - 8); sd_pkt_scan()
1937 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); sd_pkt_scan()
1941 static void do_autogain(struct gspca_dev *gspca_dev) do_autogain() argument
1943 struct sd *sd = (struct sd *) gspca_dev; do_autogain()
1953 reg_r(gspca_dev, sd->bridge == BRIDGE_NW801 ? 0x080d : 0x080c, 4); do_autogain()
1954 luma = (gspca_dev->usb_buf[3] << 24) + (gspca_dev->usb_buf[2] << 16) do_autogain()
1955 + (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0]; do_autogain()
1960 gspca_coarse_grained_expo_autogain(gspca_dev, luma, 100, 5); do_autogain()
1963 gspca_expo_autogain(gspca_dev, luma, 100, 5, 230, 0); do_autogain()
1971 struct gspca_dev *gspca_dev = sd_s_ctrl() local
1972 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
1974 gspca_dev->usb_err = 0; sd_s_ctrl()
1976 if (!gspca_dev->streaming) sd_s_ctrl()
1983 setautogain(gspca_dev, ctrl->val); sd_s_ctrl()
1985 if (gspca_dev->gain->is_new) sd_s_ctrl()
1986 setgain(gspca_dev, gspca_dev->gain->val); sd_s_ctrl()
1987 if (gspca_dev->exposure->is_new) sd_s_ctrl()
1988 setexposure(gspca_dev, sd_s_ctrl()
1989 gspca_dev->exposure->val); sd_s_ctrl()
1995 setexposure(gspca_dev, gspca_dev->exposure->val); sd_s_ctrl()
1998 return gspca_dev->usb_err; sd_s_ctrl()
2005 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
2007 struct sd *sd = (struct sd *)gspca_dev; sd_init_controls()
2008 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
2010 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
2014 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
2018 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
2020 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
2024 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
2026 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
2032 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, sd_init_controls()
2043 if (gspca_dev->autogain) sd_init_controls()
2044 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); sd_init_controls()
H A Dpac_common.h74 static unsigned char *pac_find_sof(struct gspca_dev *gspca_dev, u8 *sof_read, pac_find_sof() argument
/linux-4.4.14/drivers/media/usb/gspca/gl860/
H A Dgl860.h35 #define _MI1320_ (((struct sd *) gspca_dev)->sensor == ID_MI1320)
36 #define _MI2020_ (((struct sd *) gspca_dev)->sensor == ID_MI2020)
37 #define _OV2640_ (((struct sd *) gspca_dev)->sensor == ID_OV2640)
38 #define _OV9655_ (((struct sd *) gspca_dev)->sensor == ID_OV9655)
61 struct gspca_dev gspca_dev; /* !! must be the first item */ member in struct:sd
67 int (*dev_configure_alt) (struct gspca_dev *);
68 int (*dev_init_at_startup)(struct gspca_dev *);
69 int (*dev_init_pre_alt) (struct gspca_dev *);
70 void (*dev_post_unset_alt) (struct gspca_dev *);
71 int (*dev_camera_settings)(struct gspca_dev *);
91 int fetch_validx(struct gspca_dev *gspca_dev, struct validx *tbl, int len);
92 int keep_on_fetching_validx(struct gspca_dev *gspca_dev, struct validx *tbl,
94 void fetch_idxdata(struct gspca_dev *gspca_dev, struct idxdata *tbl, int len);
96 int gl860_RTx(struct gspca_dev *gspca_dev,
100 void mi1320_init_settings(struct gspca_dev *);
101 void ov2640_init_settings(struct gspca_dev *);
102 void ov9655_init_settings(struct gspca_dev *);
103 void mi2020_init_settings(struct gspca_dev *);
H A Dgl860-mi1320.c176 static int mi1320_init_at_startup(struct gspca_dev *gspca_dev);
177 static int mi1320_configure_alt(struct gspca_dev *gspca_dev);
178 static int mi1320_init_pre_alt(struct gspca_dev *gspca_dev);
179 static int mi1320_init_post_alt(struct gspca_dev *gspca_dev);
180 static void mi1320_post_unset_alt(struct gspca_dev *gspca_dev);
181 static int mi1320_sensor_settings(struct gspca_dev *gspca_dev);
182 static int mi1320_camera_settings(struct gspca_dev *gspca_dev);
185 void mi1320_init_settings(struct gspca_dev *gspca_dev) mi1320_init_settings() argument
187 struct sd *sd = (struct sd *) gspca_dev; mi1320_init_settings()
222 static void common(struct gspca_dev *gspca_dev) common() argument
226 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 22, dat_common00); common()
227 ctrl_out(gspca_dev, 0x40, 1, 0x0041, 0x0000, 0, NULL); common()
228 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 32, dat_common01); common()
229 n = fetch_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common)); common()
230 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, dat_common02); common()
231 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, dat_common03); common()
232 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 16, dat_common04); common()
233 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, dat_common05); common()
234 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 44, dat_common06); common()
235 keep_on_fetching_validx(gspca_dev, tbl_common, common()
237 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 52, dat_common07); common()
238 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, dat_common08); common()
239 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, dat_common09); common()
240 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 56, dat_common10); common()
241 keep_on_fetching_validx(gspca_dev, tbl_common, common()
243 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 40, dat_common11); common()
244 keep_on_fetching_validx(gspca_dev, tbl_common, common()
248 static int mi1320_init_at_startup(struct gspca_dev *gspca_dev) mi1320_init_at_startup() argument
250 fetch_validx(gspca_dev, tbl_init_at_startup, mi1320_init_at_startup()
253 common(gspca_dev); mi1320_init_at_startup()
255 /* ctrl_out(gspca_dev, 0x40, 11, 0x0000, 0x0000, 0, NULL); */ mi1320_init_at_startup()
260 static int mi1320_init_pre_alt(struct gspca_dev *gspca_dev) mi1320_init_pre_alt() argument
262 struct sd *sd = (struct sd *) gspca_dev; mi1320_init_pre_alt()
278 common(gspca_dev); mi1320_init_pre_alt()
280 mi1320_sensor_settings(gspca_dev); mi1320_init_pre_alt()
282 mi1320_init_post_alt(gspca_dev); mi1320_init_pre_alt()
287 static int mi1320_init_post_alt(struct gspca_dev *gspca_dev) mi1320_init_post_alt() argument
289 mi1320_camera_settings(gspca_dev); mi1320_init_post_alt()
294 static int mi1320_sensor_settings(struct gspca_dev *gspca_dev) mi1320_sensor_settings() argument
296 s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; mi1320_sensor_settings()
298 ctrl_out(gspca_dev, 0x40, 5, 0x0001, 0x0000, 0, NULL); mi1320_sensor_settings()
300 fetch_validx(gspca_dev, tbl_sensor_settings_common, mi1320_sensor_settings()
305 fetch_validx(gspca_dev, tbl_sensor_settings_1280, mi1320_sensor_settings()
307 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 64, tbl_1280[0]); mi1320_sensor_settings()
308 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 40, tbl_1280[1]); mi1320_sensor_settings()
309 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, tbl_1280[2]); mi1320_sensor_settings()
313 fetch_validx(gspca_dev, tbl_sensor_settings_800, mi1320_sensor_settings()
315 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 64, tbl_800[0]); mi1320_sensor_settings()
316 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 40, tbl_800[1]); mi1320_sensor_settings()
317 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, tbl_800[2]); mi1320_sensor_settings()
321 fetch_validx(gspca_dev, tbl_sensor_settings_640, mi1320_sensor_settings()
323 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 60, tbl_640[0]); mi1320_sensor_settings()
324 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 40, tbl_640[1]); mi1320_sensor_settings()
325 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, tbl_640[2]); mi1320_sensor_settings()
331 static int mi1320_configure_alt(struct gspca_dev *gspca_dev) mi1320_configure_alt() argument
333 s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; mi1320_configure_alt()
337 gspca_dev->alt = 3 + 1; mi1320_configure_alt()
342 gspca_dev->alt = 1 + 1; mi1320_configure_alt()
348 static int mi1320_camera_settings(struct gspca_dev *gspca_dev) mi1320_camera_settings() argument
350 struct sd *sd = (struct sd *) gspca_dev; mi1320_camera_settings()
369 ctrl_out(gspca_dev, 0x40, 1, 0xba00, 0x00f0, 0, NULL); mi1320_camera_settings()
370 ctrl_out(gspca_dev, 0x40, 1, 0xba02, 0x00f1, 0, NULL); mi1320_camera_settings()
371 ctrl_out(gspca_dev, 0x40, 1, 0xba00 , 0x005b, 0, NULL); mi1320_camera_settings()
372 ctrl_out(gspca_dev, 0x40, 1, 0xba01 + freq, 0x00f1, 0, NULL); mi1320_camera_settings()
382 ctrl_out(gspca_dev, 0x40, 1, mi1320_camera_settings()
384 ctrl_out(gspca_dev, 0x40, 1, mi1320_camera_settings()
386 ctrl_out(gspca_dev, 0x40, 1, mi1320_camera_settings()
388 ctrl_out(gspca_dev, 0x40, 3, mi1320_camera_settings()
393 ctrl_out(gspca_dev, 0x40, 1, mi1320_camera_settings()
395 ctrl_out(gspca_dev, 0x40, 1, mi1320_camera_settings()
397 ctrl_out(gspca_dev, 0x40, 1, mi1320_camera_settings()
399 ctrl_out(gspca_dev, 0x40, 3, mi1320_camera_settings()
404 ctrl_out(gspca_dev, 0x40, 1, mi1320_camera_settings()
406 ctrl_out(gspca_dev, 0x40, 1, mi1320_camera_settings()
408 ctrl_out(gspca_dev, 0x40, 1, mi1320_camera_settings()
410 ctrl_out(gspca_dev, 0x40, 3, mi1320_camera_settings()
422 ctrl_out(gspca_dev, 0x40, 1, 0xba00, 0x00f0, 0, NULL); mi1320_camera_settings()
423 ctrl_out(gspca_dev, 0x40, 1, 0xba01, 0x00f1, 0, NULL); mi1320_camera_settings()
424 ctrl_out(gspca_dev, 0x40, 1, 0xba00 + bright, 0x0034, 0, NULL); mi1320_camera_settings()
425 ctrl_out(gspca_dev, 0x40, 1, 0xba00 + bright, 0x00f1, 0, NULL); mi1320_camera_settings()
434 ctrl_out(gspca_dev, 0x40, 1, 0xba00, 0x00f0, 0, NULL); mi1320_camera_settings()
435 ctrl_out(gspca_dev, 0x40, 1, 0xba01, 0x00f1, 0, NULL); mi1320_camera_settings()
436 ctrl_out(gspca_dev, 0x40, 1, 0xba00 , 0x0025, 0, NULL); mi1320_camera_settings()
437 ctrl_out(gspca_dev, 0x40, 1, 0xba00 + sat, 0x00f1, 0, NULL); mi1320_camera_settings()
445 ctrl_out(gspca_dev, 0x40, 1, 0xba00, 0x00f0, 0, NULL); mi1320_camera_settings()
446 ctrl_out(gspca_dev, 0x40, 1, 0xba01, 0x00f1, 0, NULL); mi1320_camera_settings()
447 ctrl_out(gspca_dev, 0x40, 1, 0xba00 , 0x0005, 0, NULL); mi1320_camera_settings()
448 ctrl_out(gspca_dev, 0x40, 1, 0xba00 + sharp, 0x00f1, 0, NULL); mi1320_camera_settings()
460 ctrl_out(gspca_dev, 0x40, 1, 0xba00, 0x00f0, 0, NULL); mi1320_camera_settings()
461 ctrl_out(gspca_dev, 0x40, 1, 0xba01, 0x00f1, 0, NULL); mi1320_camera_settings()
462 ctrl_out(gspca_dev, 0x40, 1, 0xba70, 0x00e2, 0, NULL); mi1320_camera_settings()
463 ctrl_out(gspca_dev, 0x40, 1, 0xba00 + hue * (hue < 6), 0x00f1, mi1320_camera_settings()
474 ctrl_out(gspca_dev, 0x40, 1, 0xba00, 0x00f0, 0, NULL); mi1320_camera_settings()
475 ctrl_out(gspca_dev, 0x40, 1, 0xba01, 0x00f1, 0, NULL); mi1320_camera_settings()
476 ctrl_out(gspca_dev, 0x40, 1, 0xba74, 0x0006, 0, NULL); mi1320_camera_settings()
477 ctrl_out(gspca_dev, 0x40, 1, 0xba80 + backlight, 0x00f1, mi1320_camera_settings()
485 ctrl_out(gspca_dev, 0x40, 1, 0xba00, 0x00f0, 0, NULL); mi1320_camera_settings()
486 ctrl_out(gspca_dev, 0x40, 1, 0xba01, 0x00f1, 0, NULL); mi1320_camera_settings()
487 ctrl_out(gspca_dev, 0x40, 1, 0xba70, 0x00e2, 0, NULL); mi1320_camera_settings()
488 ctrl_out(gspca_dev, 0x40, 1, 0xba00 + hue * (hue < 6), 0x00f1, mi1320_camera_settings()
498 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 4, dat_hvflip1); mi1320_camera_settings()
499 ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 4, dat_hvflip2); mi1320_camera_settings()
508 ctrl_out(gspca_dev, 0x40, 1, 0xba00, 0x00f0, 0, NULL); mi1320_camera_settings()
509 ctrl_out(gspca_dev, 0x40, 1, 0xba01, 0x00f1, 0, NULL); mi1320_camera_settings()
510 ctrl_out(gspca_dev, 0x40, 1, 0xba04 , 0x003b, 0, NULL); mi1320_camera_settings()
511 ctrl_out(gspca_dev, 0x40, 1, 0xba02 + gam, 0x00f1, 0, NULL); mi1320_camera_settings()
519 ctrl_out(gspca_dev, 0x40, 1, 0xba00, 0x00f0, 0, NULL); mi1320_camera_settings()
520 ctrl_out(gspca_dev, 0x40, 1, 0xba01, 0x00f1, 0, NULL); mi1320_camera_settings()
521 ctrl_out(gspca_dev, 0x40, 1, 0xba00 + tbl_cntr1[cntr], 0x0035, mi1320_camera_settings()
523 ctrl_out(gspca_dev, 0x40, 1, 0xba00 + tbl_cntr2[cntr], 0x00f1, mi1320_camera_settings()
530 static void mi1320_post_unset_alt(struct gspca_dev *gspca_dev) mi1320_post_unset_alt() argument
532 ctrl_out(gspca_dev, 0x40, 5, 0x0000, 0x0000, 0, NULL); mi1320_post_unset_alt()
534 fetch_validx(gspca_dev, tbl_post_unset_alt, mi1320_post_unset_alt()
H A Dgl860-ov9655.c145 static int ov9655_init_at_startup(struct gspca_dev *gspca_dev);
146 static int ov9655_configure_alt(struct gspca_dev *gspca_dev);
147 static int ov9655_init_pre_alt(struct gspca_dev *gspca_dev);
148 static int ov9655_init_post_alt(struct gspca_dev *gspca_dev);
149 static void ov9655_post_unset_alt(struct gspca_dev *gspca_dev);
150 static int ov9655_camera_settings(struct gspca_dev *gspca_dev);
153 void ov9655_init_settings(struct gspca_dev *gspca_dev) ov9655_init_settings() argument
155 struct sd *sd = (struct sd *) gspca_dev; ov9655_init_settings()
187 static int ov9655_init_at_startup(struct gspca_dev *gspca_dev) ov9655_init_at_startup() argument
189 fetch_validx(gspca_dev, tbl_init_at_startup, ov9655_init_at_startup()
191 fetch_validx(gspca_dev, tbl_commmon, ARRAY_SIZE(tbl_commmon)); ov9655_init_at_startup()
192 /* ctrl_out(gspca_dev, 0x40, 11, 0x0000, 0x0000, 0, NULL);*/ ov9655_init_at_startup()
197 static int ov9655_init_pre_alt(struct gspca_dev *gspca_dev) ov9655_init_pre_alt() argument
199 struct sd *sd = (struct sd *) gspca_dev; ov9655_init_pre_alt()
204 fetch_validx(gspca_dev, tbl_commmon, ARRAY_SIZE(tbl_commmon)); ov9655_init_pre_alt()
206 ov9655_init_post_alt(gspca_dev); ov9655_init_pre_alt()
211 static int ov9655_init_post_alt(struct gspca_dev *gspca_dev) ov9655_init_post_alt() argument
213 s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; ov9655_init_post_alt()
218 ctrl_out(gspca_dev, 0x40, 5, 0x0001, 0x0000, 0, NULL); ov9655_init_post_alt()
222 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, ov9655_init_post_alt()
225 ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, ov9655_init_post_alt()
227 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, ov9655_init_post_alt()
230 n = fetch_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
233 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); ov9655_init_post_alt()
234 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
236 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); ov9655_init_post_alt()
237 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
239 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); ov9655_init_post_alt()
240 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
242 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); ov9655_init_post_alt()
243 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
245 ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post1); ov9655_init_post_alt()
246 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
249 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); ov9655_init_post_alt()
250 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
252 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); ov9655_init_post_alt()
253 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
255 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); ov9655_init_post_alt()
256 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
258 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); ov9655_init_post_alt()
259 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
261 ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post1); ov9655_init_post_alt()
262 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
265 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); ov9655_init_post_alt()
266 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
268 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); ov9655_init_post_alt()
269 keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ov9655_init_post_alt()
272 ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post1); ov9655_init_post_alt()
274 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 4, dat_post2); ov9655_init_post_alt()
275 ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post3); ov9655_init_post_alt()
277 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 4, dat_post4); ov9655_init_post_alt()
278 ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post5); ov9655_init_post_alt()
280 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 4, dat_post6); ov9655_init_post_alt()
281 ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post7); ov9655_init_post_alt()
283 ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post8); ov9655_init_post_alt()
285 ov9655_camera_settings(gspca_dev); ov9655_init_post_alt()
290 static int ov9655_configure_alt(struct gspca_dev *gspca_dev) ov9655_configure_alt() argument
292 s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; ov9655_configure_alt()
296 gspca_dev->alt = 1 + 1; ov9655_configure_alt()
300 gspca_dev->alt = 1 + 1; ov9655_configure_alt()
306 static int ov9655_camera_settings(struct gspca_dev *gspca_dev) ov9655_camera_settings() argument
308 struct sd *sd = (struct sd *) gspca_dev; ov9655_camera_settings()
321 ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_bright); ov9655_camera_settings()
332 static void ov9655_post_unset_alt(struct gspca_dev *gspca_dev) ov9655_post_unset_alt() argument
334 ctrl_out(gspca_dev, 0x40, 5, 0x0000, 0x0000, 0, NULL); ov9655_post_unset_alt()
335 ctrl_out(gspca_dev, 0x40, 1, 0x0061, 0x0000, 0, NULL); ov9655_post_unset_alt()
H A Dgl860-ov2640.c175 static int ov2640_init_at_startup(struct gspca_dev *gspca_dev);
176 static int ov2640_configure_alt(struct gspca_dev *gspca_dev);
177 static int ov2640_init_pre_alt(struct gspca_dev *gspca_dev);
178 static int ov2640_init_post_alt(struct gspca_dev *gspca_dev);
179 static void ov2640_post_unset_alt(struct gspca_dev *gspca_dev);
180 static int ov2640_camera_settings(struct gspca_dev *gspca_dev);
183 void ov2640_init_settings(struct gspca_dev *gspca_dev) ov2640_init_settings() argument
185 struct sd *sd = (struct sd *) gspca_dev; ov2640_init_settings()
219 static void common(struct gspca_dev *gspca_dev) common() argument
221 fetch_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common)); common()
224 static int ov2640_init_at_startup(struct gspca_dev *gspca_dev) ov2640_init_at_startup() argument
226 fetch_validx(gspca_dev, tbl_init_at_startup, ov2640_init_at_startup()
229 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, dat_init1); ov2640_init_at_startup()
231 common(gspca_dev); ov2640_init_at_startup()
233 ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0006, 1, c61); ov2640_init_at_startup()
235 ctrl_out(gspca_dev, 0x40, 1, 0x00ef, 0x0006, 0, NULL); ov2640_init_at_startup()
237 ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0000, 1, c51); ov2640_init_at_startup()
239 ctrl_out(gspca_dev, 0x40, 1, 0x0051, 0x0000, 0, NULL); ov2640_init_at_startup()
240 /* ctrl_out(gspca_dev, 0x40, 11, 0x0000, 0x0000, 0, NULL); */ ov2640_init_at_startup()
245 static int ov2640_init_pre_alt(struct gspca_dev *gspca_dev) ov2640_init_pre_alt() argument
247 struct sd *sd = (struct sd *) gspca_dev; ov2640_init_pre_alt()
262 ov2640_init_post_alt(gspca_dev); ov2640_init_pre_alt()
267 static int ov2640_init_post_alt(struct gspca_dev *gspca_dev) ov2640_init_post_alt() argument
269 s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; ov2640_init_post_alt()
272 ctrl_out(gspca_dev, 0x40, 5, 0x0001, 0x0000, 0, NULL); ov2640_init_post_alt()
274 n = fetch_validx(gspca_dev, tbl_sensor_settings_common1, ov2640_init_post_alt()
276 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, dat_post); ov2640_init_post_alt()
277 common(gspca_dev); ov2640_init_post_alt()
278 keep_on_fetching_validx(gspca_dev, tbl_sensor_settings_common1, ov2640_init_post_alt()
283 n = fetch_validx(gspca_dev, tbl_640, ARRAY_SIZE(tbl_640)); ov2640_init_post_alt()
284 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, dat_640); ov2640_init_post_alt()
288 n = fetch_validx(gspca_dev, tbl_800, ARRAY_SIZE(tbl_800)); ov2640_init_post_alt()
289 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, dat_800); ov2640_init_post_alt()
294 n = fetch_validx(gspca_dev, tbl_big1, ARRAY_SIZE(tbl_big1)); ov2640_init_post_alt()
297 n = fetch_validx(gspca_dev, tbl_big2, ov2640_init_post_alt()
300 ctrl_out(gspca_dev, 0x40, 1, 0x601d, 0x0086, 0, NULL); ov2640_init_post_alt()
301 ctrl_out(gspca_dev, 0x40, 1, 0x6001, 0x00d7, 0, NULL); ov2640_init_post_alt()
302 ctrl_out(gspca_dev, 0x40, 1, 0x6082, 0x00d3, 0, NULL); ov2640_init_post_alt()
305 n = fetch_validx(gspca_dev, tbl_big3, ARRAY_SIZE(tbl_big3)); ov2640_init_post_alt()
308 ctrl_out(gspca_dev, 0x40, 1, 0x6001, 0x00ff, 0, NULL); ov2640_init_post_alt()
309 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, ov2640_init_post_alt()
312 ctrl_out(gspca_dev, 0x40, 1, 0x6020, 0x008c, 0, NULL); ov2640_init_post_alt()
313 ctrl_out(gspca_dev, 0x40, 1, 0x6001, 0x00ff, 0, NULL); ov2640_init_post_alt()
314 ctrl_out(gspca_dev, 0x40, 1, 0x6076, 0x0018, 0, NULL); ov2640_init_post_alt()
315 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, ov2640_init_post_alt()
321 n = fetch_validx(gspca_dev, tbl_sensor_settings_common2, ov2640_init_post_alt()
324 ov2640_camera_settings(gspca_dev); ov2640_init_post_alt()
329 static int ov2640_configure_alt(struct gspca_dev *gspca_dev) ov2640_configure_alt() argument
331 s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; ov2640_configure_alt()
335 gspca_dev->alt = 3 + 1; ov2640_configure_alt()
341 gspca_dev->alt = 1 + 1; ov2640_configure_alt()
347 static int ov2640_camera_settings(struct gspca_dev *gspca_dev) ov2640_camera_settings() argument
349 struct sd *sd = (struct sd *) gspca_dev; ov2640_camera_settings()
367 ctrl_out(gspca_dev, 0x40, 1, 0x6001 , 0x00ff, ov2640_camera_settings()
369 ctrl_out(gspca_dev, 0x40, 1, 0x601e + backlight , 0x0024, ov2640_camera_settings()
371 ctrl_out(gspca_dev, 0x40, 1, 0x601e + backlight - 10, 0x0025, ov2640_camera_settings()
380 ctrl_out(gspca_dev, 0x40, 1, 0x6000 , 0x00ff, 0, NULL); ov2640_camera_settings()
381 ctrl_out(gspca_dev, 0x40, 1, 0x6009 , 0x007c, 0, NULL); ov2640_camera_settings()
382 ctrl_out(gspca_dev, 0x40, 1, 0x6000 + bright, 0x007d, 0, NULL); ov2640_camera_settings()
390 ctrl_out(gspca_dev, 0x40, 1, 0x6000 , 0x00ff, 0, NULL); ov2640_camera_settings()
391 ctrl_out(gspca_dev, 0x40, 1, 0x6003 , 0x007c, 0, NULL); ov2640_camera_settings()
392 ctrl_out(gspca_dev, 0x40, 1, 0x6000 + wbal, 0x007d, 0, NULL); ov2640_camera_settings()
400 ctrl_out(gspca_dev, 0x40, 1, 0x6000 , 0x00ff, 0, NULL); ov2640_camera_settings()
401 ctrl_out(gspca_dev, 0x40, 1, 0x6007 , 0x007c, 0, NULL); ov2640_camera_settings()
402 ctrl_out(gspca_dev, 0x40, 1, 0x6000 + cntr, 0x007d, 0, NULL); ov2640_camera_settings()
410 ctrl_out(gspca_dev, 0x40, 1, 0x6000 , 0x00ff, 0, NULL); ov2640_camera_settings()
411 ctrl_out(gspca_dev, 0x40, 1, 0x6001 , 0x007c, 0, NULL); ov2640_camera_settings()
412 ctrl_out(gspca_dev, 0x40, 1, 0x6000 + sat, 0x007d, 0, NULL); ov2640_camera_settings()
420 ctrl_out(gspca_dev, 0x40, 1, 0x6000 , 0x00ff, 0, NULL); ov2640_camera_settings()
421 ctrl_out(gspca_dev, 0x40, 1, 0x6001 , 0x0092, 0, NULL); ov2640_camera_settings()
422 ctrl_out(gspca_dev, 0x40, 1, 0x60c0 + sharp, 0x0093, 0, NULL); ov2640_camera_settings()
430 ctrl_out(gspca_dev, 0x40, 1, 0x6000 , 0x00ff, 0, NULL); ov2640_camera_settings()
431 ctrl_out(gspca_dev, 0x40, 1, 0x6002 , 0x007c, 0, NULL); ov2640_camera_settings()
432 ctrl_out(gspca_dev, 0x40, 1, 0x6000 + hue * (hue < 255), 0x007d, ov2640_camera_settings()
445 ctrl_out(gspca_dev, 0x40, 1, 0x6000 , 0x00ff, 0, NULL); ov2640_camera_settings()
446 ctrl_out(gspca_dev, 0x40, 1, 0x6008 , 0x007c, 0, NULL); ov2640_camera_settings()
447 ctrl_out(gspca_dev, 0x40, 1, 0x6000 + gam, 0x007d, 0, NULL); ov2640_camera_settings()
455 ctrl_out(gspca_dev, 0x40, 1, 0x6001, 0x00ff, 0, NULL); ov2640_camera_settings()
456 ctrl_out(gspca_dev, 0x40, 1, 0x6000, 0x8004, 0, NULL); ov2640_camera_settings()
457 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x8004, 1, c28); ov2640_camera_settings()
458 ctrl_out(gspca_dev, 0x40, 1, 0x6028 + mirror, 0x0004, 0, NULL); ov2640_camera_settings()
461 ctrl_out(gspca_dev, 0x40, 1, 0x6001, 0x00ff, 0, NULL); ov2640_camera_settings()
462 ctrl_out(gspca_dev, 0x40, 1, 0x6000, 0x8004, 0, NULL); ov2640_camera_settings()
463 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x8004, 1, ca8); ov2640_camera_settings()
464 ctrl_out(gspca_dev, 0x40, 1, 0x6028 + flip, 0x0004, 0, NULL); ov2640_camera_settings()
466 ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0000, 1, c50); ov2640_camera_settings()
472 ctrl_out(gspca_dev, 0x40, 1, 0x6001 , 0x00ff, ov2640_camera_settings()
474 ctrl_out(gspca_dev, 0x40, 1, 0x601e + backlight , 0x0024, ov2640_camera_settings()
476 ctrl_out(gspca_dev, 0x40, 1, 0x601e + backlight - 10, 0x0025, ov2640_camera_settings()
483 static void ov2640_post_unset_alt(struct gspca_dev *gspca_dev) ov2640_post_unset_alt() argument
485 ctrl_out(gspca_dev, 0x40, 5, 0x0000, 0x0000, 0, NULL); ov2640_post_unset_alt()
487 fetch_validx(gspca_dev, tbl_post_unset_alt, ov2640_post_unset_alt()
H A Dgl860.c33 static void (*dev_init_settings)(struct gspca_dev *gspca_dev);
35 static int sd_config(struct gspca_dev *gspca_dev,
37 static int sd_init(struct gspca_dev *gspca_dev);
38 static int sd_isoc_init(struct gspca_dev *gspca_dev);
39 static int sd_start(struct gspca_dev *gspca_dev);
40 static void sd_stop0(struct gspca_dev *gspca_dev);
41 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
43 static void sd_callback(struct gspca_dev *gspca_dev);
45 static int gl860_guess_sensor(struct gspca_dev *gspca_dev,
63 struct gspca_dev *gspca_dev = sd_s_ctrl() local
64 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); sd_s_ctrl()
65 struct sd *sd = (struct sd *) gspca_dev; sd_s_ctrl()
105 if (gspca_dev->streaming) sd_s_ctrl()
115 static int sd_init_controls(struct gspca_dev *gspca_dev) sd_init_controls() argument
117 struct sd *sd = (struct sd *) gspca_dev; sd_init_controls()
118 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; sd_init_controls()
120 gspca_dev->vdev.ctrl_handler = hdl; sd_init_controls()
328 static int sd_config(struct gspca_dev *gspca_dev, sd_config() argument
331 struct sd *sd = (struct sd *) gspca_dev; sd_config()
353 if (gl860_guess_sensor(gspca_dev, vendor_id, product_id) == -1) sd_config()
356 cam = &gspca_dev->cam; sd_config()
360 gspca_dev->sd_desc = &sd_desc_mi1320; sd_config()
367 gspca_dev->sd_desc = &sd_desc_mi2020; sd_config()
374 gspca_dev->sd_desc = &sd_desc_ov2640; sd_config()
381 gspca_dev->sd_desc = &sd_desc_ov9655; sd_config()
388 dev_init_settings(gspca_dev); sd_config()
390 ((struct sd *) gspca_dev)->vcur.AC50Hz = AC50Hz; sd_config()
396 static int sd_init(struct gspca_dev *gspca_dev) sd_init() argument
398 struct sd *sd = (struct sd *) gspca_dev; sd_init()
400 return sd->dev_init_at_startup(gspca_dev); sd_init()
404 static int sd_isoc_init(struct gspca_dev *gspca_dev) sd_isoc_init() argument
406 struct sd *sd = (struct sd *) gspca_dev; sd_isoc_init()
408 return sd->dev_configure_alt(gspca_dev); sd_isoc_init()
412 static int sd_start(struct gspca_dev *gspca_dev) sd_start() argument
414 struct sd *sd = (struct sd *) gspca_dev; sd_start()
416 return sd->dev_init_pre_alt(gspca_dev); sd_start()
420 static void sd_stop0(struct gspca_dev *gspca_dev) sd_stop0() argument
422 struct sd *sd = (struct sd *) gspca_dev; sd_stop0()
424 if (!sd->gspca_dev.present) sd_stop0()
427 return sd->dev_post_unset_alt(gspca_dev); sd_stop0()
431 static void sd_pkt_scan(struct gspca_dev *gspca_dev, sd_pkt_scan() argument
434 struct sd *sd = (struct sd *) gspca_dev; sd_pkt_scan()
437 s32 mode = (s32) gspca_dev->curr_mode; sd_pkt_scan()
439 sd->swapRB * (gspca_dev->cam.cam_mode[mode].bytesperline + 1); sd_pkt_scan()
444 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); sd_pkt_scan()
448 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); sd_pkt_scan()
462 gspca_frame_add(gspca_dev, sd_pkt_scan()
471 static void sd_callback(struct gspca_dev *gspca_dev) sd_callback() argument
473 struct sd *sd = (struct sd *) gspca_dev; sd_callback()
480 ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0000, 1, (void *)&state); sd_callback()
507 sd->dev_camera_settings(gspca_dev); sd_callback()
550 int gl860_RTx(struct gspca_dev *gspca_dev, gl860_RTx() argument
554 struct usb_device *udev = gspca_dev->dev; gl860_RTx()
559 memcpy(gspca_dev->usb_buf, pdata, len); gl860_RTx()
562 gspca_dev->usb_buf, gl860_RTx()
572 gspca_dev->usb_buf, gl860_RTx()
574 memcpy(pdata, gspca_dev->usb_buf, len); gl860_RTx()
592 int fetch_validx(struct gspca_dev *gspca_dev, struct validx *tbl, int len) fetch_validx() argument
598 ctrl_out(gspca_dev, 0x40, 1, tbl[n].val, fetch_validx()
608 int keep_on_fetching_validx(struct gspca_dev *gspca_dev, struct validx *tbl, keep_on_fetching_validx() argument
613 ctrl_out(gspca_dev, 0x40, 1, tbl[n].val, tbl[n].idx, keep_on_fetching_validx()
623 void fetch_idxdata(struct gspca_dev *gspca_dev, struct idxdata *tbl, int len) fetch_idxdata() argument
629 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, tbl[n].idx, fetch_idxdata()
636 static int gl860_guess_sensor(struct gspca_dev *gspca_dev, gl860_guess_sensor() argument
639 struct sd *sd = (struct sd *) gspca_dev; gl860_guess_sensor()
646 ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0004, 1, &probe); gl860_guess_sensor()
647 ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0004, 1, &probe); gl860_guess_sensor()
649 ctrl_out(gspca_dev, 0x40, 1, 0x0000, 0x0000, 0, NULL); gl860_guess_sensor()
651 ctrl_out(gspca_dev, 0x40, 1, 0x0010, 0x0010, 0, NULL); gl860_guess_sensor()
653 ctrl_out(gspca_dev, 0x40, 1, 0x0008, 0x00c0, 0, NULL); gl860_guess_sensor()
655 ctrl_out(gspca_dev, 0x40, 1, 0x0001, 0x00c1, 0, NULL); gl860_guess_sensor()
657 ctrl_out(gspca_dev, 0x40, 1, 0x0001, 0x00c2, 0, NULL); gl860_guess_sensor()
659 ctrl_out(gspca_dev, 0x40, 1, 0x0020, 0x0006, 0, NULL); gl860_guess_sensor()
661 ctrl_out(gspca_dev, 0x40, 1, 0x006a, 0x000d, 0, NULL); gl860_guess_sensor()
667 ctrl_out(gspca_dev, 0x40, 1, 0x0040, 0x0000, 0, NULL); gl860_guess_sensor()
669 ctrl_out(gspca_dev, 0x40, 1, 0x0063, 0x0006, 0, NULL); gl860_guess_sensor()
671 ctrl_out(gspca_dev, 0x40, 1, 0x7a00, 0x8030, 0, NULL); gl860_guess_sensor()
673 ctrl_in(gspca_dev, 0xc0, 2, 0x7a00, 0x8030, 1, &probe); gl860_guess_sensor()
685 ctrl_out(gspca_dev, 0x40, 1, 0x0040, 0x0000, gl860_guess_sensor()
688 ctrl_out(gspca_dev, 0x40, 1, 0x6000, 0x800a, gl860_guess_sensor()
693 ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x800a, gl860_guess_sensor()
H A Dgl860-mi2020.c355 static int mi2020_init_at_startup(struct gspca_dev *gspca_dev);
356 static int mi2020_configure_alt(struct gspca_dev *gspca_dev);
357 static int mi2020_init_pre_alt(struct gspca_dev *gspca_dev);
358 static int mi2020_init_post_alt(struct gspca_dev *gspca_dev);
359 static void mi2020_post_unset_alt(struct gspca_dev *gspca_dev);
360 static int mi2020_camera_settings(struct gspca_dev *gspca_dev);
363 void mi2020_init_settings(struct gspca_dev *gspca_dev) mi2020_init_settings() argument
365 struct sd *sd = (struct sd *) gspca_dev; mi2020_init_settings()
400 static void common(struct gspca_dev *gspca_dev) common() argument
402 fetch_validx(gspca_dev, tbl_common_0B, ARRAY_SIZE(tbl_common_0B)); common()
403 fetch_idxdata(gspca_dev, tbl_common_3B, ARRAY_SIZE(tbl_common_3B)); common()
404 ctrl_out(gspca_dev, 0x40, 1, 0x0041, 0x0000, 0, NULL); common()
407 static int mi2020_init_at_startup(struct gspca_dev *gspca_dev) mi2020_init_at_startup() argument
411 ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0004, 1, &c); mi2020_init_at_startup()
412 ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0004, 1, &c); mi2020_init_at_startup()
414 fetch_validx(gspca_dev, tbl_init_at_startup, mi2020_init_at_startup()
417 ctrl_out(gspca_dev, 0x40, 1, 0x7a00, 0x8030, 0, NULL); mi2020_init_at_startup()
418 ctrl_in(gspca_dev, 0xc0, 2, 0x7a00, 0x8030, 1, &c); mi2020_init_at_startup()
420 common(gspca_dev); mi2020_init_at_startup()
423 /* ctrl_out(gspca_dev, 0x40, 11, 0x0000, 0x0000, 0, NULL); */ mi2020_init_at_startup()
425 ctrl_out(gspca_dev, 0x40, 1, 0x0001, 0x0000, 0, NULL); mi2020_init_at_startup()
430 static int mi2020_init_pre_alt(struct gspca_dev *gspca_dev) mi2020_init_pre_alt() argument
432 struct sd *sd = (struct sd *) gspca_dev; mi2020_init_pre_alt()
446 mi2020_init_post_alt(gspca_dev); mi2020_init_pre_alt()
451 static int mi2020_init_post_alt(struct gspca_dev *gspca_dev) mi2020_init_post_alt() argument
453 struct sd *sd = (struct sd *) gspca_dev; mi2020_init_post_alt()
454 s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; mi2020_init_post_alt()
490 ctrl_out(gspca_dev, 0x40, 5, 0x0001, 0x0000, 0, NULL); mi2020_init_post_alt()
493 common(gspca_dev); mi2020_init_post_alt()
496 ctrl_out(gspca_dev, 0x40, 1, 0x0010, 0x0010, 0, NULL); mi2020_init_post_alt()
497 ctrl_out(gspca_dev, 0x40, 1, 0x0003, 0x00c1, 0, NULL); mi2020_init_post_alt()
498 ctrl_out(gspca_dev, 0x40, 1, 0x0042, 0x00c2, 0, NULL); mi2020_init_post_alt()
499 ctrl_out(gspca_dev, 0x40, 1, 0x006a, 0x000d, 0, NULL); mi2020_init_post_alt()
505 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, mi2020_init_post_alt()
508 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, mi2020_init_post_alt()
511 fetch_idxdata(gspca_dev, tbl_init_post_alt_low1, mi2020_init_post_alt()
515 fetch_idxdata(gspca_dev, tbl_init_post_alt_low2, mi2020_init_post_alt()
518 fetch_idxdata(gspca_dev, tbl_init_post_alt_low3, mi2020_init_post_alt()
521 ctrl_out(gspca_dev, 0x40, 1, 0x0010, 0x0010, 0, NULL); mi2020_init_post_alt()
522 ctrl_out(gspca_dev, 0x40, 1, 0x0000, 0x00c1, 0, NULL); mi2020_init_post_alt()
523 ctrl_out(gspca_dev, 0x40, 1, 0x0041, 0x00c2, 0, NULL); mi2020_init_post_alt()
530 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, mi2020_init_post_alt()
532 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, mi2020_init_post_alt()
534 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, mi2020_init_post_alt()
536 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, mi2020_init_post_alt()
538 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, mi2020_init_post_alt()
541 ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, mi2020_init_post_alt()
543 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, mi2020_init_post_alt()
545 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, mi2020_init_post_alt()
547 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, mi2020_init_post_alt()
549 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, mi2020_init_post_alt()
553 fetch_idxdata(gspca_dev, tbl_init_post_alt_big, mi2020_init_post_alt()
556 ctrl_out(gspca_dev, 0x40, 1, 0x0001, 0x0010, 0, NULL); mi2020_init_post_alt()
557 ctrl_out(gspca_dev, 0x40, 1, 0x0000, 0x00c1, 0, NULL); mi2020_init_post_alt()
558 ctrl_out(gspca_dev, 0x40, 1, 0x0041, 0x00c2, 0, NULL); mi2020_init_post_alt()
562 ctrl_out(gspca_dev, 0x40, 1, 0x0040, 0x0000, 0, NULL); mi2020_init_post_alt()
566 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_freq1); mi2020_init_post_alt()
567 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_freq2); mi2020_init_post_alt()
570 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi1); mi2020_init_post_alt()
571 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi2); mi2020_init_post_alt()
572 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi3); mi2020_init_post_alt()
573 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi4); mi2020_init_post_alt()
574 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_wbal1); mi2020_init_post_alt()
575 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_wbal2); mi2020_init_post_alt()
576 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi5); mi2020_init_post_alt()
577 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi6); mi2020_init_post_alt()
579 ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0000, 1, &c); mi2020_init_post_alt()
581 fetch_idxdata(gspca_dev, tbl_init_post_alt_3B, mi2020_init_post_alt()
585 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip1); mi2020_init_post_alt()
586 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip2); mi2020_init_post_alt()
587 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip3); mi2020_init_post_alt()
588 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip4); mi2020_init_post_alt()
589 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip5); mi2020_init_post_alt()
590 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip6); mi2020_init_post_alt()
594 fetch_idxdata(gspca_dev, tbl_middle_hvflip_low, mi2020_init_post_alt()
597 fetch_idxdata(gspca_dev, tbl_middle_hvflip_big, mi2020_init_post_alt()
600 fetch_idxdata(gspca_dev, tbl_end_hvflip, mi2020_init_post_alt()
610 mi2020_camera_settings(gspca_dev); mi2020_init_post_alt()
615 static int mi2020_configure_alt(struct gspca_dev *gspca_dev) mi2020_configure_alt() argument
617 s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; mi2020_configure_alt()
621 gspca_dev->alt = 3 + 1; mi2020_configure_alt()
627 gspca_dev->alt = 1 + 1; mi2020_configure_alt()
633 static int mi2020_camera_settings(struct gspca_dev *gspca_dev) mi2020_camera_settings() argument
635 struct sd *sd = (struct sd *) gspca_dev; mi2020_camera_settings()
636 s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; mi2020_camera_settings()
671 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_freq1); mi2020_camera_settings()
672 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_freq2); mi2020_camera_settings()
693 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi1); mi2020_camera_settings()
694 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi2); mi2020_camera_settings()
695 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi3); mi2020_camera_settings()
696 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi4); mi2020_camera_settings()
697 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_wbal1); mi2020_camera_settings()
698 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_wbal2); mi2020_camera_settings()
699 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi5); mi2020_camera_settings()
700 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi6); mi2020_camera_settings()
710 fetch_idxdata(gspca_dev, tbl_init_post_alt_3B, mi2020_camera_settings()
713 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip1); mi2020_camera_settings()
714 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip2); mi2020_camera_settings()
715 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip3); mi2020_camera_settings()
716 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip4); mi2020_camera_settings()
717 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip5); mi2020_camera_settings()
718 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_hvflip6); mi2020_camera_settings()
722 fetch_idxdata(gspca_dev, tbl_middle_hvflip_low, mi2020_camera_settings()
725 fetch_idxdata(gspca_dev, tbl_middle_hvflip_big, mi2020_camera_settings()
728 fetch_idxdata(gspca_dev, tbl_end_hvflip, mi2020_camera_settings()
738 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_bright1); mi2020_camera_settings()
739 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_bright2); mi2020_camera_settings()
740 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_bright3); mi2020_camera_settings()
741 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_bright4); mi2020_camera_settings()
742 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_bright5); mi2020_camera_settings()
743 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_bright6); mi2020_camera_settings()
759 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi1); mi2020_camera_settings()
760 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi2); mi2020_camera_settings()
761 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi3); mi2020_camera_settings()
762 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi4); mi2020_camera_settings()
763 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi5); mi2020_camera_settings()
764 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi6); mi2020_camera_settings()
775 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi1); mi2020_camera_settings()
776 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi2); mi2020_camera_settings()
777 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi3); mi2020_camera_settings()
778 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi4); mi2020_camera_settings()
779 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi5); mi2020_camera_settings()
780 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, dat_multi6); mi2020_camera_settings()
789 ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0032, 3, dat_sharp); mi2020_camera_settings()
800 static void mi2020_post_unset_alt(struct gspca_dev *gspca_dev) mi2020_post_unset_alt() argument
802 ctrl_out(gspca_dev, 0x40, 5, 0x0000, 0x0000, 0, NULL); mi2020_post_unset_alt()
804 ctrl_out(gspca_dev, 0x40, 1, 0x0001, 0x0000, 0, NULL); mi2020_post_unset_alt()
/linux-4.4.14/drivers/media/usb/gspca/m5602/
H A Dm5602_core.c44 struct gspca_dev *gspca_dev = (struct gspca_dev *) sd; m5602_read_bridge() local
45 struct usb_device *udev = sd->gspca_dev.dev; m5602_read_bridge()
46 __u8 *buf = sd->gspca_dev.usb_buf; m5602_read_bridge()
66 struct gspca_dev *gspca_dev = (struct gspca_dev *) sd; m5602_write_bridge() local
67 struct usb_device *udev = sd->gspca_dev.dev; m5602_write_bridge()
68 __u8 *buf = sd->gspca_dev.usb_buf; m5602_write_bridge()
103 struct gspca_dev *gspca_dev = (struct gspca_dev *) sd; m5602_read_sensor() local
153 struct gspca_dev *gspca_dev = (struct gspca_dev *) sd; m5602_write_sensor() local
154 struct usb_device *udev = sd->gspca_dev.dev; m5602_write_sensor()
155 __u8 *buf = sd->gspca_dev.usb_buf; m5602_write_sensor()
244 static int m5602_configure(struct gspca_dev *gspca_dev,
247 static int m5602_init(struct gspca_dev *gspca_dev) m5602_init() argument
249 struct sd *sd = (struct sd *) gspca_dev; m5602_init()
259 static int m5602_init_controls(struct gspca_dev *gspca_dev) m5602_init_controls() argument
261 struct sd *sd = (struct sd *) gspca_dev; m5602_init_controls()
269 static int m5602_start_transfer(struct gspca_dev *gspca_dev) m5602_start_transfer() argument
271 struct sd *sd = (struct sd *) gspca_dev; m5602_start_transfer()
272 __u8 *buf = sd->gspca_dev.usb_buf; m5602_start_transfer()
282 err = usb_control_msg(gspca_dev->dev, m5602_start_transfer()
283 usb_sndctrlpipe(gspca_dev->dev, 0), m5602_start_transfer()
291 static void m5602_urb_complete(struct gspca_dev *gspca_dev, m5602_urb_complete() argument
294 struct sd *sd = (struct sd *) gspca_dev; m5602_urb_complete()
312 gspca_frame_add(gspca_dev, LAST_PACKET, m5602_urb_complete()
317 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); m5602_urb_complete()
325 cur_frame_len = gspca_dev->image_len; m5602_urb_complete()
330 if (cur_frame_len + len <= gspca_dev->frsz) { m5602_urb_complete()
334 gspca_frame_add(gspca_dev, INTER_PACKET, m5602_urb_complete()
338 gspca_frame_add(gspca_dev, INTER_PACKET, data, m5602_urb_complete()
339 gspca_dev->frsz - cur_frame_len); m5602_urb_complete()
344 static void m5602_stop_transfer(struct gspca_dev *gspca_dev) m5602_stop_transfer() argument
346 struct sd *sd = (struct sd *) gspca_dev; m5602_stop_transfer()
365 static int m5602_configure(struct gspca_dev *gspca_dev, m5602_configure() argument
368 struct sd *sd = (struct sd *) gspca_dev; m5602_configure()
372 cam = &gspca_dev->cam; m5602_configure()
401 struct gspca_dev *gspca_dev = usb_get_intfdata(intf); m5602_disconnect() local
402 struct sd *sd = (struct sd *) gspca_dev; m5602_disconnect()
H A Dm5602_po1030.c58 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; po1030_probe() local
92 sd->gspca_dev.cam.cam_mode = po1030_modes; po1030_probe()
93 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(po1030_modes); po1030_probe()
135 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; po1030_init_controls()
137 sd->gspca_dev.vdev.ctrl_handler = hdl; po1030_init_controls()
178 struct cam *cam = &sd->gspca_dev.cam; po1030_start()
180 int width = cam->cam_mode[sd->gspca_dev.curr_mode].width; po1030_start()
181 int height = cam->cam_mode[sd->gspca_dev.curr_mode].height; po1030_start()
182 int ver_offs = cam->cam_mode[sd->gspca_dev.curr_mode].priv; po1030_start()
303 static int po1030_set_exposure(struct gspca_dev *gspca_dev, __s32 val) po1030_set_exposure() argument
305 struct sd *sd = (struct sd *) gspca_dev; po1030_set_exposure()
329 static int po1030_set_gain(struct gspca_dev *gspca_dev, __s32 val) po1030_set_gain() argument
331 struct sd *sd = (struct sd *) gspca_dev; po1030_set_gain()
342 static int po1030_set_hvflip(struct gspca_dev *gspca_dev) po1030_set_hvflip() argument
344 struct sd *sd = (struct sd *) gspca_dev; po1030_set_hvflip()
362 static int po1030_set_red_balance(struct gspca_dev *gspca_dev, __s32 val) po1030_set_red_balance() argument
364 struct sd *sd = (struct sd *) gspca_dev; po1030_set_red_balance()
375 static int po1030_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val) po1030_set_blue_balance() argument
377 struct sd *sd = (struct sd *) gspca_dev; po1030_set_blue_balance()
389 static int po1030_set_green_balance(struct gspca_dev *gspca_dev, __s32 val) po1030_set_green_balance() argument
391 struct sd *sd = (struct sd *) gspca_dev; po1030_set_green_balance()
407 static int po1030_set_auto_white_balance(struct gspca_dev *gspca_dev, po1030_set_auto_white_balance() argument
410 struct sd *sd = (struct sd *) gspca_dev; po1030_set_auto_white_balance()
424 static int po1030_set_auto_exposure(struct gspca_dev *gspca_dev, po1030_set_auto_exposure() argument
427 struct sd *sd = (struct sd *) gspca_dev; po1030_set_auto_exposure()
448 struct gspca_dev *gspca_dev = po1030_s_ctrl() local
449 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); po1030_s_ctrl()
450 struct sd *sd = (struct sd *) gspca_dev; po1030_s_ctrl()
453 if (!gspca_dev->streaming) po1030_s_ctrl()
458 err = po1030_set_auto_white_balance(gspca_dev, ctrl->val); po1030_s_ctrl()
461 err = po1030_set_green_balance(gspca_dev, sd->green_bal->val); po1030_s_ctrl()
464 err = po1030_set_red_balance(gspca_dev, sd->red_bal->val); po1030_s_ctrl()
467 err = po1030_set_blue_balance(gspca_dev, sd->blue_bal->val); po1030_s_ctrl()
470 err = po1030_set_auto_exposure(gspca_dev, ctrl->val); po1030_s_ctrl()
473 err = po1030_set_exposure(gspca_dev, sd->expo->val); po1030_s_ctrl()
476 err = po1030_set_gain(gspca_dev, ctrl->val); po1030_s_ctrl()
479 err = po1030_set_hvflip(gspca_dev); po1030_s_ctrl()
H A Dm5602_mt9m111.c59 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; mt9m111_probe() local
98 sd->gspca_dev.cam.cam_mode = mt9m111_modes; mt9m111_probe()
99 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(mt9m111_modes); mt9m111_probe()
132 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; mt9m111_init_controls()
134 sd->gspca_dev.vdev.ctrl_handler = hdl; mt9m111_init_controls()
172 struct cam *cam = &sd->gspca_dev.cam; mt9m111_start()
173 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; mt9m111_start() local
175 int width = cam->cam_mode[sd->gspca_dev.curr_mode].width - 1; mt9m111_start()
176 int height = cam->cam_mode[sd->gspca_dev.curr_mode].height; mt9m111_start()
249 static int mt9m111_set_hvflip(struct gspca_dev *gspca_dev) mt9m111_set_hvflip() argument
253 struct sd *sd = (struct sd *) gspca_dev; mt9m111_set_hvflip()
269 if (gspca_dev->pixfmt.width == 640) { mt9m111_set_hvflip()
283 static int mt9m111_set_auto_white_balance(struct gspca_dev *gspca_dev, mt9m111_set_auto_white_balance() argument
286 struct sd *sd = (struct sd *) gspca_dev; mt9m111_set_auto_white_balance()
302 static int mt9m111_set_gain(struct gspca_dev *gspca_dev, __s32 val) mt9m111_set_gain() argument
306 struct sd *sd = (struct sd *) gspca_dev; mt9m111_set_gain()
340 static int mt9m111_set_green_balance(struct gspca_dev *gspca_dev, __s32 val) mt9m111_set_green_balance() argument
344 struct sd *sd = (struct sd *) gspca_dev; mt9m111_set_green_balance()
359 static int mt9m111_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val) mt9m111_set_blue_balance() argument
362 struct sd *sd = (struct sd *) gspca_dev; mt9m111_set_blue_balance()
373 static int mt9m111_set_red_balance(struct gspca_dev *gspca_dev, __s32 val) mt9m111_set_red_balance() argument
376 struct sd *sd = (struct sd *) gspca_dev; mt9m111_set_red_balance()
389 struct gspca_dev *gspca_dev = mt9m111_s_ctrl() local
390 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); mt9m111_s_ctrl()
391 struct sd *sd = (struct sd *) gspca_dev; mt9m111_s_ctrl()
394 if (!gspca_dev->streaming) mt9m111_s_ctrl()
399 err = mt9m111_set_auto_white_balance(gspca_dev, ctrl->val); mt9m111_s_ctrl()
402 err = mt9m111_set_green_balance(gspca_dev, sd->green_bal->val); mt9m111_s_ctrl()
405 err = mt9m111_set_red_balance(gspca_dev, sd->red_bal->val); mt9m111_s_ctrl()
408 err = mt9m111_set_blue_balance(gspca_dev, sd->blue_bal->val); mt9m111_s_ctrl()
411 err = mt9m111_set_gain(gspca_dev, ctrl->val); mt9m111_s_ctrl()
414 err = mt9m111_set_hvflip(gspca_dev); mt9m111_s_ctrl()
H A Dm5602_ov9650.c150 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov9650_probe() local
191 sd->gspca_dev.cam.cam_mode = ov9650_modes; ov9650_probe()
192 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(ov9650_modes); ov9650_probe()
219 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; ov9650_init_controls()
221 sd->gspca_dev.vdev.ctrl_handler = hdl; ov9650_init_controls()
266 struct cam *cam = &sd->gspca_dev.cam; ov9650_start()
268 int width = cam->cam_mode[sd->gspca_dev.curr_mode].width; ov9650_start()
269 int height = cam->cam_mode[sd->gspca_dev.curr_mode].height; ov9650_start()
270 int ver_offs = cam->cam_mode[sd->gspca_dev.curr_mode].priv; ov9650_start()
272 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; ov9650_start() local
403 static int ov9650_set_exposure(struct gspca_dev *gspca_dev, __s32 val) ov9650_set_exposure() argument
405 struct sd *sd = (struct sd *) gspca_dev; ov9650_set_exposure()
431 static int ov9650_set_gain(struct gspca_dev *gspca_dev, __s32 val) ov9650_set_gain() argument
435 struct sd *sd = (struct sd *) gspca_dev; ov9650_set_gain()
459 static int ov9650_set_red_balance(struct gspca_dev *gspca_dev, __s32 val) ov9650_set_red_balance() argument
463 struct sd *sd = (struct sd *) gspca_dev; ov9650_set_red_balance()
472 static int ov9650_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val) ov9650_set_blue_balance() argument
476 struct sd *sd = (struct sd *) gspca_dev; ov9650_set_blue_balance()
485 static int ov9650_set_hvflip(struct gspca_dev *gspca_dev) ov9650_set_hvflip() argument
489 struct sd *sd = (struct sd *) gspca_dev; ov9650_set_hvflip()
504 if (gspca_dev->streaming) ov9650_set_hvflip()
510 static int ov9650_set_auto_exposure(struct gspca_dev *gspca_dev, ov9650_set_auto_exposure() argument
515 struct sd *sd = (struct sd *) gspca_dev; ov9650_set_auto_exposure()
529 static int ov9650_set_auto_white_balance(struct gspca_dev *gspca_dev, ov9650_set_auto_white_balance() argument
534 struct sd *sd = (struct sd *) gspca_dev; ov9650_set_auto_white_balance()
548 static int ov9650_set_auto_gain(struct gspca_dev *gspca_dev, __s32 val) ov9650_set_auto_gain() argument
552 struct sd *sd = (struct sd *) gspca_dev; ov9650_set_auto_gain()
567 struct gspca_dev *gspca_dev = ov9650_s_ctrl() local
568 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); ov9650_s_ctrl()
569 struct sd *sd = (struct sd *) gspca_dev; ov9650_s_ctrl()
572 if (!gspca_dev->streaming) ov9650_s_ctrl()
577 err = ov9650_set_auto_white_balance(gspca_dev, ctrl->val); ov9650_s_ctrl()
580 err = ov9650_set_red_balance(gspca_dev, sd->red_bal->val); ov9650_s_ctrl()
583 err = ov9650_set_blue_balance(gspca_dev, sd->blue_bal->val); ov9650_s_ctrl()
586 err = ov9650_set_auto_exposure(gspca_dev, ctrl->val); ov9650_s_ctrl()
589 err = ov9650_set_exposure(gspca_dev, sd->expo->val); ov9650_s_ctrl()
592 err = ov9650_set_auto_gain(gspca_dev, ctrl->val); ov9650_s_ctrl()
595 err = ov9650_set_gain(gspca_dev, sd->gain->val); ov9650_s_ctrl()
598 err = ov9650_set_hvflip(gspca_dev); ov9650_s_ctrl()
H A Dm5602_ov7660.c91 sd->gspca_dev.cam.cam_mode = ov7660_modes; ov7660_probe()
92 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(ov7660_modes); ov7660_probe()
126 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; ov7660_init_controls()
128 sd->gspca_dev.vdev.ctrl_handler = hdl; ov7660_init_controls()
174 static int ov7660_set_gain(struct gspca_dev *gspca_dev, __s32 val) ov7660_set_gain() argument
178 struct sd *sd = (struct sd *) gspca_dev; ov7660_set_gain()
186 static int ov7660_set_auto_white_balance(struct gspca_dev *gspca_dev, ov7660_set_auto_white_balance() argument
191 struct sd *sd = (struct sd *) gspca_dev; ov7660_set_auto_white_balance()
205 static int ov7660_set_auto_gain(struct gspca_dev *gspca_dev, __s32 val) ov7660_set_auto_gain() argument
209 struct sd *sd = (struct sd *) gspca_dev; ov7660_set_auto_gain()
222 static int ov7660_set_auto_exposure(struct gspca_dev *gspca_dev, ov7660_set_auto_exposure() argument
227 struct sd *sd = (struct sd *) gspca_dev; ov7660_set_auto_exposure()
241 static int ov7660_set_hvflip(struct gspca_dev *gspca_dev) ov7660_set_hvflip() argument
245 struct sd *sd = (struct sd *) gspca_dev; ov7660_set_hvflip()
258 struct gspca_dev *gspca_dev = ov7660_s_ctrl() local
259 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); ov7660_s_ctrl()
260 struct sd *sd = (struct sd *) gspca_dev; ov7660_s_ctrl()
263 if (!gspca_dev->streaming) ov7660_s_ctrl()
268 err = ov7660_set_auto_white_balance(gspca_dev, ctrl->val); ov7660_s_ctrl()
271 err = ov7660_set_auto_exposure(gspca_dev, ctrl->val); ov7660_s_ctrl()
274 err = ov7660_set_auto_gain(gspca_dev, ctrl->val); ov7660_s_ctrl()
277 err = ov7660_set_gain(gspca_dev, sd->gain->val); ov7660_s_ctrl()
280 err = ov7660_set_hvflip(gspca_dev); ov7660_s_ctrl()
H A Dm5602_s5k83a.c47 static int s5k83a_set_flip_real(struct gspca_dev *gspca_dev,
54 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; s5k83a_probe() local
94 sd->gspca_dev.cam.cam_mode = s5k83a_modes; s5k83a_probe()
95 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(s5k83a_modes); s5k83a_probe()
143 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; s5k83a_init_controls()
145 sd->gspca_dev.vdev.ctrl_handler = hdl; s5k83a_init_controls()
181 if (mutex_lock_interruptible(&sd->gspca_dev.usb_lock)) rotation_thread_function()
196 s5k83a_set_flip_real((struct gspca_dev *) sd, rotation_thread_function()
200 mutex_unlock(&sd->gspca_dev.usb_lock); rotation_thread_function()
208 s5k83a_set_flip_real((struct gspca_dev *) sd, vflip, hflip); rotation_thread_function()
257 static int s5k83a_set_gain(struct gspca_dev *gspca_dev, __s32 val) s5k83a_set_gain() argument
261 struct sd *sd = (struct sd *) gspca_dev; s5k83a_set_gain()
284 static int s5k83a_set_brightness(struct gspca_dev *gspca_dev, __s32 val) s5k83a_set_brightness() argument
288 struct sd *sd = (struct sd *) gspca_dev; s5k83a_set_brightness()
295 static int s5k83a_set_exposure(struct gspca_dev *gspca_dev, __s32 val) s5k83a_set_exposure() argument
299 struct sd *sd = (struct sd *) gspca_dev; s5k83a_set_exposure()
307 static int s5k83a_set_flip_real(struct gspca_dev *gspca_dev, s5k83a_set_flip_real() argument
312 struct sd *sd = (struct sd *) gspca_dev; s5k83a_set_flip_real()
338 static int s5k83a_set_hvflip(struct gspca_dev *gspca_dev) s5k83a_set_hvflip() argument
342 struct sd *sd = (struct sd *) gspca_dev; s5k83a_set_hvflip()
354 err = s5k83a_set_flip_real(gspca_dev, vflip, hflip); s5k83a_set_hvflip()
360 struct gspca_dev *gspca_dev = s5k83a_s_ctrl() local
361 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); s5k83a_s_ctrl()
364 if (!gspca_dev->streaming) s5k83a_s_ctrl()
369 err = s5k83a_set_brightness(gspca_dev, ctrl->val); s5k83a_s_ctrl()
372 err = s5k83a_set_exposure(gspca_dev, ctrl->val); s5k83a_s_ctrl()
375 err = s5k83a_set_gain(gspca_dev, ctrl->val); s5k83a_s_ctrl()
378 err = s5k83a_set_hvflip(gspca_dev); s5k83a_s_ctrl()
H A Dm5602_s5k4aa.c148 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; s5k4aa_probe() local
208 sd->gspca_dev.cam.cam_mode = s5k4aa_modes; s5k4aa_probe()
209 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(s5k4aa_modes); s5k4aa_probe()
218 struct cam *cam = &sd->gspca_dev.cam; s5k4aa_start()
219 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; s5k4aa_start() local
221 switch (cam->cam_mode[sd->gspca_dev.curr_mode].width) { s5k4aa_start()
334 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; s5k4aa_init_controls()
336 sd->gspca_dev.vdev.ctrl_handler = hdl; s5k4aa_init_controls()
366 static int s5k4aa_set_exposure(struct gspca_dev *gspca_dev, __s32 val) s5k4aa_set_exposure() argument
368 struct sd *sd = (struct sd *) gspca_dev; s5k4aa_set_exposure()
386 static int s5k4aa_set_hvflip(struct gspca_dev *gspca_dev) s5k4aa_set_hvflip() argument
388 struct sd *sd = (struct sd *) gspca_dev; s5k4aa_set_hvflip()
438 static int s5k4aa_set_gain(struct gspca_dev *gspca_dev, __s32 val) s5k4aa_set_gain() argument
440 struct sd *sd = (struct sd *) gspca_dev; s5k4aa_set_gain()
455 static int s5k4aa_set_brightness(struct gspca_dev *gspca_dev, __s32 val) s5k4aa_set_brightness() argument
457 struct sd *sd = (struct sd *) gspca_dev; s5k4aa_set_brightness()
470 static int s5k4aa_set_noise(struct gspca_dev *gspca_dev, __s32 val) s5k4aa_set_noise() argument
472 struct sd *sd = (struct sd *) gspca_dev; s5k4aa_set_noise()
487 struct gspca_dev *gspca_dev = s5k4aa_s_ctrl() local
488 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); s5k4aa_s_ctrl()
491 if (!gspca_dev->streaming) s5k4aa_s_ctrl()
496 err = s5k4aa_set_brightness(gspca_dev, ctrl->val); s5k4aa_s_ctrl()
499 err = s5k4aa_set_exposure(gspca_dev, ctrl->val); s5k4aa_s_ctrl()
502 err = s5k4aa_set_gain(gspca_dev, ctrl->val); s5k4aa_s_ctrl()
505 err = s5k4aa_set_noise(gspca_dev, ctrl->val); s5k4aa_s_ctrl()
508 err = s5k4aa_set_hvflip(gspca_dev); s5k4aa_s_ctrl()
H A Dm5602_bridge.h134 struct gspca_dev gspca_dev; member in struct:sd
/linux-4.4.14/drivers/media/usb/gspca/stv06xx/
H A Dstv06xx_vv6410.c49 struct gspca_dev *gspca_dev = vv6410_s_ctrl() local
50 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); vv6410_s_ctrl()
55 if (!gspca_dev->streaming) vv6410_s_ctrl()
57 err = vv6410_set_hflip(gspca_dev, ctrl->val); vv6410_s_ctrl()
60 if (!gspca_dev->streaming) vv6410_s_ctrl()
62 err = vv6410_set_vflip(gspca_dev, ctrl->val); vv6410_s_ctrl()
65 err = vv6410_set_analog_gain(gspca_dev, ctrl->val); vv6410_s_ctrl()
68 err = vv6410_set_exposure(gspca_dev, ctrl->val); vv6410_s_ctrl()
92 sd->gspca_dev.cam.cam_mode = vv6410_mode; vv6410_probe()
93 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(vv6410_mode); vv6410_probe()
99 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; vv6410_init_controls()
134 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; vv6410_start() local
135 struct cam *cam = &sd->gspca_dev.cam; vv6410_start()
136 u32 priv = cam->cam_mode[sd->gspca_dev.curr_mode].priv; vv6410_start()
167 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; vv6410_stop() local
198 static int vv6410_set_hflip(struct gspca_dev *gspca_dev, __s32 val) vv6410_set_hflip() argument
202 struct sd *sd = (struct sd *) gspca_dev; vv6410_set_hflip()
219 static int vv6410_set_vflip(struct gspca_dev *gspca_dev, __s32 val) vv6410_set_vflip() argument
223 struct sd *sd = (struct sd *) gspca_dev; vv6410_set_vflip()
240 static int vv6410_set_analog_gain(struct gspca_dev *gspca_dev, __s32 val) vv6410_set_analog_gain() argument
243 struct sd *sd = (struct sd *) gspca_dev; vv6410_set_analog_gain()
251 static int vv6410_set_exposure(struct gspca_dev *gspca_dev, __s32 val) vv6410_set_exposure() argument
254 struct sd *sd = (struct sd *) gspca_dev; vv6410_set_exposure()
H A Dstv06xx.c45 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; stv06xx_write_bridge() local
46 struct usb_device *udev = sd->gspca_dev.dev; stv06xx_write_bridge()
47 __u8 *buf = sd->gspca_dev.usb_buf; stv06xx_write_bridge()
67 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; stv06xx_read_bridge() local
68 struct usb_device *udev = sd->gspca_dev.dev; stv06xx_read_bridge()
69 __u8 *buf = sd->gspca_dev.usb_buf; stv06xx_read_bridge()
101 struct usb_device *udev = sd->gspca_dev.dev; stv06xx_write_sensor_finish()
102 __u8 *buf = sd->gspca_dev.usb_buf; stv06xx_write_sensor_finish()
116 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; stv06xx_write_sensor_bytes() local
117 struct usb_device *udev = sd->gspca_dev.dev; stv06xx_write_sensor_bytes()
118 __u8 *buf = sd->gspca_dev.usb_buf; stv06xx_write_sensor_bytes()
146 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; stv06xx_write_sensor_words() local
147 struct usb_device *udev = sd->gspca_dev.dev; stv06xx_write_sensor_words()
148 __u8 *buf = sd->gspca_dev.usb_buf; stv06xx_write_sensor_words()
178 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; stv06xx_read_sensor() local
179 struct usb_device *udev = sd->gspca_dev.dev; stv06xx_read_sensor()
180 __u8 *buf = sd->gspca_dev.usb_buf; stv06xx_read_sensor()
251 static int stv06xx_init(struct gspca_dev *gspca_dev) stv06xx_init() argument
253 struct sd *sd = (struct sd *) gspca_dev; stv06xx_init()
271 static int stv06xx_init_controls(struct gspca_dev *gspca_dev) stv06xx_init_controls() argument
273 struct sd *sd = (struct sd *) gspca_dev; stv06xx_init_controls()
277 gspca_dev->vdev.ctrl_handler = &gspca_dev->ctrl_handler; stv06xx_init_controls()
282 static int stv06xx_start(struct gspca_dev *gspca_dev) stv06xx_start() argument
284 struct sd *sd = (struct sd *) gspca_dev; stv06xx_start()
289 intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface); stv06xx_start()
290 alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt); stv06xx_start()
318 static int stv06xx_isoc_init(struct gspca_dev *gspca_dev) stv06xx_isoc_init() argument
321 struct sd *sd = (struct sd *) gspca_dev; stv06xx_isoc_init()
324 alt = &gspca_dev->dev->actconfig->intf_cache[0]->altsetting[1]; stv06xx_isoc_init()
326 cpu_to_le16(sd->sensor->max_packet_size[gspca_dev->curr_mode]); stv06xx_isoc_init()
331 static int stv06xx_isoc_nego(struct gspca_dev *gspca_dev) stv06xx_isoc_nego() argument
335 struct sd *sd = (struct sd *) gspca_dev; stv06xx_isoc_nego()
337 alt = &gspca_dev->dev->actconfig->intf_cache[0]->altsetting[1]; stv06xx_isoc_nego()
339 min_packet_size = sd->sensor->min_packet_size[gspca_dev->curr_mode]; stv06xx_isoc_nego()
348 ret = usb_set_interface(gspca_dev->dev, gspca_dev->iface, 1); stv06xx_isoc_nego()
355 static void stv06xx_stopN(struct gspca_dev *gspca_dev) stv06xx_stopN() argument
358 struct sd *sd = (struct sd *) gspca_dev; stv06xx_stopN()
386 static void stv06xx_pkt_scan(struct gspca_dev *gspca_dev, stv06xx_pkt_scan() argument
390 struct sd *sd = (struct sd *) gspca_dev; stv06xx_pkt_scan()
417 gspca_dev->last_packet_type = DISCARD_PACKET; stv06xx_pkt_scan()
440 gspca_frame_add(gspca_dev, INTER_PACKET, stv06xx_pkt_scan()
451 gspca_frame_add(gspca_dev, FIRST_PACKET, stv06xx_pkt_scan()
455 sd->to_skip = gspca_dev->pixfmt.width * 4; stv06xx_pkt_scan()
468 gspca_frame_add(gspca_dev, LAST_PACKET, stv06xx_pkt_scan()
502 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, sd_int_pkt_scan() argument
509 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); sd_int_pkt_scan()
510 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
515 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); sd_int_pkt_scan()
516 input_sync(gspca_dev->input_dev); sd_int_pkt_scan()
524 static int stv06xx_config(struct gspca_dev *gspca_dev,
544 static int stv06xx_config(struct gspca_dev *gspca_dev, stv06xx_config() argument
547 struct sd *sd = (struct sd *) gspca_dev; stv06xx_config()
552 gspca_dev->sd_desc = &sd_desc; stv06xx_config()
611 struct gspca_dev *gspca_dev = usb_get_intfdata(intf); sd_disconnect() local
612 struct sd *sd = (struct sd *) gspca_dev; sd_disconnect()
H A Dstv06xx_pb0100.c90 struct gspca_dev *gspca_dev = pb0100_s_ctrl() local
91 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); pb0100_s_ctrl()
92 struct sd *sd = (struct sd *)gspca_dev; pb0100_s_ctrl()
98 err = pb0100_set_autogain(gspca_dev, ctrl->val); pb0100_s_ctrl()
103 err = pb0100_set_gain(gspca_dev, ctrls->gain->val); pb0100_s_ctrl()
106 err = pb0100_set_exposure(gspca_dev, ctrls->exposure->val); pb0100_s_ctrl()
109 err = pb0100_set_autogain_target(gspca_dev, ctrl->val); pb0100_s_ctrl()
121 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; pb0100_init_controls()
182 sd->gspca_dev.cam.cam_mode = pb0100_mode; pb0100_probe()
183 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(pb0100_mode); pb0100_probe()
193 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; pb0100_start() local
194 struct cam *cam = &sd->gspca_dev.cam; pb0100_start()
195 u32 mode = cam->cam_mode[sd->gspca_dev.curr_mode].priv; pb0100_start()
197 intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface); pb0100_start()
198 alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt); pb0100_start()
204 max_packet_size = sd->sensor->max_packet_size[sd->gspca_dev.curr_mode]; pb0100_start()
243 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; pb0100_stop() local
330 static int pb0100_set_gain(struct gspca_dev *gspca_dev, __s32 val) pb0100_set_gain() argument
333 struct sd *sd = (struct sd *) gspca_dev; pb0100_set_gain()
342 err = pb0100_set_red_balance(gspca_dev, ctrls->red->val); pb0100_set_gain()
344 err = pb0100_set_blue_balance(gspca_dev, ctrls->blue->val); pb0100_set_gain()
349 static int pb0100_set_red_balance(struct gspca_dev *gspca_dev, __s32 val) pb0100_set_red_balance() argument
352 struct sd *sd = (struct sd *) gspca_dev; pb0100_set_red_balance()
367 static int pb0100_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val) pb0100_set_blue_balance() argument
370 struct sd *sd = (struct sd *) gspca_dev; pb0100_set_blue_balance()
385 static int pb0100_set_exposure(struct gspca_dev *gspca_dev, __s32 val) pb0100_set_exposure() argument
387 struct sd *sd = (struct sd *) gspca_dev; pb0100_set_exposure()
396 static int pb0100_set_autogain(struct gspca_dev *gspca_dev, __s32 val) pb0100_set_autogain() argument
399 struct sd *sd = (struct sd *) gspca_dev; pb0100_set_autogain()
417 static int pb0100_set_autogain_target(struct gspca_dev *gspca_dev, __s32 val) pb0100_set_autogain_target() argument
420 struct sd *sd = (struct sd *) gspca_dev; pb0100_set_autogain_target()
424 totalpixels = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; pb0100_set_autogain_target()
H A Dstv06xx_pb0100.h120 static int pb0100_set_gain(struct gspca_dev *gspca_dev, __s32 val);
121 static int pb0100_set_red_balance(struct gspca_dev *gspca_dev, __s32 val);
122 static int pb0100_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val);
123 static int pb0100_set_exposure(struct gspca_dev *gspca_dev, __s32 val);
124 static int pb0100_set_autogain(struct gspca_dev *gspca_dev, __s32 val);
125 static int pb0100_set_autogain_target(struct gspca_dev *gspca_dev, __s32 val);
H A Dstv06xx_st6422.c70 struct gspca_dev *gspca_dev = st6422_s_ctrl() local
71 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); st6422_s_ctrl()
72 struct sd *sd = (struct sd *)gspca_dev; st6422_s_ctrl()
93 sd->gspca_dev.usb_err = err; st6422_s_ctrl()
103 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; st6422_init_controls()
125 sd->gspca_dev.cam.cam_mode = st6422_mode; st6422_probe()
126 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(st6422_mode); st6422_probe()
266 struct cam *cam = &sd->gspca_dev.cam; st6422_start()
268 if (cam->cam_mode[sd->gspca_dev.curr_mode].priv) st6422_start()
282 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; st6422_stop() local
H A Dstv06xx_hdcs.c174 static int hdcs_set_exposure(struct gspca_dev *gspca_dev, __s32 val) hdcs_set_exposure() argument
176 struct sd *sd = (struct sd *) gspca_dev; hdcs_set_exposure()
281 static int hdcs_set_gain(struct gspca_dev *gspca_dev, __s32 val) hdcs_set_gain() argument
284 return hdcs_set_gains((struct sd *) gspca_dev, hdcs_set_gain()
338 struct gspca_dev *gspca_dev = hdcs_s_ctrl() local
339 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); hdcs_s_ctrl()
344 err = hdcs_set_gain(gspca_dev, ctrl->val); hdcs_s_ctrl()
347 err = hdcs_set_exposure(gspca_dev, ctrl->val); hdcs_s_ctrl()
359 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; hdcs_init_controls()
381 sd->gspca_dev.cam.cam_mode = hdcs1x00_mode; hdcs_probe_1x00()
382 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(hdcs1x00_mode); hdcs_probe_1x00()
438 sd->gspca_dev.cam.cam_mode = hdcs1020_mode; hdcs_probe_1020()
439 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(hdcs1020_mode); hdcs_probe_1020()
470 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; hdcs_start() local
479 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; hdcs_stop() local
H A Dstv06xx_vv6410.h186 static int vv6410_set_hflip(struct gspca_dev *gspca_dev, __s32 val);
187 static int vv6410_set_vflip(struct gspca_dev *gspca_dev, __s32 val);
188 static int vv6410_set_analog_gain(struct gspca_dev *gspca_dev, __s32 val);
189 static int vv6410_set_exposure(struct gspca_dev *gspca_dev, __s32 val);
H A Dstv06xx.h87 struct gspca_dev gspca_dev; member in struct:sd
H A Dstv06xx_hdcs.h138 static int hdcs_set_exposure(struct gspca_dev *gspca_dev, __s32 val);
139 static int hdcs_set_gain(struct gspca_dev *gspca_dev, __s32 val);

Completed in 3765 milliseconds