| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * s3c24xx/s3c64xx SoC series Camera Interface (CAMIF) driver |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright (C) 2012 Sylwester Nawrocki <sylvester.nawrocki@gmail.com> |
|---|
| 5 | 6 | * Copyright (C) 2012 Tomasz Figa <tomasz.figa@gmail.com> |
|---|
| 6 | | - * |
|---|
| 7 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 8 | | - * it under the terms of the GNU General Public License as published |
|---|
| 9 | | - * by the Free Software Foundation, either version 2 of the License, |
|---|
| 10 | | - * or (at your option) any later version. |
|---|
| 11 | 7 | */ |
|---|
| 12 | 8 | #define pr_fmt(fmt) "%s:%d " fmt, __func__, __LINE__ |
|---|
| 13 | 9 | |
|---|
| .. | .. |
|---|
| 46 | 42 | |
|---|
| 47 | 43 | static const struct camif_fmt camif_formats[] = { |
|---|
| 48 | 44 | { |
|---|
| 49 | | - .name = "YUV 4:2:2 planar, Y/Cb/Cr", |
|---|
| 50 | 45 | .fourcc = V4L2_PIX_FMT_YUV422P, |
|---|
| 51 | 46 | .depth = 16, |
|---|
| 52 | 47 | .ybpp = 1, |
|---|
| .. | .. |
|---|
| 55 | 50 | .flags = FMT_FL_S3C24XX_CODEC | |
|---|
| 56 | 51 | FMT_FL_S3C64XX, |
|---|
| 57 | 52 | }, { |
|---|
| 58 | | - .name = "YUV 4:2:0 planar, Y/Cb/Cr", |
|---|
| 59 | 53 | .fourcc = V4L2_PIX_FMT_YUV420, |
|---|
| 60 | 54 | .depth = 12, |
|---|
| 61 | 55 | .ybpp = 1, |
|---|
| .. | .. |
|---|
| 64 | 58 | .flags = FMT_FL_S3C24XX_CODEC | |
|---|
| 65 | 59 | FMT_FL_S3C64XX, |
|---|
| 66 | 60 | }, { |
|---|
| 67 | | - .name = "YVU 4:2:0 planar, Y/Cr/Cb", |
|---|
| 68 | 61 | .fourcc = V4L2_PIX_FMT_YVU420, |
|---|
| 69 | 62 | .depth = 12, |
|---|
| 70 | 63 | .ybpp = 1, |
|---|
| .. | .. |
|---|
| 73 | 66 | .flags = FMT_FL_S3C24XX_CODEC | |
|---|
| 74 | 67 | FMT_FL_S3C64XX, |
|---|
| 75 | 68 | }, { |
|---|
| 76 | | - .name = "RGB565, 16 bpp", |
|---|
| 77 | 69 | .fourcc = V4L2_PIX_FMT_RGB565X, |
|---|
| 78 | 70 | .depth = 16, |
|---|
| 79 | 71 | .ybpp = 2, |
|---|
| .. | .. |
|---|
| 82 | 74 | .flags = FMT_FL_S3C24XX_PREVIEW | |
|---|
| 83 | 75 | FMT_FL_S3C64XX, |
|---|
| 84 | 76 | }, { |
|---|
| 85 | | - .name = "XRGB8888, 32 bpp", |
|---|
| 86 | 77 | .fourcc = V4L2_PIX_FMT_RGB32, |
|---|
| 87 | 78 | .depth = 32, |
|---|
| 88 | 79 | .ybpp = 4, |
|---|
| .. | .. |
|---|
| 91 | 82 | .flags = FMT_FL_S3C24XX_PREVIEW | |
|---|
| 92 | 83 | FMT_FL_S3C64XX, |
|---|
| 93 | 84 | }, { |
|---|
| 94 | | - .name = "BGR666", |
|---|
| 95 | 85 | .fourcc = V4L2_PIX_FMT_BGR666, |
|---|
| 96 | 86 | .depth = 32, |
|---|
| 97 | 87 | .ybpp = 4, |
|---|
| .. | .. |
|---|
| 314 | 304 | int ret; |
|---|
| 315 | 305 | |
|---|
| 316 | 306 | memset(md, 0, sizeof(*md)); |
|---|
| 317 | | - snprintf(md->model, sizeof(md->model), "SAMSUNG S3C%s CAMIF", |
|---|
| 307 | + snprintf(md->model, sizeof(md->model), "Samsung S3C%s CAMIF", |
|---|
| 318 | 308 | ip_rev == S3C6410_CAMIF_IP_REV ? "6410" : "244X"); |
|---|
| 319 | | - strlcpy(md->bus_info, "platform", sizeof(md->bus_info)); |
|---|
| 309 | + strscpy(md->bus_info, "platform", sizeof(md->bus_info)); |
|---|
| 320 | 310 | md->hw_revision = ip_rev; |
|---|
| 321 | 311 | |
|---|
| 322 | 312 | md->dev = camif->dev; |
|---|
| 323 | 313 | |
|---|
| 324 | | - strlcpy(v4l2_dev->name, "s3c-camif", sizeof(v4l2_dev->name)); |
|---|
| 314 | + strscpy(v4l2_dev->name, "s3c-camif", sizeof(v4l2_dev->name)); |
|---|
| 325 | 315 | v4l2_dev->mdev = md; |
|---|
| 326 | 316 | |
|---|
| 327 | 317 | media_device_init(md); |
|---|
| .. | .. |
|---|
| 390 | 380 | init_waitqueue_head(&vp->irq_queue); |
|---|
| 391 | 381 | |
|---|
| 392 | 382 | irq = platform_get_irq(pdev, i); |
|---|
| 393 | | - if (irq <= 0) { |
|---|
| 394 | | - dev_err(&pdev->dev, "failed to get IRQ %d\n", i); |
|---|
| 383 | + if (irq <= 0) |
|---|
| 395 | 384 | return -ENXIO; |
|---|
| 396 | | - } |
|---|
| 397 | 385 | |
|---|
| 398 | 386 | ret = devm_request_irq(&pdev->dev, irq, s3c_camif_irq_handler, |
|---|
| 399 | 387 | 0, dev_name(&pdev->dev), vp); |
|---|