char *buf)                           \
 {                                                              \
        struct hdac_device *codec = dev_to_hdac_dev(dev);       \
-       return sprintf(buf, "0x%x\n", codec->type);             \
+       return sysfs_emit(buf, "0x%x\n", codec->type);          \
 } \
 static DEVICE_ATTR_RO(type)
 
                                        char *buf)              \
 {                                                              \
        struct hdac_device *codec = dev_to_hdac_dev(dev);       \
-       return sprintf(buf, "%s\n",                             \
-                      codec->type ? codec->type : "");         \
+       return sysfs_emit(buf, "%s\n",                          \
+                         codec->type ? codec->type : "");      \
 } \
 static DEVICE_ATTR_RO(type)
 
 static ssize_t caps_show(struct hdac_device *codec, hda_nid_t nid,
                        struct widget_attribute *attr, char *buf)
 {
-       return sprintf(buf, "0x%08x\n", get_wcaps(codec, nid));
+       return sysfs_emit(buf, "0x%08x\n", get_wcaps(codec, nid));
 }
 
 static ssize_t pin_caps_show(struct hdac_device *codec, hda_nid_t nid,
 {
        if (get_wcaps_type(get_wcaps(codec, nid)) != AC_WID_PIN)
                return 0;
-       return sprintf(buf, "0x%08x\n",
-                      snd_hdac_read_parm(codec, nid, AC_PAR_PIN_CAP));
+       return sysfs_emit(buf, "0x%08x\n",
+                         snd_hdac_read_parm(codec, nid, AC_PAR_PIN_CAP));
 }
 
 static ssize_t pin_cfg_show(struct hdac_device *codec, hda_nid_t nid,
                return 0;
        if (snd_hdac_read(codec, nid, AC_VERB_GET_CONFIG_DEFAULT, 0, &val))
                return 0;
-       return sprintf(buf, "0x%08x\n", val);
+       return sysfs_emit(buf, "0x%08x\n", val);
 }
 
 static bool has_pcm_cap(struct hdac_device *codec, hda_nid_t nid)
 {
        if (!has_pcm_cap(codec, nid))
                return 0;
-       return sprintf(buf, "0x%08x\n",
-                      snd_hdac_read_parm(codec, nid, AC_PAR_PCM));
+       return sysfs_emit(buf, "0x%08x\n",
+                         snd_hdac_read_parm(codec, nid, AC_PAR_PCM));
 }
 
 static ssize_t pcm_formats_show(struct hdac_device *codec, hda_nid_t nid,
 {
        if (!has_pcm_cap(codec, nid))
                return 0;
-       return sprintf(buf, "0x%08x\n",
-                      snd_hdac_read_parm(codec, nid, AC_PAR_STREAM));
+       return sysfs_emit(buf, "0x%08x\n",
+                         snd_hdac_read_parm(codec, nid, AC_PAR_STREAM));
 }
 
 static ssize_t amp_in_caps_show(struct hdac_device *codec, hda_nid_t nid,
 {
        if (nid != codec->afg && !(get_wcaps(codec, nid) & AC_WCAP_IN_AMP))
                return 0;
-       return sprintf(buf, "0x%08x\n",
-                      snd_hdac_read_parm(codec, nid, AC_PAR_AMP_IN_CAP));
+       return sysfs_emit(buf, "0x%08x\n",
+                         snd_hdac_read_parm(codec, nid, AC_PAR_AMP_IN_CAP));
 }
 
 static ssize_t amp_out_caps_show(struct hdac_device *codec, hda_nid_t nid,
 {
        if (nid != codec->afg && !(get_wcaps(codec, nid) & AC_WCAP_OUT_AMP))
                return 0;
-       return sprintf(buf, "0x%08x\n",
-                      snd_hdac_read_parm(codec, nid, AC_PAR_AMP_OUT_CAP));
+       return sysfs_emit(buf, "0x%08x\n",
+                         snd_hdac_read_parm(codec, nid, AC_PAR_AMP_OUT_CAP));
 }
 
 static ssize_t power_caps_show(struct hdac_device *codec, hda_nid_t nid,
 {
        if (nid != codec->afg && !(get_wcaps(codec, nid) & AC_WCAP_POWER))
                return 0;
-       return sprintf(buf, "0x%08x\n",
-                      snd_hdac_read_parm(codec, nid, AC_PAR_POWER_STATE));
+       return sysfs_emit(buf, "0x%08x\n",
+                         snd_hdac_read_parm(codec, nid, AC_PAR_POWER_STATE));
 }
 
 static ssize_t gpio_caps_show(struct hdac_device *codec, hda_nid_t nid,
                              struct widget_attribute *attr, char *buf)
 {
-       return sprintf(buf, "0x%08x\n",
-                      snd_hdac_read_parm(codec, nid, AC_PAR_GPIO_CAP));
+       return sysfs_emit(buf, "0x%08x\n",
+                         snd_hdac_read_parm(codec, nid, AC_PAR_GPIO_CAP));
 }
 
 static ssize_t connections_show(struct hdac_device *codec, hda_nid_t nid,
        if (nconns <= 0)
                return nconns;
        for (i = 0; i < nconns; i++)
-               ret += sprintf(buf + ret, "%s0x%02x", i ? " " : "", list[i]);
-       ret += sprintf(buf + ret, "\n");
+               ret += sysfs_emit_at(buf,  ret, "%s0x%02x", i ? " " : "", list[i]);
+       ret += sysfs_emit_at(buf, ret, "\n");
        return ret;
 }
 
 
 {
        struct hda_codec *codec = dev_get_drvdata(dev);
        snd_hda_update_power_acct(codec);
-       return sprintf(buf, "%u\n", jiffies_to_msecs(codec->power_on_acct));
+       return sysfs_emit(buf, "%u\n", jiffies_to_msecs(codec->power_on_acct));
 }
 
 static ssize_t power_off_acct_show(struct device *dev,
 {
        struct hda_codec *codec = dev_get_drvdata(dev);
        snd_hda_update_power_acct(codec);
-       return sprintf(buf, "%u\n", jiffies_to_msecs(codec->power_off_acct));
+       return sysfs_emit(buf, "%u\n", jiffies_to_msecs(codec->power_off_acct));
 }
 
 static DEVICE_ATTR_RO(power_on_acct);
                           char *buf)                           \
 {                                                              \
        struct hda_codec *codec = dev_get_drvdata(dev);         \
-       return sprintf(buf, "0x%x\n", codec->field);            \
+       return sysfs_emit(buf, "0x%x\n", codec->field);         \
 }
 
 #define CODEC_INFO_STR_SHOW(type, field)                       \
                                        char *buf)              \
 {                                                              \
        struct hda_codec *codec = dev_get_drvdata(dev);         \
-       return sprintf(buf, "%s\n",                             \
-                      codec->field ? codec->field : "");       \
+       return sysfs_emit(buf, "%s\n",                          \
+                         codec->field ? codec->field : "");    \
 }
 
 CODEC_INFO_SHOW(vendor_id, core.vendor_id);
        int i, len = 0;
        mutex_lock(&codec->user_mutex);
        snd_array_for_each(list, i, pin) {
-               len += sprintf(buf + len, "0x%02x 0x%08x\n",
-                              pin->nid, pin->cfg);
+               len += sysfs_emit_at(buf, len, "0x%02x 0x%08x\n",
+                                    pin->nid, pin->cfg);
        }
        mutex_unlock(&codec->user_mutex);
        return len;
        int i, len = 0;
        mutex_lock(&codec->user_mutex);
        snd_array_for_each(&codec->init_verbs, i, v) {
-               len += scnprintf(buf + len, PAGE_SIZE - len,
-                               "0x%02x 0x%03x 0x%04x\n",
-                               v->nid, v->verb, v->param);
+               len += sysfs_emit_at(buf, len, "0x%02x 0x%03x 0x%04x\n",
+                                    v->nid, v->verb, v->param);
        }
        mutex_unlock(&codec->user_mutex);
        return len;
        int i, len = 0;
        mutex_lock(&codec->user_mutex);
        snd_array_for_each(&codec->hints, i, hint) {
-               len += scnprintf(buf + len, PAGE_SIZE - len,
-                               "%s = %s\n", hint->key, hint->val);
+               len += sysfs_emit_at(buf, len, "%s = %s\n",
+                                    hint->key, hint->val);
        }
        mutex_unlock(&codec->user_mutex);
        return len;