/linux-4.4.14/drivers/media/usb/gspca/ |
H A D | xirlink_cit.c | 55 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 D | stk014.c | 36 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 D | etoms.c | 33 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 D | spca1528.c | 34 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 D | tv8532.c | 31 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 D | spca506.c | 34 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 D | mars.c | 37 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 D | gspca.c | 66 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 D | stv0680.c | 42 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 D | stk1135.c | 38 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 D | konica.c | 50 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 D | autogain_functions.c | 28 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 D | ov534.c | 61 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 D | pac7311.c | 77 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 D | se401.c | 57 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 D | jeilinj.c | 59 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 D | sunplus.c | 37 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 D | pac207.c | 65 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 D | spca500.c | 37 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 D | cpia1.c | 365 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 D | conex.c | 38 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 D | jl2005bcd.c | 43 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 D | sn9c20x.c | 70 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 *) ®->val); sd_dbg_g_register() 1574 i2c_r1(gspca_dev, reg->reg, (u8 *) ®->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 D | benq.c | 33 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 D | finepix.c | 41 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 D | spca561.c | 38 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 D | touptek.c | 147 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 D | vicam.c | 48 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 D | mr97310a.c | 87 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 D | ov534_9.c | 52 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 D | pac7302.c | 114 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 D | kinect.c | 61 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 D | sq905.c | 86 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 D | t613.c | 42 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 D | sq930x.c | 37 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 D | sq905c.c | 63 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 D | sonixb.c | 61 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, ®, 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, ®s[0x01], 1); sd_start() 1182 reg_w(gspca_dev, 0x17, ®s[0x17], 1); sd_start() 1184 reg_w(gspca_dev, 0x01, ®s[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, ®s[0x15], 2); sd_start() 1214 reg_w(gspca_dev, 0x18, ®s[0x18], 1); sd_start() 1216 reg_w(gspca_dev, 0x12, ®s[0x12], 1); sd_start() 1218 reg_w(gspca_dev, 0x13, ®s[0x13], 1); sd_start() 1221 reg_w(gspca_dev, 0x17, ®s[0x17], 1); sd_start() 1223 reg_w(gspca_dev, 0x19, ®s[0x19], 1); sd_start() 1225 reg_w(gspca_dev, 0x1c, ®s[0x1c], 4); sd_start() 1227 reg_w(gspca_dev, 0x01, ®s[0x01], 1); sd_start() 1229 reg_w(gspca_dev, 0x18, ®s[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 D | dtcs033.c | 34 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 D | gspca.h | 29 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 D | sn9c2028.c | 33 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 D | spca505.c | 34 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 D | sonixj.c | 36 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 D | w996Xcf.c | 72 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 D | ov519.c | 65 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 D | topro.c | 124 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 D | vc032x.c | 35 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 D | spca508.c | 33 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 D | zc3xx.c | 40 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 D | sn9c2028.h | 34 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 D | spca501.c | 34 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 D | nw80x.c | 37 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 D | pac_common.h | 74 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 D | gl860.h | 35 #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 D | gl860-mi1320.c | 176 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 D | gl860-ov9655.c | 145 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 D | gl860-ov2640.c | 175 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 D | gl860.c | 33 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 D | gl860-mi2020.c | 355 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 D | m5602_core.c | 44 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 D | m5602_po1030.c | 58 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 D | m5602_mt9m111.c | 59 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 D | m5602_ov9650.c | 150 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 D | m5602_ov7660.c | 91 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 D | m5602_s5k83a.c | 47 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 D | m5602_s5k4aa.c | 148 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 D | m5602_bridge.h | 134 struct gspca_dev gspca_dev; member in struct:sd
|
/linux-4.4.14/drivers/media/usb/gspca/stv06xx/ |
H A D | stv06xx_vv6410.c | 49 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 D | stv06xx.c | 45 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 D | stv06xx_pb0100.c | 90 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 D | stv06xx_pb0100.h | 120 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 D | stv06xx_st6422.c | 70 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 D | stv06xx_hdcs.c | 174 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 D | stv06xx_vv6410.h | 186 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 D | stv06xx.h | 87 struct gspca_dev gspca_dev; member in struct:sd
|
H A D | stv06xx_hdcs.h | 138 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);
|