diff options
author | Hans de Goede <hdegoede@redhat.com> | 2010-08-30 13:47:45 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-20 23:04:45 -0400 |
commit | 55c1b7d3572c9f7e7177447fdd2f48d9787e7ff3 (patch) | |
tree | efd8064c2abe3978dc989fafe3b83444dccdfde4 /drivers/media/video/gspca/xirlink_cit.c | |
parent | 659fefa0eb177ae7377206a7a5a59161b0668c58 (diff) |
V4L/DVB: gspca_xirlink_cit: Use alt setting -> fps formula for model 1 cams too
gspca_xirlink_cit: Use alt setting -> fps formula for model 1 cams too
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/gspca/xirlink_cit.c')
-rw-r--r-- | drivers/media/video/gspca/xirlink_cit.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/media/video/gspca/xirlink_cit.c b/drivers/media/video/gspca/xirlink_cit.c index 3b503b50b82e..b13ecbaf3e68 100644 --- a/drivers/media/video/gspca/xirlink_cit.c +++ b/drivers/media/video/gspca/xirlink_cit.c | |||
@@ -1659,7 +1659,19 @@ static int cit_start_model0(struct gspca_dev *gspca_dev) | |||
1659 | static int cit_start_model1(struct gspca_dev *gspca_dev) | 1659 | static int cit_start_model1(struct gspca_dev *gspca_dev) |
1660 | { | 1660 | { |
1661 | struct sd *sd = (struct sd *) gspca_dev; | 1661 | struct sd *sd = (struct sd *) gspca_dev; |
1662 | int i, clock_div = 0; | 1662 | int clock_div = 7; /* 0=30 1=25 2=20 3=15 4=12 5=7.5 6=6 7=3fps ?? */ |
1663 | int fps[8] = { 30, 25, 20, 15, 12, 8, 6, 3 }; | ||
1664 | int i, packet_size; | ||
1665 | |||
1666 | packet_size = cit_get_packet_size(gspca_dev); | ||
1667 | if (packet_size < 0) | ||
1668 | return packet_size; | ||
1669 | |||
1670 | while (clock_div > 3 && | ||
1671 | 1000 * packet_size > | ||
1672 | gspca_dev->width * gspca_dev->height * | ||
1673 | fps[clock_div - 1] * 3 / 2) | ||
1674 | clock_div--; | ||
1663 | 1675 | ||
1664 | cit_read_reg(gspca_dev, 0x0128); | 1676 | cit_read_reg(gspca_dev, 0x0128); |
1665 | cit_read_reg(gspca_dev, 0x0100); | 1677 | cit_read_reg(gspca_dev, 0x0100); |
@@ -1767,7 +1779,6 @@ static int cit_start_model1(struct gspca_dev *gspca_dev) | |||
1767 | cit_write_reg(gspca_dev, 0x0b, 0x011d); | 1779 | cit_write_reg(gspca_dev, 0x0b, 0x011d); |
1768 | cit_write_reg(gspca_dev, 0x00, 0x011e); /* Same everywhere */ | 1780 | cit_write_reg(gspca_dev, 0x00, 0x011e); /* Same everywhere */ |
1769 | cit_write_reg(gspca_dev, 0x00, 0x0129); | 1781 | cit_write_reg(gspca_dev, 0x00, 0x0129); |
1770 | clock_div = 3; | ||
1771 | break; | 1782 | break; |
1772 | case 176: /* 176x144 */ | 1783 | case 176: /* 176x144 */ |
1773 | cit_write_reg(gspca_dev, 0xb0, 0x0103); | 1784 | cit_write_reg(gspca_dev, 0xb0, 0x0103); |
@@ -1777,7 +1788,6 @@ static int cit_start_model1(struct gspca_dev *gspca_dev) | |||
1777 | cit_write_reg(gspca_dev, 0x0d, 0x011d); | 1788 | cit_write_reg(gspca_dev, 0x0d, 0x011d); |
1778 | cit_write_reg(gspca_dev, 0x00, 0x011e); /* Same everywhere */ | 1789 | cit_write_reg(gspca_dev, 0x00, 0x011e); /* Same everywhere */ |
1779 | cit_write_reg(gspca_dev, 0x03, 0x0129); | 1790 | cit_write_reg(gspca_dev, 0x03, 0x0129); |
1780 | clock_div = 3; | ||
1781 | break; | 1791 | break; |
1782 | case 352: /* 352x288 */ | 1792 | case 352: /* 352x288 */ |
1783 | cit_write_reg(gspca_dev, 0xb0, 0x0103); | 1793 | cit_write_reg(gspca_dev, 0xb0, 0x0103); |
@@ -1787,7 +1797,6 @@ static int cit_start_model1(struct gspca_dev *gspca_dev) | |||
1787 | cit_write_reg(gspca_dev, 0x05, 0x011d); | 1797 | cit_write_reg(gspca_dev, 0x05, 0x011d); |
1788 | cit_write_reg(gspca_dev, 0x00, 0x011e); /* Same everywhere */ | 1798 | cit_write_reg(gspca_dev, 0x00, 0x011e); /* Same everywhere */ |
1789 | cit_write_reg(gspca_dev, 0x00, 0x0129); | 1799 | cit_write_reg(gspca_dev, 0x00, 0x0129); |
1790 | clock_div = 5; | ||
1791 | break; | 1800 | break; |
1792 | } | 1801 | } |
1793 | 1802 | ||
@@ -1852,6 +1861,7 @@ static int cit_start_model1(struct gspca_dev *gspca_dev) | |||
1852 | 1861 | ||
1853 | cit_write_reg(gspca_dev, 0x01, 0x0100); /* LED On */ | 1862 | cit_write_reg(gspca_dev, 0x01, 0x0100); /* LED On */ |
1854 | cit_write_reg(gspca_dev, clock_div, 0x0111); | 1863 | cit_write_reg(gspca_dev, clock_div, 0x0111); |
1864 | PDEBUG(D_PROBE, "Using clockdiv: %d", clock_div); | ||
1855 | 1865 | ||
1856 | return 0; | 1866 | return 0; |
1857 | } | 1867 | } |