1. 程式人生 > >IMX6 Android PWM背光碟機動修改

IMX6 Android PWM背光碟機動修改

硬體平臺:IMX6Q
軟體作業系統:android 4.3

修改pwm通道,通道0改成通道1

修改bootable/bootloader/uboot-imx/board/freescale/mx6q_sabresd/mx6q_sabresd.c

diff -Npur a/bootable/bootloader/uboot-imx/board/freescale/mx6q_sabresd/mx6q_sabresd.c b/bootable/bootloader/uboot-imx/board/freescale/mx6q_sabresd/mx6q_sabresd.c
--- a/bootable/bootloader/uboot-imx/board/freescale/mx6q_sabresd/mx6q_sabresd.c 2014
-06-26 11:50:49.000000000 +0800 +++ b/bootable/bootloader/uboot-imx/board/freescale/mx6q_sabresd/mx6q_sabresd.c 2015-06-19 15:44:22.000000000 +0800 @@ -118,6 +118,11 @@ static struct pwm_device pwm0 = .pwmo_invert = 0, }; +struct pwm_device pwm1 = { + .pwm_id = 1, + .pwmo_invert = 1, +}; + static int di = 1; extern int ipuv3_fb_init(struct
fb_videomode *mode, int di, @@ -1488,12 +1493,14 @@ void lcd_enable(void) */ g_ipu_hw_rev = IPUV3_HW_REV_IPUV3H; - imx_pwm_config(pwm0, 25000, 50000); - imx_pwm_enable(pwm0); + //imx_pwm_config(pwm0, 25000, 50000); + //imx_pwm_enable(pwm0); + imx_pwm_config(pwm1, 25000, 50000); + imx_pwm_enable(pwm1); #if
defined CONFIG_MX6Q
/* PWM backlight */ - mxc_iomux_v3_setup_pad(MX6Q_PAD_SD1_DAT3__PWM1_PWMO); + mxc_iomux_v3_setup_pad(MX6Q_PAD_SD1_DAT2__PWM2_PWMO); /* LVDS panel CABC_EN0 */ mxc_iomux_v3_setup_pad(MX6Q_PAD_NANDF_CS2__GPIO_6_15); /* LVDS panel CABC_EN1 */

修改kernel_imx/arch/arm/mach-mx6/board-mx6q_sabresd.c

diff -Npur a/kernel_imx/arch/arm/mach-mx6/board-mx6q_sabresd.c b/kernel_imx/arch/arm/mach-mx6/board-mx6q_sabresd.c
--- a/kernel_imx/arch/arm/mach-mx6/board-mx6q_sabresd.c 2015-01-06 12:05:09.000000000 +0800
+++ b/kernel_imx/arch/arm/mach-mx6/board-mx6q_sabresd.c 2015-06-19 15:45:53.000000000 +0800

@@ -1073,7 +1089,8 @@ static void __init imx6q_add_device_butt

 static struct platform_pwm_backlight_data mx6_sabresd_pwm_backlight_data =
 {
-   .pwm_id = 0,
+   //.pwm_id = 0,
+   .pwm_id = 1,
    .max_brightness = 248,
    .dft_brightness = 128,
    .pwm_period_ns = 50000,
@@ -1342,7 +1359,8 @@ static void __init mx6_sabresd_board_ini
    imx6q_add_mxc_pwm(1);
    imx6q_add_mxc_pwm(2);
    imx6q_add_mxc_pwm(3);
-   imx6q_add_mxc_pwm_backlight(0, &mx6_sabresd_pwm_backlight_data);
+   //imx6q_add_mxc_pwm_backlight(0, &mx6_sabresd_pwm_backlight_data);
+   imx6q_add_mxc_pwm_backlight(1, &mx6_sabresd_pwm_backlight_data);

    imx6q_add_otp();
    imx6q_add_viim();

修改hardware/imx/lights/fsl_lights.c

diff -Npur a/hardware/imx/lights/fsl_lights.c b/hardware/imx/lights/fsl_lights.c
--- a/hardware/imx/lights/fsl_lights.c  2014-06-17 11:27:07.000000000 +0800
+++ b/hardware/imx/lights/fsl_lights.c  2015-06-23 11:15:29.000000000 +0800
@@ -26,7 +26,8 @@
 #include <cutils/properties.h>

 #define MAX_BRIGHTNESS 255
-#define DEF_BACKLIGHT_DEV "pwm-backlight"
+//#define DEF_BACKLIGHT_DEV "pwm-backlight"
+#define DEF_BACKLIGHT_DEV "pwm-backlight.1"
 #define DEF_BACKLIGHT_PATH "/sys/class/backlight/"

 /*****************************************************************************/

修改device/fsl/sabresd_6dq/init.rc

--- a/device/fsl/sabresd_6dq/init.rc    2014-10-17 15:58:44.000000000 +0800
+++ b/device/fsl/sabresd_6dq/init.rc    2016-08-16 13:49:57.218080331 +0800
@@ -118,10 +118,10 @@ on boot
     setprop ro.ril.wake_lock_timeout 300

     # Default backlight device
-    setprop hw.backlight.dev "pwm-backlight.0"
+    setprop hw.backlight.dev "pwm-backlight.1"
     # Chmod/chown FSL specific sys entry
-    chown system system /sys/class/backlight/pwm-backlight.0/brightness
-    chmod 0660 /sys/class/backlight/pwm-backlight.0/brightness
+    chown system system /sys/class/backlight/pwm-backlight.1/brightness
+    chmod 0660 /sys/class/backlight/pwm-backlight.1/brightness

     # Set light sensor sysfs path and light sensor threshold lux value
     setprop ro.hardware.lightsensor "/sys/class/i2c-dev/i2c-2/device/2-0044/"

打完收工!