aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2010-08-30 13:47:45 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-10-20 23:04:45 -0400
commit55c1b7d3572c9f7e7177447fdd2f48d9787e7ff3 (patch)
treeefd8064c2abe3978dc989fafe3b83444dccdfde4 /drivers
parent659fefa0eb177ae7377206a7a5a59161b0668c58 (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')
-rw-r--r--drivers/media/video/gspca/xirlink_cit.c18
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)
1659static int cit_start_model1(struct gspca_dev *gspca_dev) 1659static 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}