diff options
-rw-r--r-- | drivers/video/omap2/displays/panel-taal.c | 120 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 48 | ||||
-rw-r--r-- | include/video/omapdss.h | 35 |
3 files changed, 110 insertions, 93 deletions
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c index be230b3ff875..90d79c0bc9f4 100644 --- a/drivers/video/omap2/displays/panel-taal.c +++ b/drivers/video/omap2/displays/panel-taal.c | |||
@@ -271,7 +271,7 @@ static int taal_dcs_read_1(struct taal_data *td, u8 dcs_cmd, u8 *data) | |||
271 | int r; | 271 | int r; |
272 | u8 buf[1]; | 272 | u8 buf[1]; |
273 | 273 | ||
274 | r = dsi_vc_dcs_read(td->channel, dcs_cmd, buf, 1); | 274 | r = dsi_vc_dcs_read(td->dssdev, td->channel, dcs_cmd, buf, 1); |
275 | 275 | ||
276 | if (r < 0) | 276 | if (r < 0) |
277 | return r; | 277 | return r; |
@@ -283,7 +283,7 @@ static int taal_dcs_read_1(struct taal_data *td, u8 dcs_cmd, u8 *data) | |||
283 | 283 | ||
284 | static int taal_dcs_write_0(struct taal_data *td, u8 dcs_cmd) | 284 | static int taal_dcs_write_0(struct taal_data *td, u8 dcs_cmd) |
285 | { | 285 | { |
286 | return dsi_vc_dcs_write(td->channel, &dcs_cmd, 1); | 286 | return dsi_vc_dcs_write(td->dssdev, td->channel, &dcs_cmd, 1); |
287 | } | 287 | } |
288 | 288 | ||
289 | static int taal_dcs_write_1(struct taal_data *td, u8 dcs_cmd, u8 param) | 289 | static int taal_dcs_write_1(struct taal_data *td, u8 dcs_cmd, u8 param) |
@@ -291,7 +291,7 @@ static int taal_dcs_write_1(struct taal_data *td, u8 dcs_cmd, u8 param) | |||
291 | u8 buf[2]; | 291 | u8 buf[2]; |
292 | buf[0] = dcs_cmd; | 292 | buf[0] = dcs_cmd; |
293 | buf[1] = param; | 293 | buf[1] = param; |
294 | return dsi_vc_dcs_write(td->channel, buf, 2); | 294 | return dsi_vc_dcs_write(td->dssdev, td->channel, buf, 2); |
295 | } | 295 | } |
296 | 296 | ||
297 | static int taal_sleep_in(struct taal_data *td) | 297 | static int taal_sleep_in(struct taal_data *td) |
@@ -303,7 +303,7 @@ static int taal_sleep_in(struct taal_data *td) | |||
303 | hw_guard_wait(td); | 303 | hw_guard_wait(td); |
304 | 304 | ||
305 | cmd = DCS_SLEEP_IN; | 305 | cmd = DCS_SLEEP_IN; |
306 | r = dsi_vc_dcs_write_nosync(td->channel, &cmd, 1); | 306 | r = dsi_vc_dcs_write_nosync(td->dssdev, td->channel, &cmd, 1); |
307 | if (r) | 307 | if (r) |
308 | return r; | 308 | return r; |
309 | 309 | ||
@@ -409,7 +409,7 @@ static int taal_set_update_window(struct taal_data *td, | |||
409 | buf[3] = (x2 >> 8) & 0xff; | 409 | buf[3] = (x2 >> 8) & 0xff; |
410 | buf[4] = (x2 >> 0) & 0xff; | 410 | buf[4] = (x2 >> 0) & 0xff; |
411 | 411 | ||
412 | r = dsi_vc_dcs_write_nosync(td->channel, buf, sizeof(buf)); | 412 | r = dsi_vc_dcs_write_nosync(td->dssdev, td->channel, buf, sizeof(buf)); |
413 | if (r) | 413 | if (r) |
414 | return r; | 414 | return r; |
415 | 415 | ||
@@ -419,11 +419,11 @@ static int taal_set_update_window(struct taal_data *td, | |||
419 | buf[3] = (y2 >> 8) & 0xff; | 419 | buf[3] = (y2 >> 8) & 0xff; |
420 | buf[4] = (y2 >> 0) & 0xff; | 420 | buf[4] = (y2 >> 0) & 0xff; |
421 | 421 | ||
422 | r = dsi_vc_dcs_write_nosync(td->channel, buf, sizeof(buf)); | 422 | r = dsi_vc_dcs_write_nosync(td->dssdev, td->channel, buf, sizeof(buf)); |
423 | if (r) | 423 | if (r) |
424 | return r; | 424 | return r; |
425 | 425 | ||
426 | dsi_vc_send_bta_sync(td->channel); | 426 | dsi_vc_send_bta_sync(td->dssdev, td->channel); |
427 | 427 | ||
428 | return r; | 428 | return r; |
429 | } | 429 | } |
@@ -507,7 +507,7 @@ static int taal_exit_ulps(struct omap_dss_device *dssdev) | |||
507 | if (r) | 507 | if (r) |
508 | goto err; | 508 | goto err; |
509 | 509 | ||
510 | omapdss_dsi_vc_enable_hs(td->channel, true); | 510 | omapdss_dsi_vc_enable_hs(dssdev, td->channel, true); |
511 | 511 | ||
512 | r = _taal_enable_te(dssdev, true); | 512 | r = _taal_enable_te(dssdev, true); |
513 | if (r) | 513 | if (r) |
@@ -565,13 +565,13 @@ static int taal_bl_update_status(struct backlight_device *dev) | |||
565 | 565 | ||
566 | if (td->use_dsi_bl) { | 566 | if (td->use_dsi_bl) { |
567 | if (td->enabled) { | 567 | if (td->enabled) { |
568 | dsi_bus_lock(); | 568 | dsi_bus_lock(dssdev); |
569 | 569 | ||
570 | r = taal_wake_up(dssdev); | 570 | r = taal_wake_up(dssdev); |
571 | if (!r) | 571 | if (!r) |
572 | r = taal_dcs_write_1(td, DCS_BRIGHTNESS, level); | 572 | r = taal_dcs_write_1(td, DCS_BRIGHTNESS, level); |
573 | 573 | ||
574 | dsi_bus_unlock(); | 574 | dsi_bus_unlock(dssdev); |
575 | } else { | 575 | } else { |
576 | r = 0; | 576 | r = 0; |
577 | } | 577 | } |
@@ -632,13 +632,13 @@ static ssize_t taal_num_errors_show(struct device *dev, | |||
632 | mutex_lock(&td->lock); | 632 | mutex_lock(&td->lock); |
633 | 633 | ||
634 | if (td->enabled) { | 634 | if (td->enabled) { |
635 | dsi_bus_lock(); | 635 | dsi_bus_lock(dssdev); |
636 | 636 | ||
637 | r = taal_wake_up(dssdev); | 637 | r = taal_wake_up(dssdev); |
638 | if (!r) | 638 | if (!r) |
639 | r = taal_dcs_read_1(td, DCS_READ_NUM_ERRORS, &errors); | 639 | r = taal_dcs_read_1(td, DCS_READ_NUM_ERRORS, &errors); |
640 | 640 | ||
641 | dsi_bus_unlock(); | 641 | dsi_bus_unlock(dssdev); |
642 | } else { | 642 | } else { |
643 | r = -ENODEV; | 643 | r = -ENODEV; |
644 | } | 644 | } |
@@ -662,13 +662,13 @@ static ssize_t taal_hw_revision_show(struct device *dev, | |||
662 | mutex_lock(&td->lock); | 662 | mutex_lock(&td->lock); |
663 | 663 | ||
664 | if (td->enabled) { | 664 | if (td->enabled) { |
665 | dsi_bus_lock(); | 665 | dsi_bus_lock(dssdev); |
666 | 666 | ||
667 | r = taal_wake_up(dssdev); | 667 | r = taal_wake_up(dssdev); |
668 | if (!r) | 668 | if (!r) |
669 | r = taal_get_id(td, &id1, &id2, &id3); | 669 | r = taal_get_id(td, &id1, &id2, &id3); |
670 | 670 | ||
671 | dsi_bus_unlock(); | 671 | dsi_bus_unlock(dssdev); |
672 | } else { | 672 | } else { |
673 | r = -ENODEV; | 673 | r = -ENODEV; |
674 | } | 674 | } |
@@ -728,7 +728,7 @@ static ssize_t store_cabc_mode(struct device *dev, | |||
728 | mutex_lock(&td->lock); | 728 | mutex_lock(&td->lock); |
729 | 729 | ||
730 | if (td->enabled) { | 730 | if (td->enabled) { |
731 | dsi_bus_lock(); | 731 | dsi_bus_lock(dssdev); |
732 | 732 | ||
733 | if (!td->cabc_broken) { | 733 | if (!td->cabc_broken) { |
734 | r = taal_wake_up(dssdev); | 734 | r = taal_wake_up(dssdev); |
@@ -740,7 +740,7 @@ static ssize_t store_cabc_mode(struct device *dev, | |||
740 | goto err; | 740 | goto err; |
741 | } | 741 | } |
742 | 742 | ||
743 | dsi_bus_unlock(); | 743 | dsi_bus_unlock(dssdev); |
744 | } | 744 | } |
745 | 745 | ||
746 | td->cabc_mode = i; | 746 | td->cabc_mode = i; |
@@ -749,7 +749,7 @@ static ssize_t store_cabc_mode(struct device *dev, | |||
749 | 749 | ||
750 | return count; | 750 | return count; |
751 | err: | 751 | err: |
752 | dsi_bus_unlock(); | 752 | dsi_bus_unlock(dssdev); |
753 | mutex_unlock(&td->lock); | 753 | mutex_unlock(&td->lock); |
754 | return r; | 754 | return r; |
755 | } | 755 | } |
@@ -825,14 +825,14 @@ static ssize_t taal_store_ulps(struct device *dev, | |||
825 | mutex_lock(&td->lock); | 825 | mutex_lock(&td->lock); |
826 | 826 | ||
827 | if (td->enabled) { | 827 | if (td->enabled) { |
828 | dsi_bus_lock(); | 828 | dsi_bus_lock(dssdev); |
829 | 829 | ||
830 | if (t) | 830 | if (t) |
831 | r = taal_enter_ulps(dssdev); | 831 | r = taal_enter_ulps(dssdev); |
832 | else | 832 | else |
833 | r = taal_wake_up(dssdev); | 833 | r = taal_wake_up(dssdev); |
834 | 834 | ||
835 | dsi_bus_unlock(); | 835 | dsi_bus_unlock(dssdev); |
836 | } | 836 | } |
837 | 837 | ||
838 | mutex_unlock(&td->lock); | 838 | mutex_unlock(&td->lock); |
@@ -876,9 +876,9 @@ static ssize_t taal_store_ulps_timeout(struct device *dev, | |||
876 | 876 | ||
877 | if (td->enabled) { | 877 | if (td->enabled) { |
878 | /* taal_wake_up will restart the timer */ | 878 | /* taal_wake_up will restart the timer */ |
879 | dsi_bus_lock(); | 879 | dsi_bus_lock(dssdev); |
880 | r = taal_wake_up(dssdev); | 880 | r = taal_wake_up(dssdev); |
881 | dsi_bus_unlock(); | 881 | dsi_bus_unlock(dssdev); |
882 | } | 882 | } |
883 | 883 | ||
884 | mutex_unlock(&td->lock); | 884 | mutex_unlock(&td->lock); |
@@ -1165,7 +1165,7 @@ static int taal_power_on(struct omap_dss_device *dssdev) | |||
1165 | 1165 | ||
1166 | taal_hw_reset(dssdev); | 1166 | taal_hw_reset(dssdev); |
1167 | 1167 | ||
1168 | omapdss_dsi_vc_enable_hs(td->channel, false); | 1168 | omapdss_dsi_vc_enable_hs(dssdev, td->channel, false); |
1169 | 1169 | ||
1170 | r = taal_sleep_out(td); | 1170 | r = taal_sleep_out(td); |
1171 | if (r) | 1171 | if (r) |
@@ -1222,7 +1222,7 @@ static int taal_power_on(struct omap_dss_device *dssdev) | |||
1222 | td->intro_printed = true; | 1222 | td->intro_printed = true; |
1223 | } | 1223 | } |
1224 | 1224 | ||
1225 | omapdss_dsi_vc_enable_hs(td->channel, true); | 1225 | omapdss_dsi_vc_enable_hs(dssdev, td->channel, true); |
1226 | 1226 | ||
1227 | return 0; | 1227 | return 0; |
1228 | err: | 1228 | err: |
@@ -1281,11 +1281,11 @@ static int taal_enable(struct omap_dss_device *dssdev) | |||
1281 | goto err; | 1281 | goto err; |
1282 | } | 1282 | } |
1283 | 1283 | ||
1284 | dsi_bus_lock(); | 1284 | dsi_bus_lock(dssdev); |
1285 | 1285 | ||
1286 | r = taal_power_on(dssdev); | 1286 | r = taal_power_on(dssdev); |
1287 | 1287 | ||
1288 | dsi_bus_unlock(); | 1288 | dsi_bus_unlock(dssdev); |
1289 | 1289 | ||
1290 | if (r) | 1290 | if (r) |
1291 | goto err; | 1291 | goto err; |
@@ -1314,14 +1314,14 @@ static void taal_disable(struct omap_dss_device *dssdev) | |||
1314 | taal_cancel_ulps_work(dssdev); | 1314 | taal_cancel_ulps_work(dssdev); |
1315 | taal_cancel_esd_work(dssdev); | 1315 | taal_cancel_esd_work(dssdev); |
1316 | 1316 | ||
1317 | dsi_bus_lock(); | 1317 | dsi_bus_lock(dssdev); |
1318 | 1318 | ||
1319 | if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) { | 1319 | if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) { |
1320 | taal_wake_up(dssdev); | 1320 | taal_wake_up(dssdev); |
1321 | taal_power_off(dssdev); | 1321 | taal_power_off(dssdev); |
1322 | } | 1322 | } |
1323 | 1323 | ||
1324 | dsi_bus_unlock(); | 1324 | dsi_bus_unlock(dssdev); |
1325 | 1325 | ||
1326 | dssdev->state = OMAP_DSS_DISPLAY_DISABLED; | 1326 | dssdev->state = OMAP_DSS_DISPLAY_DISABLED; |
1327 | 1327 | ||
@@ -1345,13 +1345,13 @@ static int taal_suspend(struct omap_dss_device *dssdev) | |||
1345 | taal_cancel_ulps_work(dssdev); | 1345 | taal_cancel_ulps_work(dssdev); |
1346 | taal_cancel_esd_work(dssdev); | 1346 | taal_cancel_esd_work(dssdev); |
1347 | 1347 | ||
1348 | dsi_bus_lock(); | 1348 | dsi_bus_lock(dssdev); |
1349 | 1349 | ||
1350 | r = taal_wake_up(dssdev); | 1350 | r = taal_wake_up(dssdev); |
1351 | if (!r) | 1351 | if (!r) |
1352 | taal_power_off(dssdev); | 1352 | taal_power_off(dssdev); |
1353 | 1353 | ||
1354 | dsi_bus_unlock(); | 1354 | dsi_bus_unlock(dssdev); |
1355 | 1355 | ||
1356 | dssdev->state = OMAP_DSS_DISPLAY_SUSPENDED; | 1356 | dssdev->state = OMAP_DSS_DISPLAY_SUSPENDED; |
1357 | 1357 | ||
@@ -1377,11 +1377,11 @@ static int taal_resume(struct omap_dss_device *dssdev) | |||
1377 | goto err; | 1377 | goto err; |
1378 | } | 1378 | } |
1379 | 1379 | ||
1380 | dsi_bus_lock(); | 1380 | dsi_bus_lock(dssdev); |
1381 | 1381 | ||
1382 | r = taal_power_on(dssdev); | 1382 | r = taal_power_on(dssdev); |
1383 | 1383 | ||
1384 | dsi_bus_unlock(); | 1384 | dsi_bus_unlock(dssdev); |
1385 | 1385 | ||
1386 | if (r) { | 1386 | if (r) { |
1387 | dssdev->state = OMAP_DSS_DISPLAY_DISABLED; | 1387 | dssdev->state = OMAP_DSS_DISPLAY_DISABLED; |
@@ -1402,7 +1402,7 @@ static void taal_framedone_cb(int err, void *data) | |||
1402 | { | 1402 | { |
1403 | struct omap_dss_device *dssdev = data; | 1403 | struct omap_dss_device *dssdev = data; |
1404 | dev_dbg(&dssdev->dev, "framedone, err %d\n", err); | 1404 | dev_dbg(&dssdev->dev, "framedone, err %d\n", err); |
1405 | dsi_bus_unlock(); | 1405 | dsi_bus_unlock(dssdev); |
1406 | } | 1406 | } |
1407 | 1407 | ||
1408 | static irqreturn_t taal_te_isr(int irq, void *data) | 1408 | static irqreturn_t taal_te_isr(int irq, void *data) |
@@ -1430,7 +1430,7 @@ static irqreturn_t taal_te_isr(int irq, void *data) | |||
1430 | return IRQ_HANDLED; | 1430 | return IRQ_HANDLED; |
1431 | err: | 1431 | err: |
1432 | dev_err(&dssdev->dev, "start update failed\n"); | 1432 | dev_err(&dssdev->dev, "start update failed\n"); |
1433 | dsi_bus_unlock(); | 1433 | dsi_bus_unlock(dssdev); |
1434 | return IRQ_HANDLED; | 1434 | return IRQ_HANDLED; |
1435 | } | 1435 | } |
1436 | 1436 | ||
@@ -1443,7 +1443,7 @@ static void taal_te_timeout_work_callback(struct work_struct *work) | |||
1443 | dev_err(&dssdev->dev, "TE not received for 250ms!\n"); | 1443 | dev_err(&dssdev->dev, "TE not received for 250ms!\n"); |
1444 | 1444 | ||
1445 | atomic_set(&td->do_update, 0); | 1445 | atomic_set(&td->do_update, 0); |
1446 | dsi_bus_unlock(); | 1446 | dsi_bus_unlock(dssdev); |
1447 | } | 1447 | } |
1448 | 1448 | ||
1449 | static int taal_update(struct omap_dss_device *dssdev, | 1449 | static int taal_update(struct omap_dss_device *dssdev, |
@@ -1456,7 +1456,7 @@ static int taal_update(struct omap_dss_device *dssdev, | |||
1456 | dev_dbg(&dssdev->dev, "update %d, %d, %d x %d\n", x, y, w, h); | 1456 | dev_dbg(&dssdev->dev, "update %d, %d, %d x %d\n", x, y, w, h); |
1457 | 1457 | ||
1458 | mutex_lock(&td->lock); | 1458 | mutex_lock(&td->lock); |
1459 | dsi_bus_lock(); | 1459 | dsi_bus_lock(dssdev); |
1460 | 1460 | ||
1461 | r = taal_wake_up(dssdev); | 1461 | r = taal_wake_up(dssdev); |
1462 | if (r) | 1462 | if (r) |
@@ -1495,7 +1495,7 @@ static int taal_update(struct omap_dss_device *dssdev, | |||
1495 | mutex_unlock(&td->lock); | 1495 | mutex_unlock(&td->lock); |
1496 | return 0; | 1496 | return 0; |
1497 | err: | 1497 | err: |
1498 | dsi_bus_unlock(); | 1498 | dsi_bus_unlock(dssdev); |
1499 | mutex_unlock(&td->lock); | 1499 | mutex_unlock(&td->lock); |
1500 | return r; | 1500 | return r; |
1501 | } | 1501 | } |
@@ -1507,8 +1507,8 @@ static int taal_sync(struct omap_dss_device *dssdev) | |||
1507 | dev_dbg(&dssdev->dev, "sync\n"); | 1507 | dev_dbg(&dssdev->dev, "sync\n"); |
1508 | 1508 | ||
1509 | mutex_lock(&td->lock); | 1509 | mutex_lock(&td->lock); |
1510 | dsi_bus_lock(); | 1510 | dsi_bus_lock(dssdev); |
1511 | dsi_bus_unlock(); | 1511 | dsi_bus_unlock(dssdev); |
1512 | mutex_unlock(&td->lock); | 1512 | mutex_unlock(&td->lock); |
1513 | 1513 | ||
1514 | dev_dbg(&dssdev->dev, "sync done\n"); | 1514 | dev_dbg(&dssdev->dev, "sync done\n"); |
@@ -1546,7 +1546,7 @@ static int taal_enable_te(struct omap_dss_device *dssdev, bool enable) | |||
1546 | if (td->te_enabled == enable) | 1546 | if (td->te_enabled == enable) |
1547 | goto end; | 1547 | goto end; |
1548 | 1548 | ||
1549 | dsi_bus_lock(); | 1549 | dsi_bus_lock(dssdev); |
1550 | 1550 | ||
1551 | if (td->enabled) { | 1551 | if (td->enabled) { |
1552 | r = taal_wake_up(dssdev); | 1552 | r = taal_wake_up(dssdev); |
@@ -1560,13 +1560,13 @@ static int taal_enable_te(struct omap_dss_device *dssdev, bool enable) | |||
1560 | 1560 | ||
1561 | td->te_enabled = enable; | 1561 | td->te_enabled = enable; |
1562 | 1562 | ||
1563 | dsi_bus_unlock(); | 1563 | dsi_bus_unlock(dssdev); |
1564 | end: | 1564 | end: |
1565 | mutex_unlock(&td->lock); | 1565 | mutex_unlock(&td->lock); |
1566 | 1566 | ||
1567 | return 0; | 1567 | return 0; |
1568 | err: | 1568 | err: |
1569 | dsi_bus_unlock(); | 1569 | dsi_bus_unlock(dssdev); |
1570 | mutex_unlock(&td->lock); | 1570 | mutex_unlock(&td->lock); |
1571 | 1571 | ||
1572 | return r; | 1572 | return r; |
@@ -1596,7 +1596,7 @@ static int taal_rotate(struct omap_dss_device *dssdev, u8 rotate) | |||
1596 | if (td->rotate == rotate) | 1596 | if (td->rotate == rotate) |
1597 | goto end; | 1597 | goto end; |
1598 | 1598 | ||
1599 | dsi_bus_lock(); | 1599 | dsi_bus_lock(dssdev); |
1600 | 1600 | ||
1601 | if (td->enabled) { | 1601 | if (td->enabled) { |
1602 | r = taal_wake_up(dssdev); | 1602 | r = taal_wake_up(dssdev); |
@@ -1610,12 +1610,12 @@ static int taal_rotate(struct omap_dss_device *dssdev, u8 rotate) | |||
1610 | 1610 | ||
1611 | td->rotate = rotate; | 1611 | td->rotate = rotate; |
1612 | 1612 | ||
1613 | dsi_bus_unlock(); | 1613 | dsi_bus_unlock(dssdev); |
1614 | end: | 1614 | end: |
1615 | mutex_unlock(&td->lock); | 1615 | mutex_unlock(&td->lock); |
1616 | return 0; | 1616 | return 0; |
1617 | err: | 1617 | err: |
1618 | dsi_bus_unlock(); | 1618 | dsi_bus_unlock(dssdev); |
1619 | mutex_unlock(&td->lock); | 1619 | mutex_unlock(&td->lock); |
1620 | return r; | 1620 | return r; |
1621 | } | 1621 | } |
@@ -1644,7 +1644,7 @@ static int taal_mirror(struct omap_dss_device *dssdev, bool enable) | |||
1644 | if (td->mirror == enable) | 1644 | if (td->mirror == enable) |
1645 | goto end; | 1645 | goto end; |
1646 | 1646 | ||
1647 | dsi_bus_lock(); | 1647 | dsi_bus_lock(dssdev); |
1648 | if (td->enabled) { | 1648 | if (td->enabled) { |
1649 | r = taal_wake_up(dssdev); | 1649 | r = taal_wake_up(dssdev); |
1650 | if (r) | 1650 | if (r) |
@@ -1657,12 +1657,12 @@ static int taal_mirror(struct omap_dss_device *dssdev, bool enable) | |||
1657 | 1657 | ||
1658 | td->mirror = enable; | 1658 | td->mirror = enable; |
1659 | 1659 | ||
1660 | dsi_bus_unlock(); | 1660 | dsi_bus_unlock(dssdev); |
1661 | end: | 1661 | end: |
1662 | mutex_unlock(&td->lock); | 1662 | mutex_unlock(&td->lock); |
1663 | return 0; | 1663 | return 0; |
1664 | err: | 1664 | err: |
1665 | dsi_bus_unlock(); | 1665 | dsi_bus_unlock(dssdev); |
1666 | mutex_unlock(&td->lock); | 1666 | mutex_unlock(&td->lock); |
1667 | return r; | 1667 | return r; |
1668 | } | 1668 | } |
@@ -1692,7 +1692,7 @@ static int taal_run_test(struct omap_dss_device *dssdev, int test_num) | |||
1692 | goto err1; | 1692 | goto err1; |
1693 | } | 1693 | } |
1694 | 1694 | ||
1695 | dsi_bus_lock(); | 1695 | dsi_bus_lock(dssdev); |
1696 | 1696 | ||
1697 | r = taal_wake_up(dssdev); | 1697 | r = taal_wake_up(dssdev); |
1698 | if (r) | 1698 | if (r) |
@@ -1708,11 +1708,11 @@ static int taal_run_test(struct omap_dss_device *dssdev, int test_num) | |||
1708 | if (r) | 1708 | if (r) |
1709 | goto err2; | 1709 | goto err2; |
1710 | 1710 | ||
1711 | dsi_bus_unlock(); | 1711 | dsi_bus_unlock(dssdev); |
1712 | mutex_unlock(&td->lock); | 1712 | mutex_unlock(&td->lock); |
1713 | return 0; | 1713 | return 0; |
1714 | err2: | 1714 | err2: |
1715 | dsi_bus_unlock(); | 1715 | dsi_bus_unlock(dssdev); |
1716 | err1: | 1716 | err1: |
1717 | mutex_unlock(&td->lock); | 1717 | mutex_unlock(&td->lock); |
1718 | return r; | 1718 | return r; |
@@ -1742,7 +1742,7 @@ static int taal_memory_read(struct omap_dss_device *dssdev, | |||
1742 | dssdev->panel.timings.x_res * | 1742 | dssdev->panel.timings.x_res * |
1743 | dssdev->panel.timings.y_res * 3); | 1743 | dssdev->panel.timings.y_res * 3); |
1744 | 1744 | ||
1745 | dsi_bus_lock(); | 1745 | dsi_bus_lock(dssdev); |
1746 | 1746 | ||
1747 | r = taal_wake_up(dssdev); | 1747 | r = taal_wake_up(dssdev); |
1748 | if (r) | 1748 | if (r) |
@@ -1758,7 +1758,7 @@ static int taal_memory_read(struct omap_dss_device *dssdev, | |||
1758 | 1758 | ||
1759 | taal_set_update_window(td, x, y, w, h); | 1759 | taal_set_update_window(td, x, y, w, h); |
1760 | 1760 | ||
1761 | r = dsi_vc_set_max_rx_packet_size(td->channel, plen); | 1761 | r = dsi_vc_set_max_rx_packet_size(dssdev, td->channel, plen); |
1762 | if (r) | 1762 | if (r) |
1763 | goto err2; | 1763 | goto err2; |
1764 | 1764 | ||
@@ -1766,7 +1766,7 @@ static int taal_memory_read(struct omap_dss_device *dssdev, | |||
1766 | u8 dcs_cmd = first ? 0x2e : 0x3e; | 1766 | u8 dcs_cmd = first ? 0x2e : 0x3e; |
1767 | first = 0; | 1767 | first = 0; |
1768 | 1768 | ||
1769 | r = dsi_vc_dcs_read(td->channel, dcs_cmd, | 1769 | r = dsi_vc_dcs_read(dssdev, td->channel, dcs_cmd, |
1770 | buf + buf_used, size - buf_used); | 1770 | buf + buf_used, size - buf_used); |
1771 | 1771 | ||
1772 | if (r < 0) { | 1772 | if (r < 0) { |
@@ -1792,9 +1792,9 @@ static int taal_memory_read(struct omap_dss_device *dssdev, | |||
1792 | r = buf_used; | 1792 | r = buf_used; |
1793 | 1793 | ||
1794 | err3: | 1794 | err3: |
1795 | dsi_vc_set_max_rx_packet_size(td->channel, 1); | 1795 | dsi_vc_set_max_rx_packet_size(dssdev, td->channel, 1); |
1796 | err2: | 1796 | err2: |
1797 | dsi_bus_unlock(); | 1797 | dsi_bus_unlock(dssdev); |
1798 | err1: | 1798 | err1: |
1799 | mutex_unlock(&td->lock); | 1799 | mutex_unlock(&td->lock); |
1800 | return r; | 1800 | return r; |
@@ -1813,11 +1813,11 @@ static void taal_ulps_work(struct work_struct *work) | |||
1813 | return; | 1813 | return; |
1814 | } | 1814 | } |
1815 | 1815 | ||
1816 | dsi_bus_lock(); | 1816 | dsi_bus_lock(dssdev); |
1817 | 1817 | ||
1818 | taal_enter_ulps(dssdev); | 1818 | taal_enter_ulps(dssdev); |
1819 | 1819 | ||
1820 | dsi_bus_unlock(); | 1820 | dsi_bus_unlock(dssdev); |
1821 | mutex_unlock(&td->lock); | 1821 | mutex_unlock(&td->lock); |
1822 | } | 1822 | } |
1823 | 1823 | ||
@@ -1837,7 +1837,7 @@ static void taal_esd_work(struct work_struct *work) | |||
1837 | return; | 1837 | return; |
1838 | } | 1838 | } |
1839 | 1839 | ||
1840 | dsi_bus_lock(); | 1840 | dsi_bus_lock(dssdev); |
1841 | 1841 | ||
1842 | r = taal_wake_up(dssdev); | 1842 | r = taal_wake_up(dssdev); |
1843 | if (r) { | 1843 | if (r) { |
@@ -1879,7 +1879,7 @@ static void taal_esd_work(struct work_struct *work) | |||
1879 | goto err; | 1879 | goto err; |
1880 | } | 1880 | } |
1881 | 1881 | ||
1882 | dsi_bus_unlock(); | 1882 | dsi_bus_unlock(dssdev); |
1883 | 1883 | ||
1884 | taal_queue_esd_work(dssdev); | 1884 | taal_queue_esd_work(dssdev); |
1885 | 1885 | ||
@@ -1890,7 +1890,7 @@ err: | |||
1890 | 1890 | ||
1891 | taal_panel_reset(dssdev); | 1891 | taal_panel_reset(dssdev); |
1892 | 1892 | ||
1893 | dsi_bus_unlock(); | 1893 | dsi_bus_unlock(dssdev); |
1894 | 1894 | ||
1895 | taal_queue_esd_work(dssdev); | 1895 | taal_queue_esd_work(dssdev); |
1896 | 1896 | ||
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 162068f5f6ff..6d7148890aa0 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c | |||
@@ -354,13 +354,13 @@ void dsi_restore_context(void) | |||
354 | { | 354 | { |
355 | } | 355 | } |
356 | 356 | ||
357 | void dsi_bus_lock(void) | 357 | void dsi_bus_lock(struct omap_dss_device *dssdev) |
358 | { | 358 | { |
359 | down(&dsi.bus_lock); | 359 | down(&dsi.bus_lock); |
360 | } | 360 | } |
361 | EXPORT_SYMBOL(dsi_bus_lock); | 361 | EXPORT_SYMBOL(dsi_bus_lock); |
362 | 362 | ||
363 | void dsi_bus_unlock(void) | 363 | void dsi_bus_unlock(struct omap_dss_device *dssdev) |
364 | { | 364 | { |
365 | up(&dsi.bus_lock); | 365 | up(&dsi.bus_lock); |
366 | } | 366 | } |
@@ -2473,7 +2473,8 @@ static int dsi_vc_config_vp(int channel) | |||
2473 | } | 2473 | } |
2474 | 2474 | ||
2475 | 2475 | ||
2476 | void omapdss_dsi_vc_enable_hs(int channel, bool enable) | 2476 | void omapdss_dsi_vc_enable_hs(struct omap_dss_device *dssdev, int channel, |
2477 | bool enable) | ||
2477 | { | 2478 | { |
2478 | DSSDBG("dsi_vc_enable_hs(%d, %d)\n", channel, enable); | 2479 | DSSDBG("dsi_vc_enable_hs(%d, %d)\n", channel, enable); |
2479 | 2480 | ||
@@ -2587,7 +2588,7 @@ static int dsi_vc_send_bta(int channel) | |||
2587 | return 0; | 2588 | return 0; |
2588 | } | 2589 | } |
2589 | 2590 | ||
2590 | int dsi_vc_send_bta_sync(int channel) | 2591 | int dsi_vc_send_bta_sync(struct omap_dss_device *dssdev, int channel) |
2591 | { | 2592 | { |
2592 | DECLARE_COMPLETION_ONSTACK(completion); | 2593 | DECLARE_COMPLETION_ONSTACK(completion); |
2593 | int r = 0; | 2594 | int r = 0; |
@@ -2751,14 +2752,15 @@ static int dsi_vc_send_short(int channel, u8 data_type, u16 data, u8 ecc) | |||
2751 | return 0; | 2752 | return 0; |
2752 | } | 2753 | } |
2753 | 2754 | ||
2754 | int dsi_vc_send_null(int channel) | 2755 | int dsi_vc_send_null(struct omap_dss_device *dssdev, int channel) |
2755 | { | 2756 | { |
2756 | u8 nullpkg[] = {0, 0, 0, 0}; | 2757 | u8 nullpkg[] = {0, 0, 0, 0}; |
2757 | return dsi_vc_send_long(channel, DSI_DT_NULL_PACKET, nullpkg, 4, 0); | 2758 | return dsi_vc_send_long(channel, DSI_DT_NULL_PACKET, nullpkg, 4, 0); |
2758 | } | 2759 | } |
2759 | EXPORT_SYMBOL(dsi_vc_send_null); | 2760 | EXPORT_SYMBOL(dsi_vc_send_null); |
2760 | 2761 | ||
2761 | int dsi_vc_dcs_write_nosync(int channel, u8 *data, int len) | 2762 | int dsi_vc_dcs_write_nosync(struct omap_dss_device *dssdev, int channel, |
2763 | u8 *data, int len) | ||
2762 | { | 2764 | { |
2763 | int r; | 2765 | int r; |
2764 | 2766 | ||
@@ -2780,15 +2782,16 @@ int dsi_vc_dcs_write_nosync(int channel, u8 *data, int len) | |||
2780 | } | 2782 | } |
2781 | EXPORT_SYMBOL(dsi_vc_dcs_write_nosync); | 2783 | EXPORT_SYMBOL(dsi_vc_dcs_write_nosync); |
2782 | 2784 | ||
2783 | int dsi_vc_dcs_write(int channel, u8 *data, int len) | 2785 | int dsi_vc_dcs_write(struct omap_dss_device *dssdev, int channel, u8 *data, |
2786 | int len) | ||
2784 | { | 2787 | { |
2785 | int r; | 2788 | int r; |
2786 | 2789 | ||
2787 | r = dsi_vc_dcs_write_nosync(channel, data, len); | 2790 | r = dsi_vc_dcs_write_nosync(dssdev, channel, data, len); |
2788 | if (r) | 2791 | if (r) |
2789 | goto err; | 2792 | goto err; |
2790 | 2793 | ||
2791 | r = dsi_vc_send_bta_sync(channel); | 2794 | r = dsi_vc_send_bta_sync(dssdev, channel); |
2792 | if (r) | 2795 | if (r) |
2793 | goto err; | 2796 | goto err; |
2794 | 2797 | ||
@@ -2807,22 +2810,24 @@ err: | |||
2807 | } | 2810 | } |
2808 | EXPORT_SYMBOL(dsi_vc_dcs_write); | 2811 | EXPORT_SYMBOL(dsi_vc_dcs_write); |
2809 | 2812 | ||
2810 | int dsi_vc_dcs_write_0(int channel, u8 dcs_cmd) | 2813 | int dsi_vc_dcs_write_0(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd) |
2811 | { | 2814 | { |
2812 | return dsi_vc_dcs_write(channel, &dcs_cmd, 1); | 2815 | return dsi_vc_dcs_write(dssdev, channel, &dcs_cmd, 1); |
2813 | } | 2816 | } |
2814 | EXPORT_SYMBOL(dsi_vc_dcs_write_0); | 2817 | EXPORT_SYMBOL(dsi_vc_dcs_write_0); |
2815 | 2818 | ||
2816 | int dsi_vc_dcs_write_1(int channel, u8 dcs_cmd, u8 param) | 2819 | int dsi_vc_dcs_write_1(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd, |
2820 | u8 param) | ||
2817 | { | 2821 | { |
2818 | u8 buf[2]; | 2822 | u8 buf[2]; |
2819 | buf[0] = dcs_cmd; | 2823 | buf[0] = dcs_cmd; |
2820 | buf[1] = param; | 2824 | buf[1] = param; |
2821 | return dsi_vc_dcs_write(channel, buf, 2); | 2825 | return dsi_vc_dcs_write(dssdev, channel, buf, 2); |
2822 | } | 2826 | } |
2823 | EXPORT_SYMBOL(dsi_vc_dcs_write_1); | 2827 | EXPORT_SYMBOL(dsi_vc_dcs_write_1); |
2824 | 2828 | ||
2825 | int dsi_vc_dcs_read(int channel, u8 dcs_cmd, u8 *buf, int buflen) | 2829 | int dsi_vc_dcs_read(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd, |
2830 | u8 *buf, int buflen) | ||
2826 | { | 2831 | { |
2827 | u32 val; | 2832 | u32 val; |
2828 | u8 dt; | 2833 | u8 dt; |
@@ -2835,7 +2840,7 @@ int dsi_vc_dcs_read(int channel, u8 dcs_cmd, u8 *buf, int buflen) | |||
2835 | if (r) | 2840 | if (r) |
2836 | goto err; | 2841 | goto err; |
2837 | 2842 | ||
2838 | r = dsi_vc_send_bta_sync(channel); | 2843 | r = dsi_vc_send_bta_sync(dssdev, channel); |
2839 | if (r) | 2844 | if (r) |
2840 | goto err; | 2845 | goto err; |
2841 | 2846 | ||
@@ -2929,11 +2934,12 @@ err: | |||
2929 | } | 2934 | } |
2930 | EXPORT_SYMBOL(dsi_vc_dcs_read); | 2935 | EXPORT_SYMBOL(dsi_vc_dcs_read); |
2931 | 2936 | ||
2932 | int dsi_vc_dcs_read_1(int channel, u8 dcs_cmd, u8 *data) | 2937 | int dsi_vc_dcs_read_1(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd, |
2938 | u8 *data) | ||
2933 | { | 2939 | { |
2934 | int r; | 2940 | int r; |
2935 | 2941 | ||
2936 | r = dsi_vc_dcs_read(channel, dcs_cmd, data, 1); | 2942 | r = dsi_vc_dcs_read(dssdev, channel, dcs_cmd, data, 1); |
2937 | 2943 | ||
2938 | if (r < 0) | 2944 | if (r < 0) |
2939 | return r; | 2945 | return r; |
@@ -2945,12 +2951,13 @@ int dsi_vc_dcs_read_1(int channel, u8 dcs_cmd, u8 *data) | |||
2945 | } | 2951 | } |
2946 | EXPORT_SYMBOL(dsi_vc_dcs_read_1); | 2952 | EXPORT_SYMBOL(dsi_vc_dcs_read_1); |
2947 | 2953 | ||
2948 | int dsi_vc_dcs_read_2(int channel, u8 dcs_cmd, u8 *data1, u8 *data2) | 2954 | int dsi_vc_dcs_read_2(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd, |
2955 | u8 *data1, u8 *data2) | ||
2949 | { | 2956 | { |
2950 | u8 buf[2]; | 2957 | u8 buf[2]; |
2951 | int r; | 2958 | int r; |
2952 | 2959 | ||
2953 | r = dsi_vc_dcs_read(channel, dcs_cmd, buf, 2); | 2960 | r = dsi_vc_dcs_read(dssdev, channel, dcs_cmd, buf, 2); |
2954 | 2961 | ||
2955 | if (r < 0) | 2962 | if (r < 0) |
2956 | return r; | 2963 | return r; |
@@ -2965,7 +2972,8 @@ int dsi_vc_dcs_read_2(int channel, u8 dcs_cmd, u8 *data1, u8 *data2) | |||
2965 | } | 2972 | } |
2966 | EXPORT_SYMBOL(dsi_vc_dcs_read_2); | 2973 | EXPORT_SYMBOL(dsi_vc_dcs_read_2); |
2967 | 2974 | ||
2968 | int dsi_vc_set_max_rx_packet_size(int channel, u16 len) | 2975 | int dsi_vc_set_max_rx_packet_size(struct omap_dss_device *dssdev, int channel, |
2976 | u16 len) | ||
2969 | { | 2977 | { |
2970 | return dsi_vc_send_short(channel, DSI_DT_SET_MAX_RET_PKG_SIZE, | 2978 | return dsi_vc_send_short(channel, DSI_DT_SET_MAX_RET_PKG_SIZE, |
2971 | len, 0); | 2979 | len, 0); |
diff --git a/include/video/omapdss.h b/include/video/omapdss.h index ab7d6564e29b..e8e27caac190 100644 --- a/include/video/omapdss.h +++ b/include/video/omapdss.h | |||
@@ -214,18 +214,26 @@ int omap_rfbi_setup_te(enum omap_rfbi_te_mode mode, | |||
214 | int hs_pol_inv, int vs_pol_inv, int extif_div); | 214 | int hs_pol_inv, int vs_pol_inv, int extif_div); |
215 | 215 | ||
216 | /* DSI */ | 216 | /* DSI */ |
217 | void dsi_bus_lock(void); | 217 | void dsi_bus_lock(struct omap_dss_device *dssdev); |
218 | void dsi_bus_unlock(void); | 218 | void dsi_bus_unlock(struct omap_dss_device *dssdev); |
219 | int dsi_vc_dcs_write(int channel, u8 *data, int len); | 219 | int dsi_vc_dcs_write(struct omap_dss_device *dssdev, int channel, u8 *data, |
220 | int dsi_vc_dcs_write_0(int channel, u8 dcs_cmd); | 220 | int len); |
221 | int dsi_vc_dcs_write_1(int channel, u8 dcs_cmd, u8 param); | 221 | int dsi_vc_dcs_write_0(struct omap_dss_device *dssdev, int channel, |
222 | int dsi_vc_dcs_write_nosync(int channel, u8 *data, int len); | 222 | u8 dcs_cmd); |
223 | int dsi_vc_dcs_read(int channel, u8 dcs_cmd, u8 *buf, int buflen); | 223 | int dsi_vc_dcs_write_1(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd, |
224 | int dsi_vc_dcs_read_1(int channel, u8 dcs_cmd, u8 *data); | 224 | u8 param); |
225 | int dsi_vc_dcs_read_2(int channel, u8 dcs_cmd, u8 *data1, u8 *data2); | 225 | int dsi_vc_dcs_write_nosync(struct omap_dss_device *dssdev, int channel, |
226 | int dsi_vc_set_max_rx_packet_size(int channel, u16 len); | 226 | u8 *data, int len); |
227 | int dsi_vc_send_null(int channel); | 227 | int dsi_vc_dcs_read(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd, |
228 | int dsi_vc_send_bta_sync(int channel); | 228 | u8 *buf, int buflen); |
229 | int dsi_vc_dcs_read_1(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd, | ||
230 | u8 *data); | ||
231 | int dsi_vc_dcs_read_2(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd, | ||
232 | u8 *data1, u8 *data2); | ||
233 | int dsi_vc_set_max_rx_packet_size(struct omap_dss_device *dssdev, int channel, | ||
234 | u16 len); | ||
235 | int dsi_vc_send_null(struct omap_dss_device *dssdev, int channel); | ||
236 | int dsi_vc_send_bta_sync(struct omap_dss_device *dssdev, int channel); | ||
229 | 237 | ||
230 | /* Board specific data */ | 238 | /* Board specific data */ |
231 | struct omap_dss_board_info { | 239 | struct omap_dss_board_info { |
@@ -575,7 +583,8 @@ int omap_dispc_wait_for_irq_interruptible_timeout(u32 irqmask, | |||
575 | #define to_dss_driver(x) container_of((x), struct omap_dss_driver, driver) | 583 | #define to_dss_driver(x) container_of((x), struct omap_dss_driver, driver) |
576 | #define to_dss_device(x) container_of((x), struct omap_dss_device, dev) | 584 | #define to_dss_device(x) container_of((x), struct omap_dss_device, dev) |
577 | 585 | ||
578 | void omapdss_dsi_vc_enable_hs(int channel, bool enable); | 586 | void omapdss_dsi_vc_enable_hs(struct omap_dss_device *dssdev, int channel, |
587 | bool enable); | ||
579 | int omapdss_dsi_enable_te(struct omap_dss_device *dssdev, bool enable); | 588 | int omapdss_dsi_enable_te(struct omap_dss_device *dssdev, bool enable); |
580 | 589 | ||
581 | int omap_dsi_prepare_update(struct omap_dss_device *dssdev, | 590 | int omap_dsi_prepare_update(struct omap_dss_device *dssdev, |